{"version":3,"sources":["helpers/getEndpoint.ts","hooks/useLocalStorage.ts","hooks/setDataLayerLocation.js","hooks/useToggle.js","state/apiData.js","hooks/useFetch.js","state/useAppState.js","icons/icons.js","components/BusinessTypeCards.js","components/Email.js","pages/ErrorApi.js","components/Loading.js","components/MetricToggle.js","components/GeneralOptIn.js","pages/Signin.js","components/calc/Margin.js","components/calc/SummaryChart.js","components/calc/Summary.js","components/calc/Input.js","components/RadioButton.js","components/calc/UnitsMetric.js","components/calc/UnitsImperial.js","pages/CalcContainer.js","components/LSLogo.tsx","components/Header.js","components/socialLinks.js","components/Footer.js","pages/ErrorPage.js","components/Head.js","App.js","serviceWorker.js","index.js"],"names":["subdirectoryList","ch","dech","removeTrailingSlash","url","replace","extractSubdirectoryFromPathName","subdir","window","location","pathname","split","subdirPath","concat","Object","values","includes","isPathInSubdirectoryValues","domain","_document$body$datase","document","body","dataset","createPathFromDomain","isSubdirectory","getEndpoint","arguments","length","undefined","startsWith","isRelativeURL","useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","localStorage","getItem","JSON","parse","error","value","valueToStore","Function","setItem","stringify","console","log","setDataLayerLocation","dataLayer","push","originalLocation","protocol","hostname","search","LexiconData","_ref","isDevEnv","response","useFetch","setError","loading","setLoading","setResponse","endpoint","useEffect","async","fetch","result","json","fetchInfo","AppContext","createContext","isMetric","StateWrapper","children","email","setEmail","isToggled","setToggle","toggle","initial","prevState","useToggle","geoLocationString","Cookies","get","geoLocation","settings_global","header","signup_section","calculator_section","margin_section","summary_section","error_section","_jsx","Provider","setMetric","toggleMetric","lexiconData","globalData","headerData","signupData","calculatorData","marginData","summaryData","errorData","useAppState","useContext","Icons","bar","xmlns","viewBox","id","_jsxs","className","width","height","d","points","cafe","hotel","other","restaurant","foodRetail","x","y","transform","foodTruck","quickService","fineDining","bakery","BusinessTypeCard","businessType","handleBusinessType","businessTypeReq","business_type_label","business_type_select","filter","type","business_type","map","index","label","isChecked","name","onChange","checked","_","camelCase","lowerCase","Email","register","handleEmailChange","handleEmailBlur","errors","email_input_label","message","placeholder","email_input_placeholder","ref","required","emailReq","min","maxLength","pattern","validate","valid","Status","e","validateEmailDomain","match","onBlur","ErrorPageApi","Fragment","Helmet","content","onClick","refreshPage","reload","Loading","setTimeout","_Fragment","ErrorApi","cx","cy","r","fill","strokeWidth","MetricToggle","toggleLabel","heading","country_code","role","GeneralOptIn","generalOptIn","disabled","handleOptinValue","Signin","updateGeneralOptInValue","utmCampaign","utmSource","utmMedium","utmContent","utmTerm","getHsCookie","setBusinessTypeReq","history","useHistory","requestIp","setRequestIp","handleSubmit","useForm","submittingForm","setSubmittingForm","page_source","origin","website","GEO_SERVICE_URL","trackFormWithAction","eventAction","isNonInteraction","TagManager","event","eventLabel","eventCategory","nonInteraction","toggle_label","then","data","geoplugin_request","catch","requestOptions","method","headers","campaign_content","campaign_medium","campaign_name","campaign_source","campaign_term","general_opt_in","form_detailed","form_name","stage","product","campaign_id","form_id","ip","hubspotutk","country","redirect","seo_title","seo_desc","title","onSubmit","text","general_opt_in_input_label","toggle_heading","submitting_label","submit_button_label","Margin","totalCost","currencySymbol","currency_symbol","marginPercent","setMarginPercent","markUpAmount","setMarkUpAmount","initialState","cost","markUp","percent","state","dispatch","useReducer","action","Error","total_cost","NumberFormat","toFixed","displayType","decimalScale","thousandSeparator","style","renderText","markup_percent","Repeatable","repeatDelay","repeatInterval","onPress","onHold","rx","markup_amount","menu_price","SummaryChart","ingredientDetails","chartLabel","ingredientDetail","ingredientName","chartUsedCost","usedCost","ChartHeight","reportDataSource","labels","datasets","table_bar_label","borderWidth","barThickness","backgroundColor","reportBarOptions","responsive","maintainAspectRatio","layout","padding","left","right","top","bottom","scales","yAxes","display","scaleLabel","labelString","fontStyle","ticks","reverse","beginAtZero","gridLines","offset","color","offsetGridLines","xAxes","table_label","callback","elements","line","tension","point","radius","hitRadius","hoverRadius","legend","position","usePointStyle","fontSize","minHeight","HorizontalBar","options","defaultProps","Summary","sortedIngred","sort","a","b","parseFloat","marginBottom","listStyle","marginLeft","paddingLeft","paddingBottom","paddingTop","borderBottom","prefix","Input","suffix","hotjar","RadioButton","UnitsMetric","unit","gram","kilo","mil","litre","unitPurchased","handleChange","UnitsMetricUsed","_ref2","unitUsed","UnitsImperial","oz","pound","floz","gallon","UnitsImperialUsed","FoodCalc","setTotalCost","units","weightImperial","units_imperial","unit_imperial","fl_oz","randomIngredList","ingredient","name_placeholder","getRandomInt","max","Math","floor","random","randomIngred","ingredPlaceholder","setIngredientDetails","ingredId","shortid","generate","purchasePrice","quantityPurchased","quantityUsed","preventDefault","target","scrollTo","showIngredientList","ingred","unitPrice","calcUsedCost","isNaN","name_label","price_label","unit_purchased_label","unit_purchased_placeholder","unit_used_label","cost_label","handleRemoveIngredient","i","remove_label","calculator","calcTotalCost","add_label","colorMap","dark","light","LSLogo","props","mode","customModeClass","Header","href","cta_button_primary","enable","cta_button_secondary","cta_text","cta_url","SocialLinks","network","networksObject","facebook","ariaLabel","trackingName","iconSVG","twitter","linkedin","youtube","instagram","Footer","Date","getFullYear","ErrorPage","subheading","Link","to","errorPageButton","Head","canonicalUrl","rel","App","params","URL","searchParams","setUtmCampaign","setUtmSource","setUtmMedium","setUtmContent","setUtmTerm","setBusinessType","anonymizedEmail","setAnonymizedEmail","hasEmailEventBeenSent","setHasEmailEventBeenSent","setGeneralOptinValue","trackEmailEvent","Router","basename","Switch","Route","exact","path","Redirect","event_action","product_type","render","Boolean","initialize","gtmId","pageCategory","ReactDOM","React","StrictMode","HelmetProvider","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.8750d7cb.chunk.js","sourcesContent":["////////////////////////////////////// WARNING ///////////////////////////////////////////////\n//! This is a duplicate snippet.\n// The original file is located at html/wp-content/themes/ls/src/js/utils/cors/getEndpoint.ts\n//////////////////////////////////////////////////////////////////////////////////////////////\n\nconst subdirectoryList: { ch: string; dech: string } = {\n ch: '/ch',\n dech: '/ch-de',\n};\n\ntype SubDirKeys = keyof typeof subdirectoryList;\n\nconst removeTrailingSlash = (url: string): string => url.replace(/\\/$/g, '');\n\nconst isPathInSubdirectoryValues = (subdirPath: string) =>\n Object.values(subdirectoryList).includes(subdirPath);\nconst extractSubdirectoryFromPathName = () => {\n const subdir = window.location.pathname.split('/')[1];\n const subdirPath = subdir ? `/${subdir}` : '';\n return isPathInSubdirectoryValues(subdirPath) ? subdirPath : '';\n};\n\nconst domain: string = document.body.dataset.domain ?? '';\n\nconst isSubdirectory = (domain: string) => domain in subdirectoryList;\nconst createPathFromDomain = (domain: string) => {\n if (domain) {\n if (!isSubdirectory(domain)) return ''; // This applies to all root domains including hq, nl, etc.\n\n const subdirectory: SubDirKeys = domain as SubDirKeys;\n return removeTrailingSlash(subdirectoryList[subdirectory]);\n }\n if (!extractSubdirectoryFromPathName()) return '';\n\n return removeTrailingSlash(extractSubdirectoryFromPathName());\n};\n\nconst isRelativeURL = (url: string) => url.startsWith('/');\n\nconst getEndpoint = (url = '') => {\n return isRelativeURL(url) ? createPathFromDomain(domain) + url : url;\n};\n\nexport { getEndpoint };\n","import { useState } from 'react';\n\nexport function useLocalStorage(key: string, initialValue: T): [T, (s: T) => void] {\n const [storedValue, setStoredValue] =\n useState < T >\n (() => {\n try {\n const item = window.localStorage.getItem(key);\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n return initialValue;\n }\n });\n\n const setValue = (value: T) => {\n try {\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n setStoredValue(valueToStore);\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n console.log(error);\n }\n };\n\n return [storedValue, setValue];\n};","export function setDataLayerLocation() {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n originalLocation:\n document.location.protocol +\n '//' +\n document.location.hostname +\n document.location.pathname +\n document.location.search,\n });\n}\n","import { useState } from 'react';\n\nexport const useToggle = initial => {\n const [isToggled, setToggle] = useState(initial);\n const toggle = () => setToggle(prevState => !prevState);\n\n return { isToggled, setToggle, toggle };\n};\n","import { useFetch } from '../hooks';\n\nexport const LexiconData = ({isDevEnv}) => {\n\n const { response } = useFetch('/wp-json/lexic/v1/tools/food_cost_calculator/', isDevEnv);\n\n if (!response) {\n return false;\n }\n return response;\n};\n","import { useState, useEffect } from 'react';\nimport { getEndpoint } from '../helpers/getEndpoint';\nexport const useFetch = (url, isDevEnv) => {\n const [error, setError] = useState(null);\n const [loading, setLoading] = useState(null);\n const [response, setResponse] = useState(null);\n\n const localDomain = isDevEnv ? 'http://local.lightspeedhq.com' : '';\n const endpoint = `${localDomain}${getEndpoint(url)}`\n\n useEffect(() => {\n const fetchInfo = async () => {\n setLoading(true);\n setError(null);\n setResponse(null);\n try {\n const response = await fetch(endpoint);\n const result = await response.json();\n setResponse(result);\n } catch (error) {\n setError(error);\n }\n setLoading(false);\n };\n fetchInfo();\n }, [endpoint, url]);\n\n return { error, loading, response };\n};\n","import React, { createContext, useContext } from 'react';\nimport { useToggle, useLocalStorage } from '../hooks';\nimport { LexiconData } from './apiData';\nimport Cookies from 'js-cookie';\n\nexport const AppContext = createContext({\n isMetric: true,\n});\n\nexport const StateWrapper = ({ children }) => {\n const domain = 'https://' + window.location.hostname;\n const [email, setEmail] = useLocalStorage('kfcc_email', '');\n const { isToggled, setToggle, toggle } = useToggle(true);\n const env = process.env.NODE_ENV;\n const isLocal = window.location.hostname.includes('local');\n const isDevEnv = (env === 'development' || isLocal);\n let geoLocationString = '';\n if (isDevEnv) {\n geoLocationString = (JSON.stringify({\"country\":\"Australia\",\"country_code\":\"AU\"}));\n } else {\n geoLocationString = Cookies.get('geoConfig');\n }\n const geoLocation = JSON.parse(JSON.parse(JSON.stringify(geoLocationString)));\n const {\n settings_global,\n header,\n signup_section,\n calculator_section,\n margin_section,\n summary_section,\n error_section,\n } = LexiconData({isDevEnv});\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAppState = () => useContext(AppContext);\n","import React from 'react';\n\nconst Icons = {};\n\nIcons.bar = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nIcons.cafe = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nIcons.hotel = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nIcons.other = (\n \n \n \n \n \n \n \n \n \n \n);\n\nIcons.restaurant = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nIcons.foodRetail = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nIcons.foodTruck = (\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\nIcons.quickService = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\nIcons.fineDining = (\n \n \n \n \n);\nIcons.bakery = (\n \n \n \n \n);\nexport default Icons;\n","import React from 'react';\nimport Icons from '../icons/icons';\nimport _ from 'lodash';\nimport { useAppState } from '../state/useAppState';\n\nconst BusinessTypeCard = ({ businessType, handleBusinessType, businessTypeReq }) => {\n const { signupData, errorData } = useAppState();\n return (\n
\n {signupData && signupData.business_type_label && (\n
\n {signupData && signupData.business_type_label}\n {businessTypeReq && (\n
\n {errorData && errorData.businessTypeReq}\n
\n )}\n
\n )}\n
\n {signupData &&\n signupData.business_type_select\n .filter(type => type.business_type.length !== 0)\n .map((type, index) => {\n const { business_type, label } = type;\n const isChecked =\n businessType === business_type ? 'checked' : undefined;\n return (\n \n );\n })}\n
\n
\n );\n};\nexport default BusinessTypeCard;\n","import React from 'react';\nimport { useAppState } from '../state/useAppState';\n\nconst Email = ({ email, register, handleEmailChange, handleEmailBlur, errors }) => {\n const { signupData, errorData } = useAppState();\n const validateEmailDomain = async (value) => {\n try {\n // https://developers.google.com/speed/public-dns/docs/doh/json\n const domain = value.split('@')[1];\n const response = await fetch(\n `https://dns.google/resolve?name=${domain}&type=mx`\n );\n const json = await response.json();\n const { Status } = json;\n return Status === 0;\n } catch (e) {\n console.log('error', e)\n }\n }\n return (\n
\n {signupData && signupData.email_input_label && (\n
\n {signupData && signupData.email_input_label}\n {errors.email && errors.email.message && (\n
{errors.email.message}
\n )}\n
\n )}\n {\n const valid = await validateEmailDomain(value)\n const regex = /^[a-zA-Z0-9!#$%&’*+/=?^{|}~\\\\\\-_`]+(?:\\.[a-zA-Z0-9!#$%&’*+/=?^{|}~\\\\\\-_`]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/\n return ((valid && value.match(regex))|| errorData.emailReq);\n }\n })}\n onChange={handleEmailChange}\n onBlur={handleEmailBlur}\n />\n
\n );\n};\nexport default Email;\n","import React, { Fragment } from 'react';\nimport { Helmet } from 'react-helmet';\n\nconst ErrorPageApi = () => {\n const refreshPage = () => {\n window.location.reload();\n };\n return (\n \n \n Error Page (API) | Food Cost Calculator | Lightspeed\n \n \n
\n
\n
\n
\n
\n

Currently unavailable!

\n

\n The calculator is currently unavailable,\n please try again shortly.\n

\n

\n \n Try again\n \n

\n
\n
\n
\n
\n
\n
\n );\n};\nexport default ErrorPageApi;\n","import React, { useState } from 'react';\nimport ErrorApi from '../pages/ErrorApi'\nconst Loading = () => {\n const [error, setError] = useState(null);\n setTimeout(function () {\n setError(true);\n }, 5000);\n return (\n <>\n {!error ? (\n
\n \n \n \n
\n ) : (\n \n )}\n \n );\n}\nexport default Loading;\n","import { useEffect } from 'react';\nimport { useAppState } from '../state/useAppState';\n\nexport const MetricToggle = ({\n name = 'default',\n toggleLabel = 'Enable Metric system',\n heading = null,\n}) => {\n const { isMetric, setMetric, geoLocation } = useAppState();\n\n useEffect(() => {\n if (geoLocation.country_code === 'US') {\n setMetric(false);\n }\n }, [geoLocation, setMetric]);\n\n return (\n
\n {heading &&

{heading}

}\n \n \n
\n \n );\n};","import React from 'react';\n\nconst GeneralOptIn = ({\n label,\n name = 'general_opt_in',\n generalOptIn = 0,\n disabled = null,\n className = 'ls-checkbox-wrapper',\n handleOptinValue = generalOptIn\n}) => {\n return (\n
\n \n \n {label}\n \n
\n );\n};\n\nexport default GeneralOptIn;\n","import React, { Fragment, useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport PropTypes from 'prop-types';\nimport { useForm } from 'react-hook-form';\nimport TagManager from 'react-gtm-module';\nimport BusinessTypeCard from '../components/BusinessTypeCards';\nimport Email from '../components/Email';\nimport { setDataLayerLocation } from '../hooks/setDataLayerLocation';\nimport Loading from '../components/Loading';\nimport { MetricToggle } from '../components/MetricToggle';\nimport { useAppState } from '../state/useAppState';\nimport GeneralOptIn from \"../components/GeneralOptIn\";\n\nconst Signin = ({\n handleBusinessType,\n handleEmailChange,\n handleEmailBlur,\n businessType,\n email,\n generalOptIn,\n updateGeneralOptInValue,\n utmCampaign,\n utmSource,\n utmMedium,\n utmContent,\n utmTerm,\n getHsCookie,\n businessTypeReq,\n setBusinessTypeReq,\n isDevEnv\n}) => {\n const { globalData, signupData, geoLocation} = useAppState();\n const history = useHistory();\n const [requestIp, setRequestIp] = useState(null);\n const { register, handleSubmit, errors } = useForm();\n const [submittingForm, setSubmittingForm] = useState(false);\n const page_source = window.location.origin + window.location.pathname;\n const website = window.location.hostname;\n const GEO_SERVICE_URL = 'https://ssl.geoplugin.net/json.gp?k=282815c899cf31e7';\n const LEAD_SERVICE_ENDPOINT = 'https://leadservice.lightspeedhq.com/ls-tools';\n\n const trackFormWithAction = eventAction => {\n const isNonInteraction = !(eventAction === 'submit'); // only false on 'submit' action\n TagManager.dataLayer({\n dataLayer: {\n event: 'GAEvent',\n eventAction: eventAction,\n eventLabel: 'restaurant|resources_tool_calculator|tofu',\n eventCategory: 'form',\n nonInteraction: isNonInteraction,\n },\n });\n };\n const toggleLabel = signupData && signupData.toggle_label;\n\n useEffect(() => {\n const fetchState = () =>\n fetch(GEO_SERVICE_URL)\n .then(function(response) {\n return response.json();\n })\n .then(function(data) {\n setRequestIp(data.geoplugin_request);\n })\n .catch(error => {\n console.error('Error:', error);\n });\n fetchState();\n\n setDataLayerLocation();\n trackFormWithAction('in-page');\n }, [GEO_SERVICE_URL]);\n\n const headers = {\n 'Content-Type': 'application/json',\n 'Client-Secret': 'WDFWeDh3N0h6OVVDU0I3LXUsSHhfQmNScUFBWUlWZ3g=',\n 'Authorization':\n 'Bearer 03PcBIrK2jOwDPKGiotriDqoRoUKiQA67fBDjlEXLpeJqChpawo/SQX/nlw=',\n };\n\n const userData = JSON.stringify({\n business_type: businessType,\n campaign_content: utmContent ?? ' ',\n campaign_medium: utmMedium ?? ' ',\n campaign_name: utmCampaign ?? ' ',\n campaign_source: utmSource ?? ' ',\n campaign_term: utmTerm ?? ' ',\n email: email,\n general_opt_in: generalOptIn,\n form_detailed: 'Food Cost Calculator',\n form_name: 'Resources Tool',\n page_source: page_source,\n stage: 'tofu',\n product: 'POSIOS',\n campaign_id: '7090',\n form_id: '43ea561a-8efc-43e6-ae28-08fe4f84444d',\n website: website,\n ip: requestIp,\n hubspotutk: getHsCookie,\n country_code: geoLocation.country_code,\n country: geoLocation.country,\n });\n\n const requestOptions = {\n method: 'POST',\n headers: headers,\n body: userData,\n redirect: 'follow',\n };\n\n const onSubmit = () => {\n if (businessType === '') {\n setBusinessTypeReq(true);\n } else {\n setSubmittingForm(true);\n fetch(LEAD_SERVICE_ENDPOINT, requestOptions)\n .then(response => response.text())\n .then(result => {\n setSubmittingForm(false);\n console.log('Success:', result);\n trackFormWithAction('success');\n return history.push('/food-cost-calculator');\n })\n .catch(error => {\n console.error('Error:', error);\n trackFormWithAction('error');\n });\n }\n };\n return (\n \n \n {globalData && globalData.seo_title}\n \n \n
\n
\n
\n {!signupData && }\n
\n {signupData && signupData.title && (\n

{signupData && signupData.title}

\n )}\n {signupData && signupData.heading && (\n

{signupData && signupData.heading}

\n )}\n {signupData && (\n <>\n
\n \n\n \n {(geoLocation.country_code === 'DE' ||\n geoLocation.country_code === 'CA' || isDevEnv)\n && (\n \n )}\n\n \n
\n \n {submittingForm\n ? signupData.submitting_label\n : signupData &&\n signupData.submit_button_label}\n \n
\n \n \n )}\n
\n
\n
\n
\n
\n );\n};\nSignin.propTypes = {\n email: PropTypes.string.isRequired,\n businessType: PropTypes.string.isRequired,\n};\nexport default Signin;\n","import React, { useEffect, useState, useReducer } from 'react';\nimport NumberFormat from 'react-number-format';\nimport Repeatable from 'react-repeatable';\nimport PropTypes from 'prop-types';\nimport { useAppState } from '../../state/useAppState';\n\nconst Margin = ({ totalCost }) => {\n const { globalData, marginData } = useAppState();\n\n const currencySymbol = globalData && globalData.currency_symbol;\n\n const [marginPercent, setMarginPercent] = useState(0);\n const [markUpAmount, setMarkUpAmount] = useState(0);\n const initialState = {\n cost: totalCost,\n markUp: markUpAmount,\n percent: marginPercent,\n };\n function reducer(state, action) {\n switch (action.type) {\n case 'addPercent':\n setMarginPercent(state.percent);\n return {\n percent: state.percent + action.value,\n markUp: ((state.percent + action.value) / 100) * initialState.cost,\n };\n case 'minusPercent':\n setMarginPercent(state.percent);\n return {\n percent: state.percent - action.value,\n markUp: ((state.percent - action.value) / 100) * initialState.cost,\n };\n case 'addMarkUp':\n setMarkUpAmount(state.markUp);\n return {\n markUp: state.markUp + action.value,\n percent: ((state.markUp + action.value) / initialState.cost) * 100,\n };\n case 'minusMarkUp':\n setMarkUpAmount(state.markUp);\n return {\n markUp: state.markUp - action.value,\n percent: ((state.markUp - action.value) / initialState.cost) * 100,\n };\n case 'addPrice':\n return {\n markUp: state.markUp + action.value,\n percent: ((state.markUp + action.value) / initialState.cost) * 100,\n };\n case 'minusPrice':\n return {\n markUp: state.markUp - action.value,\n percent: ((state.markUp - action.value) / initialState.cost) * 100,\n };\n default:\n throw new Error();\n }\n }\n\n const [state, dispatch] = useReducer(reducer, initialState);\n useEffect(() => {\n setMarkUpAmount((markUpAmount / totalCost) * 100);\n }, [totalCost, markUpAmount]);\n\n return (\n
\n
\n

\n You still have some empty fields\n

\n
\n

{marginData && marginData.heading}

\n \n
\n (\n
\n {value}\n
\n )}\n />\n
\n \n
\n dispatch({ type: 'minusPercent', value: 0.01 })}\n onHold={() => dispatch({ type: 'minusPercent', value: 0.04 })}\n >\n \n \n \n \n \n (\n \n {value}\n
\n )}\n />\n dispatch({ type: 'addPercent', value: 0.01 })}\n onHold={() => dispatch({ type: 'addPercent', value: 0.04 })}\n >\n \n \n \n \n \n
\n \n
\n dispatch({ type: 'minusMarkUp', value: 0.01 })}\n onHold={() => dispatch({ type: 'minusMarkUp', value: 0.04 })}\n >\n \n \n \n \n \n (\n \n {value}\n
\n )}\n />\n dispatch({ type: 'addMarkUp', value: 0.01 })}\n onHold={() => dispatch({ type: 'addMarkUp', value: 0.04 })}\n >\n \n \n \n \n \n \n \n
\n dispatch({ type: 'minusPrice', value: 0.01 })}\n onHold={() => dispatch({ type: 'minusPrice', value: 0.04 })}\n >\n \n \n \n \n \n (\n
\n {value}\n
\n )}\n />\n dispatch({ type: 'addPrice', value: 0.01 })}\n onHold={() => dispatch({ type: 'addPrice', value: 0.04 })}\n >\n \n \n \n \n \n
\n \n );\n};\nMargin.propTypes = {\n totalCost: PropTypes.number.isRequired,\n};\nexport default Margin;\n","import React from 'react';\nimport { HorizontalBar } from 'react-chartjs-2';\nimport 'chartjs-plugin-labels';\nimport { useAppState } from '../../state/useAppState';\n\nconst SummaryChart = ({ ingredientDetails }) => {\n const { summaryData } = useAppState();\n let chartLabel = ingredientDetails.map(\n ingredientDetail => ingredientDetail.ingredientName\n );\n let chartUsedCost = ingredientDetails.map(ingredientDetail =>\n ingredientDetail.usedCost.toFixed(2)\n );\n let ChartHeight = chartLabel.length * 70.4 + 54;\n\n let reportDataSource = {\n labels: chartLabel,\n datasets: [\n {\n label: summaryData && summaryData.table_bar_label,\n data: chartUsedCost,\n borderWidth: 0,\n barThickness: 40,\n backgroundColor: '#ed5153',\n },\n ],\n };\n let reportBarOptions = {\n responsive: true,\n maintainAspectRatio: false,\n layout: {\n padding: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n },\n },\n scales: {\n yAxes: [\n {\n display: false,\n scaleLabel: {\n display: false,\n labelString: 'INGREDIENTS',\n fontStyle: 'bold',\n },\n ticks: {\n reverse: false,\n fontStyle: 'bold',\n beginAtZero: true,\n },\n gridLines: {\n offset: true,\n display: true,\n color: '#ddd',\n offsetGridLines: true,\n },\n },\n ],\n xAxes: [\n {\n display: true,\n scaleLabel: {\n display: true,\n labelString: summaryData && summaryData.table_label,\n fontStyle: 'bold',\n },\n ticks: {\n beginAtZero: true,\n callback: function(value, index, values) {\n return value;\n },\n },\n gridLines: {\n offset: false,\n offsetGridLines: true,\n display: true,\n color: '#ddd',\n },\n },\n ],\n },\n elements: {\n line: {\n fill: true,\n tension: 0,\n borderWidth: 2,\n },\n point: {\n borderWidth: 2,\n radius: 2,\n hitRadius: 12,\n hoverRadius: 12,\n },\n },\n legend: {\n position: 'top',\n display: false,\n labels: {\n usePointStyle: true,\n padding: 24,\n fontSize: 13,\n fontStyle: 'bold',\n },\n },\n };\n\n return (\n
\n \n \n
\n \n );\n};\nSummaryChart.defaultProps = {};\nexport default SummaryChart;\n","import React from 'react';\nimport SummaryChart from './SummaryChart';\nimport PropTypes from 'prop-types';\nimport NumberFormat from 'react-number-format';\nimport { useAppState } from '../../state/useAppState';\n\nconst Summary = ({ ingredientDetails }) => {\n const { globalData, summaryData } = useAppState();\n const sortedIngred = [...ingredientDetails];\n const currencySymbol = globalData && globalData.currency_symbol;\n sortedIngred.sort((a, b) => parseFloat(b.usedCost) - parseFloat(a.usedCost));\n return (\n
\n

\n {summaryData && summaryData.title}\n

\n

\n {summaryData && summaryData.heading}\n

\n
\n
\n \n {sortedIngred.map((ingredientDetail, index) => {\n const { ingredientName, usedCost } = ingredientDetail;\n return (\n \n {ingredientName}\n (\n
\n {value ? value : currencySymbol + '0.00'}\n
\n )}\n />\n \n );\n })}\n \n
\n
\n \n
\n
\n
\n );\n};\nSummary.propTypes = {\n email: PropTypes.string.isRequired,\n businessType: PropTypes.string.isRequired,\n ingredientDetails: PropTypes.array.isRequired,\n};\nexport default Summary;\n","import React from 'react';\n\nconst Input = ({\n prefix = '$',\n name = 'amount',\n type = 'number',\n placeholder = 'Amount',\n value = 'amount',\n suffix = 'Amount',\n hotjar = true,\n onChange,\n}) => {\n return (\n
\n {prefix}\n \n {suffix}\n
\n );\n};\n\nexport default Input;\n","import React from 'react';\n\nconst RadioButton = ({\n label = 'unit',\n name = 'unit',\n value = 'unit',\n disabled = null,\n className = 'ls-radio-wrapper',\n}) => {\n return (\n \n \n {label}\n \n );\n};\n\nexport default RadioButton;\n","import React from 'react';\nimport RadioButton from '../RadioButton';\n\nexport const UnitsMetric = ({\n unit,\n gram,\n kilo,\n mil,\n litre,\n unitPurchased,\n handleChange,\n index,\n}) => {\n return (\n
\n handleChange(index, event)}\n className=\"unitPurchased radio-input-group\"\n >\n \n \n \n \n \n
\n \n );\n};\n\nexport const UnitsMetricUsed = ({\n unit,\n gram,\n kilo,\n mil,\n litre,\n unitPurchased,\n unitUsed,\n handleChange,\n index,\n}) => {\n return (\n
\n handleChange(index, event)}\n className=\"unitPurchased radio-input-group\"\n >\n \n \n \n \n \n
\n \n );\n};\n","import React from 'react';\nimport RadioButton from '../RadioButton';\n\nexport const UnitsImperial = ({\n unit,\n oz,\n pound,\n floz,\n gallon,\n unitPurchased,\n handleChange,\n index,\n}) => {\n return (\n
\n handleChange(index, event)}\n className=\"unitPurchased radio-input-group\"\n >\n \n \n \n \n \n
\n \n );\n};\n\nexport const UnitsImperialUsed = ({\n unit,\n oz,\n pound,\n floz,\n gallon,\n unitPurchased,\n handleChange,\n unitUsed,\n index,\n}) => {\n return (\n
\n handleChange(index, event)}\n className=\"unitPurchased radio-input-group\"\n >\n \n \n \n \n \n
\n \n );\n};\n","import React, { Fragment, useEffect } from 'react';\nimport shortid from 'shortid';\nimport { Helmet } from 'react-helmet';\nimport NumberFormat from 'react-number-format';\nimport Margin from '../components/calc/Margin';\nimport Summary from '../components/calc/Summary';\nimport Input from '../components/calc/Input';\nimport PropTypes from 'prop-types';\nimport { useLocalStorage } from '../hooks/useLocalStorage';\nimport TagManager from 'react-gtm-module';\nimport { setDataLayerLocation } from '../hooks/setDataLayerLocation';\nimport { UnitsMetric, UnitsMetricUsed } from '../components/calc/UnitsMetric';\nimport { UnitsImperial, UnitsImperialUsed } from '../components/calc/UnitsImperial';\nimport { useAppState } from '../state/useAppState';\n\nconst FoodCalc = ({ email, businessType }) => {\n const { globalData, calculatorData, isMetric } = useAppState();\n const [totalCost, setTotalCost] = useLocalStorage('kfcc_totalCost', 1.66);\n const currencySymbol = globalData && globalData.currency_symbol;\n const units = globalData && globalData.units;\n const weightImperial = globalData && globalData.units_imperial;\n const {\n unit = 'unit',\n gram = 'gram',\n kilo = 'kilo',\n mil = 'mil',\n litre = 'litre',\n } = units;\n const {\n unit_imperial = 'unit_imperial',\n oz = 'oz',\n pound = 'pound',\n fl_oz = 'fl oz',\n gallon = 'gallon',\n } = weightImperial;\n\n const randomIngredList = [\n calculatorData &&\n calculatorData.ingredient.name_placeholder.map(placeholder => {\n const { label } = placeholder;\n return label;\n }),\n ];\n function getRandomInt(max) {\n return Math.floor(Math.random() * max);\n }\n let randomIngred =\n randomIngredList[Math.floor(Math.random() * randomIngredList.length)];\n let ingredPlaceholder = randomIngred[getRandomInt(5)];\n\n const [ingredientDetails, setIngredientDetails] = useLocalStorage(\n 'kfcc_ingredientDetails',\n [\n {\n ingredId: shortid.generate(),\n ingredientName: randomIngred[getRandomInt(1)],\n purchasePrice: '24.95',\n quantityPurchased: '15',\n unitPurchased: unit,\n quantityUsed: '1',\n unitUsed: unit,\n usedCost: null,\n ingredPlaceholder: randomIngred[getRandomInt(1)],\n },\n {\n ingredId: shortid.generate(),\n ingredientName: null,\n purchasePrice: '',\n quantityPurchased: '',\n unitPurchased: unit,\n quantityUsed: '',\n unitUsed: unit,\n usedCost: null,\n ingredPlaceholder: randomIngred[getRandomInt(3)],\n },\n {\n ingredId: shortid.generate(),\n ingredientName: null,\n purchasePrice: '',\n quantityPurchased: '',\n unitPurchased: unit,\n quantityUsed: '',\n unitUsed: unit,\n usedCost: null,\n ingredPlaceholder: randomIngred[getRandomInt(5)],\n },\n ]\n );\n function calculator(ingred) {\n const {\n unitPurchased,\n unitUsed,\n purchasePrice,\n quantityPurchased,\n quantityUsed,\n } = ingred;\n let unitPrice;\n if (\n (unitPurchased === litre && unitUsed === mil) ||\n (unitPurchased === kilo && unitUsed === gram)\n ) {\n unitPrice = purchasePrice / quantityPurchased / 1000;\n } else if (unitPurchased === gallon && unitUsed === fl_oz) {\n unitPrice = purchasePrice / quantityPurchased / 128;\n } else if (unitPurchased === pound && unitUsed === oz) {\n unitPrice = purchasePrice / quantityPurchased / 16;\n } else {\n unitPrice = purchasePrice / quantityPurchased;\n }\n let calcUsedCost = unitPrice * quantityUsed;\n\n isNaN(calcUsedCost) ? (ingred.usedCost = 0) : (ingred.usedCost = calcUsedCost);\n\n return ingred.usedCost;\n }\n const handleChange = (index, event) => {\n event.preventDefault();\n const values = [...ingredientDetails];\n const { name, value } = event.target;\n values[index][name] = value;\n setIngredientDetails(values);\n };\n useEffect(() => {\n window.scrollTo(0, 0);\n setDataLayerLocation();\n }, []);\n\n const handleAddIngredient = event => {\n event.preventDefault();\n\n const values = [...ingredientDetails];\n values.push({\n ingredId: shortid.generate(),\n ingredientName: null,\n purchasePrice: '',\n quantityPurchased: '',\n unitPurchased: unit,\n quantityUsed: '',\n unitUsed: unit,\n usedCost: null,\n ingredPlaceholder: ingredPlaceholder,\n });\n setIngredientDetails(values);\n TagManager.dataLayer({\n dataLayer: {\n event: 'GAEvent',\n eventAction: 'food-cost-calculator',\n eventLabel: 'add-ingredient',\n eventCategory: 'tools',\n },\n });\n };\n const handleRemoveIngredient = (item, event) => {\n event.preventDefault();\n const values = ingredientDetails.filter(i => i.ingredId !== item);\n setIngredientDetails(values);\n TagManager.dataLayer({\n dataLayer: {\n event: 'GAEvent',\n eventAction: 'food-cost-calculator',\n eventLabel: 'delete-ingredient',\n eventCategory: 'tools',\n },\n });\n };\n\n useEffect(() => {\n window.scrollTo(0, 0);\n setDataLayerLocation();\n }, []);\n\n const showIngredientList = ingredientDetails.map((ingred, index) => {\n const {\n ingredientName,\n unitPurchased,\n unitUsed,\n purchasePrice,\n quantityPurchased,\n quantityUsed,\n ingredId,\n ingredPlaceholder,\n } = ingred;\n let unitPrice;\n\n if (\n (unitPurchased === litre && unitUsed === mil) ||\n (unitPurchased === kilo && unitUsed === gram)\n ) {\n unitPrice = purchasePrice / quantityPurchased / 1000;\n } else if (unitPurchased === gallon && unitUsed === fl_oz) {\n unitPrice = purchasePrice / quantityPurchased / 128;\n } else if (unitPurchased === pound && unitUsed === oz) {\n unitPrice = purchasePrice / quantityPurchased / 16;\n } else {\n unitPrice = purchasePrice / quantityPurchased;\n }\n let calcUsedCost = unitPrice * quantityUsed;\n\n isNaN(calcUsedCost) ? (ingred.usedCost = 0) : (ingred.usedCost = calcUsedCost);\n\n return (\n \n \n
\n handleChange(index, event)}\n />\n
\n \n \n
\n handleChange(index, event)}\n />\n
\n \n \n
\n
\n handleChange(index, event)}\n />\n
\n {isMetric ? (\n \n ) : (\n \n )}\n
\n \n \n
\n
\n handleChange(index, event)}\n />\n
\n {isMetric ? (\n \n ) : (\n \n )}\n
\n \n \n
\n handleChange(index, event)}\n renderText={value => (\n
\n {value ? value : currencySymbol + ' 0'}\n
\n )}\n />\n \n {calculatorData && calculatorData.ingredient.cost_label}\n \n
\n \n \n
\n
\n handleRemoveIngredient(ingredId, event)}\n >\n \n \n \n \n {calculatorData &&\n calculatorData.ingredient.remove_label}\n \n \n
\n
\n \n \n );\n });\n useEffect(() => {\n let calcUsedCost = ingredientDetails.map(ingred => {\n return calculator(ingred);\n });\n let calcTotalCost = 0;\n for (let i = 0; i < calcUsedCost.length; i++) {\n calcTotalCost += calcUsedCost[i];\n }\n setTotalCost(calcTotalCost);\n });\n\n return (\n \n \n {globalData && globalData.seo_title}\n \n \n
\n
\n
\n
\n

{calculatorData && calculatorData.title}

\n

\n {calculatorData && calculatorData.heading}\n

\n
\n \n \n \n \n \n \n \n {calculatorData &&\n calculatorData.ingredient\n .unit_used_label}\n \n \n \n \n \n {showIngredientList}\n
\n {calculatorData &&\n calculatorData.ingredient.name_label}\n \n {calculatorData &&\n calculatorData.ingredient.price_label}\n \n {calculatorData &&\n calculatorData.ingredient\n .unit_purchased_label}\n \n {calculatorData &&\n calculatorData.ingredient.cost_label}\n  
\n
\n
\n
\n \n \n \n \n {calculatorData &&\n calculatorData.ingredient.add_label}\n \n
\n
\n {totalCost !== 0 && (\n \n )}\n
\n
\n \n
\n
\n
\n
\n
\n );\n};\n\nFoodCalc.propTypes = {\n email: PropTypes.string.isRequired,\n businessType: PropTypes.string.isRequired,\n};\nexport default FoodCalc;\n","// This file is a copy of the same file from mkt-hq-tools, because the Food Cost Calculator doesn't support relative imports. Please make sure to keep both files in sync.\nimport React from 'react';\n\ninterface LSLogoProps {\n mode: 'light' | 'dark';\n customModeClass?: string; // this is for a color class that will override the mode color\n}\n\nconst colorMap: {\n [key: string]: {\n [key: string]: string;\n };\n} = {\n dark: {\n fill: 'tw-fill-wg96',\n },\n light: {\n fill: 'tw-fill-charcoal',\n },\n};\n\nconst LSLogo = (props: LSLogoProps) => {\n const { mode, customModeClass } = props;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default LSLogo;","import React from 'react';\nimport { useAppState } from '../state/useAppState';\nimport LSLogo from './LSLogo';\n\nconst Header = () => {\n const { headerData, domain } = useAppState();\n\n return (\n
\n
\n
\n
\n \n \n \n
\n
\n {headerData &&\n (headerData.cta_button_primary.enable ||\n headerData.cta_button_secondary.enable) && (\n
\n
\n {headerData.cta_button_primary.enable &&\n headerData.cta_button_primary.cta_text &&\n headerData.cta_button_primary.cta_url && (\n \n {headerData.cta_button_primary.cta_text}\n \n )}\n {headerData.cta_button_secondary.enable &&\n headerData.cta_button_secondary.cta_text &&\n headerData.cta_button_secondary.cta_url && (\n \n {headerData.cta_button_secondary.cta_text}\n \n )}\n
\n
\n )}\n
\n
\n );\n};\nexport default Header;\n","import React from 'react';\n\n\nconst SocialLinks = ({network}) => {\n const networksObject = {\n facebook: {\n href: 'https://www.facebook.com/LightspeedHQ/',\n ariaLabel: 'Lightspeed Facebook',\n trackingName: 'facebook',\n iconSVG: \n ,\n },\n twitter: {\n href: 'https://twitter.com/LightspeedHQ',\n ariaLabel: 'Lightspeed Twitter',\n trackingName: 'twitter',\n iconSVG: ,\n },\n linkedin: {\n href: 'https://www.linkedin.com/company/1557218?trk=tyah&trkInfo=clickedVertical%3Acompany%2CclickedEntityId%3A1557218%2Cidx%3A2-2-5%2CtarId%3A1464184739871%2Ctas%3Alightspeed',\n ariaLabel: 'Lightspeed LinkedIn',\n trackingName: 'linkedin',\n iconSVG: ,\n },\n youtube: {\n href: 'https://www.youtube.com/user/lightspeedretail',\n ariaLabel: 'Lightspeed YouTube',\n trackingName: 'youtube',\n iconSVG: \n \n },\n instagram: {\n href: 'https://www.instagram.com/lightspeedhq/',\n ariaLabel: 'Lightspeed Instagram',\n trackingName: 'instagram',\n iconSVG: \n \n \n },\n }\n\n return (\n
  • \n \n {networksObject[network].iconSVG}\n \n
  • \n\n )\n}\n\n\nexport default SocialLinks;","import React from 'react';\nimport { useAppState } from '../state/useAppState';\nimport SocialLinks from './socialLinks';\nimport LSLogo from './LSLogo';\n\nconst Footer = () => {\n const { domain } = useAppState;\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 Copyright © {new Date().getFullYear()} Lightspeed Pty\n Ltd | Food Cost Calculator\n

    \n
    \n
    \n
    \n
    \n
    \n );\n};\nexport default Footer;\n","import React, { Fragment } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Helmet } from 'react-helmet';\nimport { useAppState } from '../state/useAppState';\n\nconst ErrorPage = () => {\n const { errorData } = useAppState();\n return (\n \n \n Error Page | Food Cost Calculator | Lightspeed\n \n \n {errorData && (\n
    \n
    \n
    \n
    \n

    {errorData.heading}

    \n

    {errorData.subheading}

    \n

    \n \n {errorData.errorPageButton}\n \n

    \n
    \n
    \n
    \n
    \n )}\n
    \n );\n};\nexport default ErrorPage;\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\n\nconst Head = ({ canonicalUrl }) => {\n return (\n \n \n \n );\n};\n\nexport default Head;\n","import React, { useState } from 'react';\nimport { BrowserRouter as Router, Switch, Route, Redirect } from 'react-router-dom';\nimport Cookies from 'js-cookie';\nimport Signin from './pages/Signin';\nimport FoodCalc from './pages/CalcContainer';\nimport Header from './components/Header';\nimport Footer from './components/Footer';\nimport ErrorPage from './pages/ErrorPage';\nimport ErrorApi from './pages/ErrorApi';\nimport Loading from './components/Loading';\nimport TagManager from 'react-gtm-module';\nimport './App.scss';\nimport { useAppState } from './state/useAppState';\nimport Head from './components/Head';\nimport { getEndpoint } from './helpers/getEndpoint';\n\nconst App = () => {\n const { lexiconData, calculatorData, email, setEmail, isDevEnv} = useAppState();\n const url = window.location.href;\n const params = new URL(url).searchParams;\n const [utmCampaign, setUtmCampaign] = useState(null);\n const [utmSource, setUtmSource] = useState(null);\n const [utmMedium, setUtmMedium] = useState(null);\n const [utmContent, setUtmContent] = useState(null);\n const [utmTerm, setUtmTerm] = useState(null);\n const [businessType, setBusinessType] = useState('');\n const [businessTypeReq, setBusinessTypeReq] = useState(false);\n const [anonymizedEmail, setAnonymizedEmail] = useState('empty');\n const [hasEmailEventBeenSent, setHasEmailEventBeenSent] = useState(false);\n const [generalOptIn, setGeneralOptinValue] = useState('0');\n const getHsCookie = () => Cookies.get('hubspotutk');\n\n const handleBusinessType = e => {\n const businessType = e.target.value;\n setBusinessType(businessType);\n setBusinessTypeReq(false);\n TagManager.dataLayer({\n dataLayer:{\n event: 'web_event',\n event_action: 'form_success',\n form_name: 'resources_tool_calculator',\n product_type:'Restaurant',\n stage: 'tofu',\n business_type: businessType\n },\n })\n TagManager.dataLayer({\n dataLayer: {\n event: 'GAEvent',\n eventAction: `resto_business_type|${businessType}`,\n eventLabel: 'restaurant|resources_tool_calculator|tofu',\n eventCategory: 'field',\n },\n });\n };\n\n const handleOptin = e => {\n setGeneralOptinValue(e.target.checked ? \"1\" : \"0\")\n }\n\n const handleEmailChange = e => {\n setEmail(e.target.value);\n setAnonymizedEmail(e.target.value ? 'completed' : 'empty');\n params.get('utm_campaign') && setUtmCampaign(params.get('utm_campaign'));\n params.get('utm_source') && setUtmSource(params.get('utm_source'));\n params.get('utm_medium') && setUtmMedium(params.get('utm_medium'));\n params.get('utm_content') && setUtmContent(params.get('utm_content'));\n params.get('utm_term') && setUtmTerm(params.get('utm_term'));\n };\n\n const trackEmailEvent = () => {\n if (anonymizedEmail === 'completed') {\n setHasEmailEventBeenSent(true);\n }\n TagManager.dataLayer({\n dataLayer: {\n event: 'GAEvent',\n eventAction: `email|${anonymizedEmail}`,\n eventLabel: 'restaurant|resources_tool_calculator|tofu',\n eventCategory: 'field',\n },\n });\n };\n\n const handleEmailBlur = e => {\n trackEmailEvent();\n };\n\n return (\n
    \n \n
    \n
    \n
    \n {!lexiconData ? (\n \n ) : (\n \n \n \n \n \n \n \n \n \n {email === '' && }\n {!calculatorData ? (\n \n ) : (\n \n )}\n \n \n \n \n } />\n \n \n )}\n
    \n
    \n
    \n
    \n );\n};\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { HelmetProvider } from 'react-helmet-async';\nimport TagManager from 'react-gtm-module';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { StateWrapper } from './state/useAppState';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nconst tagManagerArgs = {\n gtmId: 'GTM-P7NVFF',\n dataLayer: {\n pageCategory: 'calculator',\n },\n};\nTagManager.initialize(tagManagerArgs);\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}