{"version":3,"sources":["helpers/index.js","constants/index.js","utility/hooks/useSkin.js","@core/components/avatar/index.js","utility/Utils.js","components/RecipeIcon.js","utility/hooks/useRTL.js","components/PlanFreezerMealPreDayIcon.js","@core/layouts/components/layout-wrapper/index.js","router/routes/app.js","router/routes/authentication.js","router/routes/dinner-solution.js","router/routes/theme.js","router/routes/index.js","@core/layouts/BlankLayout.js","@core/components/customizer/index.js","@core/components/scrolltop/index.js","@core/layouts/components/footer/index.js","@core/layouts/components/navbar/UserDropdown.js","assets/images/avatars/avatar-blank.png","@core/layouts/components/navbar/NavbarUser.js","@core/layouts/components/navbar/NavbarBookmarks.js","@core/layouts/components/navbar/index.js","@core/layouts/components/menu/vertical-menu/VerticalMenuHeader.js","@core/layouts/components/menu/vertical-menu/VerticalNavMenuLink.js","utility/context/Can.js","@core/layouts/utils.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/useNavbarType.js","utility/hooks/useFooterType.js","utility/hooks/useNavbarColor.js","@core/layouts/VerticalLayout.js","components/MyFreezerInventoryIcon.js","navigation/vertical/index.js","layouts/VerticalLayout.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","navigation/horizontal/index.js","layouts/HorizontalLayout.js","router/Router.js","utility/hooks/useLayout.js","utility/hooks/useRouterTransition.js","App.js"],"names":["axiosInstance","axios","create","getRequest","url","get","APIBASEURL","getRequestByStringQuery","stringQuery","postRequest","payload","post","postRequestWithFile","headers","accept","putRequest","put","deleteRequestById","id","delete","renderQualityFraction","quantity","fraction","measurement","value","toFraction","interceptors","request","use","config","includes","token","localStorage","getItem","Authorization","err","Promise","reject","response","error","status","clear","ex","convertToMixedFraction","decimalNumber","integerPart","Math","floor","decimalPart","decimal","h1","h2","k1","k2","b","a","aux","abs","decimalToFraction","renderQualityFractionVer2","recipes","qty","debug","type","forEach","recipe","index","name","numberFraction","split","valueFraction","Number","Object","keys","r","mixedFraction","console","log","length","map","filter","join","formatDollar","Intl","NumberFormat","style","currency","format","discountPrice","priceValue","percentOff","amountOff","isNumber","apiUrls","getChracters","login","register","forgetPassword","resetPassword","resendEmail","getPlans","setupIntent","getLoggedInUser","getCountries","getStates","getCities","updateSubscription","getAisles","getIngredients","getOneIngredient","addIngredient","updateIngredient","deleteIngredient","getRecipes","getOneRecipe","addRecipe","deleteRecipe","updateRecipe","addCopyPaste","updateCopyPaste","getRecipeTypes","getRecipeSources","getRecipeBases","getCuisineTypes","getMeasurmentUnits","getRecipeTypeByName","getCuisineTypeByName","getRecipeByUrl","getFavoriteMeals","getOneFavoriteMeal","addFavoriteMeal","deleteFavoriteMeal","updateFavoriteMeal","getFreezerMeals","deleteFreezerMeal","deleteMultipleMeals","addFreezerMeal","changeStatus","assignPrepDate","getFreezerInventory","markAsUsed","getCalendarMeals","getOneCalendarMeal","addCalendarMeal","deleteCalendarMeal","updateCalendarMeal","weekAtGlance","getFreezerLabels","whatsForDinner","whatsForDinnerPdf","recipeSource","freezerInventoryReport","calendarRecipeInstructions","freezerRecipeInstructions","addItems","updateItems","getAllItems","getGroceryShoppingList","getGroceryShoppingListPrepDay","submitTextareaCopyPaste","useSkin","dispatch","useDispatch","store","useSelector","state","layout","useEffect","element","window","document","body","classList","remove","skin","add","dark","bordered","setSkin","handleSkin","Avatar","forwardRef","props","ref","img","size","icon","color","badgeUp","content","Tag","tag","initials","imgWidth","className","badgeText","imgHeight","badgeColor","imgClassName","contentStyles","rest","classnames","undefined","str","results","e","push","getInitials","pill","src","alt","height","width","defaultProps","isObjEmpty","obj","getDateWithoutTime","date","setHours","selectThemeColors","theme","colors","primary25","primary","neutral10","neutral20","neutral30","customFormatDate","dayjs","numb","result","Fraction","toString","mixedNumb","fractionStr","String","fromCharCode","RecipeIcon","xmlns","viewBox","fill","d","useRTL","isRtl","isRTL","getElementsByTagName","setAttribute","handleRTL","PlanFreezerMealPreDayIcon","LayoutWrapper","children","appLayout","wrapperClass","transition","routeMeta","navbarStore","navbar","contentWidth","Fragment","handleContentWidth","menuCollapsed","handleMenuCollapsed","menuHidden","handleMenuHidden","query","AppRoutes","path","component","lazy","AuthenticationRoutes","meta","authRoute","DinnerSolutionRoutes","ThemeRoutes","Routes","BlankLayout","useState","isMounted","setIsMounted","Customizer","setIsRtl","isHidden","setLayout","navbarType","footerType","navbarColor","setIsHidden","setLastLayout","setTransition","setNavbarType","setFooterType","setNavbarColor","setContentWidth","setMenuCollapsed","openCustomizer","setOpenCustomizer","handleToggle","preventDefault","transitionOptions","label","transitionValue","find","i","open","href","onClick","options","wheelPropagation","skinsArr","checked","radio","marginCondition","onChange","for","renderSkinsRadio","classNamePrefix","defaultValue","isClearable","selected","border","navbarTypeArr","renderNavbarTypeRadio","footerTypeArr","renderFooterTypeRadio","ScrollTop","showOffset","scrollBehaviour","visible","setVisible","addEventListener","pageYOffset","scroll","top","behavior","Footer","Date","getFullYear","target","rel","UserDropdown","user","auth","marginTop","end","setItem","handleLogout","NavbarUser","NavbarBookmarks","setMenuVisibility","getBookmarks","ThemeNavbar","VerticalMenuHeader","setGroupOpen","menuHover","Toggler","to","themeConfig","app","appLogoImage","VerticalNavMenuLink","item","activeItem","setActiveItem","currentActiveItem","LinkTag","externalLink","NavLink","t","useTranslation","location","useLocation","disabled","active","navLink","newTab","isActive","match","title","badge","AbilityContext","createContext","hasActiveChild","createContextualCan","Consumer","currentUrl","child","removeChildren","openGroup","currentActiveGroup","indexOf","splice","VerticalNavMenuGroup","groupOpen","parentItem","routerProps","groupActive","setGroupActive","setCurrentActiveGroup","currentURL","pathname","onCollapseClick","parent","activeGroup","toggleOpenGroup","isOpen","VerticalNavMenuItems","items","VerticalNavMenuSectionHeader","header","VerticalMenuNavItems","Components","TagName","resolveNavItemComponent","Sidebar","menu","menuData","setMenuHover","shadowRef","useRef","expanded","onMouseEnter","onMouseLeave","onScrollY","container","scrollTop","current","contains","scrollMenu","useNavbarType","handleNavbarType","useFooterType","handleFooterType","useNavbarColor","handleNavbarColor","VerticalLayout","footer","menuVisibility","innerWidth","windowWidth","setWindowWidth","layoutStore","handleWindowWidth","val","footerClasses","static","sticky","hidden","navbarClasses","floating","bgColorCondition","expand","light","show","customizer","MyFreezerInventoryIcon","navigation","HorizontalNavMenuLink","isChild","setOpenDropdown","HorizontalNavMenuGroup","submenu","openDropdown","menuModifiers","enabled","phase","fn","data","stylesObj","pageHeight","innerHeight","popperEl","elements","popper","ddTop","getBoundingClientRect","clientHeight","maxHeight","overflowY","ddRef","left","closest","styles","toggle","Link","modifiers","HorizontalNavMenuItems","HorizontalMenu","arr","HorizontalLayout","navbarScrolled","setNavbarScrolled","appName","Router","handleLayout","breakpoint","lastLayout","handleLastLayout","useLayout","routerTransition","handleRouterTransition","useRouterTransition","DefaultLayout","role","wizard","verifyEmailRoute","Layouts","NotAuthorized","Error","FinalRoute","route","action","resource","basename","process","exact","render","LayoutTag","LayoutRoutes","LayoutPaths","LayoutRoutesAndPaths","assign","fallback","require","withRouter","queryClient","QueryClient","history","useHistory","loading","setLoading","success","email_verified_at","handleUser","step1","nextStep","is_subscribed","handleLogin","client"],"mappings":"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","file":"static/js/20.865637f8.chunk.js","sourcesContent":["import axios from \"axios\";\r\nimport { APIBASEURL } from \"../constants\";\r\nimport { toFraction } from \"../utility/Utils\";\r\n\r\n// async function getAuthToken(){\r\n// let token;\r\n// try {\r\n// token = `Bearer ${(await Auth.currentSession()).getAccessToken().getJwtToken()}`\r\n// } catch (error) {\r\n// console.log(error);\r\n// }\r\n// return token\r\n// }\r\n\r\nexport const axiosInstance = axios.create();\r\n//Adding A Request Interceptor\r\naxiosInstance.interceptors.request.use(\r\n async function (config) {\r\n if (!config?.url.includes(APIBASEURL)) return config;\r\n const token = localStorage.getItem(\"token\");\r\n if (token != null && token !== \"\") {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n config.headers[\"Content-Type\"] = \"application/json\";\r\n config.headers[\"Accept\"] = \"application/json\";\r\n }\r\n return config;\r\n },\r\n function (err) {\r\n return Promise.reject(err);\r\n }\r\n);\r\n\r\n//Adding A Response Interceptor\r\naxiosInstance.interceptors.response.use(\r\n function (response) {\r\n // //\r\n // Any status code that lie within the range of 2xx cause this function to trigger\r\n // Do something with response data\r\n return response;\r\n },\r\n function (error) {\r\n try {\r\n if (error.response.status === 401) {\r\n //Logout();\r\n //window.location.href(\"/logout\");\r\n localStorage.clear();\r\n }\r\n } catch (ex) {\r\n //Logout(\"apid\");\r\n // Common.LogError(ex, \"Api Call in api.js file\", \"Intercepter\");\r\n }\r\n // Any status codes that falls outside the range of 2xx cause this function to trigger\r\n // Do something with response error\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport async function getRequest(url) {\r\n return await axiosInstance.get(APIBASEURL + url);\r\n}\r\n\r\nexport async function getRequestById(url, id) {\r\n return await axiosInstance.get(APIBASEURL + url + \"?id=\" + id);\r\n}\r\n\r\nexport async function getRequestByStringQuery(url, stringQuery) {\r\n return await axiosInstance.get(APIBASEURL + url + stringQuery);\r\n}\r\n\r\nexport async function postRequest(url, payload) {\r\n return await axiosInstance.post(APIBASEURL + url, payload);\r\n}\r\n\r\nexport async function postRequestWithFile(url, payload) {\r\n return await axiosInstance.post(APIBASEURL + url, payload, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n accept: \"*/*\",\r\n },\r\n });\r\n}\r\n\r\nexport async function putRequest(url, payload) {\r\n return await axiosInstance.put(APIBASEURL + url, payload);\r\n}\r\n\r\nexport async function putRequestWithFile(url, payload) {\r\n return await axiosInstance.put(APIBASEURL + url, payload, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n accept: \"*/*\",\r\n },\r\n });\r\n}\r\n\r\nexport async function deleteRequestByUrl(url) {\r\n return await axiosInstance.delete(APIBASEURL + url);\r\n}\r\n\r\nexport async function deleteRequestById(url, id) {\r\n return await axiosInstance.delete(APIBASEURL + url + id);\r\n}\r\n\r\nexport function renderQualityFraction(quantity, fraction, measurement) {\r\n let value = \"\";\r\n if (quantity && fraction) {\r\n value = `${quantity} ${fraction}`;\r\n }\r\n if (quantity && !fraction) {\r\n value = `${toFraction(quantity)}`;\r\n }\r\n if (!quantity && fraction) {\r\n value = `${fraction}`;\r\n }\r\n return `${value} ${measurement ? measurement : \"\"}`;\r\n}\r\n\r\nconst convertToFraction = (decimalNumber) => {\r\n if (decimalNumber && `${decimalNumber}`.includes(\".\")) {\r\n const tolerance = 1.0e-10;\r\n let numerator = parseFloat(decimalNumber);\r\n let denominator = 1;\r\n let error = Math.abs(numerator - Math.round(numerator));\r\n\r\n while (error > tolerance) {\r\n for (let i = 2; i < 10000; i++) {\r\n const candidate = numerator * i;\r\n const rounded = Math.round(candidate);\r\n\r\n if (Math.abs(candidate - rounded) < tolerance) {\r\n numerator = rounded;\r\n denominator = i;\r\n break;\r\n }\r\n }\r\n\r\n error = Math.abs(numerator - Math.round(numerator));\r\n }\r\n\r\n return `${numerator}/${denominator}`;\r\n } else {\r\n return decimalNumber || 0;\r\n }\r\n};\r\n\r\nconst gcd = (a, b) => {\r\n return b ? gcd(b, a % b) : a;\r\n};\r\n\r\nconst decimalToFraction = (decimal) => {\r\n const tolerance = 1.0e-6;\r\n let h1 = 1,\r\n h2 = 0,\r\n k1 = 0,\r\n k2 = 1,\r\n b = decimal;\r\n do {\r\n const a = Math.floor(b);\r\n let aux = h1;\r\n h1 = a * h1 + h2;\r\n h2 = aux;\r\n aux = k1;\r\n k1 = a * k1 + k2;\r\n k2 = aux;\r\n b = 1 / (b - a);\r\n } while (Math.abs(decimal - h1 / k1) > decimal * tolerance);\r\n\r\n return `${h1}/${k1}`;\r\n};\r\n\r\nconst convertToMixedFraction = (decimalNumber) => {\r\n const integerPart = Math.floor(decimalNumber);\r\n const decimalPart = decimalNumber - integerPart;\r\n\r\n if (decimalPart === 0) {\r\n return `${integerPart}`;\r\n }\r\n\r\n const fraction = decimalToFraction(decimalPart);\r\n if (integerPart == 0) {\r\n return `${fraction}`;\r\n } else {\r\n return `${integerPart} ${fraction}`;\r\n }\r\n};\r\n\r\nexport function renderQualityFractionVer2(recipes, qty, debug) {\r\n let type = {};\r\n\r\n recipes.forEach((recipe, index) => {\r\n // lấy các measurement\r\n if (recipe?.measurement?.name) {\r\n // thay đổi phân số\r\n if (\r\n recipe?.fraction &&\r\n typeof recipe?.fraction === \"string\" &&\r\n recipe.fraction.includes(\"/\")\r\n ) {\r\n const numberFraction = recipe.fraction.split(\"/\");\r\n let valueFraction = Number(numberFraction[0] / numberFraction[1]);\r\n valueFraction = valueFraction + (recipe?.quantity || 0);\r\n if (valueFraction) {\r\n type = {\r\n ...type,\r\n [recipe?.measurement?.name]:\r\n Number(type?.[recipe?.measurement?.name] || 0) + valueFraction,\r\n };\r\n }\r\n } else {\r\n // nếu cùng measurement thì +\r\n if (recipe?.quantity) {\r\n type = {\r\n ...type,\r\n [recipe?.measurement?.name]:\r\n (type?.[recipe?.measurement?.name] || 0) +\r\n Number(recipe.quantity),\r\n };\r\n } else if (recipe?.fraction) {\r\n //const roundPS = convertToFraction(`${recipe?.fraction}`);\r\n if (debug) {\r\n //console.log(roundPS, \"roundPS\");\r\n }\r\n type = {\r\n ...type,\r\n [`${recipe?.measurement?.name}`]: recipe?.fraction,\r\n };\r\n }\r\n }\r\n }\r\n });\r\n\r\n Object.keys(type).forEach((r) => {\r\n if (`${type?.[r]}`.includes(\".\")) {\r\n const mixedFraction = convertToMixedFraction(type?.[r]);\r\n type = {\r\n ...type,\r\n [r]: mixedFraction,\r\n };\r\n }\r\n });\r\n /*if (\r\n type?.[recipe?.measurement?.name] &&\r\n `${type?.[recipe?.measurement?.name]}`.includes(\".\")\r\n ) {\r\n // tính thành phân số nếu có .\r\n const valueCheck = `${type?.[recipe?.measurement?.name]}`.split(\".\");\r\n const roundPS = convertToFraction(`0.${valueCheck[1]}`);\r\n type = {\r\n ...type,\r\n [recipe?.measurement?.name]: valueCheck[0] ? valueCheck[0] : roundPS,\r\n [`${recipe?.measurement?.name}`]: roundPS,\r\n };\r\n if (debug) {\r\n console.log(type, \"type 3\");\r\n }\r\n }*/\r\n if (debug) console.log(type, \"type\");\r\n\r\n if (type && Object.keys(type).length > 0) {\r\n let value = Object.keys(type).map((r, index) => {\r\n if (type[r] == 0) {\r\n return null;\r\n }\r\n return `${type[r]} ${r}`;\r\n });\r\n return value.filter((r) => r != null).join(\", \");\r\n } else {\r\n return qty;\r\n }\r\n}\r\n\r\nexport function formatDollar(value) {\r\n if (typeof value === \"number\") {\r\n let USDollar = new Intl.NumberFormat(\"en-US\", {\r\n style: \"currency\",\r\n currency: \"USD\",\r\n });\r\n return USDollar.format(value);\r\n } else {\r\n let USDollar = new Intl.NumberFormat(\"en-US\", {\r\n style: \"currency\",\r\n currency: \"USD\",\r\n });\r\n return USDollar.format(0);\r\n }\r\n}\r\n\r\nexport function discountPrice(priceValue, percentOff, amountOff, isNumber) {\r\n let value = 0;\r\n if (percentOff) {\r\n value = (priceValue * percentOff) / 100;\r\n } else if (amountOff) {\r\n value = amountOff;\r\n }\r\n if (isNumber) {\r\n return value || 0;\r\n }\r\n return formatDollar(value);\r\n}\r\n","export const APIBASEURL = \"https://api.thedinnersolution.com/api\";\r\n\r\nexport const apiUrls = {\r\n getChracters: \"/character\",\r\n login: \"/auth/login\",\r\n register: \"/auth/register\",\r\n forgetPassword: \"/password/forgot-password\",\r\n resetPassword: \"/password/reset\",\r\n resendEmail: \"/email/resend\",\r\n getPlans: \"/get-subscription-plans\",\r\n setupIntent: \"/setupintent\",\r\n getLoggedInUser: \"/get-loggedin-user\",\r\n getCountries: \"/countries\",\r\n getStates: \"/states\",\r\n getCities: \"/cities\",\r\n updateSubscription: \"/update-subscription\",\r\n //Ingredient Urls\r\n getAisles: \"/ingredientaisles\",\r\n getIngredients: \"/ingredients\",\r\n getOneIngredient: \"/ingredients/\",\r\n addIngredient: \"/ingredients\",\r\n updateIngredient: \"/ingredients/\",\r\n deleteIngredient: \"/ingredients/\",\r\n //Recipe Urls\r\n getRecipes: \"/recipes\",\r\n getOneRecipe: \"/recipes/\",\r\n addRecipe: \"/recipes\",\r\n deleteRecipe: \"/recipes/\",\r\n updateRecipe: \"/recipes/\",\r\n addCopyPaste: \"/add-copy-paste-recipe\",\r\n updateCopyPaste: \"/update-copy-paste-recipe/\",\r\n getRecipeTypes: \"/get-recipe-types\",\r\n getRecipeSources: \"/get-recipe-sources\",\r\n getRecipeBases: \"/get-recipe-bases\",\r\n getCuisineTypes: \"/get-cuisine-types\",\r\n getMeasurmentUnits: \"/get-measurement-units\",\r\n getRecipeTypeByName: \"/get-recipe-type-name\",\r\n getCuisineTypeByName: \"/get-cuisine-type-name\",\r\n getRecipeByUrl: \"/get-recipe-url\",\r\n //Favorite Meal Urls\r\n getFavoriteMeals: \"/menu\",\r\n getOneFavoriteMeal: \"/menu/\",\r\n addFavoriteMeal: \"/menu\",\r\n deleteFavoriteMeal: \"/menu/\",\r\n updateFavoriteMeal: \"/menu/\",\r\n //Freezer Meal Urls\r\n getFreezerMeals: \"/freezer-meal\",\r\n deleteFreezerMeal: \"/freezer-meal/\",\r\n deleteMultipleMeals: \"/delete-freezer-meals\",\r\n addFreezerMeal: \"/freezer-meal\",\r\n changeStatus: \"/freezer-meal-update-status\",\r\n assignPrepDate: \"/freezer-meal-assign-prep-date\",\r\n //Freezer Inventory Urls\r\n getFreezerInventory: \"/get-freezer-inventory\",\r\n markAsUsed: \"/mark-inventory-used/\",\r\n //Calendar Meal Urls\r\n getCalendarMeals: \"/calendar-meal\",\r\n getOneCalendarMeal: \"/calendar-meal/\",\r\n addCalendarMeal: \"/calendar-meal\",\r\n deleteCalendarMeal: \"/calendar-meal/\",\r\n updateCalendarMeal: \"/calendar-meal/\",\r\n weekAtGlance: \"/weekly-menu\",\r\n //Reports Urls\r\n getFreezerLabels: \"/freezer-lables-report\",\r\n whatsForDinner: \"/dinner-report\",\r\n whatsForDinnerPdf: \"/dinner-report-pdf\",\r\n recipeSource: \"/recipe-source\",\r\n freezerInventoryReport: \"/freezer-inventory-report\",\r\n calendarRecipeInstructions: \"/calendar-recipe-instructions\",\r\n freezerRecipeInstructions: \"/freezer-recipe-instructions\",\r\n addItems: \"/misc-items\",\r\n updateItems: \"/update-misc-items\",\r\n getAllItems: \"/misc-items\",\r\n getGroceryShoppingList: \"/grocery-shopping-list\",\r\n getGroceryShoppingListPrepDay: \"/prep-day-grocery-shopping-list\",\r\n\r\n // Ingredients -> Copy/paste Textarea\r\n submitTextareaCopyPaste: \"/get-recipe-textarea\",\r\n // New API Fast Dev\r\n};\r\n","// ** React Imports\r\nimport { useEffect } from 'react'\r\n\r\n// ** Store Imports\r\nimport { handleSkin } from '@store/layout'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nexport const useSkin = () => {\r\n // ** Hooks\r\n const dispatch = useDispatch()\r\n const store = useSelector(state => state.layout)\r\n\r\n const setSkin = type => {\r\n dispatch(handleSkin(type))\r\n }\r\n\r\n useEffect(() => {\r\n // ** Get Body Tag\r\n const element = window.document.body\r\n\r\n // ** Define classnames for skins\r\n const classNames = {\r\n dark: 'dark-layout',\r\n bordered: 'bordered-layout',\r\n 'semi-dark': 'semi-dark-layout'\r\n }\r\n\r\n // ** Remove all classes from Body on mount\r\n element.classList.remove(...element.classList)\r\n\r\n // ** If skin is not light add skin class\r\n if (store.skin !== 'light') {\r\n element.classList.add(classNames[store.skin])\r\n }\r\n }, [store.skin])\r\n\r\n return { skin: store.skin, setSkin }\r\n}\r\n","// ** React Imports\r\nimport { forwardRef } from 'react'\r\n\r\n// ** Third Party Components\r\nimport Proptypes from 'prop-types'\r\nimport classnames from 'classnames'\r\n\r\n// ** Reactstrap Imports\r\nimport { Badge } from 'reactstrap'\r\n\r\nconst Avatar = forwardRef((props, ref) => {\r\n // ** Props\r\n const {\r\n img,\r\n size,\r\n icon,\r\n color,\r\n status,\r\n badgeUp,\r\n content,\r\n tag: Tag,\r\n initials,\r\n imgWidth,\r\n className,\r\n badgeText,\r\n imgHeight,\r\n badgeColor,\r\n imgClassName,\r\n contentStyles,\r\n ...rest\r\n } = props\r\n\r\n // ** Function to extract initials from content\r\n const getInitials = str => {\r\n const results = []\r\n const wordArray = str.split(' ')\r\n wordArray.forEach(e => {\r\n results.push(e[0])\r\n })\r\n return results.join('')\r\n }\r\n\r\n return (\r\n \r\n {img === false || img === undefined ? (\r\n \r\n {initials ? getInitials(content) : content}\r\n\r\n {icon ? icon : null}\r\n {badgeUp ? (\r\n \r\n {badgeText ? badgeText : '0'}\r\n \r\n ) : null}\r\n \r\n ) : (\r\n \r\n )}\r\n {status ? (\r\n \r\n ) : null}\r\n \r\n )\r\n})\r\n\r\nexport default Avatar\r\n\r\n// ** PropTypes\r\nAvatar.propTypes = {\r\n icon: Proptypes.node,\r\n src: Proptypes.string,\r\n badgeUp: Proptypes.bool,\r\n content: Proptypes.string,\r\n badgeText: Proptypes.string,\r\n className: Proptypes.string,\r\n imgClassName: Proptypes.string,\r\n contentStyles: Proptypes.object,\r\n size: Proptypes.oneOf(['sm', 'lg', 'xl']),\r\n tag: Proptypes.oneOfType([Proptypes.func, Proptypes.string]),\r\n status: Proptypes.oneOf(['online', 'offline', 'away', 'busy']),\r\n imgHeight: Proptypes.oneOfType([Proptypes.string, Proptypes.number]),\r\n imgWidth: Proptypes.oneOfType([Proptypes.string, Proptypes.number]),\r\n badgeColor: Proptypes.oneOf([\r\n 'primary',\r\n 'secondary',\r\n 'success',\r\n 'danger',\r\n 'info',\r\n 'warning',\r\n 'dark',\r\n 'light-primary',\r\n 'light-secondary',\r\n 'light-success',\r\n 'light-danger',\r\n 'light-info',\r\n 'light-warning',\r\n 'light-dark'\r\n ]),\r\n color: Proptypes.oneOf([\r\n 'primary',\r\n 'secondary',\r\n 'success',\r\n 'danger',\r\n 'info',\r\n 'warning',\r\n 'dark',\r\n 'light-primary',\r\n 'light-secondary',\r\n 'light-success',\r\n 'light-danger',\r\n 'light-info',\r\n 'light-warning',\r\n 'light-dark'\r\n ]),\r\n initials(props) {\r\n if (props['initials'] && props['content'] === undefined) {\r\n return new Error('content prop is required with initials prop.')\r\n }\r\n if (props['initials'] && typeof props['content'] !== 'string') {\r\n return new Error('content prop must be a string.')\r\n }\r\n if (typeof props['initials'] !== 'boolean' && props['initials'] !== undefined) {\r\n return new Error('initials must be a boolean!')\r\n }\r\n }\r\n}\r\n\r\n// ** Default Props\r\nAvatar.defaultProps = {\r\n tag: 'div'\r\n}\r\n","import dayjs from \"dayjs\";\r\nimport { Fraction } from \"fractional\";\r\n\r\n// ** Checks if an object is empty (returns boolean)\r\nexport const isObjEmpty = (obj) => Object.keys(obj).length === 0;\r\n\r\n// ** Returns K format from a number\r\nexport const kFormatter = (num) =>\r\n num > 999 ? `${(num / 1000).toFixed(1)}k` : num;\r\n\r\n// ** Converts HTML to string\r\nexport const htmlToString = (html) => html.replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n\r\n// ** Checks if the passed date is today\r\nconst isToday = (date) => {\r\n const today = new Date();\r\n return (\r\n /* eslint-disable operator-linebreak */\r\n date.getDate() === today.getDate() &&\r\n date.getMonth() === today.getMonth() &&\r\n date.getFullYear() === today.getFullYear()\r\n /* eslint-enable */\r\n );\r\n};\r\n\r\nexport const getDateWithoutTime = (date) => {\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n};\r\n\r\n/**\r\n ** Format and return date in Humanize format\r\n ** Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\r\n ** Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\r\n * @param {String} value date to format\r\n * @param {Object} formatting Intl object to format with\r\n */\r\nexport const formatDate = (\r\n value,\r\n formatting = { month: \"short\", day: \"numeric\", year: \"numeric\" }\r\n) => {\r\n if (!value) return value;\r\n return new Intl.DateTimeFormat(\"en-US\", formatting).format(new Date(value));\r\n};\r\n\r\n// ** Returns short month of passed date\r\nexport const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {\r\n const date = new Date(value);\r\n let formatting = { month: \"short\", day: \"numeric\" };\r\n\r\n if (toTimeForCurrentDay && isToday(date)) {\r\n formatting = { hour: \"numeric\", minute: \"numeric\" };\r\n }\r\n\r\n return new Intl.DateTimeFormat(\"en-US\", formatting).format(new Date(value));\r\n};\r\n\r\n/**\r\n ** Return if user is logged in\r\n ** This is completely up to you and how you want to store the token in your frontend application\r\n * ? e.g. If you are using cookies to store the application please update this function\r\n */\r\nexport const isUserLoggedIn = () => localStorage.getItem(\"userData\");\r\nexport const getUserData = () => JSON.parse(localStorage.getItem(\"userData\"));\r\n\r\n/**\r\n ** This function is used for demo purpose route navigation\r\n ** In real app you won't need this function because your app will navigate to same route for each users regardless of ability\r\n ** Please note role field is just for showing purpose it's not used by anything in frontend\r\n ** We are checking role just for ease\r\n * ? NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\r\n * @param {String} userRole Role of user\r\n */\r\nexport const getHomeRouteForLoggedInUser = (userRole) => {\r\n if (userRole === \"admin\") return \"/\";\r\n if (userRole === \"client\") return \"/access-control\";\r\n return \"/login\";\r\n};\r\n\r\n// ** React Select Theme Colors\r\nexport const selectThemeColors = (theme) => ({\r\n ...theme,\r\n colors: {\r\n ...theme.colors,\r\n primary25: \"#7367f01a\", // for option hover bg-color\r\n primary: \"#7367f0\", // for selected option bg-color\r\n neutral10: \"#7367f0\", // for tags bg-color\r\n neutral20: \"#ededed\", // for input border-color\r\n neutral30: \"#ededed\", // for input hover border-color\r\n },\r\n});\r\n\r\n// Format date\r\nexport const customFormatDate = (date) => {\r\n // const formatType = 'MMM D, YYYY';\r\n // return dayjs(date).format(\"MMM D, YYYY\")\r\n return date ? dayjs(date).format(\"MM/DD/YYYY\") : \"mm/dd/yyyy\";\r\n // if(formatType == 'USA'){\r\n // return date ? dayjs(date).format(\"MM/DD/YYYY\") : 'mm/dd/yyyy';\r\n // }else if(formatType == 'UK'){\r\n // return date ? dayjs(date).format(\"DD/MM/YYYY\") : 'dd/mm/yyyy';\r\n // }else if(formatType == 'MMM DD, YYYY'){\r\n // return date ? dayjs(date).format(\"MMM DD, YYYY\") : 'MMM DD, YYYY';\r\n // }else{\r\n // return date ? dayjs(date).format(\"YYYY/MM/DD\") : 'yyyy/mm/dd';\r\n // }\r\n};\r\n\r\nexport const toFraction = (numb) => {\r\n if (numb) {\r\n const result = new Fraction(numb).toString().split(\" \");\r\n if (result.length > 1) {\r\n const mixedNumb = result[0];\r\n const fractionNumb = result[1];\r\n const fractionStr = fractionNumb.split(\"/\");\r\n return `${mixedNumb} ${fractionStr[0]}${String.fromCharCode(8260)}${\r\n fractionStr[1]\r\n }`;\r\n }\r\n return result.join(\"\");\r\n }\r\n\r\n return \"\";\r\n};\r\n","import React from \"react\";\n\nfunction RecipeIcon({ color, size, className }) {\n return (\n <>\n \n \n \n \n \n \n \n \n );\n}\n\nexport default RecipeIcon;\n","//** React Imports\r\nimport { useEffect } from 'react'\r\n\r\n// ** Store & Actions\r\nimport { handleRTL } from '@store/layout'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nexport const useRTL = () => {\r\n // ** Store Vars\r\n const dispatch = useDispatch()\r\n const isRtl = useSelector(state => state.layout.isRTL)\r\n\r\n // ** Return a wrapped version of useState's setter function\r\n const setValue = value => {\r\n dispatch(handleRTL(value))\r\n }\r\n\r\n useEffect(() => {\r\n // ** Get HTML Tag\r\n const element = document.getElementsByTagName('html')[0]\r\n\r\n // ** If isRTL then add attr dir='rtl' with HTML else attr dir='ltr'\r\n if (isRtl) {\r\n element.setAttribute('dir', 'rtl')\r\n } else {\r\n element.setAttribute('dir', 'ltr')\r\n }\r\n }, [isRtl])\r\n\r\n return [isRtl, setValue]\r\n}\r\n","import React from \"react\";\n\nfunction PlanFreezerMealPreDayIcon({ color, size, className }) {\n return (\n <>\n \n \n \n \n \n );\n}\n\nexport default PlanFreezerMealPreDayIcon;\n","// ** React Imports\r\nimport { Fragment, useEffect } from 'react'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\n\r\n// ** Store & Actions\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { handleContentWidth, handleMenuCollapsed, handleMenuHidden } from '@store/layout'\r\n\r\n// ** Styles\r\nimport 'animate.css/animate.css'\r\n\r\nconst LayoutWrapper = props => {\r\n // ** Props\r\n const { layout, children, appLayout, wrapperClass, transition, routeMeta } = props\r\n\r\n // ** Store Vars\r\n const dispatch = useDispatch()\r\n const store = useSelector(state => state)\r\n\r\n const navbarStore = store.navbar\r\n const contentWidth = store.layout.contentWidth\r\n\r\n //** Vars\r\n const Tag = layout === 'HorizontalLayout' && !appLayout ? 'div' : Fragment\r\n\r\n // ** Clean Up Function\r\n const cleanUp = () => {\r\n if (routeMeta) {\r\n if (routeMeta.contentWidth) {\r\n dispatch(handleContentWidth('full'))\r\n }\r\n if (routeMeta.menuCollapsed) {\r\n dispatch(handleMenuCollapsed(!routeMeta.menuCollapsed))\r\n }\r\n if (routeMeta.menuHidden) {\r\n dispatch(handleMenuHidden(!routeMeta.menuHidden))\r\n }\r\n }\r\n }\r\n\r\n // ** ComponentDidMount\r\n useEffect(() => {\r\n if (routeMeta) {\r\n if (routeMeta.contentWidth) {\r\n dispatch(handleContentWidth(routeMeta.contentWidth))\r\n }\r\n if (routeMeta.menuCollapsed) {\r\n dispatch(handleMenuCollapsed(routeMeta.menuCollapsed))\r\n }\r\n if (routeMeta.menuHidden) {\r\n dispatch(handleMenuHidden(routeMeta.menuHidden))\r\n }\r\n }\r\n return () => cleanUp()\r\n }, [])\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n {children}\r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default LayoutWrapper\r\n","import { lazy } from \"react\";\r\n\r\nexport const AppRoutes = [\r\n {\r\n path: \"/calendar\",\r\n component: lazy(() => import(\"../../views/apps/calendar\")),\r\n },\r\n];\r\n","import { lazy } from \"react\";\r\n\r\nexport const AuthenticationRoutes = [\r\n {\r\n path: \"/login\",\r\n component: lazy(() => import(\"../../views/authentication/Login\")),\r\n layout: \"BlankLayout\",\r\n meta: {\r\n authRoute: true,\r\n },\r\n },\r\n {\r\n path: \"/pages/login-basic\",\r\n component: lazy(() => import(\"../../views/authentication/LoginBasic\")),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/pages/login-cover\",\r\n component: lazy(() => import(\"../../views/authentication/LoginCover\")),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/register\",\r\n component: lazy(() => import(\"../../views/authentication/RegisterWizard\")),\r\n layout: \"BlankLayout\",\r\n meta: {\r\n authRoute: true,\r\n },\r\n },\r\n {\r\n path: \"/email-confirm\",\r\n component: lazy(() =>\r\n import(\"../../views/authentication/EmailVerificationConfirm\")\r\n ),\r\n layout: \"BlankLayout\",\r\n meta: {\r\n authRoute: true,\r\n },\r\n },\r\n // {\r\n // path: '/pages/register-basic',\r\n // component: lazy(() => import('../../views/authentication/RegisterBasic')),\r\n // layout: 'BlankLayout'\r\n // },\r\n {\r\n path: \"/pages/register-cover\",\r\n component: lazy(() => import(\"../../views/authentication/RegisterCover\")),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/forgot-password\",\r\n component: lazy(() => import(\"../../views/authentication/ForgotPassword\")),\r\n layout: \"BlankLayout\",\r\n meta: {\r\n authRoute: true,\r\n },\r\n },\r\n {\r\n path: \"/pages/forgot-password-basic\",\r\n component: lazy(() =>\r\n import(\"../../views/authentication/ForgotPasswordBasic\")\r\n ),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/pages/forgot-password-cover\",\r\n component: lazy(() =>\r\n import(\"../../views/authentication/ForgotPasswordCover.js\")\r\n ),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/reset-password\",\r\n component: lazy(() =>\r\n import(\"../../views/authentication/ResetPasswordBasic\")\r\n ),\r\n layout: \"BlankLayout\",\r\n meta: {\r\n authRoute: true,\r\n },\r\n },\r\n {\r\n path: \"/pages/reset-password-cover\",\r\n component: lazy(() =>\r\n import(\"../../views/authentication/ResetPasswordCover\")\r\n ),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/verify-email\",\r\n component: lazy(() =>\r\n import(\"../../views/authentication/VerifyEmailBasic\")\r\n ),\r\n layout: \"BlankLayout\",\r\n meta: {\r\n authRoute: true,\r\n },\r\n },\r\n {\r\n path: \"/pages/verify-email-cover\",\r\n component: lazy(() =>\r\n import(\"../../views/authentication/VerifyEmailCover\")\r\n ),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/pages/two-steps-basic\",\r\n component: lazy(() => import(\"../../views/authentication/TwoStepsBasic\")),\r\n layout: \"BlankLayout\",\r\n },\r\n {\r\n path: \"/pages/two-steps-cover\",\r\n component: lazy(() => import(\"../../views/authentication/TwoStepsCover\")),\r\n layout: \"BlankLayout\",\r\n },\r\n];\r\n","import { lazy } from \"react\";\r\n\r\nexport const DinnerSolutionRoutes = [\r\n {\r\n path: \"/favourite-meals\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/favourite-meals\")\r\n ),\r\n },\r\n {\r\n path: \"/dashboard\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/dashboard\")\r\n ),\r\n },\r\n {\r\n path: \"/recipe\",\r\n component: lazy(() => import(\"../../views/dinner-solution/recipie\")),\r\n },\r\n {\r\n path: \"/print-recipe/:recipeID\",\r\n component: lazy(() => import(\"../../views/dinner-solution/recipie/PrintRecipe\")),\r\n },\r\n {\r\n path: \"/plan-freezer\",\r\n component: lazy(() => import(\"../../views/dinner-solution/plan-freezer\")),\r\n },\r\n {\r\n path: \"/plan-meals-on-calendar\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/plan-meals-calendar\")\r\n ),\r\n },\r\n {\r\n path: \"/ingredients\",\r\n component: lazy(() => import(\"../../views/dinner-solution/ingredients\")),\r\n },\r\n {\r\n path: \"/freezer-inventory\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/freezer-inventory\")\r\n ),\r\n },\r\n {\r\n path: \"/freezer-inventory-list\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/grocey-list/FreezerInventory\")\r\n ),\r\n },\r\n {\r\n path: \"/grocery-list-and-reports\",\r\n component: lazy(() => import(\"../../views/dinner-solution/grocey-list\")),\r\n },\r\n {\r\n path: \"/shoping-list/misc=:misc\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/grocey-list/ShopingList\")\r\n ),\r\n },\r\n {\r\n path: \"/freezer-labels\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/grocey-list/FreezerLabels\")\r\n ),\r\n },\r\n {\r\n path: \"/prep-day-checklist\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/grocey-list/PrepDayChecklist\")\r\n ),\r\n },\r\n {\r\n path: \"/recipe-instructions-prep-day\",\r\n component: lazy(() =>\r\n import(\r\n \"../../views/dinner-solution/grocey-list/RecipieInstructionsPrepDay\"\r\n )\r\n ),\r\n },\r\n {\r\n path: \"/dinner-fridge-report\",\r\n component: lazy(() =>\r\n import(\r\n \"../../views/dinner-solution/grocey-list/dinner-fridge-report/index\"\r\n )\r\n ),\r\n },\r\n {\r\n path: \"/shoping-list-prep-day\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/grocey-list/ShopingListPrepDay\")\r\n ),\r\n },\r\n {\r\n path: \"/recipe-instructions\",\r\n component: lazy(() =>\r\n import(\"../../views/dinner-solution/grocey-list/RecipeInstructions\")\r\n ),\r\n },\r\n];\r\n","import { lazy } from 'react'\r\n\r\nexport const ThemeRoutes = [\r\n {\r\n path: '/home',\r\n component: lazy(() => import('../../views/theme/Home'))\r\n },\r\n {\r\n path: '/second-page',\r\n component: lazy(() => import('../../views/theme/SecondPage'))\r\n },\r\n {\r\n path: '/error',\r\n component: lazy(() => import('../../views/theme/Error')),\r\n layout: 'BlankLayout'\r\n },\r\n {\r\n path: '/listing',\r\n component: lazy(() => import('../../views/theme/Listing')),\r\n layout: 'VerticalLayout'\r\n }\r\n]","\r\n\r\n// ** Document title\r\nconst TemplateTitle = 'React Base Project'\r\n\r\nimport { AppRoutes } from './app'\r\nimport { AuthenticationRoutes } from './authentication'\r\nimport { DinnerSolutionRoutes } from './dinner-solution'\r\n//All Routes\r\nimport { ThemeRoutes } from './theme'\r\n\r\n// ** Default Route\r\nconst DefaultRoute = '/dashboard'\r\n\r\n// ** Merge Routes\r\nconst Routes = [\r\n ...ThemeRoutes,\r\n ...AuthenticationRoutes,\r\n ...AppRoutes,\r\n ...DinnerSolutionRoutes\r\n]\r\n\r\nexport { DefaultRoute, TemplateTitle, Routes }\r\n","// ** React Imports\r\nimport { useEffect, useState } from 'react'\r\n\r\n// ** Custom Hooks\r\nimport { useSkin } from '@hooks/useSkin'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\n\r\nconst BlankLayout = ({ children }) => {\r\n // ** States\r\n const [isMounted, setIsMounted] = useState(false)\r\n\r\n // ** Hooks\r\n const { skin } = useSkin()\r\n\r\n useEffect(() => {\r\n setIsMounted(true)\r\n return () => setIsMounted(false)\r\n }, [])\r\n\r\n if (!isMounted) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n
{children}
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default BlankLayout\r\n","// ** React Imports\r\nimport { useState } from 'react'\r\n\r\n// ** Third Party Components\r\nimport Select from 'react-select'\r\nimport classnames from 'classnames'\r\nimport { selectThemeColors } from '@utils'\r\nimport { Settings, X } from 'react-feather'\r\nimport PerfectScrollbar from 'react-perfect-scrollbar'\r\n\r\n// ** Reactstrap Imports\r\nimport { Input, Label } from 'reactstrap'\r\n\r\n// ** Styles\r\nimport '@styles/react/libs/react-select/_react-select.scss'\r\n\r\nconst Customizer = props => {\r\n // ** Props\r\n const {\r\n skin,\r\n isRtl,\r\n layout,\r\n setSkin,\r\n setIsRtl,\r\n isHidden,\r\n setLayout,\r\n navbarType,\r\n footerType,\r\n transition,\r\n navbarColor,\r\n setIsHidden,\r\n contentWidth,\r\n menuCollapsed,\r\n setLastLayout,\r\n setTransition,\r\n setNavbarType,\r\n setFooterType,\r\n setNavbarColor,\r\n setContentWidth,\r\n setMenuCollapsed\r\n } = props\r\n\r\n // ** State\r\n const [openCustomizer, setOpenCustomizer] = useState(false)\r\n\r\n // ** Toggles Customizer\r\n const handleToggle = e => {\r\n e.preventDefault()\r\n setOpenCustomizer(!openCustomizer)\r\n }\r\n\r\n // ** Render Layout Skin Options\r\n const renderSkinsRadio = () => {\r\n const skinsArr = [\r\n {\r\n name: 'light',\r\n label: 'Light',\r\n checked: skin === 'light'\r\n },\r\n {\r\n name: 'bordered',\r\n label: 'Bordered',\r\n checked: skin === 'bordered'\r\n },\r\n {\r\n name: 'dark',\r\n label: 'Dark',\r\n checked: skin === 'dark'\r\n },\r\n {\r\n name: 'semi-dark',\r\n label: 'Semi Dark',\r\n checked: skin === 'semi-dark'\r\n }\r\n ]\r\n\r\n return skinsArr.map((radio, index) => {\r\n const marginCondition = index !== skinsArr.length - 1\r\n\r\n if (layout === 'HorizontalLayout' && radio.name === 'semi-dark') {\r\n return null\r\n }\r\n\r\n return (\r\n
\r\n setSkin(radio.name)} />\r\n \r\n
\r\n )\r\n })\r\n }\r\n\r\n // ** Render Navbar Colors Options\r\n const renderNavbarColors = () => {\r\n const colorsArr = ['white', 'primary', 'secondary', 'success', 'danger', 'info', 'warning', 'dark']\r\n\r\n return colorsArr.map(color => (\r\n setNavbarColor(color)}\r\n >\r\n ))\r\n }\r\n\r\n // ** Render Navbar Type Options\r\n const renderNavbarTypeRadio = () => {\r\n const navbarTypeArr = [\r\n {\r\n name: 'floating',\r\n label: 'Floating',\r\n checked: navbarType === 'floating'\r\n },\r\n {\r\n name: 'sticky',\r\n label: 'Sticky',\r\n checked: navbarType === 'sticky'\r\n },\r\n {\r\n name: 'static',\r\n label: 'Static',\r\n checked: navbarType === 'static'\r\n },\r\n {\r\n name: 'hidden',\r\n label: 'Hidden',\r\n checked: navbarType === 'hidden'\r\n }\r\n ]\r\n\r\n return navbarTypeArr.map((radio, index) => {\r\n const marginCondition = index !== navbarTypeArr.length - 1\r\n\r\n if (layout === 'HorizontalLayout' && radio.name === 'hidden') {\r\n return null\r\n }\r\n\r\n return (\r\n
\r\n setNavbarType(radio.name)} />\r\n \r\n
\r\n )\r\n })\r\n }\r\n\r\n // ** Render Footer Type Options\r\n const renderFooterTypeRadio = () => {\r\n const footerTypeArr = [\r\n {\r\n name: 'sticky',\r\n label: 'Sticky',\r\n checked: footerType === 'sticky'\r\n },\r\n {\r\n name: 'static',\r\n label: 'Static',\r\n checked: footerType === 'static'\r\n },\r\n {\r\n name: 'hidden',\r\n label: 'Hidden',\r\n checked: footerType === 'hidden'\r\n }\r\n ]\r\n\r\n return footerTypeArr.map((radio, index) => {\r\n const marginCondition = index !== footerTypeArr.length - 1\r\n\r\n return (\r\n
\r\n setFooterType(radio.name)}\r\n />\r\n \r\n
\r\n )\r\n })\r\n }\r\n\r\n // ** Router Transition Options\r\n const transitionOptions = [\r\n { value: 'fadeIn', label: 'Fade' },\r\n { value: 'fadeInLeft', label: 'Fade In Left' },\r\n { value: 'zoomIn', label: 'Zoom In' },\r\n { value: 'none', label: 'None' }\r\n ]\r\n\r\n // ** Get Current Transition\r\n const transitionValue = transitionOptions.find(i => i.value === transition)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n

Theme Customizer

\r\n

Customize & Preview in Real Time

\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n

Skin

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

Content Width

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

RTL

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

Router Transition

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

Menu Layout

\r\n
\r\n
\r\n
\r\n {\r\n setLayout('vertical')\r\n setLastLayout('vertical')\r\n }}\r\n />\r\n \r\n
\r\n
\r\n {\r\n setLayout('horizontal')\r\n setLastLayout('horizontal')\r\n }}\r\n />\r\n \r\n
\r\n
\r\n
\r\n {layout !== 'HorizontalLayout' ? (\r\n
\r\n
\r\n

Menu Collapsed

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

Menu Hidden

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

Navbar Color

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

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

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

Footer Type

\r\n
{renderFooterTypeRadio()}
\r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default Customizer\r\n","// ** React Imports\r\nimport { useEffect, useState } from 'react'\r\n\r\n// ** Third Party Components\r\nimport Proptypes from 'prop-types'\r\n\r\nconst ScrollTop = props => {\r\n // ** Props\r\n const { showOffset, scrollBehaviour, children, ...rest } = props\r\n\r\n // ** State\r\n const [visible, setVisible] = useState(false)\r\n\r\n useEffect(() => {\r\n if (window) {\r\n window.addEventListener('scroll', () => {\r\n if (window.pageYOffset >= showOffset) {\r\n setVisible(true)\r\n } else {\r\n setVisible(false)\r\n }\r\n })\r\n }\r\n }, [])\r\n\r\n const handleScrollToTop = () => {\r\n window.scroll({ top: 0, behavior: scrollBehaviour })\r\n }\r\n\r\n return (\r\n visible && (\r\n
\r\n {children}\r\n
\r\n )\r\n )\r\n}\r\n\r\nexport default ScrollTop\r\n\r\n// ** PropTypes\r\nScrollTop.propTypes = {\r\n showOffset: Proptypes.number,\r\n children: Proptypes.any.isRequired,\r\n scrollBehaviour: Proptypes.oneOf(['smooth', 'instant', 'auto'])\r\n}\r\n\r\nScrollTop.defaultProps = {\r\n scrollBehaviour: 'smooth'\r\n}\r\n","// ** Icons Import\r\nimport { Heart } from \"react-feather\";\r\n\r\nconst Footer = () => {\r\n return (\r\n

\r\n \r\n COPYRIGHT © {new Date().getFullYear()}{\" \"}\r\n \r\n The Dinner Solution\r\n \r\n , All rights Reserved\r\n \r\n {/* \r\n Hand-crafted & Made with\r\n \r\n */}\r\n

\r\n );\r\n};\r\n\r\nexport default Footer;\r\n","// ** React Imports\r\nimport { Link } from 'react-router-dom'\r\n\r\n// ** Custom Components\r\nimport Avatar from '@components/avatar'\r\n\r\n// ** Third Party Components\r\nimport { User, Mail, CheckSquare, MessageSquare, Settings, CreditCard, HelpCircle, Power } from 'react-feather'\r\n\r\n// ** Reactstrap Imports\r\nimport { UncontrolledDropdown, DropdownMenu, DropdownToggle, DropdownItem } from 'reactstrap'\r\n\r\n// ** Default Avatar Image\r\nimport defaultAvatar from '@src/assets/images/avatars/avatar-blank.png'\r\nimport { handleLogout } from '../../../../redux/authentication'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nconst UserDropdown = () => {\r\n const dispatch = useDispatch()\r\n const user = useSelector((state) => state.auth.user)\r\n return (\r\n \r\n e.preventDefault()}>\r\n
\r\n {user?.name}\r\n {/* Admin */}\r\n
\r\n \r\n
\r\n \r\n {/* e.preventDefault()}>\r\n \r\n Profile\r\n \r\n e.preventDefault()}>\r\n \r\n Inbox\r\n \r\n e.preventDefault()}>\r\n \r\n Tasks\r\n \r\n e.preventDefault()}>\r\n \r\n Chats\r\n \r\n \r\n e.preventDefault()}>\r\n \r\n Settings\r\n \r\n e.preventDefault()}>\r\n \r\n Pricing\r\n \r\n e.preventDefault()}>\r\n \r\n FAQ\r\n */}\r\n {\r\n localStorage.setItem(\"token\", \"\")\r\n dispatch(handleLogout())\r\n }}\r\n >\r\n \r\n Logout\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default UserDropdown\r\n","export default \"data:image/png;base64,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\"","// ** Dropdowns Imports\r\nimport UserDropdown from './UserDropdown'\r\n\r\nconst NavbarUser = () => {\r\n return (\r\n
    \r\n \r\n
\r\n )\r\n}\r\nexport default NavbarUser\r\n","// ** React Imports\r\nimport { Link } from \"react-router-dom\";\r\nimport { Fragment, useEffect, useState } from \"react\";\r\n\r\n// ** Third Party Components\r\nimport * as Icon from \"react-feather\";\r\nimport classnames from \"classnames\";\r\n\r\n// ** Custom Component\r\nimport Autocomplete from \"@components/autocomplete\";\r\n\r\n// ** Reactstrap Imports\r\nimport {\r\n NavItem,\r\n NavLink,\r\n DropdownMenu,\r\n DropdownItem,\r\n DropdownToggle,\r\n UncontrolledTooltip,\r\n UncontrolledDropdown,\r\n} from \"reactstrap\";\r\n\r\n// ** Store & Actions\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n getBookmarks,\r\n updateBookmarked,\r\n handleSearchQuery,\r\n} from \"@store/navbar\";\r\n\r\nconst NavbarBookmarks = (props) => {\r\n // ** Props\r\n const { setMenuVisibility } = props;\r\n\r\n // ** State\r\n const [value, setValue] = useState(\"\");\r\n const [openSearch, setOpenSearch] = useState(false);\r\n\r\n // ** Store Vars\r\n const dispatch = useDispatch();\r\n const store = useSelector((state) => state.navbar);\r\n\r\n // ** ComponentDidMount\r\n useEffect(() => {\r\n dispatch(getBookmarks());\r\n }, []);\r\n\r\n // ** Loops through Bookmarks Array to return Bookmarks\r\n const renderBookmarks = () => {\r\n if (store.bookmarks.length) {\r\n return store.bookmarks\r\n .map((item) => {\r\n const IconTag = Icon[item.icon];\r\n return (\r\n \r\n \r\n \r\n \r\n {item.title}\r\n \r\n \r\n \r\n );\r\n })\r\n .slice(0, 10);\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n // ** If user has more than 10 bookmarks then add the extra Bookmarks to a dropdown\r\n const renderExtraBookmarksDropdown = () => {\r\n if (store.bookmarks.length && store.bookmarks.length >= 11) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {store.bookmarks\r\n .map((item) => {\r\n const IconTag = Icon[item.icon];\r\n return (\r\n \r\n \r\n {item.title}\r\n \r\n );\r\n })\r\n .slice(10)}\r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n // ** Removes query in store\r\n const handleClearQueryInStore = () => dispatch(handleSearchQuery(\"\"));\r\n\r\n // ** Loops through Bookmarks Array to return Bookmarks\r\n const onKeyDown = (e) => {\r\n if (e.keyCode === 27 || e.keyCode === 13) {\r\n setTimeout(() => {\r\n setOpenSearch(false);\r\n handleClearQueryInStore();\r\n }, 1);\r\n }\r\n };\r\n\r\n // ** Function to toggle Bookmarks\r\n const handleBookmarkUpdate = (id) => dispatch(updateBookmarked(id));\r\n\r\n // ** Function to handle Bookmarks visibility\r\n const handleBookmarkVisibility = () => {\r\n setOpenSearch(!openSearch);\r\n setValue(\"\");\r\n handleClearQueryInStore();\r\n };\r\n\r\n // ** Function to handle Input change\r\n const handleInputChange = (e) => {\r\n setValue(e.target.value);\r\n dispatch(handleSearchQuery(e.target.value));\r\n };\r\n\r\n // ** Function to handle external Input click\r\n const handleExternalClick = () => {\r\n if (openSearch === true) {\r\n setOpenSearch(false);\r\n handleClearQueryInStore();\r\n }\r\n };\r\n\r\n // ** Function to clear input value\r\n const handleClearInput = (setUserInput) => {\r\n if (!openSearch) {\r\n setUserInput(\"\");\r\n handleClearQueryInStore();\r\n }\r\n };\r\n\r\n return (\r\n \r\n
    \r\n \r\n setMenuVisibility(true)}\r\n >\r\n \r\n \r\n \r\n
\r\n {/*
    \r\n {renderBookmarks()}\r\n {renderExtraBookmarksDropdown()}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n {openSearch && store.suggestions.length ? (\r\n \r\n handleClearInput(setUserInput)\r\n }\r\n onKeyDown={onKeyDown}\r\n value={value}\r\n onChange={handleInputChange}\r\n customRender={(\r\n item,\r\n i,\r\n filteredData,\r\n activeSuggestion,\r\n onSuggestionItemClick,\r\n onSuggestionItemHover\r\n ) => {\r\n const IconTag = Icon[item.icon ? item.icon : \"X\"];\r\n return (\r\n \r\n onSuggestionItemHover(filteredData.indexOf(item))\r\n }\r\n className={classnames(\r\n \"suggestion-item d-flex align-items-center justify-content-between\",\r\n {\r\n active:\r\n filteredData.indexOf(item) === activeSuggestion,\r\n }\r\n )}\r\n >\r\n {\r\n setOpenSearch(false);\r\n handleClearQueryInStore();\r\n }}\r\n style={{\r\n width: \"calc(90%)\",\r\n }}\r\n >\r\n
    \r\n \r\n {item.title}\r\n
    \r\n \r\n handleBookmarkUpdate(item.id)}\r\n />\r\n \r\n );\r\n }}\r\n />\r\n ) : null}\r\n \r\n
    \r\n
*/}\r\n
\r\n );\r\n};\r\n\r\nexport default NavbarBookmarks;\r\n","// ** React Imports\r\nimport { Fragment } from \"react\";\r\n\r\n// ** Custom Components\r\nimport NavbarUser from \"./NavbarUser\";\r\nimport NavbarBookmarks from \"./NavbarBookmarks\";\r\n\r\nconst ThemeNavbar = (props) => {\r\n // ** Props\r\n const { skin, setSkin, setMenuVisibility } = props;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ThemeNavbar;\r\n","// ** React Imports\r\nimport { useEffect } from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\n\r\n// ** Icons Imports\r\nimport { Disc, X, Circle } from \"react-feather\";\r\n\r\n// ** Config\r\nimport themeConfig from \"@configs/themeConfig\";\r\n\r\nconst VerticalMenuHeader = (props) => {\r\n // ** Props\r\n const {\r\n menuCollapsed,\r\n setMenuCollapsed,\r\n setMenuVisibility,\r\n setGroupOpen,\r\n menuHover,\r\n } = props;\r\n\r\n // ** Reset open group\r\n useEffect(() => {\r\n if (!menuHover && menuCollapsed) setGroupOpen([]);\r\n }, [menuHover, menuCollapsed]);\r\n\r\n // ** Menu toggler component\r\n const Toggler = () => {\r\n if (!menuCollapsed) {\r\n return (\r\n setMenuCollapsed(true)}\r\n />\r\n );\r\n } else {\r\n return (\r\n setMenuCollapsed(false)}\r\n />\r\n );\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
    \r\n
  • \r\n \r\n \r\n \r\n \r\n {/*

    {themeConfig.app.appName}

    */}\r\n
    \r\n
  • \r\n
  • \r\n
    \r\n \r\n setMenuVisibility(false)}\r\n className=\"toggle-icon icon-x d-block d-xl-none\"\r\n size={20}\r\n />\r\n
    \r\n
  • \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VerticalMenuHeader;\r\n","// ** React Imports\r\nimport { useEffect } from 'react'\r\nimport { NavLink, useLocation } from 'react-router-dom'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\n// ** Reactstrap Imports\r\nimport { Badge } from 'reactstrap'\r\n\r\nconst VerticalNavMenuLink = ({ item, activeItem, setActiveItem, currentActiveItem }) => {\r\n // ** Conditional Link Tag, if item has newTab or externalLink props use tag else use NavLink\r\n const LinkTag = item.externalLink ? 'a' : NavLink\r\n\r\n // ** Hooks\r\n const { t } = useTranslation()\r\n const location = useLocation()\r\n\r\n useEffect(() => {\r\n if (currentActiveItem !== null) {\r\n setActiveItem(currentActiveItem)\r\n }\r\n }, [location])\r\n\r\n return (\r\n \r\n {\r\n if (!match) {\r\n return false\r\n }\r\n\r\n if (match.url && match.url !== '' && match.url === item.navLink) {\r\n currentActiveItem = item.navLink\r\n }\r\n }\r\n })}\r\n onClick={e => {\r\n if (item.navLink.length === 0 || item.navLink === '#' || item.disabled === true) {\r\n e.preventDefault()\r\n }\r\n }}\r\n >\r\n {item.icon}\r\n {t(item.title)}\r\n\r\n {item.badge && item.badgeText ? (\r\n \r\n {item.badgeText}\r\n \r\n ) : null}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default VerticalNavMenuLink\r\n","// ** Imports createContext function\r\nimport { createContext } from 'react'\r\n\r\n// ** Imports createContextualCan function\r\nimport { createContextualCan } from '@casl/react'\r\n\r\n// ** Create Context\r\nexport const AbilityContext = createContext()\r\n\r\n// ** Init Can Context\r\nexport const Can = createContextualCan(AbilityContext.Consumer)\r\n","// ** React Imports\r\nimport { useContext } from 'react'\r\nimport { AbilityContext } from '@src/utility/context/Can'\r\n\r\n/**\r\n * Return which component to render based on it's data/context\r\n * @param {Object} item nav menu item\r\n */\r\nexport const resolveVerticalNavMenuItemComponent = item => {\r\n if (item.header) return 'VerticalNavMenuSectionHeader'\r\n if (item.children) return 'VerticalNavMenuGroup'\r\n return 'VerticalNavMenuLink'\r\n}\r\n\r\n/**\r\n * Return which component to render based on it's data/context\r\n * @param {Object} item nav menu item\r\n */\r\nexport const resolveHorizontalNavMenuItemComponent = item => {\r\n if (item.children) return 'HorizontalNavMenuGroup'\r\n return 'HorizontalNavMenuLink'\r\n}\r\n\r\n/**\r\n * Check if nav-link is active\r\n * @param {Object} link nav-link object\r\n */\r\nexport const isNavLinkActive = (link, currentURL, routerProps) => {\r\n return (\r\n currentURL === link ||\r\n (routerProps && routerProps.meta && routerProps.meta.navLink && routerProps.meta.navLink === link)\r\n )\r\n // return currentURL === link\r\n}\r\n\r\n/**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param activeItem\r\n */\r\nexport const hasActiveChild = (item, currentUrl) => {\r\n const { children } = item\r\n\r\n if (!children) {\r\n return false\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (hasActiveChild(child, currentUrl)) {\r\n return true\r\n }\r\n }\r\n\r\n // Check if the child has a link and is active\r\n if (child && child.navLink && currentUrl && (child.navLink === currentUrl || currentUrl.includes(child.navLink))) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n}\r\n\r\n/**\r\n * Check if this is a children\r\n * of the given item\r\n *\r\n * @param children\r\n * @param openGroup\r\n * @param currentActiveGroup\r\n */\r\nexport const removeChildren = (children, openGroup, currentActiveGroup) => {\r\n children.forEach(child => {\r\n if (!currentActiveGroup.includes(child.id)) {\r\n const index = openGroup.indexOf(child.id)\r\n if (index > -1) openGroup.splice(index, 1)\r\n if (child.children) removeChildren(child.children, openGroup, currentActiveGroup)\r\n }\r\n })\r\n}\r\n\r\nexport const canViewMenuGroup = item => {\r\n const ability = useContext(AbilityContext)\r\n // ! This same logic is used in canViewHorizontalNavMenuGroup and canViewHorizontalNavMenuHeaderGroup. So make sure to update logic in them as well\r\n const hasAnyVisibleChild = item.children && item.children.some(i => ability.can(i.action, i.resource))\r\n\r\n // ** If resource and action is defined in item => Return based on children visibility (Hide group if no child is visible)\r\n // ** Else check for ability using provided resource and action along with checking if has any visible child\r\n if (!(item.action && item.resource)) {\r\n return hasAnyVisibleChild\r\n }\r\n return ability.can(item.action, item.resource) && hasAnyVisibleChild\r\n}\r\n\r\nexport const canViewMenuItem = item => {\r\n const ability = useContext(AbilityContext)\r\n return ability.can(item.action, item.resource)\r\n}\r\n","// ** React Imports\r\nimport { useEffect } from 'react'\r\nimport { Link, useLocation } from 'react-router-dom'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\n// ** Reactstrap Imports\r\nimport { Collapse, Badge } from 'reactstrap'\r\n\r\n// ** Vertical Menu Items Component\r\nimport VerticalNavMenuItems from './VerticalNavMenuItems'\r\n\r\n// ** Utils\r\nimport { hasActiveChild, removeChildren } from '@layouts/utils'\r\n\r\nconst VerticalNavMenuGroup = ({\r\n item,\r\n groupOpen,\r\n menuHover,\r\n activeItem,\r\n parentItem,\r\n routerProps,\r\n groupActive,\r\n currentActiveGroup,\r\n setGroupOpen,\r\n setActiveItem,\r\n menuCollapsed,\r\n setGroupActive,\r\n setCurrentActiveGroup,\r\n currentActiveItem,\r\n ...rest\r\n}) => {\r\n // ** Hooks\r\n const { t } = useTranslation()\r\n const location = useLocation()\r\n\r\n // ** Current Val\r\n const currentURL = useLocation().pathname\r\n\r\n // ** Toggle Open Group\r\n const toggleOpenGroup = (item, parent) => {\r\n let openGroup = groupOpen\r\n const activeGroup = groupActive\r\n\r\n // ** If Group is already open and clicked, close the group\r\n if (openGroup.includes(item.id)) {\r\n openGroup.splice(openGroup.indexOf(item.id), 1)\r\n\r\n // ** If clicked Group has open group children, Also remove those children to close those groups\r\n if (item.children) {\r\n removeChildren(item.children, openGroup, groupActive)\r\n }\r\n } else if (activeGroup.includes(item.id) || currentActiveGroup.includes(item.id)) {\r\n // ** If Group clicked is Active Group\r\n\r\n // ** If Active group is closed and clicked again, we should open active group else close active group\r\n if (!activeGroup.includes(item.id) && currentActiveGroup.includes(item.id)) {\r\n activeGroup.push(item.id)\r\n } else {\r\n activeGroup.splice(activeGroup.indexOf(item.id), 1)\r\n }\r\n\r\n // ** Update Active Group\r\n setGroupActive([...activeGroup])\r\n } else if (parent) {\r\n // ** If Group clicked is the child of a open group, first remove all the open groups under that parent\r\n if (parent.children) {\r\n removeChildren(parent.children, openGroup, groupActive)\r\n }\r\n\r\n // ** After removing all the open groups under that parent, add the clicked group to open group array\r\n if (!openGroup.includes(item.id)) {\r\n openGroup.push(item.id)\r\n }\r\n } else {\r\n // ** If clicked on another group that is not active or open, create openGroup array from scratch\r\n\r\n // ** Empty Open Group array\r\n openGroup = []\r\n\r\n // ** Push current clicked group item to Open Group array\r\n if (!openGroup.includes(item.id)) {\r\n openGroup.push(item.id)\r\n }\r\n }\r\n setGroupOpen([...openGroup])\r\n }\r\n\r\n // ** On Group Item Click\r\n const onCollapseClick = (e, item) => {\r\n toggleOpenGroup(item, parentItem)\r\n\r\n e.preventDefault()\r\n }\r\n\r\n // ** Checks url & updates active item\r\n useEffect(() => {\r\n if (hasActiveChild(item, currentURL)) {\r\n if (!groupActive.includes(item.id)) groupActive.push(item.id)\r\n } else {\r\n const index = groupActive.indexOf(item.id)\r\n if (index > -1) groupActive.splice(index, 1)\r\n }\r\n setGroupActive([...groupActive])\r\n setCurrentActiveGroup([...groupActive])\r\n setGroupOpen([])\r\n }, [location])\r\n\r\n // ** Returns condition to add open class\r\n const openClassCondition = id => {\r\n if ((menuCollapsed && menuHover) || menuCollapsed === false) {\r\n if (groupActive.includes(id) || groupOpen.includes(id)) {\r\n return true\r\n }\r\n } else if (groupActive.includes(id) && menuCollapsed && menuHover === false) {\r\n return false\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n \r\n onCollapseClick(e, item)}>\r\n {item.icon}\r\n {t(item.title)}\r\n\r\n {item.badge && item.badgeText ? (\r\n \r\n {item.badgeText}\r\n \r\n ) : null}\r\n \r\n\r\n {/* Render Child Recursively Through VerticalNavMenuItems Component */}\r\n
    \r\n \r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default VerticalNavMenuGroup\r\n","// ** Third Party Components\r\nimport { MoreHorizontal } from 'react-feather'\r\n\r\nconst VerticalNavMenuSectionHeader = ({ item }) => {\r\n return (\r\n
  • \r\n {item.header}\r\n \r\n
  • \r\n )\r\n}\r\n\r\nexport default VerticalNavMenuSectionHeader\r\n","// ** Vertical Menu Components\r\nimport VerticalNavMenuLink from './VerticalNavMenuLink'\r\nimport VerticalNavMenuGroup from './VerticalNavMenuGroup'\r\nimport VerticalNavMenuSectionHeader from './VerticalNavMenuSectionHeader'\r\n\r\n// ** Utils\r\nimport { resolveVerticalNavMenuItemComponent as resolveNavItemComponent } from '@layouts/utils'\r\n\r\nconst VerticalMenuNavItems = props => {\r\n // ** Components Object\r\n const Components = {\r\n VerticalNavMenuLink,\r\n VerticalNavMenuGroup,\r\n VerticalNavMenuSectionHeader\r\n }\r\n\r\n // ** Render Nav Menu Items\r\n const RenderNavItems = props.items.map((item, index) => {\r\n const TagName = Components[resolveNavItemComponent(item)]\r\n if (item.children) {\r\n return \r\n }\r\n return \r\n })\r\n\r\n return RenderNavItems\r\n}\r\n\r\nexport default VerticalMenuNavItems\r\n","// ** React Imports\r\nimport { Fragment, useState, useRef } from 'react'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\nimport PerfectScrollbar from 'react-perfect-scrollbar'\r\n\r\n// ** Vertical Menu Components\r\nimport VerticalMenuHeader from './VerticalMenuHeader'\r\nimport VerticalNavMenuItems from './VerticalNavMenuItems'\r\n\r\nconst Sidebar = props => {\r\n // ** Props\r\n const { menuCollapsed, routerProps, menu, currentActiveItem, skin, menuData } = props\r\n\r\n // ** States\r\n const [groupOpen, setGroupOpen] = useState([])\r\n const [groupActive, setGroupActive] = useState([])\r\n const [currentActiveGroup, setCurrentActiveGroup] = useState([])\r\n const [activeItem, setActiveItem] = useState(null)\r\n\r\n // ** Menu Hover State\r\n const [menuHover, setMenuHover] = useState(false)\r\n\r\n // ** Ref\r\n const shadowRef = useRef(null)\r\n\r\n // ** Function to handle Mouse Enter\r\n const onMouseEnter = () => {\r\n setMenuHover(true)\r\n }\r\n\r\n // ** Scroll Menu\r\n const scrollMenu = container => {\r\n if (shadowRef && container.scrollTop > 0) {\r\n if (!shadowRef.current.classList.contains('d-block')) {\r\n shadowRef.current.classList.add('d-block')\r\n }\r\n } else {\r\n if (shadowRef.current.classList.contains('d-block')) {\r\n shadowRef.current.classList.remove('d-block')\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n setMenuHover(false)}\r\n >\r\n {menu ? (\r\n menu({ ...props })\r\n ) : (\r\n \r\n {/* Vertical Menu Header */}\r\n \r\n {/* Vertical Menu Header Shadow */}\r\n
    \r\n {/* Perfect Scrollbar */}\r\n scrollMenu(container)}\r\n >\r\n
      \r\n \r\n
    \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default Sidebar\r\n","// ** Store Imports\r\nimport { handleNavbarType } from '@store/layout'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nexport const useNavbarType = () => {\r\n // ** Hooks\r\n const dispatch = useDispatch()\r\n const store = useSelector(state => state.layout)\r\n\r\n const setNavbarType = type => {\r\n dispatch(handleNavbarType(type))\r\n }\r\n\r\n return { navbarType: store.navbarType, setNavbarType }\r\n}\r\n","// ** Store Imports\r\nimport { handleFooterType } from '@store/layout'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nexport const useFooterType = () => {\r\n // ** Hooks\r\n const dispatch = useDispatch()\r\n const store = useSelector(state => state.layout)\r\n\r\n const setFooterType = type => {\r\n dispatch(handleFooterType(type))\r\n }\r\n\r\n return {\r\n setFooterType,\r\n footerType: store.footerType\r\n }\r\n}\r\n","// ** Store Imports\r\nimport { handleNavbarColor } from '@store/layout'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nexport const useNavbarColor = () => {\r\n // ** Hooks\r\n const dispatch = useDispatch()\r\n const store = useSelector(state => state.layout)\r\n\r\n // ** Return a wrapped version of useState's setter function\r\n const setNavbarColor = value => {\r\n dispatch(handleNavbarColor(value))\r\n }\r\n\r\n return { navbarColor: store.navbarColor, setNavbarColor }\r\n}\r\n","// ** React Imports\r\nimport { useState, useEffect } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\n// ** Store & Actions\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { handleMenuCollapsed, handleContentWidth, handleMenuHidden } from '@store/layout'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\nimport { ArrowUp } from 'react-feather'\r\n\r\n// ** Reactstrap Imports\r\nimport { Navbar, Button } from 'reactstrap'\r\n\r\n// ** Configs\r\nimport themeConfig from '@configs/themeConfig'\r\n\r\n// ** Custom Components\r\nimport Customizer from '@components/customizer'\r\nimport ScrollToTop from '@components/scrolltop'\r\nimport FooterComponent from './components/footer'\r\nimport NavbarComponent from './components/navbar'\r\nimport SidebarComponent from './components/menu/vertical-menu'\r\n\r\n// ** Custom Hooks\r\nimport { useRTL } from '@hooks/useRTL'\r\nimport { useSkin } from '@hooks/useSkin'\r\nimport { useNavbarType } from '@hooks/useNavbarType'\r\nimport { useFooterType } from '@hooks/useFooterType'\r\nimport { useNavbarColor } from '@hooks/useNavbarColor'\r\n\r\n// ** Styles\r\nimport '@styles/base/core/menu/menu-types/vertical-menu.scss'\r\nimport '@styles/base/core/menu/menu-types/vertical-overlay-menu.scss'\r\n\r\nconst VerticalLayout = props => {\r\n // ** Props\r\n const { menu, navbar, footer, menuData, children, routerProps, setLastLayout, currentActiveItem } = props\r\n\r\n // ** Hooks\r\n const [isRtl, setIsRtl] = useRTL()\r\n const { skin, setSkin } = useSkin()\r\n const { navbarType, setNavbarType } = useNavbarType()\r\n const { footerType, setFooterType } = useFooterType()\r\n const { navbarColor, setNavbarColor } = useNavbarColor()\r\n\r\n // ** States\r\n const [isMounted, setIsMounted] = useState(false)\r\n const [menuVisibility, setMenuVisibility] = useState(false)\r\n const [windowWidth, setWindowWidth] = useState(window.innerWidth)\r\n\r\n // ** Store Vars\r\n const dispatch = useDispatch()\r\n const layoutStore = useSelector(state => state.layout)\r\n\r\n // ** Update Window Width\r\n const handleWindowWidth = () => {\r\n setWindowWidth(window.innerWidth)\r\n }\r\n\r\n // ** Vars\r\n const location = useLocation()\r\n const contentWidth = layoutStore.contentWidth\r\n const menuCollapsed = layoutStore.menuCollapsed\r\n const isHidden = layoutStore.menuHidden\r\n\r\n // ** Toggles Menu Collapsed\r\n const setMenuCollapsed = val => dispatch(handleMenuCollapsed(val))\r\n\r\n // ** Handles Content Width\r\n const setContentWidth = val => dispatch(handleContentWidth(val))\r\n\r\n // ** Handles Content Width\r\n const setIsHidden = val => dispatch(handleMenuHidden(val))\r\n\r\n //** This function will detect the Route Change and will hide the menu on menu item click\r\n useEffect(() => {\r\n if (menuVisibility && windowWidth < 1200) {\r\n setMenuVisibility(false)\r\n }\r\n }, [location])\r\n\r\n //** Sets Window Size & Layout Props\r\n useEffect(() => {\r\n if (window !== undefined) {\r\n window.addEventListener('resize', handleWindowWidth)\r\n }\r\n }, [windowWidth])\r\n\r\n //** ComponentDidMount\r\n useEffect(() => {\r\n setIsMounted(true)\r\n return () => setIsMounted(false)\r\n }, [])\r\n\r\n // ** Vars\r\n const footerClasses = {\r\n static: 'footer-static',\r\n sticky: 'footer-fixed',\r\n hidden: 'footer-hidden'\r\n }\r\n\r\n const navbarWrapperClasses = {\r\n floating: 'navbar-floating',\r\n sticky: 'navbar-sticky',\r\n static: 'navbar-static',\r\n hidden: 'navbar-hidden'\r\n }\r\n\r\n const navbarClasses = {\r\n floating: contentWidth === 'boxed' ? 'floating-nav container-xxl' : 'floating-nav',\r\n sticky: 'fixed-top',\r\n static: 'navbar-static-top',\r\n hidden: 'd-none'\r\n }\r\n\r\n const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white'\r\n\r\n if (!isMounted) {\r\n return null\r\n }\r\n return (\r\n = 1200,\r\n 'menu-collapsed': menuCollapsed && windowWidth >= 1200,\r\n 'menu-expanded': !menuCollapsed && windowWidth > 1200,\r\n\r\n // Overlay Menu\r\n 'vertical-overlay-menu': windowWidth < 1200,\r\n 'menu-hide': !menuVisibility && windowWidth < 1200,\r\n 'menu-open': menuVisibility && windowWidth < 1200\r\n }\r\n )}\r\n {...(isHidden ? { 'data-col': '1-column' } : {})}\r\n >\r\n {!isHidden ? (\r\n \r\n ) : null}\r\n\r\n \r\n
    \r\n {navbar ? (\r\n navbar({ skin, setSkin, setMenuVisibility })\r\n ) : (\r\n \r\n )}\r\n
    \r\n \r\n {children}\r\n\r\n {/* Vertical Nav Menu Overlay */}\r\n setMenuVisibility(false)}\r\n >\r\n {/* Vertical Nav Menu Overlay */}\r\n\r\n {themeConfig.layout.customizer === true ? (\r\n \r\n ) : null}\r\n \r\n {footer ? footer : }\r\n \r\n\r\n {themeConfig.layout.scrollTop === true ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : null}\r\n \r\n )\r\n}\r\n\r\nexport default VerticalLayout\r\n","import React from \"react\";\n\nfunction MyFreezerInventoryIcon({ color, size, className }) {\n return (\n <>\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default MyFreezerInventoryIcon;\n","import {\r\n Mail,\r\n Home,\r\n User,\r\n Calendar,\r\n Heart,\r\n List,\r\n FileText,\r\n} from \"react-feather\";\r\nimport { BiFoodMenu, BiHomeAlt } from \"react-icons/bi\";\r\nimport { MdOutlineInventory, MdRestaurantMenu } from \"react-icons/md\";\r\nimport { BsCalendar2Check } from \"react-icons/bs\";\r\nimport RecipeIcon from \"../../components/RecipeIcon\";\r\nimport PlanFreezerMealPreDayIcon from \"../../components/PlanFreezerMealPreDayIcon\";\r\nimport MyFreezerInventoryIcon from \"../../components/MyFreezerInventoryIcon\";\r\nexport default [\r\n // {\r\n // id: \"home\",\r\n // title: \"Home\",\r\n // icon: ,\r\n // navLink: \"/home\",\r\n // },\r\n // {\r\n // id: \"listing\",\r\n // title: \"Listing\",\r\n // icon: ,\r\n // navLink: \"/listing\",\r\n // },\r\n // {\r\n // id: \"dashboard\",\r\n // title: \"Dashboard\",\r\n // icon: ,\r\n // navLink: \"/dashboard\",\r\n // },\r\n {\r\n id: \"plan-meals-on-calendar\",\r\n title: \"Plan Meals on Calendar\",\r\n icon: ,\r\n navLink: \"/plan-meals-on-calendar\",\r\n },\r\n {\r\n id: \"plan-freezer-prep-day\",\r\n title: \"Plan Freezer Prep Day\",\r\n // icon: ,\r\n icon: ,\r\n navLink: \"/plan-freezer\",\r\n },\r\n {\r\n id: \"favourite-meals\",\r\n title: \"Favorite Menus\",\r\n icon: ,\r\n navLink: \"/favourite-meals\",\r\n },\r\n {\r\n id: \"Recipe\",\r\n title: \"Recipes\",\r\n // icon: ,\r\n icon: ,\r\n navLink: \"/recipe\",\r\n },\r\n {\r\n id: \"ingredients\",\r\n title: \"Ingredients\",\r\n icon: ,\r\n navLink: \"/ingredients\",\r\n },\r\n {\r\n id: \"freezer-inventory\",\r\n title: \"My Freezer Inventory\",\r\n icon: ,\r\n // icon: ,\r\n navLink: \"/freezer-inventory\",\r\n },\r\n {\r\n id: \"grocery-list\",\r\n title: \"Grocery List & Reports\",\r\n icon: ,\r\n navLink: \"/grocery-list-and-reports\",\r\n },\r\n];\r\n","// ** Core Layout Import\r\n// !Do not remove the Layout import\r\nimport Layout from '@layouts/VerticalLayout'\r\n\r\n// ** Menu Items Array\r\nimport navigation from '@src/navigation/vertical'\r\n\r\nconst VerticalLayout = props => {\r\n // const [menuData, setMenuData] = useState([])\r\n\r\n // ** For ServerSide navigation\r\n // useEffect(() => {\r\n // axios.get(URL).then(response => setMenuData(response.data))\r\n // }, [])\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default VerticalLayout\r\n","// ** React Imports\r\nimport { useEffect } from 'react'\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\nconst HorizontalNavMenuLink = ({ item, isChild, activeItem, setActiveItem, setOpenDropdown, currentActiveItem }) => {\r\n // ** Conditional Link Tag, if item has newTab or externalLink props use
    tag else use NavLink\r\n const LinkTag = item.externalLink ? 'a' : NavLink\r\n\r\n // ** Hooks\r\n const { t } = useTranslation()\r\n\r\n // ** Remove all items from OpenDropdown array\r\n const resetOpenDropdowns = () => setOpenDropdown([])\r\n\r\n // ** On mount update active group array\r\n useEffect(() => {\r\n if (currentActiveItem !== null) {\r\n setActiveItem(currentActiveItem)\r\n }\r\n }, [location.pathname])\r\n\r\n return (\r\n \r\n {\r\n if (!match) {\r\n return false\r\n }\r\n\r\n if (match.url && match.url !== '' && match.url === item.navLink) {\r\n currentActiveItem = item.navLink\r\n }\r\n }\r\n })}\r\n /*eslint-enable */\r\n >\r\n {item.icon}\r\n {t(item.title)}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default HorizontalNavMenuLink\r\n","// ** React Imports\r\nimport { useEffect } from 'react'\r\nimport { Link, useLocation } from 'react-router-dom'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\nimport { useTranslation } from 'react-i18next'\r\n\r\n// ** Reactstrap Imports\r\nimport { Dropdown, DropdownMenu, DropdownToggle } from 'reactstrap'\r\n\r\n// ** Utils\r\nimport { hasActiveChild } from '@layouts/utils'\r\n\r\n// ** Horizontal Menu Items Component\r\nimport HorizontalNavMenuItems from './HorizontalNavMenuItems'\r\n\r\nconst HorizontalNavMenuGroup = props => {\r\n // ** Props\r\n const {\r\n item,\r\n submenu,\r\n activeItem,\r\n routerProps,\r\n groupActive,\r\n onMouseEnter,\r\n onMouseLeave,\r\n openDropdown,\r\n setActiveItem,\r\n setGroupActive,\r\n setOpenDropdown,\r\n currentActiveItem\r\n } = props\r\n\r\n // ** Hooks\r\n const { t } = useTranslation()\r\n const location = useLocation()\r\n\r\n // ** URL Var\r\n const currentURL = useLocation().pathname\r\n\r\n useEffect(() => {\r\n if (hasActiveChild(item, currentURL)) {\r\n if (!groupActive.includes(item.id)) groupActive.push(item.id)\r\n } else {\r\n const index = groupActive.indexOf(item.id)\r\n if (index > -1) groupActive.splice(index, 1)\r\n }\r\n setGroupActive([...groupActive])\r\n }, [location])\r\n\r\n // ** Dropdown menu modifiers\r\n const menuModifiers = [\r\n {\r\n enabled: true,\r\n phase: 'write',\r\n name: 'setMaxHeight',\r\n fn: data => {\r\n const pageHeight = window.innerHeight,\r\n popperEl = data.state.elements.popper,\r\n ddTop = popperEl.getBoundingClientRect().top,\r\n ddHeight = popperEl.clientHeight\r\n\r\n let maxHeight, stylesObj\r\n\r\n // ** Calculate and set height\r\n if (pageHeight - ddTop - ddHeight - 28 < 1) {\r\n maxHeight = pageHeight - ddTop - 25\r\n stylesObj = {\r\n maxHeight,\r\n overflowY: 'auto'\r\n }\r\n }\r\n\r\n const ddRef = popperEl.getBoundingClientRect()\r\n\r\n // ** If there is not space left to open sub menu open it to the right\r\n if (ddRef.left + ddRef.width - (window.innerWidth - 16) >= 0) {\r\n popperEl.closest('.dropdown').classList.add('openLeft')\r\n }\r\n\r\n data.state.styles.popper = { ...data.state.styles.popper, ...stylesObj }\r\n }\r\n }\r\n ]\r\n return (\r\n null}\r\n className={classnames({\r\n 'nav-item': submenu === false,\r\n 'dropdown-submenu': submenu === true,\r\n 'sidebar-group-active active': groupActive.includes(item.id)\r\n })}\r\n isOpen={openDropdown.includes(item.id)}\r\n onMouseEnter={() => onMouseEnter(item.id)}\r\n onMouseLeave={() => onMouseLeave(item.id)}\r\n >\r\n e.preventDefault()}\r\n className={classnames('dropdown-toggle d-flex align-items-center', {\r\n 'dropdown-item': submenu === true,\r\n 'nav-link': submenu === false\r\n })}\r\n >\r\n {item.icon}\r\n {t(item.title)}\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default HorizontalNavMenuGroup\r\n","// ** Menu Components Imports\r\nimport HorizontalNavMenuLink from './HorizontalNavMenuLink'\r\nimport HorizontalNavMenuGroup from './HorizontalNavMenuGroup'\r\nimport { resolveHorizontalNavMenuItemComponent as resolveNavItemComponent } from '@layouts/utils'\r\n\r\nconst HorizontalNavMenuItems = props => {\r\n // ** Components Object\r\n const Components = {\r\n HorizontalNavMenuGroup,\r\n HorizontalNavMenuLink\r\n }\r\n\r\n // ** Render Nav Items\r\n const RenderNavItems = props.items.map((item, index) => {\r\n const TagName = Components[resolveNavItemComponent(item)]\r\n if (item.children) {\r\n return \r\n }\r\n return \r\n })\r\n\r\n return RenderNavItems\r\n}\r\n\r\nexport default HorizontalNavMenuItems\r\n","// ** React Imports\r\nimport { useState } from 'react'\r\n\r\n// ** Horizontal Menu Components\r\nimport HorizontalNavMenuItems from './HorizontalNavMenuItems'\r\n\r\nconst HorizontalMenu = ({ menuData, currentActiveItem, routerProps }) => {\r\n // ** States\r\n const [activeItem, setActiveItem] = useState(null)\r\n const [groupActive, setGroupActive] = useState([])\r\n const [openDropdown, setOpenDropdown] = useState([])\r\n\r\n // ** On mouse enter push the ID to openDropdown array\r\n const onMouseEnter = id => {\r\n const arr = openDropdown\r\n arr.push(id)\r\n setOpenDropdown([...arr])\r\n }\r\n\r\n // ** On mouse leave remove the ID to openDropdown array\r\n const onMouseLeave = id => {\r\n const arr = openDropdown\r\n arr.splice(arr.indexOf(id), 1)\r\n setOpenDropdown([...arr])\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default HorizontalMenu\r\n","// ** React Imports\r\nimport { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\n\r\n// ** Store & Actions\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { handleMenuHidden, handleContentWidth } from '@store/layout'\r\n\r\n// ** Third Party Components\r\nimport classnames from 'classnames'\r\nimport { ArrowUp } from 'react-feather'\r\n\r\n// ** Reactstrap Imports\r\nimport { Navbar, NavItem, Button } from 'reactstrap'\r\n\r\n// ** Configs\r\nimport themeConfig from '@configs/themeConfig'\r\n\r\n// ** Custom Components\r\nimport Customizer from '@components/customizer'\r\nimport ScrollToTop from '@components/scrolltop'\r\nimport NavbarComponent from './components/navbar'\r\nimport FooterComponent from './components/footer'\r\nimport MenuComponent from './components/menu/horizontal-menu'\r\n\r\n// ** Custom Hooks\r\nimport { useRTL } from '@hooks/useRTL'\r\nimport { useSkin } from '@hooks/useSkin'\r\nimport { useNavbarType } from '@hooks/useNavbarType'\r\nimport { useFooterType } from '@hooks/useFooterType'\r\nimport { useNavbarColor } from '@hooks/useNavbarColor'\r\n\r\n// ** Styles\r\nimport '@styles/base/core/menu/menu-types/horizontal-menu.scss'\r\n\r\nconst HorizontalLayout = props => {\r\n // ** Props\r\n const { children, navbar, menuData, footer, menu, currentActiveItem, routerProps, setLastLayout } = props\r\n\r\n // ** Hooks\r\n const { skin, setSkin } = useSkin()\r\n const [isRtl, setIsRtl] = useRTL()\r\n const { navbarType, setNavbarType } = useNavbarType()\r\n const { footerType, setFooterType } = useFooterType()\r\n const { navbarColor, setNavbarColor } = useNavbarColor()\r\n\r\n // ** States\r\n const [isMounted, setIsMounted] = useState(false)\r\n const [navbarScrolled, setNavbarScrolled] = useState(false)\r\n\r\n // ** Store Vars\r\n const dispatch = useDispatch()\r\n const layoutStore = useSelector(state => state.layout)\r\n\r\n // ** Vars\r\n const contentWidth = layoutStore.contentWidth\r\n const isHidden = layoutStore.menuHidden\r\n\r\n // ** Handles Content Width\r\n const setContentWidth = val => dispatch(handleContentWidth(val))\r\n\r\n // ** Handles Content Width\r\n const setIsHidden = val => dispatch(handleMenuHidden(val))\r\n\r\n // ** UseEffect Cleanup\r\n const cleanup = () => {\r\n setIsMounted(false)\r\n setNavbarScrolled(false)\r\n }\r\n\r\n //** ComponentDidMount\r\n useEffect(() => {\r\n setIsMounted(true)\r\n window.addEventListener('scroll', function () {\r\n if (window.pageYOffset > 65 && navbarScrolled === false) {\r\n setNavbarScrolled(true)\r\n }\r\n if (window.pageYOffset < 65) {\r\n setNavbarScrolled(false)\r\n }\r\n })\r\n return () => cleanup()\r\n }, [])\r\n\r\n // ** Vars\r\n const footerClasses = {\r\n static: 'footer-static',\r\n sticky: 'footer-fixed',\r\n hidden: 'footer-hidden'\r\n }\r\n\r\n const navbarWrapperClasses = {\r\n floating: 'navbar-floating',\r\n sticky: 'navbar-sticky',\r\n static: 'navbar-static'\r\n }\r\n\r\n const navbarClasses = {\r\n floating: contentWidth === 'boxed' ? 'floating-nav container-xxl' : 'floating-nav',\r\n sticky: 'fixed-top'\r\n }\r\n\r\n const bgColorCondition = navbarColor !== '' && navbarColor !== 'light' && navbarColor !== 'white'\r\n\r\n if (!isMounted) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n \r\n {!navbar && (\r\n
    \r\n
      \r\n \r\n \r\n \r\n logo\r\n \r\n

      {themeConfig.app.appName}

      \r\n \r\n
      \r\n
    \r\n
    \r\n )}\r\n\r\n
    \r\n {navbar ? navbar({ skin, setSkin }) : }\r\n
    \r\n \r\n {!isHidden ? (\r\n
    \r\n \r\n {menu ? (\r\n menu({ menuData, routerProps, currentActiveItem })\r\n ) : (\r\n \r\n )}\r\n \r\n
    \r\n ) : null}\r\n\r\n {children}\r\n {themeConfig.layout.customizer === true ? (\r\n \r\n ) : null}\r\n \r\n {footer ? footer : }\r\n \r\n\r\n {themeConfig.layout.scrollTop === true ? (\r\n
    \r\n \r\n \r\n \r\n
    \r\n ) : null}\r\n \r\n )\r\n}\r\nexport default HorizontalLayout\r\n","import { Mail, Home } from 'react-feather'\r\n\r\nexport default [\r\n {\r\n id: 'home',\r\n title: 'Home',\r\n icon: ,\r\n navLink: '/home'\r\n },\r\n {\r\n id: 'secondPage',\r\n title: 'Second Page',\r\n icon: ,\r\n navLink: '/second-page'\r\n }\r\n]\r\n","// ** Core Layout Import\r\n// !Do not remove the Layout import\r\nimport Layout from '@layouts/HorizontalLayout'\r\n\r\n// ** Menu Items Array\r\nimport navigation from '@src/navigation/horizontal'\r\n\r\nconst HorizontalLayout = props => {\r\n // const [menuData, setMenuData] = useState([])\r\n\r\n // ** For ServerSide navigation\r\n // useEffect(() => {\r\n // axios.get(URL).then(response => setMenuData(response.data))\r\n // }, [])\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport default HorizontalLayout\r\n","// ** React Imports\r\nimport { Suspense, lazy, Fragment } from \"react\";\r\n\r\n// ** Utils\r\nimport { useLayout } from \"@hooks/useLayout\";\r\nimport { useRouterTransition } from \"@hooks/useRouterTransition\";\r\n\r\n// ** Custom Components\r\nimport LayoutWrapper from \"@layouts/components/layout-wrapper\";\r\n\r\n// ** Router Components\r\nimport {\r\n BrowserRouter as AppRouter,\r\n Route,\r\n Switch,\r\n Redirect,\r\n} from \"react-router-dom\";\r\n\r\n// ** Routes & Default Routes\r\nimport { DefaultRoute, Routes } from \"./routes\";\r\n\r\n// ** Layouts\r\nimport BlankLayout from \"@layouts/BlankLayout\";\r\nimport VerticalLayout from \"@src/layouts/VerticalLayout\";\r\nimport HorizontalLayout from \"@src/layouts/HorizontalLayout\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst Router = () => {\r\n // ** Hooks\r\n const { layout, setLayout, setLastLayout } = useLayout();\r\n const { transition, setTransition } = useRouterTransition();\r\n const login = useSelector((state) => state.auth.login);\r\n const role = useSelector((state) => state.auth.role);\r\n const verifyEmailRoute = useSelector((state) => state.wizard.verifyEmailRoute)\r\n\r\n // ** Default Layout\r\n const DefaultLayout =\r\n layout === \"horizontal\" ? \"HorizontalLayout\" : \"VerticalLayout\";\r\n\r\n // ** All of the available layouts\r\n const Layouts = { BlankLayout, VerticalLayout, HorizontalLayout };\r\n\r\n // ** Current Active Item\r\n const currentActiveItem = null;\r\n\r\n // ** Return Filtered Array of Routes & Paths\r\n const LayoutRoutesAndPaths = (layout) => {\r\n const LayoutRoutes = [];\r\n const LayoutPaths = [];\r\n\r\n if (Routes) {\r\n Routes.filter((route) => {\r\n // ** Checks if Route layout or Default layout matches current layout\r\n if (\r\n route.layout === layout ||\r\n (route.layout === undefined && DefaultLayout === layout)\r\n ) {\r\n LayoutRoutes.push(route);\r\n LayoutPaths.push(route.path);\r\n }\r\n });\r\n }\r\n\r\n return { LayoutRoutes, LayoutPaths };\r\n };\r\n\r\n const NotAuthorized = lazy(() => import(\"@src/views/theme/NotAuthorized\"));\r\n\r\n // ** Init Error Component\r\n const Error = lazy(() => import(\"@src/views/theme/Error\"));\r\n\r\n /**\r\n ** Final Route Component Checks for Login & User Role and then redirects to the route\r\n */\r\n const FinalRoute = (props) => {\r\n const route = props.route;\r\n let action, resource;\r\n // ** Assign vars based on route meta\r\n if (route.meta) {\r\n action = route.meta.action ? route.meta.action : null;\r\n resource = route.meta.resource ? route.meta.resource : null;\r\n }\r\n\r\n // if(route.validate){\r\n // if(login && !route.validate(role)){\r\n // return \r\n // }\r\n // }\r\n if (!login && route.meta === undefined) {\r\n return ;\r\n } else if (route.meta && route.meta.authRoute && login) {\r\n // ** If route has meta and authRole and user is Logged in then redirect user to home page (DefaultRoute)\r\n return ;\r\n } else {\r\n // ** If none of the above render component\r\n return ;\r\n }\r\n };\r\n\r\n // ** Return Route to Render\r\n const ResolveRoutes = () => {\r\n return Object.keys(Layouts).map((layout, index) => {\r\n // ** Convert Layout parameter to Layout Component\r\n // ? Note: make sure to keep layout and component name equal\r\n\r\n const LayoutTag = Layouts[layout];\r\n\r\n // ** Get Routes and Paths of the Layout\r\n const { LayoutRoutes, LayoutPaths } = LayoutRoutesAndPaths(layout);\r\n\r\n // ** We have freedom to display different layout for different route\r\n // ** We have made LayoutTag dynamic based on layout, we can also replace it with the only layout component,\r\n // ** that we want to implement like VerticalLayout or HorizontalLayout\r\n // ** We segregated all the routes based on the layouts and Resolved all those routes inside layouts\r\n\r\n // ** RouterProps to pass them to Layouts\r\n const routerProps = {};\r\n\r\n return (\r\n \r\n \r\n \r\n {LayoutRoutes.map((route) => {\r\n return (\r\n {\r\n // ** Assign props to routerProps\r\n Object.assign(routerProps, {\r\n ...props,\r\n meta: route.meta,\r\n });\r\n\r\n return (\r\n \r\n {/* Layout Wrapper to add classes based on route's layout, appLayout and className */}\r\n\r\n {route.layout === \"BlankLayout\" ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }}\r\n />\r\n );\r\n })}\r\n \r\n \r\n \r\n );\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n {/* If user is logged in Redirect user to DefaultRoute else to login */}\r\n {\r\n return login ? (\r\n \r\n ) : (\r\n \r\n );\r\n }}\r\n />\r\n {/* Not Auth Route */}\r\n (\r\n \r\n \r\n \r\n )}\r\n />\r\n {ResolveRoutes()}\r\n\r\n {/* NotFound Error page */}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Router;\r\n","//** React Imports\r\n// import { useEffect, useCallback } from 'react'\r\n\r\n// ** Store Imports\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { handleLayout, handleLastLayout } from '@store/layout'\r\n\r\nexport const useLayout = () => {\r\n // ** Hooks\r\n const dispatch = useDispatch()\r\n const store = useSelector(state => state.layout)\r\n\r\n const setLayout = value => {\r\n dispatch(handleLayout(value))\r\n }\r\n\r\n const setLastLayout = value => {\r\n dispatch(handleLastLayout(value))\r\n }\r\n\r\n // const handleLayoutUpdate = useCallback(() => {\r\n // // ** If layout is horizontal & screen size is equals to or below 1200\r\n // if (store.layout === 'horizontal' && window.innerWidth <= 1200) {\r\n // setLayout('vertical')\r\n // setLastLayout('horizontal')\r\n // }\r\n // // ** If lastLayout is horizontal & screen size is equals to or above 1200\r\n // if (store.lastLayout === 'horizontal' && window.innerWidth >= 1200) {\r\n // setLayout('horizontal')\r\n // }\r\n // }, [])\r\n\r\n // // ** ComponentDidMount\r\n // useEffect(() => {\r\n // handleLayoutUpdate()\r\n // }, [])\r\n\r\n // useEffect(() => {\r\n // // ** Window Resize Event\r\n // window.addEventListener('resize', handleLayoutUpdate)\r\n // }, [store.layout, store.lastLayout])\r\n\r\n if (window) {\r\n const breakpoint = 1200\r\n\r\n if (window.innerWidth < breakpoint) {\r\n setLayout('vertical')\r\n }\r\n\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth <= breakpoint && store.lastLayout !== 'vertical' && store.layout !== 'vertical') {\r\n setLayout('vertical')\r\n }\r\n if (window.innerWidth >= breakpoint && store.lastLayout !== store.layout) {\r\n setLayout(store.lastLayout)\r\n }\r\n })\r\n }\r\n\r\n return { layout: store.layout, setLayout, lastLayout: store.lastLayout, setLastLayout }\r\n}\r\n","// ** Store Imports\r\nimport { handleRouterTransition } from '@store/layout'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nexport const useRouterTransition = () => {\r\n // ** Hooks\r\n const dispatch = useDispatch()\r\n const store = useSelector(state => state.layout)\r\n\r\n const setTransition = type => {\r\n dispatch(handleRouterTransition(type))\r\n }\r\n\r\n return { transition: store.routerTransition, setTransition }\r\n}\r\n","import Router from './router/Router'\r\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\r\nimport CryptoJS from 'crypto-js'\r\nimport { useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport { APIBASEURL, apiUrls } from './constants'\r\nimport { axiosInstance, getRequest } from './helpers'\r\nimport { useHistory, useLocation, withRouter } from 'react-router-dom'\r\nimport { useState } from 'react'\r\nimport SpinnerComponent from './@core/components/spinner/Fallback-spinner'\r\nimport { useDispatch } from 'react-redux'\r\nimport { handleLogin, handleUser } from './redux/authentication'\r\nimport { step1 } from './redux/wizard'\r\nrequire('dotenv').config();\r\n\r\n\r\nfunction App(){\r\n const queryClient = new QueryClient()\r\n const history = useHistory()\r\n const dispatch = useDispatch()\r\n const [loading, setLoading] = useState(true)\r\n const location = useLocation()\r\n\r\n // useEffect(() => {\r\n // history.push(\"/register\", {nextStep: 2})\r\n // setLoading(false)\r\n // }, [])\r\n\r\n useEffect(async() => {\r\n try {\r\n const response = await getRequest(apiUrls.getLoggedInUser)\r\n if(response.data.success == true){\r\n if(response.data.data.email_verified_at == null){\r\n if(location.pathname === \"/verify-email\"){\r\n setLoading(false)\r\n }else{\r\n dispatch(handleUser({user: response.data.data}))\r\n dispatch(step1(false))\r\n history.push(\"/register\", {nextStep: 1})\r\n setLoading(false)\r\n }\r\n }\r\n else if(response.data.data.is_subscribed === 0){\r\n const payload = {\r\n user: response.data.data,\r\n login: false,\r\n }\r\n dispatch(handleLogin(payload))\r\n dispatch(step1(false))\r\n history.push(\"/register\", {nextStep: 1})\r\n setLoading(false)\r\n }else{\r\n const payload = {\r\n user: response.data.data,\r\n login: true,\r\n }\r\n dispatch(handleLogin(payload))\r\n // history.push(\"/\")\r\n setLoading(false)\r\n }\r\n }else{\r\n setLoading(false)\r\n }\r\n } catch (error) {\r\n setLoading(false)\r\n }\r\n \r\n }, [])\r\n\r\n return(\r\n \r\n {\r\n loading == true ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default withRouter(App)\r\n"],"sourceRoot":""}