UNPKG

@wordpress/components

Version:
8 lines (7 loc) 5.36 kB
{ "version": 3, "sources": ["../../src/navigation/index.tsx"], "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { isRTL } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { getAnimateClassName } from '../animate';\nimport { ROOT_MENU } from './constants';\nimport { NavigationContext } from './context';\nimport { NavigationUI } from './styles/navigation-styles';\nimport { useCreateNavigationTree } from './use-create-navigation-tree';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst noop = () => {};\n\n/**\n * Render a navigation list with optional groupings and hierarchy.\n *\n * @deprecated Use `Navigator` instead.\n *\n * ```jsx\n * import {\n * __experimentalNavigation as Navigation,\n * __experimentalNavigationGroup as NavigationGroup,\n * __experimentalNavigationItem as NavigationItem,\n * __experimentalNavigationMenu as NavigationMenu,\n * } from '@wordpress/components';\n *\n * const MyNavigation = () => (\n * <Navigation>\n * <NavigationMenu title=\"Home\">\n * <NavigationGroup title=\"Group 1\">\n * <NavigationItem item=\"item-1\" title=\"Item 1\" />\n * <NavigationItem item=\"item-2\" title=\"Item 2\" />\n * </NavigationGroup>\n * <NavigationGroup title=\"Group 2\">\n * <NavigationItem\n * item=\"item-3\"\n * navigateToMenu=\"category\"\n * title=\"Category\"\n * />\n * </NavigationGroup>\n * </NavigationMenu>\n *\n * <NavigationMenu\n * backButtonLabel=\"Home\"\n * menu=\"category\"\n * parentMenu=\"root\"\n * title=\"Category\"\n * >\n * <NavigationItem badge=\"1\" item=\"child-1\" title=\"Child 1\" />\n * <NavigationItem item=\"child-2\" title=\"Child 2\" />\n * </NavigationMenu>\n * </Navigation>\n * );\n * ```\n */\nexport function Navigation({\n activeItem,\n activeMenu = ROOT_MENU,\n children,\n className,\n onActivateMenu = noop\n}) {\n const [menu, setMenu] = useState(activeMenu);\n const [slideOrigin, setSlideOrigin] = useState();\n const navigationTree = useCreateNavigationTree();\n const defaultSlideOrigin = isRTL() ? 'right' : 'left';\n deprecated('wp.components.Navigation (and all subcomponents)', {\n since: '6.8',\n version: '7.1',\n alternative: 'wp.components.Navigator'\n });\n const setActiveMenu = (menuId, slideInOrigin = defaultSlideOrigin) => {\n if (!navigationTree.getMenu(menuId)) {\n return;\n }\n setSlideOrigin(slideInOrigin);\n setMenu(menuId);\n onActivateMenu(menuId);\n };\n\n // Used to prevent the sliding animation on mount\n const isMountedRef = useRef(false);\n useEffect(() => {\n if (!isMountedRef.current) {\n isMountedRef.current = true;\n }\n }, []);\n useEffect(() => {\n if (activeMenu !== menu) {\n setActiveMenu(activeMenu);\n }\n // Not adding deps for now, as it would require either a larger refactor or some questionable workarounds.\n // See https://github.com/WordPress/gutenberg/pull/41612 for context.\n }, [activeMenu]);\n const context = {\n activeItem,\n activeMenu: menu,\n setActiveMenu,\n navigationTree\n };\n const classes = clsx('components-navigation', className);\n const animateClassName = getAnimateClassName({\n type: 'slide-in',\n origin: slideOrigin\n });\n return /*#__PURE__*/_jsx(NavigationUI, {\n className: classes,\n children: /*#__PURE__*/_jsx(\"div\", {\n className: animateClassName ? clsx({\n [animateClassName]: isMountedRef.current && slideOrigin\n }) : undefined,\n children: /*#__PURE__*/_jsx(NavigationContext.Provider, {\n value: context,\n children: children\n })\n }, menu)\n });\n}\nexport default Navigation;"], "mappings": ";AAGA,OAAO,UAAU;AAKjB,OAAO,gBAAgB;AACvB,SAAS,WAAW,QAAQ,gBAAgB;AAC5C,SAAS,aAAa;AAKtB,SAAS,2BAA2B;AACpC,SAAS,iBAAiB;AAC1B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,+BAA+B;AACxC,SAAS,OAAO,YAAY;AAC5B,IAAM,OAAO,MAAM;AAAC;AA4Cb,SAAS,WAAW;AAAA,EACzB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,iBAAiB;AACnB,GAAG;AACD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,UAAU;AAC3C,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS;AAC/C,QAAM,iBAAiB,wBAAwB;AAC/C,QAAM,qBAAqB,MAAM,IAAI,UAAU;AAC/C,aAAW,oDAAoD;AAAA,IAC7D,OAAO;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AACD,QAAM,gBAAgB,CAAC,QAAQ,gBAAgB,uBAAuB;AACpE,QAAI,CAAC,eAAe,QAAQ,MAAM,GAAG;AACnC;AAAA,IACF;AACA,mBAAe,aAAa;AAC5B,YAAQ,MAAM;AACd,mBAAe,MAAM;AAAA,EACvB;AAGA,QAAM,eAAe,OAAO,KAAK;AACjC,YAAU,MAAM;AACd,QAAI,CAAC,aAAa,SAAS;AACzB,mBAAa,UAAU;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,CAAC;AACL,YAAU,MAAM;AACd,QAAI,eAAe,MAAM;AACvB,oBAAc,UAAU;AAAA,IAC1B;AAAA,EAGF,GAAG,CAAC,UAAU,CAAC;AACf,QAAM,UAAU;AAAA,IACd;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU,KAAK,yBAAyB,SAAS;AACvD,QAAM,mBAAmB,oBAAoB;AAAA,IAC3C,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,CAAC;AACD,SAAoB,qBAAK,cAAc;AAAA,IACrC,WAAW;AAAA,IACX,UAAuB,qBAAK,OAAO;AAAA,MACjC,WAAW,mBAAmB,KAAK;AAAA,QACjC,CAAC,gBAAgB,GAAG,aAAa,WAAW;AAAA,MAC9C,CAAC,IAAI;AAAA,MACL,UAAuB,qBAAK,kBAAkB,UAAU;AAAA,QACtD,OAAO;AAAA,QACP;AAAA,MACF,CAAC;AAAA,IACH,GAAG,IAAI;AAAA,EACT,CAAC;AACH;AACA,IAAO,qBAAQ;", "names": [] }