@next-bricks/nav 1.14.6 → 1.14.7
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 +11 -11
- package/dist/chunks/884.370187c6.js +2 -0
- package/dist/chunks/884.370187c6.js.map +1 -0
- package/dist/chunks/eo-nav-menu.52a92ebe.js +2 -0
- package/dist/chunks/eo-nav-menu.52a92ebe.js.map +1 -0
- package/dist/chunks/{main.8b8ca7cb.js → main.5e61f189.js} +2 -2
- package/dist/chunks/{main.8b8ca7cb.js.map → main.5e61f189.js.map} +1 -1
- package/dist/{index.8c70e8e6.js → index.0eec50d6.js} +2 -2
- package/dist/{index.8c70e8e6.js.map → index.0eec50d6.js.map} +1 -1
- package/dist/manifest.json +20 -20
- package/dist/types.json +11 -11
- package/package.json +2 -2
- package/dist/chunks/884.eb590f61.js +0 -2
- package/dist/chunks/884.eb590f61.js.map +0 -1
- package/dist/chunks/eo-nav-menu.456dec2c.js +0 -2
- package/dist/chunks/eo-nav-menu.456dec2c.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[5821],{816:(e,t,n)=>{n.r(t),n.d(t,{NavMenu:()=>P});var i,l=n(918),a=n(6121),o=n(829),r=n(2740),s=n(9575),m=n(8769),c=n.n(m),u=n(300),d=n(5223),h=n(4295),p=n(6370),y=n(9527),g=n(764),v=(n(6477),n(3373)),w=n.n(v),b=n(1283),f=n(9044),T=n(9998),E=n(839),k=n(1122);let M,x,S,N,A,K,D;n(4211);const{defineElement:I,property:C}=(0,u.createDecorators)(),R=(0,h.wrapBrick)("eo-menu-item"),_=(0,h.wrapBrick)("eo-popover",{onVisibleChange:"visible.change",beforeVisibleChange:"before.visible.change"});function W(e){const{item:t}=e;return(0,y.Wf)(t,e.topData)?c().createElement(V,(0,s.A)({},e,{item:t})):(0,y.IZ)(t)?c().createElement(B,(0,s.A)({},e,{item:t})):c().createElement(G,(0,s.A)({},e,{item:t}))}function G(e){const{item:t,index:n,hidden:i,showTooltip:l,selectedKey:a=[]}=e;return c().createElement(R,{"data-index":n,className:i?"overflow-menu-item":"",key:t.key,title:l?t.text:"",active:!!t.key&&a.includes(t.key)},(0,y.q5)(t,{width:"100%"},e.mainMenuTitleStyle))}let F;const L=e=>{const t=F??(F=window.innerWidth-document.body.clientWidth);document.body.style.paddingRight=e.detail?t+"px":"",document.body.style.overflow=e.detail?"hidden":"",document.body.style.touchAction=e.detail?"none":""};function V(e){var t;let{index:n,hidden:i,item:l,topData:a,showTooltip:o,selectedKey:r=[],overflow:s,mainMenuTitleStyle:m}=e;return(null===(t=l.items)||void 0===t?void 0:t.length)>0?c().createElement(_,{"data-index":n,className:w()("popover",{subprime:!a,"overflow-menu-item":i}),arrow:!1,trigger:"hover",placement:a?"bottom-start":"right-start",distance:0,anchorDisplay:"block",strategy:"fixed"},c().createElement(R,{className:"sub-menu-item-label 22",key:l.key,slot:"anchor",title:o?l.title:""},(0,y.Gn)(l,!a,{...m})),c().createElement("div",{className:w()("sub-menu-wrapper",{"overflow-menu-wrapper":s})},l.items.map((e=>c().createElement(c().Fragment,{key:e.key},c().createElement(W,{item:e,selectedKey:r,showTooltip:o})))))):null}function B(e){var t;let{item:n,showTooltip:i,selectedKey:l=[]}=e;return(null===(t=n.items)||void 0===t?void 0:t.length)>0?"category"===n.childLayout?c().createElement(O,{item:n,selectedKey:l,showTooltip:i,placement:"right-start",anchorDisplay:"block"}):"siteMap"===n.childLayout?c().createElement(J,{item:n,selectedKey:l,showTooltip:i,placement:"right-start",anchorDisplay:"block",topData:!1}):c().createElement(c().Fragment,null,c().createElement("div",{className:"group-label"},n.title),c().createElement("div",{className:"group-wrapper"},n.items.map((e=>c().createElement(c().Fragment,{key:e.key},c().createElement(W,{item:e,showTooltip:i,selectedKey:l})))))):null}function O(e){var t;let{index:n,hidden:i,item:l,selectedKey:a=[],showTooltip:o,placement:r="bottom-start",anchorDisplay:s,mainMenuTitleStyle:m}=e;return(null===(t=l.items)||void 0===t?void 0:t.length)>0?c().createElement(_,{"data-index":n,className:w()("three-level-menu-popover","popover",{"overflow-menu-item":i}),arrow:!1,trigger:"hover",placement:r,distance:0,key:l.key,strategy:"fixed",anchorDisplay:s,beforeVisibleChange:L},c().createElement(R,{className:"sub-menu-item-label",key:l.key,slot:"anchor",title:o?l.title:""},(0,y.Gn)(l,!1,m)),c().createElement("div",{className:"sub-menu-wrapper"},c().createElement(b.s,{menuItem:l,selectedKey:a}))):null}function J(e){var t;let{index:n,hidden:i,item:l,selectedKey:a=[],showTooltip:o,placement:r="bottom-start",anchorDisplay:s,topData:u,mainMenuTitleStyle:d}=e;const[h,p]=(0,m.useState)();return(null===(t=l.items)||void 0===t?void 0:t.length)>0?c().createElement(_,{"data-index":n,className:w()("popover",{"overflow-menu-item":i}),trigger:"hover",placement:r,distance:0,key:l.key,strategy:"fixed",arrow:!1,anchorDisplay:s,beforeVisibleChange:e=>{p(e.detail),L(e)}},c().createElement(R,{className:"sub-menu-item-label",key:l.key,slot:"anchor",title:o?l.title:""},(0,y.Gn)(l,!1,d)),c().createElement("div",{className:w()("sub-menu-sit-map-wrapper",{"in-group-site-map":!u}),onClick:e=>e.stopPropagation()},c().createElement(f.bw,{menuGroup:l,selectedKey:a,visible:h}))):null}let P;var q=new WeakMap,z=new WeakMap,H=new WeakMap;class X extends h.ReactNextElement{constructor(){super(...arguments),(0,l.A)(this,q,x(this)),(0,l.A)(this,z,(S(this),N(this))),(0,l.A)(this,H,(A(this),K(this))),D(this)}get menu(){return(0,o.A)(q,this)}set menu(e){(0,a.A)(q,this,e)}get mainMenuTitleStyle(){return(0,o.A)(z,this)}set mainMenuTitleStyle(e){(0,a.A)(z,this,e)}get showTooltip(){return(0,o.A)(H,this)}set showTooltip(e){(0,a.A)(H,this,e)}render(){return c().createElement(Z,{menu:this.menu,showTooltip:this.showTooltip,mainMenuTitleStyle:this.mainMenuTitleStyle})}}function Z(e){const{menu:t,showTooltip:n}=e,i=(0,d.getHistory)(),l=(0,m.useRef)(null),[a,o]=(0,m.useState)(i.location),[r,s]=(0,m.useState)(Number.MAX_SAFE_INTEGER),{pathname:u,search:h}=a,p=(0,m.useMemo)((()=>((null==t?void 0:t.menuItems)??[]).filter((e=>{var t;return"default"===e.type||!e.type||["group","subMenu"].includes(e.type)&&(null===(t=e.items)||void 0===t?void 0:t.length)}))),[null==t?void 0:t.menuItems]),v=(0,m.useMemo)((()=>{const{selectedKeys:e}=(0,g.LP)(p??[],u,h,"");return e}),[p,u,h]);(0,m.useEffect)((()=>{const e=i.listen((e=>{o(e)}));return e}),[]),(0,m.useEffect)((()=>{if(l.current){const e=new ResizeObserver((()=>{if(l.current){const{width:e}=l.current.getClientRects()[0]??{},t=l.current.childNodes;if(t.length&&e){let n=e,i=t.length;for(let e=0;e<t.length;e++){const{width:l,height:a}=t[e].getClientRects()[0];if(!a&&n-40<0){i=e-1;break}if(n=n-l-(e>0?8:0),n<0){i=e;break}}s(i<0?0:i)}}}));return e.observe(l.current),()=>{e.disconnect()}}}),[]);const w=(0,m.useMemo)((()=>({type:"subMenu",title:"···",items:p.slice(r,p.length)})),[p,r]);return c().createElement("div",{ref:l,className:"nav-menu-wrapper"},p.map(((t,i)=>{var l;const a=r<=i;return c().createElement(c().Fragment,{key:t.key},(0,y.Wf)(t,!0)&&"category"===t.childLayout&&null!==(l=t.items)&&void 0!==l&&l.length?c().createElement(O,{index:i,hidden:a,item:t,showTooltip:n,selectedKey:v,mainMenuTitleStyle:e.mainMenuTitleStyle}):"group"===t.type&&"siteMap"===t.childLayout?c().createElement(J,{index:i,hidden:a,item:t,showTooltip:n,selectedKey:v,topData:!0,mainMenuTitleStyle:e.mainMenuTitleStyle}):c().createElement(W,{index:i,hidden:a,item:t,showTooltip:n,selectedKey:v,topData:!0,mainMenuTitleStyle:e.mainMenuTitleStyle}))})),c().createElement(W,{hidden:r>p.length,item:w,showTooltip:n,selectedKey:v,overflow:!0,topData:!0,mainMenuTitleStyle:e.mainMenuTitleStyle}))}i=X,({e:[x,S,N,A,K,D],c:[P,M]}=(0,r.A)(i,[I("eo-nav-menu",{styleTexts:[T.A,E.A,k.A,p.A]})],[[C({attribute:!1}),1,"menu"],[C({attribute:!1}),1,"mainMenuTitleStyle"],[C({type:Boolean}),1,"showTooltip"]],0,void 0,h.ReactNextElement)),M()},4612:(e,t,n)=>{n.d(t,{G:()=>i});class i{constructor(e){let 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-nav-menu.456dec2c.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/eo-nav-menu.456dec2c.js","mappings":"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","sources":["webpack:///./src/nav-menu/index.tsx","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["import React, {\n CSSProperties,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { UnregisterCallback } from \"history\";\nimport type { SidebarMenu } from \"@next-bricks/basic/menu\";\nimport type {\n MenuItem as MenuItemComponent,\n MenuComponentProps,\n} from \"@next-bricks/basic/menu-item\";\nimport { isSubMenu, isGroup, renderLinkCom, renderSpanCom } from \"./utils.js\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport \"@next-core/theme\";\nimport classnames from \"classnames\";\nimport { ThreeLevelMenuPopoverContent } from \"./ThreeLevelMenuPopoverContent.js\";\nimport { SiteMapItem } from \"./site-map/SiteMapItem.js\";\nimport SiteMapStyleText from \"../nav-menu/site-map/SiteMapItem.shadow.css\";\nimport ItemTagStyleText from \"../nav-menu/site-map/ItemTag.shadow.css\";\nimport GroupItemStyleText from \"../nav-menu/site-map/GroupItem.shadow.css\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n beforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n mainMenuTitleStyle: CSSProperties | undefined;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n mainMenuTitleStyle?: CSSProperties;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" }, props.mainMenuTitleStyle)}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n mainMenuTitleStyle,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label 22\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData, { ...mainMenuTitleStyle })}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n mainMenuTitleStyle,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n mainMenuTitleStyle?: CSSProperties;\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n 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, false, mainMenuTitleStyle)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n mainMenuTitleStyle,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n mainMenuTitleStyle?: CSSProperties;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n arrow={false}\n anchorDisplay={anchorDisplay}\n 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, false, mainMenuTitleStyle)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n @property({\n attribute: false,\n })\n accessor mainMenuTitleStyle: CSSProperties | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return (\n <NavMenuComponent\n menu={this.menu}\n showTooltip={this.showTooltip}\n mainMenuTitleStyle={this.mainMenuTitleStyle}\n />\n );\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const menuItems = useMemo(() => {\n return (menu?.menuItems ?? []).filter(\n (item) =>\n // 默认\n item.type === \"default\" ||\n // 没有类型\n !item.type ||\n // 分组类型并且没有子项,过滤\n ([\"group\", \"subMenu\"].includes(item.type) &&\n (item as SidebarMenuGroup).items?.length)\n );\n }, [menu?.menuItems]);\n\n const selectedKey = useMemo(() => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n return selectedKeys;\n }, [menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menuItems.slice(\n overflowIndex,\n menuItems.length\n ) as SidebarMenuItem[],\n }),\n [menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > menuItems.length}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n mainMenuTitleStyle={props.mainMenuTitleStyle}\n />\n </div>\n );\n}\n\nexport { NavMenu };\n","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":["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","mainMenuTitleStyle","scrollWidth","handlePopupVisibleChange","event","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","arrow","trigger","placement","distance","anchorDisplay","strategy","slot","renderSpanCom","map","innerItem","_ref2","_item$items2","childLayout","ThreeLevelMenuCom","SitMapMenCom","_ref3","_item$items3","ThreeLevelMenuPopoverContent","menuItem","_ref4","_item$items4","visible","setVisible","useState","onClick","e","stopPropagation","SiteMapItem","menuGroup","_NavMenu","_A","WeakMap","_B","_C","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_menu","_init_extra_menu","_init_mainMenuTitleStyle","_init_extra_mainMenuTitleStyle","_init_showTooltip","_init_extra_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","menuItems","useMemo","filter","_items","type","selectedKeys","initMenuItemAndMatchCurrentPathKeys","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","slice","ref","_items2","isHidden","_NavMenu2","c","_initClass","_applyDecs","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","attribute","Boolean","JsonStorage","storage","prefix","undefined","setItem","name","value","JSON","stringify","getItem","parse","removeItem","clear"],"sourceRoot":""}
|