@next-bricks/nav 1.17.1 → 1.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/dist/bricks.json +23 -23
  2. package/dist/chunks/1477.eacfe479.js +2 -0
  3. package/dist/chunks/1477.eacfe479.js.map +1 -0
  4. package/dist/chunks/9149.f26f74bb.js +2 -0
  5. package/dist/chunks/9149.f26f74bb.js.map +1 -0
  6. package/dist/chunks/{9515.df23b98d.js → 9515.9c362d1f.js} +2 -2
  7. package/dist/chunks/{9515.df23b98d.js.map → 9515.9c362d1f.js.map} +1 -1
  8. package/dist/chunks/eo-launchpad-quick-access.d53425f7.js +3 -0
  9. package/dist/chunks/eo-launchpad-quick-access.d53425f7.js.map +1 -0
  10. package/dist/chunks/eo-search-launchpad.1f32d980.js +2 -0
  11. package/dist/chunks/eo-search-launchpad.1f32d980.js.map +1 -0
  12. package/dist/chunks/{main.44f3e869.js → main.432590a6.js} +2 -2
  13. package/dist/chunks/{main.44f3e869.js.map → main.432590a6.js.map} +1 -1
  14. package/dist/examples.json +3 -3
  15. package/dist/{index.7404ba67.js → index.a809483d.js} +2 -2
  16. package/dist/{index.7404ba67.js.map → index.a809483d.js.map} +1 -1
  17. package/dist/manifest.json +39 -40
  18. package/dist/types.json +39 -39
  19. package/package.json +2 -2
  20. package/dist/chunks/1477.2ae768b8.js +0 -2
  21. package/dist/chunks/1477.2ae768b8.js.map +0 -1
  22. package/dist/chunks/9149.f74e24da.js +0 -2
  23. package/dist/chunks/9149.f74e24da.js.map +0 -1
  24. package/dist/chunks/eo-launchpad-quick-access.a82ceb9b.js +0 -3
  25. package/dist/chunks/eo-launchpad-quick-access.a82ceb9b.js.map +0 -1
  26. package/dist/chunks/eo-search-launchpad.b4f1e002.js +0 -2
  27. package/dist/chunks/eo-search-launchpad.b4f1e002.js.map +0 -1
  28. /package/dist/chunks/{eo-launchpad-quick-access.a82ceb9b.js.LICENSE.txt → eo-launchpad-quick-access.d53425f7.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/1477.eacfe479.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/poll-announce/i18n.ts","webpack:///./src/poll-announce/notification.module.css?4226","webpack:///./src/poll-announce/index.tsx","webpack:///../../src/smartDisplayForEvaluableString.ts","webpack:///./src/data-providers/get-menu-config-tree.ts","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/poll-announce/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:///./src/poll-announce/notification.module.css"],"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 onBeforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n mainMenuTitleStyle: CSSProperties | undefined;\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 mainMenuTitleStyle?: CSSProperties;\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%\" }, props.mainMenuTitleStyle)}\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 mainMenuTitleStyle,\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 22\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData, { ...mainMenuTitleStyle })}\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 mainMenuTitleStyle,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n mainMenuTitleStyle?: CSSProperties;\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 onBeforeVisibleChange={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, false, mainMenuTitleStyle)}\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 mainMenuTitleStyle,\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 mainMenuTitleStyle?: CSSProperties;\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 onBeforeVisibleChange={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, false, mainMenuTitleStyle)}\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 @property({\n attribute: false,\n })\n accessor mainMenuTitleStyle: CSSProperties | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return (\n <NavMenuComponent\n menu={this.menu}\n showTooltip={this.showTooltip}\n mainMenuTitleStyle={this.mainMenuTitleStyle}\n />\n );\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 menuItems = useMemo(() => {\n return (menu?.menuItems ?? []).filter(\n (item) =>\n // 默认\n item.type === \"default\" ||\n // 没有类型\n !item.type ||\n // 分组类型并且没有子项,过滤\n ([\"group\", \"subMenu\"].includes(item.type) &&\n (item as SidebarMenuGroup).items?.length)\n );\n }, [menu?.menuItems]);\n\n const selectedKey = useMemo(() => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n return selectedKeys;\n }, [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: menuItems.slice(\n overflowIndex,\n menuItems.length\n ) as SidebarMenuItem[],\n }),\n [menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {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 mainMenuTitleStyle={props.mainMenuTitleStyle}\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 mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > menuItems.length}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\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 launchpadStyleText from \"./Launchpad.shadow.css\";\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, launchpadStyleText],\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 { get, 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 variant?: \"launchpad-config\" | \"menu-config\";\n urlTemplate?: string;\n customUrlTemplate?: string;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuGroup({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onActionClick,\n}: 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 {variant !== \"menu-config\" && (\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 )}\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 variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onActionClick={onActionClick}\n />\n ) : (\n <MenuItem\n key={`${item.type}-${item.id}`}\n data={item}\n actions={actions}\n variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onActionClick={onActionClick}\n />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n data: ConfigMenuItemNormal;\n actions?: MenuAction[];\n variant?: \"launchpad-config\" | \"menu-config\";\n urlTemplate?: string;\n customUrlTemplate?: string;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuItem({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onActionClick,\n}: 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 let disabled = false;\n let linkUrl = \"\";\n\n if (variant === \"menu-config\") {\n if (data.type === \"app\") {\n linkUrl = parseUrlTemplate(urlTemplate, data, \"\")!;\n } else {\n // 禁用外链菜单项\n const urlObject = new URL(data.url, location.origin);\n disabled = urlObject.origin !== location.origin;\n linkUrl = disabled\n ? \"\"\n : parseUrlTemplate(\n customUrlTemplate,\n {\n ...data,\n __pathname: urlObject.pathname,\n },\n \"\"\n )!;\n }\n }\n\n return (\n <li className={classNames(\"menu-item\", { disabled })}>\n <WrappedLink\n tooltip={disabled ? \"该菜单项为外链,不支持配置\" : \"\"}\n url={linkUrl}\n >\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 {variant !== \"menu-config\" && (\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 )}\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n data: ConfigMenuItemDir;\n actions?: MenuAction[];\n variant?: \"launchpad-config\" | \"menu-config\";\n urlTemplate?: string;\n customUrlTemplate?: string;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nfunction MenuItemFolder({\n data,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\n onActionClick,\n}: 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 {variant !== \"menu-config\" && (\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 )}\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 variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n </li>\n );\n}\n\nfunction parseUrlTemplate(\n urlTemplate: string | undefined,\n data: unknown,\n fallback?: string\n) {\n return (\n urlTemplate?.replace(/{{(.*?)}}/g, (_match, key) =>\n encodeURIComponent(String(get(data, key.trim())))\n ) ?? fallback\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 * 进行 Launchpad 配置。\n *\n * 也可用于菜单自定义显示产品功能清单。\n *\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 /**\n * @default \"launchpad-config\"\n */\n @property()\n accessor variant: \"launchpad-config\" | \"menu-config\" | undefined;\n\n /**\n * 菜单项 APP 类型的链接模板,例如可配置为 `/app/{{ id }}`。\n *\n * 注:仅用于 variant: \"menu-config\"。\n */\n @property()\n accessor urlTemplate: string | undefined;\n\n /**\n * 菜单项自定义类型的链接模板,例如可配置为 `/custom?url={{ __pathname }}`。\n *\n * 注:仅用于 variant: \"menu-config\"。\n * 外链菜单链接会设置为禁用。\n * `__pathname` 是运行时变量,表示 url 解析后的 pathname。\n */\n @property()\n accessor customUrlTemplate: string | 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 variant={this.variant}\n urlTemplate={this.urlTemplate}\n customUrlTemplate={this.customUrlTemplate}\n onActionClick={this.#onActionClick}\n />\n );\n }\n}\n\nexport interface LaunchpadConfigProps {\n menuGroups?: ConfigMenuGroup[];\n actions?: MenuAction[];\n variant?: \"launchpad-config\" | \"menu-config\";\n urlTemplate?: string;\n customUrlTemplate?: string;\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function LaunchpadConfigComponent({\n menuGroups,\n actions,\n variant,\n urlTemplate,\n customUrlTemplate,\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 variant={variant}\n urlTemplate={urlTemplate}\n customUrlTemplate={customUrlTemplate}\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\";\nimport { Target } from \"@next-bricks/basic/link\";\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 @property()\n accessor target: Target | undefined;\n\n render() {\n return (\n <EoLaunchpadQuickAccessComponent\n readonly={this.readonly}\n target={this.target}\n />\n );\n }\n}\n\ninterface EoLaunchpadQuickAccessComponentProps {\n readonly?: boolean;\n target?: Target;\n}\n\nexport function EoLaunchpadQuickAccessComponent({\n readonly,\n target,\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\n key={index}\n target={target}\n item={item as SidebarMenuItemData}\n />\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;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { 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, Target } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 最近访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-recent-visits\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadRecentVisits extends ReactNextElement {\n @property({\n attribute: false,\n })\n accessor target: Target | undefined;\n\n render() {\n return <EoLaunchpadRecentVisitsComponent target={this.target} />;\n }\n}\n\ninterface EoLaunchpadRecentVisitsComponentProps {\n target?: Target;\n}\nexport function EoLaunchpadRecentVisitsComponent({\n target,\n}: EoLaunchpadRecentVisitsComponentProps) {\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 target,\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 { useCurrentApp, useNavConfig } 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 = useNavConfig();\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 * 是否隐藏右边线\n */\n @property({ type: Boolean })\n accessor hideRightBorder: boolean = false;\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 hideRightBorder={this.hideRightBorder}\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 hideRightBorder?: boolean;\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 hideRightBorder,\n menuItemClick,\n suffixIconClick,\n defaultSelectedKeys,\n suffixBrick,\n } = props;\n\n return (\n <div\n className={classNames(\"directory-container\", {\n \"directory-container-not-border\": hideRightBorder,\n })}\n >\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 React from \"react\";\nimport type { NodeData, SuffixBrickConf } from \".\";\n\nexport interface ContextOfDirectoryTree {\n expandedKeysSet: Set<string>;\n selectedKeysSet: Set<string>;\n internalNodeSelectable?: boolean;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n suffixBrick?: SuffixBrickConf;\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 classNames from \"classnames\";\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 icon={data.icon}\n faded={data.faded}\n onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n className={classNames({\n \"show-suffix-when-hover\": suffixBrick?.when === \"hover\",\n })}\n >\n <span title={data.title}>{data.title}</span>\n {suffixBrick?.useBrick && (\n <div className=\"suffix\" 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 {\n expandedKeysSet,\n onExpand,\n selectedKeysSet,\n onSelect,\n internalNodeSelectable,\n suffixBrick,\n } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeInternalNode\n depth={depth}\n selectable={internalNodeSelectable}\n icon={data.icon}\n faded={data.faded}\n expanded={expandedKeysSet.has(data.key)}\n selected={selectedKeysSet.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 onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n className={classNames({\n \"show-suffix-when-hover\": suffixBrick?.when === \"hover\",\n })}\n >\n <span slot=\"label\" title={data.title}>\n {data.title}\n </span>\n {suffixBrick?.useBrick && (\n <div className=\"suffix\" 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\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\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 icon?: GeneralIconProps;\n faded?: boolean;\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 internalNodeSelectable?: boolean;\n searchable?: boolean;\n placeholder?: string;\n selectedKeys?: string[];\n expandedKeys?: string[];\n searchFields?: (string | string[])[];\n suffixBrick?: { useBrick: UseBrickConf };\n}\n\nexport interface SuffixBrickConf {\n /**\n * @default \"always\"\n */\n when?: \"always\" | \"hover\";\n 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({ type: Boolean })\n accessor internalNodeSelectable: boolean | 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: SuffixBrickConf | 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 internalNodeSelectable={this.internalNodeSelectable}\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 internalNodeSelectable,\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 internalNodeSelectable,\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, 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 { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedEoIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoDirectoryTreeLeafProps {\n depth: number;\n selected?: boolean;\n icon?: GeneralIconProps;\n faded?: 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 @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n @property({ type: Boolean, render: false })\n accessor faded: 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 icon={this.icon}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeLeafComponentProps\n extends EoDirectoryTreeLeafProps {\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeLeafComponent({\n depth,\n icon,\n onSelect,\n}: EoDirectoryTreeLeafComponentProps) {\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 {icon && <WrappedEoIcon {...icon} className=\"tree-item-icon\" />}\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, 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 Arrow from \"./arrow.svg\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedEoIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoDirectoryTreeInternalNodeProps {\n depth: number;\n expanded?: boolean;\n selectable?: boolean;\n selected?: boolean;\n icon?: GeneralIconProps;\n faded?: 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 @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n @property({ type: Boolean, render: false })\n accessor faded: 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 icon={this.icon}\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 depth,\n selectable,\n icon,\n onExpand,\n onSelect,\n}: EoDirectoryTreeInternalNodeComponentProps) {\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 {icon && <WrappedEoIcon {...icon} className=\"tree-item-icon\" />}\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","/* istanbul ignore file */\nexport enum K {\n VIEW_DETAILS = \"VIEW_DETAILS\",\n DISMISS = \"DISMISS\",\n}\n\nconst en: Locale = {\n VIEW_DETAILS: \"View details\",\n DISMISS: \"Dismiss\",\n};\n\nconst zh: Locale = {\n VIEW_DETAILS: \"查看详情\",\n DISMISS: \"忽略\",\n};\n\nexport const NS = \"bricks/nav/poll-announce\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\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[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./notification.module.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./notification.module.css\";\n export default content && content.locals ? content.locals : undefined;\n","/* istanbul ignore file */\nimport React, { useEffect } from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { httpErrorToString } from \"@next-core/runtime\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { i18n } from \"@next-core/i18n\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport {\n AnnounceApi_ignoreAnnounce,\n AnnounceApi_listEffectiveAnnounce,\n AnnounceApi_pollAnnounce,\n} from \"@next-api-sdk/sys-setting-sdk\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport styleText from \"./styles.shadow.css\";\nimport styles from \"./notification.module.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nconst ignoredInstanceIds = new Set<string>();\n\nexport interface PollAnnounceProps {\n pollEnabled?: boolean;\n realTimeMessage?: Message;\n}\n\nexport interface Message {\n title: string;\n data: string;\n instanceId: string;\n}\n\n/**\n * 轮询获取通知消息并展示。\n *\n * 从 v2 构件 `nav-legacy.poll-announce` 迁移而来\n */\nexport\n@defineElement(\"nav.poll-announce\", {\n styleTexts: [styleText],\n})\nclass PollAnnounce extends ReactNextElement implements PollAnnounceProps {\n /**\n * 是否启用轮询\n *\n * - 启用时,将会不断轮询通知列表接口\n * - 未启用时,通过 `realTimeMessage` 属性传入实时通知消息\n *\n * 注意:v2 构件 `nav-legacy.poll-announce` 该属性名称为 `pollDisabled`,但其实际意义却是 `pollEnabled`,因此在迁移时进行了重命名。\n */\n @property({ type: Boolean })\n accessor pollEnabled: boolean | undefined;\n\n /**\n * 实时通知消息(通常通过 WebSocket 消息得到)\n */\n @property({ attribute: false })\n accessor realTimeMessage: Message | undefined;\n\n /**\n * 通知框关闭后,调用忽略通知接口完成后触发\n */\n @event({ type: \"notification.close\" })\n accessor #closeEvent!: EventEmitter<void>;\n\n #handleClose = () => {\n this.#closeEvent.emit();\n };\n\n /**\n * 轮询得到新的通知时触发。\n */\n @event({ type: \"notification.open\" })\n accessor #openEvent!: EventEmitter<void>;\n\n #handleOpen = () => {\n this.#openEvent.emit();\n };\n\n render() {\n return (\n <PollAnnounceComponent\n pollEnabled={this.pollEnabled}\n realTimeMessage={this.realTimeMessage}\n onOpen={this.#handleOpen}\n onClose={this.#handleClose}\n />\n );\n }\n}\n\nexport interface PollAnnounceComponentProps extends PollAnnounceProps {\n onOpen: () => void;\n onClose: () => void;\n}\n\nasync function openNotification(\n { title, data, instanceId }: Message,\n onClose: () => void\n) {\n const _data = data\n .replace(/<[^>]+>|&nbsp;/gim, \"\\r\\n\")\n .replace(/&ldquo;/gim, \"“\")\n .replace(/&rdquo;/gim, \"”\");\n\n const htmlMessage = _data.length > 100 ? _data.slice(0, 100) : _data;\n\n try {\n await showNotification({\n placement: \"topRight\",\n icon: {\n lib: \"antd\",\n theme: \"filled\",\n icon: \"sound\",\n style: {\n color: \"var(--theme-orange-color)\",\n },\n },\n title,\n htmlMessage: `<div class=\"${styles.message}\">${htmlMessage}</div>`,\n closable: true,\n showConfirm: true,\n confirmText: i18n.t(`${NS}:${K.VIEW_DETAILS}`),\n confirmLink: {\n url: `/announcement-management/announcement-front/content?instanceId=${instanceId}`,\n target: \"_blank\",\n },\n showCancel: true,\n cancelText: i18n.t(`${NS}:${K.DISMISS}`),\n });\n } catch {\n // ignore\n } finally {\n if (!ignoredInstanceIds.has(instanceId)) {\n ignoredInstanceIds.add(instanceId);\n try {\n await AnnounceApi_ignoreAnnounce({\n instanceIds: [instanceId],\n });\n onClose();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"ignore announce failed:\", e);\n }\n }\n }\n}\n\nexport function PollAnnounceComponent({\n pollEnabled,\n realTimeMessage,\n onOpen,\n onClose,\n}: PollAnnounceComponentProps) {\n useEffect(\n () => {\n const listEffectiveAnnounce = async (): Promise<void> => {\n const list = (await AnnounceApi_listEffectiveAnnounce({}))\n .list as (Message & { isPopup: boolean })[];\n if (list.length) {\n list\n .filter((item) => item.isPopup)\n .reverse()\n .forEach((item) => {\n openNotification(item, onClose);\n });\n }\n };\n listEffectiveAnnounce();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n useEffect(() => {\n if (!pollEnabled && realTimeMessage) {\n openNotification(realTimeMessage, onClose);\n }\n }, [onClose, pollEnabled, realTimeMessage]);\n\n useEffect(() => {\n if (!pollEnabled) {\n return;\n }\n let ignored = false;\n const pollAnnounce = async (): Promise<void> => {\n if (ignored) {\n return;\n }\n try {\n const result = await AnnounceApi_pollAnnounce({\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n });\n openNotification(result as Message, onClose);\n onOpen();\n pollAnnounce();\n } catch (error) {\n const err = httpErrorToString(error);\n if (err?.toLowerCase()?.includes(\"timeout\")) {\n pollAnnounce();\n }\n }\n };\n pollAnnounce();\n return () => {\n ignored = true;\n };\n }, [onClose, onOpen, pollEnabled]);\n\n return null;\n}\n","import { traverseStoryboardExpressions } from \"@next-core/utils/storyboard\";\nimport { isEvaluable, type EstreeLiteral } from \"@next-core/cook\";\nimport type { SpreadElement } from \"@babel/types\";\n\nconst I18N = \"I18N\";\n\n/**\n * Get smart display for a string property, which may be an evaluation.\n *\n * This is useful for brick editors to display specific property configurations.\n *\n * E.g., for a button brick editor, display it by\n * `smartDisplayForEvaluableString(btn.$$parsedProperties.buttonName, btn.alias, \"<% … %>\")`.\n *\n * @param rawString - Raw string value.\n * @param nonStringFallback - Fallback value if it's not a string.\n * @param unknownEvaluationFallback - Fallback value if it's an unknown evaluation.\n *\n * @returns\n *\n * Returns the nonStringFallback if the input is not a string and nonStringFallback is present.\n *\n * Or returns the raw input when nonStringFallback no presents.\n *\n * Returns the I18N default value (or key if no value found)\n * if it is an evaluation and contains one and only one I18N key.\n *\n * Or returns the unknownEvaluationFallback if it is an unknown evaluation string and\n * unknownEvaluationFallback presents.\n *\n * Or returns the raw input otherwise.\n */\nexport function smartDisplayForEvaluableString<T, U, V>(\n rawString: T,\n nonStringFallback?: U,\n unknownEvaluationFallback?: V\n): T | U | V | string {\n if (typeof rawString !== \"string\") {\n // Catch on `undefined` or `null`.\n if (nonStringFallback != undefined) {\n return nonStringFallback;\n }\n return rawString;\n }\n if (isEvaluable(rawString)) {\n const defaults = new Set<string>();\n const keys = new Set<string>();\n\n traverseStoryboardExpressions(\n rawString,\n (node, parent) => {\n if (node.name === I18N) {\n const callParent = parent[parent.length - 1];\n if (\n callParent?.node.type === \"CallExpression\" &&\n callParent?.key === \"callee\"\n ) {\n const args = callParent.node.arguments as unknown as (\n | SpreadElement\n | EstreeLiteral\n )[];\n\n if (args.length > 0) {\n const firstArg = args[0];\n if (\n firstArg.type === \"Literal\" &&\n typeof firstArg.value === \"string\"\n ) {\n keys.add(firstArg.value);\n }\n }\n\n if (args.length > 1 && args[0].type !== \"SpreadElement\") {\n const secondArg = args[1];\n if (\n secondArg.type === \"Literal\" &&\n typeof secondArg.value === \"string\"\n ) {\n defaults.add(secondArg.value);\n }\n }\n }\n }\n },\n I18N\n );\n\n if (defaults.size === 1) {\n return [...defaults][0];\n }\n\n if (keys.size === 1) {\n return [...keys][0];\n }\n\n // Catch on `undefined` or `null`.\n if (unknownEvaluationFallback != undefined) {\n return unknownEvaluationFallback;\n }\n }\n\n return rawString;\n}\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport { smartDisplayForEvaluableString } from \"@next-shared/general/smartDisplayForEvaluableString\";\nimport { sortBy } from \"lodash\";\n\n/** 原始菜单数据。 */\nexport interface MenuRawData {\n menuId: string;\n title: string;\n icon?: unknown;\n type?: \"main\" | \"inject\";\n injectMenuGroupId?: string;\n dynamicItems?: boolean;\n itemsResolve?: unknown;\n items?: MenuItemRawData[];\n}\n\n/** 原始菜单项数据。 */\nexport type MenuItemRawData = {\n /** 菜单项文本。 */\n text: string;\n icon?: unknown;\n sort?: number;\n groupId?: string;\n hidden?: boolean;\n children?: MenuItemRawData[];\n};\n\nexport interface TitleDataSource {\n objectId: string;\n instanceId: string;\n attributeId?: string;\n}\n\ninterface RuntimeMenuItemRawData extends MenuItemRawData {}\n\nexport interface TreeNode {\n key: string;\n title: string;\n icon?: unknown;\n faded?: unknown;\n children?: TreeNode[];\n data: MenuRawData | MenuItemRawData;\n /** 第一个节点额外返回 __keys,包含所有节点的 key */\n __keys?: string[];\n}\n\nconst DEFAULT_ICON = {\n lib: \"fa\",\n icon: \"bars\",\n};\n\n/**\n * 构造用于菜单自定义的树形结构数据。\n */\nexport async function getMenuConfigTree(\n menuList: MenuRawData[]\n): Promise<TreeNode[]> {\n const keys: string[] = [];\n\n function getChildren(\n items: MenuItemRawData[] | undefined,\n prefixKey: string\n ): TreeNode[] | undefined {\n const children = items?.map<TreeNode>((item, j) => {\n const key = `${prefixKey}-${j}`;\n keys.push(key);\n return {\n key,\n title: smartDisplayForEvaluableString(item.text),\n data: item,\n icon: item.icon ?? DEFAULT_ICON,\n faded: item.hidden,\n children: getChildren(item.children, key),\n };\n });\n return children?.length ? children : undefined;\n }\n\n const mainMenu = menuList.find((menu) => menu.type === \"main\");\n if (!mainMenu) {\n return [];\n }\n\n const validMenuList: MenuRawData[] = [];\n const injectWithMenus = new Map<string, MenuRawData[]>();\n\n for (const menu of menuList) {\n if (!(menu.dynamicItems && menu.itemsResolve) && menu.items?.length) {\n if (menu.type === \"inject\" && menu.injectMenuGroupId) {\n let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);\n if (!injectingMenus) {\n injectingMenus = [];\n injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);\n }\n injectingMenus.push(menu);\n } else {\n validMenuList.push(menu);\n }\n }\n }\n\n keys.push(\"0\");\n\n const firstLevelItems = reorderMenuItems(\n validMenuList.flatMap(\n (menu) =>\n // Here always have non-empty items\n processGroupInject(menu.items, menu, injectWithMenus)!\n )\n );\n\n const tree: TreeNode[] = [\n {\n key: \"0\",\n __keys: keys,\n title: smartDisplayForEvaluableString(mainMenu.title) ?? mainMenu.menuId,\n data: mainMenu,\n icon: mainMenu.icon ?? DEFAULT_ICON,\n children: getChildren(firstLevelItems, \"0\"),\n },\n ];\n\n return tree;\n}\n\nfunction processGroupInject(\n items: MenuItemRawData[] | undefined,\n menu: MenuRawData,\n injectWithMenus: Map<string, MenuRawData[]>\n): RuntimeMenuItemRawData[] | undefined {\n return items?.map((item) => {\n const foundInjectingMenus =\n item.groupId && injectWithMenus.get(item.groupId);\n if (foundInjectingMenus) {\n // Each menu to be injected with should be injected only once.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n injectWithMenus.delete(item.groupId!);\n }\n return {\n ...item,\n children: (\n processGroupInject(item.children, menu, injectWithMenus) ??\n ([] as RuntimeMenuItemRawData[])\n ).concat(\n foundInjectingMenus\n ? foundInjectingMenus.flatMap(\n (injectingMenu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(\n injectingMenu.items,\n injectingMenu,\n injectWithMenus\n )!\n )\n : ([] as RuntimeMenuItemRawData[])\n ),\n };\n });\n}\n\nfunction reorderMenuItems(\n list: MenuItemRawData[] | undefined\n): MenuItemRawData[] {\n return sortMenuItems(list).map((item) => ({\n ...item,\n children: reorderMenuItems(item.children),\n }));\n}\n\nfunction sortMenuItems(list: MenuItemRawData[] | undefined): MenuItemRawData[] {\n return sortBy(list, (item) => item.sort ?? -Infinity, \"text\");\n}\n\ncustomElements.define(\n \"nav.get-menu-config-tree\",\n createProviderClass(getMenuConfigTree)\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;user-select:none;cursor:pointer;border-radius:3px}.tree-item-indentation{flex-shrink:0}.tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item-icon,\n.tree-item-expand-button{padding:3px;position:relative;width:12px;height:12px;font-size:12px;flex-shrink:0}.tree-item-icon,\n.tree-item-label{color:var(--color-header-text)}.tree-item-icon{margin-right:4px}.tree-item-expand-button{margin:0 4px}.tree-item-expand-button .tree-item-expand-arrow{color:var(--color-header-text);width:12px;height:12px;position:absolute;left:50%;top:50%;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item-label{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.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([faded]) .tree-item-icon,:host([faded]) .tree-item-label{color:var(--color-disabled-text)}:host(:not([selected])) .tree-item:hover .tree-item-icon{color:var(--palette-blue-4)}:host(:not([selected])) .tree-item:hover .tree-item-label{color:var(--palette-blue-4)}`, \"\"]);\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;user-select:none;cursor:pointer;border-radius:3px}.tree-item-indentation{flex-shrink:0}.tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item-icon,\n.tree-item-expand-button{padding:3px;width:12px;height:12px;font-size:12px;flex-shrink:0}.tree-item-icon,\n.tree-item-label{color:var(--color-header-text)}.tree-item-icon{margin-right:4px}.tree-item-expand-button{margin:0 4px}.tree-item-label{min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item-suffix{flex-shrink:0}:host([selected]) .tree-item{background-color:var(--palette-blue-1)}:host([faded]) .tree-item-icon,:host([faded]) .tree-item-label{color:var(--color-disabled-text)}:host(:not([selected])) .tree-item:hover .tree-item-icon{color:var(--palette-blue-4)}:host(:not([selected])) .tree-item:hover .tree-item-label{color:var(--palette-blue-4)}`, \"\"]);\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)}.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}.show-suffix-when-hover:not(:hover) .suffix{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `: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-container-not-border{border-right: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;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-item.disabled > eo-link::part(link),\n.menu-item.disabled .menu-icon{color:var(--color-disabled-text)}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{max-width:100%;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):not(.disabled):hover .menu-config,\n.menu-folder-label-wrapper:hover .menu-config{visibility:visible;width:24px}.menu-config:hover,\n.menu-item:not(.disabled) > eo-link:hover::part(link),\n.menu-item:not(.disabled) > 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;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;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:inline-block}:host([hidden]){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `: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;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: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,.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),.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,.menu-container .menu-group-text,.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{background:var(--left-sidebar-item-selected-bg);color:var(--left-sidebar-item-selected-color)}: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{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([collapsed]) .menu-submenu-title-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]):host([menu-collapsed]) .menu-submenu-arrow{color:var(--left-sidebar-item-selected-color)}: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","// 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, `.message--Fxvh9j9V{color:var(--color-normal-text);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}`, \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"message\": `message--Fxvh9j9V`\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","onBeforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","mainMenuTitleStyle","scrollWidth","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","_NavMenu","_A","WeakMap","_B","_C","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_menu","_init_extra_menu","_init_mainMenuTitleStyle","_init_extra_mainMenuTitleStyle","_init_showTooltip","_init_extra_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","menuItems","useMemo","_menu$menuItems","filter","_items","type","selectedKeys","initMenuItemAndMatchCurrentPathKeys","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","slice","ref","_items2","isHidden","_NavMenu2","c","_initClass","_applyDecs","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","attribute","Boolean","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","_LaunchpadButton2","lockBodyScroll","unwrapProvider","_EoLaunchpadButtonV","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","previous","hotkeys","preventDefault","unbind","_getRuntime","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","getRuntime","getFeatureFlags","deferredPlatformCategories","role","classNames","LaunchpadSvg","Launchpad","_EoLaunchpadButtonV2","platformCategoryStyleText","launchpadStyleText","WrappedIcon","WrappedLink","WrappedDropdownActions","onActionClick","MenuGroup","data","actions","variant","urlTemplate","customUrlTemplate","name","dropdownActive","setDropdownActive","filteredActions","checkIfByTransform","handleActionClick","useCallback","action","empty","lib","icon","MenuItemFolder","instanceId","MenuItem","id","_data$menuIcon","getAppLocaleName","disabled","linkUrl","parseUrlTemplate","urlObject","URL","url","origin","__pathname","tooltip","menuIcon","pick","expanded","setExpanded","toggle","prefix","fallback","_urlTemplate$replace","replace","_match","encodeURIComponent","String","get","trim","_LaunchpadConfig","_D","_E","_F","_LaunchpadConfig_brand","WeakSet","_onActionClick","LaunchpadConfig","_classPrivateMethodInitSpec","_init_menuGroups","_init_extra_menuGroups","_init_actions","_init_extra_actions","_init_variant","_init_extra_variant","_init_urlTemplate","_init_extra_urlTemplate","_init_customUrlTemplate","_init_extra_customUrlTemplate","_init_actionClickEvent","_init_extra_actionClickEvent","_classPrivateGetter","_get_actionClickEvent","emit","menuGroups","LaunchpadConfigComponent","group","_LaunchpadConfig2","_set_actionClickEvent","o","_","has","_checkInRHS","_EasyopsNavbarAlerts","EasyopsNavbarAlerts","EasyopsNavbarAlertsComponent","_EasyopsNavbarAlerts2","storage","JsonStorage","localStorage","licenseHide","setLienceseHide","slowRender","setSlowRender","currentApp","useCurrentApp","licenseDismissedKey","auth","getAuth","org","licenseDaysLeft","_authInfo$license","authInfo","validDaysLeft","license","dismissExpireAt","isAdmin","getItem","moment","unix","handelRouteRender","renderTime","loadTime","loadInfoPage","getMiscSettings","isBuildPush","millisecondToSecond","suggestTime","suggestUrl","addEventListener","removeEventListener","handleLicenseAlertDismiss","setItem","Alert","link","label","undefined","closable","onClose","href","target","millisecond","Math","floor","_EoLaunchpadQuickAcce","EoLaunchpadQuickAccess","_init_readonly","_init_extra_readonly","_init_target","_init_extra_target","readonly","EoLaunchpadQuickAccessComponent","favorites","loadingFavorites","pushRecentVisit","toggleStar","isStarred","useLaunchpadInfo","LaunchpadsContext","Provider","value","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","EoAppBarWrapper","_init_isFixed","_init_extra_isFixed","_init_position","_init_extra_position","_init_displayCenter","_init_extra_displayCenter","_init_extraAppBarContentStyle","_init_extra_extraAppBarContentStyle","isFixed","position","displayCenter","extraAppBarContentStyle","EoAppBarWrapperComponent","mainElement","getElementById","iframeMainElement","marginTop","justifyContent","_EoAppBarWrapper2","alias","WrappedBreadcrumb","WrappedBreadcrumbItem","_EoFrameBreadcrumb","EoFrameBreadcrumb","_init_breadcrumb","_init_extra_breadcrumb","_init_noCurrentApp","_init_extra_noCurrentApp","breadcrumb","noCurrentApp","EoFrameBreadcrumbComponent","_props$breadcrumb","_props$noCurrentApp","navConfig","useNavConfig","curAppBreadcrumb","currentAppBreadcrumbItems","breadcrumbItems","useCurrentMenuTitle","to","homepage","internal","localeName","_EoFrameBreadcrumb2","_EoSidebarMenuItem","_G","EoSidebarMenuItem","_init_url","_init_extra_url","_init_href","_init_extra_href","_init_icon","_init_extra_icon","_init_selected","_init_extra_selected","_init_inSubmenu","_init_extra_inSubmenu","_init_menuCollapsed","_init_extra_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_extra_collapsable","_init_collapsed","_init_extra_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","WrappedTooltip","_EoSidebar","_EoSidebar_brand","_handleActualWidthChange","_handleExpandedStateChange","EoSidebar","_init_hiddenFixedIcon","_init_extra_hiddenFixedIcon","_init_expandedState","_init_extra_expandedState","_init_actualWidthChangeEvent","_init_extra_actualWidthChangeEvent","actualWidth","_get_actualWidthChangeEvent","_init_expandedStateChangeEvent","_init_extra_expandedStateChangeEvent","state","_get_expandedStateChangeEvent","hiddenFixedIcon","EoSidebarComponent","onActualWidthChange","onExpandedStateChange","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","offsetX","getBoundingClientRect","left","drag","fn","frame","cancel","cancelAnimationFrame","func","_len","params","Array","_key","requestAnimationFrame","x","clientX","debounceByAnimationFrame","dragEnd","passive","_EoSidebar2","_set_actualWidthChangeEvent","_set_expandedStateChangeEvent","WrappedMenu","WrappedMenuGroup","WrapperMenuItemSubMenu","WrappedLinkItem","_EoSidebarSubMenu","EoSidebarSubMenu","EoSidebarSubMenuComponent","setSelectedKey","setOpenedKeys","setSelected","getMenuItemIndent","_item$key","split","renderMenuItem","titleStyle","paddingLeft","bodyStyle","renderSubMenuItem","renderGroupMenuItem","renderSimpleMenuItem","mode","_EoSidebarSubMenu2","_EoDirectory","_EoDirectory_brand","_H","_menuItemClick","_suffixIconClick","EoDirectory","_init_directoryTitle","_init_extra_directoryTitle","_init_menuItems","_init_extra_menuItems","_init_hideRightBorder","_init_extra_hideRightBorder","_init_suffixBrick","_init_extra_suffixBrick","_init_defaultSelectedKeys","_init_extra_defaultSelectedKeys","_init_menuItemClickEvent","_init_extra_menuItemClickEvent","_init_suffixIconClickEvent","_init_extra_suffixIconClickEvent","_get_menuItemClickEvent","_get_suffixIconClickEvent","directoryTitle","hideRightBorder","suffixBrick","defaultSelectedKeys","EoDirectoryComponent","suffixIconClick","menuItemClick","_item$children","useBrick","ReactUseMultipleBricks","suffixIcon","suffixIconTooltip","suffixIconDisabled","children","child","groupKey","_EoDirectory2","_set_menuItemClickEvent","_set_suffixIconClickEvent","DirectoryTreeContext","expandedKeysSet","selectedKeysSet","onExpand","onSelect","useDirectoryTreeContext","WrappedTreeLeaf","WrappedTreeInternalNode","TreeLeaf","treeData","depth","nodeData","faded","keys","node","when","TreeInternalNode","internalNodeSelectable","selectable","add","delete","TreeNode","isArray","Tree","getAllExpandableKeys","reduce","pre","cur","concat","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","flat","Infinity","method","WrappedSearch","onSearch","_EoDirectoryTree","_I","_J","_EoDirectoryTree_brand","_handleExpand","_K","_handleSelect","EoDirectoryTree","_initProto","_init_data","_init_extra_data","_init_internalNodeSelectable","_init_extra_internalNodeSelectable","_init_searchable","_init_extra_searchable","_init_placeholder","_init_extra_placeholder","_init_searchFields","_init_extra_searchFields","_init_selectedKeys","_init_extra_selectedKeys","_init_expandedKeys","_init_extra_expandedKeys","_init_expandEvent","_init_extra_expandEvent","_get_expandEvent","_init_selectEvent","_init_extra_selectEvent","_get_selectEvent","searchable","expandAll","collapseAll","expandAccordingToSelectedKeys","EoDirectoryTreeComponent","searchedData","treeItems","flattenList","dig","list","parent","treeItem","pos","flattenData","getFlattenTreeData","_EoDirectoryTree2","_set_expandEvent","_set_selectEvent","WrappedEoIcon","_EoDirectoryTreeLeaf","_EoDirectoryTreeLeaf_brand","EoDirectoryTreeLeaf","_init_depth","_init_extra_depth","_init_faded","_init_extra_faded","EoDirectoryTreeLeafComponent","treeItemRef","suffixRef","handleSelect","suffix","handleSuffixClick","_EoDirectoryTreeLeaf2","_EoDirectoryTreeInter","_EoDirectoryTreeInternalNode_brand","EoDirectoryTreeInternalNode","_init_expanded","_init_extra_expanded","_init_selectable","_init_extra_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","VIEW_DETAILS","DISMISS","showNotification","ignoredInstanceIds","_PollAnnounce","_PollAnnounce_brand","_handleClose","_handleOpen","PollAnnounce","_init_pollEnabled","_init_extra_pollEnabled","_init_realTimeMessage","_init_extra_realTimeMessage","_init_closeEvent","_init_extra_closeEvent","_get_closeEvent","_init_openEvent","_init_extra_openEvent","_get_openEvent","pollEnabled","realTimeMessage","PollAnnounceComponent","onOpen","async","openNotification","htmlMessage","color","styles","message","showConfirm","confirmText","i18n","confirmLink","showCancel","cancelText","AnnounceApi_ignoreAnnounce","instanceIds","console","error","AnnounceApi_listEffectiveAnnounce","isPopup","reverse","listEffectiveAnnounce","ignored","pollAnnounce","AnnounceApi_pollAnnounce","interceptorParams","ignoreLoadingBar","_err$toLowerCase","err","httpErrorToString","_PollAnnounce2","_set_closeEvent","_set_openEvent","I18N","smartDisplayForEvaluableString","rawString","nonStringFallback","unknownEvaluationFallback","isEvaluable","defaults","traverseStoryboardExpressions","callParent","args","firstArg","secondArg","size","DEFAULT_ICON","processGroupInject","injectWithMenus","_processGroupInject","foundInjectingMenus","groupId","injectingMenu","reorderMenuItems","sortBy","_item$sort","sort","sortMenuItems","customElements","define","createProviderClass","menuList","_smartDisplayForEvalu","_mainMenu$icon","mainMenu","find","validMenuList","Map","_menu$items","dynamicItems","itemsResolve","injectMenuGroupId","injectingMenus","set","firstLevelItems","__keys","menuId","getChildren","prefixKey","j","_item$icon","___CSS_LOADER_EXPORT___","module"],"sourceRoot":""}