{"version":3,"sources":["components/topbar/TenantSelector.tsx","components/topbar/TopBar.tsx","theme.tsx","hooks/useQuery.ts","components/admin/compents/settings/components/ExportTypeSelector.tsx","components/admin/compents/settings/components/StoreSettingsFilter.tsx","components/admin/compents/settings/components/MatchingOperatorSelector.tsx","components/admin/compents/settings/components/PreviousPurchaseFilter.tsx","components/admin/compents/settings/components/NumberOfRecommendations.tsx","components/admin/compents/settings/components/FitFilter.tsx","components/admin/compents/settings/components/ImageFilter.tsx","components/admin/compents/settings/components/ShoeAvailability.tsx","components/admin/compents/settings/components/ShoeBrandFilterSettings.tsx","components/admin/compents/settings/components/RecommendationFilterSettings.tsx","components/admin/compents/settings/ExportSettings.tsx","components/loading/index.tsx","lib/constants.ts","components/admin/Admin.tsx","api/base.ts","components/signedOut/SignedOut.tsx","lib/queryClient.ts","components/app/App.tsx","reportWebVitals.ts","auth/Auth0ProviderWithHistory.tsx","index.tsx"],"names":["StyledMenu","withStyles","paper","border","props","Menu","elevation","getContentAnchorEl","anchorOrigin","vertical","horizontal","transformOrigin","TenantSelector","tenants","React","useState","anchorEl","setAnchorEl","history","useHistory","handleItemClick","useCallback","id","push","items","useMemo","map","t","MenuItem","dense","onClick","ListItemText","primary","name","Button","variant","color","disableElevation","event","currentTarget","endIcon","Boolean","keepMounted","open","onClose","useStyles","makeStyles","theme","createStyles","icon","marginRight","spacing","title","root","flexGrow","TopBar","classes","useAuth0","user","isAuthenticated","logout","className","AppBar","position","Toolbar","Typography","returnTo","window","location","origin","createMuiTheme","useTenant","q","URLSearchParams","useLocation","search","tenant","find","element","get","dataSourceOptions","label","value","ExportTypeSelector","onChange","FormControl","fullWidth","InputLabel","htmlFor","Select","target","o","FormHelperText","StoreSettingsFilter","Grid","container","item","xs","FormGroup","row","FormControlLabel","control","Checkbox","checked","store_info","filter_corporate_store","matchingOperatorOptions","MatchingOperatorSelector","scanOptions","PreviousPurchaseFilter","data","referenceSelector","onDataChange","onSelectorChange","categorySelector","selector","style","paddingTop","sm","Input","categories","matching_operator","component","shoe_features","shoe_images","NumberOfRecommendationsInput","TextField","helperText","v","parseInt","isNaN","fitOptions","FiltFilter","amount","definition","ImageFilter","ShoeAvailability","handleChange","from_store","from_online","ShoeBrandFilterSettings","Box","brand","e","disabled","RecommendationFilterSettings","exportType","fit_filter","change","available_shoe_images","available_shoes","shoe_brand_filter","category_filter","CategoryFilterSettings","ExportSettingsEditor","tc","alignItems","export_type","number_of_recommended_shoes_export","store","previous_purchase_reference","reference_shoe","recommendation_filters","Loading","display","justifyContent","CircularProgress","size","apiBaseUrl","marginTop","marginBottom","padding","textAlign","palette","text","secondary","actionButtom","textTransform","margin","width","alignRight","titleImage","fontSize","error","main","buttonProgress","top","left","marginLeft","AdminPage","enqueueSnackbar","useSnackbar","getAccessTokenSilently","queryClient","useQueryClient","key","useMutation","body","a","token","fetch","method","headers","Authorization","JSON","stringify","request","status","Error","json","onSuccess","setQueryData","onError","useUpdateConfiguration","mutate","isUpdating","isLoading","useQuery","enabled","refetchInterval","useGetConfiguration","isError","changes","setChanges","isDiff","setDiff","useEffect","Container","Paper","align","pt","pr","pl","pb","Avatar","src","image","transaction_supplier","success","SignedOutPage","DoneAllOutlined","QueryClient","defaultOptions","mutations","console","log","message","queries","retry","App","bottom","right","ThemeProvider","maxSnack","preventDuplicate","QueryClientProvider","client","CssBaseline","path","to","ProtectedRoute","children","args","withAuthenticationRequired","Fragment","onRedirecting","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","providerConfig","domain","clientId","redirectUri","audience","responseType","scope","Auth0ProviderWithHistory","onRedirectCallback","appState","pathname","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.5b7a7243.chunk.js","sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport Button from \"@material-ui/core/Button\";\nimport Menu, { MenuProps } from \"@material-ui/core/Menu\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\n\nimport ArrowRightIcon from \"@material-ui/icons/ArrowRight\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport { Tenant } from \"../../hooks/useQuery\";\nimport { useHistory } from \"react-router-dom\";\n\nconst StyledMenu = withStyles({\n paper: {\n border: \"1px solid #d3d4d5\",\n },\n})((props: MenuProps) => (\n \n));\n\nexport interface TenantSelectorProps {\n tenants: Tenant[];\n}\n\nexport const TenantSelector: React.FC = ({ tenants }) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n let history = useHistory();\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleItemClick = useCallback(\n (id: string) => {\n history.push(\"/admin?tenant=\" + id);\n },\n [history]\n );\n\n const items = useMemo(\n () =>\n tenants.map((t) => (\n handleItemClick(t.id)}>\n \n \n )),\n [tenants, handleItemClick]\n );\n\n return (\n
\n : }\n >\n Tenant\n \n \n {items}\n \n
\n );\n};\n","import { useAuth0 } from \"@auth0/auth0-react\";\nimport { AppBar, Button, Toolbar, Typography } from \"@material-ui/core\";\nimport { createStyles, makeStyles, Theme } from \"@material-ui/core/styles\";\nimport { TenantSelector } from \"./TenantSelector\";\n\nimport tenants from \"../../tenant-config.json\";\n\nimport MailIcon from \"@material-ui/icons/Mail\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n icon: {\n marginRight: theme.spacing(1),\n },\n title: {\n marginRight: theme.spacing(2),\n },\n name: {\n marginRight: theme.spacing(2),\n },\n root: {\n flexGrow: 1,\n },\n push: {\n flexGrow: 1,\n },\n })\n);\n\nexport const TopBar = () => {\n const classes = useStyles();\n const { user, isAuthenticated, logout } = useAuth0();\n return (\n
\n \n \n \n \n Volumental Promo\n \n {isAuthenticated && }\n
\n {isAuthenticated ? (\n <>\n {user?.name}\n \n logout({\n returnTo: window.location.origin + \"/signed-out\",\n })\n }\n >\n Logout\n \n \n ) : null}\n
\n
\n
\n );\n};\n","import { createMuiTheme } from \"@material-ui/core/styles\";\n\n// A custom theme for this app\nconst theme = createMuiTheme({});\n\nexport default theme;\n","import { useLocation } from \"react-router-dom\";\n\nimport tenants from \"../tenant-config.json\";\n\nexport interface Tenant {\n id: string;\n name: string;\n image: string;\n}\n\nexport const useQuery = () => new URLSearchParams(useLocation().search);\n\nexport const useTenant = (): Tenant | null => {\n const q = useQuery();\n\n const tenant = tenants.find((element) => {\n return element.id === q.get(\"tenant\");\n });\n\n if (tenant == null) {\n return null;\n }\n\n return tenant;\n};\n","import React from \"react\";\nimport {\n FormControl,\n FormHelperText,\n InputLabel,\n MenuItem,\n Select,\n} from \"@material-ui/core\";\nimport { ExportType } from \"../../../../../api/entities\";\n\nexport interface ExportTypeSelectorProps {\n value: ExportType;\n onChange: (event: ExportType) => void;\n}\n\nconst dataSourceOptions: { label: string; value: ExportType }[] = [\n { label: \"Purchase\", value: \"purchase\" },\n { label: \"Scan\", value: \"scan\" },\n { label: \"Purchase & Scan\", value: \"mix\" },\n];\n\n// Select from where the initial data should come from.\n// Valid options are:\n// Scan, only use users scan data to base recommendations on.\n// Purchase, use purchase history to select users.\n// Mix, use both scan data and purshace history.\nexport const ExportTypeSelector: React.FC = ({\n value,\n onChange,\n}) => {\n const handleChange = (event: React.ChangeEvent<{ value: unknown }>) => {\n onChange(event.target.value as ExportType);\n };\n\n return (\n \n Data source\n \n {dataSourceOptions.map((o) => (\n \n {o.label}\n \n ))}\n \n \n What data source should be used to select subjects from.\n \n \n );\n};\n","import React from \"react\";\nimport {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText,\n FormGroup,\n Grid,\n Typography,\n} from \"@material-ui/core\";\nimport { Store } from \"../../../../../api/entities\";\n\nexport interface StoreSettingsProps {\n value: Store;\n onChange: (value: Store) => void;\n}\n\n// Select from where the initial data should come from.\n// Valid options are:\n// Scan, only use users scan data to base recommendations on.\n// Purchase, use purchase history to select users.\n// Mix, use both scan data and purshace history.\nexport const StoreSettingsFilter: React.FC = ({\n value,\n onChange,\n}) => {\n const handleTagChange = (event: React.ChangeEvent) => {\n onChange({\n ...value,\n store_info: event.target.checked,\n });\n };\n\n const handleImageChange = (event: React.ChangeEvent) => {\n onChange({\n ...value,\n filter_corporate_store: !event.target.checked,\n });\n };\n\n return (\n \n \n Store information\n \n \n \n \n \n }\n label=\"Point of sale\"\n />\n \n }\n label=\"Corporate\"\n />\n \n Select which store information that should be included in the\n export.\n \n \n \n \n \n );\n};\n","import React from \"react\";\nimport { FormControl, InputLabel, MenuItem, Select } from \"@material-ui/core\";\n\nimport { MatchingOperator } from \"../../../../../api/entities\";\n\nconst matchingOperatorOptions: { label: string; value: MatchingOperator }[] = [\n { label: \"All\", value: \"ALL\" },\n { label: \"Any\", value: \"ANY\" },\n { label: \"Exact\", value: \"EXACT\" },\n];\n\nexport interface MatchingOperatorSelectorProps {\n value: MatchingOperator;\n onChange: (event: MatchingOperator) => void;\n}\n\nexport const MatchingOperatorSelector: React.FC =\n ({ value, onChange }) => {\n const handleChange = (event: React.ChangeEvent<{ value: unknown }>) => {\n onChange(event.target.value as MatchingOperator);\n };\n\n return (\n \n Matcher\n \n {matchingOperatorOptions.map((o) => (\n \n {o.label}\n \n ))}\n \n \n );\n };\n","import React, { useMemo } from \"react\";\n\nimport {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n Grid,\n Input,\n InputLabel,\n MenuItem,\n Select,\n Typography,\n} from \"@material-ui/core\";\nimport {\n PreviousPurchaseReference,\n ReferenceShoe,\n ReferenceShoeSelector,\n} from \"../../../../../api/entities\";\nimport { MatchingOperatorSelector } from \"./MatchingOperatorSelector\";\n\nconst scanOptions: { label: string; value: ReferenceShoeSelector }[] = [\n { label: \"Latest purchase\", value: \"latest\" },\n { label: \"Category\", value: \"category\" },\n];\n\nexport interface FiltFilterProps {\n data: PreviousPurchaseReference;\n referenceSelector: ReferenceShoe;\n onDataChange: (value: PreviousPurchaseReference) => void;\n onSelectorChange: (value: ReferenceShoe) => void;\n}\n\nexport const PreviousPurchaseFilter: React.FC = ({\n data,\n referenceSelector,\n onDataChange,\n onSelectorChange,\n}) => {\n const handleTagChange = (event: React.ChangeEvent) => {\n onDataChange({\n ...data,\n shoe_features: event.target.checked,\n });\n };\n\n const handleImageChange = (event: React.ChangeEvent) => {\n onDataChange({\n ...data,\n shoe_images: event.target.checked,\n });\n };\n\n let categorySelector = useMemo(() => {\n if (referenceSelector.selector === \"category\") {\n return (\n \n \n \n Categories\n {\n onSelectorChange({\n ...referenceSelector,\n categories: [event.target.value],\n });\n }}\n />\n \n Comma separated string of categories to be matched against a\n previous purchase.\n \n \n \n \n {\n onSelectorChange({\n ...referenceSelector,\n matching_operator: value,\n });\n }}\n />\n \n \n );\n }\n return null;\n }, [referenceSelector, onSelectorChange]);\n\n return (\n \n \n Previous purchase\n \n \n \n Reference shoe\n {\n onSelectorChange({\n ...referenceSelector,\n selector: event.target.value as ReferenceShoeSelector,\n });\n }}\n >\n {scanOptions.map((o) => (\n \n {o.label}\n \n ))}\n \n \n Decides how the reference shoe that can be used filter\n recommendations on will be selected.\n \n \n \n \n \n \n \n }\n label=\"Shoe features\"\n />\n \n }\n label=\"Image\"\n />\n \n \n Select which information about the reference shoe that should be\n included.\n \n \n \n {categorySelector}\n \n );\n};\n","import React from \"react\";\nimport { TextField } from \"@material-ui/core\";\n\nexport interface NumberOfRecommendationsInputProps {\n value: number;\n onChange: (event: number) => void;\n}\n\nexport const NumberOfRecommendationsInput: React.FC =\n ({ value, onChange }) => {\n const handleChange = (event: React.ChangeEvent) => {\n let v = parseInt(event.target.value, 10);\n if (isNaN(v)) {\n v = 0;\n }\n onChange(v);\n };\n\n return (\n \n );\n };\n","import React from \"react\";\nimport {\n FormControl,\n Grid,\n InputLabel,\n MenuItem,\n Select,\n TextField,\n Typography,\n} from \"@material-ui/core\";\nimport { FitDefinition, FitFilter } from \"../../../../../api/entities\";\n\nexport interface FiltFilterProps {\n value: FitFilter;\n onChange: (event: FitFilter) => void;\n}\n\nconst fitOptions: { label: string; value: FitDefinition }[] = [\n { label: \"Best\", value: \"best\" },\n { label: \"Good\", value: \"good_enough\" },\n];\n\nexport const FiltFilter: React.FC = ({ value, onChange }) => {\n const handleDefinitionChange = (\n event: React.ChangeEvent<{ name?: string | undefined; value: unknown }>\n ) => {\n onChange({\n ...value,\n definition: event.target.value as FitDefinition,\n });\n };\n\n const handleAmountChange = (event: React.ChangeEvent) => {\n let v = parseInt(event.target.value, 10);\n if (isNaN(v)) {\n v = 0;\n }\n onChange({\n ...value,\n amount: v,\n });\n };\n\n return (\n \n \n \n \n \n \n Fit definition\n \n {fitOptions.map((o) => (\n \n {o.label}\n \n ))}\n \n \n \n \n \n Minimum amount of recommended shoes that have the desired fit.\n \n \n \n );\n};\n","import React from \"react\";\nimport { TextField } from \"@material-ui/core\";\n\nexport interface FiltFilterProps {\n value: number;\n onChange: (event: number) => void;\n}\n\nexport const ImageFilter: React.FC = ({ value, onChange }) => {\n const handleChange = (event: React.ChangeEvent) => {\n let v = parseInt(event.target.value, 10);\n if (isNaN(v)) {\n v = 0;\n }\n onChange(v);\n };\n\n return (\n \n );\n};\n","import React from \"react\";\nimport { Grid, TextField, Typography } from \"@material-ui/core\";\nimport { AvailableShoes } from \"../../../../../api/entities\";\n\nexport interface ShoeAvailabilityProps {\n value: AvailableShoes;\n onChange: (event: AvailableShoes) => void;\n}\n\nexport const ShoeAvailability: React.FC = ({\n value,\n onChange,\n}) => {\n const handleChange = (event: React.ChangeEvent) => {\n let v = parseInt(event.target.value, 10);\n if (isNaN(v)) {\n v = 0;\n }\n if (\n event.target.name === \"from_online\" ||\n event.target.name === \"from_store\"\n )\n onChange({\n ...value,\n [event.target.name]: v,\n });\n };\n\n return (\n \n \n \n Shoe availability\n \n \n Only shoes avaible from the point of sale or the online inventory will\n be recommended.\n \n \n \n \n \n \n \n \n \n );\n};\n","import React from \"react\";\nimport { Box, Grid, TextField, Typography } from \"@material-ui/core\";\nimport { ShoeBrandFilter } from \"../../../../../api/entities\";\n\ninterface ShoeBrandFilterSettingsProps {\n value: ShoeBrandFilter;\n onChange: (event: ShoeBrandFilter) => void;\n}\n\nexport const ShoeBrandFilterSettings: React.FC =\n ({ value, onChange }) => (\n \n \n Shoe brand and/or style filter.\n \n \n Filter shoes to only recommend the provided brand and/or style.\n \n \n \n {\n onChange({ ...value, brand: e.target.value });\n }}\n />\n \n \n {\n onChange({ ...value, style: e.target.value });\n }}\n />\n \n \n \n );\n","import React from \"react\";\nimport {\n FormControl,\n Grid,\n MenuItem,\n Select,\n TextField,\n Typography,\n} from \"@material-ui/core\";\nimport {\n ExportType,\n RecommendationFilters,\n CategoryFilter,\n CategoryFilterSelector,\n} from \"../../../../../api/entities\";\nimport { FiltFilter } from \"./FitFilter\";\nimport { ImageFilter } from \"./ImageFilter\";\nimport { ShoeAvailability } from \"./ShoeAvailability\";\nimport { MatchingOperatorSelector } from \"./MatchingOperatorSelector\";\nimport { ShoeBrandFilterSettings } from \"./ShoeBrandFilterSettings\";\n\nexport interface RecommendationFilterSettingsProps {\n exportType: ExportType;\n value: RecommendationFilters;\n onChange: (event: RecommendationFilters) => void;\n}\n\nexport const RecommendationFilterSettings: React.FC =\n ({ exportType, value, onChange }) => {\n return (\n \n \n Recommendation filters\n \n \n {\n onChange({ ...value, fit_filter: change });\n }}\n >\n \n \n {\n onChange({ ...value, available_shoe_images: change });\n }}\n />\n \n \n {\n onChange({ ...value, available_shoes: change });\n }}\n />\n \n \n {\n onChange({ ...value, shoe_brand_filter: change });\n }}\n />\n \n \n {\n onChange({ ...value, category_filter: change });\n }}\n />\n \n \n );\n };\n\ninterface CategoryFilterSettingsProps {\n exportType: ExportType;\n value: CategoryFilter;\n onChange: (event: CategoryFilter) => void;\n}\n\nconst CategoryFilterSettings: React.FC = ({\n exportType,\n value,\n onChange,\n}) => {\n return (\n \n \n \n Category filter\n \n \n Filter shoes to only recommend ones that match the provided\n categories.\n \n \n \n \n {\n onChange({\n ...value,\n selector: event.target.value as CategoryFilterSelector,\n });\n }}\n >\n {exportType !== \"scan\" && (\n \n Previous purchase reference categories\n \n )}\n Category\n \n \n \n \n \n {value.selector === \"category\" && (\n \n {\n onChange({ ...value, categories: [event.target.value] });\n }}\n />\n \n )}\n \n {\n onChange({ ...value, matching_operator: change });\n }}\n />\n \n \n \n \n );\n};\n","import React from \"react\";\nimport { Grid, Typography } from \"@material-ui/core\";\nimport { ExportTypeSelector } from \"./components/ExportTypeSelector\";\nimport { StoreSettingsFilter } from \"./components/StoreSettingsFilter\";\nimport { PreviousPurchaseFilter as PPFilter } from \"./components/PreviousPurchaseFilter\";\nimport { NumberOfRecommendationsInput } from \"./components/NumberOfRecommendations\";\nimport { RecommendationFilterSettings } from \"./components/RecommendationFilterSettings\";\nimport { TenantConfiguration } from \"../../../../api/entities\";\n\ninterface ExportSettingsEditorProps {\n tc: TenantConfiguration;\n onChange: (event: TenantConfiguration) => void;\n}\n\nexport const ExportSettingsEditor: React.FC = ({\n tc,\n onChange,\n}) => (\n \n \n Export settings\n \n \n {\n onChange({ ...tc, export_type: value });\n }}\n />\n \n \n {\n onChange({\n ...tc,\n number_of_recommended_shoes_export: value,\n });\n }}\n />\n \n \n {\n onChange({ ...tc, store: value });\n }}\n />\n \n \n {tc.export_type !== \"scan\" && (\n {\n onChange({ ...tc, reference_shoe: value });\n }}\n onDataChange={(value) => {\n onChange({ ...tc, previous_purchase_reference: value });\n }}\n />\n )}\n \n \n {\n onChange({ ...tc, recommendation_filters: value });\n }}\n />\n \n \n);\n","import { CircularProgress } from \"@material-ui/core\";\n\nconst Loading = () => (\n \n \n \n);\n\nexport default Loading;\n","export const __prod__ = process.env.NODE_ENV === \"production\";\nexport const targetEnvironment = process.env.REACT_APP_STATE;\nexport const apiBaseUrl = (() => {\n if (targetEnvironment === \"production\") {\n return \"https://promo.volumental.com\";\n } else if (targetEnvironment === \"staging\") {\n return \"https://promo.volumental.dev\";\n } else {\n return \"http://localhost:8000\";\n }\n})();\n","import { useEffect, useState } from \"react\";\nimport {\n Avatar,\n Box,\n Button,\n CircularProgress,\n Container,\n Grid,\n Paper,\n Typography,\n} from \"@material-ui/core\";\nimport { makeStyles, Theme } from \"@material-ui/core/styles\";\nimport { Error as ErrorIcon } from \"@material-ui/icons\";\nimport { useTenant } from \"../../hooks/useQuery\";\nimport SaveIcon from \"@material-ui/icons/Save\";\nimport { ExportSettingsEditor } from \"./compents/settings/ExportSettings\";\nimport Loading from \"../loading\";\nimport { TenantConfiguration } from \"../../api/entities\";\nimport { useGetConfiguration, useUpdateConfiguration } from \"../../api/base\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n paper: {\n marginTop: 40,\n marginBottom: 40,\n padding: theme.spacing(3),\n textAlign: \"left\",\n color: theme.palette.text.secondary,\n },\n actionButtom: {\n textTransform: \"uppercase\",\n margin: theme.spacing(1),\n width: 152,\n },\n alignRight: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n },\n title: {\n display: \"flex\",\n },\n titleImage: {\n marginRight: theme.spacing(1),\n },\n icon: {\n fontSize: 140,\n color: theme.palette.error.main,\n },\n buttonProgress: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12,\n },\n}));\n\nexport const AdminPage = () => {\n const classes = useStyles();\n const tenant = useTenant();\n const { mutate, isLoading: isUpdating } = useUpdateConfiguration(\n tenant?.id || \"\"\n );\n const { data, isLoading, isError } = useGetConfiguration(tenant?.id || \"\");\n const [changes, setChanges] = useState();\n const [isDiff, setDiff] = useState(false);\n useEffect(() => {\n setChanges(data);\n }, [data]);\n\n useEffect(() => {\n setDiff(JSON.stringify(data) === JSON.stringify(changes));\n }, [changes, data]);\n\n if (tenant == null) {\n return (\n \n \n \n \n \n Select a tenant!\n \n \n \n \n \n );\n }\n\n if (isLoading || !changes) {\n return (\n \n \n \n \n \n );\n }\n\n if (isError || !changes) {\n return (\n \n \n \n \n \n \n \n \n \n \n Could not load configuration for {tenant.name}\n \n \n \n \n \n );\n }\n\n return (\n \n \n \n \n \n \n {tenant.name}\n \n \n \n \n Transaction Supplier: \n {data?.transaction_supplier}\n \n \n \n setChanges(e)}\n />\n \n \n\n \n {!(isUpdating || isDiff) && (\n {\n setChanges(data);\n }}\n >\n Reset\n \n )}\n {\n mutate(changes);\n }}\n endIcon={}\n >\n Save\n {isUpdating && (\n \n )}\n \n \n \n \n );\n};\n","import { useAuth0 } from \"@auth0/auth0-react\";\nimport { useSnackbar } from \"notistack\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { apiBaseUrl } from \"../lib/constants\";\nimport { TenantConfiguration } from \"./entities\";\n\nexport const useGetConfiguration = (id: string) => {\n const { getAccessTokenSilently } = useAuth0();\n const key = `/v1alpha/${id}/configuration`;\n return useQuery(\n [\"configuration\", id],\n async () => {\n const token = await getAccessTokenSilently();\n const request = await fetch(`${apiBaseUrl}${key}`, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n if (request.status !== 200) {\n throw new Error(await request.text());\n }\n return await request.json();\n },\n {\n enabled: !!id,\n refetchInterval: false,\n }\n );\n};\n\nexport const useUpdateConfiguration = (id: string) => {\n const { enqueueSnackbar } = useSnackbar();\n\n const { getAccessTokenSilently } = useAuth0();\n const queryClient = useQueryClient();\n\n const key = `/v1alpha/${id}/configuration`;\n return useMutation(\n [\"configuration\", id],\n async (body: TenantConfiguration) => {\n const token = await getAccessTokenSilently();\n const request = await fetch(`${apiBaseUrl}${key}`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${token}`,\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n if (request.status !== 200) {\n throw new Error(await request.text());\n }\n return await request.json();\n },\n {\n onSuccess: (data) => {\n enqueueSnackbar(\"Configuration saved!\", { variant: \"success\" });\n queryClient.setQueryData([\"configuration\", id], data);\n },\n onError: () => {\n enqueueSnackbar(\"could not save the configuration!\", {\n variant: \"error\",\n });\n },\n }\n );\n};\n","import { Box, Container, Grid, Paper, Typography } from \"@material-ui/core\";\nimport { makeStyles, Theme } from \"@material-ui/core/styles\";\nimport { DoneAllOutlined } from \"@material-ui/icons\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n paper: {\n marginTop: 40,\n marginBottom: 40,\n padding: theme.spacing(3),\n textAlign: \"left\",\n color: theme.palette.text.secondary,\n },\n icon: {\n fontSize: 140,\n color: theme.palette.success.main,\n },\n}));\n\nexport const SignedOutPage = () => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n \n \n \n You have been signed out successfully!\n \n \n \n \n \n );\n};\n","import { QueryClient } from \"react-query\";\n\nexport const queryClient = new QueryClient({\n defaultOptions: {\n mutations: {\n onError: (e) => {\n if (\"message\" in (e as Error)) {\n console.log((e as Error).message);\n }\n },\n },\n queries: {\n retry: false,\n refetchInterval: false,\n onError: (e) => {\n if (\"message\" in (e as Error)) {\n console.log((e as Error).message);\n }\n },\n },\n },\n});\n","import React from \"react\";\nimport { CssBaseline, ThemeProvider } from \"@material-ui/core\";\nimport { Route, Switch, Redirect, RouteProps } from \"react-router-dom\";\nimport { useAuth0, withAuthenticationRequired } from \"@auth0/auth0-react\";\nimport { TopBar } from \"../topbar\";\nimport theme from \"../../theme\";\nimport { AdminPage } from \"../admin\";\nimport Loading from \"../loading\";\nimport { SignedOutPage } from \"../signedOut/SignedOut\";\nimport { QueryClientProvider } from \"react-query\";\nimport { queryClient } from \"../../lib/queryClient\";\nimport { SnackbarProvider } from \"notistack\";\nexport const App = () => {\n const { isLoading, error } = useAuth0();\n\n if (error) {\n return
Oops... {error.message}
;\n }\n\n if (isLoading) {\n return (\n \n \n \n );\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst ProtectedRoute: React.FC = ({ children, ...args }) => {\n let component = () => {children};\n return (\n ,\n })}\n {...args}\n />\n );\n};\n","import { ReportHandler } from \"web-vitals\";\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import(\"web-vitals\").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { AppState, Auth0Provider } from \"@auth0/auth0-react\";\n\nconst providerConfig = {\n domain: \"volumental.eu.auth0.com\",\n clientId: \"EIVszuIou05Pbp8zYYZ66T1I5Np7aFSk\", // \"user-admin-ui-spa\"\n redirectUri: window.location.origin,\n audience: \"https://internal.volumental.com\",\n responseType: \"token id_token\",\n scope: \"openid\",\n};\n\nexport const Auth0ProviderWithHistory: React.FC = ({ children }) => {\n const history = useHistory();\n\n const onRedirectCallback = (appState: AppState) => {\n history.push(appState?.returnTo || window.location.pathname);\n };\n\n return (\n \n {children}\n \n );\n};\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { App } from \"./components/app\";\nimport reportWebVitals from \"./reportWebVitals\";\n\nimport \"@fontsource/roboto\";\nimport { Auth0ProviderWithHistory } from \"./auth\";\nimport { BrowserRouter } from \"react-router-dom\";\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}