{"version":3,"sources":["utility/context/Can.js","redux/actions/layout/index.js","@core/layouts/components/layout-wrapper/index.js","router/routes/index.js","utility/hooks/useSkin.js","@core/layouts/BlankLayout.js","@core/components/customizer/index.js","@core/layouts/components/footer/index.js","@core/components/avatar/index.js","assets/images/portrait/small/avatar-s-11.jpg","@core/layouts/components/navbar/UserDropdown.js","@core/layouts/components/navbar/NavbarUser.js","@core/layouts/components/navbar/index.js","navigation/vertical/index.js","@core/layouts/components/menu/vertical-menu/VerticalMenuHeader.js","@core/layouts/utils.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuLink.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuGroup.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuSectionHeader.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuItems.js","@core/layouts/components/menu/vertical-menu/index.js","utility/hooks/useRTL.js","utility/hooks/useNavbarType.js","utility/hooks/useFooterType.js","utility/hooks/useNavbarColor.js","@core/layouts/VerticalLayout.js","layouts/VerticalLayout.js","navigation/horizontal/index.js","@core/layouts/components/menu/horizontal-menu/HorizontalNavMenuLink.js","@core/layouts/components/menu/horizontal-menu/HorizontalNavMenuGroup.js","@core/layouts/components/menu/horizontal-menu/HorizontalNavMenuItems.js","@core/layouts/components/menu/horizontal-menu/index.js","@core/layouts/HorizontalLayout.js","layouts/HorizontalLayout.js","router/Router.js","utility/hooks/useLayout.js","utility/hooks/useRouterTransition.js","App.js"],"names":["AbilityContext","createContext","createContextualCan","Consumer","handleContentWidth","value","dispatch","type","handleMenuCollapsed","handleMenuHidden","LayoutWrapper","props","layout","children","appLayout","wrapperClass","transition","routeMeta","useDispatch","store","useSelector","state","navbarStore","navbar","contentWidth","Tag","Fragment","useEffect","menuCollapsed","menuHidden","className","classnames","query","length","Routes","path","component","lazy","useSkin","useState","item","window","localStorage","getItem","JSON","parse","themeConfig","skin","error","console","log","setSkin","element","document","body","classList","remove","add","dark","bordered","valueToStore","Function","setItem","stringify","BlankLayout","isMounted","setIsMounted","Customizer","isRtl","setIsRtl","setLayout","navbarType","setNavbarType","footerType","setFooterType","navbarColor","setNavbarColor","isHidden","setIsHidden","setContentWidth","setMenuCollapsed","setTransition","openCustomizer","setOpenCustomizer","handleToggle","e","preventDefault","transitionOptions","label","transitionValue","find","i","open","href","onClick","size","FormGroup","skinsArr","name","checked","map","radio","index","marginCondition","CustomInput","id","onChange","renderSkinsRadio","theme","selectThemeColors","classNamePrefix","defaultValue","options","isClearable","color","selected","border","navbarTypeArr","renderNavbarTypeRadio","footerTypeArr","renderFooterTypeRadio","Footer","Date","getFullYear","target","rel","Avatar","forwardRef","ref","imgClassName","initials","badgeUp","content","icon","badgeColor","badgeText","img","imgHeight","imgWidth","status","tag","contentStyles","rest","undefined","style","str","results","split","forEach","push","join","getInitials","Badge","pill","src","alt","height","width","defaultProps","UserDropdown","userData","setUserData","isUserLoggedIn","userAvatar","avatar","defaultAvatar","UncontrolledDropdown","DropdownToggle","role","DropdownMenu","right","DropdownItem","Link","to","handleLogout","NavbarUser","setMenuVisibility","ThemeToggler","NavItem","NavLink","ThemeNavbar","title","navLink","VerticalMenuHeader","setGroupOpen","menuHover","Toggler","app","appLogoImage","appName","isNavLinkActive","link","currentURL","routerProps","meta","isNavGroupActive","some","child","search","navigation","result","getAllParents","obj","match","res","recurse","current","key","VerticalNavMenuLink","setGroupActive","groupActive","activeItem","setActiveItem","groupOpen","toggleActiveGroup","parentItem","currentActiveItem","LinkTag","externalLink","location","useLocation","pathname","matchPath","exact","strict","arr","parents","searchParents","disabled","active","newTab","isActive","url","resetActiveGroup","badge","VerticalNavMenuGroup","allParents","activeArr","includes","splice","indexOf","openArr","filter","val","onCollapseClick","pop","toggleOpenGroup","Collapse","isOpen","VerticalNavMenuItems","items","VerticalNavMenuSectionHeader","header","VerticalMenuNavItems","Components","TagName","resolveNavItemComponent","Sidebar","menu","setMenuHover","shadowRef","useRef","expanded","onMouseEnter","onMouseLeave","wheelPropagation","onScrollY","container","scrollTop","contains","scrollMenu","useRTL","isRTL","getElementsByTagName","setAttribute","handleRTL","useNavbarType","useFooterType","footer","useNavbarColor","backgroundColor","VerticalLayout","menuVisibility","innerWidth","windowWidth","setWindowWidth","layoutStore","handleWindowWidth","addEventListener","footerClasses","static","sticky","hidden","bgColorCondition","floating","Navbar","expand","light","show","customizer","showUnder","bottom","Button","HorizontalNavMenuLink","setOpenDropdown","isChild","HorizontalNavMenuGroup","submenu","openDropdown","menuModifiers","setMaxHeight","enabled","fn","data","stylesObj","pageHeight","innerHeight","ddTop","instance","reference","getBoundingClientRect","top","popper","maxHeight","overflowY","ddRef","left","closest","styles","Dropdown","toggle","modifiers","HorizontalNavMenuItems","HorizontalMenu","HorizontalLayout","navbarScrolled","setNavbarScrolled","pageYOffset","navbarClasses","Router","lastLayout","setLastLayout","handleLayout","useLayout","routerTransition","useRouterTransition","DefaultLayout","useContext","Layouts","NotAuthorized","Error","basename","process","render","Object","keys","LayoutTag","LayoutRoutes","LayoutPaths","route","LayoutRoutesAndPaths","assign","fallback","FallbackSpinner","App"],"mappings":"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","file":"static/js/8.f6d255fc.chunk.js","sourcesContent":["// ** Imports createContext function\nimport { createContext } from 'react'\n\n// ** Imports createContextualCan function\nimport { createContextualCan } from '@casl/react'\n\n// ** Create Context\nexport const AbilityContext = createContext()\n\n// ** Init Can Context\nexport const Can = createContextualCan(AbilityContext.Consumer)\n","// ** Handles Layout Content Width (full / boxed)\nexport const handleContentWidth = value => dispatch => dispatch({ type: 'HANDLE_CONTENT_WIDTH', value })\n\n// ** Handles Menu Collapsed State (Bool)\nexport const handleMenuCollapsed = value => dispatch => dispatch({ type: 'HANDLE_MENU_COLLAPSED', value })\n\n// ** Handles Menu Hidden State (Bool)\nexport const handleMenuHidden = value => dispatch => dispatch({ type: 'HANDLE_MENU_HIDDEN', value })\n\n// ** Handles RTL (Bool)\nexport const handleRTL = value => dispatch => dispatch({ type: 'HANDLE_RTL', value })\n","// ** React Imports\nimport { Fragment, useEffect } from 'react'\n\n// ** Third Party Components\nimport classnames from 'classnames'\n\n// ** Store & Actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { handleContentWidth, handleMenuCollapsed, handleMenuHidden } from '@store/actions/layout'\n\n// ** Styles\nimport 'animate.css/animate.css'\n\nconst LayoutWrapper = props => {\n // ** Props\n const { layout, children, appLayout, wrapperClass, transition, routeMeta } = props\n\n // ** Store Vars\n const dispatch = useDispatch()\n const store = useSelector(state => state)\n const navbarStore = store.navbar\n const contentWidth = store.layout.contentWidth\n\n //** Vars\n const Tag = layout === 'HorizontalLayout' && !appLayout ? 'div' : Fragment\n\n // ** Clean Up Function\n const cleanUp = () => {\n if (routeMeta) {\n if (routeMeta.contentWidth) {\n dispatch(handleContentWidth('full'))\n }\n if (routeMeta.menuCollapsed) {\n dispatch(handleMenuCollapsed(!routeMeta.menuCollapsed))\n }\n if (routeMeta.menuHidden) {\n dispatch(handleMenuHidden(!routeMeta.menuHidden))\n }\n }\n }\n\n // ** ComponentDidMount\n useEffect(() => {\n if (routeMeta) {\n if (routeMeta.contentWidth) {\n dispatch(handleContentWidth(routeMeta.contentWidth))\n }\n if (routeMeta.menuCollapsed) {\n dispatch(handleMenuCollapsed(routeMeta.menuCollapsed))\n }\n if (routeMeta.menuHidden) {\n dispatch(handleMenuHidden(routeMeta.menuHidden))\n }\n }\n return () => cleanUp()\n }, [])\n\n return (\n \n
\n
\n \n \n {children}\n \n
\n \n )\n}\n\nexport default LayoutWrapper\n","import { lazy } from 'react'\n\n// ** Document title\nconst TemplateTitle = 'Wetu'\n\n// ** Default Route\nconst DefaultRoute = '/Login'\n\n// ** Merge Routes\nconst Routes = [\n {\n path: '/Login',\n component: lazy(() => import('../../views/pages/Login')),\n layout: 'BlankLayout'\n },\n {\n path: '/ForgotPassword',\n component: lazy(() => import('../../views/pages/ForgotPassword')),\n layout: 'BlankLayout'\n },\n {\n path: '/Verifying/:resetPasswordTokenId',\n component: lazy(() => import('../../views/pages/Verifying')),\n layout: 'BlankLayout'\n },\n {\n path: '/VerifyingError/:resetPasswordTokenId',\n component: lazy(() => import('../../views/pages/VerifyingError')),\n layout: 'BlankLayout'\n },\n {\n path: '/UpdatePassword/:resetPasswordTokenId',\n component: lazy(() => import('../../views/pages/UpdatePassword')),\n layout: 'BlankLayout'\n },\n {\n path: '/AccountRecovery',\n component: lazy(() => import('../../views/pages/AccountRecovery')),\n layout: 'BlankLayout'\n },\n {\n path: '/ExpiredResetPasswordToken',\n component: lazy(() => import('../../views/pages/ExpiredResetPasswordToken')),\n layout: 'BlankLayout'\n } \n]\n\nexport { DefaultRoute, TemplateTitle, Routes }\n","//** React Imports\nimport { useState, useEffect } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useSkin = () => {\n // ** State\n const [skin, setSkin] = useState(() => {\n try {\n // ** Get from local storage by key\n const item = window.localStorage.getItem('skin')\n // ** Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : themeConfig.layout.skin\n } catch (error) {\n // ** If error also return initialValue\n console.log(error)\n return themeConfig.layout.skin\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(skin) : value\n // ** Set state\n setSkin(valueToStore)\n // ** Save to local storage\n window.localStorage.setItem('skin', JSON.stringify(valueToStore))\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n useEffect(() => {\n // ** Get Body Tag\n const element = window.document.body\n\n // ** Define classnames for skins\n const classNames = {\n dark: 'dark-layout',\n bordered: 'bordered-layout',\n 'semi-dark': 'semi-dark-layout'\n }\n\n // ** Remove all classes from Body on mount\n element.classList.remove(...element.classList)\n\n // ** If skin is not light add skin class\n if (skin !== 'light') {\n element.classList.add(classNames[skin])\n }\n }, [skin])\n\n return [skin, setValue]\n}\n","// ** React Imports\nimport { useEffect, useState } from 'react'\n\n// ** Custom Hooks\nimport { useSkin } from '@hooks/useSkin'\n\nconst BlankLayout = ({ children, ...rest }) => {\n // ** Hooks\n const [skin, setSkin] = useSkin()\n\n // ** States\n const [isMounted, setIsMounted] = useState(false)\n\n //** ComponentDidMount\n useEffect(() => {\n setIsMounted(true)\n return () => setIsMounted(false)\n }, [])\n\n if (!isMounted) {\n return null\n }\n\n return (\n
\n
\n
\n
{children}
\n
\n
\n
\n )\n}\n\nexport default BlankLayout\n","// ** React Imports\nimport { useState } from 'react'\n\n// ** Third Party Components\nimport Select from 'react-select'\nimport classnames from 'classnames'\nimport { Settings, X } from 'react-feather'\nimport { CustomInput, FormGroup } from 'reactstrap'\nimport PerfectScrollbar from 'react-perfect-scrollbar'\nimport { selectThemeColors } from '@utils'\n\n// ** Styles\nimport '@styles/react/libs/react-select/_react-select.scss'\n\nconst Customizer = props => {\n // ** Props\n const {\n skin,\n setSkin,\n isRtl,\n setIsRtl,\n layout,\n setLayout,\n navbarType,\n setNavbarType,\n footerType,\n setFooterType,\n navbarColor,\n setNavbarColor,\n isHidden,\n setIsHidden,\n contentWidth,\n setContentWidth,\n menuCollapsed,\n setMenuCollapsed,\n transition,\n setTransition\n } = props\n\n // ** State\n const [openCustomizer, setOpenCustomizer] = useState(false)\n\n // ** Toggles Customizer\n const handleToggle = e => {\n e.preventDefault()\n setOpenCustomizer(!openCustomizer)\n }\n\n // ** Render Layout Skin Options\n const renderSkinsRadio = () => {\n const skinsArr = [\n {\n name: 'light',\n label: 'Light',\n checked: skin === 'light'\n },\n {\n name: 'bordered',\n label: 'Bordered',\n checked: skin === 'bordered'\n },\n {\n name: 'dark',\n label: 'Dark',\n checked: skin === 'dark'\n },\n {\n name: 'semi-dark',\n label: 'Semi Dark',\n checked: skin === 'semi-dark'\n }\n ]\n\n return skinsArr.map((radio, index) => {\n const marginCondition = index !== skinsArr.length - 1\n\n if (layout === 'HorizontalLayout' && radio.name === 'semi-dark') {\n return null\n }\n\n return (\n setSkin(radio.name)}\n className={classnames({ 'mr-1': marginCondition })}\n />\n )\n })\n }\n\n // ** Render Navbar Colors Options\n const renderNavbarColors = () => {\n const colorsArr = ['white', 'primary', 'secondary', 'success', 'danger', 'info', 'warning', 'dark']\n\n return colorsArr.map(color => (\n setNavbarColor(color)}\n >\n ))\n }\n\n // ** Render Navbar Type Options\n const renderNavbarTypeRadio = () => {\n const navbarTypeArr = [\n {\n name: 'floating',\n label: 'Floating',\n checked: navbarType === 'floating'\n },\n {\n name: 'sticky',\n label: 'Sticky',\n checked: navbarType === 'sticky'\n },\n {\n name: 'static',\n label: 'Static',\n checked: navbarType === 'static'\n },\n {\n name: 'hidden',\n label: 'Hidden',\n checked: navbarType === 'hidden'\n }\n ]\n\n return navbarTypeArr.map((radio, index) => {\n const marginCondition = index !== navbarTypeArr.length - 1\n\n if (layout === 'HorizontalLayout' && radio.name === 'hidden') {\n return null\n }\n\n return (\n setNavbarType(radio.name)}\n className={classnames({ 'mr-1': marginCondition })}\n />\n )\n })\n }\n\n // ** Render Footer Type Options\n const renderFooterTypeRadio = () => {\n const footerTypeArr = [\n {\n name: 'sticky',\n label: 'Sticky',\n checked: footerType === 'sticky'\n },\n {\n name: 'static',\n label: 'Static',\n checked: footerType === 'static'\n },\n {\n name: 'hidden',\n label: 'Hidden',\n checked: footerType === 'hidden'\n }\n ]\n\n return footerTypeArr.map((radio, index) => {\n const marginCondition = index !== footerTypeArr.length - 1\n\n return (\n setFooterType(radio.name)}\n className={classnames({ 'mr-1': marginCondition })}\n />\n )\n })\n }\n\n // ** Router Transition Options\n const transitionOptions = [\n { value: 'fadeIn', label: 'Fade' },\n { value: 'fadeInLeft', label: 'Fade In Left' },\n { value: 'zoomIn', label: 'Zoom In' },\n { value: 'none', label: 'None' }\n ]\n\n // ** Get Current Transition\n const transitionValue = transitionOptions.find(i => i.value === transition)\n\n return (\n \n \n \n \n \n
\n

Theme Customizer

\n

Customize & Preview in Real Time

\n \n \n \n
\n\n
\n\n
\n \n

Skin

\n
{renderSkinsRadio()}
\n
\n\n \n

Content Width

\n
\n setContentWidth('full')}\n />\n setContentWidth('boxed')}\n />\n
\n
\n\n \n
\n

RTL

\n setIsRtl(!isRtl)} />\n
\n
\n\n \n
\n

Router Transition

\n setTransition(value)}\n />\n
\n
\n
\n\n
\n\n
\n

Menu Layout

\n \n
\n setLayout('vertical')}\n className='mr-1'\n />\n setLayout('horizontal')}\n />\n
\n
\n {layout !== 'HorizontalLayout' ? (\n \n
\n

Menu Collapsed

\n setMenuCollapsed(!menuCollapsed)}\n />\n
\n
\n ) : null}\n\n \n
\n

Menu Hidden

\n setIsHidden(!isHidden)}\n />\n
\n
\n
\n\n
\n\n
\n {layout !== 'HorizontalLayout' ? (\n \n

Navbar Color

\n
    {renderNavbarColors()}
\n
\n ) : null}\n\n \n

{layout === 'HorizontalLayout' ? 'Menu' : 'Navbar'} Type

\n
{renderNavbarTypeRadio()}
\n
\n
\n\n
\n\n
\n \n

Footer Type

\n
{renderFooterTypeRadio()}
\n
\n
\n
\n \n )\n}\n\nexport default Customizer\n","// ** Icons Import\nimport { Heart } from 'react-feather'\n\nconst Footer = () => {\n return (\n

\n \n COPYRIGHT © {new Date().getFullYear()}{' '}\n \n Pixinvent\n \n , All rights Reserved\n \n \n Hand-crafted & Made with\n \n \n

\n )\n}\n\nexport default Footer\n","// ** React Imports\nimport { forwardRef } from 'react'\n\n// ** Third Party Components\nimport Proptypes from 'prop-types'\nimport { Badge } from 'reactstrap'\nimport classnames from 'classnames'\n\nconst Avatar = forwardRef((props, ref) => {\n // ** Props\n const {\n color,\n className,\n imgClassName,\n initials,\n size,\n badgeUp,\n content,\n icon,\n badgeColor,\n badgeText,\n img,\n imgHeight,\n imgWidth,\n status,\n tag: Tag,\n contentStyles,\n ...rest\n } = props\n\n // ** Function to extract initials from content\n const getInitials = str => {\n const results = []\n const wordArray = str.split(' ')\n wordArray.forEach(e => {\n results.push(e[0])\n })\n return results.join('')\n }\n\n return (\n \n {img === false || img === undefined ? (\n \n {initials ? getInitials(content) : content}\n\n {icon ? icon : null}\n {badgeUp ? (\n \n {badgeText ? badgeText : '0'}\n \n ) : null}\n \n ) : (\n \n )}\n {status ? (\n \n ) : null}\n \n )\n})\n\nexport default Avatar\n\n// ** PropTypes\nAvatar.propTypes = {\n imgClassName: Proptypes.string,\n className: Proptypes.string,\n src: Proptypes.string,\n tag: Proptypes.oneOfType([Proptypes.func, Proptypes.string]),\n badgeUp: Proptypes.bool,\n content: Proptypes.string,\n icon: Proptypes.node,\n contentStyles: Proptypes.object,\n badgeText: Proptypes.string,\n imgHeight: Proptypes.oneOfType([Proptypes.string, Proptypes.number]),\n imgWidth: Proptypes.oneOfType([Proptypes.string, Proptypes.number]),\n size: Proptypes.oneOf(['sm', 'lg', 'xl']),\n status: Proptypes.oneOf(['online', 'offline', 'away', 'busy']),\n badgeColor: Proptypes.oneOf([\n 'primary',\n 'secondary',\n 'success',\n 'danger',\n 'info',\n 'warning',\n 'dark',\n 'light-primary',\n 'light-secondary',\n 'light-success',\n 'light-danger',\n 'light-info',\n 'light-warning',\n 'light-dark'\n ]),\n color: Proptypes.oneOf([\n 'primary',\n 'secondary',\n 'success',\n 'danger',\n 'info',\n 'warning',\n 'dark',\n 'light-primary',\n 'light-secondary',\n 'light-success',\n 'light-danger',\n 'light-info',\n 'light-warning',\n 'light-dark'\n ]),\n initials(props) {\n if (props['initials'] && props['content'] === undefined) {\n return new Error('content prop is required with initials prop.')\n }\n if (props['initials'] && typeof props['content'] !== 'string') {\n return new Error('content prop must be a string.')\n }\n if (typeof props['initials'] !== 'boolean' && props['initials'] !== undefined) {\n return new Error('initials must be a boolean!')\n }\n }\n}\n\n// ** Default Props\nAvatar.defaultProps = {\n tag: 'div'\n}\n","export default __webpack_public_path__ + \"static/media/avatar-s-11.1d46cc62.jpg\";","// ** React Imports\nimport { useEffect, useState } from 'react'\nimport { Link } from 'react-router-dom'\n\n// ** Custom Components\nimport Avatar from '@components/avatar'\n\n// ** Utils\nimport { isUserLoggedIn } from '@utils'\n\n// ** Store & Actions\nimport { useDispatch } from 'react-redux'\nimport { handleLogout } from '@store/actions/auth'\n\n// ** Third Party Components\nimport { UncontrolledDropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap'\nimport { User, Mail, CheckSquare, MessageSquare, Settings, CreditCard, HelpCircle, Power } from 'react-feather'\n\n// ** Default Avatar Image\nimport defaultAvatar from '@src/assets/images/portrait/small/avatar-s-11.jpg'\n\nconst UserDropdown = () => {\n // ** Store Vars\n const dispatch = useDispatch()\n\n // ** State\n const [userData, setUserData] = useState(null)\n\n //** ComponentDidMount\n useEffect(() => {\n if (isUserLoggedIn() !== null) {\n setUserData(JSON.parse(localStorage.getItem('userData')))\n }\n }, [])\n\n //** Vars\n const userAvatar = (userData && userData.avatar) || defaultAvatar\n\n return (\n \n e.preventDefault()}>\n
\n {(userData && userData['username']) || 'John Doe'}\n {(userData && userData.role) || 'Admin'}\n
\n \n
\n \n e.preventDefault()}>\n \n Profile\n \n e.preventDefault()}>\n \n Inbox\n \n e.preventDefault()}>\n \n Tasks\n \n e.preventDefault()}>\n \n Chats\n \n dispatch(handleLogout())}>\n \n Logout\n \n \n
\n )\n}\n\nexport default UserDropdown\n","// ** Dropdowns Imports\nimport { Fragment } from 'react'\n\nimport UserDropdown from './UserDropdown'\n\n// ** Third Party Components\nimport { Sun, Moon, Menu } from 'react-feather'\nimport { NavItem, NavLink } from 'reactstrap'\n\nconst NavbarUser = props => {\n // ** Props\n const { skin, setSkin, setMenuVisibility } = props\n\n // ** Function to toggle Theme (Light/Dark)\n const ThemeToggler = () => {\n if (skin === 'dark') {\n return setSkin('light')} />\n } else {\n return setSkin('dark')} />\n }\n }\n\n return (\n \n
    \n \n setMenuVisibility(true)}>\n \n \n \n
\n
\n \n \n \n \n \n
\n
    \n \n
\n
\n )\n}\nexport default NavbarUser\n","// ** React Imports\nimport { Fragment } from 'react'\n\n// ** Custom Components\nimport NavbarUser from './NavbarUser'\n\nconst ThemeNavbar = props => {\n // ** Props\n const { skin, setSkin, setMenuVisibility } = props\n\n return (\n \n \n \n )\n}\n\nexport default ThemeNavbar\n","import { Mail, Home } from 'react-feather'\n\nexport default [\n {\n id: 'home',\n title: 'Home',\n icon: ,\n navLink: '/home'\n },\n {\n id: 'secondPage',\n title: 'Second Page',\n icon: ,\n navLink: '/second-page'\n }\n]\n","// ** React Imports\nimport { useEffect } from 'react'\nimport { NavLink } from 'react-router-dom'\n\n// ** Third Party Components\nimport { Disc, X, Circle } from 'react-feather'\n\n// ** Config\nimport themeConfig from '@configs/themeConfig'\n\nconst VerticalMenuHeader = props => {\n // ** Props\n const { menuCollapsed, setMenuCollapsed, setMenuVisibility, setGroupOpen, menuHover } = props\n\n // ** Reset open group\n useEffect(() => {\n if (!menuHover && menuCollapsed) setGroupOpen([])\n }, [menuHover, menuCollapsed])\n\n // ** Menu toggler component\n const Toggler = () => {\n if (!menuCollapsed) {\n return (\n setMenuCollapsed(true)}\n />\n )\n } else {\n return (\n setMenuCollapsed(false)}\n />\n )\n }\n }\n\n return (\n
\n
    \n
  • \n \n \n logo\n \n

    {themeConfig.app.appName}

    \n
    \n
  • \n
  • \n
    \n \n setMenuVisibility(false)} className='toggle-icon icon-x d-block d-xl-none' size={20} />\n
    \n
  • \n
\n
\n )\n}\n\nexport default VerticalMenuHeader\n","// ** React Imports\nimport { useContext } from 'react'\nimport { AbilityContext } from '@src/utility/context/Can'\n\n/**\n * Return which component to render based on it's data/context\n * @param {Object} item nav menu item\n */\nexport const resolveVerticalNavMenuItemComponent = item => {\n if (item.header) return 'VerticalNavMenuSectionHeader'\n if (item.children) return 'VerticalNavMenuGroup'\n return 'VerticalNavMenuLink'\n}\n\n/**\n * Return which component to render based on it's data/context\n * @param {Object} item nav menu item\n */\nexport const resolveHorizontalNavMenuItemComponent = item => {\n if (item.children) return 'HorizontalNavMenuGroup'\n return 'HorizontalNavMenuLink'\n}\n\n/**\n * Check if nav-link is active\n * @param {Object} link nav-link object\n */\n// export const isNavLinkActive = (link, currentURL, match) => {\n// // return currentURL === link || (URLParams && Object.keys(URLParams).length && currentURLFilter === item.navLink)\n// const getFirstObjProp = obj => obj[Object.keys(obj)[0]]\n// return (\n// currentURL === link ||\n// (match !== null && match !== undefined && match.url === `${link}/${getFirstObjProp(match.params)}`)\n// )\n// }\n\nexport const isNavLinkActive = (link, currentURL, routerProps) => {\n return (\n currentURL === link ||\n (routerProps && routerProps.meta && routerProps.meta.navLink && routerProps.meta.navLink === link)\n )\n // return currentURL === link\n}\n\n/**\n * Check if nav group is\n * @param {Array} children Group children\n */\n// export const isNavGroupActive = (children, currentURL, match) => {\n// return children.some(child => {\n// // If child have children => It's group => Go deeper(recursive)\n// if (child.children) {\n// return isNavGroupActive(child.children, currentURL, match)\n// }\n// // else it's link => Check for matched Route\n// return isNavLinkActive(child.navLink, currentURL, match)\n// })\n// }\nexport const isNavGroupActive = (children, currentURL, routerProps) => {\n return children.some(child => {\n // If child have children => It's group => Go deeper(recursive)\n if (child.children) {\n return isNavGroupActive(child.children, currentURL, routerProps)\n }\n // else it's link => Check for matched Route\n return isNavLinkActive(child.navLink, currentURL, routerProps)\n })\n}\n\n/**\n * Search for parent object\n * @param {Array} navigation Group children\n * @param {string} currentURL current URL\n */\n// export const search = (navigation, currentURL, match) => {\n// let result\n// navigation.some(child => {\n// let children\n// // If child have children => It's group => Go deeper(recursive)\n// if (child.children && (children = search(child.children, currentURL, match))) {\n// return (result = {\n// id: child.id,\n// children\n// })\n// }\n\n// // else it's link => Check for matched Route\n// if (isNavLinkActive(child.navLink, currentURL, match)) {\n// return (result = {\n// id: child.id\n// })\n// }\n// })\n// return result\n// }\n\nexport const search = (navigation, currentURL, routerProps) => {\n let result\n navigation.some(child => {\n let children\n // If child have children => It's group => Go deeper(recursive)\n if (child.children && (children = search(child.children, currentURL, routerProps))) {\n return (result = {\n id: child.id,\n children\n })\n }\n\n // else it's link => Check for matched Route\n if (isNavLinkActive(child.navLink, currentURL, routerProps)) {\n return (result = {\n id: child.id\n })\n }\n })\n return result\n}\n\n/**\n * Loop through nested object\n * @param {object} obj nested object\n */\nexport const getAllParents = (obj, match) => {\n const res = []\n const recurse = (obj, current) => {\n for (const key in obj) {\n const value = obj[key]\n if (value !== undefined) {\n if (value && typeof value === 'object') {\n recurse(value, key)\n } else {\n if (key === match) {\n res.push(value)\n }\n }\n }\n }\n }\n recurse(obj)\n return res\n}\n\nexport const canViewMenuGroup = item => {\n const ability = useContext(AbilityContext)\n // ! This same logic is used in canViewHorizontalNavMenuGroup and canViewHorizontalNavMenuHeaderGroup. So make sure to update logic in them as well\n const hasAnyVisibleChild = item.children && item.children.some(i => ability.can(i.action, i.resource))\n\n // ** If resource and action is defined in item => Return based on children visibility (Hide group if no child is visible)\n // ** Else check for ability using provided resource and action along with checking if has any visible child\n if (!(item.action && item.resource)) {\n return hasAnyVisibleChild\n }\n return ability.can(item.action, item.resource) && hasAnyVisibleChild\n}\n\nexport const canViewMenuItem = item => {\n const ability = useContext(AbilityContext)\n return ability.can(item.action, item.resource)\n}\n","// ** React Imports\nimport { useEffect } from 'react'\nimport { NavLink, useLocation, matchPath, useParams } from 'react-router-dom'\n\n// ** Third Party Components\nimport { Badge } from 'reactstrap'\nimport classnames from 'classnames'\n\n// ** Vertical Menu Array Of Items\nimport navigation from '@src/navigation/vertical'\n\n// ** Utils\nimport { isNavLinkActive, search, getAllParents } from '@layouts/utils'\n\nconst VerticalNavMenuLink = ({\n item,\n groupActive,\n setGroupActive,\n activeItem,\n setActiveItem,\n groupOpen,\n setGroupOpen,\n toggleActiveGroup,\n parentItem,\n routerProps,\n currentActiveItem\n}) => {\n // ** Conditional Link Tag, if item has newTab or externalLink props use tag else use NavLink\n const LinkTag = item.externalLink ? 'a' : NavLink\n\n // ** URL Vars\n const location = useLocation()\n const currentURL = location.pathname\n\n // ** To match path\n const match = matchPath(currentURL, {\n path: `${item.navLink}/:param`,\n exact: true,\n strict: false\n })\n\n // ** Search for current item parents\n const searchParents = (navigation, currentURL) => {\n const parents = search(navigation, currentURL, routerProps) // Search for parent object\n const allParents = getAllParents(parents, 'id') // Parents Object to Parents Array\n return allParents\n }\n\n // ** URL Vars\n const resetActiveGroup = navLink => {\n const parents = search(navigation, navLink, match)\n toggleActiveGroup(item.id, parents)\n }\n\n // ** Reset Active & Open Group Arrays\n const resetActiveAndOpenGroups = () => {\n setGroupActive([])\n setGroupOpen([])\n }\n\n // ** Checks url & updates active item\n useEffect(() => {\n if (currentActiveItem !== null) {\n setActiveItem(currentActiveItem)\n const arr = searchParents(navigation, currentURL)\n setGroupActive([...arr])\n }\n }, [location])\n\n return (\n \n {\n if (!match) {\n return false\n }\n\n if (match.url && match.url !== '' && match.url === item.navLink) {\n currentActiveItem = item.navLink\n }\n }\n })}\n /*eslint-enable */\n onClick={e => {\n if (!item.navLink.length) {\n e.preventDefault()\n }\n parentItem ? resetActiveGroup(item.navLink) : resetActiveAndOpenGroups()\n }}\n >\n {item.icon}\n {item.title}\n\n {item.badge && item.badgeText ? (\n \n {item.badgeText}\n \n ) : null}\n \n \n )\n}\n\nexport default VerticalNavMenuLink\n","// ** React Imports\nimport { Link, useLocation } from 'react-router-dom'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { Collapse, Badge } from 'reactstrap'\n\n// ** Vertical Menu Items Component\nimport VerticalNavMenuItems from './VerticalNavMenuItems'\n\n// ** Utils\nimport { isNavGroupActive, getAllParents } from '@layouts/utils'\n\nconst VerticalNavMenuGroup = ({\n item,\n groupActive,\n setGroupActive,\n activeItem,\n setActiveItem,\n groupOpen,\n setGroupOpen,\n parentItem,\n menuCollapsed,\n menuHover,\n routerProps,\n currentActiveItem\n}) => {\n // ** Current Val\n const currentURL = useLocation().pathname\n\n // ** Toggles Open Group\n const toggleOpenGroup = (item, parentItem) => {\n let openArr = groupOpen\n let allParents\n\n if (parentItem) {\n allParents = getAllParents(parentItem, 'id')\n allParents.pop()\n }\n\n // ** If user clicked on menu group inside already opened group i.g. when user click on blog group inside pages group\n if (groupOpen && allParents && groupOpen[0] === allParents[0]) {\n groupOpen.includes(item) ? openArr.splice(openArr.indexOf(item), 1) : openArr.push(item)\n } else {\n openArr = []\n if (!groupOpen.includes(item)) {\n openArr.push(item)\n }\n }\n\n // ** Set Open Group\n setGroupOpen([...openArr])\n }\n\n // ** Toggle Active Group\n const toggleActiveGroup = (item, parentItem) => {\n let activeArr = groupActive\n let allParents\n\n if (parentItem) {\n allParents = getAllParents(parentItem, 'id')\n activeArr = allParents\n } else {\n activeArr.includes(item) ? activeArr.splice(activeArr.indexOf(item), 1) : activeArr.push(item)\n }\n\n // ** Set open group removing any activegroup item present in opengroup state\n const openArr = groupOpen.filter(val => !activeArr.includes(val))\n setGroupOpen([...openArr])\n\n // ** Set Active Group\n setGroupActive([...activeArr])\n }\n\n // ** On Group Item Click\n const onCollapseClick = (e, item) => {\n if ((groupActive && groupActive.includes(item.id)) || isNavGroupActive(item.children, currentURL, routerProps)) {\n toggleActiveGroup(item.id)\n } else {\n toggleOpenGroup(item.id, parentItem)\n }\n\n e.preventDefault()\n }\n\n // ** Returns condition to add open class\n const openClassCondition = id => {\n if ((menuCollapsed && menuHover) || menuCollapsed === false) {\n if (groupActive.includes(id) || groupOpen.includes(item.id)) {\n return true\n }\n } else if (groupActive.includes(id) && menuCollapsed && menuHover === false) {\n return false\n } else {\n return null\n }\n }\n\n return (\n \n onCollapseClick(e, item)}>\n {item.icon}\n {item.title}\n\n {item.badge && item.badgeText ? (\n \n {item.badgeText}\n \n ) : null}\n \n\n {/* Render Child Recursively Through VerticalNavMenuItems Component */}\n
    \n \n \n \n
\n \n )\n}\n\nexport default VerticalNavMenuGroup\n","// ** Third Party Components\nimport { MoreHorizontal } from 'react-feather'\n\nconst VerticalNavMenuSectionHeader = ({ item, index }) => {\n return (\n
  • \n {item.header}\n \n
  • \n )\n}\n\nexport default VerticalNavMenuSectionHeader\n","// ** Vertical Menu Components\nimport VerticalNavMenuLink from './VerticalNavMenuLink'\nimport VerticalNavMenuGroup from './VerticalNavMenuGroup'\nimport VerticalNavMenuSectionHeader from './VerticalNavMenuSectionHeader'\n\n// ** Utils\nimport { resolveVerticalNavMenuItemComponent as resolveNavItemComponent } from '@layouts/utils'\n\nconst VerticalMenuNavItems = props => {\n // ** Components Object\n const Components = {\n VerticalNavMenuSectionHeader,\n VerticalNavMenuGroup,\n VerticalNavMenuLink\n }\n\n // ** Render Nav Menu Items\n const RenderNavItems = props.items.map((item, index) => {\n const TagName = Components[resolveNavItemComponent(item)]\n\n return \n })\n\n return RenderNavItems\n}\n\nexport default VerticalMenuNavItems\n","// ** React Imports\nimport { Fragment, useState, useRef } from 'react'\n\n// ** Vertical Menu Items Array\nimport navigation from '@src/navigation/vertical'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport PerfectScrollbar from 'react-perfect-scrollbar'\n\n// ** Vertical Menu Components\nimport VerticalMenuHeader from './VerticalMenuHeader'\nimport VerticalNavMenuItems from './VerticalNavMenuItems'\n\nconst Sidebar = props => {\n // ** Props\n const { menuCollapsed, routerProps, menu, currentActiveItem, skin } = props\n\n // ** States\n const [groupOpen, setGroupOpen] = useState([])\n const [groupActive, setGroupActive] = useState([])\n const [activeItem, setActiveItem] = useState(null)\n\n // ** Menu Hover State\n const [menuHover, setMenuHover] = useState(false)\n\n // ** Ref\n const shadowRef = useRef(null)\n\n // ** Function to handle Mouse Enter\n const onMouseEnter = () => {\n if (menuCollapsed) {\n setMenuHover(true)\n }\n }\n\n // ** Scroll Menu\n const scrollMenu = container => {\n if (shadowRef && container.scrollTop > 0) {\n if (!shadowRef.current.classList.contains('d-block')) {\n shadowRef.current.classList.add('d-block')\n }\n } else {\n if (shadowRef.current.classList.contains('d-block')) {\n shadowRef.current.classList.remove('d-block')\n }\n }\n }\n\n return (\n \n setMenuHover(false)}\n >\n {menu ? (\n menu(props)\n ) : (\n \n {/* Vertical Menu Header */}\n \n {/* Vertical Menu Header Shadow */}\n
    \n {/* Perfect Scrollbar */}\n scrollMenu(container)}\n >\n
      \n \n
    \n \n
    \n )}\n \n
    \n )\n}\n\nexport default Sidebar\n","//** React Imports\nimport { useEffect } from 'react'\n\n// ** Store & Actions\nimport { handleRTL } from '@store/actions/layout'\nimport { useDispatch, useSelector } from 'react-redux'\n\nexport const useRTL = () => {\n // ** Store Vars\n const dispatch = useDispatch()\n const isRtl = useSelector(state => state.layout.isRTL)\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(isRtl) : value\n dispatch(handleRTL(valueToStore))\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n useEffect(() => {\n // ** Get HTML Tag\n const element = document.getElementsByTagName('html')[0]\n\n // ** If isRTL then add attr dir='rtl' with HTML else attr dir='ltr'\n if (isRtl) {\n element.setAttribute('dir', 'rtl')\n } else {\n element.setAttribute('dir', 'ltr')\n }\n }, [isRtl])\n\n return [isRtl, setValue]\n}\n","//** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useNavbarType = () => {\n // ** State\n const [navbarType, setNavbarType] = useState(() => {\n try {\n return themeConfig.layout.navbar.type\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.navbar.type\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(navbarType) : value\n\n // ** Set state\n setNavbarType(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [navbarType, setValue]\n}\n","// ** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useFooterType = () => {\n // ** State\n const [footerType, setFooterType] = useState(() => {\n try {\n return themeConfig.layout.footer.type\n } catch (error) {\n // ** If error also initialValue\n console.log(error)\n return themeConfig.layout.footer.type\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(footerType) : value\n\n // ** Set state\n setFooterType(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [footerType, setValue]\n}\n","//** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useNavbarColor = () => {\n // ** State\n const [navbarColor, setNavbarColor] = useState(() => {\n try {\n return themeConfig.layout.navbar.backgroundColor\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.navbar.backgroundColor\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(navbarColor) : value\n\n // ** Set state\n setNavbarColor(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [navbarColor, setValue]\n}\n","// ** React Imports\nimport { useState, useEffect } from 'react'\nimport { useLocation } from 'react-router-dom'\n\n// ** Store & Actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { handleMenuCollapsed, handleContentWidth, handleMenuHidden } from '@store/actions/layout'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { ArrowUp } from 'react-feather'\nimport ScrollToTop from 'react-scroll-up'\nimport { Navbar, Button } from 'reactstrap'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\n// ** Custom Components\nimport Customizer from '@components/customizer'\nimport FooterComponent from './components/footer'\nimport NavbarComponent from './components/navbar'\nimport SidebarComponent from './components/menu/vertical-menu'\n\n// ** Custom Hooks\nimport { useRTL } from '@hooks/useRTL'\nimport { useSkin } from '@hooks/useSkin'\nimport { useNavbarType } from '@hooks/useNavbarType'\nimport { useFooterType } from '@hooks/useFooterType'\nimport { useNavbarColor } from '@hooks/useNavbarColor'\n\n// ** Styles\nimport '@styles/base/core/menu/menu-types/vertical-menu.scss'\nimport '@styles/base/core/menu/menu-types/vertical-overlay-menu.scss'\n\nconst VerticalLayout = props => {\n // ** Props\n const { children, navbar, footer, menu, routerProps, currentActiveItem } = props\n\n // ** Hooks\n const [skin, setSkin] = useSkin()\n const [isRtl, setIsRtl] = useRTL()\n const [navbarType, setNavbarType] = useNavbarType()\n const [footerType, setFooterType] = useFooterType()\n const [navbarColor, setNavbarColor] = useNavbarColor()\n\n // ** States\n const [isMounted, setIsMounted] = useState(false)\n const [menuVisibility, setMenuVisibility] = useState(false)\n const [windowWidth, setWindowWidth] = useState(window.innerWidth)\n\n // ** Store Vars\n const dispatch = useDispatch()\n const layoutStore = useSelector(state => state.layout)\n\n // ** Update Window Width\n const handleWindowWidth = () => {\n setWindowWidth(window.innerWidth)\n }\n\n // ** Vars\n const location = useLocation()\n const contentWidth = layoutStore.contentWidth\n const menuCollapsed = layoutStore.menuCollapsed\n const isHidden = layoutStore.menuHidden\n\n // ** Toggles Menu Collapsed\n const setMenuCollapsed = val => dispatch(handleMenuCollapsed(val))\n\n // ** Handles Content Width\n const setContentWidth = val => dispatch(handleContentWidth(val))\n\n // ** Handles Content Width\n const setIsHidden = val => dispatch(handleMenuHidden(val))\n\n //** This function will detect the Route Change and will hide the menu on menu item click\n useEffect(() => {\n if (menuVisibility && windowWidth < 1200) {\n setMenuVisibility(false)\n }\n }, [location])\n\n //** Sets Window Size & Layout Props\n useEffect(() => {\n if (window !== undefined) {\n window.addEventListener('resize', handleWindowWidth)\n }\n }, [windowWidth])\n\n //** ComponentDidMount\n useEffect(() => {\n setIsMounted(true)\n return () => setIsMounted(false)\n }, [])\n\n // ** Vars\n const footerClasses = {\n static: 'footer-static',\n sticky: 'footer-fixed',\n hidden: 'footer-hidden'\n }\n\n const navbarWrapperClasses = {\n floating: 'navbar-floating',\n sticky: 'navbar-sticky',\n static: 'navbar-static',\n hidden: 'navbar-hidden'\n }\n\n const navbarClasses = {\n floating: 'floating-nav',\n sticky: 'fixed-top',\n static: 'navbar-static-top',\n hidden: 'd-none'\n }\n\n const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white'\n\n if (!isMounted) {\n return null\n }\n return (\n = 1200,\n 'menu-collapsed': menuCollapsed && windowWidth >= 1200,\n 'menu-expanded': !menuCollapsed && windowWidth > 1200,\n\n // Overlay Menu\n 'vertical-overlay-menu': windowWidth < 1200,\n 'menu-hide': !menuVisibility && windowWidth < 1200,\n 'menu-open': menuVisibility && windowWidth < 1200\n }\n )}\n {...(isHidden ? { 'data-col': '1-column' } : {})}\n >\n {!isHidden ? (\n \n ) : null}\n\n \n
    \n {navbar ? (\n navbar({ setMenuVisibility, skin, setSkin })\n ) : (\n \n )}\n
    \n \n {children}\n\n {/* Vertical Nav Menu Overlay */}\n setMenuVisibility(false)}\n >\n {/* Vertical Nav Menu Overlay */}\n\n {themeConfig.layout.customizer === true ? (\n \n ) : null}\n \n {footer ? (\n footer({ footerType, footerClasses })\n ) : (\n \n )}\n \n\n {themeConfig.layout.scrollTop === true ? (\n
    \n \n \n \n
    \n ) : null}\n \n )\n}\n\nexport default VerticalLayout\n","// !Do not remove the Layout import\nimport Layout from '@layouts/VerticalLayout'\n\n// ** Components\n// import CustomMenu from './components/Menu'\n// import CustomNavbar from './components/Navbar'\n// import CustomFooter from './components/Footer'\n\nconst VerticalLayout = props => (\n }\n // navbar={props => }\n // footer={props => }\n {...props}\n >\n {props.children}\n \n)\n\nexport default VerticalLayout\n","import { Mail, Home } from 'react-feather'\n\nexport default [\n {\n id: 'home',\n title: 'Home',\n icon: ,\n navLink: '/home'\n },\n {\n id: 'secondPage',\n title: 'Second Page',\n icon: ,\n navLink: '/second-page'\n }\n]\n","// ** React Imports\nimport { useEffect } from 'react'\nimport { NavLink, useLocation } from 'react-router-dom'\n\n// ** Horizontal menu items array\nimport navigation from '@src/navigation/horizontal'\n\n// ** Third Party Components\nimport classnames from 'classnames'\n\n// ** Utils\nimport { isNavLinkActive, search, getAllParents } from '@layouts/utils'\n\nconst HorizontalNavMenuLink = ({\n item,\n setOpenDropdown,\n setGroupActive,\n activeItem,\n setActiveItem,\n routerProps,\n currentActiveItem,\n isChild\n}) => {\n // ** Conditional Link Tag, if item has newTab or externalLink props use
    tag else use NavLink\n const LinkTag = item.externalLink ? 'a' : NavLink\n\n // ** URL Vars\n const location = useLocation()\n const currentURL = location.pathname\n\n const navLinkActive = isNavLinkActive(item.navLink, currentURL, routerProps)\n\n // ** Get parents of current items\n const searchParents = (navigation, currentURL) => {\n const parents = search(navigation, currentURL, routerProps) // Search for parent object\n const allParents = getAllParents(parents, 'id') // Parents Object to Parents Array\n allParents.pop()\n return allParents\n }\n\n // ** Remove all items from OpenDropdown array\n const resetOpenDropdowns = () => setOpenDropdown([])\n\n // ** On mount update active group array\n useEffect(() => {\n if (currentActiveItem !== null) {\n setActiveItem(currentActiveItem)\n const arr = searchParents(navigation, currentURL)\n setGroupActive([...arr])\n }\n }, [location])\n\n return (\n \n {\n if (!match) {\n return false\n }\n\n if (match.url && match.url !== '' && match.url === item.navLink) {\n currentActiveItem = item.navLink\n }\n }\n })}\n /*eslint-enable */\n >\n {item.icon}\n {item.title}\n \n \n )\n}\n\nexport default HorizontalNavMenuLink\n","// ** React Imports\nimport { Link, useLocation } from 'react-router-dom'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { Dropdown, DropdownMenu, DropdownToggle } from 'reactstrap'\n\n// ** Utils\nimport { isNavGroupActive } from '@layouts/utils'\n\n// ** Horizontal Menu Items Component\nimport HorizontalNavMenuItems from './HorizontalNavMenuItems'\n\nconst HorizontalNavMenuGroup = props => {\n // ** Props\n const {\n item,\n submenu,\n groupActive,\n onMouseEnter,\n onMouseLeave,\n openDropdown,\n setGroupActive,\n activeItem,\n setActiveItem,\n routerProps,\n setOpenDropdown,\n currentActiveItem\n } = props\n\n // ** URL Var\n const currentURL = useLocation().pathname\n\n // ** Dropdown menu modifiers\n const menuModifiers = {\n setMaxHeight: {\n enabled: true,\n fn: data => {\n const pageHeight = window.innerHeight,\n ddTop = data.instance.reference.getBoundingClientRect().top,\n ddHeight = data.popper.height\n let maxHeight, stylesObj\n\n // ** Calculate and set height\n if (pageHeight - ddTop - ddHeight - 28 < 1) {\n maxHeight = pageHeight - ddTop - 25\n stylesObj = {\n maxHeight,\n overflowY: 'auto'\n }\n }\n\n const ddRef = data.instance.popper.getBoundingClientRect()\n\n // ** If there is not space left to open sub menu open it to the right\n if (ddRef.left + ddRef.width - (window.innerWidth - 16) >= 0) {\n data.instance.popper.closest('.dropdown').classList.add('openLeft')\n }\n\n return {\n ...data,\n styles: {\n ...stylesObj\n }\n }\n }\n }\n }\n return (\n onMouseEnter(item.id)}\n onMouseEnter={() => onMouseEnter(item.id)}\n onMouseLeave={() => onMouseLeave(item.id)}\n >\n e.preventDefault()}\n >\n {item.icon}\n {item.title}\n \n \n \n \n \n )\n}\n\nexport default HorizontalNavMenuGroup\n","// ** Menu Components Imports\nimport HorizontalNavMenuLink from './HorizontalNavMenuLink'\nimport HorizontalNavMenuGroup from './HorizontalNavMenuGroup'\nimport { resolveHorizontalNavMenuItemComponent as resolveNavItemComponent } from '@layouts/utils'\n\nconst HorizontalNavMenuItems = props => {\n // ** Components Object\n const Components = {\n HorizontalNavMenuGroup,\n HorizontalNavMenuLink\n }\n\n // ** Render Nav Items\n const RenderNavItems = props.items.map((item, index) => {\n const TagName = Components[resolveNavItemComponent(item)]\n\n return \n })\n\n return RenderNavItems\n}\n\nexport default HorizontalNavMenuItems\n","// ** React Imports\nimport { useState } from 'react'\n\n// ** Horizontal Menu Array\nimport navigation from '@src/navigation/horizontal'\n\n// ** Horizontal Menu Components\nimport HorizontalNavMenuItems from './HorizontalNavMenuItems'\n\nconst HorizontalMenu = ({ currentActiveItem, routerProps }) => {\n // ** States\n const [activeItem, setActiveItem] = useState(null)\n const [groupActive, setGroupActive] = useState([])\n const [openDropdown, setOpenDropdown] = useState([])\n\n // ** On mouse enter push the ID to openDropdown array\n const onMouseEnter = id => {\n const arr = openDropdown\n arr.push(id)\n setOpenDropdown([...arr])\n }\n\n // ** On mouse leave remove the ID to openDropdown array\n const onMouseLeave = id => {\n const arr = openDropdown\n arr.splice(arr.indexOf(id), 1)\n setOpenDropdown([...arr])\n }\n\n return (\n
    \n \n
    \n )\n}\n\nexport default HorizontalMenu\n","// ** React Imports\nimport { useState, useEffect } from 'react'\nimport { Link } from 'react-router-dom'\n\n// ** Store & Actions\nimport { useSelector, useDispatch } from 'react-redux'\nimport { handleMenuHidden, handleContentWidth } from '@store/actions/layout'\n\n// ** Third Party Components\nimport classnames from 'classnames'\nimport { ArrowUp } from 'react-feather'\nimport ScrollToTop from 'react-scroll-up'\nimport { Navbar, NavItem, Button } from 'reactstrap'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\n// ** Custom Components\nimport Customizer from '@components/customizer'\nimport NavbarComponent from './components/navbar'\nimport FooterComponent from './components/footer'\nimport MenuComponent from './components/menu/horizontal-menu'\n\n// ** Custom Hooks\nimport { useRTL } from '@hooks/useRTL'\nimport { useSkin } from '@hooks/useSkin'\nimport { useNavbarType } from '@hooks/useNavbarType'\nimport { useFooterType } from '@hooks/useFooterType'\nimport { useNavbarColor } from '@hooks/useNavbarColor'\n\n// ** Styles\nimport '@styles/base/core/menu/menu-types/horizontal-menu.scss'\n\nconst HorizontalLayout = props => {\n // ** Props\n const { children, navbar, footer, menu, currentActiveItem, routerProps } = props\n\n // ** Hooks\n const [skin, setSkin] = useSkin()\n const [isRtl, setIsRtl] = useRTL()\n const [navbarType, setNavbarType] = useNavbarType()\n const [footerType, setFooterType] = useFooterType()\n const [navbarColor, setNavbarColor] = useNavbarColor()\n\n // ** States\n const [isMounted, setIsMounted] = useState(false)\n const [navbarScrolled, setNavbarScrolled] = useState(false)\n\n // ** Store Vars\n const dispatch = useDispatch()\n const layoutStore = useSelector(state => state.layout)\n\n // ** Vars\n const contentWidth = layoutStore.contentWidth\n const isHidden = layoutStore.menuHidden\n\n // ** Handles Content Width\n const setContentWidth = val => dispatch(handleContentWidth(val))\n\n // ** Handles Content Width\n const setIsHidden = val => dispatch(handleMenuHidden(val))\n\n // ** UseEffect Cleanup\n const cleanup = () => {\n setIsMounted(false)\n setNavbarScrolled(false)\n }\n\n //** ComponentDidMount\n useEffect(() => {\n setIsMounted(true)\n window.addEventListener('scroll', function () {\n if (window.pageYOffset > 65 && navbarScrolled === false) {\n setNavbarScrolled(true)\n }\n if (window.pageYOffset < 65) {\n setNavbarScrolled(false)\n }\n })\n return () => cleanup()\n }, [])\n\n // ** Vars\n const footerClasses = {\n static: 'footer-static',\n sticky: 'footer-fixed',\n hidden: 'footer-hidden'\n }\n\n const navbarWrapperClasses = {\n floating: 'navbar-floating',\n sticky: 'navbar-sticky',\n static: 'navbar-static'\n }\n\n const navbarClasses = {\n floating: 'floating-nav',\n sticky: 'fixed-top'\n }\n\n const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white'\n\n if (!isMounted) {\n return null\n }\n\n return (\n \n \n {!navbar && (\n
    \n
      \n \n \n \n logo\n \n

      {themeConfig.app.appName}

      \n \n
      \n
    \n
    \n )}\n\n
    \n {navbar ? navbar({ skin, setSkin }) : }\n
    \n \n {!isHidden ? (\n
    \n \n {menu ? (\n menu({ routerProps, currentActiveItem })\n ) : (\n \n )}\n \n
    \n ) : null}\n\n {children}\n {themeConfig.layout.customizer === true ? (\n \n ) : null}\n \n {footer ? (\n footer({ footerType, footerClasses })\n ) : (\n \n )}\n \n\n {themeConfig.layout.scrollTop === true ? (\n
    \n \n \n \n
    \n ) : null}\n \n )\n}\nexport default HorizontalLayout\n","// !Do not remove the Layout import\nimport Layout from '@layouts/HorizontalLayout'\n\n// ** Components\n// import CustomMenu from './components/Menu'\n// import CustomNavbar from './components/Navbar'\n// import CustomFooter from './components/Footer'\n\nconst HorizontalLayout = props => (\n }\n // navbar={props => }\n // footer={props => }\n {...props}\n >\n {props.children}\n \n)\n\nexport default HorizontalLayout\n","// ** React Imports\nimport { Suspense, useContext, lazy } from 'react'\n\n// ** Utils\nimport { isUserLoggedIn } from '@utils'\nimport { useLayout } from '@hooks/useLayout'\nimport { AbilityContext } from '@src/utility/context/Can'\nimport { useRouterTransition } from '@hooks/useRouterTransition'\n\n// ** Custom Components\n// import Spinner from '@components/spinner/Loading-spinner' // Uncomment if your require content fallback\nimport FallbackSpinner from '@src/views/components/fallback-spinner/FallbackSpinner'\nimport LayoutWrapper from '@layouts/components/layout-wrapper'\n\n// ** Router Components\nimport { BrowserRouter as AppRouter, Route, Switch, Redirect } from 'react-router-dom'\n\n// ** Routes & Default Routes\nimport { DefaultRoute, Routes } from './routes'\n\n// ** Layouts\nimport BlankLayout from '@layouts/BlankLayout'\nimport VerticalLayout from '@src/layouts/VerticalLayout'\nimport HorizontalLayout from '@src/layouts/HorizontalLayout'\n\n\nconst Router = () => {\n // ** Hooks\n const [layout, setLayout] = useLayout()\n const [transition, setTransition] = useRouterTransition()\n\n // ** ACL Ability Context\n const ability = useContext(AbilityContext)\n\n // ** Default Layout\n const DefaultLayout = layout === 'horizontal' ? 'HorizontalLayout' : 'VerticalLayout'\n\n // ** All of the available layouts\n const Layouts = { BlankLayout, VerticalLayout, HorizontalLayout }\n\n // ** Current Active Item\n const currentActiveItem = null\n\n // ** Return Filtered Array of Routes & Paths\n const LayoutRoutesAndPaths = layout => {\n const LayoutRoutes = []\n const LayoutPaths = []\n\n if (Routes) {\n Routes.filter(route => {\n // ** Checks if Route layout or Default layout matches current layout\n if (route.layout === layout || (route.layout === undefined && DefaultLayout === layout)) {\n LayoutRoutes.push(route)\n LayoutPaths.push(route.path)\n }\n })\n }\n\n return { LayoutRoutes, LayoutPaths }\n }\n\n const NotAuthorized = lazy(() => import('@src/views/pages/NotAuthorized'))\n\n // ** Init Error Component\n const Error = lazy(() => import('@src/views/pages/Error'))\n\n /**\n ** Final Route Component Checks for Login & User Role and then redirects to the route\n */\n const FinalRoute = props => {\n const route = props.route\n let action, resource\n\n // ** Assign vars based on route meta\n if (route.meta) {\n action = route.meta.action ? route.meta.action : null\n resource = route.meta.resource ? route.meta.resource : null\n }\n\n if (\n (!isUserLoggedIn() && route.meta === undefined) ||\n (!isUserLoggedIn() && route.meta && !route.meta.authRoute && !route.meta.publicRoute)\n ) {\n /**\n ** If user is not Logged in & route meta is undefined\n ** OR\n ** If user is not Logged in & route.meta.authRoute, !route.meta.publicRoute are undefined\n ** Then redirect user to login\n */\n\n return \n } else if (route.meta && route.meta.authRoute && isUserLoggedIn()) {\n // ** If route has meta and authRole and user is Logged in then redirect user to home page (DefaultRoute)\n return \n } else if (isUserLoggedIn() && !ability.can(action || 'read', resource)) {\n // ** If user is Logged in and doesn't have ability to visit the page redirect the user to Not Authorized\n return \n } else {\n // ** If none of the above render component\n return \n }\n }\n\n // ** Return Route to Render\n const ResolveRoutes = () => {\n return Object.keys(Layouts).map((layout, index) => {\n // ** Convert Layout parameter to Layout Component\n // ? Note: make sure to keep layout and component name equal\n\n const LayoutTag = Layouts[layout]\n\n // ** Get Routes and Paths of the Layout\n const { LayoutRoutes, LayoutPaths } = LayoutRoutesAndPaths(layout)\n\n // ** We have freedom to display different layout for different route\n // ** We have made LayoutTag dynamic based on layout, we can also replace it with the only layout component,\n // ** that we want to implement like VerticalLayout or HorizontalLayout\n // ** We segregated all the routes based on the layouts and Resolved all those routes inside layouts\n\n // ** RouterProps to pass them to Layouts\n const routerProps = {}\n\n return (\n \n \n \n {LayoutRoutes.map(route => {\n return (\n {\n // ** Assign props to routerProps\n Object.assign(routerProps, {\n ...props,\n meta: route.meta\n })\n\n return (\n }>\n {/* Layout Wrapper to add classes based on route's layout, appLayout and className */}\n \n \n {/* */}\n \n \n )\n }}\n />\n )\n })}\n \n \n \n )\n })\n }\n\n return (\n \n \n {/* If user is logged in Redirect user to DefaultRoute else to login */}\n {/* {\n return isUserLoggedIn() ? : \n }}\n /> */}\n {\n return \n }}\n />\n {/* Not Auth Route */}\n (\n \n \n \n )}\n />\n {ResolveRoutes()}\n {/* NotFound Error page */}\n /\n \n \n )\n}\n\nexport default Router\n","//** React Imports\nimport { useState, useEffect } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useLayout = () => {\n // ** States\n const [lastLayout, setLastLayout] = useState(null)\n const [layout, setLayout] = useState(() => {\n try {\n return themeConfig.layout.type\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.type\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(layout) : value\n\n // ** Set state\n setLayout(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n const handleLayout = () => {\n // ** If layout is horizontal & screen size is equals to or below 1200\n if (layout === 'horizontal' && window.innerWidth <= 1200) {\n setLayout('vertical')\n setLastLayout('horizontal')\n }\n // ** If lastLayout is horizontal & screen size is equals to or above 1200\n if (lastLayout === 'horizontal' && window.innerWidth >= 1200) {\n setLayout('horizontal')\n }\n }\n\n // ** ComponentDidMount\n useEffect(() => {\n handleLayout()\n }, [])\n\n useEffect(() => {\n // ** Window Resize Event\n window.addEventListener('resize', handleLayout)\n }, [layout, lastLayout])\n\n return [layout, setValue]\n}\n","//** React Imports\nimport { useState } from 'react'\n\n// ** Configs\nimport themeConfig from '@configs/themeConfig'\n\nexport const useRouterTransition = () => {\n // ** State\n const [transition, setTransition] = useState(() => {\n try {\n return themeConfig.layout.routerTransition\n } catch (error) {\n // ** If error return initialValue\n console.log(error)\n return themeConfig.layout.routerTransition\n }\n })\n\n // ** Return a wrapped version of useState's setter function\n const setValue = value => {\n try {\n // ** Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(transition) : value\n\n // ** Set state\n setTransition(valueToStore)\n } catch (error) {\n // ** A more advanced implementation would handle the error case\n console.log(error)\n }\n }\n\n return [transition, setValue]\n}\n","// ** Router Import\nimport Router from './router/Router'\n\nconst App = () => {\n return \n}\n\nexport default App\n"],"sourceRoot":""}