@next-bricks/nav 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +1 -1
- package/dist/chunks/327.f17de4ee.js +3 -0
- package/dist/chunks/{327.fd453bd5.js.map → 327.f17de4ee.js.map} +1 -1
- package/dist/chunks/{3458.da0d9230.js → 3458.dd56c7ea.js} +2 -2
- package/dist/chunks/{3458.da0d9230.js.map → 3458.dd56c7ea.js.map} +1 -1
- package/dist/chunks/4031.a902777f.js +2 -0
- package/dist/chunks/4031.a902777f.js.map +1 -0
- package/dist/chunks/4049.163294d1.js +2 -0
- package/dist/chunks/{4049.03645b45.js.map → 4049.163294d1.js.map} +1 -1
- package/dist/chunks/4275.1fd8ecf3.js +2 -0
- package/dist/chunks/{4275.56eff5ad.js.map → 4275.1fd8ecf3.js.map} +1 -1
- package/dist/chunks/{5636.8ec660f7.js → 5636.b601815d.js} +2 -2
- package/dist/chunks/{5636.8ec660f7.js.map → 5636.b601815d.js.map} +1 -1
- package/dist/chunks/5725.8725fd32.js +2 -0
- package/dist/chunks/{5725.911dbb64.js.map → 5725.8725fd32.js.map} +1 -1
- package/dist/chunks/6051.0e435bc8.js +2 -0
- package/dist/chunks/6051.0e435bc8.js.map +1 -0
- package/dist/chunks/{6205.58037d6e.js → 6205.b0250234.js} +2 -2
- package/dist/chunks/{6205.58037d6e.js.map → 6205.b0250234.js.map} +1 -1
- package/dist/chunks/6473.7d38bacb.js +2 -0
- package/dist/chunks/{6473.13d21c93.js.map → 6473.7d38bacb.js.map} +1 -1
- package/dist/chunks/6482.559d003d.js +2 -0
- package/dist/chunks/{6482.91f76030.js.map → 6482.559d003d.js.map} +1 -1
- package/dist/chunks/{7164.769212f8.js → 7164.f4a731b7.js} +2 -2
- package/dist/chunks/{7164.769212f8.js.map → 7164.f4a731b7.js.map} +1 -1
- package/dist/chunks/7672.eca8f2b6.js +2 -0
- package/dist/chunks/{7672.5a5887e7.js.map → 7672.eca8f2b6.js.map} +1 -1
- package/dist/chunks/{8691.4836dc02.js → 8691.179e33b1.js} +2 -2
- package/dist/chunks/{8691.4836dc02.js.map → 8691.179e33b1.js.map} +1 -1
- package/dist/chunks/9102.9235ccd8.js +3 -0
- package/dist/chunks/{9102.ca515791.js.map → 9102.9235ccd8.js.map} +1 -1
- package/dist/chunks/9308.0779ccf8.js +2 -0
- package/dist/chunks/{9308.85aa3672.js.map → 9308.0779ccf8.js.map} +1 -1
- package/dist/chunks/9816.c1f84314.js +2 -0
- package/dist/chunks/{9816.7368ffde.js.map → 9816.c1f84314.js.map} +1 -1
- package/dist/chunks/eo-launchpad-button-v2.43f1e987.js +2 -0
- package/dist/chunks/{eo-launchpad-button-v2.9bf0f993.js.map → eo-launchpad-button-v2.43f1e987.js.map} +1 -1
- package/dist/chunks/{eo-launchpad-button.1f0fc34b.js → eo-launchpad-button.a6068456.js} +2 -2
- package/dist/chunks/{eo-launchpad-button.1f0fc34b.js.map → eo-launchpad-button.a6068456.js.map} +1 -1
- package/dist/chunks/eo-nav-menu.062b6b9b.js +3 -0
- package/dist/chunks/{eo-nav-menu.be432fd7.js.map → eo-nav-menu.062b6b9b.js.map} +1 -1
- package/dist/chunks/main.fc04a3c1.js +2 -0
- package/dist/chunks/main.fc04a3c1.js.map +1 -0
- package/dist/index.04f51534.js +2 -0
- package/dist/index.04f51534.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunks/327.fd453bd5.js +0 -3
- package/dist/chunks/4049.03645b45.js +0 -2
- package/dist/chunks/4275.56eff5ad.js +0 -2
- package/dist/chunks/5637.eea3fcc8.js +0 -2
- package/dist/chunks/5637.eea3fcc8.js.map +0 -1
- package/dist/chunks/5725.911dbb64.js +0 -2
- package/dist/chunks/6051.302804c7.js +0 -2
- package/dist/chunks/6051.302804c7.js.map +0 -1
- package/dist/chunks/6473.13d21c93.js +0 -2
- package/dist/chunks/6482.91f76030.js +0 -2
- package/dist/chunks/7672.5a5887e7.js +0 -2
- package/dist/chunks/9102.ca515791.js +0 -3
- package/dist/chunks/9308.85aa3672.js +0 -2
- package/dist/chunks/9816.7368ffde.js +0 -2
- package/dist/chunks/eo-launchpad-button-v2.9bf0f993.js +0 -2
- package/dist/chunks/eo-nav-menu.be432fd7.js +0 -3
- package/dist/chunks/main.7557c7dd.js +0 -2
- package/dist/chunks/main.7557c7dd.js.map +0 -1
- package/dist/index.fcbf3029.js +0 -2
- package/dist/index.fcbf3029.js.map +0 -1
- /package/dist/chunks/{327.fd453bd5.js.LICENSE.txt → 327.f17de4ee.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{9102.ca515791.js.LICENSE.txt → 9102.9235ccd8.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-nav-menu.be432fd7.js.LICENSE.txt → eo-nav-menu.062b6b9b.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/9308.85aa3672.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"],"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 type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { LocationDescriptor, 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 {\n isSimple,\n isSubMenu,\n isGroup,\n renderLinkCom,\n renderSpanCom,\n} 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\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n beforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" })}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handlePopupVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handleVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return <NavMenuComponent menu={this.menu} showTooltip={this.showTooltip} />;\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const [selectedKey, setSelectedKey] = useState<string[]>([]);\n\n const setSelected = async (): Promise<void> => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setSelectedKey(selectedKeys);\n };\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n setSelected();\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menu?.menuItems.slice(\n overflowIndex,\n menu.menuItems.length\n ) as SidebarMenuItem[],\n }),\n [menu?.menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menu?.menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > (menu?.menuItems?.length ?? 0)}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n />\n </div>\n );\n}\n\nexport { NavMenu };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n */\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 } 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 { Launchpad } from \"./Launchpad\";\nimport { deferredFavorites, deferredLaunchpadInfo } from \"./useLaunchpadInfo\";\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 */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText],\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 }, []);\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"],"names":["scrollWidth","defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","beforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","_NavMenu","handlePopupVisibleChange","event","_scrollWidth","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","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","_dec","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","_dec2","attribute","_dec3","type","Boolean","_A","WeakMap","_B","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","writable","value","_initProto","_init_menu","_init_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","_menu$menuItems$lengt","_menu$menuItems2","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","setSelectedKey","setSelected","_ref5","_asyncToGenerator","_menu$menuItems","selectedKeys","initMenuItemAndMatchCurrentPathKeys","menuItems","apply","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","useMemo","slice","ref","_items","isHidden","_class","c","_initClass","_applyDecs","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","_EoLaunchpadButtonV","lockBodyScroll","unwrapProvider","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","previous","hotkeys","filter","preventDefault","unbind","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","role","classNames","LaunchpadSvg","Launchpad"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/9308.0779ccf8.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"],"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 type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { LocationDescriptor, 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 {\n isSimple,\n isSubMenu,\n isGroup,\n renderLinkCom,\n renderSpanCom,\n} 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\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n beforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" })}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handlePopupVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handleVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return <NavMenuComponent menu={this.menu} showTooltip={this.showTooltip} />;\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const [selectedKey, setSelectedKey] = useState<string[]>([]);\n\n const setSelected = async (): Promise<void> => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setSelectedKey(selectedKeys);\n };\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n setSelected();\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menu?.menuItems.slice(\n overflowIndex,\n menu.menuItems.length\n ) as SidebarMenuItem[],\n }),\n [menu?.menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menu?.menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > (menu?.menuItems?.length ?? 0)}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n />\n </div>\n );\n}\n\nexport { NavMenu };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n */\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 } 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 { Launchpad } from \"./Launchpad\";\nimport { deferredFavorites, deferredLaunchpadInfo } from \"./useLaunchpadInfo\";\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 */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText],\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 }, []);\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"],"names":["scrollWidth","defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","beforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","_NavMenu","handlePopupVisibleChange","event","_scrollWidth","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","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","_dec","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","_dec2","attribute","_dec3","type","Boolean","_A","WeakMap","_B","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","writable","value","_initProto","_init_menu","_init_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","_menu$menuItems$lengt","_menu$menuItems2","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","setSelectedKey","setSelected","_ref5","_asyncToGenerator","_menu$menuItems","selectedKeys","initMenuItemAndMatchCurrentPathKeys","menuItems","apply","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","useMemo","slice","ref","_items","isHidden","_class","c","_initClass","_applyDecs","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","_EoLaunchpadButtonV","lockBodyScroll","unwrapProvider","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","previous","hotkeys","filter","preventDefault","unbind","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","role","classNames","LaunchpadSvg","Launchpad"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[9816],{7694:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(8657),i=a.n(n),r=a(2779),o=a.n(r),l=a(2892),c=a(1065),s=a(7896),p=a(5178),u=i().createContext({}),m=()=>i().useContext(u);function d(e){var{name:t,items:a}=e;return i().createElement("li",{className:"menu-group"},i().createElement("div",{className:"menu-group-label"},t),i().createElement("ul",{className:"menu"},a.map((e=>"dir"===e.type?i().createElement(v,{key:"".concat(e.type,"-").concat(e.id),name:e.name,items:e.items}):i().createElement(f,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}function f(e){var{item:t,isSidebar:a}=e,{pushRecentVisit:r,toggleStar:c,isStarred:u}=m(),d=(0,n.useMemo)((()=>!a&&u(t)),[a,u,t]),f=(0,n.useCallback)((()=>{c(t)}),[t,c]),v=(0,n.useCallback)((()=>{r(t)}),[t,r]),g=a?"sidebar-":"";return i().createElement("li",{className:o()("".concat(g,"menu-item"),{starred:d})},"app"===t.type?i().createElement(l.kk,{url:t.app.homepage,onClick:v},i().createElement(l.V3,(0,s.Z)({className:"".concat(g,"menu-icon")},(0,p.pick)(t.app.menuIcon,["lib","icon","theme","category","prefix"]))),i().createElement("span",{className:"menu-item-label"},t.app.localeName)):i().createElement(l.kk,{href:t.url,target:"_blank",onClick:v},i().createElement(l.V3,(0,s.Z)({className:"".concat(g,"menu-icon"),lib:"easyops",icon:"micro-app-center"},(0,p.pick)(t.menuIcon,["lib","icon","theme","category","prefix"]))),i().createElement("span",{className:"menu-item-label"},t.name)),!a&&i().createElement(l.V3,{lib:"fa",prefix:d?"fas":"far",icon:"star",className:o()("menu-item-star",{starred:d}),title:d?"取消收藏":"收藏",onClick:f}))}function v(e){var{name:t,items:a}=e,{searching:r}=m(),[c,s]=(0,n.useState)(!1),[p,u]=(0,n.useState)(!1),d=(0,n.useCallback)((()=>{r?u((e=>!e)):s((e=>!e))}),[r]);(0,n.useEffect)((()=>{u(!0)}),[r]);var v=r?p:c;return i().createElement("li",{className:"menu-item folder"},i().createElement(l.kk,{onClick:d},i().createElement(l.V3,{lib:"fa",prefix:"far",icon:"folder-open",className:"menu-icon"}),i().createElement("span",{className:"menu-item-label"},t),i().createElement(l.V3,{lib:"antd",icon:v?"up":"down",className:"menu-item-toggle"})),i().createElement("ul",{className:o()("sub-menu",{expanded:v})},a.map((e=>i().createElement(f,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}function g(e){var{active:t}=e,a=(0,n.useRef)(null),r=(0,n.useCallback)((()=>{var e;null===(e=a.current)||void 0===e||e.focus()}),[]),{loading:s,q:p,setQ:m,menuGroups:v,favorites:g,loadingFavorites:b,recentVisits:x,pushRecentVisit:y,toggleStar:k,isStarred:E}=(0,c.m1)(t),w=!!p,C=(0,n.useCallback)((e=>{m(e.target.value)}),[m]),N=(0,n.useCallback)((()=>{m("")}),[m]);return i().createElement("div",{className:o()("launchpad",{active:t})},i().createElement("div",{className:"sidebar"},i().createElement("div",{className:"quick-nav"},i().createElement("div",{className:"quick-nav-label"},"快捷访问"),i().createElement("ul",{className:"sidebar-menu"},g.map(((e,t)=>i().createElement(f,{key:t,item:e,isSidebar:!0})))))),i().createElement("div",{className:o()("content",{loading:s})},i().createElement(h,{loading:s}),i().createElement("div",{className:"search-box",onClick:r},i().createElement(l.V3,{lib:"fa",icon:"magnifying-glass",className:"search-icon"}),i().createElement("input",{ref:a,placeholder:"通过关键字搜索",value:p,onChange:C,className:"search-input"}),i().createElement(l.V3,{lib:"antd",theme:"filled",icon:"close-circle",className:o()("search-clear",{searching:w}),onClick:N})),i().createElement("div",{className:o()({empty:0===x.length})},i().createElement("div",{className:"recent-visits-label"},"最近访问"),i().createElement("ul",{className:"recent-visits"},x.map(((e,t)=>i().createElement("li",{key:t},"app"===e.type?i().createElement(l.kk,{url:e.app.homepage,onClick:()=>y(e)},i().createElement("span",null,e.app.localeName)):i().createElement(l.kk,{href:e.url,target:"_blank",onClick:()=>y(e)},i().createElement("span",null,e.name))))))),i().createElement(u.Provider,{value:{searching:w,pushRecentVisit:y,toggleStar:k,isStarred:E}},i().createElement("ul",{className:"menu-groups"},v.map((e=>i().createElement(d,{key:e.name,name:e.name,items:e.items})))))))}function h(e){var{loading:t}=e;return t&&i().createElement("div",{className:"spinner"},i().createElement(l.V3,{lib:"fa",icon:"spinner",spinning:!0}))}},1065:(e,t,a)=>{a.d(t,{sK:()=>M,yp:()=>L,m1:()=>P});var n=a(4795),i=a(8657),r=a(777),o=a(9784),l=a(2890),c=a(2301),s=a(2892),p=a(5887),u=a(2106),m=a(8043),d=a(2037),f=a(2112);function v(){return(v=(0,n.Z)((function*(){var e=yield(0,u.u)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),t=function*(){var e=a.app;if(e.locales){var t="$tmp-".concat(e.id);Object.entries(e.locales).forEach((e=>{var[a,n]=e;p.i18n.addResourceBundle(a,t,n)})),e.localeName=p.i18n.getFixedT(null,t)("name",e.name),Object.keys(e.locales).forEach((e=>{p.i18n.removeResourceBundle(e,t)}))}else e.localeName=e.name};for(var a of e.storyboards)yield*t();return e}))).apply(this,arguments)}function g(){return h.apply(this,arguments)}function h(){return(h=(0,n.Z)((function*(){return(yield(0,m.e)({page:1,pageSize:10},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}))).apply(this,arguments)}function b(){return(b=(0,n.Z)((function*(){var e=yield g(),t=[];for(var a of e){var n,i;"microApp"===(null===(n=a.launchpadCollection)||void 0===n?void 0:n.type)&&a.microAppId&&t.push({type:"app",id:a.microAppId,favoriteId:null===(i=a.launchpadCollection)||void 0===i?void 0:i.instanceId})}return t}))).apply(this,arguments)}function x(){return(x=(0,n.Z)((function*(e){if("app"===e.type)return(0,d.H)({microAppId:e.id,launchpadCollection:{type:"microApp",name:e.app.localeName}},{interceptorParams:{ignoreLoadingBar:!0}})}))).apply(this,arguments)}function y(){return(y=(0,n.Z)((function*(e){return e.favoriteId?(0,f.m)(e.favoriteId):g().then((t=>{var a,n=null===(a=t.find((t=>{var a;return"app"===e.type&&"microApp"===(null===(a=t.launchpadCollection)||void 0===a?void 0:a.type)&&t.microAppId===e.id})))||void 0===a||null===(a=a.launchpadCollection)||void 0===a?void 0:a.instanceId;if(n)return(0,f.m)(n)}))}))).apply(this,arguments)}var k,E=a(3028);function w(e,t){return e.app.id.toLowerCase().includes(t)||e.app.localeName.toLowerCase().includes(t)?e:null}function C(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)?e:null}var N="launchpad-recent-visits:".concat(null===(k=o.auth.getAuth())||void 0===k?void 0:k.org),S=new l.o(localStorage),I=10,A=10,V=[],Z=new Map,_=new Map,B=!1,R=[],z=!1,L=new c.i((0,n.Z)((function*(){var e=yield function(){return v.apply(this,arguments)}();V=e.desktops,Z=e.storyboards.reduce(((e,t)=>{var{app:a}=t;return e.set(a.id,a),e}),new Map);var t=new Map;for(var a of e.desktops)for(var n of a.items)if("custom"===n.type)t.set(n.id,n);else if("dir"===n.type)for(var i of n.items)"custom"===i.type&&t.set(i.id,i);_=t,B=!0}))),M=new c.i((0,n.Z)((function*(){R=yield function(){return b.apply(this,arguments)}(),z=!0})));function P(e){var[t,a]=(0,i.useState)(V),[o,l]=(0,i.useState)(Z),[c,p]=(0,i.useState)(_),[u,m]=(0,i.useState)(""),[d,f]=(0,i.useState)(!B),[v,g]=(0,i.useState)(!z),[h,b]=(0,i.useState)([]),[k,P]=(0,i.useState)([]),[O,q]=(0,i.useState)(R),[j,D]=(0,i.useState)([]);(0,i.useEffect)((()=>{e&&!d&&(a(V),l(Z),p(_))}),[e,d]),(0,i.useEffect)((()=>{e&&!v&&q(R)}),[e,v]),(0,i.useEffect)((()=>{var t;e&&b(null!==(t=S.getItem(N))&&void 0!==t?t:[])}),[e]),(0,i.useEffect)((()=>{if(window.STANDALONE_MICRO_APPS&&e){var t=function(){var e=(0,n.Z)((function*(){try{yield L.fetch(),f(!1)}catch(e){(0,r.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,i.useEffect)((()=>{if(!window.STANDALONE_MICRO_APPS){var e=(0,r.getRuntime)();V=e.getDesktops(),Z=new Map;var t=e.getCurrentApp();t&&Z.set(t.id,t),f(!1)}}),[]),(0,i.useEffect)((()=>{if(e){var t=function(){var e=(0,n.Z)((function*(){try{yield M.fetch(),g(!1)}catch(e){}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,i.useEffect)((()=>{if(!d){var e=h.map((e=>{if("app"===e.type){var t=o.get(e.id);return t?{type:"app",app:t}:null}return c.get(e.id)})).filter(Boolean);P(e)}}),[c,d,o,h]);var F=(0,i.useCallback)((e=>{var t,{type:a,id:n}=e,i=null!==(t=S.getItem(N))&&void 0!==t?t:[],r=i.findIndex((e=>e.type===a&&e.id===n));r>-1&&i.splice(r,1),i.unshift({type:a,id:n}),i.length>A&&i.pop(),S.setItem(N,i)}),[]);(0,i.useEffect)((()=>{if(!d&&!v){var e=O.map((e=>{if("app"===e.type){var t=o.get(e.id);return t?{type:"app",app:t}:null}return c.get(e.id)})).filter(Boolean);D(e)}}),[c,d,v,o,O]);var Q=(0,i.useCallback)((e=>{var{type:t,id:a}=e;return O.some((e=>e.type===t&&e.id===a))}),[O]),T=(0,i.useCallback)((e=>{var t,{type:a,id:n}=e,i=O.findIndex((e=>e.type===a&&e.id===n));if(i>-1){var r=O[i];t=O.slice(0,i).concat(O.slice(i+1)),function(e){y.apply(this,arguments)}(r)}else{if(O.length>=I)return void(0,s.vC)({type:"warn",title:"收藏数量已达上限",content:"当前收藏链接数量已达上限(".concat(I,"个),请删除部分收藏后再添加。")});var o={type:a,id:n};t=O.concat(o),function(e){x.apply(this,arguments)}(e)}q(t),R=t}),[O]),$=(0,i.useMemo)((()=>d?[]:function(e,t){return e.map((e=>({name:e.name,items:e.items.map((e=>{switch(e.type){case"app":var a=t.get(e.id);if(a)return{type:e.type,id:e.id,app:a};break;case"dir":var n=e.items.map((e=>{if("app"!==e.type)return e;var a=t.get(e.id);return a?{type:e.type,id:e.id,app:a}:void 0})).filter(Boolean);if(n.length>0)return{type:e.type,id:e.id,name:e.name,items:n};break;case"custom":return e}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(t,o)),[d,t,o]),G=(0,i.useMemo)((()=>function(e,t){if(!t)return e;var a=t.toLowerCase();return e.map((e=>({name:e.name,items:e.items.map((e=>{switch(e.type){case"app":return w(e,a);case"custom":return C(e,a);case"dir":var t=e.items.map((e=>"app"===e.type?w(e,a):C(e,a))).filter(Boolean);return t.length>0?(0,E.Z)((0,E.Z)({},e),{},{items:t}):null}})).filter(Boolean)}))).filter((e=>e.items.length>0))}($,u)),[$,u]);return{loading:d,q:u,setQ:m,menuGroups:G,loadingFavorites:v,favorites:j,recentVisits:k,pushRecentVisit:F,isStarred:Q,toggleStar:T}}},2892:(e,t,a)=>{a.d(t,{V3:()=>r,kk:()=>o,vC:()=>l});var n=a(4511),i=a(2413),r=(0,n.wrapBrick)("eo-icon"),o=(0,n.wrapBrick)("eo-link"),l=(0,i.unwrapProvider)("basic.show-dialog")},6976:(e,t,a)=>{a.d(t,{Z:()=>m});var n=a(9601),i=a.n(n),r=a(2609),o=a.n(r),l=a(8991),c=a.n(l),s=new URL(a(2754),a.b),p=o()(i()),u=c()(s);p.push([e.id,`:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none}:host-context(html[data-theme="dark"]),\n:host-context(html[data-theme="dark-v2"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1040px;max-width:calc(100vw - 100px);max-height:calc(100vh - var(--app-bar-height) - 10px);background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:160px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${u});background-size:205px 205px;background-repeat:no-repeat;background-position:left 22px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link{display:block}.sidebar-menu-item > 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)}.sidebar-menu-item > eo-link::part(link){padding:0 16px}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;min-height:50vh;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item > eo-link{max-width:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:0}.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:not(.starred) > .menu-item-star{display:none;color:var(--color-secondary-text)}.menu-item:not(.starred):hover > .menu-item-star{display:inline-block}.menu-item-star.starred{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits li{height:24px;padding:0 8px;background-color:var(--color-fill-bg-base-1);border-radius:3px;display:flex;align-items:center}.recent-visits eo-link{flex:1;min-width:0}.recent-visits eo-link::part(link){color:var(--color-header-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}`,""]);const m=p.toString()},8991:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},2754:(e,t,a)=>{e.exports=a.p+"images/9879d37a.png"}}]);
|
|
2
|
+
//# sourceMappingURL=9816.c1f84314.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/9816.7368ffde.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/Launchpad.tsx","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/launchpad-button-v2/getMenuGroups.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts","webpack:///./src/launchpad-button-v2/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import React from \"react\";\nimport type {\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n pushRecentVisit(item: DesktopItemApp | DesktopItemCustom): void;\n toggleStar(item: DesktopItemApp | DesktopItemCustom): void;\n isStarred(item: DesktopItemApp | DesktopItemCustom): boolean;\n}\n\nexport const LaunchpadsContext = React.createContext<LaunchpadContextData>(\n {} as LaunchpadContextData\n);\n\nexport const useLaunchpadContext = (): LaunchpadContextData =>\n React.useContext(LaunchpadsContext);\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport type {\n DesktopItem,\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\nimport { useLaunchpadContext } from \"./LaunchpadContext\";\n\nexport interface MenuGroupProps {\n name: string;\n items: DesktopItem[];\n}\n\nexport function MenuGroup({ name, items }: MenuGroupProps) {\n return (\n <li className=\"menu-group\">\n <div className=\"menu-group-label\">{name}</div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={`${item.type}-${item.id}`}\n name={item.name}\n items={item.items}\n />\n ) : (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n item: DesktopItemApp | DesktopItemCustom;\n isSidebar?: boolean;\n}\n\nexport function MenuItem({ item, isSidebar }: MenuItemProps) {\n const { pushRecentVisit, toggleStar, isStarred } = useLaunchpadContext();\n const starred = useMemo(\n () => !isSidebar && isStarred(item),\n [isSidebar, isStarred, item]\n );\n\n const handleStarClick = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n const handleClick = useCallback(() => {\n pushRecentVisit(item);\n }, [item, pushRecentVisit]);\n\n const classPrefix = isSidebar ? \"sidebar-\" : \"\";\n\n return (\n <li className={classNames(`${classPrefix}menu-item`, { starred })}>\n {item.type === \"app\" ? (\n <WrappedLink url={item.app.homepage} onClick={handleClick}>\n <WrappedIcon\n className={`${classPrefix}menu-icon`}\n {...pick(item.app.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ])}\n />\n <span className=\"menu-item-label\">{item.app.localeName}</span>\n </WrappedLink>\n ) : (\n <WrappedLink href={item.url} target=\"_blank\" onClick={handleClick}>\n <WrappedIcon\n className={`${classPrefix}menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n )}\n {!isSidebar && (\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className={classNames(\"menu-item-star\", { starred })}\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n )}\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: (DesktopItemApp | DesktopItemCustom)[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, MenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites,\n loadingFavorites,\n recentVisits,\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 <div className={classNames(\"launchpad\", { active })}>\n <div className=\"sidebar\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">快捷访问</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <ul className=\"sidebar-menu\">\n {favorites.map((item, index) => (\n <MenuItem key={index} item={item} isSidebar />\n ))}\n </ul>\n </div>\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\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 />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">最近访问</div>\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n {item.type === \"app\" ? (\n <WrappedLink\n url={item.app.homepage}\n onClick={() => pushRecentVisit(item)}\n >\n <span>{item.app.localeName}</span>\n </WrappedLink>\n ) : (\n <WrappedLink\n href={item.url}\n target=\"_blank\"\n onClick={() => pushRecentVisit(item)}\n >\n <span>{item.name}</span>\n </WrappedLink>\n )}\n </li>\n ))}\n </ul>\n </div>\n <LaunchpadsContext.Provider\n value={{ searching, pushRecentVisit, toggleStar, isStarred }}\n >\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 </LaunchpadsContext.Provider>\n </div>\n </div>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import type { MicroApp, Storyboard } from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollection,\n LaunchpadApi_deleteCollection,\n LaunchpadApi_listCollection,\n} from \"@next-api-sdk/user-service-sdk\";\nimport type {\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\nimport type { FavMenuItem } from \"./interfaces\";\n\nexport async function fetchLaunchpadInfo() {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(\n {},\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n );\n\n for (const storyboard of launchpadInfo.storyboards as Storyboard[]) {\n const app = storyboard.app as unknown as MicroApp;\n if (app.locales) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const ns = `$tmp-${app.id}`;\n // Support any languages in `app.locales`.\n Object.entries(app.locales).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, ns, resources);\n });\n // Use `app.name` as the fallback `app.localeName`.\n app.localeName = i18n.getFixedT(null, ns)(\"name\", app.name) as string;\n // Remove the temporary i18n resource bundles.\n Object.keys(app.locales).forEach((lang) => {\n i18n.removeResourceBundle(lang, ns);\n });\n } else {\n app.localeName = app.name;\n }\n }\n\n return launchpadInfo;\n}\n\nasync function fetchRawFavorites() {\n return (\n await LaunchpadApi_listCollection(\n { page: 1, pageSize: 10 },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n}\n\nexport async function fetchFavorites() {\n const list = await fetchRawFavorites();\n const stored: FavMenuItem[] = [];\n for (const fav of list) {\n if (fav.launchpadCollection?.type === \"microApp\") {\n if (fav.microAppId) {\n stored.push({\n type: \"app\",\n id: fav.microAppId,\n favoriteId: fav.launchpadCollection?.instanceId,\n });\n }\n }\n // TODO: custom links\n }\n return stored;\n}\n\n// istanbul ignore next: will refactor soon\nexport async function favorite(item: DesktopItemApp | DesktopItemCustom) {\n if (item.type === \"app\") {\n return LaunchpadApi_createCollection(\n {\n microAppId: item.id,\n launchpadCollection: {\n type: \"microApp\",\n name: item.app.localeName,\n },\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n }\n // TODO: custom links\n}\n\n// istanbul ignore next: will refactor soon\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollection(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find(\n (fav) =>\n item.type === \"app\"\n ? fav.launchpadCollection?.type === \"microApp\" &&\n fav.microAppId === item.id\n : false // TODO: custom links\n )?.launchpadCollection?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollection(foundId);\n }\n });\n}\n","import type {\n DesktopData,\n DesktopItem,\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\n\nexport function search(allMenuGroups: DesktopData[], q: string): DesktopData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: DesktopData[] = allMenuGroups\n .map((desktop) => ({\n name: desktop.name,\n items: desktop.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : matchMenuItemCustom(sub, lowerQ)\n )\n .filter(Boolean) as DesktopItem[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as DesktopItem[],\n }))\n // ignore empty desktops\n .filter((desktop) => desktop.items.length > 0);\n return groups;\n}\n\nfunction matchMenuItemApp(item: DesktopItemApp, lowerQ: string) {\n return item.app.id.toLowerCase().includes(lowerQ) ||\n item.app.localeName!.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: DesktopItemCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { MicroApp, Storyboard } from \"@next-core/types\";\nimport { getRuntime, handleHttpError } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport type {\n DesktopData,\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog } from \"./wrapped-bricks\";\nimport type { FavMenuItem, StoredMenuItem } from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { getMenuGroups } from \"./getMenuGroups\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nconst FAVORITES_LIMIT = 10;\nconst RECENT_VISITS_LIMIT = 10;\n\nlet candidateDesktops: DesktopData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroApp>();\nlet candidateCustomLinksById = new Map<string, DesktopItemCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n const info = await fetchLaunchpadInfo();\n candidateDesktops = info.desktops as DesktopData[];\n\n candidateMicroAppsById = (info.storyboards as Storyboard[]).reduce(\n (acc, { app }) => {\n acc.set(app.id, app);\n return acc;\n },\n new Map<string, MicroApp>()\n );\n\n const linksById = new Map<string, DesktopItemCustom>();\n for (const desktop of info.desktops as DesktopData[]) {\n for (const item of desktop.items) {\n if (item.type === \"custom\") {\n linksById.set(item.id, item);\n } else if (item.type === \"dir\") {\n for (const subItem of item.items) {\n if (subItem.type === \"custom\") {\n linksById.set(subItem.id, subItem);\n }\n }\n }\n }\n }\n candidateCustomLinksById = linksById;\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<\n (DesktopItemApp | DesktopItemCustom)[]\n >([]);\n\n const [storedFavorites, setStoredFavorites] =\n useState<FavMenuItem[]>(candidateFavorites);\n const [favorites, setFavorites] = useState<\n (DesktopItemApp | DesktopItemCustom)[]\n >([]);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setStoredFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (window.STANDALONE_MICRO_APPS && active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n // props.onWillClose?.();\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (!window.STANDALONE_MICRO_APPS) {\n const runtime = getRuntime();\n candidateDesktops = runtime.getDesktops() as DesktopData[];\n candidateMicroAppsById = new Map();\n const currentApp = runtime.getCurrentApp();\n if (currentApp) {\n candidateMicroAppsById.set(currentApp.id, currentApp);\n }\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n // props.onWillClose?.();\n // handleHttpError(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app ? { type: \"app\", app } : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as (DesktopItemApp | DesktopItemCustom)[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n useEffect(() => {\n if (loading || loadingFavorites) {\n return;\n }\n const list = storedFavorites\n .map((item) => {\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app ? { type: \"app\", app } : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as (DesktopItemApp | DesktopItemCustom)[];\n setFavorites(list);\n }, [\n customLinksById,\n loading,\n loadingFavorites,\n microAppsById,\n storedFavorites,\n ]);\n\n const isStarred = useCallback(\n ({ type, id }: FavMenuItem) => {\n return storedFavorites.some(\n (item) => item.type === type && item.id === id\n );\n },\n [storedFavorites]\n );\n\n const toggleStar = useCallback(\n (item: DesktopItemApp | DesktopItemCustom) => {\n const { type, id } = item;\n const index = storedFavorites.findIndex(\n (item) => item.type === type && item.id === id\n );\n let newFavorites: StoredMenuItem[];\n if (index > -1) {\n const removed = storedFavorites[index];\n newFavorites = storedFavorites\n .slice(0, index)\n .concat(storedFavorites.slice(index + 1));\n undoFavorite(removed);\n } else {\n if (storedFavorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: \"收藏数量已达上限\",\n content: `当前收藏链接数量已达上限(${FAVORITES_LIMIT}个),请删除部分收藏后再添加。`,\n });\n return;\n }\n const fav: FavMenuItem = { type, id };\n newFavorites = storedFavorites.concat(fav);\n favorite(item);\n }\n setStoredFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [storedFavorites]\n );\n\n const allMenuGroups: DesktopData[] = useMemo(() => {\n if (loading) {\n return [];\n }\n return getMenuGroups(desktops, microAppsById);\n }, [loading, desktops, microAppsById]);\n\n const menuGroups: DesktopData[] = useMemo(\n () => search(allMenuGroups, q),\n [allMenuGroups, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n","import type { MicroApp } from \"@next-core/types\";\nimport type { DesktopData, DesktopItem } from \"../launchpad/interfaces\";\n\nexport function getMenuGroups(\n desktops: DesktopData[],\n microAppsById: Map<string, MicroApp>\n) {\n return (\n desktops\n .map((desktop) => ({\n name: desktop.name,\n items: desktop.items\n .map((item) => {\n switch (item.type) {\n case \"app\": {\n const app = microAppsById.get(item.id);\n if (app) {\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n break;\n }\n case \"dir\": {\n const items = item.items\n .map((item) => {\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n if (app) {\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n } else {\n return item;\n }\n })\n .filter(Boolean);\n // ignore empty dirs\n if (items.length > 0) {\n return {\n type: item.type,\n id: item.id,\n name: item.name,\n items,\n };\n }\n break;\n }\n case \"custom\":\n return item;\n }\n })\n .filter(Boolean) as DesktopItem[],\n }))\n // ignore empty desktops\n .filter((desktop) => desktop.items.length > 0)\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 { 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\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/launchpad-sidebar.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1040px;max-width:calc(100vw - 100px);max-height:calc(100vh - var(--app-bar-height) - 10px);background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:160px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:205px 205px;background-repeat:no-repeat;background-position:left 22px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link{display:block}.sidebar-menu-item > 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)}.sidebar-menu-item > eo-link::part(link){padding:0 16px}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;min-height:50vh;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item > eo-link{max-width:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:0}.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:not(.starred) > .menu-item-star{display:none;color:var(--color-secondary-text)}.menu-item:not(.starred):hover > .menu-item-star{display:inline-block}.menu-item-star.starred{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits li{height:24px;padding:0 8px;background-color:var(--color-fill-bg-base-1);border-radius:3px;display:flex;align-items:center}.recent-visits eo-link{flex:1;min-width:0}.recent-visits eo-link::part(link){color:var(--color-header-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","concat","id","MenuItem","_ref2","isSidebar","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classPrefix","classNames","WrappedLink","url","app","homepage","onClick","WrappedIcon","_extends","pick","menuIcon","localeName","href","target","lib","icon","prefix","title","_ref3","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","Launchpad","active","searchInputRef","useRef","handleClickSearchBox","_searchInputRef$curre","current","focus","loading","q","setQ","menuGroups","favorites","loadingFavorites","recentVisits","useLaunchpadInfo","handleSearch","e","value","clearSearch","index","Loading","ref","placeholder","onChange","theme","empty","length","Provider","group","spinning","_fetchLaunchpadInfo","_asyncToGenerator","launchpadInfo","LaunchpadApi_getLaunchpadInfo","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","_loop","storyboard","locales","ns","Object","entries","forEach","lang","resources","i18n","addResourceBundle","getFixedT","keys","removeResourceBundle","storyboards","apply","arguments","fetchRawFavorites","_fetchRawFavorites","LaunchpadApi_listCollection","page","pageSize","list","_fetchFavorites","stored","fav","_fav$launchpadCollect","_fav$launchpadCollect2","launchpadCollection","microAppId","push","favoriteId","instanceId","_favorite","LaunchpadApi_createCollection","_undoFavorite","LaunchpadApi_deleteCollection","then","_list$find","foundId","find","_fav$launchpadCollect3","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","candidateDesktops","candidateMicroAppsById","Map","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","deferredLaunchpadInfo","DeferredService","info","fetchLaunchpadInfo","desktops","reduce","acc","set","linksById","desktop","subItem","deferredFavorites","fetchFavorites","setDesktops","microAppsById","setMicroAppsById","customLinksById","setCustomLinksById","setLoading","setLoadingFavorites","storedRecentVisits","setStoredRecentVisits","setRecentVisits","storedFavorites","setStoredFavorites","setFavorites","_storage$getItem","getItem","window","STANDALONE_MICRO_APPS","startFetchLaunchpadInfo","_ref4","fetch","error","handleHttpError","runtime","getRuntime","getDesktops","currentApp","getCurrentApp","startFetchFavorites","_ref5","visits","get","filter","Boolean","_ref6","_storage$getItem2","findIndex","visit","splice","unshift","pop","setItem","_ref7","some","newFavorites","removed","slice","_x2","undoFavorite","showDialog","content","_x","favorite","allMenuGroups","getMenuGroups","filteredSubItems","sub","_objectSpread","search","wrapBrick","unwrapProvider","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","module","toString","exports","options","String","__esModule","default","test","hash","needQuotes","replace"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/9816.c1f84314.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/Launchpad.tsx","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/launchpad-button-v2/getMenuGroups.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts","webpack:///./src/launchpad-button-v2/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import React from \"react\";\nimport type {\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n pushRecentVisit(item: DesktopItemApp | DesktopItemCustom): void;\n toggleStar(item: DesktopItemApp | DesktopItemCustom): void;\n isStarred(item: DesktopItemApp | DesktopItemCustom): boolean;\n}\n\nexport const LaunchpadsContext = React.createContext<LaunchpadContextData>(\n {} as LaunchpadContextData\n);\n\nexport const useLaunchpadContext = (): LaunchpadContextData =>\n React.useContext(LaunchpadsContext);\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport type {\n DesktopItem,\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\nimport { useLaunchpadContext } from \"./LaunchpadContext\";\n\nexport interface MenuGroupProps {\n name: string;\n items: DesktopItem[];\n}\n\nexport function MenuGroup({ name, items }: MenuGroupProps) {\n return (\n <li className=\"menu-group\">\n <div className=\"menu-group-label\">{name}</div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={`${item.type}-${item.id}`}\n name={item.name}\n items={item.items}\n />\n ) : (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n item: DesktopItemApp | DesktopItemCustom;\n isSidebar?: boolean;\n}\n\nexport function MenuItem({ item, isSidebar }: MenuItemProps) {\n const { pushRecentVisit, toggleStar, isStarred } = useLaunchpadContext();\n const starred = useMemo(\n () => !isSidebar && isStarred(item),\n [isSidebar, isStarred, item]\n );\n\n const handleStarClick = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n const handleClick = useCallback(() => {\n pushRecentVisit(item);\n }, [item, pushRecentVisit]);\n\n const classPrefix = isSidebar ? \"sidebar-\" : \"\";\n\n return (\n <li className={classNames(`${classPrefix}menu-item`, { starred })}>\n {item.type === \"app\" ? (\n <WrappedLink url={item.app.homepage} onClick={handleClick}>\n <WrappedIcon\n className={`${classPrefix}menu-icon`}\n {...pick(item.app.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ])}\n />\n <span className=\"menu-item-label\">{item.app.localeName}</span>\n </WrappedLink>\n ) : (\n <WrappedLink href={item.url} target=\"_blank\" onClick={handleClick}>\n <WrappedIcon\n className={`${classPrefix}menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n )}\n {!isSidebar && (\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className={classNames(\"menu-item-star\", { starred })}\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n )}\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: (DesktopItemApp | DesktopItemCustom)[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, MenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites,\n loadingFavorites,\n recentVisits,\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 <div className={classNames(\"launchpad\", { active })}>\n <div className=\"sidebar\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">快捷访问</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <ul className=\"sidebar-menu\">\n {favorites.map((item, index) => (\n <MenuItem key={index} item={item} isSidebar />\n ))}\n </ul>\n </div>\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\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 />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">最近访问</div>\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n {item.type === \"app\" ? (\n <WrappedLink\n url={item.app.homepage}\n onClick={() => pushRecentVisit(item)}\n >\n <span>{item.app.localeName}</span>\n </WrappedLink>\n ) : (\n <WrappedLink\n href={item.url}\n target=\"_blank\"\n onClick={() => pushRecentVisit(item)}\n >\n <span>{item.name}</span>\n </WrappedLink>\n )}\n </li>\n ))}\n </ul>\n </div>\n <LaunchpadsContext.Provider\n value={{ searching, pushRecentVisit, toggleStar, isStarred }}\n >\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 </LaunchpadsContext.Provider>\n </div>\n </div>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import type { MicroApp, Storyboard } from \"@next-core/types\";\nimport { i18n } from \"@next-core/i18n\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollection,\n LaunchpadApi_deleteCollection,\n LaunchpadApi_listCollection,\n} from \"@next-api-sdk/user-service-sdk\";\nimport type {\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\nimport type { FavMenuItem } from \"./interfaces\";\n\nexport async function fetchLaunchpadInfo() {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(\n {},\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n );\n\n for (const storyboard of launchpadInfo.storyboards as Storyboard[]) {\n const app = storyboard.app as unknown as MicroApp;\n if (app.locales) {\n // Prefix to avoid conflict between brick package's i18n namespace.\n const ns = `$tmp-${app.id}`;\n // Support any languages in `app.locales`.\n Object.entries(app.locales).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, ns, resources);\n });\n // Use `app.name` as the fallback `app.localeName`.\n app.localeName = i18n.getFixedT(null, ns)(\"name\", app.name) as string;\n // Remove the temporary i18n resource bundles.\n Object.keys(app.locales).forEach((lang) => {\n i18n.removeResourceBundle(lang, ns);\n });\n } else {\n app.localeName = app.name;\n }\n }\n\n return launchpadInfo;\n}\n\nasync function fetchRawFavorites() {\n return (\n await LaunchpadApi_listCollection(\n { page: 1, pageSize: 10 },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n}\n\nexport async function fetchFavorites() {\n const list = await fetchRawFavorites();\n const stored: FavMenuItem[] = [];\n for (const fav of list) {\n if (fav.launchpadCollection?.type === \"microApp\") {\n if (fav.microAppId) {\n stored.push({\n type: \"app\",\n id: fav.microAppId,\n favoriteId: fav.launchpadCollection?.instanceId,\n });\n }\n }\n // TODO: custom links\n }\n return stored;\n}\n\n// istanbul ignore next: will refactor soon\nexport async function favorite(item: DesktopItemApp | DesktopItemCustom) {\n if (item.type === \"app\") {\n return LaunchpadApi_createCollection(\n {\n microAppId: item.id,\n launchpadCollection: {\n type: \"microApp\",\n name: item.app.localeName,\n },\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n }\n // TODO: custom links\n}\n\n// istanbul ignore next: will refactor soon\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollection(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find(\n (fav) =>\n item.type === \"app\"\n ? fav.launchpadCollection?.type === \"microApp\" &&\n fav.microAppId === item.id\n : false // TODO: custom links\n )?.launchpadCollection?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollection(foundId);\n }\n });\n}\n","import type {\n DesktopData,\n DesktopItem,\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\n\nexport function search(allMenuGroups: DesktopData[], q: string): DesktopData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: DesktopData[] = allMenuGroups\n .map((desktop) => ({\n name: desktop.name,\n items: desktop.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : matchMenuItemCustom(sub, lowerQ)\n )\n .filter(Boolean) as DesktopItem[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as DesktopItem[],\n }))\n // ignore empty desktops\n .filter((desktop) => desktop.items.length > 0);\n return groups;\n}\n\nfunction matchMenuItemApp(item: DesktopItemApp, lowerQ: string) {\n return item.app.id.toLowerCase().includes(lowerQ) ||\n item.app.localeName!.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: DesktopItemCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { MicroApp, Storyboard } from \"@next-core/types\";\nimport { getRuntime, handleHttpError } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport type {\n DesktopData,\n DesktopItemApp,\n DesktopItemCustom,\n} from \"../launchpad/interfaces\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog } from \"./wrapped-bricks\";\nimport type { FavMenuItem, StoredMenuItem } from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { getMenuGroups } from \"./getMenuGroups\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nconst FAVORITES_LIMIT = 10;\nconst RECENT_VISITS_LIMIT = 10;\n\nlet candidateDesktops: DesktopData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroApp>();\nlet candidateCustomLinksById = new Map<string, DesktopItemCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n const info = await fetchLaunchpadInfo();\n candidateDesktops = info.desktops as DesktopData[];\n\n candidateMicroAppsById = (info.storyboards as Storyboard[]).reduce(\n (acc, { app }) => {\n acc.set(app.id, app);\n return acc;\n },\n new Map<string, MicroApp>()\n );\n\n const linksById = new Map<string, DesktopItemCustom>();\n for (const desktop of info.desktops as DesktopData[]) {\n for (const item of desktop.items) {\n if (item.type === \"custom\") {\n linksById.set(item.id, item);\n } else if (item.type === \"dir\") {\n for (const subItem of item.items) {\n if (subItem.type === \"custom\") {\n linksById.set(subItem.id, subItem);\n }\n }\n }\n }\n }\n candidateCustomLinksById = linksById;\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<\n (DesktopItemApp | DesktopItemCustom)[]\n >([]);\n\n const [storedFavorites, setStoredFavorites] =\n useState<FavMenuItem[]>(candidateFavorites);\n const [favorites, setFavorites] = useState<\n (DesktopItemApp | DesktopItemCustom)[]\n >([]);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setStoredFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (window.STANDALONE_MICRO_APPS && active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n // props.onWillClose?.();\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (!window.STANDALONE_MICRO_APPS) {\n const runtime = getRuntime();\n candidateDesktops = runtime.getDesktops() as DesktopData[];\n candidateMicroAppsById = new Map();\n const currentApp = runtime.getCurrentApp();\n if (currentApp) {\n candidateMicroAppsById.set(currentApp.id, currentApp);\n }\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n // props.onWillClose?.();\n // handleHttpError(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app ? { type: \"app\", app } : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as (DesktopItemApp | DesktopItemCustom)[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n useEffect(() => {\n if (loading || loadingFavorites) {\n return;\n }\n const list = storedFavorites\n .map((item) => {\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app ? { type: \"app\", app } : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as (DesktopItemApp | DesktopItemCustom)[];\n setFavorites(list);\n }, [\n customLinksById,\n loading,\n loadingFavorites,\n microAppsById,\n storedFavorites,\n ]);\n\n const isStarred = useCallback(\n ({ type, id }: FavMenuItem) => {\n return storedFavorites.some(\n (item) => item.type === type && item.id === id\n );\n },\n [storedFavorites]\n );\n\n const toggleStar = useCallback(\n (item: DesktopItemApp | DesktopItemCustom) => {\n const { type, id } = item;\n const index = storedFavorites.findIndex(\n (item) => item.type === type && item.id === id\n );\n let newFavorites: StoredMenuItem[];\n if (index > -1) {\n const removed = storedFavorites[index];\n newFavorites = storedFavorites\n .slice(0, index)\n .concat(storedFavorites.slice(index + 1));\n undoFavorite(removed);\n } else {\n if (storedFavorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: \"收藏数量已达上限\",\n content: `当前收藏链接数量已达上限(${FAVORITES_LIMIT}个),请删除部分收藏后再添加。`,\n });\n return;\n }\n const fav: FavMenuItem = { type, id };\n newFavorites = storedFavorites.concat(fav);\n favorite(item);\n }\n setStoredFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [storedFavorites]\n );\n\n const allMenuGroups: DesktopData[] = useMemo(() => {\n if (loading) {\n return [];\n }\n return getMenuGroups(desktops, microAppsById);\n }, [loading, desktops, microAppsById]);\n\n const menuGroups: DesktopData[] = useMemo(\n () => search(allMenuGroups, q),\n [allMenuGroups, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n","import type { MicroApp } from \"@next-core/types\";\nimport type { DesktopData, DesktopItem } from \"../launchpad/interfaces\";\n\nexport function getMenuGroups(\n desktops: DesktopData[],\n microAppsById: Map<string, MicroApp>\n) {\n return (\n desktops\n .map((desktop) => ({\n name: desktop.name,\n items: desktop.items\n .map((item) => {\n switch (item.type) {\n case \"app\": {\n const app = microAppsById.get(item.id);\n if (app) {\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n break;\n }\n case \"dir\": {\n const items = item.items\n .map((item) => {\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n if (app) {\n return {\n type: item.type,\n id: item.id,\n app,\n };\n }\n } else {\n return item;\n }\n })\n .filter(Boolean);\n // ignore empty dirs\n if (items.length > 0) {\n return {\n type: item.type,\n id: item.id,\n name: item.name,\n items,\n };\n }\n break;\n }\n case \"custom\":\n return item;\n }\n })\n .filter(Boolean) as DesktopItem[],\n }))\n // ignore empty desktops\n .filter((desktop) => desktop.items.length > 0)\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 { 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\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\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\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/launchpad-sidebar.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1040px;max-width:calc(100vw - 100px);max-height:calc(100vh - var(--app-bar-height) - 10px);background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:160px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:205px 205px;background-repeat:no-repeat;background-position:left 22px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link{display:block}.sidebar-menu-item > 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)}.sidebar-menu-item > eo-link::part(link){padding:0 16px}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;min-height:50vh;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item > eo-link{max-width:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:0}.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:not(.starred) > .menu-item-star{display:none;color:var(--color-secondary-text)}.menu-item:not(.starred):hover > .menu-item-star{display:inline-block}.menu-item-star.starred{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits li{height:24px;padding:0 8px;background-color:var(--color-fill-bg-base-1);border-radius:3px;display:flex;align-items:center}.recent-visits eo-link{flex:1;min-width:0}.recent-visits eo-link::part(link){color:var(--color-header-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","concat","id","MenuItem","_ref2","isSidebar","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classPrefix","classNames","WrappedLink","url","app","homepage","onClick","WrappedIcon","_extends","pick","menuIcon","localeName","href","target","lib","icon","prefix","title","_ref3","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","Launchpad","active","searchInputRef","useRef","handleClickSearchBox","_searchInputRef$curre","current","focus","loading","q","setQ","menuGroups","favorites","loadingFavorites","recentVisits","useLaunchpadInfo","handleSearch","e","value","clearSearch","index","Loading","ref","placeholder","onChange","theme","empty","length","Provider","group","spinning","_fetchLaunchpadInfo","_asyncToGenerator","launchpadInfo","LaunchpadApi_getLaunchpadInfo","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","_loop","storyboard","locales","ns","Object","entries","forEach","lang","resources","i18n","addResourceBundle","getFixedT","keys","removeResourceBundle","storyboards","apply","arguments","fetchRawFavorites","_fetchRawFavorites","LaunchpadApi_listCollection","page","pageSize","list","_fetchFavorites","stored","fav","_fav$launchpadCollect","_fav$launchpadCollect2","launchpadCollection","microAppId","push","favoriteId","instanceId","_favorite","LaunchpadApi_createCollection","_undoFavorite","LaunchpadApi_deleteCollection","then","_list$find","foundId","find","_fav$launchpadCollect3","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","candidateDesktops","candidateMicroAppsById","Map","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","deferredLaunchpadInfo","DeferredService","info","fetchLaunchpadInfo","desktops","reduce","acc","set","linksById","desktop","subItem","deferredFavorites","fetchFavorites","setDesktops","microAppsById","setMicroAppsById","customLinksById","setCustomLinksById","setLoading","setLoadingFavorites","storedRecentVisits","setStoredRecentVisits","setRecentVisits","storedFavorites","setStoredFavorites","setFavorites","_storage$getItem","getItem","window","STANDALONE_MICRO_APPS","startFetchLaunchpadInfo","_ref4","fetch","error","handleHttpError","runtime","getRuntime","getDesktops","currentApp","getCurrentApp","startFetchFavorites","_ref5","visits","get","filter","Boolean","_ref6","_storage$getItem2","findIndex","visit","splice","unshift","pop","setItem","_ref7","some","newFavorites","removed","slice","_x2","undoFavorite","showDialog","content","_x","favorite","allMenuGroups","getMenuGroups","filteredSubItems","sub","_objectSpread","search","wrapBrick","unwrapProvider","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","module","toString","exports","options","String","__esModule","default","test","hash","needQuotes","replace"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[8207],{658:(e,t,s)=>{s.r(t),s.d(t,{EoLaunchpadButtonV2:()=>n,EoLaunchpadButtonV2Component:()=>w});var r,c,i,n,h=s(8390),l=s(8657),a=s.n(l),o=s(5366),u=s(4511),d=s(2413),f=(s(2230),s(777)),v=s(7370),p=s(2779),m=s.n(p),F=s(4758),g=s(6976),k=s(7694),E=s(1065),{defineElement:b}=(0,o.createDecorators)(),I=(0,d.unwrapProvider)("basic.lock-body-scroll");c=b("eo-launchpad-button-v2",{styleTexts:[g.Z]});class Z extends u.ReactNextElement{disconnectedCallback(){super.disconnectedCallback(),I(this,!1)}render(){return a().createElement(w,{host:this})}}function w(e){var{host:t}=e,[s,r]=(0,l.useState)(!1),[c,i]=(0,l.useState)(!1),n=()=>{i((e=>!e))};return(0,l.useEffect)((()=>(0,f.getHistory)().listen((()=>{i(!1)}))),[]),(0,l.useEffect)((()=>{c&&!s&&r(!0)}),[c,s]),(0,l.useEffect)((()=>(v.Z.filter=function(){return!0},(0,v.Z)("alt+l",(e=>{e.preventDefault(),i((e=>!e))})),(0,v.Z)("esc",(()=>{i(!1)})),()=>{v.Z.unbind("alt+l"),v.Z.unbind("esc")})),[]),(0,l.useEffect)((()=>{I(t,c)}),[c,t]),(0,l.useEffect)((()=>{E.yp.schedulePrefetch(),E.sK.schedulePrefetch()}),[]),a().createElement(a().Fragment,null,a().createElement("a",{role:"button",className:m()("launchpad-button",{active:c}),onClick:n},a().createElement(F.Z,null)),a().createElement("div",{className:m()("mask",{active:c}),onClick:n}),s&&a().createElement(k.Z,{active:c}))}i=Z,[n,r]=(0,h.Z)(i,[],[c],0,void 0,u.ReactNextElement).c,r()},2301:(e,t,s)=>{s.d(t,{i:()=>i});var r=s(4795),c=s(6666);class i{constructor(e){(0,c.Z)(this,"preFetchId",null),(0,c.Z)(this,"preFetchScheduled",!1),(0,c.Z)(this,"firstFetchPromise",null),(0,c.Z)(this,"isFetching",!1),(0,c.Z)(this,"task",void 0),this.task=e}schedulePrefetch(){var e=this;if(!this.preFetchScheduled){this.preFetchScheduled=!0;var t=function(){var t=(0,r.Z)((function*(){e.preFetchId=null,e.fetch()}));return function(){return t.apply(this,arguments)}}();"function"==typeof window.requestIdleCallback?this.preFetchId=window.requestIdleCallback(t):this.preFetchId=setTimeout(t)}}fetch(e){var t;return this.preFetchId&&("function"==typeof window.cancelIdleCallback?cancelIdleCallback(this.preFetchId):clearTimeout(this.preFetchId),this.preFetchId=null),this.isFetching&&!e||(this.isFetching=!0,(t=this.task()).catch((e=>{console.error(e),this.firstFetchPromise=null})).finally((()=>{this.isFetching=!1})),this.firstFetchPromise||(this.firstFetchPromise=t),!e)?this.firstFetchPromise:t}}},4758:(e,t,s)=>{s.d(t,{Z:()=>i});var r=s(7896),c=s(8657);const i=e=>c.createElement("svg",(0,r.Z)({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 16 16"},e),c.createElement("g",{fill:"currentColor",fillRule:"nonzero"},c.createElement("path",{d:"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z"})))},2890:(e,t,s)=>{s.d(t,{o:()=>r});class r{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){return JSON.parse(this.storage.getItem(this.prefix+e))}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}}}]);
|
|
2
|
+
//# sourceMappingURL=eo-launchpad-button-v2.43f1e987.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/eo-launchpad-button-v2.9bf0f993.js","mappings":"0MAwBAA,E,qJANM,cAAEC,IAAkBC,EAAAA,EAAAA,oBAEpBC,GAAiBC,EAAAA,EAAAA,gBACrB,0BAGFC,EAICJ,EAAc,yBAA0B,CACvCK,WAAY,CAACC,EAAAA,KADf,MAAAC,UAGkCC,EAAAA,iBAChCC,uBACEC,MAAMD,uBACNP,EAAeS,MAAM,EACvB,CAEAC,SACE,OAAOC,IAAAA,cAACC,EAA4B,CAACC,KAAMJ,MAC7C,EAGK,SAASG,EAA4BE,GAAkC,IAAjC,KAAED,GAA6BC,GACnEC,EAAaC,IAAkBC,EAAAA,EAAAA,WAAS,IACxCC,EAAQC,IAAaF,EAAAA,EAAAA,WAAS,GAC/BG,EAAkBA,KACtBD,GAAWE,IAAcA,GAAS,EAkDpC,OA/CAC,EAAAA,EAAAA,YAAU,KAESC,EAAAA,EAAAA,cAAaC,QAAO,KACnCL,GAAU,EAAM,KAGjB,KAEHG,EAAAA,EAAAA,YAAU,KAEJJ,IAAWH,GACbC,GAAe,EACjB,GACC,CAACE,EAAQH,KAGZO,EAAAA,EAAAA,YAAU,KACRG,EAAAA,EAAQC,OAAS,WACf,OAAO,CACT,GAGAD,EAAAA,EAAAA,GAAQ,SAAUE,IAChBA,EAAMC,iBACNT,GAAWE,IAAcA,GAAS,KAIpCI,EAAAA,EAAAA,GAAQ,OAAO,KACbN,GAAU,EAAM,IAGX,KACLM,EAAAA,EAAQI,OAAO,SACfJ,EAAAA,EAAQI,OAAO,MAAM,IAEtB,KAEHP,EAAAA,EAAAA,YAAU,KACRtB,EAAea,EAAMK,EAAO,GAC3B,CAACA,EAAQL,KAEZS,EAAAA,EAAAA,YAAU,KACRQ,EAAAA,GAAsBC,mBACtBC,EAAAA,GAAkBD,kBAAkB,GACnC,IAGDpB,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,KACEsB,KAAK,SACLC,UAAWC,IAAW,mBAAoB,CAAEjB,WAC5CkB,QAAShB,GAETT,IAAAA,cAAC0B,EAAAA,EAAY,OAEf1B,IAAAA,cAAA,OACEuB,UAAWC,IAAW,OAAQ,CAAEjB,WAChCkB,QAAShB,IAEVL,GAAeJ,IAAAA,cAAC2B,EAAAA,EAAS,CAACpB,OAAQA,IAGzC,CAxECqB,EAAAlC,GAAAR,EAAA2C,IAAAC,EAAAA,EAAAA,GAAAF,EAAA,IAAArC,GAAA,SATiCI,EAAAA,kBAAgBoC,EAAAF,G,0DC/B3C,MAAMG,EAOXC,YAAYC,IAA8BC,EAAAA,EAAAA,GAAA,kBANN,OAAIA,EAAAA,EAAAA,GAAA,0BACZ,IAAKA,EAAAA,EAAAA,GAAA,yBACoB,OAAIA,EAAAA,EAAAA,GAAA,mBACpC,IAAKA,EAAAA,EAAAA,GAAA,oBAIxBrC,KAAKoC,KAAOA,CACd,CAEAd,mBAAyB,IAAAgB,EAAA,KACvB,IAAKtC,KAAKuC,kBAAmB,CAC3BvC,KAAKuC,mBAAoB,EACzB,IAAMC,EAAqB,eAAAnC,GAAAoC,EAAAA,EAAAA,IAAG,YAC5BH,EAAKI,WAAa,KAClBJ,EAAKK,OACP,IAAC,kBAH0B,OAAAtC,EAAAuC,MAAA,KAAAC,UAAA,KAKe,mBAA/BC,OAAOC,oBAChB/C,KAAK0C,WAAaI,OAAOC,oBAAoBP,GAE7CxC,KAAK0C,WAAaM,WAChBR,EAGN,CACF,CAEAG,MAAMM,GAWJ,IAAIC,EACJ,OAXIlD,KAAK0C,aAEkC,mBAA9BI,OAAOK,mBAChBA,mBAAmBnD,KAAK0C,YAExBU,aAAapD,KAAK0C,YAEpB1C,KAAK0C,WAAa,MAIf1C,KAAKqD,aAAcJ,IACtBjD,KAAKqD,YAAa,GAClBH,EAAUlD,KAAKoC,QAEZkB,OAAOC,IAENC,QAAQD,MAAMA,GACdvD,KAAKyD,kBAAoB,IAAI,IAE9BC,SAAQ,KACP1D,KAAKqD,YAAa,CAAK,IAEtBrD,KAAKyD,oBACRzD,KAAKyD,kBAAoBP,IAEvBD,GAICjD,KAAKyD,kBAHDP,CAIb,E,0DC3DF,QADqBS,GAASzD,EAAAA,cAAA,OAAA0D,EAAAA,EAAAA,GAAA,CAAKC,MAAM,6BAA6BC,MAAO,GAAIC,OAAQ,GAAIC,QAAQ,aAAgBL,GAAOzD,EAAAA,cAAA,KAAG+D,KAAK,eAAeC,SAAS,WAAUhE,EAAAA,cAAA,QAAMiE,EAAE,kH,kCCDvK,MAAMC,EACXjC,YACUkC,GAER,IADQC,EAAczB,UAAA0B,OAAA,QAAAC,IAAA3B,UAAA,GAAAA,UAAA,GAAG,cAAa,KAD9BwB,QAAAA,EAAgB,KAChBC,OAAAA,CACP,CAEHG,QAAiBC,EAAcC,GAC7B3E,KAAKqE,QAAQI,QAAQzE,KAAKsE,OAASI,EAAME,KAAKC,UAAUF,GAC1D,CAEAG,QAAiBJ,GACf,OAAOE,KAAKG,MAAM/E,KAAKqE,QAAQS,QAAQ9E,KAAKsE,OAASI,GACvD,CAEAM,WAAWN,GACT,OAAO1E,KAAKqE,QAAQW,WAAWhF,KAAKsE,OAASI,EAC/C,CAEAO,QACE,OAAOjF,KAAKqE,QAAQY,OACtB,E","sources":["webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/shared/DeferredService.ts","webpack:///./src/images/launchpad.svg","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["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 } 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 { Launchpad } from \"./Launchpad\";\nimport { deferredFavorites, deferredLaunchpadInfo } from \"./useLaunchpadInfo\";\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 */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText],\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 }, []);\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","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import * as React from \"react\";\nconst SvgLaunchpad = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} viewBox=\"0 0 16 16\" {...props}><g fill=\"currentColor\" fillRule=\"nonzero\"><path d=\"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z\" /></g></svg>;\nexport default SvgLaunchpad;","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["_EoLaunchpadButtonV","defineElement","createDecorators","lockBodyScroll","unwrapProvider","_dec","styleTexts","styleText","EoLaunchpadButtonV2","ReactNextElement","disconnectedCallback","super","this","render","React","EoLaunchpadButtonV2Component","host","_ref","initialized","setInitialized","useState","active","setActive","toggleLaunchpad","previous","useEffect","getHistory","listen","hotkeys","filter","event","preventDefault","unbind","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","role","className","classNames","onClick","LaunchpadSvg","Launchpad","_class","_initClass","_applyDecs","c","DeferredService","constructor","task","_defineProperty","_this","preFetchScheduled","preFetchLaunchpadInfo","_asyncToGenerator","preFetchId","fetch","apply","arguments","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","catch","error","console","firstFetchPromise","finally","props","_extends","xmlns","width","height","viewBox","fill","fillRule","d","JsonStorage","storage","prefix","length","undefined","setItem","name","value","JSON","stringify","getItem","parse","removeItem","clear"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/eo-launchpad-button-v2.43f1e987.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/shared/DeferredService.ts","webpack:///./src/images/launchpad.svg","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["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 } 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 { Launchpad } from \"./Launchpad\";\nimport { deferredFavorites, deferredLaunchpadInfo } from \"./useLaunchpadInfo\";\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 */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText],\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 }, []);\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","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import * as React from \"react\";\nconst SvgLaunchpad = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} viewBox=\"0 0 16 16\" {...props}><g fill=\"currentColor\" fillRule=\"nonzero\"><path d=\"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z\" /></g></svg>;\nexport default SvgLaunchpad;","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["_EoLaunchpadButtonV","defineElement","createDecorators","lockBodyScroll","unwrapProvider","_dec","styleTexts","styleText","EoLaunchpadButtonV2","ReactNextElement","disconnectedCallback","super","this","render","React","EoLaunchpadButtonV2Component","host","_ref","initialized","setInitialized","useState","active","setActive","toggleLaunchpad","previous","useEffect","getHistory","listen","hotkeys","filter","event","preventDefault","unbind","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","role","className","classNames","onClick","LaunchpadSvg","Launchpad","_class","_initClass","_applyDecs","c","DeferredService","constructor","task","_defineProperty","_this","preFetchScheduled","preFetchLaunchpadInfo","_asyncToGenerator","preFetchId","fetch","apply","arguments","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","catch","error","console","firstFetchPromise","finally","props","_extends","xmlns","width","height","viewBox","fill","fillRule","d","JsonStorage","storage","prefix","length","undefined","setItem","name","value","JSON","stringify","getItem","parse","removeItem","clear"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2517],{6404:(e,t,n)=>{n.r(t),n.d(t,{LaunchpadButton:()=>b});var a,c,r,s=n(8390),l=n(8657),u=n.n(l),i=n(5366),d=n(4511),k=n(8470),o=n(
|
|
2
|
-
//# sourceMappingURL=eo-launchpad-button.
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2517],{6404:(e,t,n)=>{n.r(t),n.d(t,{LaunchpadButton:()=>b});var a,c,r,s=n(8390),l=n(8657),u=n.n(l),i=n(5366),d=n(4511),k=n(8470),o=n(9077),x=(n(2230),n(4497)),_=n(2152);(0,o.initializeReactI18n)(x.NS,x.k);var b,{defineElement:h}=(0,i.createDecorators)();c=h("eo-launchpad-button",{styleTexts:[_.Z]});class p extends d.ReactNextElement{render(){return u().createElement(k.L,null)}}r=p,[b,a]=(0,s.Z)(r,[],[c],0,void 0,d.ReactNextElement).c,a()}}]);
|
|
2
|
+
//# sourceMappingURL=eo-launchpad-button.a6068456.js.map
|
package/dist/chunks/{eo-launchpad-button.1f0fc34b.js.map → eo-launchpad-button.a6068456.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/eo-launchpad-button.
|
|
1
|
+
{"version":3,"file":"chunks/eo-launchpad-button.a6068456.js","mappings":"wQASAA,EAAAA,EAAAA,qBAAoBC,EAAAA,GAAIC,EAAAA,GAExB,IAEAC,GAFM,cAAEC,IAAkBC,EAAAA,EAAAA,oBAE1BC,EAICF,EAAc,sBAAuB,CACpCG,WAAY,CAACC,EAAAA,KADf,MAAAC,UAG8BC,EAAAA,iBAC5BC,SACE,OAAOC,IAAAA,cAACC,EAAAA,EAAwB,KAClC,EACDC,EAAAL,GAAAN,EAAAY,IAAAC,EAAAA,EAAAA,GAAAF,EAAA,IAAAR,GAAA,SAJ6BI,EAAAA,kBAAgBO,EAAAF,G","sources":["webpack:///./src/launchpad/index.tsx"],"sourcesContent":["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 */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n"],"names":["initializeReactI18n","NS","locales","_LaunchpadButton","defineElement","createDecorators","_dec","styleTexts","styleText","LaunchpadButton","ReactNextElement","render","React","LaunchpadButtonComponent","_class","_initClass","_applyDecs","c"],"sourceRoot":""}
|