{"version":3,"sources":["contexts/SettingsContext.tsx","hooks/useSettings.ts","i18n.ts","hooks/useScrollReset.ts","res/icons/Menu.tsx","res/img/logolimet_notext.png","components/LogoWhite.tsx","components/dashboard/DashboardNavbar.tsx","components/Logo.tsx","components/Scrollbar.tsx","res/icons/ChevronDown.tsx","res/icons/ChevronRight.tsx","components/NavItem.tsx","components/NavSection.tsx","res/img/Logo_MT.png","components/dashboard/DashboardSidebar.tsx","components/dashboard/DashboardLayout.tsx","components/LoadingScreen.tsx","res/icons/Minus.tsx","components/Footer.tsx","pages/FAQ.tsx","res/icons/Mail.tsx","components/contact/ContactForm.tsx","pages/Contact.tsx","routes.tsx","theme/index.ts","theme/shadows.ts","App.tsx","index.tsx","constants.ts"],"names":["initialSettings","compact","direction","responsiveFontSizes","roundedCorners","theme","THEMES","LIGHT","SettingsContext","createContext","settings","saveSettings","SettingsProvider","props","children","setSettings","useState","useEffect","restoredSettings","restoreSettings","storedData","window","localStorage","getItem","JSON","parse","err","console","error","_jsx","Provider","value","updatedSettings","setItem","stringify","storeSettings","Consumer","useSettings","useContext","i18n","use","initReactI18next","init","resources","en","translation","it","lng","fallbackLng","interpolation","escapeValue","useScrollReset","location","useLocation","scrollTo","pathname","Menu","createSvgIcon","xmlns","viewBox","fill","fillRule","d","clipRule","LogoWhite","Box","component","src","logoWhite","sx","height","width","DashboardNavbarRoot","experimentalStyled","AppBar","_ref","palette","mode","backgroundColor","primary","main","boxShadow","color","contrastText","zIndex","drawer","DashboardNavbar","onSidebarMobileOpen","other","_jsxs","Toolbar","minHeight","IconButton","onClick","display","lg","MenuIcon","fontSize","RouterLink","to","xs","flexGrow","ml","Logo","logo","Scrollbar","forwardRef","ref","test","navigator","userAgent","overflowX","PerfectScrollbar","ChevronDown","ChevronRight","NavItem","active","depth","icon","info","open","openProp","path","title","setOpen","handleToggle","prevOpen","paddingLeft","ListItem","disableGutters","py","Button","endIcon","ChevronDownIcon","ChevronRightIcon","startIcon","fontWeight","justifyContent","pl","concat","pr","textAlign","textTransform","variant","Collapse","in","defaultProps","renderNavItems","items","List","disablePadding","reduce","acc","item","reduceChildRoutes","_ref2","key","exactMatch","matchPath","end","partialMatch","push","NavSection","subheader","ListSubheader","disableSticky","lineHeight","sections_user","t","Home","VideoCameraBack","DashboardSidebar","onMobileClose","openMobile","lgUp","useMediaQuery","breakpoints","up","useNavigate","content","flexDirection","options","suppressScrollX","p","Divider","map","section","mt","href","Logo_MT","alt","style","Drawer","anchor","PaperProps","top","onClose","DashboardLayoutRoot","background","default","overflow","DashboardLayoutWrapper","flex","paddingTop","DashboardLayoutContainer","DashboardLayoutContent","position","WebkitOverflowScrolling","DashboardLayout","isSidebarMobileOpen","setIsSidebarMobileOpen","Outlet","LoadingScreen","NProgress","start","done","Minus","stroke","strokeLinecap","strokeLinejoin","strokeWidth","sections","links","LINK_PRIVACY","LINK_COOKIE_POLICY","LINK_TERMS","Footer","pb","pt","md","Container","maxWidth","Grid","container","spacing","sm","order","Typography","index","link","ListItemAvatar","alignItems","minWidth","mr","MinusIcon","ListItemText","Link","borderColor","alpha","my","MarkdownWrapper","text","fontFamily","typography","h2","fontWeightBold","marginBottom","h3","body1","FAQ","_Fragment","Helmet","align","Markdown","source","Mail","ContactForm","Formik","initialValues","email","fullName","subject","azienda","cellulare","testo","submit","validationSchema","Yup","shape","max","required","onSubmit","async","values","setErrors","setStatus","setSubmitting","success","message","errors","handleBlur","handleChange","handleSubmit","isSubmitting","touched","setFieldValue","noValidate","mb","TextField","fullWidth","name","onBlur","onChange","helperText","Boolean","type","select","SelectProps","native","multiline","rows","FormHelperText","size","underline","Contact","gridTemplateColumns","BrowserLink","Avatar","MailIcon","Loadable","Component","Suspense","fallback","DashboardHome","lazy","DashboardWebcam","AuthorizationRequired","NotFound","ServerError","routes","element","baseOptions","components","MuiAvatar","styleOverrides","MuiButton","root","MuiCssBaseline","boxSizing","html","MozOsxFontSmoothing","WebkitFontSmoothing","body","MuiCardHeader","titleTypographyProps","MuiLinearProgress","borderRadius","MuiListItemIcon","marginRight","MuiPaper","backgroundImage","button","h1","h4","h5","h6","overline","themesOptions","MuiInputBase","input","opacity","action","paper","secondary","warning","shadows","App","useRoutes","config","arguments","length","undefined","themeOptions","warn","Error","createTheme","merge","createCustomTheme","du","DeviceUUID","dua","language","platform","os","cpuCores","isAuthoritative","silkAccelerated","isKindleFire","isDesktop","isMobile","isTablet","isWindows","isLinux","isLinux64","isMac","isiPad","isiPhone","isiPod","isSmartTV","pixelDepth","isTouchScreen","hashMD5","join","ThemeProvider","CssBaseline","Toaster","document","getElementById","createRoot","render","StrictMode","HelmetProvider","StyledEngineProvider","injectFirst","LocalizationProvider","dateAdapter","AdapterDateFns","BrowserRouter","WSS_URL","WSS_CENTRALINE_REAL_TIME","WSS_MTRACKER_REAL_TIME","WSS_MISTRAL_REAL_TIME","dimensioniMarker","EXPIRING_TIME_CENTRALINA","LIGURIA"],"mappings":"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","file":"static/js/main.71a6b75e.chunk.js","sourcesContent":["import { createContext, useEffect, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport { THEMES } from '../constants';\n\ninterface Settings {\n compact?: boolean;\n direction?: 'ltr' | 'rtl';\n responsiveFontSizes?: boolean;\n roundedCorners?: boolean;\n theme?: string;\n}\n\nexport interface SettingsContextValue {\n settings: Settings;\n saveSettings: (update: Settings) => void;\n}\n\ninterface SettingsProviderProps {\n children?: ReactNode;\n}\n\nconst initialSettings: Settings = {\n compact: true,\n direction: 'ltr',\n responsiveFontSizes: true,\n roundedCorners: true,\n theme: THEMES.LIGHT\n};\n\nexport const restoreSettings = (): Settings | null => {\n let settings = null;\n\n try {\n const storedData: string | null = window.localStorage.getItem('settings');\n\n if (storedData) {\n settings = JSON.parse(storedData);\n } else {\n settings = {\n compact: true,\n direction: 'ltr',\n responsiveFontSizes: true,\n roundedCorners: true,\n theme: THEMES.LIGHT\n };\n }\n } catch (err) {\n console.error(err);\n // If stored data is not a strigified JSON this will fail,\n // that's why we catch the error\n }\n\n return settings;\n};\n\nexport const storeSettings = (settings: Settings): void => {\n window.localStorage.setItem('settings', JSON.stringify(settings));\n};\n\nconst SettingsContext = createContext<SettingsContextValue>({\n settings: initialSettings,\n saveSettings: () => {}\n});\n\nexport const SettingsProvider: FC<SettingsProviderProps> = (props) => {\n const { children } = props;\n const [settings, setSettings] = useState<Settings>(initialSettings);\n\n useEffect(() => {\n const restoredSettings = restoreSettings();\n\n if (restoredSettings) {\n setSettings(restoredSettings);\n }\n }, []);\n\n const saveSettings = (updatedSettings: Settings): void => {\n setSettings(updatedSettings);\n storeSettings(updatedSettings);\n };\n\n return (\n <SettingsContext.Provider\n value={{\n settings,\n saveSettings\n }}\n >\n {children}\n </SettingsContext.Provider>\n );\n};\n\nSettingsProvider.propTypes = {\n children: PropTypes.node.isRequired\n};\n\nexport const SettingsConsumer = SettingsContext.Consumer;\n\nexport default SettingsContext;\n","import { useContext } from 'react';\nimport SettingsContext from '../contexts/SettingsContext';\nimport type { SettingsContextValue } from '../contexts/SettingsContext';\n\nconst useSettings = (): SettingsContextValue => useContext(SettingsContext);\n\nexport default useSettings;\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\nconst resources = {\n en: {\n translation: {\n 'registrati': \"Registrati\",\n 'password_dimenticata': \"Password dimenticata?\",\n 'accedi': \"Accedi\",\n 'email': \"E-mail\",\n 'password': \"Password\",\n \"termini_condizioni\": \"Termini e condizioni\",\n \"conferma\": \"Conferma\",\n \"salva\": \"Salva\",\n \"faq\": \"F.A.Q\",\n \"subTitleFaq\": \"Qui puoi trovare le risposte alle domande più frequenti.\",\n \"torna_indietro\": \"Torna indietro\",\n \"401_subtitle\": \"Stai provando ad accedere ad una pagina che richiede l'autenticazione, prosegui la navigazione usando la barra in alto o torna indietro.\",\n \"401_subtitle_admin\": \"Non hai i permessi sufficienti per visualizzare questa pagina.\",\n \"401_title\": \"Errore 401 non sei autorizzato\",\n \"erroreServer\": \"Errore server\",\n \"500_title\": \"Errore 500 problema interno del server\",\n \"500_subtitle\": \"La richiesta che hai inviato, non è andata a buon fine, riprova o contatta l'assistenza del servizio tecnico, descrivendo il problema.\",\n \"non_trovato\": \"Non trovato\",\n \"404_title\": \"Errore 404 risorsa cercata non trovata\",\n \"404_subtitle\": \"Il percorso ricerca non è stato trovato, controlla di aver digitato correttamente il link, riprova.\",\n \"logout\": \"Logout\",\n \"vai\": \"Vai\",\n \"overview\":\"Home\",\n \"problemi_di_elaborazione\":\"Problemi di elaborazione,riprova\",\n \"temperature\": \"Temperatura\",\n \"humidity\": \"Umidità \",\n \"wind\":\"Vento\",\n \"pressure\": \"Pressione\",\n \"rain\": \"Pioggia\",\n \"attuale\": \"Attuale\",\n \"massima\": \"Massima\",\n \"minima\": \"Minima\",\n \"dew_point\": \"Dew point\",\n \"wind_chill\": \"Wind chill\",\n \"giorno\": \"Giorno\",\n \"mese\": \"Mese\",\n \"anno\": \"Anno\",\n \"umidity\":\"Umidità \",\n \"radar\":\"Radar\",\n \"webcam\":\"Webcam\",\n \"idrometro\":\"Idrometro\",\n \"centraline_online\":\"Centraline online\",\n \"idrometri_online\":\"Idrometri online\",\n \"pioggia_ultima_ora\":\"Ultima ora\",\n \"intesita_pioggia\":\"Intensità attuale\",\n \"massima_intesita_pioggia\":\"Intensità Massima\",\n \"humidex\":\"Humidex\",\n \"heatindex\":\"Indice di calore\",\n \"wind_chill_min\": \"Wind chill min\",\n \"dew_point_min\": \"Dew point min\",\n \"dew_point_max\": \"Dew point max\",\n \"solarRadius\":\"Radiazione solare\",\n \"uv\":\"Indice UV\",\n \"uvmax\":\"Indice UV max\"\n }\n },\n it: {\n translation: {\n 'registrati': \"Registrati\",\n 'password_dimenticata': \"Password dimenticata?\",\n 'accedi': \"Accedi\",\n 'email': \"E-mail\",\n 'password': \"Password\",\n \"termini_condizioni\": \"Termini e condizioni\",\n \"conferma\": \"Conferma\",\n \"salva\": \"Salva\",\n \"faq\": \"F.A.Q\",\n \"subTitleFaq\": \"Qui puoi trovare le risposte alle domande più frequenti.\",\n \"torna_indietro\": \"Torna indietro\",\n \"401_subtitle\": \"Stai provando ad accedere ad una pagina che richiede l'autenticazione, prosegui la navigazione usando la barra in alto o torna indietro.\",\n \"401_subtitle_admin\": \"Non hai i permessi sufficienti per visualizzare questa pagina.\",\n \"401_title\": \"Errore 401 non sei autorizzato\",\n \"erroreServer\": \"Errore server\",\n \"500_title\": \"Errore 500 problema interno del server\",\n \"500_subtitle\": \"La richiesta che hai inviato, non è andata a buon fine, riprova o contatta l'assistenza del servizio tecnico, descrivendo il problema.\",\n \"non_trovato\": \"Non trovato\",\n \"404_title\": \"Errore 404 risorsa cercata non trovata\",\n \"404_subtitle\": \"Il percorso ricerca non è stato trovato, controlla di aver digitato correttamente il link, riprova.\",\n \"logout\": \"Logout\",\n \"vai\": \"Vai\",\n \"overview\":\"Home\",\n \"problemi_di_elaborazione\":\"Problemi di elaborazione,riprova\",\n \"temperature\": \"Temperatura\",\n \"humidity\": \"Umidità \",\n \"wind\":\"Vento\",\n \"pressure\": \"Pressione\",\n \"rain\": \"Pioggia\",\n \"attuale\": \"Attuale\",\n \"massima\": \"Massima\",\n \"minima\": \"Minima\",\n \"dew_point\": \"Dew point\",\n \"wind_chill\": \"Wind chill\",\n \"giorno\": \"Giorno\",\n \"mese\": \"Mese\",\n \"anno\": \"Anno\",\n \"umidity\":\"Umidità \",\n \"radar\":\"Radar\",\n \"webcam\":\"Webcam\",\n \"idrometro\":\"Idrometro\",\n \"centraline_online\":\"Centraline online\",\n \"idrometri_online\":\"Idrometri online\",\n \"pioggia_ultima_ora\":\"Ultima ora\",\n \"intesita_pioggia\":\"Intensità attuale\",\n \"massima_intesita_pioggia\":\"Intensità Massima\",\n \"humidex\":\"Humidex\",\n \"heatindex\":\"Indice di calore\",\n \"wind_chill_min\": \"Wind chill min\",\n \"dew_point_min\": \"Dew point min\",\n \"dew_point_max\": \"Dew point max\",\n \"solarRadius\":\"Radiazione solare\",\n \"uv\":\"Indice UV\",\n \"uvmax\":\"Indice UV max\"\n }\n }\n};\ni18n\n .use(initReactI18next)\n .init({\n resources,\n lng: 'it',\n fallbackLng: 'it',\n interpolation: {\n escapeValue: false\n }\n });\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst useScrollReset = (): null => {\n const location = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n};\n\nexport default useScrollReset;\n","import { createSvgIcon } from \"@mui/material\";\n\nconst Menu = createSvgIcon(\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>,\n 'Menu'\n);\n\nexport default Menu;\n","export default __webpack_public_path__ + \"static/media/logolimet_notext.742ac5ad.png\";","import type { FC } from 'react';\nimport logoWhite from '../res/img/logolimet_notext.png';\nimport {Box, SxProps, Theme} from \"@mui/material\";\n\ninterface LogoProps {\n sx?: SxProps<Theme>;\n}\nconst LogoWhite: FC<LogoProps> = (props) => (\n <div>\n <Box\n component=\"img\"\n src={logoWhite}\n sx={{\n height: 52,\n width: 52\n }}\n />\n </div>\n);\n\nexport default LogoWhite;\n","import type { FC } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport MenuIcon from '../../res/icons/Menu';\nimport LogoWhite from \"../LogoWhite\";\nimport React from \"react\";\nimport {AppBar, AppBarProps, Box, experimentalStyled, IconButton, Toolbar} from '@mui/material';\n\ninterface DashboardNavbarProps extends AppBarProps {\n onSidebarMobileOpen?: () => void;\n}\n\nconst DashboardNavbarRoot = experimentalStyled(AppBar)(\n ({ theme }) => (\n {\n ...(\n theme.palette.mode === 'light' && {\n backgroundColor: theme.palette.primary.main,\n boxShadow: 'none',\n color: theme.palette.primary.contrastText\n }\n ),\n zIndex: theme.zIndex.drawer + 100\n }\n )\n);\n\nconst DashboardNavbar: FC<DashboardNavbarProps> = (props) => {\n const { onSidebarMobileOpen, ...other } = props;\n\n return (\n <DashboardNavbarRoot {...other}>\n <Toolbar sx={{ minHeight: 64 }}>\n <IconButton\n color=\"inherit\"\n onClick={onSidebarMobileOpen}\n sx={{\n display: {\n lg: 'none'\n }\n }}\n >\n <MenuIcon fontSize=\"small\" />\n </IconButton>\n <RouterLink to=\"/\">\n <LogoWhite\n sx={{\n display: {\n lg: 'inline',\n xs: 'none'\n },\n height: 40,\n width: 40\n }}\n />\n </RouterLink>\n <Box\n sx={{\n flexGrow: 1,\n ml: 2\n }}\n />\n <Box sx={{ ml: 2 }}>\n\n </Box>\n </Toolbar>\n </DashboardNavbarRoot>\n );\n};\n\nDashboardNavbar.propTypes = {\n onSidebarMobileOpen: PropTypes.func\n};\n\nexport default DashboardNavbar;\n","import type { FC } from 'react';\nimport type { Theme } from '@material-ui/core';\nimport type { SxProps } from '@material-ui/system';\nimport logo from '../res/img/logolimet_notext.png';\n\ninterface LogoProps {\n sx?: SxProps<Theme>;\n}\nconst Logo: FC<LogoProps> = (props) => (\n <div>\n <img src={logo} width=\"52\" height=\"52\"/>\n </div>\n);\n\nexport default Logo;\n","import { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport type { ScrollBarProps as PerfectScrollbarProps } from 'react-perfect-scrollbar';\nimport { Box } from '@mui/material';\n\ninterface ScrollbarProps extends PerfectScrollbarProps {\n}\n\nconst Scrollbar = forwardRef<HTMLDivElement, ScrollbarProps>((props, ref) => {\n const { children, ...other } = props;\n\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n if (isMobile) {\n return (\n <Box\n ref={ref}\n sx={{ overflowX: 'auto' }}\n >\n {children}\n </Box>\n );\n }\n\n return (\n <PerfectScrollbar\n // @ts-ignore\n ref={ref}\n {...other}\n >\n {children}\n </PerfectScrollbar>\n );\n});\n\nScrollbar.propTypes = {\n children: PropTypes.node\n};\n\nexport default Scrollbar;\n","import { createSvgIcon } from \"@mui/material\";\n\nconst ChevronDown = createSvgIcon(\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>,\n 'ChevronDown'\n);\n\nexport default ChevronDown;\n","import { createSvgIcon } from \"@mui/material\";\n\nconst ChevronRight = createSvgIcon(\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>,\n 'ChevronRight'\n);\n\nexport default ChevronRight;\n","import { useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { Box, Button, Collapse, ListItem } from '@mui/material';\nimport type { ListItemProps } from '@mui/material';\nimport ChevronDownIcon from '../res/icons/ChevronDown';\nimport ChevronRightIcon from '../res/icons/ChevronRight';\n\ninterface NavItemProps extends ListItemProps {\n active?: boolean;\n children?: ReactNode;\n depth: number;\n icon?: ReactNode;\n info?: ReactNode;\n open?: boolean;\n path?: string;\n title: string;\n}\n\nconst NavItem: FC<NavItemProps> = (props) => {\n const {\n active,\n children,\n depth,\n icon,\n info,\n open: openProp,\n path,\n title,\n ...other\n } = props;\n const [open, setOpen] = useState<boolean>(openProp);\n\n const handleToggle = (): void => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n let paddingLeft = 16;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n // Branch\n if (children) {\n return (\n <ListItem\n disableGutters\n sx={{\n display: 'block',\n py: 0\n }}\n {...other}\n >\n <Button\n endIcon={!open ? <ChevronRightIcon fontSize=\"small\" />\n : <ChevronDownIcon fontSize=\"small\" />}\n onClick={handleToggle}\n startIcon={icon}\n sx={{\n color: 'text.secondary',\n fontWeight: 'fontWeightMedium',\n justifyContent: 'flex-start',\n pl: `${paddingLeft}px`,\n pr: '8px',\n py: '12px',\n textAlign: 'left',\n textTransform: 'none',\n width: '100%'\n }}\n variant=\"text\"\n >\n <Box sx={{ flexGrow: 1 }}>\n {title}\n </Box>\n {info}\n </Button>\n <Collapse in={open}>\n {children}\n </Collapse>\n </ListItem>\n );\n }\n\n // Leaf\n return (\n <ListItem\n disableGutters\n sx={{\n display: 'flex',\n py: 0\n }}\n >\n <Button\n component={path && RouterLink}\n startIcon={icon}\n sx={{\n color: 'text.secondary',\n fontWeight: 'fontWeightMedium',\n justifyContent: 'flex-start',\n textAlign: 'left',\n pl: `${paddingLeft}px`,\n pr: '8px',\n py: '12px',\n textTransform: 'none',\n width: '100%',\n ...(\n active && {\n color: 'primary.main',\n fontWeight: 'fontWeightBold',\n '& svg': {\n color: 'primary.main'\n }\n }\n )\n }}\n variant=\"text\"\n to={path}\n >\n <Box sx={{ flexGrow: 1 }}>\n {title}\n </Box>\n {info}\n </Button>\n </ListItem>\n );\n};\n\nNavItem.propTypes = {\n active: PropTypes.bool,\n children: PropTypes.node,\n depth: PropTypes.number.isRequired,\n icon: PropTypes.node,\n info: PropTypes.node,\n open: PropTypes.bool,\n path: PropTypes.string,\n title: PropTypes.string.isRequired\n};\n\nNavItem.defaultProps = {\n active: false,\n open: false\n};\n\nexport default NavItem;\n","import type { FC, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport { matchPath } from 'react-router-dom';\nimport { List, ListSubheader } from '@mui/material';\nimport type { ListProps } from '@mui/material';\nimport NavItem from './NavItem';\n\ninterface Item {\n path?: string;\n icon?: ReactNode;\n info?: ReactNode;\n children?: Item[];\n title: string;\n}\n\ninterface NavSectionProps extends ListProps {\n items: Item[];\n pathname: string;\n title: string;\n}\n\nconst renderNavItems = ({\n depth = 0,\n items,\n pathname\n}: {\n items: Item[];\n pathname: string;\n depth?: number;\n}): JSX.Element => (\n <List disablePadding>\n {items.reduce(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define, no-use-before-define\n (acc, item) => reduceChildRoutes({\n acc,\n item,\n pathname,\n depth\n }),\n []\n )}\n </List>\n);\n\nconst reduceChildRoutes = ({\n acc,\n pathname,\n item,\n depth\n}: {\n acc: JSX.Element[];\n pathname: string;\n item: Item;\n depth: number;\n}): Array<JSX.Element> => {\n const key = `${item.title}-${depth}`;\n const exactMatch = item.path ? !!matchPath({\n path: item.path,\n end: true\n }, pathname) : false;\n\n if (item.children) {\n const partialMatch = item.path ? !!matchPath({\n path: item.path,\n end: false\n }, pathname) : false;\n\n acc.push(\n <NavItem\n active={partialMatch}\n depth={depth}\n icon={item.icon}\n info={item.info}\n key={key}\n open={partialMatch}\n path={item.path}\n title={item.title}\n >\n {renderNavItems({\n depth: depth + 1,\n items: item.children,\n pathname\n })}\n </NavItem>\n );\n } else {\n acc.push(\n <NavItem\n active={exactMatch}\n depth={depth}\n icon={item.icon}\n info={item.info}\n key={key}\n path={item.path}\n title={item.title}\n />\n );\n }\n\n return acc;\n};\n\nconst NavSection: FC<NavSectionProps> = (props) => {\n const {\n items,\n pathname,\n title,\n ...other\n } = props;\n\n return (\n <List\n subheader={(\n <ListSubheader\n disableGutters\n disableSticky\n sx={{\n color: 'text.primary',\n fontSize: '0.75rem',\n lineHeight: 2.5,\n fontWeight: 700,\n textTransform: 'uppercase'\n }}\n >\n {title}\n </ListSubheader>\n )}\n {...other}\n >\n {renderNavItems({\n items,\n pathname\n })}\n </List>\n );\n};\n\nNavSection.propTypes = {\n items: PropTypes.array,\n pathname: PropTypes.string,\n title: PropTypes.string\n};\n\nexport default NavSection;\n","export default __webpack_public_path__ + \"static/media/Logo_MT.dc0d6ed4.png\";","import type {FC} from 'react';\nimport {useEffect} from 'react';\nimport {Link as RouterLink, useLocation, useNavigate} from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport {Theme, useMediaQuery} from '@mui/material';\nimport {Box, Divider, Drawer} from '@mui/material';\nimport Logo from '../Logo';\nimport Scrollbar from '../Scrollbar';\nimport i18n from \"i18next\";\nimport NavSection from \"../NavSection\";\nimport {VideoCameraBack,Home} from '@mui/icons-material';\nimport Logo_MT from '../../res/img/Logo_MT.png';\n\ninterface DashboardSidebarProps {\n onMobileClose: () => void;\n openMobile: boolean;\n}\n\nconst sections_user = [\n {\n title: \"\",\n items: [\n {\n title: i18n.t(\"overview\"),\n path: '/',\n icon: <Home fontSize=\"small\" />\n },\n {\n title: i18n.t(\"webcam\"),\n path: '/webcam',\n icon: <VideoCameraBack fontSize=\"small\" />\n }\n ]\n }\n];\nconst DashboardSidebar: FC<DashboardSidebarProps> = (props) => {\n const { onMobileClose, openMobile } = props;\n const location = useLocation();\n const lgUp = useMediaQuery((theme: Theme) => theme.breakpoints.up('lg'));\n const navigate = useNavigate()\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n }, [location.pathname]);\n\n const content = (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%'\n }}\n >\n <Scrollbar options={{ suppressScrollX: true }}>\n <Box\n sx={{\n display: {\n lg: 'none',\n xs: 'flex'\n },\n justifyContent: 'center',\n p: 2\n }}\n >\n <RouterLink to=\"/\">\n <Logo\n sx={{\n height: 40,\n width: 40\n }}\n />\n </RouterLink>\n </Box>\n\n <Divider />\n <Box sx={{ p: 2 }}>\n { sections_user.map((section) => (\n <NavSection\n key={section.title}\n pathname={location.pathname}\n sx={{\n '& + &': {\n mt: 3\n }\n }}\n {...section}\n />\n ))}\n </Box>\n </Scrollbar>\n <Box\n sx={{\n mt: 'auto', // Spinge il Box in fondo\n display: 'flex',\n justifyContent: 'center',\n p: 2\n }}\n >\n <a href={\"https://meteotracker.com/\"}><img src={Logo_MT} alt=\"Logo Meteo Tracker\" style={{ height: 40, width: 150 }} /></a>\n </Box>\n </Box>\n );\n\n if (lgUp) {\n return (\n <Drawer\n anchor=\"left\"\n open\n PaperProps={{\n sx: {\n backgroundColor: 'background.paper',\n height: 'calc(100% - 64px) !important',\n top: '64px !Important',\n width: 280\n }\n }}\n variant=\"permanent\"\n >\n {content}\n </Drawer>\n );\n }\n\n return (\n <Drawer\n anchor=\"left\"\n onClose={onMobileClose}\n open={openMobile}\n PaperProps={{\n sx: {\n backgroundColor: 'background.paper',\n width: 280\n }\n }}\n variant=\"temporary\"\n >\n {content}\n </Drawer>\n );\n};\n\nDashboardSidebar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n};\n\nexport default DashboardSidebar;\n","import { useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { Outlet } from 'react-router-dom';\nimport DashboardNavbar from './DashboardNavbar';\nimport DashboardSidebar from './DashboardSidebar';\nimport { experimentalStyled } from '@mui/material';\n\ninterface DashboardLayoutProps {\n children?: ReactNode;\n}\n\nconst DashboardLayoutRoot = experimentalStyled('div')(\n ({ theme }) => (\n {\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n }\n )\n);\n\nconst DashboardLayoutWrapper = experimentalStyled('div')(\n ({ theme }) => (\n {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: '64px',\n [theme.breakpoints.up('lg')]: {\n paddingLeft: '280px'\n }\n }\n )\n);\n\nconst DashboardLayoutContainer = experimentalStyled('div')({\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n});\n\nconst DashboardLayoutContent = experimentalStyled('div')({\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto',\n position: 'relative',\n WebkitOverflowScrolling: 'touch'\n});\n\nconst DashboardLayout: FC<DashboardLayoutProps> = () => {\n const [isSidebarMobileOpen, setIsSidebarMobileOpen] = useState<boolean>(false);\n\n return (\n <DashboardLayoutRoot>\n <DashboardNavbar\n onSidebarMobileOpen={(): void => setIsSidebarMobileOpen(true)}\n />\n <DashboardSidebar\n onMobileClose={(): void => setIsSidebarMobileOpen(false)}\n openMobile={isSidebarMobileOpen}\n />\n <DashboardLayoutWrapper>\n <DashboardLayoutContainer>\n <DashboardLayoutContent>\n <Outlet />\n </DashboardLayoutContent>\n </DashboardLayoutContainer>\n </DashboardLayoutWrapper>\n </DashboardLayoutRoot>\n );\n};\n\nexport default DashboardLayout;\n","import { useEffect } from 'react';\nimport type { FC } from 'react';\nimport NProgress from 'nprogress';\nimport {Box} from \"@mui/material\";\n\nconst LoadingScreen: FC = () => {\n useEffect(() => {\n NProgress.start();\n\n return (): void => {\n NProgress.done();\n };\n }, []);\n\n return (\n <Box\n sx={{\n backgroundColor: 'background.paper',\n minHeight: '100%'\n }}\n />\n );\n};\n\nexport default LoadingScreen;\n","import { createSvgIcon } from \"@mui/material\";\n\nconst Minus = createSvgIcon(\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M18 12H6\"\n />\n </svg>,\n 'Minus'\n);\n\nexport default Minus;\n","import type { FC } from 'react';\nimport {\n alpha,\n Box,\n Container,\n Divider,\n Grid,\n Link,\n List,\n ListItem,\n ListItemAvatar,\n ListItemText,\n Typography\n} from '@mui/material';\nimport MinusIcon from '../res/icons/Minus';\nimport Logo from './Logo';\nimport {LINK_COOKIE_POLICY, LINK_PRIVACY, LINK_TERMS} from \"../constants\";\n\nconst sections = [\n {\n title: 'General',\n links: [\n {\n title: 'Privacy Policy',\n href: LINK_PRIVACY\n },\n {\n title: 'Cookie policy',\n href: LINK_COOKIE_POLICY\n },\n {\n title: 'Terms',\n href: LINK_TERMS\n },\n {\n title: 'F.A.Q',\n href: '/faq'\n },\n {\n title: 'Contatti',\n href: '/contact'\n }\n ]\n },\n {\n title: 'Social',\n links: [\n {\n title: 'Facebook',\n href: 'https://www.facebook.com/MicroMega.net'\n },\n {\n title: 'Instagram',\n href: 'https://www.instagram.com/micromega_rivista/'\n },\n {\n title: 'Twitter',\n href: 'https://twitter.com/_MicroMega_'\n },\n {\n title: 'Youtube',\n href: \"https://www.youtube.com/c/redazioneMicroMega\"\n }\n ]\n }\n];\n\nconst Footer: FC = (props) => (\n <Box\n sx={{\n backgroundColor: 'background.default',\n pb: 6,\n pt: {\n md: 15,\n xs: 6\n }\n }}\n {...props}\n >\n <Container maxWidth=\"lg\">\n <Grid\n container\n spacing={3}\n >\n <Grid\n item\n md={3}\n sm={4}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n order: {\n md: 1,\n xs: 4\n }\n }}\n xs={12}\n >\n <Logo />\n <Typography\n color=\"textSecondary\"\n sx={{ mt: 2 }}\n variant=\"caption\"\n >\n © 2021 Micromega. All Rights Reserved.\n </Typography>\n\n <Typography\n color=\"textSecondary\"\n sx={{ mt: 1 }}\n variant=\"caption\">\n <p>Direttore responsabile: Paolo Flores d’Arcais</p>\n <p>Edito da Micromega Edizioni impresa sociale SRL</p>\n <p>P.Iva 15971151004</p>\n <p>Pec editore@pec.micromegaedizioni.net</p>\n <p>Registrazione nr. 117/86</p>\n <p>Presso il Tribunale di Roma</p>\n <p>ISSN 2282-121X</p>\n </Typography>\n </Grid>\n {sections.map((section, index) => (\n <Grid\n item\n key={section.title}\n md={3}\n sm={4}\n sx={{\n order: {\n md: index + 2,\n xs: index + 1\n }\n }}\n xs={12}\n >\n <Typography\n color=\"textSecondary\"\n variant=\"overline\"\n >\n {section.title}\n </Typography>\n <List disablePadding>\n {section.links.map((link) => (\n <ListItem\n disableGutters\n key={link.title}\n sx={{\n pb: 0,\n pt: 1\n }}\n >\n <ListItemAvatar\n sx={{\n alignItems: 'center',\n display: 'flex',\n minWidth: 0,\n mr: 0.5\n }}\n >\n <MinusIcon color=\"primary\" />\n </ListItemAvatar>\n <ListItemText\n primary={(\n <Link\n href={link.href}\n color=\"textPrimary\"\n variant=\"subtitle2\"\n >\n {link.title}\n </Link>\n )}\n />\n </ListItem>\n ))}\n </List>\n </Grid>\n ))}\n </Grid>\n <Divider\n sx={{\n borderColor: (theme) => alpha(theme.palette.primary.contrastText, 0.12),\n my: 6\n }}\n />\n\n </Container>\n </Box>\n);\n\nexport default Footer;\n","import { useEffect } from 'react';\nimport type { FC } from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport {Box, Container, Divider, Typography} from '@mui/material';\nimport Markdown from 'react-markdown/with-html';\nimport i18n from \"i18next\";\nimport Footer from \"../components/Footer\";\nimport {experimentalStyled} from \"@mui/material\";\n\nconst MarkdownWrapper = experimentalStyled('div')(\n ({ theme }) => (\n {\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n '& h2': {\n fontSize: theme.typography.h2.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: theme.typography.h2.lineHeight,\n marginBottom: theme.spacing(3)\n },\n '& h3': {\n fontSize: theme.typography.h3.fontSize,\n fontWeight: theme.typography.fontWeightBold,\n lineHeight: theme.typography.h3.lineHeight,\n marginBottom: theme.spacing(3)\n },\n '& p': {\n fontSize: theme.typography.body1.fontSize,\n lineHeight: theme.typography.body1.lineHeight,\n marginBottom: theme.spacing(2)\n },\n '& li': {\n fontSize: theme.typography.body1.fontSize,\n lineHeight: theme.typography.body1.lineHeight,\n marginBottom: theme.spacing(1)\n }\n }\n )\n);\nconst FAQ: FC = () => {\n useEffect(() => {\n }, []);\n return (\n <>\n <Helmet>\n <title>{`${i18n.t(\"faq\")} | Limet`}</title>\n </Helmet>\n <Box\n sx={{\n backgroundColor: 'background.paper',\n minHeight: '100%'\n }}\n >\n <div>\n <Box sx={{ py: 3 }}>\n <Container maxWidth=\"md\">\n <Typography\n align=\"center\"\n color=\"textPrimary\"\n sx={{\n fontWeight: 'fontWeightBold',\n mt: 3\n }}\n variant=\"h2\"\n >\n <>{i18n.t(\"faq\")}</>\n </Typography>\n <Typography\n align=\"center\"\n color=\"textSecondary\"\n sx={{ mt: 3 }}\n variant=\"subtitle1\"\n >\n <>{i18n.t(\"subTitleFaq\")}</>\n </Typography>\n\n </Container>\n </Box>\n <Divider />\n <Box sx={{ py: 3 }}>\n <Container maxWidth=\"md\">\n <MarkdownWrapper>\n <Markdown source={`\n## ABBONAMENTI\n### Come si sottoscrive un nuovo abbonamento\n\nBasta scegliere il tipo di sottoscrizione più adatta alle proprie esigenze, attraverso questa pagina [abbonamenti](https://shop.micromega.net/subscriptions \"I nostri abbonamenti\").\n\n\n### Quali tipologie di abbonamento esistono ?\n - Digitale singola copia\n - Digitale abbonamento annuale\n - Digitale abbonamento annuale + archivio\n - Digitale abbonamento annuale + carta\n - Digitale abbonamento annuale + carta + archivio\n \n### Posso copiare il testo degli articoli ?\nAccedendo allo sfogliatore clicca sul titolo dell’articolo e ti si aprirà una finestra che contiene l’articolo in formato testo che potrai copiare ed incollare.\nI cui contenuti sono coperti da diritto d’autore (utilizzo e riproduzione vietati).\n\n### E’ prevista una funzione di ricerca all’interno del periodico?\nSì è possibile effettuare una ricerca utilizzando l’icona lente d’ingrandimento.\n\n### Posso stampare l’articolo in formato solo testo ?\nCliccando sul titolo è possibile passare alla versione testuale, per effettuare una stampa utilizzare l’icona stampa.\n\n### Posso accedere con il mio smartphone/tablet ai contenuti di MicroMega Digital Edition ?\nLa sottoscrizione di un abbonamento al servizio MicroMega Digital Edition ti dà automaticamente e da subito la possibilità di leggere il periodico sul tuo smartphone/tablet attraverso l’ apposita applicazione “MicroMegaâ€, per la durata dell’abbonamento sottoscritto. \nPer usufruire dell’abbonamento scarica gratuitamente l’apposita applicazione dall’AppStore o Play Store ed inserisci le tue credenziali d’accesso (e-mail e password) all’interno dell’applicazione nel menù di log in.\n\n### Si può salvare in PDF il periodico digitale o stampare direttamente le pagine di interesse ?\nNo, non è possibile salvare il pdf del periodico digitale nè stampare il pdf. \nScaricando l’app MicroMega Edition da tablet o smartphone si può scaricare in locale in pdf per leggerlo in offline dal proprio dispositivo.\n\n### Da quanti dispositivi posso accedere al mio abbonamento?\nL’abbonamento a MicroMega Digital Edition prevede l’accesso da un massimo di tre dispositivi, se ci accede da un quarto dispositivo l’abbonamento verrà momentaneamente bloccato.\nE’ possibile resettare il numero di dispositivi associati al tuo abbonamento nella propria area personale nella sezione cliccando su RESET DISPOSITIVI. \nDopo il reset potrai effettuare l’accesso con le tue credenziali su 3 dispositivi a tua scelta. \nPer assistenza è possibile contattare il servizio di customer care inviando una email a: abbonamenti@micromega.net con oggetto Micro Mega Digital edition /reset dispositivi. \nIl reset avverrà entro 72 ore dalla ricezione della richiesta. //TODO VEDERE\n\n### E’ possibile accedere a periodici precedenti rispetto a quello attualmente in distribuzione? \nIl servizio MicroMega Digital Edition fruito via PC dà la possibilità di accedere ai periodici entro i 30 giorni precedenti all’edizione del giorno. \nL’Archivio Storico a disposizione dei clienti FULL mette a disposizione tutte le copie digitalizzate di MicroMega dal 1986. \nLa copia del bimestre viene inserita in Archivio dopo 30 giorni.\n\n### I Magazine accessori o i numeri speciali sono inclusi? \nSì, tutti i Magazine e gli speciali in uscita con il periodico sono inclusi nell’offerta del servizio MicroMega Digital Edition.\n\n### E’ possibile utilizzare la Digital Edition per effettuare una rassegna stampa?\nMicroMega Digital Edition è un servizio di consultazione del periodico digitale e non uno strumento per effettuare rassegne stampa, che devono essere autorizzate dalla redazione del periodico e hanno modalità di invio del materiale e costi diversi rispetto al servizio in oggetto.\n\n### A che ora è disponibile solitamente il periodico digitale di MicroMega Digital Edition? \nIl periodico digitale viene pubblicato in media intorno alle ore 3.00 del mattino del giorno di uscita.\n\n## GESTIONE\n### Come si sottoscrive un nuovo abbonamento ?\nBasta scegliere il tipo di sottoscrizione più adatta alle proprie esigenze, attraverso questa pagina [abbonamenti](https://shop.micromega.net/subscriptions \"I nostri abbonamenti\").\n\n### Come si rinnova un abbonamento?\nL’abbonamento sarà rinnovato automaticamente. //TODO DA VEDERE\nLa durata del vostro abbonamento e la modalità di rinnovo dipende dal tipo di sottoscrizione scelta.\n \n### Come si disattiva un abbonamento ricorrente?\nPer disattivare il tuo abbonamento CLICCA QUI (INSERIRE LINK) //TODO\nPer le altre modalità di disattivazione consulta i TERMINI E CONDIZIONI DI SERVIZIO (INSERIRE IL LINK) \n\n### ACQUISTI DA DISPOSITIVI APPLE:\nSe hai acquistato il tuo abbonamento su iPad o iPhone, ti ricordiamo che il rinnovo automatico è modificabile esclusivamente dal tuo profilo iTunes al quale solo tu hai accesso.\nTi ricordiamo che la disattivazione deve avvenire almeno 24 ore prima della data prevista per il rinnovo.\nQuesto è il riferimento Apple sulla gestione/disattivazione degli abbonamenti ricorrenti INSERIRE LINK RICORRENTE //TODO dove troverai tutte le informazioni da seguire per modificare lo stato del tuo abbonamento.\nQualora incontrassi ulteriori problemi, puoi fare riferimento direttamente all’assistenza Apple iTunes http://www.apple.com/it/support/\n\n### ACQUISTI DA DISPOSITIVI ANDROID:\nSe hai acquistato il tuo abbonamento su Play Store, ti ricordiamo che il rinnovo automatico è modificabile dal tuo profilo Google al quale solo tu hai accesso.\nTi ricordiamo inoltre che la disattivazione deve avvenire almeno 24 ore prima della data prevista per il rinnovo.\nPer disattivare il rinnovo: accedi al Menù di Play Store, seleziona la voce “Le mie Appâ€, entra in Iscrizioni, ricerca l’app MicroMega Digital Edition e annulla il rinnovo automatico.\n\n## DATI DI ACCESSO E PAGAMENTI\n\n### Come avviene il processo di fatturazione?\nIl processo di fatturazione è automatico e funziona in questo modo (ove selezionato il campo “richiedi fattura†in sede di acquisto):\nLa fattura elettronica viene emessa in automatico entro 10 giorni dall’acquisto\n La fattura elettronica viene inviata in automatico tramite Posta Elettronica Certificata all’indirizzo e-mail indicato in fase di registrazione o nella propria area riservata del sito web dell’Agenzia delle Entrate.\nI dati di intestazione della fattura sono quelli inseriti come dati di registrazione o come dati di fatturazione alternativi (qualora se ne fossero inseriti di diversi in fase di acquisto). Nel caso non si disponesse del codice SDI la fattura verrà emessa inserendo il codice convenzionale “0000000â€e sarà accettata direttamente dall’Agenzia delle Entrate.\nNon è previsto l’obbligo di inviare da parte di MicroMega Edizioni una copia cartacea.\nL’invio della fattura elettronica è prevista esclusivamente per i clienti con partita iva.\nPer i clienti con codice fiscale, che abbiano richiesto la fattura, verrà inviata la fattura cartacea.\n\n### Perché può succedere di non riuscire a concludere l’ordine d’acquisto dell’abbonamento con la carta di credito?\nPotrebbero esserci problemi con il pagamento tramite carta di credito. \nSpesso ciò accade in quanto la carta di credito utilizzata è una carta-moneta alla quale non è associata una equivalente carta virtuale che permetta gli acquisti sul web (in particolare quando appare il messaggio di errore “violazione sicurezzaâ€). \nConsigliamo di verificare con la propria banca l’abilitazione della carta agli acquisti sul web. \nSe si utilizza una carta American Express non è richiesto l’inserimento del codice di sicurezza associato alla carta, per cui per concludere correttamente la transazione si potrà procedere senza valorizzare il campo codice di sicurezza. \nIn ogni caso si può ovviare scegliendo come modalità di pagamento il Bonifico Bancario o PayPal. \n\n### Quali sono le modalità di pagamento?\nÈ possibile acquistare un abbonamento tramite:\nCarta di Credito:\nI circuiti di pagamento adottati sono CartaSi, Visa, Mastercard, American Express attraverso l’utilizzo di PayPal.\nAttenzione: verificare che alla propria carta di credito sia associato un profilo di carta virtuale che permetta gli acquisti su Internet. In caso contrario la transazione potrebbe essere bloccata e apparire un messaggio di errore. Per il profilo di carta virtuale rivolgersi alla Banca emettitrice della Carta di Credito.\nBonifico bancario:\nLe coordinate bancarie su cui effettuare il pagamento tramite bonifico bancario verranno fornite nella pagina conclusiva al termine della procedura di acquisto, una volta che tale modalità di pagamento sia stata opportunamente selezionata.\nPayPal:\nConcludendo un acquisto con questo tipo di pagamento verrà visualizzata una pagina del sito PayPal dove inserire l’indirizzo e-mail personale e password del proprio conto, oppure accedere alla procedura per la creazione di uno nuovo, o procedere senza effettuare la registrazione. Dopo la registrazione è possibile procedere ai pagamenti via PayPal senza dover più reinserire i dati, anche per i successivi acquisti. Scegliendo questa modalità di pagamento l’importo viene addebitato direttamente sul conto PayPal.\n\n### Come utilizzare il codice promozionale per accedere agli sconti previsti?\nNella pagina di scelta del metodo di pagamento è previsto l’apposito campo CODICE PROMOZIONALE. Inserendo il codice, il prezzo si sconta come previsto.\n\n## PROBLEMI TECNICI\n\n### E’ possibile modificare l’indirizzo e-mail di accesso al servizio?\nPurtroppo non è possibile modificare manualmente l’indirizzo e-mail di accesso. \nPer poter modificare questo dato, consigliamo di contattarci indicandoci il vecchio indirizzo ed il nuovo con cui si vuole eseguire l’accesso.\n\n### E’ possibile modificare la password di accesso al servizio e i miei dati personali?\nTutti i campi (eccetto l’indirizzo e-mail) sono modificabili direttamente dall’utente cliccando, dopo aver effettuato il login ed essere entrati nell’area riservata, sulla voce “Sicurezzaâ€.\n\n### Qual è la procedura per segnalare un problema tecnico?\nE’ possibile segnalare un problema tecnico attraverso la sezione Contattaci. Nel segnalare il problema riscontrato vi preghiamo di fornirci tramite l’apposita sezione quanti più dettagli possibile, così da poterlo risolvere insieme ai nostri tecnici. In particolare vi preghiamo di indicare:\n– Il Sistema Operativo utilizzato.\n– La versione del browser o della app usata per utilizzare il servizio.\n– Il tipo di connessione utilizzata (privata, aziendale, protetta).\nSarebbe utile l’indicazione di tutti i passaggi eseguiti e, se possibile, un print screen del problema.\n\n\n `} />\n </MarkdownWrapper>\n </Container>\n </Box>\n </div>\n </Box>\n <Footer />\n </>\n );\n};\n\nexport default FAQ;\n","import {createSvgIcon} from \"@mui/material\";\n\nconst Mail = createSvgIcon(\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path d=\"M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z\" />\n <path d=\"M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z\" />\n </svg>,\n 'Mail'\n);\n\nexport default Mail;\n","import type { FC, FormEvent } from 'react';\nimport {\n Box,\n Button, Checkbox, FormHelperText,\n Grid,\n Link,\n MenuItem,\n Select,\n TextField,\n Typography\n} from '@mui/material';\nimport i18n from \"i18next\";\nimport {Formik} from \"formik\";\nimport * as Yup from \"yup\";\nimport {useNavigate} from \"react-router-dom\";\n\nconst ContactForm: FC = (props) => {\n const navigate = useNavigate();\n return (\n <Formik\n initialValues={{\n email: '',\n fullName: '',\n subject: 'richiesta_informazioni',\n azienda: '',\n cellulare: '',\n testo: '',\n submit: null\n }}\n validationSchema={\n Yup\n .object()\n .shape({\n email: Yup\n .string()\n .email(i18n.t(\"valid_email\"))\n .max(255)\n .required(i18n.t(\"required_email\")),\n fullName: Yup\n .string()\n .max(255)\n .required(i18n.t(\"required_name\")),\n subject: Yup\n .string()\n .max(255)\n .required(i18n.t(\"required_subject\")),\n cellulare: Yup\n .string()\n .max(255),\n azienda: Yup\n .string()\n .max(255),\n testo: Yup\n .string()\n .required(i18n.t(\"required_testo\")),\n\n })\n }\n onSubmit={async (values, {\n setErrors,\n setStatus,\n setSubmitting\n }): Promise<void> => {\n try {\n var testo = \"\"\n if(values.fullName){\n testo += \"<br>Nome cognome: \"+values.fullName\n }\n if(values.azienda){\n testo += \"<br>Azienda: \"+values.azienda\n }\n if(values.cellulare){\n testo += \"<br>Cellulare: \"+values.cellulare\n }\n if(values.email){\n testo += \"<br>Email: \"+values.email\n }\n testo += \"<br>Testo: \"+values.testo\n /* const resp = await GenericController.contactUs(\"Micromega\",values.email,testo,i18n.t(values.subject))\n if(resp){\n navigate('/', {});\n }else{\n throw new Error(i18n.t(\"problemi_invio_mail\"))\n }*/\n } catch (err) {\n console.error(err);\n setStatus({ success: false });\n setErrors({ submit: err.message });\n setSubmitting(false);\n }\n }}\n >\n {({\n errors,\n handleBlur,\n handleChange,\n handleSubmit,\n isSubmitting,\n touched,\n values,\n setFieldValue\n }): JSX.Element => (\n <form\n noValidate\n onSubmit={handleSubmit}\n {...props}\n >\n <Grid\n container\n spacing={3}\n >\n <Grid\n item\n xs={12}\n sm={6}\n >\n <Typography\n color=\"textPrimary\"\n sx={{ mb: 1 }}\n variant=\"subtitle2\"\n >\n <> {i18n.t(\"fullname\")}</>\n </Typography>\n <TextField\n fullWidth\n name=\"fullName\"\n variant=\"outlined\"\n onBlur={handleBlur}\n onChange={handleChange}\n value={values.fullName}\n helperText={touched.fullName && errors.fullName}\n error={Boolean(touched.fullName && errors.fullName)}\n />\n </Grid>\n <Grid\n item\n xs={12}\n sm={6}\n >\n <Typography\n color=\"textPrimary\"\n sx={{ mb: 1 }}\n variant=\"subtitle2\"\n >\n <>{i18n.t(\"azienda\")}</>\n </Typography>\n <TextField\n fullWidth\n name=\"azienda\"\n variant=\"outlined\"\n onBlur={handleBlur}\n onChange={handleChange}\n value={values.azienda}\n helperText={touched.azienda && errors.azienda}\n error={Boolean(touched.azienda && errors.azienda)}\n />\n </Grid>\n <Grid\n item\n xs={12}\n sm={6}\n >\n <Typography\n color=\"textPrimary\"\n sx={{ mb: 1 }}\n variant=\"subtitle2\"\n >\n <>{i18n.t(\"email\")}</>\n </Typography>\n <TextField\n fullWidth\n name=\"email\"\n type=\"email\"\n required\n variant=\"outlined\"\n onBlur={handleBlur}\n onChange={handleChange}\n value={values.email}\n helperText={touched.email && errors.email}\n error={Boolean(touched.email && errors.email)}\n />\n </Grid>\n <Grid\n item\n xs={12}\n sm={6}\n >\n <Typography\n color=\"textPrimary\"\n sx={{ mb: 1 }}\n variant=\"subtitle2\"\n >\n <> {i18n.t(\"cellulare\")}</>\n </Typography>\n <TextField\n fullWidth\n name=\"cellulare\"\n required\n type=\"tel\"\n variant=\"outlined\"\n onBlur={handleBlur}\n onChange={handleChange}\n value={values.cellulare}\n helperText={touched.cellulare && errors.cellulare}\n error={Boolean(touched.cellulare && errors.cellulare)}\n />\n </Grid>\n\n <Grid\n item\n xs={12}>\n <Typography\n color=\"textPrimary\"\n sx={{ mb: 1 }}\n variant=\"subtitle2\"\n >\n <>{i18n.t(\"oggetto\")}</>\n </Typography>\n <TextField\n fullWidth\n name=\"subject\"\n sx={{ mt: 2 }}\n error={Boolean(touched.subject && errors.subject)}\n helperText={touched.subject && errors.subject}\n value={values.subject}\n select\n SelectProps={{ native: true }}\n onChange={handleChange}\n variant=\"outlined\"\n >\n <option\n key={\"richiesta_informazioni\"}\n value={\"richiesta_informazioni\"}>\n <> {i18n.t(\"richiesta_informazioni\")}</>\n </option>\n <option\n key={\"richiesta_amministrativa\"}\n value={\"richiesta_amministrativa\"}>\n <>{i18n.t(\"richiesta_amministrativa\")}</>\n </option>\n <option\n key={\"informazioni_privacy\"}\n value={\"informazioni_privacy\"}>\n <>{i18n.t(\"informazioni_privacy\")}</>\n </option>\n <option\n key={\"segnala_un_problema\"}\n value={\"segnala_un_problema\"}>\n <>{i18n.t(\"segnala_un_problema\")}</>\n </option>\n </TextField>\n\n </Grid>\n <Grid\n item\n xs={12}\n >\n <Typography\n color=\"textPrimary\"\n sx={{ mb: 1 }}\n variant=\"subtitle2\"\n >\n <>{i18n.t(\"messaggio\")}</>\n </Typography>\n <TextField\n fullWidth\n name=\"testo\"\n required\n multiline\n rows={6}\n variant=\"outlined\"\n onBlur={handleBlur}\n onChange={handleChange}\n value={values.testo}\n helperText={touched.testo && errors.testo}\n error={Boolean(touched.testo && errors.testo)}\n />\n </Grid>\n </Grid>\n {errors.submit && (\n <Box sx={{ mt: 3 }}>\n <FormHelperText error>\n <>{errors.submit}</>\n </FormHelperText>\n </Box>\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'center',\n mt: 3\n }}\n >\n <Button\n color=\"primary\"\n fullWidth\n size=\"large\"\n type=\"submit\"\n variant=\"contained\"\n >\n <>{i18n.t(\"invia\")}</>\n </Button>\n </Box>\n <Typography\n color=\"textSecondary\"\n sx={{ mt: 3 }}\n variant=\"body2\"\n >\n <>\n {i18n.t(\"scrivendoci_tramite_il_form\")}\n {' '}\n <Link\n color=\"textPrimary\"\n href=\"#\"\n underline=\"always\"\n variant=\"subtitle2\"\n >\n Privacy Policy\n </Link>\n {' '}\n {i18n.t(\"e\")}\n {' '}\n <Link\n color=\"textPrimary\"\n href=\"#\"\n underline=\"always\"\n variant=\"subtitle2\"\n >\n Cookie Policy\n </Link>\n .\n </>\n </Typography>\n </form>\n )}\n </Formik>\n );\n\n};\n\nexport default ContactForm;\n","import { useEffect } from 'react';\nimport type { FC } from 'react';\nimport { Link as BrowserLink } from 'react-router-dom';\nimport { Helmet } from 'react-helmet-async';\nimport { Avatar, Box, Container, Link, Typography } from '@mui/material';\nimport Logo from '../components/Logo';\nimport MailIcon from '../res/icons/Mail';\nimport i18n from \"i18next\";\nimport ContactForm from \"../components/contact/ContactForm\";\n\nconst Contact: FC = () => {\n useEffect(() => {\n }, []);\n\n return (\n <>\n <Helmet>\n <title>{`${i18n.t(\"contact\")} | Limet`}</title>\n </Helmet>\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: {\n lg: 'repeat(2, 1fr)',\n xs: 'repeat(1, 1fr)'\n },\n minHeight: '100%'\n }}\n >\n <Box\n sx={{\n backgroundColor: 'background.default',\n pt: 8\n }}\n >\n <Container\n maxWidth=\"md\"\n sx={{\n pl: {\n lg: 15\n }\n }}\n >\n <Link\n component={BrowserLink}\n to=\"/\"\n >\n <Logo\n sx={{\n height: 33,\n width: 42\n }}\n />\n </Link>\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n py: 3\n }}\n >\n <Avatar\n sx={{\n backgroundColor: 'primary.main',\n color: 'primary.contrastText',\n mr: 2\n }}\n variant=\"rounded\"\n >\n <MailIcon />\n </Avatar>\n <Typography\n color=\"textPrimary\"\n variant=\"overline\"\n >\n <>{i18n.t(\"contact_us\")}</>\n </Typography>\n </Box>\n <Typography\n color=\"textPrimary\"\n sx={{ fontWeight: 'fontWeightBold' }}\n variant=\"h1\"\n >\n <>{i18n.t(\"parla_esperto\")}</>\n </Typography>\n <Typography\n color=\"textPrimary\"\n sx={{ py: 3 }}\n variant=\"body1\"\n >\n <>{i18n.t(\"subTitleContact\")}</>\n </Typography>\n </Container>\n </Box>\n <Box\n sx={{\n backgroundColor: 'background.paper',\n pt: 8\n }}\n >\n <Container\n maxWidth=\"md\"\n sx={{\n pr: {\n lg: 15\n }\n }}\n >\n <Typography\n color=\"textPrimary\"\n variant=\"h6\"\n sx={{ pb: 3 }}\n >\n <>{i18n.t(\"completa_il_form_di_seguito\")}</>\n </Typography>\n <Box sx={{}}>\n <ContactForm />\n </Box>\n </Container>\n </Box>\n </Box>\n </>\n );\n};\n\nexport default Contact;\n","import { Suspense, lazy } from 'react';\nimport type { PartialRouteObject } from 'react-router';\nimport DashboardLayout from './components/dashboard/DashboardLayout';\nimport LoadingScreen from './components/LoadingScreen';\nimport FAQ from \"./pages/FAQ\";\nimport Contact from \"./pages/Contact\";\n\nconst Loadable = (Component) => (props) => (\n <Suspense fallback={<LoadingScreen />}>\n <Component {...props} />\n </Suspense>\n);\n\n// Dashboard pages\n\nconst DashboardHome = Loadable(lazy(() => import('./pages/dashboard/DashboardHome')));\nconst DashboardWebcam = Loadable(lazy(() => import('./pages/dashboard/DashboardWebcam')));\n\n// Error pages\n\nconst AuthorizationRequired = Loadable(lazy(() => import('./pages/guard/AuthorizationRequired')));\nconst NotFound = Loadable(lazy(() => import('./pages/guard/NotFound')));\nconst ServerError = Loadable(lazy(() => import('./pages/guard/ServerError')));\n\n// Other pages\n\nconst routes: PartialRouteObject[] = [\n {\n path: 'contact',\n element: <Contact />\n },\n {\n path: 'faq',\n element: <FAQ />\n },\n {\n path: '*',\n element: <DashboardLayout />,\n children: [\n {\n path: '/',\n element: <DashboardHome />,\n },\n {\n path: '/webcam',\n element: <DashboardWebcam />,\n },\n {\n path: '401',\n element: <AuthorizationRequired />\n },\n {\n path: '404',\n element: <NotFound />\n },\n {\n path: '500',\n element: <ServerError />\n },\n {\n path: '*',\n element: <NotFound />\n }\n ]\n }\n];\n\nexport default routes;\n","import merge from 'lodash/merge';\nimport type { Direction, Theme, ThemeOptions } from '@mui/material';\nimport { THEMES } from '../constants';\nimport { lightShadows } from './shadows';\nimport {createTheme, responsiveFontSizes} from \"@mui/material\";\n\ninterface ThemeConfig {\n direction?: Direction;\n responsiveFontSizes?: boolean;\n roundedCorners?: boolean;\n theme?: string;\n}\n\nconst baseOptions: ThemeOptions = {\n direction: 'ltr',\n components: {\n MuiAvatar: {\n styleOverrides: {\n fallback: {\n height: '75%',\n width: '75%'\n }\n }\n },\n MuiButton: {\n styleOverrides: {\n root: {\n textTransform: 'none'\n }\n }\n },\n MuiCssBaseline: {\n styleOverrides: {\n '*': {\n boxSizing: 'border-box'\n },\n html: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n height: '100%',\n width: '100%'\n },\n body: {\n height: '100%'\n },\n '#root': {\n height: '100%'\n },\n '#nprogress .bar': {\n zIndex: '2000 !important'\n }\n }\n },\n MuiCardHeader: {\n defaultProps: {\n titleTypographyProps: {\n variant: 'h6'\n }\n }\n },\n MuiLinearProgress: {\n styleOverrides: {\n root: {\n borderRadius: 3,\n overflow: 'hidden'\n }\n }\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n minWidth: 'auto',\n marginRight: '16px'\n }\n }\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundImage: 'none'\n }\n }\n }\n },\n typography: {\n button: {\n fontWeight: 600\n },\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"',\n h1: {\n fontWeight: 600,\n fontSize: '3.5rem'\n },\n h2: {\n fontWeight: 600,\n fontSize: '3rem'\n },\n h3: {\n fontWeight: 600,\n fontSize: '2.25rem'\n },\n h4: {\n fontWeight: 600,\n fontSize: '2rem'\n },\n h5: {\n fontWeight: 600,\n fontSize: '1.5rem'\n },\n h6: {\n fontWeight: 600,\n fontSize: '1.125rem'\n },\n overline: {\n fontWeight: 600\n }\n }\n};\n\nconst themesOptions: Record<string, ThemeOptions> = {\n [THEMES.LIGHT]: {\n components: {\n MuiInputBase: {\n styleOverrides: {\n input: {\n '&::placeholder': {\n opacity: 0.86,\n color: '#42526e'\n }\n }\n }\n }\n },\n palette: {\n action: {\n active: '#6b778c'\n },\n background: {\n default: '#f4f5f7',\n paper: '#ffffff'\n },\n error: {\n contrastText: '#ffffff',\n main: '#f44336'\n },\n mode: 'light',\n primary: {\n contrastText: '#ffffff',\n main: '#0D0057'\n },\n secondary: {\n contrastText: '#ffffff',\n main: '#FF0000'\n },\n success: {\n contrastText: '#ffffff',\n main: '#4caf50'\n },\n text: {\n primary: '#172b4d',\n secondary: '#6b778c'\n },\n warning: {\n contrastText: '#ffffff',\n main: '#ff9800'\n }\n },\n shadows: lightShadows\n }\n};\n\nexport const createCustomTheme = (config: ThemeConfig = {}): Theme => {\n let themeOptions = themesOptions[config.theme];\n\n if (!themeOptions) {\n console.warn(new Error(`The theme ${config.theme} is not valid`));\n themeOptions = themesOptions[THEMES.LIGHT];\n }\n\n let theme = createTheme(\n merge(\n {},\n baseOptions,\n themeOptions,\n {\n ...(\n config.roundedCorners && {\n shape: {\n borderRadius: 16\n }\n }\n )\n },\n {\n direction: config.direction\n }\n )\n );\n\n if (config.responsiveFontSizes) {\n theme = responsiveFontSizes(theme);\n }\n\n return theme;\n};\n","import type { Shadows } from '@material-ui/core/styles/shadows';\n\nexport const lightShadows: Shadows = [\n 'none',\n '0px 1px 2px rgba(0, 0, 0, 0.12), 0px 0px 0px 1px rgba(0, 0, 0, 0.05)',\n '0px 2px 4px rgba(0, 0, 0, 0.15), 0px 0px 0px 1px rgba(0, 0, 0, 0.05)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\n];","import { useEffect } from 'react';\nimport type { FC } from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { Toaster } from 'react-hot-toast';\nimport {DeviceUUID} from 'device-uuid'\nimport './i18n';\nimport useScrollReset from './hooks/useScrollReset';\nimport routes from './routes';\nimport { createCustomTheme } from './theme';\nimport useSettings from \"./hooks/useSettings\";\nimport {CssBaseline, ThemeProvider} from \"@mui/material\";\n\n\nconst App: FC = () => {\n const content = useRoutes(routes);\n const { settings } = useSettings();\n useScrollReset();\n\n useEffect(() => {}, []);\n\n const theme = createCustomTheme({\n direction: settings.direction,\n responsiveFontSizes: settings.responsiveFontSizes,\n roundedCorners: settings.roundedCorners,\n theme: settings.theme\n });\n //setup uuid\n if(!localStorage.getItem(\"uuid\")){\n const du = new DeviceUUID().parse();\n const dua = [\n du.language, du.platform, du.os, du.cpuCores, du.isAuthoritative, du.silkAccelerated, du.isKindleFire, du.isDesktop, du.isMobile,\n du.isTablet, du.isWindows, du.isLinux, du.isLinux64, du.isMac, du.isiPad, du.isiPhone, du.isiPod, du.isSmartTV,\n du.pixelDepth, du.isTouchScreen];\n localStorage.setItem(\"uuid\",du.hashMD5(dua.join(':')))\n }\n return (\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <Toaster position=\"top-center\" />\n {content}\n </ThemeProvider>\n );\n};\n\nexport default App;\n","import 'react-perfect-scrollbar/dist/css/styles.css';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport 'react-quill/dist/quill.snow.css';\nimport 'nprogress/nprogress.css';\nimport React, {StrictMode} from 'react';\nimport {HelmetProvider} from 'react-helmet-async';\nimport {BrowserRouter} from 'react-router-dom';\nimport App from './App';\nimport {SettingsProvider} from './contexts/SettingsContext';\nimport { LocalizationProvider } from '@mui/x-date-pickers'\nimport {StyledEngineProvider} from \"@mui/material\";\nimport { createRoot } from 'react-dom/client';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nconst container = document.getElementById('root');\nconst root = createRoot(container); // createRoot(container!) if you use TypeScript\nroot.render(\n <StrictMode>\n <HelmetProvider>\n <StyledEngineProvider injectFirst>\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <SettingsProvider>\n <BrowserRouter>\n <App />\n </BrowserRouter>\n </SettingsProvider>\n </LocalizationProvider>\n </StyledEngineProvider>\n </HelmetProvider>\n </StrictMode>\n);\n","import {LatLngBoundsExpression} from \"leaflet\";\n\nexport const THEMES = {\n LIGHT: 'LIGHT',\n};\n\nexport const LINK_PRIVACY = \"https://www.iubenda.com/privacy-policy/87466855\"\n\nexport const LINK_COOKIE_POLICY = \"https://www.iubenda.com/privacy-policy/87466855/cookie-policy\"\n\nexport const LINK_TERMS = \"https://www.iubenda.com/termini-e-condizioni/87466855\"\n\nexport const WSS_URL = \"wss://hub.retemet.com/mqtt\"\n\nexport const WSS_CENTRALINE_REAL_TIME = \"ws/#\"\n\nexport const WSS_MTRACKER_REAL_TIME = \"mtracker/#\"\n\nexport const WSS_MISTRAL_REAL_TIME =\"mistral/#\"\n\nexport const WSS_OMIRL_REAL_TIME =\"omirl/#\"\n\nexport const WSS_IDROMETRI = \"device/TRF001\"\nexport const dimensioniMarker = 30\nexport const EXPIRING_TIME_CENTRALINA = 30\n\n\nexport const LIGURIA: LatLngBoundsExpression = [\n [43.6587, 7.5602],\n [44.7412, 10.1365],\n]\n"],"sourceRoot":""}