{"version":3,"file":"main.ad2e4862fb6912f7ecce.js","mappings":"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","sources":["webpack:///./Components/Loading.jsx","webpack:///./Context/AuthContext.jsx","webpack:///./Services/fetchClient.js","webpack:///./Context/ClientContext.jsx","webpack:///./Utils/DayJs/dayjsWrapper.js","webpack:///./Pages/Insights/Components/AnimatedLogo/animation.css","webpack:///./Pages/Insights/Components/BeeSwarmCanvasChart/beeswarm.css","webpack:///./Pages/Insights/Components/BeeSwarmChart/beeswarm.css","webpack:///./Pages/Insights/Components/Footer/Footer.css","webpack:///./Pages/Login/Login/flip.css","webpack:///./Pages/Login/Login/login.css","webpack:///./Styles/body.css","webpack:///./Assets/JSON/helptexts.ts","webpack:///./Hooks/useLocalStorage.ts","webpack:///./Pages/Insights/Components/ErrorBoundary/ErrorBoundary.tsx","webpack:///./Pages/Insights/Components/ErrorBoundary/index.ts","webpack:///./Pages/Insights/Components/TextLogo/TextLogo.tsx","webpack:///./Pages/Insights/Components/TextLogo/index.ts","webpack:///./Pages/Insights/Components/AnimatedLogo/animation.css?42ee","webpack:///./Pages/Insights/Components/AnimatedLogo/AnimatedLogo.tsx","webpack:///./Pages/Insights/Components/AnimatedLogo/index.ts","webpack:///./Pages/Insights/Components/MicrosoftLogo/MicrosoftLogo.tsx","webpack:///./Pages/Insights/Components/PartnerLogo/index.ts","webpack:///./Pages/Insights/Components/PartnerLogo/PartnerLogo.tsx","webpack:///./Pages/Insights/Components/Footer/Footer.css?78af","webpack:///./Pages/Insights/Components/Footer/Footer.tsx","webpack:///./Pages/Insights/Components/Footer/index.ts","webpack:///./Context/InsightsQueryContext.tsx","webpack:///./Services/InsightsServices/fetchAggregatedData.ts","webpack:///./Services/InsightsServices/fetchAggregatedDataByDate.ts","webpack:///./Hooks/useChartDimensions.ts","webpack:///./Hooks/useComparisonData.ts","webpack:///./Utils/humanReadableTitles.ts","webpack:///./Pages/Insights/Components/HelpModal/HelpModal.tsx","webpack:///./Pages/Insights/Components/HelpModal/index.ts","webpack:///./Pages/Insights/Components/ChartHeader/index.ts","webpack:///./Pages/Insights/Components/ChartHeader/ChartHeader.tsx","webpack:///./Pages/Insights/Components/ChartSwitchWrapper/ChartSwitchWrapper.tsx","webpack:///./Pages/Insights/Components/ChartSwitchWrapper/index.ts","webpack:///./Pages/Insights/Components/NivoBarDelta/NivoBarDelta.tsx","webpack:///./Pages/Insights/Components/NivoBarDelta/index.ts","webpack:///./Pages/Insights/Components/NivoLineChart/NivoLineChart.tsx","webpack:///./Pages/Insights/Components/NivoLineChart/index.ts","webpack:///./Pages/Insights/Components/NivoMultipleLineChart/NivoMultipleLineChart.tsx","webpack:///./Pages/Insights/AggregatedDataByDateMultiView.tsx","webpack:///./Pages/Insights/Components/LoadingScreen/LoadingScreen.tsx","webpack:///./Pages/Insights/Components/LoadingScreen/index.ts","webpack:///./Pages/Insights/AggregatedDataByDateView.tsx","webpack:///./Pages/Insights/BingMultiView.tsx","webpack:///./Services/InsightsServices/fetchBingCampaignData.ts","webpack:///./Pages/Insights/BingDataView.tsx","webpack:///./Services/InsightsServices/fetchPortalUsers.ts","webpack:///./Pages/Insights/Components/PortalUserSelector/index.tsx","webpack:///./Pages/Insights/Components/PortalUserSelector/PortalUserSelector.tsx","webpack:///./Services/InsightsServices/fetchGoogleGampaignData.ts","webpack:///./Pages/Insights/GoogleCampaignDataMultiView.tsx","webpack:///./Pages/Insights/GoogleCampaignDataViews.tsx","webpack:///./Pages/Insights/MetaDataMultiView.tsx","webpack:///./Services/InsightsServices/fetchMetaAggregatedData.ts","webpack:///./Services/InsightsServices/fetchMetaCampaignData.ts","webpack:///./Pages/Insights/MetaDataView.tsx","webpack:///./Services/InsightsServices/fetchAggregatedBudgetData.ts","webpack:///./Services/InsightsServices/fetchBudgetDistributionData.ts","webpack:///./Pages/Insights/BudgetDataMultiView.tsx","webpack:///./Pages/Insights/BudgetDataViews.tsx","webpack:///./Services/InsightsServices/fetchInsightsFilters.ts","webpack:///./Pages/Insights/Components/CountryFilterSelector/index.ts","webpack:///./Pages/Insights/Components/CountryFilterSelector/CountryFilterSelector.tsx","webpack:///./Pages/Insights/Components/IncludeBrandSwitch/IncludeBrandSwitch.tsx","webpack:///./Pages/Insights/Components/IncludeBrandSwitch/index.ts","webpack:///./Pages/Insights/Components/PlatformSelector/PlatformSelector.tsx","webpack:///./Pages/Insights/Components/PlatformSelector/index.ts","webpack:///./Services/InsightsServices/fetchKeywordData.ts","webpack:///./Pages/Insights/Components/BeeSwarmCanvasChart/beeswarm.css?6105","webpack:///./Pages/Insights/Components/BeeSwarmCanvasChart/BeeSwarmCanvasChart.tsx","webpack:///./Pages/Insights/Components/BeeSwarmCanvasChart/index.ts","webpack:///./Pages/Insights/Components/BeeSwarmChart/beeswarm.css?1f75","webpack:///./Pages/Insights/Components/BeeSwarmChart/BeeSwarmChart.tsx","webpack:///./Pages/Insights/Components/BeeSwarmChart/index.ts","webpack:///./Pages/Insights/KeywordDataBeeSwarmChartView.tsx","webpack:///./Pages/Insights/Components/SimpleTableList/SimpleTableList.tsx","webpack:///./Pages/Insights/Components/SimpleTableList/index.ts","webpack:///./Pages/Insights/KeywordDataTableView.tsx","webpack:///./Services/InsightsServices/fetchCampaignTypeData.ts","webpack:///./Pages/Insights/Components/NivoBarChart/NivoBarChart.tsx","webpack:///./Pages/Insights/Components/NivoBarChart/index.ts","webpack:///./Pages/Insights/CampaignTypeDataBarChartView.tsx","webpack:///./Pages/Insights/Components/DateSelector/DateSelector.tsx","webpack:///./Pages/Insights/Components/DateSelector/index.ts","webpack:///./Pages/Insights/Components/DateRangeDialog/index.ts","webpack:///./Pages/Insights/Components/DateRangeDialog/DateRangeDialog.tsx","webpack:///./Pages/Insights/Components/DateRangeSelector/DateRangeSelector.tsx","webpack:///./Pages/Insights/Components/DateRangeSelector/index.ts","webpack:///./Pages/Insights/Components/PortalUser/index.ts","webpack:///./Pages/Insights/Components/PortalUser/PortalUser.tsx","webpack:///./Pages/Insights/Components/PrivateFunction/PrivateFunction.tsx","webpack:///./Pages/Insights/InsightsPortal.tsx","webpack:///./Utils/Helpers.ts","webpack:///./Utils/Http/axioswrapper.ts","webpack:///./Utils/Http/index.ts","webpack:///./Utils/colors.ts","webpack:///./Components/CookieConsentBanner/CookieConsentBanner.tsx","webpack:///./Components/CookieConsentBanner/index.ts","webpack:///./Context/MuiNotificiationContext.tsx","webpack:///./Components/IdleHandler/IdlePrompt.jsx","webpack:///./Components/IdleHandler/IdleHandler.jsx","webpack:///./Components/Dispatcher/Dispatcher.jsx","webpack:///./Services/admitService.js","webpack:///./Pages/Login/Login/flip.css?c4cd","webpack:///./Pages/Login/Login/AdmittanceErrorListView.jsx","webpack:///./Pages/Login/Login/Admit.jsx","webpack:///./Pages/Login/Login/login.css?8b39","webpack:///./Pages/Login/Login/Login.jsx","webpack:///./Routes/AppRoutes.tsx","webpack:///./Styles/body.css?c43a","webpack:///./App.jsx","webpack:///./Context/LoadingContext.jsx","webpack:///./index.tsx","webpack:///./Assets/Fonts/suisseintl-bold-webxl.woff2","webpack:///./Assets/Fonts/suisseintl-light.woff2","webpack:///./Assets/Fonts/suisseintl-regular.woff2","webpack:///./Assets/Fonts/suisseintl-semibold.woff2"],"sourcesContent":["import LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress';\nimport { styled } from '@mui/material/styles';\nimport React from 'react';\n\nconst BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({\n marginTop: '0.7rem',\n height: 7,\n borderRadius: 5,\n [`&.${linearProgressClasses.colorPrimary}`]: {\n backgroundColor: theme.palette.grey[theme.palette.mode === 'light' ? '#9ec8ff' : '#9ec8ff'],\n },\n [`& .${linearProgressClasses.bar}`]: {\n borderRadius: 5,\n backgroundColor: theme.palette.mode === 'light' ? '#006fff' : '#006fff',\n },\n}));\n\nfunction Loading() {\n return (\n
\n
\n
\n \n \n
\n
\n
\n );\n}\n\nexport default Loading;\n","import axios from 'axios';\nimport PropTypes from 'prop-types';\nimport React, { useMemo, useState } from 'react';\n// eslint-disable-next-line import/no-unresolved\nimport useLocalStorage from '../Hooks/useLocalStorage.ts';\n\nexport const AuthContext = React.createContext({ user: null, loadingUser: false });\n\nexport function AuthProvider({ children }) {\n const [user, setUser] = useState(null);\n const [activeClient, setActiveClient] = useLocalStorage('activeClient', null);\n const [loadingUser, setLoadingUser] = useState(false);\n\n async function signOut() {\n setUser(null);\n setActiveClient('');\n await axios.get('/logout');\n }\n\n const selectClient = (clientname) => {\n /**\n * Make sure chosen portal applications is among\n * the active users available choices.\n */\n // eslint-disable-next-line camelcase\n const { app_access_choices: appchoices } = user;\n const appnames = appchoices.map((app) => app.name);\n if (appnames.indexOf(clientname) >= 0) return clientname;\n return undefined;\n };\n\n const login = useMemo(\n () => ({\n user,\n setUser,\n loadingUser,\n setLoadingUser,\n signOut,\n activeclient: activeClient,\n setactiveclient: (clientname) => setActiveClient(() => selectClient(clientname)),\n }),\n [user, user?.category, user?.uuid, activeClient, activeClient]\n );\n\n return {children};\n}\n\nAuthProvider.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nexport const useAuth = () => React.useContext(AuthContext);\n","import axios from 'axios';\n\nconst fetchClient = async () => {\n const { data } = await axios.get('/api/client');\n return data;\n};\n\nexport default fetchClient;\n","import PropTypes from 'prop-types';\nimport React, { useContext, useEffect, useMemo, useState } from 'react';\n\nimport { isEmptyObject } from 'Utils/Helpers';\nimport fetchClient from '../Services/fetchClient';\n\nconst ClientContext = React.createContext();\n\nexport function useClient() {\n return useContext(ClientContext);\n}\n\nexport function ClientProvider({ children }) {\n const [clientIsLoading, setClientIsLoading] = useState(true);\n const [clientInfo, setClientInfo] = useState({});\n const [error, setError] = useState('');\n\n const client = useMemo(\n () => ({\n clientIsLoading,\n ...clientInfo,\n setClientInfo,\n setClientIsLoading,\n error,\n }),\n [clientIsLoading, clientInfo.clientid, error]\n );\n\n useEffect(() => {\n setClientIsLoading(true);\n fetchClient()\n .then((clientdata) => {\n setClientInfo(clientdata);\n })\n .catch((err) => {\n setError(err);\n })\n .then(() => setClientIsLoading(false));\n }, []);\n\n useEffect(() => {\n if (isEmptyObject(clientInfo)) return;\n setClientIsLoading(false);\n }, [clientInfo]);\n\n return {children};\n}\n\nClientProvider.propTypes = {\n children: PropTypes.element.isRequired,\n};\n","import dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport isYesterday from 'dayjs/plugin/isYesterday';\nimport isToday from 'dayjs/plugin/isToday';\nimport isTomorrow from 'dayjs/plugin/isTomorrow';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport calendar from 'dayjs/plugin/calendar';\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport 'dayjs/locale/en';\n\ndayjs.extend(isSameOrAfter);\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(localizedFormat);\ndayjs.extend(advancedFormat);\ndayjs.extend(customParseFormat);\ndayjs.extend(isBetween);\ndayjs.extend(isYesterday);\ndayjs.extend(isToday);\ndayjs.extend(isTomorrow);\ndayjs.extend(relativeTime);\ndayjs.extend(calendar);\ndayjs.extend(quarterOfYear);\n\nexport {\n dayjs,\n Dayjs,\n utc,\n timezone,\n localizedFormat,\n advancedFormat,\n customParseFormat,\n isBetween,\n isYesterday,\n isToday,\n isTomorrow,\n isSameOrAfter,\n relativeTime,\n calendar,\n quarterOfYear,\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".animatedLogo {\\n fill: black;\\n strokewidth: 3px;\\n stroke-dasharray: 130;\\n stroke-dashoffset: 0;\\n fillopacity: 1;\\n transition: fillOpacity 0.5s ease-in-out;\\n}\\n.shouldMove {\\n fill: transparent !important;\\n fillopacity: 0 !important;\\n animation: dash 2s ease-in-out alternate infinite;\\n}\\n@keyframes dash {\\n from {\\n stroke-dashoffset: 0;\\n }\\n to {\\n stroke-dashoffset: 124;\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Pages/Insights/Components/AnimatedLogo/animation.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,WAAA;EACA,gBAAA;EACA,qBAAA;EACA,oBAAA;EACA,cAAA;EACA,wCAAA;AACF;AACA;EACE,4BAAA;EACA,yBAAA;EACA,iDAAA;AACF;AAEA;EACE;IACE,oBAAA;EAAF;EAEA;IACE,sBAAA;EAAF;AACF\",\"sourcesContent\":[\".animatedLogo {\\n fill: black;\\n strokewidth: 3px;\\n stroke-dasharray: 130;\\n stroke-dashoffset: 0;\\n fillopacity: 1;\\n transition: fillOpacity 0.5s ease-in-out;\\n}\\n.shouldMove {\\n fill: transparent !important;\\n fillopacity: 0 !important;\\n animation: dash 2s ease-in-out alternate infinite;\\n}\\n\\n@keyframes dash {\\n from {\\n stroke-dashoffset: 0;\\n }\\n to {\\n stroke-dashoffset: 124;\\n }\\n}\\n\\n@font-family: \\\"Suisse Intl\\\",\\\"Suisse Int'l\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"svg {\\n overflow: visible !important;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Pages/Insights/Components/BeeSwarmCanvasChart/beeswarm.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,4BAAA;AACF\",\"sourcesContent\":[\"svg {\\n overflow: visible !important;\\n}\\n\\n@font-family: \\\"Suisse Intl\\\",\\\"Suisse Int'l\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"svg {\\n overflow: visible !important;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Pages/Insights/Components/BeeSwarmChart/beeswarm.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,4BAAA;AACF\",\"sourcesContent\":[\"svg {\\n overflow: visible !important;\\n}\\n\\n@font-family: \\\"Suisse Intl\\\",\\\"Suisse Int'l\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Link styles */\\n.link {\\n color: black;\\n position: relative;\\n display: inline-block;\\n transition: transform 0.3s;\\n}\\n/* Hover effect */\\n.link:hover {\\n color: black;\\n transform: translateX(10px);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Pages/Insights/Components/Footer/Footer.css\"],\"names\":[],\"mappings\":\"AAAA,iBAAiB;AACjB;EACE,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,0BAAA;AACF;AACA,iBAAiB;AAEjB;EACE,YAAA;EACA,2BAAA;AAAF\",\"sourcesContent\":[\"/* Link styles */\\n.link {\\n color: black;\\n position: relative;\\n display: inline-block;\\n transition: transform 0.3s;\\n}\\n\\n/* Hover effect */\\n.link:hover {\\n color: black;\\n transform: translateX(10px);\\n}\\n\\n@font-family: \\\"Suisse Intl\\\",\\\"Suisse Int'l\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".front_face {\\n backface-visibility: hidden;\\n -webkit-backface-visibility: hidden;\\n position: absolute;\\n height: '100%';\\n width: '100%';\\n z-index: 20;\\n}\\n.back_face {\\n transform: rotateX(0deg) rotateY(180deg);\\n -webkit-transform: rotateX(0deg) rotateY(180deg);\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n position: absolute;\\n height: '100%';\\n width: '100%';\\n z-index: 10;\\n background-color: white;\\n}\\n.flip-2-ver-right-2 {\\n -webkit-animation: flip-2-ver-right-2 1s cubic-bezier(0.455, 0.03, 0.515, 0.955) both;\\n animation: flip-2-ver-right-2 1s cubic-bezier(0.455, 0.03, 0.515, 0.955) both;\\n}\\n/* ----------------------------------------------\\n * Generated by Animista on 2022-6-23 22:37:35\\n * Licensed under FreeBSD License.\\n * See http://animista.net/license for more info. \\n * w: http://animista.net, t: @cssanimista\\n * ---------------------------------------------- */\\n/**\\n * ----------------------------------------\\n * animation flip-2-ver-right-2\\n * ----------------------------------------\\n */\\n@-webkit-keyframes flip-2-ver-right-2 {\\n 0% {\\n -webkit-transform: translateX(0) rotateX(0deg) rotateY(0);\\n transform: translateX(0) rotateX(0deg) rotateY(0);\\n -webkit-transform-origin: 100% 50%;\\n transform-origin: 100% 50%;\\n }\\n 100% {\\n -webkit-transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n -webkit-transform-origin: 0% 50%;\\n transform-origin: 0% 50%;\\n }\\n}\\n@keyframes flip-2-ver-right-2 {\\n 0% {\\n -webkit-transform: translateX(0) rotateX(0deg) rotateY(0);\\n transform: translateX(0) rotateX(0deg) rotateY(0);\\n -webkit-transform-origin: 100% 50%;\\n transform-origin: 100% 50%;\\n }\\n 100% {\\n -webkit-transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n -webkit-transform-origin: 0% 50%;\\n transform-origin: 0% 50%;\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Pages/Login/Login/flip.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,2BAAA;EACA,mCAAA;EACA,kBAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;AACF;AACA;EACE,wCAAA;EACA,gDAAA;EACA,mCAAA;EACA,2BAAA;EACA,kBAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;EACA,uBAAA;AACF;AAEA;EACE,qFAAA;EACA,6EAAA;AAAF;AACA;;;;;mDAKmD;AACnD;;;;EAIE;AAIF;EACE;IACE,yDAAA;IACA,iDAAA;IACA,kCAAA;IACA,0BAAA;EAFF;EAKA;IACE,iEAAA;IACA,yDAAA;IACA,gCAAA;IACA,wBAAA;EAHF;AACF;AAMA;EACE;IACE,yDAAA;IACA,iDAAA;IACA,kCAAA;IACA,0BAAA;EAJF;EAOA;IACE,iEAAA;IACA,yDAAA;IACA,gCAAA;IACA,wBAAA;EALF;AACF\",\"sourcesContent\":[\".front_face {\\n backface-visibility: hidden;\\n -webkit-backface-visibility: hidden;\\n position: absolute;\\n height: '100%';\\n width: '100%';\\n z-index: 20;\\n}\\n.back_face {\\n transform: rotateX(0deg) rotateY(180deg);\\n -webkit-transform: rotateX(0deg) rotateY(180deg);\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n position: absolute;\\n height: '100%';\\n width: '100%';\\n z-index: 10;\\n background-color: white;\\n}\\n\\n.flip-2-ver-right-2 {\\n -webkit-animation: flip-2-ver-right-2 1s cubic-bezier(0.455, 0.03, 0.515, 0.955) both;\\n animation: flip-2-ver-right-2 1s cubic-bezier(0.455, 0.03, 0.515, 0.955) both;\\n}\\n\\n/* ----------------------------------------------\\n * Generated by Animista on 2022-6-23 22:37:35\\n * Licensed under FreeBSD License.\\n * See http://animista.net/license for more info. \\n * w: http://animista.net, t: @cssanimista\\n * ---------------------------------------------- */\\n\\n/**\\n * ----------------------------------------\\n * animation flip-2-ver-right-2\\n * ----------------------------------------\\n */\\n@-webkit-keyframes flip-2-ver-right-2 {\\n 0% {\\n -webkit-transform: translateX(0) rotateX(0deg) rotateY(0);\\n transform: translateX(0) rotateX(0deg) rotateY(0);\\n -webkit-transform-origin: 100% 50%;\\n transform-origin: 100% 50%;\\n }\\n\\n 100% {\\n -webkit-transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n -webkit-transform-origin: 0% 50%;\\n transform-origin: 0% 50%;\\n }\\n}\\n\\n@keyframes flip-2-ver-right-2 {\\n 0% {\\n -webkit-transform: translateX(0) rotateX(0deg) rotateY(0);\\n transform: translateX(0) rotateX(0deg) rotateY(0);\\n -webkit-transform-origin: 100% 50%;\\n transform-origin: 100% 50%;\\n }\\n\\n 100% {\\n -webkit-transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n transform: translateX(100%) rotateX(0deg) rotateY(180deg);\\n -webkit-transform-origin: 0% 50%;\\n transform-origin: 0% 50%;\\n }\\n}\\n\\n@font-family: \\\"Suisse Intl\\\",\\\"Suisse Int'l\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\", \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../Assets/Fonts/suisseintl-regular.woff2\";\nimport ___CSS_LOADER_URL_IMPORT_1___ from \"../Assets/Fonts/suisseintl-semibold.woff2\";\nimport ___CSS_LOADER_URL_IMPORT_2___ from \"../Assets/Fonts/suisseintl-light.woff2\";\nimport ___CSS_LOADER_URL_IMPORT_3___ from \"../Assets/Fonts/suisseintl-bold-webxl.woff2\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"@font-face {\\n font-family: 'Suisse Intl';\\n font-weight: normal;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format('woff2');\\n}\\n@font-face {\\n font-family: 'Suisse Intl';\\n font-weight: 600;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format('woff2');\\n}\\n@font-face {\\n font-family: 'Suisse Intl';\\n font-style: light;\\n font-weight: light;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format('woff2');\\n}\\n@font-face {\\n font-family: 'Suisse Intl';\\n font-style: bold;\\n font-weight: bold;\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format('woff2');\\n}\\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\\n/* Document\\n ========================================================================== */\\n/**\\n * 1. Correct the line height in all browsers.\\n * 2. Prevent adjustments of font size after orientation changes in iOS.\\n */\\nhtml {\\n line-height: 1.15;\\n /* 1 */\\n -webkit-text-size-adjust: 100%;\\n /* 2 */\\n}\\n/* Sections\\n ========================================================================== */\\n/**\\n * Remove the margin in all browsers.\\n */\\nbody {\\n margin: 0;\\n}\\n/**\\n * Render the `main` element consistently in IE.\\n */\\nmain {\\n display: block;\\n}\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n}\\n/* Grouping content\\n ========================================================================== */\\n/**\\n * 1. Add the correct box sizing in Firefox.\\n * 2. Show the overflow in Edge and IE.\\n */\\nhr {\\n box-sizing: content-box;\\n /* 1 */\\n height: 0;\\n /* 1 */\\n overflow: visible;\\n /* 2 */\\n}\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\npre {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */\\n}\\n/* Text-level semantics\\n ========================================================================== */\\n/**\\n * Remove the gray background on active links in IE 10.\\n */\\na {\\n background-color: transparent;\\n}\\n/**\\n * 1. Remove the bottom border in Chrome 57-\\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n */\\nabbr[title] {\\n border-bottom: none;\\n /* 1 */\\n text-decoration: underline;\\n /* 2 */\\n text-decoration: underline dotted;\\n /* 2 */\\n}\\n/**\\n * Add the correct font weight in Chrome, Edge, and Safari.\\n */\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\ncode,\\nkbd,\\nsamp {\\n font-family: monospace, monospace;\\n /* 1 */\\n font-size: 1em;\\n /* 2 */\\n}\\n/**\\n * Add the correct font size in all browsers.\\n */\\nsmall {\\n font-size: 80%;\\n}\\n/**\\n * Prevent `sub` and `sup` elements from affecting the line height in\\n * all browsers.\\n */\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\nsub {\\n bottom: -0.25em;\\n}\\nsup {\\n top: -0.5em;\\n}\\n/* Embedded content\\n ========================================================================== */\\n/**\\n * Remove the border on images inside links in IE 10.\\n */\\nimg {\\n border-style: none;\\n}\\n/* Forms\\n ========================================================================== */\\n/**\\n * 1. Change the font styles in all browsers.\\n * 2. Remove the margin in Firefox and Safari.\\n */\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit;\\n /* 1 */\\n font-size: 100%;\\n /* 1 */\\n line-height: 1.15;\\n /* 1 */\\n margin: 0;\\n /* 2 */\\n}\\n/**\\n * Show the overflow in IE.\\n * 1. Show the overflow in Edge.\\n */\\nbutton,\\ninput {\\n /* 1 */\\n overflow: visible;\\n}\\n/**\\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\\n * 1. Remove the inheritance of text transform in Firefox.\\n */\\nbutton,\\nselect {\\n /* 1 */\\n text-transform: none;\\n}\\n/**\\n * Correct the inability to style clickable types in iOS and Safari.\\n */\\nbutton,\\n[type='button'],\\n[type='reset'],\\n[type='submit'] {\\n -webkit-appearance: button;\\n}\\n/**\\n * Remove the inner border and padding in Firefox.\\n */\\nbutton::-moz-focus-inner,\\n[type='button']::-moz-focus-inner,\\n[type='reset']::-moz-focus-inner,\\n[type='submit']::-moz-focus-inner {\\n border-style: none;\\n padding: 0;\\n}\\n/**\\n * Restore the focus styles unset by the previous rule.\\n */\\nbutton:-moz-focusring,\\n[type='button']:-moz-focusring,\\n[type='reset']:-moz-focusring,\\n[type='submit']:-moz-focusring {\\n outline: 1px dotted ButtonText;\\n}\\n/**\\n * Correct the padding in Firefox.\\n */\\nfieldset {\\n padding: 0.35em 0.75em 0.625em;\\n}\\n/**\\n * 1. Correct the text wrapping in Edge and IE.\\n * 2. Correct the color inheritance from `fieldset` elements in IE.\\n * 3. Remove the padding so developers are not caught out when they zero out\\n * `fieldset` elements in all browsers.\\n */\\nlegend {\\n box-sizing: border-box;\\n /* 1 */\\n color: inherit;\\n /* 2 */\\n display: table;\\n /* 1 */\\n max-width: 100%;\\n /* 1 */\\n padding: 0;\\n /* 3 */\\n white-space: normal;\\n /* 1 */\\n}\\n/**\\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n */\\nprogress {\\n vertical-align: baseline;\\n}\\n/**\\n * Remove the default vertical scrollbar in IE 10+.\\n */\\ntextarea {\\n overflow: auto;\\n}\\n/**\\n * 1. Add the correct box sizing in IE 10.\\n * 2. Remove the padding in IE 10.\\n */\\n[type='checkbox'],\\n[type='radio'] {\\n box-sizing: border-box;\\n /* 1 */\\n padding: 0;\\n /* 2 */\\n}\\n/**\\n * Correct the cursor style of increment and decrement buttons in Chrome.\\n */\\n[type='number']::-webkit-inner-spin-button,\\n[type='number']::-webkit-outer-spin-button {\\n height: auto;\\n}\\n/**\\n * 1. Correct the odd appearance in Chrome and Safari.\\n * 2. Correct the outline style in Safari.\\n */\\n[type='search'] {\\n -webkit-appearance: textfield;\\n /* 1 */\\n outline-offset: -2px;\\n /* 2 */\\n}\\n/**\\n * Remove the inner padding in Chrome and Safari on macOS.\\n */\\n[type='search']::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n/**\\n * 1. Correct the inability to style clickable types in iOS and Safari.\\n * 2. Change font properties to `inherit` in Safari.\\n */\\n::-webkit-file-upload-button {\\n -webkit-appearance: button;\\n /* 1 */\\n font: inherit;\\n /* 2 */\\n}\\n/* Interactive\\n ========================================================================== */\\n/*\\n * Add the correct display in Edge, IE 10+, and Firefox.\\n */\\ndetails {\\n display: block;\\n}\\n/*\\n * Add the correct display in all browsers.\\n */\\nsummary {\\n display: list-item;\\n}\\n/* Misc\\n ========================================================================== */\\n/**\\n * Add the correct display in IE 10+.\\n */\\ntemplate {\\n display: none;\\n}\\n/**\\n * Add the correct display in IE 10.\\n */\\n[hidden] {\\n display: none;\\n}\\nbody {\\n font-family: 'Suisse Intl', \\\"Suisse Int'l\\\", Arial, sans-serif;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n.facebook_table_header {\\n border-bottom: 3px solid #3b5898 !important;\\n color: black;\\n font-size: 14px !important;\\n font-weight: 700 !important;\\n padding: 10px 15px !important;\\n text-align: left;\\n text-transform: capitalize;\\n}\\n.bing_table_header {\\n border-bottom: 3px solid #ffbb00 !important;\\n color: black;\\n font-size: 14px !important;\\n font-weight: 700 !important;\\n padding: 10px 15px !important;\\n text-align: left;\\n text-transform: capitalize;\\n}\\n.google_table_header {\\n border-bottom: 3px solid #4286f4 !important;\\n color: black;\\n font-size: 14px !important;\\n font-weight: 700 !important;\\n padding: 10px 15px !important;\\n text-align: left;\\n text-transform: capitalize;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./Styles/body.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@font-face {\\n font-family: 'Suisse Intl';\\n font-weight: normal;\\n src: url('../Assets/Fonts/suisseintl-regular.woff2') format('woff2');\\n}\\n\\n@font-face {\\n font-family: 'Suisse Intl';\\n font-weight: 600;\\n src: url('../Assets/Fonts/suisseintl-semibold.woff2') format('woff2');\\n}\\n\\n@font-face {\\n font-family: 'Suisse Intl';\\n font-style: light;\\n font-weight: light;\\n src: url('../Assets/Fonts/suisseintl-light.woff2') format('woff2');\\n}\\n\\n@font-face {\\n font-family: 'Suisse Intl';\\n font-style: bold;\\n font-weight: bold;\\n src: url('../Assets/Fonts/suisseintl-bold-webxl.woff2') format('woff2');\\n}\\n\\n/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\\n\\n/* Document\\n ========================================================================== */\\n\\n/**\\n * 1. Correct the line height in all browsers.\\n * 2. Prevent adjustments of font size after orientation changes in iOS.\\n */\\n\\nhtml {\\n line-height: 1.15; /* 1 */\\n -webkit-text-size-adjust: 100%; /* 2 */\\n}\\n\\n/* Sections\\n ========================================================================== */\\n\\n/**\\n * Remove the margin in all browsers.\\n */\\n\\nbody {\\n margin: 0;\\n}\\n\\n/**\\n * Render the `main` element consistently in IE.\\n */\\n\\nmain {\\n display: block;\\n}\\n\\n/**\\n * Correct the font size and margin on `h1` elements within `section` and\\n * `article` contexts in Chrome, Firefox, and Safari.\\n */\\n\\nh1 {\\n font-size: 2em;\\n margin: 0.67em 0;\\n}\\n\\n/* Grouping content\\n ========================================================================== */\\n\\n/**\\n * 1. Add the correct box sizing in Firefox.\\n * 2. Show the overflow in Edge and IE.\\n */\\n\\nhr {\\n box-sizing: content-box; /* 1 */\\n height: 0; /* 1 */\\n overflow: visible; /* 2 */\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\npre {\\n font-family: monospace, monospace; /* 1 */\\n font-size: 1em; /* 2 */\\n}\\n\\n/* Text-level semantics\\n ========================================================================== */\\n\\n/**\\n * Remove the gray background on active links in IE 10.\\n */\\n\\na {\\n background-color: transparent;\\n}\\n\\n/**\\n * 1. Remove the bottom border in Chrome 57-\\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\\n */\\n\\nabbr[title] {\\n border-bottom: none; /* 1 */\\n text-decoration: underline; /* 2 */\\n text-decoration: underline dotted; /* 2 */\\n}\\n\\n/**\\n * Add the correct font weight in Chrome, Edge, and Safari.\\n */\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\n/**\\n * 1. Correct the inheritance and scaling of font size in all browsers.\\n * 2. Correct the odd `em` font sizing in all browsers.\\n */\\n\\ncode,\\nkbd,\\nsamp {\\n font-family: monospace, monospace; /* 1 */\\n font-size: 1em; /* 2 */\\n}\\n\\n/**\\n * Add the correct font size in all browsers.\\n */\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\n/**\\n * Prevent `sub` and `sup` elements from affecting the line height in\\n * all browsers.\\n */\\n\\nsub,\\nsup {\\n font-size: 75%;\\n line-height: 0;\\n position: relative;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\n/* Embedded content\\n ========================================================================== */\\n\\n/**\\n * Remove the border on images inside links in IE 10.\\n */\\n\\nimg {\\n border-style: none;\\n}\\n\\n/* Forms\\n ========================================================================== */\\n\\n/**\\n * 1. Change the font styles in all browsers.\\n * 2. Remove the margin in Firefox and Safari.\\n */\\n\\nbutton,\\ninput,\\noptgroup,\\nselect,\\ntextarea {\\n font-family: inherit; /* 1 */\\n font-size: 100%; /* 1 */\\n line-height: 1.15; /* 1 */\\n margin: 0; /* 2 */\\n}\\n\\n/**\\n * Show the overflow in IE.\\n * 1. Show the overflow in Edge.\\n */\\n\\nbutton,\\ninput {\\n /* 1 */\\n overflow: visible;\\n}\\n\\n/**\\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\\n * 1. Remove the inheritance of text transform in Firefox.\\n */\\n\\nbutton,\\nselect {\\n /* 1 */\\n text-transform: none;\\n}\\n\\n/**\\n * Correct the inability to style clickable types in iOS and Safari.\\n */\\n\\nbutton,\\n[type='button'],\\n[type='reset'],\\n[type='submit'] {\\n -webkit-appearance: button;\\n}\\n\\n/**\\n * Remove the inner border and padding in Firefox.\\n */\\n\\nbutton::-moz-focus-inner,\\n[type='button']::-moz-focus-inner,\\n[type='reset']::-moz-focus-inner,\\n[type='submit']::-moz-focus-inner {\\n border-style: none;\\n padding: 0;\\n}\\n\\n/**\\n * Restore the focus styles unset by the previous rule.\\n */\\n\\nbutton:-moz-focusring,\\n[type='button']:-moz-focusring,\\n[type='reset']:-moz-focusring,\\n[type='submit']:-moz-focusring {\\n outline: 1px dotted ButtonText;\\n}\\n\\n/**\\n * Correct the padding in Firefox.\\n */\\n\\nfieldset {\\n padding: 0.35em 0.75em 0.625em;\\n}\\n\\n/**\\n * 1. Correct the text wrapping in Edge and IE.\\n * 2. Correct the color inheritance from `fieldset` elements in IE.\\n * 3. Remove the padding so developers are not caught out when they zero out\\n * `fieldset` elements in all browsers.\\n */\\n\\nlegend {\\n box-sizing: border-box; /* 1 */\\n color: inherit; /* 2 */\\n display: table; /* 1 */\\n max-width: 100%; /* 1 */\\n padding: 0; /* 3 */\\n white-space: normal; /* 1 */\\n}\\n\\n/**\\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\\n */\\n\\nprogress {\\n vertical-align: baseline;\\n}\\n\\n/**\\n * Remove the default vertical scrollbar in IE 10+.\\n */\\n\\ntextarea {\\n overflow: auto;\\n}\\n\\n/**\\n * 1. Add the correct box sizing in IE 10.\\n * 2. Remove the padding in IE 10.\\n */\\n\\n[type='checkbox'],\\n[type='radio'] {\\n box-sizing: border-box; /* 1 */\\n padding: 0; /* 2 */\\n}\\n\\n/**\\n * Correct the cursor style of increment and decrement buttons in Chrome.\\n */\\n\\n[type='number']::-webkit-inner-spin-button,\\n[type='number']::-webkit-outer-spin-button {\\n height: auto;\\n}\\n\\n/**\\n * 1. Correct the odd appearance in Chrome and Safari.\\n * 2. Correct the outline style in Safari.\\n */\\n\\n[type='search'] {\\n -webkit-appearance: textfield; /* 1 */\\n outline-offset: -2px; /* 2 */\\n}\\n\\n/**\\n * Remove the inner padding in Chrome and Safari on macOS.\\n */\\n\\n[type='search']::-webkit-search-decoration {\\n -webkit-appearance: none;\\n}\\n\\n/**\\n * 1. Correct the inability to style clickable types in iOS and Safari.\\n * 2. Change font properties to `inherit` in Safari.\\n */\\n\\n::-webkit-file-upload-button {\\n -webkit-appearance: button; /* 1 */\\n font: inherit; /* 2 */\\n}\\n\\n/* Interactive\\n ========================================================================== */\\n\\n/*\\n * Add the correct display in Edge, IE 10+, and Firefox.\\n */\\n\\ndetails {\\n display: block;\\n}\\n\\n/*\\n * Add the correct display in all browsers.\\n */\\n\\nsummary {\\n display: list-item;\\n}\\n\\n/* Misc\\n ========================================================================== */\\n\\n/**\\n * Add the correct display in IE 10+.\\n */\\n\\ntemplate {\\n display: none;\\n}\\n\\n/**\\n * Add the correct display in IE 10.\\n */\\n\\n[hidden] {\\n display: none;\\n}\\n\\nbody {\\n font-family: 'Suisse Intl', \\\"Suisse Int'l\\\", Arial, sans-serif;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.facebook_table_header {\\n border-bottom: 3px solid rgba(59, 88, 152, 1) !important;\\n color: black;\\n font-size: 14px !important;\\n font-weight: 700 !important;\\n padding: 10px 15px !important;\\n text-align: left;\\n text-transform: capitalize;\\n}\\n\\n.bing_table_header {\\n border-bottom: 3px solid rgba(255, 187, 0, 1) !important;\\n color: black;\\n font-size: 14px !important;\\n font-weight: 700 !important;\\n padding: 10px 15px !important;\\n text-align: left;\\n text-transform: capitalize;\\n}\\n\\n.google_table_header {\\n border-bottom: 3px solid rgba(66, 134, 244, 1) !important;\\n color: black;\\n font-size: 14px !important;\\n font-weight: 700 !important;\\n padding: 10px 15px !important;\\n text-align: left;\\n text-transform: capitalize;\\n}\\n\\n@font-family: \\\"Suisse Intl\\\",\\\"Suisse Int'l\\\",Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",\\\"Segoe UI Symbol\\\";\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","const helptexts = {\n IMPRESSIONS_CHANGE_THRESHHOLD: {\n title: 'Impressions Change is used to quickly identify large drops in impressions',\n content:\n 'Impressions change is the difference between the latest number of impressions and the average number. Set the number to filter the table. Default is -40% which means that only campaigns where impressions have DECREASED with more than (or equal to) 40 % vill be displayed.',\n },\n IMPRESSIONS_LATEST_SWITCH: {\n title: 'Zero impressions',\n content: 'Flip the switch to only display stores with a latest record of zero impressions.',\n },\n FILTER_ON_ME: {\n title: 'Filter On Me',\n content: 'Filter the table on the user that is currently logged in. CSM only as of now',\n },\n WEIGHTED_KEYWORDS: {\n title: 'Weighted Keywords',\n content:\n 'Weighted quality score is calculated by multiplying conversion value with a quality score scaled down by a factor of 100.',\n },\n POTENTIAL_KEYWORDS: {\n title: 'Potential Keywords',\n content:\n 'Potential keywords are selected from the lowest quality score keywords in the campaign, sorted by highest click through rate',\n },\n IMPRESSIONS: {\n title: 'Impressions',\n content:\n 'An impression is counted each time your ad is shown on a search result page or other sites. Each time your ad appears on, let’s say, Google or Meta, it’s counted as one impression. In some cases, only a section of your ad may be shown. For example, in Google Maps, your business name and location may only be shown, or your business name and the first line of your ad copy.',\n },\n CLICKS: {\n title: 'Clicks',\n content:\n 'A click is counted each time a user clicks on your ad. A click is counted when a user clicks on your ad, even if they don’t end up visiting your website. For example, if a user clicks on your ad, then closes the tab, the click is still counted.',\n },\n COST: {\n title: 'Cost',\n content: 'The total amount of money you have spent on your ads.',\n },\n CONVERSIONS: {\n title: 'Conversions',\n content:\n 'A conversion is counted each time a user takes a desired action on your website after clicking on your ad. For example, if a user clicks on your ad, then makes a purchase on your website, the click and the conversion are both counted.',\n },\n CONVERSIONVALUE: {\n title: 'Conversion Value',\n content:\n 'The total value of all conversions. Conversion value is calculated by multiplying the conversion value with the number of conversions.',\n },\n CPC: {\n title: 'Cost Per Click',\n content:\n 'The average amount you pay each time a user clicks on your ad. To calculate the average CPC, divide your total cost by the number of clicks.',\n },\n COSTPERCLICK: {\n title: 'Cost Per Click',\n content:\n 'The average amount you pay each time a user clicks on your ad. To calculate the average CPC, divide your total cost by the number of clicks.',\n },\n CTR: {\n title: 'Click Through Rate',\n content:\n 'The percentage of impressions that resulted in a click. To calculate the CTR, divide the number of clicks by the number of impressions.',\n },\n CLICKTHROUGHRATE: {\n title: 'Click Through Rate',\n content:\n 'The percentage of impressions that resulted in a click. To calculate the CTR, divide the number of clicks by the number of impressions.',\n },\n IMPRESSIONSHARE: {\n title: 'Impression Share',\n content:\n 'The percentage of impressions that your ads receive compared to the total number of impressions that your ads could get. To calculate the impression share, divide the number of impressions that your ads received by the estimated number of impressions that your ads were eligible to receive.',\n },\n SEARCHIMPRESSIONSHARE: {\n title: 'Impression Share',\n content:\n 'The percentage of impressions that your ads receive compared to the total number of impressions that your ads could get. To calculate the impression share, divide the number of impressions that your ads received by the estimated number of impressions that your ads were eligible to receive.',\n },\n SEARCHVOLUME: {\n title: 'Search Volume',\n content: 'The average number of times people have searched for a keyword per month, during the last 12 months.',\n },\n QUALITYSCORE: {\n title: 'Quality Score',\n content:\n 'Quality Score is an estimate of the quality of your ads, keywords, and landing pages. Higher quality ads can lead to lower prices and better ad positions.',\n },\n LANDINGPAGEEXPERIENCE: {\n title: 'Landing Page Experience',\n content:\n 'Landing page experience is AdWords’ measure of how well your website gives people who click your ads exactly what they’re looking for--quickly and effortlessly. Landing page experience is represented on a 1-to-10 scale, with 1 being the lowest and 10 being the highest.',\n },\n ROAS: {\n title: 'Return On Ad Spend',\n content:\n 'Return on ad spend (ROAS) is a marketing metric that measures the amount of revenue your business earns for each dollar spent on advertising. ROAS helps online businesses evaluate which methods are working and how they can improve future advertising efforts.',\n },\n CPA: {\n title: 'Cost Per Acquisition',\n content:\n 'Cost per acquisition (CPA), also known as cost per action, pay per acquisition (PPA) and cost per conversion (CPC), is an online advertising pricing model where the advertiser pays for a specified acquisition - for example a sale, click, or form submit (e.g., contact request, newsletter sign up, registration etc.)',\n },\n CONVERSIONRATE: {\n title: 'Conversion Rate',\n content:\n 'Conversion rate is the percentage of visitors to your website that complete a desired goal (a conversion) out of the total number of visitors.',\n },\n CONVRATE: {\n title: 'Conversion Rate',\n content:\n 'Conversion rate is the percentage of visitors to your website that complete a desired goal (a conversion) out of the total number of visitors.',\n },\n RETURNONEXPENDITURVALUE: {\n title: 'Return On Expenditure Value',\n content:\n 'Return on ad spend (ROAS) is a marketing metric that measures the amount of revenue your business earns for each dollar spent on advertising. ROAS helps online businesses evaluate which methods are working and how they can improve future advertising efforts.',\n },\n COS: {\n title: 'Cost Of Sales',\n content:\n 'Cost of sales (COS), also known as the cost of revenue, is the total of all costs directly related to the production of goods or services sold by a company. This amount includes the cost of the materials used in creating the good along with the direct labor costs used to produce the good.',\n },\n SEARCHINTEREST: {\n title: 'Search Interest',\n content:\n 'Search interest is an index calculated from a period of at least one year prior to the end date in the range. 100 indicates the day with the largest search volume. A value of 50 indicates a day has half the search interest of the peak, and a value of 0 indicates a day has less than 1/100th the search interest that the peak does.',\n },\n FREQUENCY: {\n title: 'Frequency',\n content:\n 'Frequency is the average number of times that each person saw your ad. ' +\n 'It is estimated by dividing the total number of impressions by the total number of unique users who saw the ad.' +\n ' For example, if an ad was shown 5 times and 4 people saw it, the frequency is 1.25. ',\n },\n LANDINGPAGEVIEWS: {\n title: 'Landing page views',\n content:\n 'A landing page view is when a person clicks on your ad link ' +\n 'and then successfully loads at least some of your ad destination URL or Instant Experience.'\n },\n\n PAGEVIEW: {\n title: 'Landing page views',\n content:\n 'A landing page view is when a person clicks on your ad link ' +\n 'and then successfully loads at least some of your ad destination URL or Instant Experience.'\n },\n\n NEWUSERS: {\n title: 'New users',\n content:\n 'New users are users who have never been to your website before.'\n },\n\n RETURNINGUSERS: {\n title: 'Returning users',\n content:\n 'Returning users have already visited your website before.'\n },\n\n UNIQUEUSERS: {\n title: 'Unique users',\n content:\n '\\n' +\n 'A unique user refers to a person who has visited your website at least ' +\n 'once and is counted also only once in the reporting time period. '\n },\n NOOFOPERATIONS: {\n title: 'Number of optimizations',\n content:\n '\\n' +\n 'The total number of optimizations made by Amanda in the given time period to achieve the campaign results.'\n },\n BUDGETAMOUNT: {\n title: 'Budget amount',\n content:\n '\\n' +\n \"Budget amounts are estimates based on today's calculations that reflect how much campaign budget will be allocated for the upcoming period.\",\n },\n REACH: {\n title: 'Reach',\n content:\n '\\n' +\n 'Reach is the number of unique users on Meta who have seen your posts, page, or advertisements.'\n },\n\n\n};\n\n\nexport default helptexts;\n\nexport type HelpTextType = typeof helptexts;\n","import { useEffect, useState } from 'react';\n\ntype InitialValue = null | string | number | boolean | (() => null | string | number | boolean);\ntype StoredValue = null | string | number | boolean;\n\nfunction getSavedValue(key: string, initialvalue: InitialValue): StoredValue {\n try {\n const savedvalue = JSON.parse(localStorage.getItem(key));\n if (savedvalue) return savedvalue;\n } catch (err) {\n console.error(err);\n }\n if (initialvalue instanceof Function) return initialvalue();\n return initialvalue;\n}\n\nfunction useLocalStorage(key: string, initialvalue: any): [StoredValue, Function] {\n const [value, setValue] = useState(() => getSavedValue(key, initialvalue));\n\n useEffect(() => {\n localStorage.setItem(key, JSON.stringify(value));\n }, [value]);\n\n return [value, setValue];\n}\n\nexport default useLocalStorage;\n","import { Alert } from '@mui/material';\nimport React from 'react';\n\ninterface Props {\n children: React.ReactNode;\n}\n\ninterface State {\n hasError: boolean;\n}\n\nclass ErrorBoundary extends React.Component {\n state = { hasError: false };\n\n static getDerivedStateFromError(_: Error): State {\n return { hasError: true };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n // You can also log the error to an error reporting service\n console.error(error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n const messages = [\n 'We apologize for the inconvenience. Our team is currently addressing the issue.',\n \"We're experiencing technical difficulties at the moment. Our team is actively working to resolve them.\",\n 'We regret to inform you that something has gone wrong. Our team is working diligently to fix it.',\n 'We apologize for any disruption caused. Our team is aware of the problem and is working on a solution.',\n \"We're sorry, but we're encountering an issue. Rest assured, our team is working to rectify it as soon as possible.\",\n \"We're currently experiencing some problems. Our team is investigating the issue and working to restore normal operations.\",\n \"Our sincere apologies for the inconvenience. We're aware of the issue and are working to resolve it promptly.\",\n 'We regret to inform you that an error has occurred. Our team is actively working on resolving the issue.',\n 'We apologize for the disruption in service. Our team is engaged in resolving the problem.',\n \"We're sorry for the inconvenience. Our team is working diligently to fix the issue and minimize any further impact.\",\n ];\n\n const randomIndex = Math.floor(Math.random() * messages.length);\n const randomMessage = messages[randomIndex];\n return (\n \n {randomMessage}\n \n );\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import ErrorBoundary from './ErrorBoundary';\n\nexport default ErrorBoundary;\n","import React from 'react';\n\ntype Props = {\n width: number;\n color?: string;\n};\n\nfunction AmandaAiLogo({ width, color = '#fff' }: Props) {\n return (\n // \n // \n // \n // \n // \n // \n // \n // \n // \n // \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default AmandaAiLogo;\n","import AmandaAiLogo from './TextLogo';\n\nexport default AmandaAiLogo;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./animation.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './animation.css';\nimport { BEIGE, BLACK } from 'Utils/colors';\n\ntype Props = {\n width: number;\n foreground?: string;\n background?: string;\n isLoading?: boolean;\n};\n\nfunction AnimatedLogo({ width, foreground = BLACK, background = BEIGE, isLoading = false }: Props) {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n\nexport default AnimatedLogo;\n","import AnimatedLogo from './AnimatedLogo';\n\nexport default AnimatedLogo;\n","import React from 'react';\n// @ts-ignore\nimport Microsoft_Bing_logo from './Microsoft_Bing_logo.png';\n\nfunction MicrosoftLogoContainer() {\n return (\n
\n \n
\n );\n}\n\nexport default MicrosoftLogoContainer;\n","import PartnerLogoContainer from './PartnerLogo';\n\nexport default PartnerLogoContainer;","import React from 'react';\n// @ts-ignore\nimport PartnerLogo from './PartnerLogo.png';\n\nfunction PartnerLogoContainer() {\n return (\n
\n \n
\n );\n}\n\nexport default PartnerLogoContainer;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./Footer.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import Grid from '@mui/material/Grid';\nimport { BLACK, ORANGE, TEAL } from 'Utils/colors';\nimport React from 'react';\nimport AnimatedLogo from '../AnimatedLogo';\n\nimport MicrosoftLogoContainer from '../MicrosoftLogo/MicrosoftLogo';\nimport PartnerLogoContainer from '../PartnerLogo';\nimport './Footer.css';\n\nimport Stack from '@mui/material/Stack';\n\nfunction Footer() {\n return (\n \n {/*Animated Logo and Philosophy Grid*/}\n \n \n \n \n \n OUR PHILOSOPHY:\n \n\n \n Dance to the algorithms!\n \n \n \n {/*Navigation Links Grid*/}\n \n
\n \n \n \n ➔ Contact us \n \n \n\n
  • \n \n ➔ FAQ \n \n
  • \n \n
    \n
    \n \n\n {/*Microsoft and Partner Logos Grid*/}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Footer;\n","import Footer from './Footer';\n\nexport default Footer;","import React, { createContext, useContext, useState, useCallback, useEffect } from 'react';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { PortalUser } from 'Types/insightstypes';\nimport { InsightsRequest } from 'Types/insightstypes';\nexport type DateSelectorConfig = [Date | null, Date | null];\n\ntype InsightsQueryContextType = {\n dateRange: DateSelectorConfig;\n setDateRange: React.Dispatch>;\n setStartDate: React.Dispatch>;\n setEndDate: React.Dispatch>;\n startDateLastYear: string;\n endDateLastYear: string;\n startDate: string;\n endDate: string;\n periodLength: number;\n platforms: PlatformType[];\n platformsEnabled: boolean;\n setPlatformsEnabled: React.Dispatch>;\n setPlatforms: React.Dispatch>;\n portalUser: PortalUser;\n setPortalUser: React.Dispatch>;\n countries: string[];\n setCountries: React.Dispatch>;\n queryparams: InsightsRequest;\n includeBrandCampaigns: boolean;\n setIncludeBrandCampaigns: React.Dispatch>;\n isReadyToRun: boolean;\n setAlternateStartDate: React.Dispatch>;\n setAlternateEndDate: React.Dispatch>;\n alternateStartDate: Date;\n alternateEndDate: Date;\n alternateDateRange: DateSelectorConfig;\n setAlternateDateRange: React.Dispatch>;\n shallCompare: boolean;\n setShallCompare: React.Dispatch>;\n compareEnabled: boolean;\n setCompareEnabled: React.Dispatch>;\n};\n\ntype PlatformType = string;\n\nconst InsightsQueryContext = createContext(null);\n\nexport function useInsightsQuery() {\n return useContext(InsightsQueryContext);\n}\n\nexport function InsightsQueryProvider({ children }: { children: React.ReactNode }) {\n const [startDate, setStartDate] = useState(dayjs().startOf('month').toDate());\n const [endDate, setEndDate] = useState(dayjs().subtract(1, 'day').toDate());\n const [alternateStartDate, setAlternateStartDate] = useState(dayjs().subtract(2, 'month').toDate());\n const [alternateEndDate, setAlternateEndDate] = useState(dayjs().subtract(1, 'month').toDate());\n const [shallCompare, setShallCompare] = useState(false);\n const [compareEnabled, setCompareEnabled] = useState(true);\n const [platforms, setPlatforms] = useState(['google', 'bing', 'meta']);\n const [platformsEnabled, setPlatformsEnabled] = useState(true);\n const [portalUser, setPortalUser] = useState(null);\n const [countries, setCountries] = useState([]);\n const [includeBrandCampaigns, setIncludeBrandCampaigns] = useState(true);\n const dateRange: DateSelectorConfig = [startDate, endDate];\n const alternateDateRange: DateSelectorConfig = [alternateStartDate, alternateEndDate];\n const queryparams: InsightsRequest = {\n startdate: dayjs(startDate).format('YYYY-MM-DD'),\n enddate: dayjs(endDate).format('YYYY-MM-DD'),\n channels: platforms,\n portaluser: portalUser?.id || 0,\n countries: countries,\n reports: [{ includebrandcampaigns: includeBrandCampaigns }],\n };\n\n\n useEffect(() => {\n setCountries([]);\n }, [portalUser]); //triggered whenever the portalUser dependency changes\n\n useEffect(() => {\n if (startDate > endDate) {\n setEndDate(dayjs(startDate).add(14, 'day').toDate()); //endDate is always after the startDate.\n }\n }, [startDate]);\n useEffect(() => {\n if (endDate < startDate) {\n setStartDate(dayjs(endDate).subtract(14, 'day').toDate()); //startDate is always before the endDate.\n }\n }, [endDate]);\n\n const value = {\n dateRange,\n setDateRange: useCallback((dateRange: DateSelectorConfig) => {\n if (!Array.isArray(dateRange)) {\n throw new Error('Date range must be an array');\n }\n if (dateRange.length !== 2) {\n throw new Error('Date range must have two elements');\n }\n if (!(dateRange[0] instanceof Date)) {\n throw new Error('First element of date range must be a date');\n }\n if (!(dateRange[1] instanceof Date)) {\n throw new Error('Second element of date range must be a date');\n }\n const [startDate, endDate] = dateRange;\n setStartDate(dayjs(startDate).toDate());\n setEndDate(dayjs(endDate).toDate());\n }, []),\n setStartDate: useCallback((date: Date | null) => {\n setStartDate(date);\n }, []),\n setEndDate: useCallback((date: Date | null) => {\n setEndDate(date);\n }, []),\n startDate: dayjs(startDate).format('YYYY-MM-DD'),\n endDate: dayjs(endDate).format('YYYY-MM-DD'),\n startDateLastYear: dayjs(startDate).subtract(1, 'year').format('YYYY-MM-DD'),\n endDateLastYear: dayjs(endDate).subtract(1, 'year').format('YYYY-MM-DD'), // comparing current date range with the corresponding date range from one year ago\n alternateDateRange,\n alternateStartDate: dayjs(alternateStartDate).toDate(),\n alternateEndDate: dayjs(alternateEndDate).toDate(), // uses dayjs to convert the date values into Date objects.\n setAlternateStartDate: useCallback((date: Date | null) => {\n setAlternateStartDate(date);\n }, []),\n setAlternateEndDate: useCallback((date: Date | null) => {\n setAlternateEndDate(date);\n }, []),\n setAlternateDateRange: useCallback((dateRange: DateSelectorConfig) => {\n if (!Array.isArray(dateRange)) {\n throw new Error('Date range must be an array');\n }\n if (dateRange.length !== 2) {\n throw new Error('Date range must have two elements');\n }\n if (!(dateRange[0] instanceof Date)) {\n throw new Error('First element of date range must be a date');\n }\n if (!(dateRange[1] instanceof Date)) {\n throw new Error('Second element of date range must be a date');\n }\n const [startDate, endDate] = dateRange;\n setAlternateStartDate(dayjs(startDate).toDate());\n setAlternateEndDate(dayjs(endDate).toDate());\n }, []),\n periodLength: dayjs(endDate).diff(dayjs(startDate), 'day') + 1, // +1 because diff is exclusive //calculating the difference in days between the endDate and startDate. +1 include the end date\n platforms,\n setPlatforms,\n platformsEnabled,\n setPlatformsEnabled,\n portalUser,\n setPortalUser,\n queryparams,\n countries,\n setCountries: useCallback((countrycodes: string[]) => setCountries(countrycodes), []),\n includeBrandCampaigns,\n setIncludeBrandCampaigns,\n isReadyToRun: !!(startDate && endDate && portalUser && countries.length > 0 && platforms.length > 0),\n shallCompare,\n setShallCompare,\n compareEnabled,\n setCompareEnabled,\n };\n\n return {children};\n}\n\nexport default InsightsQueryProvider;\n","import { InsightsRequest } from 'Types/insightstypes';\nimport http from 'Utils/Http';\n\nconst fetchAggregatedData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/aggregateddata', { ...params });\n\n return data;\n};\n\nexport default fetchAggregatedData;\n","import { getCookie } from 'Utils/Helpers';\nimport http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchAggregatedDataByDate = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/aggregateddatabydate', { ...params });\n\n return data;\n};\n\nexport default fetchAggregatedDataByDate;\n","import { ResizeObserver } from '@juggle/resize-observer';\nimport { useRef, useState, useEffect } from 'react';\n\ntype chartSettings = {\n width?: number;\n height?: number;\n marginTop: number;\n marginRight: number;\n marginBottom: number;\n marginLeft: number;\n};\n\nconst combineChartDimensions = (dimensions: chartSettings) => {\n const parsedDimensions = {\n ...dimensions,\n marginTop: dimensions.marginTop || 10,\n marginRight: dimensions.marginRight || 10,\n marginBottom: dimensions.marginBottom || 40,\n marginLeft: dimensions.marginLeft || 75,\n };\n return {\n ...parsedDimensions,\n boundedHeight: Math.max(parsedDimensions.height - parsedDimensions.marginTop - parsedDimensions.marginBottom, 0),\n boundedWidth: Math.max(parsedDimensions.width - parsedDimensions.marginLeft - parsedDimensions.marginRight, 0),\n };\n};\n\nconst useChartDimensions = (\n passedSettings: chartSettings\n): [React.MutableRefObject, ReturnType] => {\n const ref = useRef();\n const dimensions = combineChartDimensions(passedSettings);\n\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n\n useEffect(() => {\n if (dimensions.width && dimensions.height) return;\n if (ref.current === undefined) return;\n\n const element = ref.current;\n if (element === null) return;\n\n /**\n * @juggle/resize-observer is a polyfill for the ResizeObserver API.\n * https://github.com/que-etc/resize-observer-polyfill/issues/35\n * Typescript is telling you that it does not know that the imported ResizeObserver can be instantiated like a class,\n * because no type definitions are provided with this module.\n * You can overcome this by explicitly declaring the type as any like this:\n */\n const _ResizeObserver: any = ResizeObserver;\n const resizeObserver = new _ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!Array.isArray(entries)) return;\n if (!entries.length) return;\n\n const entry = entries[0];\n\n if (width != entry.contentRect.width) setWidth(entry.contentRect.width);\n if (height != entry.contentRect.height) setHeight(entry.contentRect.height);\n });\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, [ref.current]);\n\n const newSettings = combineChartDimensions({\n ...dimensions,\n width: dimensions.width || width,\n height: dimensions.height || height,\n });\n\n return [ref, newSettings];\n};\n\nexport default useChartDimensions;\n","import { useEffect, useState, useMemo } from 'react';\nimport {AggregatedDataByDateType, GoogleCampaignDataType} from '../Types/insightstypes';\nimport { AggregatedDataByDateType, InsightsRequest } from '../Types/insightstypes';\n\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { DateSelectorConfig } from 'Context/InsightsQueryContext';\n\ninterface Datum {\n x?: Date | number | string;\n y?: Date | number | string;\n [key: string]: any;\n}\n\ntype DataPerCategoryType = {\n [key: string]: Serie;\n};\n\ninterface Serie {\n id: string | number;\n sortKey?: string | number;\n data: Datum[];\n [key: string]: any;\n}\ntype TimeSeries = [AggregatedDataByDateType[] | GoogleCampaignDataType, AggregatedDataByDateType[] | GoogleCampaignDataType];\ntype DataGetter = (\n accumulator: {\n [key: string]: Serie;\n },\n currentValue: AggregatedDataByDateType | GoogleCampaignDataType,\n currentIndex: number,\n array: AggregatedDataByDateType[] | GoogleCampaignDataType[],\n isOriginal: boolean\n) => { [key: string]: Serie };\ntype Props = [...TimeSeries, DataGetter, InsightsRequest];\ntype Error = string[];\n\n/**\n *\n * @param data\n * @param data[0] originalTimeSeries is the time series that is used as the base for the comparison.\n * @param data[1] comparisonTimeSeries is the time series that is compared to the original time series.\n * @param data[2] dataGetter is a function that is used in a reducer function to get the data per category from the time series.\n * @returns\n *\n * @example\n * const [originalTimeSeries, comparisonTimeSeries, dataGetter, dateSelectorConfig] = data;\n * const [originalData, comparisonData, error] = useComparisonData([originalTimeSeries, comparisonTimeSeries, dataGetter, dateSelectorConfig]);\n *\n * @description\n * This hook takes in two time series and a data getter function and returns two objects with the data per category.\n * The data getter function is used in a reducer function to get the data per category from the time series.\n * @param accumulator: The accumulator is an object with the data per category. The data per category is stored in the data property of the category object.\n * @param currentValue: The current value is the current data point in the time series.\n * @param currentIndex: The current index is the index of the current data point in the time series.\n * @param array: The array is the time series.\n * @param isOriginal: The isOriginal parameter is a boolean that indicates if the time series is the original time series or the comparison time series. This is useful for displaying the correct labels in the chart.\n *\n * The data getter function should return an object with the data per category.\n * The data per category is stored in the data property of the category object.\n *\n * @example\n * const dataGetter = (accumulator, currentValue, currentIndex, array, isOriginal) => {\n * const { reportdate, ...rest } = currentValue;\n * const day = dayjs(reportdate).format('D');\n * const category = rest[categoryName];\n * const categoryData = accumulator[category] || {\n * id: category,\n * data: [],\n * };\n * categoryData.data.push({ x: day, y: rest[metricName] });\n * accumulator[category] = categoryData;\n * return accumulator;\n * };\n *\n * @returns\n * @returns result: An array with two objects with the data per category.\n * @returns result[0]: The first object with the data per category.\n * @returns result[1]: The second object with the data per category.\n * @returns error: An array with errors.\n *\n *\n */\n\nfunction useComparisonData(data: Props): [DataPerCategoryType, DataPerCategoryType, ...Error] {\n const [originalTimeSeries, comparisonTimeSeries, dataGetter, queryparams] = data;\n const { reports: [{ includebrandcampaigns }] = [{}] } = queryparams;\n\n const [errors, setErrors] = useState([]);\n\n useEffect(() => {\n if (comparisonTimeSeries?.length === 0) {\n setErrors((previousErrors) => {\n if (!previousErrors.includes('No comparison data found.')) {\n return [...previousErrors, 'No comparison data found.'];\n }\n return previousErrors;\n });\n }\n }, [comparisonTimeSeries?.length, includebrandcampaigns]);\n\n useEffect(() => {\n if (originalTimeSeries?.length === 0) {\n setErrors((previousErrors) => {\n if (!previousErrors.includes('No original data found.')) {\n return [...previousErrors, 'No original data found'];\n }\n return previousErrors;\n });\n }\n }, [originalTimeSeries?.length, includebrandcampaigns]);\n\n const result: [DataPerCategoryType, DataPerCategoryType] = (() => {\n if (!data || (originalTimeSeries?.length === 0 && comparisonTimeSeries?.length === 0)) return;\n\n const org = originalTimeSeries?.reduce(\n (acc, curr, i, arr) => dataGetter(acc, curr, i, arr, true),\n {} as DataPerCategoryType\n );\n\n const comp = comparisonTimeSeries?.reduce(\n (acc, curr, i, arr) => dataGetter(acc, curr, i, arr, false),\n {} as DataPerCategoryType\n );\n\n return [org, comp];\n })();\n\n\n return [...result, ...errors];\n}\n\n\nexport default useComparisonData;\n","import { PortalUser } from 'Types/insightstypes';\n\nexport const humanReadable = Object.freeze({\n insightsKPIs: Object.freeze({\n keyword: (portaluser: PortalUser = undefined) => 'Keyword',\n reportdate: (portaluser: PortalUser = undefined) => 'Report Date',\n index: (portaluser: PortalUser = undefined) => '-',\n clicks: (portaluser: PortalUser = undefined) => 'Clicks',\n clickthroughrate: (portaluser: PortalUser = undefined) => 'CTR',\n conversionrate: (portaluser: PortalUser = undefined) => 'Conversion Rate',\n convrate: (portaluser: PortalUser = undefined) => 'Conversion Rate',\n conversions: (portaluser: PortalUser = undefined) => 'Conversions',\n conversionvalue: (portaluser: PortalUser = undefined) => 'Conversion Value',\n cost: (portaluser: PortalUser = undefined) => 'Cost',\n frequency: (portaluser: PortalUser = undefined) => 'Frequency',\n impressions: (portaluser: PortalUser = undefined) => 'Impressions',\n impressionshare: (portaluser: PortalUser = undefined) => 'Impression Share',\n searchimpressionshare: (portaluser: PortalUser = undefined) => 'Search Imp. Share',\n landingpageviews: (portaluser: PortalUser = undefined) => 'Landing Page Views',\n pageview: (portaluser: PortalUser = undefined) => 'Landing Page Views',\n newusers: (portaluser: PortalUser = undefined) => 'New Users',\n returningusers: (portaluser: PortalUser = undefined) => 'Returning Users',\n returnonexpenditurevalue: (portaluser: PortalUser = undefined) =>\n portaluser?.return_on_expenditure_type ? portaluser?.return_on_expenditure_type : 'Ret. On Exp. Value',\n roas: (portaluser: PortalUser = undefined) =>\n portaluser?.return_on_expenditure_type ? portaluser?.return_on_expenditure_type : 'Ret. On Exp. Value',\n searchvolume: (portaluser: PortalUser = undefined) => 'Search Volume',\n uniqueusers: (portaluser: PortalUser = undefined) => 'Unique Users',\n qualityscore: (portaluser: PortalUser = undefined) => 'Quality Score',\n costperclick: (portaluser: PortalUser = undefined) => 'CPC',\n landingpageexperience: (portaluser: PortalUser = undefined) => 'Landing Page Exp.',\n noofoperations: (portaluser: PortalUser = undefined) => 'Number of Optimizations',\n budgetamount: (portaluser: PortalUser = undefined) => 'Budget amount',\n reach: (portaluser: PortalUser = undefined) => 'Reach',\n }),\n insightsKPIValueFormat: Object.freeze({\n keyword: (portaluser: PortalUser = undefined) => '-',\n reportdate: (portaluser: PortalUser = undefined) => '', // percentage, 0 decimals\n index: (portaluser: PortalUser = undefined) => '-',\n clicks: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n clickthroughrate: (portaluser: PortalUser = undefined) => '0>-01,.2%', // percentage, 2 decimals\n conversionrate: (portaluser: PortalUser = undefined) => '0>-01,.2%', // percentage, 2 decimals\n convrate: (portaluser: PortalUser = undefined) => '0>-01,.2%', // percentage, 2 decimals\n conversions: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n conversionvalue: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n cost: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n frequency: (portaluser: PortalUser = undefined) => '0>-01,.2f', // number, 2 decimals\n impressions: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n impressionshare: (portaluser: PortalUser = undefined) => ' >-.0p', // percentage, 0 decimals\n searchimpressionshare: (portaluser: PortalUser = undefined) => ' >-.0p', // percentage, 0 decimals\n landingpageviews: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n pageview: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n newusers: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n returningusers: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n returnonexpenditurevalue: (portaluser: PortalUser = undefined) => '0>-01,.2f', // number, 2 decimals\n roas: (portaluser: PortalUser = undefined) => '0>-01,.2f', // number, 2 decimals\n searchvolume: (portaluser: PortalUser = undefined) => '0>-01,.2f', // number, 0 decimals\n uniqueusers: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n qualityscore: (portaluser: PortalUser = undefined) => '0>-01,.1f', // number, 1 decimals\n costperclick: (portaluser: PortalUser = undefined) => '0>-01,.2f', // number, 2 decimals\n landingpageexperience: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n noofoperations: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n budgetamount: (portaluser: PortalUser = undefined) => '0>-01,.3~s', // number, 0 decimals\n reach: (portaluser: PortalUser = undefined) => '0>-01,.2f', // number, 2 decimals\n\n }),\n});\n\nexport const insightsKPIWithCurrencyCode = Object.freeze(['cost', 'conversionvalue', 'costperclick', 'cpc']);\n\nexport type HumanReadableInsightsKPIsType = typeof humanReadable.insightsKPIs;\nexport type HumanReadableInsightsKPIsValueFormatType = typeof humanReadable.insightsKPIValueFormat;\n","import React, { useState } from 'react';\nimport HelpIcon from '@mui/icons-material/Help';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\n\nimport Typography from '@mui/material/Typography';\nimport DialogContent from '@mui/material/DialogContent';\n\ntype helpModalProps = {\n helptext: string;\n helpTextTitle?: string;\n};\n\nfunction HelpModal({ helptext, helpTextTitle = null }: helpModalProps) {\n const [open, setOpen] = useState(false);\n const handleClose = () => {\n setOpen(false);\n };\n return (\n <>\n \n setOpen(true)} />\n \n \n \n {helpTextTitle || 'Help'}\n theme.palette.grey[500],\n }}\n >\n \n \n \n \n \n {helptext}\n \n \n \n \n );\n}\n\nexport default HelpModal;\n","import HelpModal from './HelpModal';\n\nexport default HelpModal;\n","import ChartHeader from './ChartHeader';\n\nexport default ChartHeader;\n","import MovingIcon from '@mui/icons-material/Moving';\nimport TrendingDownIcon from '@mui/icons-material/TrendingDown';\nimport Divider from '@mui/material/Divider';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { insightsKPIWithCurrencyCode } from 'Utils/humanReadableTitles';\nimport HelpModal from '../HelpModal/index';\n\ntype Props = {\n label: string;\n helpText: string;\n helpTextTitle?: string;\n value: string;\n comparisonValue?: string;\n sortKey: string | number;\n metricValue: number;\n metricComparisonValue?: number;\n};\n\nfunction ChartHeader({\n label,\n helpText,\n helpTextTitle = null,\n value,\n comparisonValue = null,\n sortKey,\n metricValue,\n metricComparisonValue = null,\n}: Props) {\n const { shallCompare, portalUser, dateRange, alternateDateRange } = useInsightsQuery();\n const currencycode = portalUser?.currency || 'N/A';\n const hasCurrencyCode = insightsKPIWithCurrencyCode.includes(sortKey as string);\n\n const direction = metricComparisonValue ? (\n metricValue > metricComparisonValue ? (\n \n ) : (\n \n )\n ) : (\n '-'\n );\n const percentageChange = metricComparisonValue\n ? Math.round(((metricValue - metricComparisonValue) / metricComparisonValue) * 100)\n : '-';\n\n return (\n \n \n

    {label.toUpperCase()}

    \n
    \n \n \n \n \n \n \n {`${value} ${\n hasCurrencyCode ? currencycode : ''\n }`}\n {shallCompare && (\n \n {direction}\n {`${percentageChange} %`}\n \n )}\n {shallCompare && }\n \n \n \n {shallCompare && (\n \n \n \n
    Comparison period
    \n {`${comparisonValue} ${\n hasCurrencyCode ? currencycode : ''\n }`}\n
    \n \n
    \n )}\n
    \n );\n}\n\nexport default ChartHeader;\n","import React, { useState } from 'react';\n\nimport Switch from '@mui/material/Switch';\nimport Stack from '@mui/material/Stack';\nimport useChartDimensions from 'Hooks/useChartDimensions';\nimport { CampaignTypeData, CampaignType } from 'Types/insightstypes';\nimport DonutSmallRoundedIcon from '@mui/icons-material/DonutSmallRounded';\nimport LeaderboardRoundedIcon from '@mui/icons-material/LeaderboardRounded';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport ChangeHistoryIcon from '@mui/icons-material/ChangeHistory';\nimport StackedLineChartIcon from '@mui/icons-material/StackedLineChart';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\n\ntype Props = {\n children: (arg: Boolean) => React.ReactNode;\n};\n\nconst chartSettings = {\n marginTop: 30,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 40,\n};\n\nfunction ChartSwitchWrapper({ children }: Props) {\n const [chartTypeSwitch, setChartTypeSwitch] = useState(false);\n\n const [ref, dms] = useChartDimensions(chartSettings);\n return (\n
    \n \n \n setChartTypeSwitch(false)}>\n \n \n \n setChartTypeSwitch(!chartTypeSwitch)}\n />\n \n setChartTypeSwitch(true)}>\n \n \n \n \n
    \n {children(chartTypeSwitch)}\n
    \n
    \n );\n}\n\nexport default ChartSwitchWrapper;\n","import ChartSwitchWrapper from './ChartSwitchWrapper';\n\nexport default ChartSwitchWrapper;\n","import { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport React, { useMemo } from 'react';\n\nimport { BarTooltipProps, ResponsiveBar } from '@nivo/bar';\n\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { enumerateDaysBetweenDates } from 'Utils/Helpers';\n\nimport { AggregatedDataSerie, AggregatedDataType, PortalUser } from 'Types/insightstypes';\n\nimport { BasicTooltip } from '@nivo/tooltip';\nimport { BLUE, ORANGE } from 'Utils/colors';\nimport { humanReadable } from 'Utils/humanReadableTitles';\nimport * as d3 from 'd3';\n\ntype Props = { data: [AggregatedDataSerie, AggregatedDataSerie]; foregroundColor?: string[]; backgroundColor?: string };\n\nfunction addIndexToDates(timeSeries: any) {\n return timeSeries?.map((dataPoint: any, index: number) => {\n const { x, y } = dataPoint;\n return { x, y, index };\n });\n}\n\nconst CustomTooltip = (\n props: Omit<\n BarTooltipProps<[AggregatedDataSerie, AggregatedDataSerie]>,\n 'hidden' | 'index' | 'indexValue' | 'data'\n > & { dataId: string; portalUser: PortalUser }\n) => {\n const displaylabel = props.label.indexOf('-') > -1 ? props.label.slice(props.label.indexOf('-') + 1) : '';\n const displayvalueformatter =\n humanReadable.insightsKPIValueFormat[props.dataId as keyof AggregatedDataType](props.portalUser) ||\n props.formattedValue;\n const displayvalue = d3.format(displayvalueformatter)(props.value);\n return (\n \n {displaylabel} : {displayvalue}\n \n }\n enableChip={true}\n color={props.color}\n />\n );\n};\n\nconst NivoBarDelta = ({ data, foregroundColor, backgroundColor }: Props) => {\n const { dateRange, alternateDateRange, portalUser } = useInsightsQuery();\n let datacopy = structuredClone(data);\n let [originalTimeSeries, comparisonTimeSeries] = datacopy;\n const dataId = originalTimeSeries?.id;\n\n const originalTimeSeriesWithGapsFilled: AggregatedDataSerie['data'] = useMemo(() => {\n const dates = enumerateDaysBetweenDates(dayjs(dateRange[0]), dayjs(dateRange[1]));\n const originalTimeSeriesWithGapsFilled = dates.map((date) => {\n const originalDataPoint = originalTimeSeries.data.find((dataPoint: any) => {\n return dayjs(dataPoint.x).isSame(date, 'day');\n });\n const x = date;\n const y = originalDataPoint?.y;\n return { x, y };\n });\n\n return originalTimeSeriesWithGapsFilled;\n }, [originalTimeSeries?.data?.length, dateRange[0], dateRange[1]]);\n\n const comparisonTimeSeriesWithGapsFilled: AggregatedDataSerie['data'] = useMemo(() => {\n const dates = enumerateDaysBetweenDates(dayjs(alternateDateRange[0]), dayjs(alternateDateRange[1]));\n const comparisonTimeSeriesWithGapsFilled = dates.map((date) => {\n const comparisonDataPoint = comparisonTimeSeries.data.find((dataPoint: any) => {\n return dayjs(dataPoint.x).isSame(date, 'day');\n });\n const x = date;\n const y = comparisonDataPoint?.y;\n return { x, y };\n });\n\n return comparisonTimeSeriesWithGapsFilled;\n }, [comparisonTimeSeries?.data?.length, alternateDateRange[0], alternateDateRange[1]]);\n\n const originalTimeSeriesWithDayNumbers: AggregatedDataSerie['data'] = addIndexToDates(\n originalTimeSeriesWithGapsFilled\n );\n const comparisonTimeSeriesWithDayNumbers: AggregatedDataSerie['data'] = addIndexToDates(\n comparisonTimeSeriesWithGapsFilled\n );\n originalTimeSeries.data = originalTimeSeriesWithDayNumbers;\n comparisonTimeSeries.data = comparisonTimeSeriesWithDayNumbers;\n\n const deltaData = useMemo(() => {\n const deltaData = originalTimeSeriesWithDayNumbers?.map((dataPoint: any) => {\n const { x, y, index } = dataPoint;\n if (y === null) {\n return { x, y: null };\n }\n const comparisonDataPoint = comparisonTimeSeriesWithDayNumbers[index];\n const comparisonY = comparisonDataPoint?.y as number;\n if (comparisonY === null) {\n return { x, y: null };\n }\n\n const delta = y - comparisonY;\n const change = 0 + delta;\n const result =\n change > 0 ? { pos: Number.isNaN(change) ? null : change } : { neg: Number.isNaN(change) ? null : change };\n\n return { x, ...result };\n });\n\n const deltaDataPositives = deltaData.map((dataPoint: any) => {\n const { x, y } = dataPoint;\n const positiveY = y > 0 ? y : null;\n return { x, y: positiveY };\n });\n\n const deltaDataNegatives = deltaData.map((dataPoint: any) => {\n const { x, y } = dataPoint;\n const negativeY = y < 0 ? y : null;\n return { x, y: negativeY };\n });\n\n return [deltaData, deltaDataPositives, deltaDataNegatives];\n }, [originalTimeSeries?.data?.length, comparisonTimeSeriesWithGapsFilled?.length]);\n\n const deltaLine = structuredClone(originalTimeSeries);\n deltaLine.id = 'delta';\n deltaLine.sortKey = 'delta';\n deltaLine.data = deltaData[0];\n\n const deltaLinePositives = structuredClone(originalTimeSeries);\n deltaLinePositives.id = 'deltaPositives';\n deltaLinePositives.sortKey = 'deltaPositives';\n deltaLinePositives.data = deltaData[1];\n const max = d3.max(deltaLinePositives?.data, (d) => (d.y ? d.y : 0) as number | null);\n\n const deltaLineNegatives = structuredClone(originalTimeSeries);\n deltaLineNegatives.id = 'deltaNegatives';\n deltaLineNegatives.sortKey = 'deltaNegatives';\n deltaLineNegatives.data = deltaData[2];\n const min = d3.min(deltaLineNegatives?.data, (d) => (d.y ? d.y : 0) as number | null);\n const hasValues = (originalTimeSeries?.data?.length > 0 || comparisonTimeSeries?.data?.length > 0) && max && min;\n const keys = ['pos', 'neg'];\n const colors = [ORANGE, ORANGE];\n const domain = d3.extent(deltaData[0], (d) => dayjs(d.x).format('YYYY-MM-DD'));\n const center = Math.floor(deltaData[0]?.length / 2);\n const centerDate = dayjs(deltaData[0][center].x).format('YYYY-MM-DD');\n const tickValues = [domain[0], centerDate, domain[1]];\n\n /**\n * The enclosing div should be unnecessary because the Chart Wrapper has a height. Dont know why it is needed.\n */\n\n return (\n
    \n {\n return {\n color: colors[index],\n id,\n label: id === 'pos' ? 'Current > Comparison' : 'Comparison > Current',\n };\n }),\n anchor: 'bottom',\n direction: 'row',\n justify: false,\n translateX: 0,\n translateY: 50,\n itemsSpacing: 20,\n itemDirection: 'top-to-bottom',\n itemWidth: 110,\n itemHeight: 20,\n itemOpacity: 0.75,\n symbolSize: 12,\n symbolShape: 'square',\n symbolBorderColor: 'rgba(0, 0, 0, .5)',\n effects: [\n {\n on: 'hover',\n style: {\n itemBackground: 'rgba(0, 0, 0, .03)',\n itemOpacity: 1,\n },\n },\n ],\n },\n ]} */\n tooltip={(node) => (\n \n )}\n />\n
    \n );\n};\n\nexport default NivoBarDelta;","import NivoBarDelta from './NivoBarDelta';\nexport default NivoBarDelta;\n","import EastIcon from '@mui/icons-material/East';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Stack from '@mui/material/Stack';\nimport { PointTooltipProps, ResponsiveLine } from '@nivo/line';\nimport { BasicTooltip } from '@nivo/tooltip';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { AggregatedDataType } from 'Types/insightstypes';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { capitalizeSentence } from 'Utils/Helpers';\nimport { BEIGE, BLUE, ORANGE } from 'Utils/colors';\nimport { humanReadable } from 'Utils/humanReadableTitles';\nimport { regressionLoess } from 'd3-regression';\nimport React, { Suspense } from 'react';\n\ninterface Datum {\n x?: Date | number | string;\n y?: Date | number | string;\n [key: string]: any;\n}\n\ninterface Serie {\n id: string \n sortKey?: string | number;\n data: Datum[];\n [key: string]: any;\n}\n\ntype Props = {\n data: Serie;\n hasTrendLine?: boolean;\n isLoading?: boolean;\n foregroundColor?: string[];\n backgroundColor?: string;\n customYScale?: {\n min?: number;\n };\n};\n\n\nconst CustomTooltip = ({ point }: PointTooltipProps) => (\n \n {point.data.xFormatted} : {point.data.yFormatted}\n \n }\n enableChip={true}\n color={point.serieColor}\n />\n);\n\nfunction NivoLineChart({\n data,\n hasTrendLine = false,\n isLoading,\n foregroundColor = [ORANGE, BLUE],\n backgroundColor = BEIGE,\n customYScale,\n}: Props) {\n const { portalUser } = useInsightsQuery();\n const hasValues = data?.data?.length > 0;\n let dataCopy = structuredClone(data);\n const datalength = dataCopy?.data?.length;\n let chartData = [dataCopy];\n\n dataCopy.id = humanReadable.insightsKPIs[dataCopy.id as keyof AggregatedDataType](portalUser);\n\n if (hasTrendLine) {\n const trendLine = regressionLoess()\n .x((d: Datum) => dayjs(d.x))\n .y((d: Datum) => d.y)\n .bandwidth(1)(dataCopy?.data);\n\n const trendLineData = {\n id: capitalizeSentence(`trend`),\n data: data?.data.map((d, i) => {\n return {\n x: dayjs(d.x).format('YYYY-MM-DD'),\n y: trendLine[i] === undefined ? 0 : trendLine[i][1],\n };\n }),\n color: ORANGE,\n };\n dataCopy = {\n ...dataCopy,\n color: BLUE,\n };\n\n chartData = [ trendLineData, dataCopy];\n\n } else {\n dataCopy = {\n ...dataCopy,\n color: BLUE,\n };\n \n chartData = [dataCopy];\n }\n\n return hasValues ? (\n }>\n -.2r'\n }\n axisTop={null}\n axisRight={null}\n axisBottom={{\n format: '%b %d',\n tickValues: 5,\n tickSize: 5,\n tickPadding: 5,\n tickRotation: 0,\n legendOffset: 42,\n legendPosition: 'middle',\n }}\n axisLeft={{\n tickValues: 3,\n tickSize: 5,\n tickPadding: 5,\n tickRotation: 0,\n }}\n enablePoints={true}\n enableGridX={true}\n enableGridY={true}\n pointSize={datalength <= 90 ? 5 : 3}\n pointBorderWidth={2}\n colors={d => d.color}\n useMesh={true}\n crosshairType=\"bottom-left\"\n legends={[\n {\n anchor: 'bottom',\n direction: 'row',\n justify: false,\n translateX: 0,\n translateY: 50,\n itemsSpacing: 0,\n itemDirection: 'top-to-bottom',\n itemWidth: 110,\n itemHeight: 20,\n itemOpacity: 0.75,\n symbolSize: 12,\n symbolShape: 'square',\n symbolBorderColor: 'rgba(0, 0, 0, .5)',\n effects: [\n {\n on: 'hover',\n style: {\n itemBackground: 'rgba(0, 0, 0, .03)',\n itemOpacity: 1,\n },\n },\n ],\n },\n ]}\n tooltip={(node) => }\n />\n \n ) : isLoading ? (\n \n \n \n ) : (\n \n \n \n
    First select filters and then a property to view chart
    \n
    \n \n );\n}\n\nexport default NivoLineChart;","import NivoLineChart from './NivoLineChart';\n\nexport default NivoLineChart;\n","import { AggregatedDataType, AggregatedDataSerie, AggregatedDataDatum, CampaignTypeData } from 'Types/insightstypes';\nimport React, { useMemo } from 'react';\nimport { PointTooltipProps, ResponsiveLine } from '@nivo/line';\nimport { TEAL, PINK, BEIGE, ORANGE, BLUE } from 'Utils/colors';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport Stack from '@mui/material/Stack';\nimport EastIcon from '@mui/icons-material/East';\nimport { humanReadable } from 'Utils/humanReadableTitles';\nimport { BasicTooltip } from '@nivo/tooltip';\nimport { enumerateDaysBetweenDates } from 'Utils/Helpers';\nimport dayjs from 'dayjs';\n\ntype Props = { data: [AggregatedDataSerie, AggregatedDataSerie]; foregroundColor?: string[]; backgroundColor?: string };\n\nconst CustomTooltip = ({ point }: PointTooltipProps) => (\n \n {point.data.xFormatted} : {point.data.yFormatted}\n \n }\n enableChip={true}\n color={point.serieColor}\n />\n);\n\nfunction NivoAreaChart({ data, foregroundColor = [ORANGE, BLUE], backgroundColor = BEIGE }: Props) {\n const { portalUser } = useInsightsQuery();\n let originaldata = structuredClone(data);\n const hasValues = originaldata[0]?.data?.length > 0;\n\n if (originaldata[0]?.data?.length > 0 && originaldata[1]) {\n originaldata[1].data = originaldata[0].data.map((dataPoint, index) => {\n const date = dataPoint.x; \n const comparisonDataPoint = originaldata[1].data[index];\n let y = comparisonDataPoint?.y;\n\n if (typeof y === 'undefined' || isNaN(Number(y))) {\n y = 0; \n }\n\n return { x: date, y };\n });\n }\n\n return hasValues ? (\n -.2r'\n }\n axisTop={null}\n axisRight={null}\n axisBottom={{\n tickSize: 5,\n tickPadding: 5,\n tickRotation: 60,\n legendOffset: 52,\n legendPosition: 'middle',\n tickValues: 'every 7 days',\n format: '%b %d',\n }}\n axisLeft={{\n format: originaldata[0]?.label\n ? humanReadable.insightsKPIValueFormat[originaldata[0]?.label as keyof AggregatedDataType](portalUser)\n : ' >-.2r',\n tickValues: 3,\n tickSize: 5,\n tickPadding: 5,\n tickRotation: 0,\n }}\n enablePoints={true}\n enableGridX={true}\n enableGridY={true}\n pointSize={4}\n pointBorderWidth={2}\n pointLabelYOffset={-12}\n colors={foregroundColor}\n useMesh={true}\n crosshairType=\"bottom-left\"\n legends={[\n {\n anchor: 'bottom',\n data: originaldata.map((datum, index) => {\n return {\n color: foregroundColor[index],\n id: datum?.id as string,\n label:\n typeof datum?.id === 'string'\n ? datum?.id?.includes('comparison')\n ? 'Comparison Period'\n : 'Current Period'\n : '-',\n };\n }),\n direction: 'row',\n justify: false,\n translateX: 0,\n translateY: 70,\n itemsSpacing: 20,\n itemDirection: 'top-to-bottom',\n itemWidth: 110,\n itemHeight: 20,\n itemOpacity: 0.75,\n symbolSize: 12,\n symbolShape: 'square',\n symbolBorderColor: 'rgba(0, 0, 0, .5)',\n effects: [\n {\n on: 'hover',\n style: {\n itemBackground: 'rgba(0, 0, 0, .03)',\n itemOpacity: 1,\n },\n },\n ],\n },\n ]}\n tooltip={(node) => }\n />\n ) : (\n \n \n \n
    Not enough data available
    \n
    \n \n );\n}\n\nexport default NivoAreaChart;","import Grid from '@mui/material/Grid';\nimport helptexts, { HelpTextType } from 'Assets/JSON/helptexts';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport useChartDimensions from 'Hooks/useChartDimensions';\nimport useComparisonData from 'Hooks/useComparisonData';\nimport { AggregatedDataByDateType, AggregatedDataType } from 'Types/insightstypes';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { HumanReadableInsightsKPIsType, humanReadable } from 'Utils/humanReadableTitles';\nimport * as d3 from 'd3';\nimport { Suspense } from 'react';\nimport { BEIGE, BLUE, ORANGE, TEAL } from '../../Utils/colors';\nimport ChartHeader from './Components/ChartHeader';\nimport ChartSwitchWrapper from './Components/ChartSwitchWrapper';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport NivoBarDelta from './Components/NivoBarDelta';\nimport NivoLineChart from './Components/NivoLineChart';\nimport NivoMultipleLineChart from './Components/NivoMultipleLineChart/NivoMultipleLineChart';\n\ntype Props = {\n dataByDate: AggregatedDataByDateType[];\n comparisondata: AggregatedDataByDateType[];\n dataTotal: AggregatedDataType;\n comparisonTotal: AggregatedDataType;\n};\ninterface Datum {\n x?: Date | number | string;\n y?: Date | number | string;\n [key: string]: any;\n}\n\ninterface Serie {\n id: string | number;\n sortKey?: string | number;\n data: Datum[];\n [key: string]: any;\n}\n\nfunction dataGetter(\n accumulator: { [key: string]: Serie },\n currentValue: AggregatedDataByDateType,\n currentIndex: number,\n array: AggregatedDataByDateType[],\n isOriginal: boolean\n) {\n const keys = Object.keys(currentValue).sort((a, b) => {\n const indexA = metricSortOrder.indexOf(a.toLowerCase());\n const indexB = metricSortOrder.indexOf(b.toLowerCase());\n\n // If a and b are both in metricSortOrder, compare their positions\n if (indexA !== -1 && indexB !== -1) {\n return indexA - indexB;\n }\n\n // If only a is in metricSortOrder, it should come before b\n if (indexA !== -1) {\n return -1;\n }\n\n // If only b is in metricSortOrder, it should come before a\n if (indexB !== -1) {\n return 1;\n }\n\n // If neither a nor b are in metricSortOrder, no change in order\n return 0;\n });\n\n keys.forEach((key) => {\n const accumulatorKey = key as keyof AggregatedDataByDateType;\n /**\n * searchimpressionshare must NOT be displayed among aggregated data\n * because total volume only exists for Google so the metric will be\n * misleading for other channels\n */\n if (accumulatorKey === 'searchimpressionshare' || accumulatorKey === 'impressionshare') return accumulator;\n if (key !== 'reportdate') {\n const id = isOriginal ? key : `${key}_comparison`;\n if (!accumulator[accumulatorKey]) {\n accumulator[accumulatorKey] = { id, label: key, sortKey: key, data: [] };\n }\n accumulator[accumulatorKey].id = id;\n accumulator[accumulatorKey].label = key;\n accumulator[accumulatorKey].sortKey = key;\n accumulator[accumulatorKey].data = [\n ...accumulator[accumulatorKey].data,\n { x: dayjs(currentValue.reportdate).format('YYYY-MM-DD'), y: currentValue[accumulatorKey] },\n ];\n }\n });\n\n return accumulator;\n}\n\ntype DataPerCategoryType = {\n [key: string]: Serie;\n};\n\nconst chartSettings = {\n marginTop: 20,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 10,\n};\n\nconst metricSortOrder = [\n 'cost',\n 'conversionvalue',\n 'roas',\n 'returnonexpenditurevalue',\n 'conversions',\n 'conversionrate',\n 'convrate',\n 'cpc',\n 'impressions',\n 'searchvolume',\n 'searchimpressionshare',\n 'impressionshare',\n 'clicks',\n 'ctr',\n 'clickthroughrate',\n 'costperclick',\n 'cpa',\n 'frequency',\n 'landingpageviews',\n 'newusers',\n 'returningusers',\n 'uniqueusers',\n 'noofoperations',\n];\n\nfunction AggregatedDataByDateMultiView({ dataByDate, dataTotal, comparisondata, comparisonTotal }: Props) {\n const { portalUser, shallCompare, queryparams, platforms } = useInsightsQuery();\n const [ref, dms] = useChartDimensions(chartSettings);\n const [originalData, comparisonData, ...errors]: [DataPerCategoryType, DataPerCategoryType, ...string[]] =\n useComparisonData([dataByDate, comparisondata, dataGetter, queryparams]);\n\n return (\n \n {originalData &&\n Object.keys(originalData).map((key) => {\n const data = originalData[key as keyof AggregatedDataType];\n const comparisondata = comparisonData[key as keyof AggregatedDataType];\n\n const formatString =\n humanReadable.insightsKPIValueFormat[data?.sortKey as keyof HumanReadableInsightsKPIsType](portalUser);\n\n const metricValue = dataTotal[data?.sortKey as keyof AggregatedDataType];\n const metricComparisonValue = shallCompare\n ? comparisonTotal[data?.sortKey as keyof AggregatedDataType]\n : null;\n\n const formattedMetricValue = d3.format(formatString)(metricValue);\n const formattedMetricComparisonValue = shallCompare ? d3.format(formatString)(metricComparisonValue) : null;\n\n const helpTextKey =\n data?.label?.toUpperCase() === 'RETURNONEXPENDITUREVALUE'\n ? portalUser.return_on_expenditure_type.toUpperCase()\n : (data?.label?.toUpperCase() as keyof HelpTextType);\n\n const helpTextTitle = helptexts[helpTextKey as keyof HelpTextType]?.title;\n const helpText = helptexts[helpTextKey as keyof HelpTextType]?.content;\n const label =\n typeof data?.label === 'string'\n ? humanReadable.insightsKPIs[data?.label as keyof HumanReadableInsightsKPIsType](portalUser).toUpperCase()\n : data?.label;\n\n /// Filter out 'searchvolume' if 'meta' is the only channel selected\n if (\n data?.label === 'searchvolume' &&\n queryparams.channels.includes('meta') &&\n queryparams.channels.length === 1\n ) {\n return null;\n }\n\n return (\n Loading...} key={data?.id}>\n {data?.label === 'searchvolume' ? (\n \n
    \n \n \n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n ) : (\n \n
    \n \n \n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n )}\n
    \n );\n })}\n
    \n );\n}\n\nexport default AggregatedDataByDateMultiView;\n","import Box from '@mui/material/Box';\nimport React, { useEffect } from 'react';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Stack from '@mui/material/Stack';\nimport Grid from '@mui/material/Grid';\n\ntype Props = {};\n\nconst loadingMessages = ['Loading', 'Please wait', 'Calculating', 'Sorting', 'Filtering'];\nconst LoadingScreen = (props: Props) => {\n const [loadingMessage, setLoadingMessage] = React.useState(loadingMessages[0]);\n\n useEffect(() => {\n const interval = setInterval(() => {\n setLoadingMessage(loadingMessages[Math.floor(Math.random() * loadingMessages.length)]);\n }, 1200);\n return () => clearInterval(interval);\n });\n\n return (\n \n \n \n \n

    {loadingMessage.toUpperCase()}

    \n
    \n \n
    \n );\n};\n\nexport default LoadingScreen;\n","import LoadingScreen from './LoadingScreen';\n\nexport default LoadingScreen;\n","import React, { useEffect } from 'react';\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport { useQuery } from '@tanstack/react-query';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport fetchAggregatedData from 'Services/InsightsServices/fetchAggregatedData';\nimport fetchAggregatedDataByDate from 'Services/InsightsServices/fetchAggregatedDataByDate';\nimport { AggregatedDataByDateType } from 'Types/insightstypes';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport AggregatedDataByDateMultiView from './AggregatedDataByDateMultiView';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport LoadingScreen from './Components/LoadingScreen';\n\ntype QueryReturnType = {\n data: { data: AggregatedDataByDateType[] };\n isLoading: boolean;\n};\n\nfunction AggregatedDataByDateView() {\n const {\n queryparams,\n isReadyToRun,\n shallCompare,\n alternateStartDate,\n alternateEndDate,\n setPlatformsEnabled,\n setPlatforms,\n } = useInsightsQuery();\n\n const { data: aggregatedbydate, isLoading: isLoadingAggregatedByDate } = useQuery({\n queryKey: ['aggregateddatabydate', { ...queryparams }],\n queryFn: () => fetchAggregatedDataByDate(queryparams, ),\n enabled: isReadyToRun,\n });\n\n const { data: aggregatedbydateComparisonData, isLoading: isLoadingAggregatedByDateComparisonData } =\n useQuery({\n queryKey: [\n 'aggregateddatabydateComparisonData',\n { ...queryparams, startdate: alternateStartDate, enddate: alternateEndDate },\n ],\n queryFn: () =>\n fetchAggregatedDataByDate({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n\n const { data: aggregatedtotal, isLoading: isLoadingAggregatedTotal } = useQuery({\n queryKey: ['aggregateddata', { ...queryparams }],\n queryFn: () => fetchAggregatedData(queryparams),\n enabled: isReadyToRun,\n });\n \n \n const { data: aggregatedTotalComparison, isLoading: isLoadingAggregatedTotalComparison } = useQuery({\n queryKey: ['aggregateddataComparison', {\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }],\n queryFn: () =>\n fetchAggregatedData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n \n const tooLittleData =\n (!aggregatedbydate?.data?.data || aggregatedbydate?.data?.data?.length === 0) && !isLoadingAggregatedByDate;\n\n const tooLittleComparisonData =\n shallCompare &&\n (!aggregatedTotalComparison?.data?.data ||\n !aggregatedbydateComparisonData?.data?.data ||\n aggregatedbydateComparisonData?.data?.data?.length === 0) &&\n !isLoadingAggregatedByDateComparisonData;\n\n useEffect(() => {\n setPlatformsEnabled(true);\n\n setPlatforms(['meta', 'google', 'bing']);\n\n return () => {\n setPlatformsEnabled(true);\n };\n }, []);\n\n return isLoadingAggregatedByDate || isLoadingAggregatedTotal || isLoadingAggregatedByDateComparisonData ? (\n \n ) : (\n \n {tooLittleData || tooLittleComparisonData ? (\n <>\n {tooLittleData && (\n \n Info\n There's not enough data. Please select a different date range.\n \n )}\n {tooLittleComparisonData && (\n \n Info\n There's not enough data to compare with the selected date range.\n \n )}\n \n ) : (\n \n )}\n \n );\n}\n\nexport default AggregatedDataByDateView;\n","import Grid from '@mui/material/Grid';\nimport helptexts, { HelpTextType } from '../../Assets/JSON/helptexts';\nimport { useInsightsQuery } from '../../Context/InsightsQueryContext';\nimport useChartDimensions from '../../Hooks/useChartDimensions';\nimport useComparisonData from '../../Hooks/useComparisonData';\nimport {BingCampaignDataType, BingCampaignDataByDateType} from '../../Types/insightstypes';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { HumanReadableInsightsKPIsType, humanReadable } from '../../Utils/humanReadableTitles';\nimport * as d3 from 'd3';\nimport React, { Suspense } from 'react';\nimport { BEIGE, PINK, TEAL, YELLOW, BLACK, ORANGE, BLUE } from '../../Utils/colors';\nimport ChartSwitchWrapper from './Components/ChartSwitchWrapper';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport NivoLineChart from './Components/NivoLineChart';\nimport NivoMultipleLineChart from './Components/NivoMultipleLineChart/NivoMultipleLineChart';\nimport ChartHeader from './Components/ChartHeader';\nimport NivoBarDelta from './Components/NivoBarDelta';\n\ntype Props = {\n dataByDay: BingCampaignDataByDateType[];\n comparisondata: BingCampaignDataByDateType[];\n dataTotal: BingCampaignDataType;\n comparisonTotal: BingCampaignDataType;\n};\ninterface Datum {\n x?: Date | number | string;\n y?: Date | number | string;\n [key: string]: any;\n}\n\ninterface Serie {\n id: string | number;\n sortKey?: string | number;\n data: Datum[];\n [key: string]: any;\n}\n\nfunction dataGetter(\n accumulator: { [key: string]: Serie },\n currentValue: BingCampaignDataByDateType,\n currentIndex: number,\n array: BingCampaignDataByDateType[],\n isOriginal: boolean\n) {\n const keys = Object.keys(currentValue).sort((a, b) => {\n return (metricSortOrder.indexOf(a.toLowerCase()) || 1) - (metricSortOrder.indexOf(b.toLowerCase()) || -1);\n });\n keys.forEach((key) => {\n const accumulatorKey = key as keyof BingCampaignDataByDateType;\n if (accumulatorKey === 'searchimpressionshare' || accumulatorKey === 'impressionshare') return accumulator;\n if (key !== 'reportdate') {\n const id = isOriginal ? key : `${key}_comparison`;\n if (!accumulator[accumulatorKey]) {\n accumulator[accumulatorKey] = { id, label: key, sortKey: key, data: [] };\n }\n accumulator[accumulatorKey].id = id;\n accumulator[accumulatorKey].label = key;\n accumulator[accumulatorKey].sortKey = key;\n accumulator[accumulatorKey].data = [\n ...accumulator[accumulatorKey].data,\n { x: dayjs(currentValue.reportdate).format('YYYY-MM-DD'), y: currentValue[accumulatorKey] },\n ];\n }\n });\n\n return accumulator;\n}\n\ntype DataPerCategoryType = {\n [key: string]: Serie;\n};\n\nconst chartSettings = {\n marginTop: 20,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 10,\n};\n\nconst metricSortOrder = [\n 'cost',\n 'conversionvalue',\n 'roas',\n 'returnonexpenditurevalue',\n 'conversions',\n 'conversionrate',\n 'convrate',\n 'cpc',\n 'searchvolume',\n 'searchimpressionshare',\n 'impressions',\n 'impressionshare',\n 'clicks',\n 'ctr',\n 'clickthroughrate',\n 'cpa',\n 'frequency',\n 'landingpageviews',\n 'newusers',\n 'returningusers',\n 'uniqueusers',\n\n];\nfunction BingCampaignDataMultiView({ dataByDay, dataTotal, comparisondata, comparisonTotal }: Props) {\n const {portalUser, shallCompare, queryparams} = useInsightsQuery();\n const [ref, dms] = useChartDimensions(chartSettings);\n\n const [originalData, comparisonData, ...errors]: [DataPerCategoryType, DataPerCategoryType, ...string[]] =\n useComparisonData([dataByDay, comparisondata, dataGetter, queryparams]);\n\n\n return (\n \n {originalData &&\n Object.keys(originalData).map((key) => {\n const data = originalData[key as keyof BingCampaignDataType];\n const comparisondata = comparisonData[key as keyof BingCampaignDataType];\n\n const formatString =\n humanReadable.insightsKPIValueFormat[data?.sortKey as keyof HumanReadableInsightsKPIsType](portalUser);\n\n const metricValue = dataTotal?.[data?.sortKey as keyof BingCampaignDataType];\n const metricComparisonValue = shallCompare\n ? comparisonTotal[data?.sortKey as keyof BingCampaignDataType]\n : null;\n\n const formattedMetricValue = d3.format(formatString)(metricValue);\n const formattedMetricComparisonValue = shallCompare ? d3.format(formatString)(metricComparisonValue) : null;\n\n const helpTextKey =\n data?.label?.toUpperCase() === 'RETURNONEXPENDITUREVALUE'\n ? portalUser.return_on_expenditure_type.toUpperCase()\n : (data?.label?.toUpperCase() as keyof HelpTextType);\n\n const helpTextTitle = helptexts[helpTextKey as keyof HelpTextType]?.title;\n const helpText = helptexts[helpTextKey as keyof HelpTextType]?.content;\n const label =\n typeof data?.label === 'string'\n ? humanReadable.insightsKPIs[data?.label as keyof HumanReadableInsightsKPIsType](portalUser).toUpperCase()\n : data?.label;\n return (\n Loading...} key={data?.id}>\n {data?.label === 'searchvolume' ? (\n \n
    \n \n \n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n ) : (\n \n
    \n \n \n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n )}\n
    \n );\n })}\n
    \n );\n}\n\n\nexport default BingCampaignDataMultiView;\n","import { getCookie } from 'Utils/Helpers';\nimport http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchBingCampaignData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/bingcampaigndata', { ...params });\n\n return data;\n};\n\nexport default fetchBingCampaignData;\n","import { dayjs } from '../../Utils/DayJs/dayjsWrapper';\nimport { BingCampaignDataByDateType } from '../../Types/insightstypes';\nimport LoadingScreen from './Components/LoadingScreen';\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport { useInsightsQuery } from '../../Context/InsightsQueryContext';\nimport { useQuery } from '@tanstack/react-query';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport BingMultiView from './BingMultiView';\nimport React, { useEffect } from 'react';\nimport fetchAggregatedData from '../../Services/InsightsServices/fetchAggregatedData';\nimport fetchBingCampaignData from '../../Services/InsightsServices/fetchBingCampaignData';\n\ntype QueryReturnType = {\n data: { data: BingCampaignDataByDateType[] };\n isLoading: boolean;\n};\n\nfunction BingDataViews() {\n const {\n queryparams,\n isReadyToRun,\n shallCompare,\n alternateStartDate,\n alternateEndDate,\n setPlatformsEnabled,\n setPlatforms,\n } = useInsightsQuery();\n\n //Ordinary by day\n const { data: bingcampaigndata, isLoading: isLoadingBingCampaignData } = useQuery({\n queryKey: ['bingcampaigndata', { ...queryparams }],\n queryFn: () => fetchBingCampaignData(queryparams),\n enabled: isReadyToRun,\n });\n\n //Ordinary Comparison by day\n const { data: bingcampaignComparisonData, isLoading: isLoadingBingCampaignComparisonData } =\n useQuery({\n queryKey: [\n 'bingcampaignComparisonData',\n { ...queryparams, startdate: alternateStartDate, enddate: alternateEndDate },\n ],\n queryFn: () =>\n fetchBingCampaignData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n //Aggregated for a specific period\n const { data: bingcampaigndataTotal, isLoading: isLoadingBingCampaignDataTotal } = useQuery({\n queryKey: ['aggregateddataForBing', { ...queryparams }],\n queryFn: () => fetchAggregatedData({ ...queryparams, channels: ['bing'] }),\n enabled: isReadyToRun,\n });\n\n //Aggregated comparison for a specific period\n const { data: bingTotalComparison, isLoading: isLoadingBingTotalComparison } = useQuery({\n queryKey: ['aggregateddataComparisonforBing', { \n ...queryparams, \n channels: ['bing'], \n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'), }],\n queryFn: () =>\n fetchAggregatedData({\n ...queryparams,\n channels: ['bing'],\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n useEffect(() => {\n setPlatformsEnabled(false);\n\n setPlatforms(['bing']);\n\n return () => {\n setPlatformsEnabled(true);\n };\n }, []);\n\n const tooLittleData =\n (!bingcampaigndata?.data?.data || bingcampaigndata?.data?.data?.length === 0) && !isLoadingBingCampaignData;\n\n const tooLittleComparisonData =\n shallCompare &&\n (!bingTotalComparison?.data?.data ||\n !bingcampaignComparisonData?.data?.data ||\n bingcampaignComparisonData?.data?.data?.length === 0) &&\n !isLoadingBingCampaignComparisonData;\n\n return isLoadingBingCampaignData || isLoadingBingCampaignDataTotal || isLoadingBingCampaignComparisonData ? (\n \n ) : (\n \n {tooLittleData || tooLittleComparisonData ? (\n <>\n {tooLittleData && (\n \n Info\n There's not enough data. Please select a different date range.\n \n )}\n {tooLittleComparisonData && (\n \n Info\n There's not enough data to compare with the selected date range.\n \n )}\n \n ) : (\n \n )}\n \n );\n}\n\nexport default BingDataViews;\n","import http from 'Utils/Http/axioswrapper';\n\nconst fetchPortalUsers = async () => {\n const { data } = await http.get('/api/insights/portalusers');\n return data;\n};\n\nexport default fetchPortalUsers;\n","import PortalUserSelector from './PortalUserSelector';\n\nexport default PortalUserSelector;\n","import React, { useMemo } from 'react';\n\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\nimport TextField from '@mui/material/TextField';\nimport { useQuery } from '@tanstack/react-query';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport fetchPortalUsers from 'Services/InsightsServices/fetchPortalUsers';\nimport { PortalUser } from 'Types/insightstypes';\n\ntype Props = {};\n\nconst PortalUserSelector = (props: Props) => {\n const { setPortalUser } = useInsightsQuery();\n const { data, isLoading } = useQuery({\n queryKey: ['organizations'],\n queryFn: fetchPortalUsers,\n });\n\n const portalusers = useMemo(() => {\n if (!data || data.length === 0) return [];\n return (\n data?.map((org) => ({\n id: org.id,\n label: org.name,\n currency: org.currency,\n })) || []\n );\n }, [data?.length]);\n\n return (\n \n (\n
  • \n {option.label}\n
  • \n )}\n id=\"portaluser-filter-selector\"\n sx={{ width: '100%' }}\n renderInput={(params) => {\n return (\n : 'Organization filter'}\n placeholder=\"Organization filter\"\n />\n );\n }}\n onChange={(e, value) => {\n const organization = data.find((org) => org.id === value?.id);\n setPortalUser(organization);\n }}\n />\n
    \n );\n};\n\nexport default PortalUserSelector;\n","import { getCookie } from 'Utils/Helpers';\nimport http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchGoogleGampaignData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/googlecampaigndata', { ...params });\n\n return data;\n};\n\nexport default fetchGoogleGampaignData;\n","import Grid from '@mui/material/Grid';\nimport helptexts, { HelpTextType } from '../../Assets/JSON/helptexts';\nimport { useInsightsQuery } from '../../Context/InsightsQueryContext';\nimport useChartDimensions from '../../Hooks/useChartDimensions';\nimport useComparisonData from '../../Hooks/useComparisonData';\nimport { GoogleCampaignDataType, GoogleCampaignDataByDateType } from '../../Types/insightstypes';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { HumanReadableInsightsKPIsType, humanReadable } from '../../Utils/humanReadableTitles';\nimport * as d3 from 'd3';\nimport{ Suspense } from 'react';\nimport { BEIGE, ORANGE, BLUE, TEAL } from '../../Utils/colors';\nimport ChartSwitchWrapper from './Components/ChartSwitchWrapper';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport NivoLineChart from './Components/NivoLineChart';\nimport NivoMultipleLineChart from './Components/NivoMultipleLineChart/NivoMultipleLineChart';\nimport ChartHeader from './Components/ChartHeader';\nimport NivoBarDelta from './Components/NivoBarDelta';\n\ntype Props = {\n dataByDay: GoogleCampaignDataByDateType[];\n comparisondata: GoogleCampaignDataByDateType[];\n dataTotal: GoogleCampaignDataType;\n comparisonTotal: GoogleCampaignDataType;\n};\ninterface Datum {\n x?: Date | number | string;\n y?: Date | number | string;\n [key: string]: any;\n}\n\ninterface Serie {\n id: string | number;\n sortKey?: string | number;\n data: Datum[];\n [key: string]: any;\n}\n\nfunction dataGetter(\n accumulator: { [key: string]: Serie },\n currentValue: GoogleCampaignDataByDateType,\n currentIndex: number,\n array: GoogleCampaignDataByDateType[],\n isOriginal: boolean\n) {\n\n const keys = Object.keys(currentValue).sort((a, b) => {\n const indexA = metricSortOrder.indexOf(a.toLowerCase());\n const indexB = metricSortOrder.indexOf(b.toLowerCase());\n\n // If a and b are both in metricSortOrder, compare their positions\n if (indexA !== -1 && indexB !== -1) {\n return indexA - indexB;\n }\n\n // If only a is in metricSortOrder, it should come before b\n if (indexA !== -1) {\n return -1;\n }\n\n // If only b is in metricSortOrder, it should come before a\n if (indexB !== -1) {\n return 1;\n }\n\n // If neither a nor b are in metricSortOrder, no change in order\n return 0;\n });\n\n\n keys.forEach((key) => {\n const accumulatorKey = key as keyof GoogleCampaignDataByDateType;\n if (accumulatorKey === 'searchimpressionshare' || accumulatorKey === 'impressionshare') return accumulator;\n if (key !== 'reportdate') {\n const id = isOriginal ? key : `${key}_comparison`;\n if (!accumulator[accumulatorKey]) {\n accumulator[accumulatorKey] = { id, label: key, sortKey: key, data: [] };\n }\n accumulator[accumulatorKey].id = id;\n accumulator[accumulatorKey].label = key;\n accumulator[accumulatorKey].sortKey = key;\n accumulator[accumulatorKey].data = [\n ...accumulator[accumulatorKey].data,\n { x: dayjs(currentValue.reportdate).format('YYYY-MM-DD'), y: currentValue[accumulatorKey] },\n ];\n }\n });\n\n return accumulator;\n}\n\ntype DataPerCategoryType = {\n [key: string]: Serie;\n};\n\nconst chartSettings = {\n marginTop: 20,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 10,\n};\n\nconst metricSortOrder = [\n 'noofoperations',\n 'cost',\n 'conversionvalue',\n 'cpc',\n 'searchvolume',\n 'roas',\n 'returnonexpenditurevalue',\n 'conversions',\n 'conversionrate',\n 'convrate',\n 'searchimpressionshare',\n 'impressions',\n 'impressionshare',\n 'clicks',\n 'ctr',\n 'clickthroughrate',\n 'cpa'\n ];\n\nfunction GoogleCampaignDataMultiView({ dataByDay, dataTotal, comparisondata, comparisonTotal }: Props) {\n const {portalUser, shallCompare, queryparams} = useInsightsQuery();\n const [ref] = useChartDimensions(chartSettings);\n\n const [originalData, comparisonData, ...errors]: [DataPerCategoryType, DataPerCategoryType, ...string[]] =\n useComparisonData([dataByDay, comparisondata, dataGetter, queryparams]);\n\n return (\n \n {originalData &&\n Object.keys(originalData).map((key) => {\n const data = originalData[key as keyof GoogleCampaignDataType];\n const comparisondata = comparisonData[key as keyof GoogleCampaignDataType];\n\n const formatString =\n humanReadable.insightsKPIValueFormat[data?.sortKey as keyof HumanReadableInsightsKPIsType](portalUser);\n\n const metricValue = dataTotal?.[data?.sortKey as keyof GoogleCampaignDataType];\n const metricComparisonValue = shallCompare\n ? comparisonTotal[data?.sortKey as keyof GoogleCampaignDataType]\n : null;\n\n const formattedMetricValue = d3.format(formatString)(metricValue);\n const formattedMetricComparisonValue = shallCompare ? d3.format(formatString)(metricComparisonValue) : null;\n\n const helpTextKey =\n data?.label?.toUpperCase() === 'RETURNONEXPENDITUREVALUE'\n ? portalUser.return_on_expenditure_type.toUpperCase()\n : (data?.label?.toUpperCase() as keyof HelpTextType);\n\n const helpTextTitle = helptexts[helpTextKey as keyof HelpTextType]?.title;\n const helpText = helptexts[helpTextKey as keyof HelpTextType]?.content;\n const label =\n typeof data?.label === 'string'\n ? humanReadable.insightsKPIs[data?.label as keyof HumanReadableInsightsKPIsType](portalUser).toUpperCase()\n : data?.label;\n return (\n Loading...} key={data?.id}>\n {data?.label === 'searchvolume' ? (\n \n
    \n \n {metricValue && (\n \n )}\n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n ) : (\n \n
    \n \n \n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n )}\n
    \n );\n })}\n
    \n );\n}\n\nexport default GoogleCampaignDataMultiView;\n","import fetchGoogleGampaignData from 'Services/InsightsServices/fetchGoogleGampaignData';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { GoogleCampaignDataByDateType } from '../../Types/insightstypes';\nimport LoadingScreen from './Components/LoadingScreen';\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport { useInsightsQuery } from '../../Context/InsightsQueryContext';\nimport { useQuery } from '@tanstack/react-query';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport GoogleCampaignDataMultiView from './GoogleCampaignDataMultiView';\nimport React, { useEffect } from 'react';\nimport fetchAggregatedData from '../../Services/InsightsServices/fetchAggregatedData';\n\ntype QueryReturnType = {\n data: { data: GoogleCampaignDataByDateType[] };\n isLoading: boolean;\n};\n\nfunction GoogleCampaignDataViews() {\n const {\n queryparams,\n isReadyToRun,\n shallCompare,\n alternateStartDate,\n alternateEndDate,\n setPlatformsEnabled,\n setPlatforms,\n } = useInsightsQuery();\n\n //Ordinary by day\n const { data: googlecampaigndata, isLoading: isLoadingGoogleCampaignData } = useQuery({\n queryKey: ['googlecampaigndata', { ...queryparams }],\n queryFn: () => fetchGoogleGampaignData(queryparams),\n enabled: isReadyToRun,\n });\n\n //Ordinary Comparison by day\n const { data: googlecampaignComparisonData, isLoading: isLoadingGoogleCampaignComparisonData } =\n useQuery({\n queryKey: [\n 'googlecampaigndataComparisonData',\n { ...queryparams, startdate: alternateStartDate, enddate: alternateEndDate },\n ],\n queryFn: () =>\n fetchGoogleGampaignData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n useEffect(() => {\n setPlatformsEnabled(false);\n\n setPlatforms(['google']);\n\n return () => {\n setPlatformsEnabled(true);\n };\n }, []);\n\n //Aggregated for a specific period\n const { data: googlecampaigndataTotal, isLoading: isLoadingGoogleCampaignDataTotal } = useQuery({\n queryKey: ['aggregateddataForGoogle', { ...queryparams }],\n queryFn: () => fetchAggregatedData({ ...queryparams, channels: ['google'] }),\n enabled: isReadyToRun,\n });\n\n //Aggregated comparison for a specific period\n const { data: googleTotalComparison, isLoading: isLoadingGoogleTotalComparison } = useQuery({\n queryKey: ['aggregateddataComparisonForGoogle', { \n ...queryparams, \n channels: ['google'], \n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD') }],\n queryFn: () =>\n fetchAggregatedData({\n ...queryparams,\n channels: ['google'],\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n const tooLittleData =\n (!googlecampaigndata?.data?.data || googlecampaigndata?.data?.data?.length === 0) && !isLoadingGoogleCampaignData;\n\n const tooLittleComparisonData =\n shallCompare &&\n (!googleTotalComparison?.data?.data ||\n !googlecampaignComparisonData?.data?.data ||\n googlecampaignComparisonData?.data?.data?.length === 0) &&\n !isLoadingGoogleCampaignComparisonData;\n\n return isLoadingGoogleCampaignData || isLoadingGoogleCampaignDataTotal || isLoadingGoogleCampaignComparisonData ? (\n \n ) : (\n \n {tooLittleData || tooLittleComparisonData ? (\n <>\n {tooLittleData && (\n \n Info\n There's not enough data. Please select a different date range.\n \n )}\n {tooLittleComparisonData && (\n \n Info\n There's not enough data to compare with the selected date range.\n \n )}\n \n ) : (\n \n )}\n \n );\n}\n\nexport default GoogleCampaignDataViews;\n","import Grid from '@mui/material/Grid';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport * as d3 from 'd3';\nimport { Suspense } from 'react';\nimport helptexts, { HelpTextType } from '../../Assets/JSON/helptexts';\nimport { useInsightsQuery } from '../../Context/InsightsQueryContext';\nimport useChartDimensions from '../../Hooks/useChartDimensions';\nimport useComparisonData from '../../Hooks/useComparisonData';\nimport { FacebookCampaignDataByDateType, FacebookCampaignDataType } from '../../Types/insightstypes';\nimport { BEIGE, BLUE, ORANGE, TEAL } from '../../Utils/colors';\nimport { HumanReadableInsightsKPIsType, humanReadable } from '../../Utils/humanReadableTitles';\nimport ChartHeader from './Components/ChartHeader';\nimport ChartSwitchWrapper from './Components/ChartSwitchWrapper';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport NivoBarDelta from './Components/NivoBarDelta';\nimport NivoLineChart from './Components/NivoLineChart';\nimport NivoMultipleLineChart from './Components/NivoMultipleLineChart/NivoMultipleLineChart';\n\ntype Props = {\n dataByDay: FacebookCampaignDataByDateType[];\n comparisondata: FacebookCampaignDataByDateType[];\n dataTotal: FacebookCampaignDataType;\n comparisonTotal: FacebookCampaignDataType;\n};\n\ninterface Datum {\n x?: Date | number | string;\n y?: Date | number | string;\n\n [key: string]: any;\n}\n\ninterface Serie {\n id: string | number;\n sortKey?: string | number;\n data: Datum[];\n\n [key: string]: any;\n}\n\nfunction dataGetter(\n accumulator: { [key: string]: Serie },\n currentValue: FacebookCampaignDataByDateType,\n currentIndex: number,\n array: FacebookCampaignDataByDateType[],\n isOriginal: boolean\n) {\n const keys = Object.keys(currentValue).sort((a, b) => {\n return (metricSortOrder.indexOf(a.toLowerCase()) || 1) - (metricSortOrder.indexOf(b.toLowerCase()) || -1);\n });\n keys.forEach((key) => {\n const accumulatorKey = key as keyof FacebookCampaignDataByDateType;\n if (accumulatorKey === 'searchimpressionshare'\n || accumulatorKey === 'impressionshare'\n || accumulatorKey === 'searchvolume'\n\n\n ) return accumulator;\n\n if (key !== 'reportdate') {\n const id = isOriginal ? key : `${key}_comparison`;\n if (!accumulator[accumulatorKey]) {\n accumulator[accumulatorKey] = {id, label: key, sortKey: key, data: []};\n }\n accumulator[accumulatorKey].id = id;\n accumulator[accumulatorKey].label = key;\n accumulator[accumulatorKey].sortKey = key;\n accumulator[accumulatorKey].data = [\n ...accumulator[accumulatorKey].data,\n {x: dayjs(currentValue.reportdate).format('YYYY-MM-DD'), y: currentValue[accumulatorKey]},\n ];\n }\n });\n\n return accumulator;\n}\n\ntype DataPerCategoryType = {\n [key: string]: Serie;\n};\n\nconst chartSettings = {\n marginTop: 20,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 10,\n};\n\nconst metricSortOrder = [\n 'cost',\n 'conversionvalue',\n 'roas',\n 'returnonexpenditurevalue',\n 'conversions',\n 'conversionrate',\n 'convrate',\n 'cpc',\n 'searchvolume',\n 'searchimpressionshare',\n 'impressions',\n 'impressionshare',\n 'clicks',\n 'ctr',\n 'clickthroughrate',\n 'cpa',\n 'reach',\n 'frequency',\n 'pageview',\n 'landingpageviews',\n 'newusers',\n 'returningusers',\n 'uniqueusers',\n];\n\nfunction FacebookCampaignDataMultiView({dataByDay, dataTotal, comparisondata, comparisonTotal}: Props) {\n const {portalUser, shallCompare, queryparams} = useInsightsQuery();\n const [ref, dms] = useChartDimensions(chartSettings);\n\n const [originalData, comparisonData, ...errors]: [DataPerCategoryType, DataPerCategoryType, ...string[]] =\n useComparisonData([dataByDay, comparisondata, dataGetter, queryparams]);\n\n\n return (\n \n {originalData &&\n Object.keys(originalData).map((key) => {\n const data = originalData[key as keyof FacebookCampaignDataType];\n const comparisondata = comparisonData[key as keyof FacebookCampaignDataType];\n\n const formatString =\n humanReadable.insightsKPIValueFormat[data?.sortKey as keyof HumanReadableInsightsKPIsType](portalUser);\n\n const metricValue = dataTotal?.[data?.sortKey as keyof FacebookCampaignDataType];\n const metricComparisonValue = shallCompare\n ? comparisonTotal[data?.sortKey as keyof FacebookCampaignDataType]\n : null;\n\n const formattedMetricValue = d3.format(formatString)(metricValue);\n const formattedMetricComparisonValue = shallCompare ? d3.format(formatString)(metricComparisonValue) : null;\n\n const helpTextKey =\n data?.label?.toUpperCase() === 'RETURNONEXPENDITUREVALUE'\n ? portalUser.return_on_expenditure_type.toUpperCase()\n : (data?.label?.toUpperCase() as keyof HelpTextType);\n\n const helpTextTitle = helptexts[helpTextKey as keyof HelpTextType]?.title;\n const helpText = helptexts[helpTextKey as keyof HelpTextType]?.content;\n const label =\n typeof data?.label === 'string'\n ? humanReadable.insightsKPIs[data?.label as keyof HumanReadableInsightsKPIsType](portalUser).toUpperCase()\n : data?.label;\n\n return (\n Loading...} key={data?.id}>\n \n
    \n \n \n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n
    \n );\n })}\n
    \n );\n}\n\n\nexport default FacebookCampaignDataMultiView;","import { getCookie } from 'Utils/Helpers';\nimport http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchMetaAggregatedData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/facebookaggregateddata', { ...params });\n\n return data;\n};\n\nexport default fetchMetaAggregatedData;\n","import { getCookie } from 'Utils/Helpers';\nimport http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchMetaCampaignData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/facebookcampaigndata', { ...params });\n\n return data;\n};\n\nexport default fetchMetaCampaignData;\n","import { dayjs } from '../../Utils/DayJs/dayjsWrapper';\nimport { FacebookCampaignDataByDateType } from '../../Types/insightstypes';\nimport LoadingScreen from './Components/LoadingScreen';\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport { useInsightsQuery } from '../../Context/InsightsQueryContext';\nimport { useQuery } from '@tanstack/react-query';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport MetaDataMultiView from './MetaDataMultiView';\nimport React, { useEffect, useMemo } from 'react';\nimport fetchMetaAggregatedData from '../../Services/InsightsServices/fetchMetaAggregatedData';\nimport fetchMetaCampaignData from '../../Services/InsightsServices/fetchMetaCampaignData';\n\ntype QueryReturnType = {\n data: { data: FacebookCampaignDataByDateType[] };\n isLoading: boolean;\n};\n\nfunction MetaDataViews() {\n const {\n queryparams,\n isReadyToRun,\n shallCompare,\n alternateStartDate,\n alternateEndDate,\n setPlatformsEnabled,\n setPlatforms,\n } = useInsightsQuery();\n\n //Ordinary by day\n const { data: facebookcampaigndata, isLoading: isLoadingFacebookCampaignData } = useQuery({\n queryKey: ['facebookcampaigndata', { ...queryparams, channels: ['meta'] }],\n queryFn: () => fetchMetaCampaignData(queryparams),\n enabled: isReadyToRun,\n });\n\n //Ordinary Comparison by day\n const { data: facebookcampaignComparisonData, isLoading: isLoadingFacebookCampaignComparisonData } =\n useQuery({\n queryKey: [\n 'facebookcampaignComparisonData',\n { ...queryparams, startdate: alternateStartDate, enddate: alternateEndDate, channels: ['meta'] },\n ],\n queryFn: () =>\n fetchMetaCampaignData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n //Aggregated for a specific period\n const { data: facebookcampaigndataTotal, isLoading: isLoadingFacebookCampaignDataTotal } = useQuery({\n queryKey: ['aggregatedFacebookData', { ...queryparams }],\n queryFn: () => fetchMetaAggregatedData({ ...queryparams, channels: ['meta'] }),\n enabled: isReadyToRun,\n });\n\n //Aggregated comparison for a specific period\n const { data: facebookTotalComparison, isLoading: isLoadingFacebookTotalComparison } = useQuery({\n queryKey: ['aggregateddataFacebookComparison', { \n ...queryparams, \n channels: ['meta'],\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'), }],\n queryFn: () =>\n fetchMetaAggregatedData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n useEffect(() => {\n setPlatformsEnabled(false);\n\n setPlatforms(['meta']);\n\n return () => {\n setPlatformsEnabled(true);\n };\n }, []);\n\n const tooLittleData =\n (!facebookcampaigndata?.data?.data || facebookcampaigndata?.data?.data?.length === 0) &&\n !isLoadingFacebookCampaignData;\n\n const tooLittleComparisonData =\n shallCompare &&\n (!facebookTotalComparison?.data?.data ||\n !facebookcampaignComparisonData?.data?.data ||\n facebookcampaignComparisonData?.data?.data?.length === 0) &&\n !isLoadingFacebookCampaignComparisonData;\n\n return isLoadingFacebookCampaignData ||\n isLoadingFacebookCampaignDataTotal ||\n isLoadingFacebookCampaignComparisonData ? (\n \n ) : (\n \n {tooLittleData || tooLittleComparisonData ? (\n <>\n {tooLittleData && (\n \n Info\n There's not enough data. Please select a different date range.\n \n )}\n {tooLittleComparisonData && (\n \n Info\n There's not enough data to compare with the selected date range.\n \n )}\n \n ) : (\n \n )}\n \n );\n}\n\nexport default MetaDataViews;\n","import { InsightsRequest } from 'Types/insightstypes';\nimport http from 'Utils/Http';\n\nconst fetchAggregatedBudgetData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/aggregatedbudgetdata', { ...params });\n\n return data;\n};\n\nexport default fetchAggregatedBudgetData;\n","import { getCookie } from 'Utils/Helpers';\nimport http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchBudgetDistributionData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/budgetdistributiondata', { ...params });\n\n return data;\n};\n\nexport default fetchBudgetDistributionData;\n","import Grid from '@mui/material/Grid';\nimport helptexts, { HelpTextType } from 'Assets/JSON/helptexts';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport useChartDimensions from 'Hooks/useChartDimensions';\nimport useComparisonData from 'Hooks/useComparisonData';\nimport { BudgetDataByDateType, BudgetDataType } from 'Types/insightstypes';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { HumanReadableInsightsKPIsType, humanReadable } from 'Utils/humanReadableTitles';\nimport * as d3 from 'd3';\nimport { Suspense } from 'react';\nimport { BEIGE, BLUE, ORANGE, TEAL, LIGHTBEIGE } from '../../Utils/colors';\nimport ChartHeader from './Components/ChartHeader';\nimport ChartSwitchWrapper from './Components/ChartSwitchWrapper';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport NivoBarDelta from './Components/NivoBarDelta';\nimport NivoLineChart from './Components/NivoLineChart';\nimport NivoMultipleLineChart from './Components/NivoMultipleLineChart/NivoMultipleLineChart';\nimport { useState } from 'react';\nimport { Alert, Typography } from '@mui/material';\n\n\ntype Props = {\n dataByDate: BudgetDataByDateType[];\n comparisondata: BudgetDataByDateType[];\n dataTotal: BudgetDataType;\n comparisonTotal: BudgetDataType;\n};\ninterface Datum {\n x?: Date | number | string;\n y?: Date | number | string;\n [key: string]: any;\n}\n\ninterface Serie {\n id: string | number;\n sortKey?: string | number;\n data: Datum[];\n [key: string]: any;\n}\n\n\nfunction dataGetter(\n accumulator: { [key: string]: Serie },\n currentValue: BudgetDataByDateType,\n currentIndex: number,\n array: BudgetDataByDateType[],\n isOriginal: boolean\n) {\n Object.keys(currentValue).forEach((key) => {\n if (key !== 'budgetdate') {\n const accumulatorKey = key as keyof BudgetDataByDateType;\n const id = isOriginal ? key : `${key}_comparison`;\n if (!accumulator[accumulatorKey]) {\n accumulator[accumulatorKey] = { id, label: key, sortKey: key, data: [] };\n }\n accumulator[accumulatorKey].data.push({\n x: dayjs(currentValue.budgetdate).format('YYYY-MM-DD'),\n y: currentValue[accumulatorKey],\n });\n }\n });\n\n return accumulator;\n}\n\n\ntype DataPerCategoryType = {\n [key: string]: Serie;\n};\n\nconst chartSettings = {\n marginTop: 20,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 10,\n};\n\n\nfunction BudgetDataMultiView({ dataByDate, dataTotal, comparisondata, comparisonTotal }: Props) {\n const { portalUser, shallCompare, queryparams} = useInsightsQuery();\n const [ref] = useChartDimensions(chartSettings);\n const [originalData, comparisonData]: [DataPerCategoryType, DataPerCategoryType, ...string[]] =\n useComparisonData([dataByDate, comparisondata, dataGetter, queryparams]);\n const [showAlert, setShowAlert] = useState(true);\n\n\nreturn (\n \n {originalData &&\n Object.keys(originalData).map((key) => {\n const data = originalData[key as keyof BudgetDataType];\n const comparisondata = comparisonData[key as keyof BudgetDataType];\n\n const formatString =\n humanReadable.insightsKPIValueFormat[data?.sortKey as keyof HumanReadableInsightsKPIsType](portalUser);\n\n const metricValue = dataTotal?.[data?.sortKey as keyof BudgetDataType] ?? 0;\n const metricComparisonValue = shallCompare\n ? comparisonTotal[data?.sortKey as keyof BudgetDataType]\n : null;\n\n const formattedMetricValue = d3.format(formatString)(metricValue);\n const formattedMetricComparisonValue = shallCompare ? d3.format(formatString)(metricComparisonValue) : null;\n\n const helpTextKey = data?.label?.toUpperCase() as keyof HelpTextType;\n\n const helpTextTitle = helptexts[helpTextKey as keyof HelpTextType]?.title;\n const helpText = helptexts[helpTextKey as keyof HelpTextType]?.content;\n const label =\n typeof data?.label === 'string'\n ? humanReadable.insightsKPIs[data?.label as keyof HumanReadableInsightsKPIsType](portalUser).toUpperCase()\n : data?.label;\n\n return (\n Loading...} key={data?.id}>\n \n
    \n \n \n \n \n Budget amounts are campaign expenditure estimates made by Amanda.\n \n \n {shallCompare && comparisondata ? (\n \n {(showDelta) =>\n !showDelta ? (\n \n ) : (\n \n )\n }\n \n ) : (\n
    \n Loading...
    }>\n \n \n
    \n )}\n \n \n
    \n
    \n );\n})}\n\n {showAlert && (\n \n \n Choosing different time periods for comparison won't have an effect since budget estimates \n reflect only today's calculations for the current month.\n \n \n \n )}\n
    \n);\n}\n\n\nexport default BudgetDataMultiView;\n\n","import { useEffect } from 'react';\nimport { Alert } from '@mui/material';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport { useQuery } from '@tanstack/react-query';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport fetchAggregatedBudgetData from 'Services/InsightsServices/fetchAggregatedBudgetData';\nimport fetchBudgetDistributionData from 'Services/InsightsServices/fetchBudgetDistributionData';\nimport { BudgetDataByDateType } from 'Types/insightstypes';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport BudgetDataMultiView from './BudgetDataMultiView';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport LoadingScreen from './Components/LoadingScreen';\n\ntype QueryReturnType = {\n data: { data: BudgetDataByDateType[] };\n isLoading: boolean;\n};\n\nfunction BudgetDataViews() {\n const {\n queryparams,\n isReadyToRun,\n shallCompare,\n alternateStartDate,\n alternateEndDate,\n setPlatformsEnabled,\n setPlatforms,\n } = useInsightsQuery();\n\n const { data: aggregatedbydate, isLoading: isLoadingAggregatedByDate } = useQuery({\n queryKey: ['budgetdistributiondata', { ...queryparams }],\n queryFn: () => fetchBudgetDistributionData(queryparams ),\n enabled: isReadyToRun,\n });\n\n const { data: aggregatedbydateComparisonData, isLoading: isLoadingAggregatedByDateComparisonData } =\n useQuery({\n queryKey: [\n 'budgetdistributiondataComparisonData',\n { ...queryparams, startdate: alternateStartDate, enddate: alternateEndDate },\n ],\n queryFn: () =>\n fetchBudgetDistributionData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n\n const { data: aggregatedtotal, isLoading: isLoadingAggregatedTotal } = useQuery({\n queryKey: ['aggregatedBudgetData', { ...queryparams }],\n queryFn: () => fetchAggregatedBudgetData(queryparams),\n enabled: isReadyToRun,\n });\n \n \n const { data: aggregatedTotalComparison, isLoading: isLoadingAggregatedTotalComparison } = useQuery({\n queryKey: ['aggregateddataBudgetComparison', {\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }],\n queryFn: () =>\n fetchAggregatedBudgetData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n \n const tooLittleData =\n (!aggregatedbydate?.data?.data || aggregatedbydate?.data?.data?.length === 0) && !isLoadingAggregatedByDate;\n\n const tooLittleComparisonData =\n shallCompare &&\n (!aggregatedTotalComparison?.data?.data ||\n !aggregatedbydateComparisonData?.data?.data ||\n aggregatedbydateComparisonData?.data?.data?.length === 0) &&\n !isLoadingAggregatedByDateComparisonData;\n\n useEffect(() => {\n setPlatformsEnabled(true);\n\n setPlatforms(['meta', 'google', 'bing']);\n\n return () => {\n setPlatformsEnabled(true);\n };\n }, []);\n\n return isLoadingAggregatedByDate || isLoadingAggregatedTotal || isLoadingAggregatedByDateComparisonData ? (\n \n ) : (\n \n {tooLittleData || tooLittleComparisonData ? (\n <>\n {tooLittleData && (\n \n Info\n There's not enough data. Please select a different date range.\n \n )}\n {tooLittleComparisonData && (\n \n Info\n There's not enough data to compare with the selected date range.\n \n )}\n \n ) : (\n \n )}\n \n );\n}\n\nexport default BudgetDataViews;\n","import { InsightsRequest } from 'Types/insightstypes';\nimport http from 'Utils/Http';\n\nconst fetchInsightsFilters = async (params: InsightsRequest) => {\n const { data } = await http.get(`/api/insights/filters/${params.portaluser}`);\n\n return data;\n};\n\nexport default fetchInsightsFilters;\n","import CountryFilterSelector from './CountryFilterSelector';\n\nexport default CountryFilterSelector;\n","import Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { Col, Row } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport fetchInsightsFilters from 'Services/InsightsServices/fetchInsightsFilters';\nimport { Filters } from 'Types/insightstypes';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\n\nconst CountryFilterSelector = () => {\n const [countryOptions, setCountryOptions] = useState([]);\n const { queryparams, setCountries, portalUser, countries } = useInsightsQuery();\n const { data, isLoading } = useQuery({\n queryKey: ['insightsfilters', { ...queryparams }],\n queryFn: () => fetchInsightsFilters(queryparams),\n enabled: !!portalUser && countries.length === 0,\n refetchInterval: false,\n });\n\n useEffect(() => {\n if (data?.data?.data?.countries) {\n setCountries(data?.data?.data?.countries.filter((country) => country !== null) as string[]);\n setCountryOptions(data?.data?.data?.countries.filter((country) => country !== null) as string[]);\n }\n }, [data?.data?.data?.countries?.toString()]);\n\n return (\n \n (\n : 'Country filter'}\n placeholder=\"Country filter\"\n />\n )}\n onChange={(e, value) => {\n console.log(value);\n setCountries(value as string[]);\n }}\n onInputChange={(e, value) => {\n setCountryOptions(\n data?.data?.data?.countries.filter((country) => country?.toLowerCase().includes(value?.toLowerCase()))\n );\n\n if (value === '') {\n setCountryOptions(data?.data?.data?.countries.filter((country) => country !== null) as string[]);\n }\n }}\n />\n \n );\n};\n\nexport default CountryFilterSelector;\n","import React from 'react';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport { useInsightsQuery } from '../../../../Context/InsightsQueryContext';\n\nconst IncludeBrandSwitch = () => {\n const { includeBrandCampaigns, setIncludeBrandCampaigns } = useInsightsQuery();\n const handleIncludeBrand = (event: React.ChangeEvent) => {\n const checked = event.target.checked;\n setIncludeBrandCampaigns(checked);\n includeBrandCampaigns !== checked && setIncludeBrandCampaigns(checked);\n };\n return (\n }\n label=\"Include brand\"\n />\n );\n};\n\nexport default IncludeBrandSwitch;\n","import IncludeBrandSwitch from './IncludeBrandSwitch';\n\nexport default IncludeBrandSwitch;\n","import Checkbox from '@mui/material/Checkbox';\nimport FormControl from '@mui/material/FormControl';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormGroup from '@mui/material/FormGroup';\n\nimport Grid from '@mui/material/Grid';\nimport Skeleton from '@mui/material/Skeleton';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport fetchInsightsFilters from 'Services/InsightsServices/fetchInsightsFilters';\nimport { Filters } from 'Types/insightstypes';\nimport { capitalizeSentence } from 'Utils/Helpers';\nimport { PINK } from 'Utils/colors';\nimport React, { useEffect, useState } from 'react';\nimport { useQuery } from '@tanstack/react-query';\n\nfunction PlatformSelector() {\n const [platformOptions, setPlatformOptions] = useState([]);\n const { platforms, queryparams, platformsEnabled, setPlatforms, portalUser } = useInsightsQuery();\n const { data, isLoading } = useQuery({\n queryKey: ['insightsfilters', { ...queryparams }],\n queryFn: () => fetchInsightsFilters(queryparams),\n enabled: !!portalUser && platforms?.length === 0,\n refetchInterval: false,\n });\n\n useEffect(() => {\n if (data?.data?.data?.platforms) {\n setPlatforms(data?.data?.data?.platforms.filter((platform) => platform !== null) as string[]);\n setPlatformOptions(data?.data?.data?.platforms.filter((platform) => platform !== null) as string[]);\n }\n }, [data?.data?.data?.platforms?.toString()]);\n\n function handleChange(event: React.ChangeEvent) {\n const valueToAdd = event.target.value;\n event.target.checked\n ? setPlatforms((prevPlatforms) => [...prevPlatforms, valueToAdd])\n : setPlatforms((prevPlatforms) => prevPlatforms.filter((value) => value !== valueToAdd));\n }\n\n return (\n \n \n \n \n {isLoading ? (\n \n ) : (\n platformOptions?.map((platform) => (\n \n }\n label={capitalizeSentence(platform)}\n labelPlacement=\"end\"\n />\n ))\n )}\n \n \n \n \n );\n}\n\nexport default PlatformSelector;\n","import PlatformSelector from './PlatformSelector';\n\nexport default PlatformSelector;\n","import http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchKeywordData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/keyworddata', { ...params });\n\n return data;\n};\n\nexport default fetchKeywordData;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./beeswarm.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import Divider from '@mui/material/Divider';\nimport { BarTooltipProps } from '@nivo/bar';\nimport { ResponsiveSwarmPlotCanvas } from '@nivo/swarmplot';\nimport { keyworddata } from 'Types/insightstypes';\nimport { BLACK } from 'Utils/colors';\nimport * as d3 from 'd3';\nimport React, { memo, useEffect, useState, useTransition } from 'react';\n\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport LoadingScreen from '../LoadingScreen';\nimport './beeswarm.css';\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\ntype Props = {\n keyworddata: keyworddata[];\n};\n\nconst CustomTooltip = ({\n data,\n id,\n color,\n value,\n}: Omit, 'hidden' | 'indexValue' | 'label' | 'index' | 'formattedValue'>) => {\n const { portalUser } = useInsightsQuery();\n const qsFormat = d3.format('.2f');\n const cvFormat = d3.format('.2f');\n const clicksFormat = d3.format('.2s');\n const ctrFormat = d3.format('.2%');\n const impressionsFormat = d3.format('.2f');\n\n return (\n
    \n \n
    \n  \n \n {id}\n \n
    \n
    \n
      \n
    • \n Quality Score: {qsFormat(value)}\n
    • \n
    • \n Conversion Value: {cvFormat(data.conversionvalue)}\n
    • \n\n
    • \n Clicks: {clicksFormat(data.clicks)}\n
    • \n
    • \n CTR: {ctrFormat(data.clickthroughrate)}\n
    • \n
    • \n Impressions: {impressionsFormat(data.impressions)}\n
    • \n
    \n
    \n );\n};\n\nconst BeeSwarmCanvasChart = memo(function BeeSwarm({ keyworddata }: Props) {\n const [isPending, startTransition] = useTransition();\n const [isRendering, setIsRendering] = useState(true);\n const conversionvalueDomain = d3.extent(keyworddata, (d) => d.conversionvalue);\n\n const theme = useTheme();\n const matches = useMediaQuery(theme.breakpoints.up('sm'));\n const sizes = matches ? [5, 200] : [5, 50];\n const margins = matches\n ? { top: 80, right: 40, bottom: 80, left: 40 }\n : { top: 60, right: 15, bottom: 120, left: 15 };\n\n // Data sorted by conversion value to make the chart render the smallest dots on top\n // and filter out keywords with 0 clicks\n const chartData = structuredClone(keyworddata)\n .sort((a, b) => b.conversionvalue - a.conversionvalue)\n .filter((d) => d.clicks > 0);\n\n useEffect(() => {\n startTransition(() => {\n setIsRendering(false);\n });\n }, []);\n\n return isRendering || isPending ? (\n \n ) : (\n -.2f\"\n valueScale={{ type: 'linear', min: 0, max: 10, reverse: false }}\n colors={'rgba(70,190,255, 0.7)'}\n size={{\n key: 'conversionvalue',\n values: conversionvalueDomain,\n sizes: sizes,\n }}\n borderWidth={1}\n borderColor={BLACK}\n spacing={9}\n layout=\"horizontal\"\n gap={3}\n forceStrength={8}\n simulationIterations={160}\n colorBy=\"id\"\n margin={margins}\n axisRight={null}\n axisBottom={{\n tickSize: 10,\n tickPadding: 5,\n tickRotation: 0,\n legend: 'Quality Score',\n legendPosition: 'end',\n legendOffset: 60,\n }}\n axisTop={{\n tickSize: 10,\n tickPadding: 5,\n tickRotation: 0,\n legend: 'Quality Score',\n legendPosition: 'start',\n legendOffset: -40,\n }}\n axisLeft={null}\n tooltip={(props) => (\n \n )}\n />\n );\n});\n\nexport default BeeSwarmCanvasChart;\n","import BeeSwarmCanvasChart from './BeeSwarmCanvasChart';\n\nexport default BeeSwarmCanvasChart;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/less-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./beeswarm.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import Divider from '@mui/material/Divider';\nimport { BarTooltipProps } from '@nivo/bar';\nimport { ResponsiveSwarmPlot } from '@nivo/swarmplot';\nimport { keyworddata } from 'Types/insightstypes';\nimport { BLACK } from 'Utils/colors';\nimport * as d3 from 'd3';\nimport React, { memo, useEffect, useState, useTransition } from 'react';\n\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport LoadingScreen from '../LoadingScreen';\n\nimport './beeswarm.css';\nimport { useTheme } from '@mui/material/styles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\ntype Props = {\n keyworddata: keyworddata[];\n};\n\nconst CustomTooltip = ({\n data,\n id,\n color,\n value,\n}: Omit, 'hidden' | 'indexValue' | 'label' | 'index' | 'formattedValue'>) => {\n const { portalUser } = useInsightsQuery();\n const qsFormat = d3.format('.2f');\n const cvFormat = d3.format('.2f');\n const clicksFormat = d3.format('.2s');\n const ctrFormat = d3.format('.2%');\n const impressionsFormat = d3.format('.2f');\n\n return (\n
    \n \n
    \n  \n \n {id}\n \n
    \n
    \n
      \n
    • \n Quality Score: {qsFormat(value)}\n
    • \n
    • \n Conversion Value: {cvFormat(data.conversionvalue)}\n
    • \n\n
    • \n Clicks: {clicksFormat(data.clicks)}\n
    • \n
    • \n CTR: {ctrFormat(data.clickthroughrate)}\n
    • \n
    • \n Impressions: {impressionsFormat(data.impressions)}\n
    • \n
    \n
    \n );\n};\n\nconst BeeSwarmChart = memo(function BeeSwarm({ keyworddata }: Props) {\n const [isPending, startTransition] = useTransition();\n const [isRendering, setIsRendering] = useState(true);\n const conversionvalueDomain = d3.extent(keyworddata, (d) => d.conversionvalue);\n\n const theme = useTheme();\n const matches = useMediaQuery(theme.breakpoints.up('sm'));\n const sizes = matches ? [5, 200] : [5, 50];\n const margins = matches\n ? { top: 80, right: 40, bottom: 80, left: 40 }\n : { top: 60, right: 15, bottom: 120, left: 15 };\n\n // Data sorted by conversion value to make the chart render the smallest dots on top\n // and filter out keywords with 0 clicks\n const chartData = structuredClone(keyworddata)\n .sort((a, b) => b.conversionvalue - a.conversionvalue)\n .filter((d) => d.clicks > 0);\n\n useEffect(() => {\n startTransition(() => {\n setIsRendering(false);\n });\n }, []);\n\n return isRendering || isPending ? (\n \n ) : (\n -.2f\"\n valueScale={{ type: 'linear', min: 0, max: 10, reverse: false }}\n colors={'rgba(70,190,255, 0.7)'}\n size={{\n key: 'conversionvalue',\n values: conversionvalueDomain,\n sizes: sizes,\n }}\n borderWidth={1}\n borderColor={BLACK}\n spacing={9}\n layout=\"horizontal\"\n gap={3}\n forceStrength={8}\n simulationIterations={160}\n colorBy=\"id\"\n margin={margins}\n axisRight={null}\n axisBottom={{\n tickSize: 10,\n tickPadding: 5,\n tickRotation: 0,\n legend: 'Quality Score',\n legendPosition: 'end',\n legendOffset: 60,\n }}\n axisTop={{\n tickSize: 10,\n tickPadding: 5,\n tickRotation: 0,\n legend: 'Quality Score',\n legendPosition: 'start',\n legendOffset: -40,\n }}\n axisLeft={null}\n tooltip={(props) => (\n \n )}\n />\n );\n});\n\nexport default BeeSwarmChart;\n","import BeeSwarmChart from './BeeSwarmChart';\n\nexport default BeeSwarmChart;\n","import Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport Grid from '@mui/material/Grid';\nimport { ErrorBoundary } from '@sentry/react';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport useChartDimensions from 'Hooks/useChartDimensions';\nimport fetchKeywordData from 'Services/InsightsServices/fetchKeywordData';\nimport { keyworddata } from 'Types/insightstypes';\nimport { BEIGE } from 'Utils/colors';\nimport React, { useEffect } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport BeeSwarmCanvasChart from './Components/BeeSwarmCanvasChart';\nimport BeeSwarmChart from './Components/BeeSwarmChart';\nimport LoadingScreen from './Components/LoadingScreen/LoadingScreen';\n\ntype Props = {};\n\nconst chartSettings = {\n marginTop: 30,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 40,\n};\n\nconst KeywordDataBeeSwarmChartView = (props: Props) => {\n const { queryparams, isReadyToRun, setCompareEnabled } = useInsightsQuery();\n const { data, isLoading, isFetching } = useQuery({\n queryKey: ['keyworddata', { ...queryparams }],\n queryFn: () => fetchKeywordData(queryparams),\n enabled: isReadyToRun,\n });\n\n const [ref, dms] = useChartDimensions(chartSettings);\n const keyworddata: keyworddata[] = data?.data?.data || [];\n const tooLittleData = (!keyworddata || keyworddata?.length === 0) && !isLoading;\n\n /**\n * Disable comparison because there's no reason to compare keywords period over period.\n */\n useEffect(() => {\n setCompareEnabled(false);\n return () => {\n setCompareEnabled(true);\n };\n }, []);\n\n return isLoading ? (\n \n ) : (\n \n {tooLittleData ? (\n \n Info\n There's not enough data. Please select a different date range.\n \n ) : (\n \n

    Keyword Plot

    \n

    \n This chart shows keywords organized horizontally by their Quality Score. The size of the bubble represents\n the conversion value amount.\n

    \n
    \n {keyworddata?.length > 2000 ? (\n \n ) : (\n \n )}\n
    \n \n )}\n
    \n );\n};\n\nexport default KeywordDataBeeSwarmChartView;\n","import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp';\nimport { TableHead } from '@mui/material';\nimport Stack from '@mui/material/Stack';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableRow from '@mui/material/TableRow';\nimport { BLACK, LIGHTBLUE } from 'Utils/colors';\nimport {\n HumanReadableInsightsKPIsType,\n humanReadable,\n HumanReadableInsightsKPIsValueFormatType,\n} from 'Utils/humanReadableTitles';\nimport React from 'react';\nimport HelpModal from '../HelpModal/HelpModal';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { validateDate } from '@mui/x-date-pickers/internals';\nimport * as d3 from 'd3';\n\ntype Props = {\n tabledata: { [key: string]: string | number }[];\n title?: string;\n helptext?: string;\n foregroundcolor?: string;\n backgroundcolor?: string;\n makeHumanReadble?: boolean;\n};\n\nconst arrowIcon = [\n ,\n ,\n];\n\nfunction SimpleTableList({\n tabledata,\n title,\n foregroundcolor = BLACK,\n backgroundcolor = LIGHTBLUE,\n helptext = '',\n makeHumanReadble = false,\n}: Props) {\n const { portalUser } = useInsightsQuery();\n\n console.log('tabledata:', tabledata);\n console.log('tabledata[0]:', tabledata && tabledata[0]);\n\n return (\n \n \n {title && (\n \n \n \n \n

    {title}

    \n \n
    \n
    \n
    \n \n {Object.keys(tabledata[0]).map((item, index) => (\n 0 ? 'right' : 'left'}>\n

    {humanReadable.insightsKPIs[item as keyof HumanReadableInsightsKPIsType](portalUser) || item}

    \n
    \n ))}\n
    \n
    \n )}\n \n {tabledata.map((item) => {\n return (\n \n {Object.entries(item).map((entry, index) => {\n return (\n 0 ? 'right' : 'left'}\n scope=\"row\"\n sx={{ borderBottom: '1px solid black', maxWidth: '300px', width: '70%' }}\n >\n {validateDate ? (\n <>\n {typeof entry[1] === 'number'\n ? d3.format(\n humanReadable.insightsKPIValueFormat[\n entry[0] as keyof HumanReadableInsightsKPIsValueFormatType\n ](portalUser)\n )(entry[1])\n : entry[1]}\n \n ) : (\n '-'\n )}\n \n );\n })}\n \n );\n })}\n \n
    \n
    \n );\n}\n\nexport default SimpleTableList;\n","import SimpleTableList from './SimpleTableList';\n\nexport default SimpleTableList;\n","import fetchKeywordData from 'Services/InsightsServices/fetchKeywordData';\nimport { InsightsKPISchemaType, keyworddata } from 'Types/insightstypes';\nimport { LIGHTBLUE } from 'Utils/colors';\nimport React, { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { useInsightsQuery } from '../../Context/InsightsQueryContext';\nimport SimpleTableList from './Components/SimpleTableList';\nimport { ErrorBoundary } from '@sentry/react';\nimport Grid from '@mui/material/Grid';\nimport * as d3 from 'd3';\nimport helptexts from 'Assets/JSON/helptexts';\nimport { qualityscores } from '../../Mock/Keywords/index';\nimport LoadingScreen from './Components/LoadingScreen';\n\ntype Props = {};\n\nfunction KeywordDataTableView({}: Props) {\n const { queryparams, isReadyToRun } = useInsightsQuery();\n const { data, isLoading, isFetching } = useQuery({\n queryKey: ['keyworddata', { ...queryparams }],\n queryFn: () => fetchKeywordData(queryparams),\n enabled: isReadyToRun,\n });\n const keyworddata: keyworddata[] = data?.data?.data || [];\n\n /**\n * Keyword data is calculated by multiplying a scaled down quality score with conversion value\n * The result is then sorted in descending order\n * The top 15 keywords are then selected\n */\n const sortedAndWeightedData: { keyword: string; qualityscore: number }[] = useMemo(() => {\n const weightedKeywordData = keyworddata\n .filter((item) => item.qualityscore > 0)\n .map((item) => {\n const qualityscore = item.qualityscore * 0.01 * item.conversionvalue;\n return { ...item, qualityscore };\n });\n return weightedKeywordData\n .sort((a, b) => b.qualityscore - a.qualityscore)\n .slice(0, 15)\n .map((item) => ({ keyword: item.keyword, qualityscore: item.qualityscore }));\n }, [keyworddata]);\n\n /**\n * Keyword data is sorted by quality score\n * The result is then sorted in descending order\n * The result is then sorted by click through rate\n * The result is then sorted in descending order\n * The top 15 keywords are then selected\n * */\n const keyWordsWithPotential: { keyword: string; qualityscore: number; clickthroughrate: number }[] = useMemo(() => {\n const potentialKeywords: keyworddata[] = keyworddata\n // Larger QS than 0 because 1 is the lowest possible quality score. 0 would equal null.\n ?.filter((item) => item.qualityscore <= 5 && item.qualityscore > 0)\n .filter((item) => item.clickthroughrate > 0);\n\n const potentialKeywordsSortedByQualityScore = potentialKeywords.sort((a, b) => b.qualityscore - a.qualityscore);\n const potentialKeywordsSortedByQualityScoreSortedByCTR = potentialKeywordsSortedByQualityScore.sort(\n (a, b) => b.clickthroughrate - a.clickthroughrate\n );\n const qualityscoreSelectionSortedByCTRTop15 = potentialKeywordsSortedByQualityScoreSortedByCTR\n .slice(0, 15)\n .map((item) => ({\n keyword: item.keyword,\n qualityscore: item.qualityscore,\n clickthroughrate: item.clickthroughrate,\n }));\n\n return qualityscoreSelectionSortedByCTRTop15;\n }, [keyworddata]);\n\n return isLoading ? (\n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default KeywordDataTableView;\n","import { getCookie } from 'Utils/Helpers';\nimport http from 'Utils/Http';\nimport { InsightsRequest } from '../../Types/insightstypes';\n\nconst fetchCampaignTypeData = async (params: InsightsRequest) => {\n const { data } = await http.post('/api/insights/campaigntypedata', { ...params });\n\n return data;\n};\n\nexport default fetchCampaignTypeData;\n","// install (please make sure versions match peerDependencies)\n// yarn add @nivo/core @nivo/bar\nimport { BarTooltipProps, ResponsiveBar } from '@nivo/bar';\nimport { LIGHTBLUE, PINK, YELLOW, BLUE, LIGHTBEIGE, TEAL } from 'Utils/colors';\nimport { humanReadable, HumanReadableInsightsKPIsType } from 'Utils/humanReadableTitles';\nimport React from 'react';\nimport * as d3 from 'd3';\nimport EastIcon from '@mui/icons-material/East';\nimport Stack from '@mui/material/Stack';\nimport { CampaignTypeData, PortalUser, CampaignType } from 'Types/insightstypes';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { BasicTooltip } from '@nivo/tooltip';\n\ntype Props = {\n chartData: chartData;\n};\n\ntype chartData = [\n {\n id: keyof CampaignTypeData;\n label: keyof CampaignTypeData;\n } & { [key in CampaignType]?: number }\n];\n\nconst CustomTooltip = (props: Omit, 'hidden' | 'index' | 'indexValue' | 'data'>) => (\n \n {props.id} : {props.formattedValue}\n \n }\n enableChip={true}\n color={props.color}\n />\n);\n\nconst NivoBarChart = ({ chartData }: Props) => {\n const { portalUser } = useInsightsQuery();\n const domaindata: number[] = Object.values(chartData[0]).filter(\n (value): value is number => typeof value === 'number'\n );\n const domain = [0, d3.max(domaindata)];\n const scale = d3.scaleLinear().domain(domain).range([0, 100]);\n const ticks = scale.ticks(3);\n\n const itemHasValues = domaindata.map((item) => item >= 0).includes(true);\n const keys = Object.keys(chartData[0]).filter((key) => key !== 'id' && key !== 'label' && key !== 'key');\n\n const colors = [PINK, BLUE, YELLOW, TEAL];\n\n return itemHasValues ? (\n ](\n portalUser\n )\n : ' >-.2r'\n }\n indexScale={{ type: 'band', round: true }}\n colors={colors}\n axisTop={null}\n axisRight={null}\n axisLeft={{\n tickSize: 5,\n tickPadding: 5,\n tickRotation: 0,\n tickValues: ticks,\n legendPosition: 'middle',\n legendOffset: 32,\n format: function (e) {\n return d3.format(\n humanReadable.insightsKPIValueFormat[chartData[0]?.label as keyof Omit](\n portalUser\n )\n )(e);\n },\n }}\n axisBottom={null}\n enableGridX={false}\n enableGridY={true}\n labelSkipWidth={12}\n labelSkipHeight={12}\n labelTextColor={{\n from: 'color',\n modifiers: [['darker', 2.2]],\n }}\n legends={[\n {\n dataFrom: 'keys',\n data: keys.map((key, index) => ({\n id: key,\n label: key === 'PERFORMANCE_MAX' ? 'PMAX' : key,\n color: colors[index] as string,\n })),\n anchor: 'right',\n direction: 'column',\n justify: false,\n translateX: 120,\n translateY: 0,\n itemsSpacing: 2,\n itemWidth: 100,\n itemHeight: 20,\n itemDirection: 'left-to-right',\n itemOpacity: 0.85,\n symbolSize: 20,\n effects: [\n {\n on: 'hover',\n style: {\n itemOpacity: 1,\n },\n },\n ],\n },\n ]}\n role=\"application\"\n isFocusable={true}\n ariaLabel=\"Nivo bar chart demo\"\n barAriaLabel={function (e) {\n return e.id + ': ' + e.formattedValue + ' in country: ' + e.indexValue;\n }}\n tooltip={(node) => (\n \n )}\n />\n ) : (\n \n \n \n
    Not enough data to draw chart
    \n
    \n \n );\n};\n\nexport default NivoBarChart;","import NivoBarChart from './NivoBarChart';\n\nexport default NivoBarChart;\n","import Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport helptexts, { HelpTextType } from 'Assets/JSON/helptexts';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport fetchCampaignTypeData from 'Services/InsightsServices/fetchCampaignTypeData';\nimport { CampaignType, CampaignTypeData } from 'Types/insightstypes';\nimport { BEIGE } from 'Utils/colors';\nimport { HumanReadableInsightsKPIsType, humanReadable } from 'Utils/humanReadableTitles';\nimport React, { useEffect, useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport ErrorBoundary from './Components/ErrorBoundary/index';\nimport HelpModal from './Components/HelpModal';\n\nimport Alert from '@mui/material/Alert';\nimport AlertTitle from '@mui/material/AlertTitle';\nimport useChartDimensions from 'Hooks/useChartDimensions';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport LoadingScreen from './Components/LoadingScreen';\nimport NivoBarChart from './Components/NivoBarChart';\n\ntype Props = { helptext?: string };\n\ninterface chartData extends CampaignTypeData {\n key: string;\n}\n\ntype BarChartData = {\n [key in CampaignType]?: number;\n};\n\nconst chartSettings = {\n marginTop: 30,\n marginRight: 15,\n marginBottom: 40,\n marginLeft: 40,\n};\n\nconst metricSortOrder = [\n 'roas',\n 'returnonexpenditurevalue',\n 'cpa',\n 'cost',\n 'searchvolume',\n 'conversionvalue',\n 'convrate',\n 'conversionrate',\n 'clicks',\n 'cpc',\n 'costperconversion',\n 'costperclick',\n 'impressions',\n 'conversions',\n 'searchimpressionshare',\n 'impressionshare',\n 'ctr',\n 'clickthroughrate',\n 'frequency',\n 'landingpageviews',\n 'newusers',\n 'returningusers',\n 'uniqueusers',\n];\n\nconst CampaignTypeDataBarChartView = ({ helptext = '' }: Props) => {\n const { portalUser, setPlatformsEnabled, setCompareEnabled } = useInsightsQuery();\n const { queryparams, isReadyToRun, shallCompare, alternateStartDate, alternateEndDate } = useInsightsQuery();\n const [ref, dms] = useChartDimensions(chartSettings);\n const { data, isLoading, isFetching } = useQuery({\n queryKey: ['campaigntypedata', { ...queryparams }],\n queryFn: () => fetchCampaignTypeData(queryparams),\n enabled: isReadyToRun,\n });\n\n const {\n data: comparisonData,\n isLoading: isLoadingComparisonData,\n isFetching: isFetchingComparisonData,\n } = useQuery({\n queryKey: ['campaigntypedata', { ...queryparams, startdate: alternateStartDate, enddate: alternateEndDate }],\n queryFn: () =>\n fetchCampaignTypeData({\n ...queryparams,\n startdate: dayjs(alternateStartDate).format('YYYY-MM-DD'),\n enddate: dayjs(alternateEndDate).format('YYYY-MM-DD'),\n }),\n enabled: isReadyToRun && shallCompare,\n });\n\n const chartData: CampaignTypeData[] = data?.data?.data || [];\n\n const superData = useMemo(() => {\n if (chartData.length === 0) return [];\n const allkeys = chartData.map((item: CampaignTypeData) => Object.keys(item) as (keyof CampaignTypeData)[]);\n const uniquekeys = [...new Set(allkeys.flat())];\n let sortedUniqueKeys = uniquekeys.sort((a, b) => {\n return metricSortOrder.indexOf(a) - metricSortOrder.indexOf(b);\n });\n\n if (sortedUniqueKeys.includes('campaigntype')) {\n sortedUniqueKeys.splice(sortedUniqueKeys.indexOf('campaigntype'), 1);\n }\n\n const tdata = sortedUniqueKeys.map((key) => {\n return {\n id: key as keyof Omit,\n label: key as keyof Omit,\n ...chartData.reduce((acc: BarChartData, item: CampaignTypeData) => {\n acc[item.campaigntype as CampaignType] = item[key] as number;\n return acc;\n }, {} as BarChartData),\n };\n });\n\n return tdata;\n }, [chartData.length, isLoading]);\n\n /**\n * Compare should be disabled only until it is fully built.\n * There's no other reason for it to be disabled.\n */\n useEffect(() => {\n setCompareEnabled(false);\n return () => {\n setCompareEnabled(true);\n };\n }, []);\n\n const tooLittleData = chartData?.length === 0;\n\n /**\n *\n * Do not display search volume/interest here. Search volume/interest is calculated as a trend and not fitting for a bar chart.\n */\n return isLoading ? (\n \n ) : (\n \n {tooLittleData ? (\n \n Info\n There's not enough data. Please select a different date range.\n \n ) : (\n \n {superData.map((data) => {\n const helpTextKey =\n data?.label?.toUpperCase() === 'RETURNONEXPENDITUREVALUE'\n ? portalUser.return_on_expenditure_type.toUpperCase()\n : (data?.label?.toUpperCase() as keyof HelpTextType);\n return (\n data?.label !== 'searchvolume' && (\n \n
    \n \n

    \n {humanReadable.insightsKPIs[data?.label as keyof HumanReadableInsightsKPIsType](\n portalUser\n ).toUpperCase()}\n

    \n \n
    \n \n
    \n \n
    \n
    \n
    \n
    \n )\n );\n })}\n
    \n )}\n
    \n );\n};\n\nexport default CampaignTypeDataBarChartView;\n","import ArrowCircleRightSharpIcon from '@mui/icons-material/ArrowCircleRightSharp';\nimport ArrowDropDownCircleIcon from '@mui/icons-material/ArrowDropDownCircle';\nimport { useMediaQuery } from '@mui/material';\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { BEIGE, ORANGE, BLUE } from 'Utils/colors';\nimport React from 'react';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\n\ntype Props = {};\n\nfunction DateSelector({}: Props) {\n const matches = useMediaQuery('(min-width:600px)');\n const { dateRange, setStartDate, setEndDate, startDate, endDate } = useInsightsQuery();\n return (\n \n \n \n setStartDate(value)}\n renderInput={(params) => }\n />\n {matches ? (\n \n ) : (\n \n )}\n setEndDate(value)}\n renderInput={(params) => }\n />\n \n \n \n );\n}\n\nexport default DateSelector;\n","import DateSelector from './DateSelector';\n\nexport default DateSelector;\n","import DateRangeDialog from './DateRangeDialog';\n\nexport default DateRangeDialog;\n","import React from 'react';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useTheme } from '@mui/material/styles';\nimport DateSelector from '../DateSelector';\n\ntype Props = {\n open: boolean;\n onClose: () => void;\n};\n\nexport default function DateRangeDialog({ open, onClose }: Props) {\n const theme = useTheme();\n const fullscreen = useMediaQuery(theme.breakpoints.down('md'));\n\n return (\n \n Select a Custom Date Range\n \n \n \n \n );\n}\n","import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { Typography } from '@mui/material';\nimport Button from '@mui/material/Button';\nimport ButtonGroup from '@mui/material/ButtonGroup';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport Grid from '@mui/material/Grid';\nimport Grow from '@mui/material/Grow';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport Paper from '@mui/material/Paper';\nimport Popper from '@mui/material/Popper';\nimport Stack from '@mui/material/Stack';\nimport Switch from '@mui/material/Switch';\nimport ToggleButton from '@mui/material/ToggleButton';\nimport ToggleButtonGroup from '@mui/material/ToggleButtonGroup';\nimport Tooltip from '@mui/material/Tooltip';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { dayjs } from 'Utils/DayJs/dayjsWrapper';\nimport { LIGHTBLUE, ORANGE } from 'Utils/colors';\nimport React, { useEffect, useRef, useState, useTransition } from 'react';\nimport DateRangeDialog from '../DateRangeDialog';\n\nconst rangeOptions = {\n 'Last 14 Days': {\n responsive: true,\n start: dayjs().subtract(14, 'day').toDate(),\n end: dayjs().subtract(1, 'day').toDate(),\n comparisonOptions: (startdate: string, enddate: string) => ({\n '- 14 days': {\n start: dayjs(startdate).subtract(14, 'day').toDate(),\n end: dayjs(enddate).subtract(14, 'day').toDate(),\n },\n '- 1 year': {\n start: dayjs(startdate).subtract(1, 'year').toDate(),\n end: dayjs(enddate).subtract(1, 'year').toDate(),\n },\n }),\n },\n 'This Month': {\n responsive: true,\n start: dayjs().startOf('month').toDate(),\n end: dayjs().subtract(1, 'day').toDate(),\n comparisonOptions: (startdate: string, enddate: string) => ({\n '- 1 month': {\n start: dayjs(startdate).subtract(1, 'month').startOf('month').toDate(),\n end: dayjs(enddate).subtract(1, 'month').toDate(),\n },\n '- 1 year': {\n start: dayjs(startdate).subtract(1, 'year').startOf('month').toDate(),\n end: dayjs(enddate).subtract(1, 'year').toDate(),\n },\n }),\n },\n 'Last 30 Days': {\n responsive: true,\n start: dayjs().subtract(30, 'day').toDate(),\n end: dayjs().subtract(1, 'day').toDate(),\n comparisonOptions: (startdate: string, enddate: string) => ({\n '- 30 days': {\n start: dayjs(startdate).subtract(30, 'day').toDate(),\n end: dayjs(enddate).subtract(30, 'day').toDate(),\n },\n '- 1 year': {\n start: dayjs(startdate).subtract(1, 'year').toDate(),\n end: dayjs(enddate).subtract(1, 'year').toDate(),\n },\n }),\n },\n\n 'Last 90 Days': {\n responsive: false,\n start: dayjs().subtract(90, 'day').toDate(),\n end: dayjs().subtract(1, 'day').toDate(),\n comparisonOptions: (startdate: string, enddate: string) => ({\n '- 90 days': {\n start: dayjs(startdate).subtract(90, 'day').toDate(),\n end: dayjs(enddate).subtract(90, 'day').toDate(),\n },\n '- 1 year': {\n start: dayjs(startdate).subtract(1, 'year').toDate(),\n end: dayjs(enddate).subtract(1, 'year').toDate(),\n },\n }),\n },\n 'This Year': {\n responsive: false,\n start: dayjs().startOf('year').toDate(),\n end: dayjs().subtract(1, 'day').toDate(),\n comparisonOptions: (startdate: string, enddate: string) => ({\n '- 1 year': {\n start: dayjs(startdate).subtract(1, 'year').startOf('year').toDate(),\n end: dayjs(enddate).subtract(1, 'year').endOf('year').toDate(),\n },\n }),\n },\n 'Last Year': {\n responsive: false,\n start: dayjs().subtract(1, 'year').startOf('year').toDate(),\n end: dayjs().subtract(1, 'year').endOf('year').toDate(),\n comparisonOptions: (startdate: string, enddate: string) => ({\n '- 1 year': {\n start: dayjs(startdate).subtract(1, 'year').startOf('year').toDate(),\n end: dayjs(enddate).subtract(1, 'year').endOf('year').toDate(),\n },\n }),\n },\n};\n\nconst customDateOptions = (startdate: string, enddate: string) => ({\n comparisonOptions: {\n '- 1 month': {\n start: dayjs(startdate).subtract(1, 'month').toDate(),\n end: dayjs(enddate).subtract(1, 'month').toDate(),\n },\n '- 1 year': {\n start: dayjs(startdate).subtract(1, 'year').toDate(),\n end: dayjs(enddate).subtract(1, 'year').toDate(),\n },\n },\n});\n\ntype ComparisonOption = (typeof rangeOptions)[keyof typeof rangeOptions]['comparisonOptions'];\n\nfunction DateRangeSelector() {\n const { compareEnabled } = useInsightsQuery();\n const [isPending, startTransition] = useTransition();\n const [buttonText, setButtonText] = useState('Select to Compare');\n const [selectedDateRange, setSelectedDateRange] = useState('This Month');\n const [comparisonRange, setComparisonRange] = useState(null);\n const [open, setOpen] = useState(false);\n const [openCustomDateRange, setOpenCustomDateRange] = useState(false);\n\n const [isDropdownOptionSelected, setIsDropdownOptionSelected] = useState(false);\n\n const matches = useMediaQuery('(min-width:600px)');\n\n const [selectedIndex, setSelectedIndex] = useState(0);\n const anchorRef = useRef(null);\n const {\n dateRange,\n setDateRange,\n shallCompare,\n setShallCompare,\n setAlternateDateRange,\n startDate,\n endDate,\n alternateStartDate,\n alternateEndDate,\n } = useInsightsQuery();\n\nfunction handleDateRangeSelect(event: React.MouseEvent, newDateRange: string) {\n if (newDateRange === 'Custom Date Range' && !openCustomDateRange) {\n setOpenCustomDateRange(true);\n setComparisonRange(null);\n setShallCompare(false);\n setSelectedDateRange(newDateRange);\n } else if (rangeOptions[newDateRange as keyof typeof rangeOptions]) { // Checking if newDateRange is a valid key in rangeOptions.\n const {start, end} = rangeOptions[newDateRange as keyof typeof rangeOptions];\n setComparisonRange(null);\n setShallCompare(false);\n setButtonText('Select to Compare');\n setSelectedIndex(0);\n setSelectedDateRange(newDateRange);\n setDateRange([start, end]);\n }\n }\n\n useEffect(() => {\n if (!shallCompare) setButtonText('Select to Compare');\n if (!shallCompare) setComparisonRange(null);\n }, [shallCompare]);\n\n function handleToggle() {\n setOpen((prevOpen) => !prevOpen);\n }\n\n const handleClose = (event: Event) => {\n if (anchorRef.current && anchorRef.current.contains(event.target as HTMLElement)) {\n return;\n }\n setOpen(false);\n };\n\n function handleShallCompareSwitch(event: React.MouseEvent) {\n startTransition(() => {\n if (selectedDateRange === 'Custom Date Range' && !openCustomDateRange) {\n setShallCompare(!shallCompare);\n setButtonText(Object.keys(customDateOptions(startDate, endDate).comparisonOptions)[0]);\n setComparisonRange(Object.keys(customDateOptions(startDate, endDate).comparisonOptions)[0]);\n }\n if (selectedDateRange !== 'Custom Date Range' && !openCustomDateRange) {\n setShallCompare(!shallCompare);\n setButtonText(\n Object.keys(\n rangeOptions[selectedDateRange as keyof typeof rangeOptions].comparisonOptions(startDate, endDate)\n )[0]\n );\n const option = Object.keys(\n rangeOptions[selectedDateRange as keyof typeof rangeOptions].comparisonOptions(startDate, endDate)\n )[0];\n setComparisonRange(option);\n const { start, end } =\n selectedDateRange === 'Custom Date Range'\n ? customDateOptions(startDate, endDate).comparisonOptions[option as keyof ComparisonOption]\n : rangeOptions[selectedDateRange as keyof typeof rangeOptions].comparisonOptions(startDate, endDate)[\n option as keyof ComparisonOption\n ];\n setAlternateDateRange([start, end]);\n }\n\n });\n }\n\n function handleMenuItemClick(event: React.MouseEvent, index: number, option: string) {\n\n setSelectedIndex(index);\n setOpen(false);\n setButtonText(option);\n setShallCompare(true);\n setComparisonRange(option);\n const { start, end } =\n selectedDateRange === 'Custom Date Range'\n ? customDateOptions(startDate, endDate).comparisonOptions[option as keyof ComparisonOption]\n : rangeOptions[selectedDateRange as keyof typeof rangeOptions].comparisonOptions(startDate, endDate)[\n option as keyof ComparisonOption\n ];\n setAlternateDateRange([start, end]);\n }\n\n function handleCloseCustomDateRange() {\n setOpenCustomDateRange(false);\n }\n\n const hasLongDateRange = dayjs(dateRange[1]).diff(dayjs(dateRange[0]), 'day') > 200;\n const isEndDateWithinRange = dayjs(endDate).isAfter(dayjs().subtract(7, 'days'));\n\n function toggleComparisonMode() {\n if (isDropdownOptionSelected) {\n setShallCompare(!shallCompare);\n }\n }\n\n return (\n \n \n \n handleDateRangeSelect(e, val)}\n exclusive\n aria-label=\"Date range\"\n >\n {Object.entries(rangeOptions).map(\n ([key]) =>\n (rangeOptions[key as keyof typeof rangeOptions].responsive || matches) && (\n \n {key}\n \n )\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n {buttonText} \n \n\n\n \n \n \n \n \n \n {({ TransitionProps, placement }) => {\n const menuoptions =\n selectedDateRange === 'Custom Date Range'\n ? Object.keys(customDateOptions(startDate, endDate).comparisonOptions)\n : Object.keys(\n rangeOptions[selectedDateRange as keyof typeof rangeOptions]?.comparisonOptions(\n startDate,\n endDate\n ) || {}\n );\n return (\n \n \n \n \n {menuoptions?.map((option, index) => {\n return (\n handleMenuItemClick(event, index, option)}\n >\n {option || 'error'}\n \n );\n })}\n \n \n \n \n );\n }}\n \n \n \n \n \n \n \n
    Period
    \n {hasLongDateRange && (\n \n A long date range can possibly be slow to render. Please have patience.\n \n }\n arrow\n >\n \n \n )}\n
    \n

    \n {`${dayjs(startDate).format('YYYY-MM-DD')} - ${dayjs(endDate).format('YYYY-MM-DD')}`}{' '}\n {isEndDateWithinRange && (\n \n Please keep in mind that when you select to view very recent data, there might be a slight delay\n in the availability of the most up-to-date information. This delay can impact the reported\n metrics, potentially resulting in lower figures than the actual performance.\n \n }\n arrow\n >\n \n \n )}\n

    \n
    \n {shallCompare && (\n \n
    Comparison Period
    \n

    {`${dayjs(alternateStartDate).format('YYYY-MM-DD')} - ${dayjs(alternateEndDate).format(\n 'YYYY-MM-DD'\n )}`}

    \n
    \n )}\n
    \n
    \n
    \n );\n}\n\nexport default DateRangeSelector;","import DateRangeSelector from \"./DateRangeSelector\";\n\nexport default DateRangeSelector;","import PortalUser from './PortalUser';\n\nexport default PortalUser;\n","/* eslint-disable */\nimport React, { useEffect } from 'react';\nimport { useAuth } from 'Context/AuthContext';\nimport { useInsightsQuery } from 'Context/InsightsQueryContext';\nimport { PortalUser } from 'Types/insightstypes';\n\nconst PortalUser = (): null => {\n const { setPortalUser } = useInsightsQuery();\n const { user } = useAuth();\n\n useEffect(() => {\n if (user) {\n if (user.category === 'CLIENT') {\n const { id, name, organization_type, return_on_expenditure_type, currency } = user?.organization;\n setPortalUser({ id, name, organization_type, return_on_expenditure_type, currency } as PortalUser);\n }\n }\n }, [user?.uuid]);\n\n return null;\n};\n\nexport default PortalUser;\n","import React from 'react';\nimport { useAuth } from 'Context/AuthContext';\n\ntype Props = { children: React.ReactNode };\n\nconst PrivateFunction = ({ children }: Props) => {\n const { user } = useAuth();\n const allowedorganizations = user?.allowed_organizations;\n if (user?.category === 'STAFF' || user?.category === 'PARTNER' || allowedorganizations?.length > 1) {\n return <>{children};\n }\n\n return null;\n};\n\nexport default PrivateFunction;\n","import Container from '@mui/material/Container';\nimport React, { useState, useTransition } from 'react';\nimport Footer from './Components/Footer';\n\nimport { BLACK, LIGHTBEIGE } from 'Utils/colors';\nimport AggregatedDataByDateView from './AggregatedDataByDateView';\nimport BingDataView from './BingDataView';\nimport PortalUserSelector from './Components/PortalUserSelector';\nimport GoogleCampaignDataViews from './GoogleCampaignDataViews';\nimport MetaDataView from './MetaDataView';\nimport BudgetDataViews from './BudgetDataViews';\n\nimport Grid from '@mui/material/Grid';\nimport Stack from '@mui/material/Stack';\nimport InsightsQueryProvider from 'Context/InsightsQueryContext';\nimport CountryFilterSelector from './Components/CountryFilterSelector/index';\nimport IncludeBrandSwitch from './Components/IncludeBrandSwitch';\nimport PlatformSelector from './Components/PlatformSelector';\nimport KeywordDataBeeSwarmChartView from './KeywordDataBeeSwarmChartView';\nimport KeywordDataTableView from './KeywordDataTableView';\n\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Tab from '@mui/material/Tab';\nimport Tabs from '@mui/material/Tabs';\nimport { useAuth } from 'Context/AuthContext';\nimport CampaignTypeDataBarChartView from './CampaignTypeDataBarChartView';\nimport DateRangeSelector from './Components/DateRangeSelector';\nimport ErrorBoundary from './Components/ErrorBoundary';\nimport PortalUser from './Components/PortalUser';\nimport PrivateFunction from './Components/PrivateFunction/PrivateFunction';\nimport SplashScreen from './Components/SplashScreen/SplashScreen';\nimport AmandaAiLogo from './Components/TextLogo';\n\ntype Props = {};\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props;\n\n return (\n