{"version":3,"sources":["components/Leaflet/MenuLayer.tsx","config/Api.ts","repositories/Aerodromos.ts","components/Leaflet/ControlDiv.tsx","components/ButtonLegend.tsx","components/TemporaryDrawer.tsx","produtos/Aerodromos/components/LegendStatus.tsx","components/LineLegend.tsx","hooks/useLayerChecked.ts","produtos/Aerodromos/index.tsx","repositories/Mensagens.ts","produtos/Sigmet/index.tsx","repositories/Produtos.ts","components/GradientLegend/index.tsx","produtos/Radar/index.tsx","produtos/Satelite/index.tsx","produtos/Tsc/index.tsx","components/MenuModal.tsx","components/AsyncAutocomplete.tsx","produtos/Mensagens/components/localidadesField.tsx","vendor/yup.ts","produtos/Mensagens/components/ListMensage.tsx","produtos/Mensagens/index.tsx","components/Loading.tsx","produtos/Sigwx/index.tsx","vendor/pwa-install/Platforms.ts","vendor/pwa-install/icons.tsx","vendor/pwa-install/InstallDialogAction.tsx","vendor/pwa-install/InstallDialog.tsx","vendor/pwa-install/index.tsx","components/MenuInstall.tsx","components/Layout/ListItems.tsx","components/Layout/MenuList.tsx","config/map.ts","components/Leaflet/Map.tsx","components/Layout/index.tsx","App.tsx","serviceWorkerRegistration.ts","reportWebVitals.ts","index.tsx"],"names":["MenuLayer","props","checked","children","name","icon","parentContext","useLeafletContext","useState","active","setActive","layer","setLayer","useEffect","map","addLayer","useCallback","layerToAdd","removeLayer","context","useMemo","layerContainer","value","React","Children","child","cloneElement","ListItem","disableGutters","sx","paddingLeft","button","onClick","ListItemIcon","ListItemText","primary","Api","axios","create","baseURL","process","validateStatus","interceptors","request","use","config","params","api_key","error","Promise","reject","Aerodromos","http","resource","cancelList","paises","this","get","pesquisa","cancel","CancelToken","source","cancelToken","token","aerodromosRepositories","DivControl","Control","extend","options","className","onOff","handleOff","onAdd","_controlDiv","DomUtil","DomEvent","disableClickPropagation","disableScrollPropagation","onRemove","off","useControlElement","createElementHook","instance","overlayContainer","useControl","createControlHook","ControlDiv","useElement","Component","forceUpdate","setValue","useForceUpdate","current","contentNode","getContainer","createPortal","forwardRef","Button","styled","a","Info","span","ButtonLegend","position","info","style","backgroundColor","textAlign","TemporaryDrawer","other","Drawer","StyledTableCell","TableCell","LegendStatus","TableContainer","component","Paper","Table","size","TableHead","TableRow","colSpan","TableBody","src","width","alt","extensionImage","isHexColor","hex","length","isNaN","Number","isImage","img","extension","slice","includes","LineLegend","columns","row","index","data","rows","i","background","useLayerChecked","checkedLayer","setCheckedLayer","useMapEvents","layeradd","event","undefined","layerremove","columnsLegend","dataLegend","subscribed","useRef","setData","open","setOpen","sizeIcon","setSizeIcon","infoAer","setInfoAer","openAer","setOpenAer","getStatus","iconColor","color","iconMarkup","iconUrl","iconSize","status","console","toggleDrawer","type","key","zoom","e","sourceTarget","_zoom","coor","Marker","eventHandlers","click","onClose","anchor","toggleDrawerAer","Box","padding","Typography","fontWeight","variant","gutterBottom","nl2br","mensagensRepositories","cod","Sigmet","getSigmet","sigmet","response","obj","Polygon","fenomeno_cor","positions","lat_lon","Popup","display","title","fenomeno_comp","produtosRepositories","tipo","LegendItem","scale","label","flex","GradientLegend","valuesList","valuesListTop","endTitle","topLabels","l","v","k","gradient","stops","forEach","item","fraction","Math","round","colorProgressFraction","colorProgressProgress","c","j","makeGradient","paramsDefault","Radar","getData","parameters","radar","path","ImageOverlay","bounds","lat_min","lon_min","lat_max","lon_max","url","Circle","stroke","center","lat_center","lon_center","radius","raio","nome","Satelite","id","latLon","setLatLon","tamanho","satelite","setSatelite","hora","setHora","getSatelite","anima","Tsc","getTsc","stsc","la","lo","pathOptions","fillOpacity","MenuModal","menu","Fragment","Dialog","fullScreen","scroll","AppBar","Toolbar","IconButton","edge","ml","DialogContent","AsyncAutocomplete","AutocompleteProps","debounceTime","fetchOptions","freeSolo","onOpen","searchText","setSearchText","setOptions","useDebounce","debouncedSearchText","loading","isSubscribed","log","textFieldProps","margin","fullWidth","InputLabelProps","shrink","TextFieldProps","autocompleteProps","loadingText","noOptionsText","inputValue","onInputChange","renderInput","TextField","InputProps","endAdornment","CircularProgress","Autocomplete","LocalidadesField","setLocalidades","multiple","getOptionLabel","option","onChange","disableCloseOnSelect","then","FormHelperText","message","setLocale","mixed","required","notType","string","max","email","number","min","ListMensage","mens","Object","keys","List","marginTop","bgcolor","subheader","ListSubheader","metar","taf","schema","yup","shape","localidades","Mensagens","useForm","resolver","yupResolver","defaultValues","handleSubmit","errors","formState","mensagens","setMensagens","setLoading","search","setSearch","getMetarTaf","onSubmit","formData","join","CircularIndeterminate","Sigwx","imageUrl","setImageUrl","getSigwx","sigwx","platforms","IOSShareIcon","SvgIcon","viewBox","d","FireFoxA2HSIcon","transform","MenuIcon","fillRule","clipRule","fill","OperaA2HSIcon","DialogActionWithInstructions","action1","action2","flexDirection","alignItems","InstallDialogAction","platform","DialogActions","disableElevation","InstallDialog","subtitle","logo","features","description","DialogTitle","dividers","mr","ReactPWAInstallContext","createContext","supported","isInstalled","pwaInstall","window","hasOwnProperty","isMobile","isAndroid","isFirefox","browserVersion","isOpera","isIOS","getPlatform","ReactPWAInstallProvider","enableLogging","awaitingPromiseRef","deferredprompt","dialogState","setDialogState","logger","navigator","standalone","matchMedia","matches","openDialog","contextValue","setContextValue","handleBeforeInstallPromptEvent","preventDefault","resolve","addEventListener","removeEventListener","Provider","Boolean","prompt","userChoice","choiceResult","outcome","catch","err","MenuInstall","useContext","ListItems","LayerGroup","ManageSearch","FilterDrama","MuiDrawer","shouldForwardProp","prop","theme","whiteSpace","transition","transitions","easing","sharp","duration","enteringScreen","boxSizing","overflowX","leavingScreen","spacing","breakpoints","up","MenuList","Divider","CENTER","Map","MapContainer","zoomControl","minZoom","attributionControl","crs","CRS","EPSG4326","scrollWheelZoom","tap","ZoomControl","WMSTileLayer","layers","mdTheme","createTheme","Layout","ThemeProvider","palette","mode","grey","flexGrow","height","overflow","App","location","hostname","match","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","document","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.8d4585b8.chunk.js","sourcesContent":["import { LeafletProvider, useLeafletContext } from \"@react-leaflet/core\";\nimport React, {\n FunctionComponent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Layer } from \"leaflet\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { ListItem, SvgIconProps } from \"@mui/material\";\n\ninterface MenuProps {\n checked?: boolean;\n children: ReactNode;\n name: string;\n title?: string;\n icon: React.ReactElement;\n}\nexport const MenuLayer: FunctionComponent = (props: MenuProps) => {\n const { checked, children, name, icon } = props;\n const parentContext = useLeafletContext();\n const [active, setActive] = useState(false);\n const [layer, setLayer] = useState(null);\n\n useEffect(() => {\n if (checked) {\n setActive(true);\n }\n }, [checked]);\n\n const { map } = parentContext;\n\n const addLayer = useCallback(\n (layerToAdd: Layer) => {\n if (checked) {\n map.addLayer(layerToAdd);\n }\n setLayer(layerToAdd);\n },\n [map, checked]\n );\n const removeLayer = useCallback(() => {\n return;\n }, []);\n const addLayerButton = () => {\n if (layer !== null) {\n map.addLayer(layer);\n }\n };\n\n const removeLayerButton = () => {\n if (layer !== null) {\n map.removeLayer(layer);\n }\n };\n\n const changeLayer = () => {\n if (!active) {\n addLayerButton();\n } else {\n removeLayerButton();\n }\n setActive(!active);\n };\n const context = useMemo(\n () => ({ ...parentContext, layerContainer: { addLayer, removeLayer } }),\n [parentContext, addLayer, removeLayer]\n );\n\n const renderChildren = () => {\n const child = React.Children.map(children, (child) => {\n return React.cloneElement(child as any, {\n name: name,\n });\n });\n return child;\n };\n\n return children ? (\n <>\n {renderChildren()}\n \n {icon}\n \n \n \n ) : null;\n};\n\nexport default MenuLayer;\n","import axios from \"axios\";\n/* API */\nconst Api = axios.create({\n baseURL: process.env.REACT_APP_API_URL,\n validateStatus: function () {\n return true;\n },\n});\n\nApi.interceptors.request.use(\n (config) => {\n config.params = {\n ...config.params,\n api_key: process.env.REACT_APP_TOKEN_API,\n };\n return config;\n },\n (error) => {\n return Promise.reject(error);\n }\n);\n\nexport default Api;\n","import axios, {\n AxiosInstance,\n AxiosRequestConfig,\n AxiosResponse,\n CancelTokenSource,\n} from \"axios\";\nimport Api from \"../config/Api\";\n\nexport class Aerodromos {\n private cancelList: CancelTokenSource | null = null;\n\n constructor(private http: AxiosInstance, protected resource: string) {}\n\n status(paises: any): Promise> {\n return this.http.get(`${this.resource}/status?pais=${paises}`);\n }\n\n pesquisa(pesquisa: string): Promise> {\n if (this.cancelList) {\n this.cancelList.cancel(\"list cancelled\");\n }\n this.cancelList = axios.CancelToken.source();\n const config: AxiosRequestConfig = {\n cancelToken: this.cancelList.token,\n };\n\n return this.http.get(`${this.resource}/?pesquisa=${pesquisa}`, config);\n }\n}\n\nconst aerodromosRepositories = new Aerodromos(Api, \"aerodromos\");\nexport default aerodromosRepositories;\n","import React, { useState, forwardRef, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { createElementHook, createControlHook } from \"@react-leaflet/core\";\nimport { Control, DomUtil, DomEvent, Map, ControlOptions } from \"leaflet\";\n\ninterface IControlDiv extends ControlOptions {\n children: React.ReactNode;\n}\n\nconst DivControl = Control.extend({\n options: {\n className: \"\",\n onOff: \"\",\n handleOff: function noop() {\n return;\n },\n },\n\n onAdd(/* map */) {\n const _controlDiv = DomUtil.create(\"div\", this.options.className);\n DomEvent.disableClickPropagation(_controlDiv);\n DomEvent.disableScrollPropagation(_controlDiv);\n return _controlDiv;\n },\n\n onRemove(map: Map) {\n if (this.options.onOff) {\n map.off(this.options.onOff, this.options.handleOff, this);\n }\n\n return this;\n },\n});\n\nconst createControl = (props: IControlDiv, context: any) => {\n const instance = new DivControl(props);\n\n return { instance, context: { ...context, overlayContainer: instance } };\n};\n\nconst useControlElement = createElementHook(createControl);\nconst useControl = createControlHook(useControlElement);\n\n//create your forceUpdate hook\nconst useForceUpdate = () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [value, setValue] = useState(0); // integer state\n\n return () => setValue((value) => value + 1); // update the state to force render\n};\n\nconst ControlDiv = (useElement: any) => {\n const Component = (props: IControlDiv) => {\n const forceUpdate = useForceUpdate();\n const { instance } = useElement(props).current;\n\n useEffect(() => {\n // Origin: https://github.com/LiveBy/react-leaflet-control/blob/master/lib/control.jsx\n // This is needed because the control is only attached to the map in\n // MapControl's componentDidMount, so the container is not available\n // until this is called. We need to now force a render so that the\n // portal and children are actually rendered.\n forceUpdate();\n }, []);\n\n const contentNode = instance.getContainer();\n return contentNode ? createPortal(props.children, contentNode) : null;\n };\n return forwardRef(Component);\n};\n\nexport default ControlDiv(useControl);\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Box } from \"@mui/system\";\nimport ControlDiv from \"./Leaflet/ControlDiv\";\nimport { ControlPosition } from \"leaflet\";\n\nconst Button = styled.a`\n font-size: 18px;\n font-weight: bold;\n padding: 2px;\n`;\n\nconst Info = styled.span`\n font-weight: bold;\n font-size: 10px;\n\n background-color: #fff;\n`;\n\ninterface ButtonLegendProp {\n position?: ControlPosition;\n children: React.ReactNode;\n info?: string;\n onClick?: (value: any) => void;\n}\n\nconst ButtonLegend = ({\n children,\n position = \"topleft\",\n onClick,\n info,\n}: ButtonLegendProp) => {\n return (\n \n \n \n {info && {info}}\n \n \n );\n};\n\nexport default ButtonLegend;\n","import * as React from \"react\";\nimport { DrawerProps } from \"@mui/material/Drawer\";\nimport { Drawer } from \"@mui/material\";\n\ninterface TemporaryDrawerProps extends DrawerProps {\n children: React.ReactNode;\n}\n\nexport default function TemporaryDrawer({\n children,\n ...other\n}: TemporaryDrawerProps) {\n return (\n
\n {children}\n
\n );\n}\n","import React from \"react\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\n\nconst StyledTableCell = TableCell;\n\n// const StyledTableCell = withStyles((theme: Theme) =>\n// createStyles({\n// root: {\n// verticalAlign: \"middle\",\n// },\n// head: {\n// backgroundColor: theme.palette.common.black,\n// color: theme.palette.common.white,\n// fontSize: 12,\n// },\n// sizeSmall: {\n// padding: \"0px 5px 0px 5px\",\n// },\n// body: {\n// fontSize: 11,\n// },\n// })\n// )(TableCell);\n\nexport default function LegendStatus() {\n return (\n <>\n \n \n \n \n \n Quanto à hora da informação do METAR\n \n \n \n \n \n Informação da hora atual\n \n \n \n \n \n \n Informações de até 3 horas passadas\n \n \n \n \n \n \n \n Sem informações de até 3 horas passadas\n \n \n \n \n \n \n
\n
\n \n );\n}\n","import React from \"react\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\n\ninterface Props {\n columns: string[];\n data: any[][];\n}\nconst StyledTableCell = TableCell;\n// const StyledTableCell = withStyles((theme: Theme) =>\n// createStyles({\n// root: {\n// verticalAlign: \"middle\",\n// },\n// head: {\n// backgroundColor: theme.palette.common.black,\n// color: theme.palette.common.white,\n// fontSize: 12,\n// },\n// sizeSmall: {\n// padding: \"0px 5px 0px 5px\",\n// },\n// body: {\n// fontSize: 11,\n// },\n// })\n// )(TableCell);\n\nconst extensionImage = [\".svg\", \".png\", \".gif\"];\n\nfunction isHexColor(hex: string) {\n return (\n typeof hex === \"string\" && hex.length === 6 && !isNaN(Number(\"0x\" + hex))\n );\n}\n\nfunction isImage(img: string) {\n const extension = img.slice(-4);\n if (extensionImage.includes(extension)) {\n return \"legenda\";\n }\n return false;\n}\n\nexport default function LineLegend(props: Props) {\n return (\n <>\n \n \n \n \n {props.columns.map((row, index) => {\n return {row};\n })}\n \n \n \n {props.data.map((rows, index) => (\n \n {rows.map((row, i) => {\n let style;\n if (isHexColor(row)) {\n style = {\n background:\n \"linear-gradient(to right, #\" +\n `${row}` +\n \" 90%, white 10%)\",\n };\n }\n\n return (\n \n {isImage(row) ? isImage(row) : !isHexColor(row) && row}\n \n );\n })}\n \n ))}\n \n
\n
\n \n );\n}\n","import { useState } from \"react\";\nimport { useMapEvents } from \"react-leaflet\";\n\ntype Props = {\n layer: string;\n};\n\nconst useLayerChecked = (props: Props) => {\n const [checkedLayer, setCheckedLayer] = useState(false);\n\n useMapEvents({\n layeradd: (event) => {\n if (\n (event.layer as any).options.name !== undefined &&\n (event.layer as any).options.name === props.layer\n ) {\n setCheckedLayer(true);\n }\n },\n layerremove: (event) => {\n if (\n (event.layer as any).options.name !== undefined &&\n (event.layer as any).options.name === props.layer\n ) {\n setCheckedLayer(false);\n }\n },\n });\n\n return { checkedLayer };\n};\n\nexport default useLayerChecked;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport aerodromosRepositories from \"../../repositories/Aerodromos\";\nimport { icon, LatLngExpression } from \"leaflet\";\nimport { Marker, useMapEvents } from \"react-leaflet\";\nimport { Typography } from \"@mui/material\";\nimport nl2br from \"react-nl2br\";\nimport { IResponse } from \"../../repositories/models\";\nimport ButtonLegend from \"../../components/ButtonLegend\";\nimport TemporaryDrawer from \"../../components/TemporaryDrawer\";\nimport LegendStatus from \"./components/LegendStatus\";\nimport LineLegend from \"../../components/LineLegend\";\nimport Box from \"@mui/material/Box\";\nimport AirplanemodeActiveIcon from \"@mui/icons-material/AirplanemodeActive\";\nimport useLayerChecked from \"../../hooks/useLayerChecked\";\n\nconst paises = \"brasil\";\n\nconst Green = \"/assets/images/aerodromos/green.svg\";\nconst GreenW = \"/assets/images/aerodromos/greenw.svg\";\nconst Red = \"/assets/images/aerodromos/red.svg\";\nconst RedW = \"/assets/images/aerodromos/redw.svg\";\nconst Yellow = \"/assets/images/aerodromos/yellow.svg\";\nconst YellowW = \"/assets/images/aerodromos/yelloww.svg\";\nconst Cinza = \"/assets/images/aerodromos/cinza.svg\";\n\nconst columnsLegend = [\"Visiblidade\", \"Condição\", \"Teto(ft)\", \"Cor\"];\nconst dataLegend = [\n [\">=5000\", \"e\", \">=1500\", \"/assets/images/aerodromos/twogreen.svg\"],\n [\n \"<5000 e >= 1500\",\n \"e/ou\",\n \"<1500 e >= 600\",\n \"/assets/images/aerodromos/twoyellow.svg\",\n ],\n [\"<1500 metros\", \"e/ou\", \"<600ft\", \"/assets/images/aerodromos/twored.svg\"],\n];\nconst layer = \"Aerodromos\";\nconst Aerodromos = () => {\n const subscribed = useRef(true);\n const [data, setData] = useState([]);\n const [open, setOpen] = useState(false);\n const [sizeIcon, setSizeIcon] = useState([12, 12]);\n const [infoAer, setInfoAer] = useState([]);\n const [openAer, setOpenAer] = useState(false);\n const { checkedLayer } = useLayerChecked({\n layer: layer,\n });\n\n useEffect(() => {\n subscribed.current = true;\n getStatus();\n return () => {\n subscribed.current = false;\n };\n }, []);\n\n const ZoomEvent = () => {\n useMapEvents({\n zoom(e) {\n const size = e.sourceTarget._zoom * 4;\n setSizeIcon([size, size]);\n },\n });\n };\n\n function iconColor(color: string) {\n let iconMarkup;\n switch (color) {\n case \"g\":\n iconMarkup = Green;\n break;\n case \"gw\":\n iconMarkup = GreenW;\n break;\n case \"r\":\n iconMarkup = Red;\n break;\n case \"rw\":\n iconMarkup = RedW;\n break;\n case \"y\":\n iconMarkup = Yellow;\n break;\n case \"yw\":\n iconMarkup = YellowW;\n break;\n case \"cinza\":\n iconMarkup = Cinza;\n break;\n default:\n iconMarkup = \"\";\n }\n const customMarkerIcon = icon({\n iconUrl: iconMarkup,\n iconSize: sizeIcon,\n });\n return customMarkerIcon;\n }\n const getStatus = async () => {\n try {\n const { data } = await aerodromosRepositories.status>(\n paises\n );\n if (subscribed.current) {\n setData(data.data);\n }\n } catch (error) {\n console.error(error);\n }\n };\n const toggleDrawer =\n (open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => {\n if (\n event.type === \"keydown\" &&\n ((event as React.KeyboardEvent).key === \"Tab\" ||\n (event as React.KeyboardEvent).key === \"Shift\")\n ) {\n return;\n }\n setOpen(open);\n };\n\n const toggleDrawerAer =\n (open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => {\n if (\n event.type === \"keydown\" &&\n ((event as React.KeyboardEvent).key === \"Tab\" ||\n (event as React.KeyboardEvent).key === \"Shift\")\n ) {\n return;\n }\n\n setOpenAer(open);\n };\n if (!checkedLayer) {\n return null;\n }\n return (\n <>\n {ZoomEvent}\n {data.map((coor, key) => {\n const position: LatLngExpression = [coor[2] as any, coor[3] as any];\n return (\n {\n setInfoAer(coor);\n setOpenAer(true);\n },\n }}\n />\n );\n })}\n \n \n \n \n \n \n \n \n \n \n {infoAer[0]} - {infoAer[1]}\n \n {nl2br(infoAer[5])}\n \n \n \n );\n};\n\nexport default Aerodromos;\n","import { AxiosInstance, AxiosResponse } from \"axios\";\nimport Api from \"../config/Api\";\nimport { LatLngExpression } from \"leaflet\";\n\nexport interface MensagemType {\n metar: string;\n taf: string;\n}\n\nexport interface SigmetType {\n id_fir: string;\n validade_inicial: string;\n validade_final: string;\n title: string;\n mens: string;\n no_mens: string;\n fenomeno: string;\n fenomeno_comp: string;\n fenomeno_cor: string;\n fenomeno_transparencia: string;\n lat_lon: LatLngExpression[];\n}\n\nexport class Mensagens {\n constructor(private http: AxiosInstance, protected resource: string) {}\n\n metar(cod: string): Promise> {\n return this.http.get(`${this.resource}/pwa/${cod}`);\n }\n\n taf(cod: string): Promise> {\n return this.http.get(`${this.resource}/taf/${cod}`);\n }\n\n sigmet(): Promise> {\n return this.http.get(`${this.resource}/sigmet`);\n }\n}\n\nconst mensagensRepositories = new Mensagens(Api, \"mensagens\");\nexport default mensagensRepositories;\n","import * as React from \"react\";\nimport { Polygon, Popup } from \"react-leaflet\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport mensagensRepositories, {\n SigmetType,\n} from \"../../repositories/Mensagens\";\nimport { IResponse, RequestPaginate } from \"../../repositories/models\";\nimport { Typography } from \"@mui/material\";\n\nimport ButtonLegend from \"../../components/ButtonLegend\";\nimport TemporaryDrawer from \"../../components/TemporaryDrawer\";\nimport LineLegend from \"../../components/LineLegend\";\nimport WaterIcon from \"@mui/icons-material/Water\";\nimport useLayerChecked from \"../../hooks/useLayerChecked\";\n\nconst columnsLegend = [\"Fenômeno\", \"Descrição\", \"Cor\"];\nconst dataLegend = [\n [\"VA CLD\", \"Cinzas Vulcânicas\", \"FF7F50\"],\n [\"RDOACT CLD\", \"Nuvem Radioativa\", \"CEECF5\"],\n [\"ICE\", \"Gelo\", \"00BFFF\"],\n [\"TC\", \"Ciclone\", \"009900\"],\n [\"TS\", \"Trovoada\", \"FF0000\"],\n [\"TURB\", \"Turbulência\", \"FFFF00\"],\n [\"VA\", \"Vulcão\", \"5C2E00\"],\n];\nconst layer = \"Sigmet\";\nconst Sigmet = () => {\n const subscribed = useRef(true);\n const [data, setData] = useState([]);\n const [open, setOpen] = useState(false);\n const { checkedLayer } = useLayerChecked({\n layer: layer,\n });\n const getSigmet = useCallback(async () => {\n setData([]);\n try {\n const response = await mensagensRepositories.sigmet<\n IResponse>\n >();\n if (subscribed.current) {\n setData(response.data.data.data);\n }\n } catch (error) {\n console.error(error);\n }\n }, []);\n\n useEffect(() => {\n subscribed.current = true;\n getSigmet();\n return () => {\n subscribed.current = false;\n };\n }, [getSigmet]);\n\n const toggleDrawer =\n (open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => {\n if (\n event.type === \"keydown\" &&\n ((event as React.KeyboardEvent).key === \"Tab\" ||\n (event as React.KeyboardEvent).key === \"Shift\")\n ) {\n return;\n }\n\n setOpen(open);\n };\n\n if (!checkedLayer) {\n return null;\n }\n\n return (\n <>\n {data.map((obj, index) => (\n \n \n \n {obj.title}k\n \n {obj.fenomeno_comp}\n \n \n ))}\n \n \n \n\n \n \n \n \n );\n};\n\nexport default Sigmet;\n","import { AxiosInstance, AxiosResponse } from \"axios\";\nimport Api from \"../config/Api\";\n\nexport interface SateliteDadosType {\n data: string;\n path: string;\n tamanho: number;\n}\n\nexport interface SateliteType {\n tipo: string;\n lat_lon: {\n id: number;\n lon_min: number;\n lon_max: number;\n lat_min: number;\n lat_max: number;\n };\n anima: string[];\n satelite: SateliteDadosType[];\n}\n\nexport interface StscType {\n anima: string[];\n stsc: StscDadoType[];\n}\n\nexport interface StscDadoType {\n ti: string;\n la: number;\n lo: number;\n to: number;\n ra: string;\n}\n\nexport interface RadarType {\n tipo: string;\n anima: string[];\n radar: RadarDadosType[];\n}\n\nexport interface RadarDadosType {\n id: number;\n nome: string;\n localidade: string;\n raio: number;\n lat_center: number;\n lon_center: number;\n lon_min: number;\n lon_max: number;\n lat_min: number;\n lat_max: number;\n path: string;\n tamanho: number;\n data: string;\n}\n\nexport const StscInitial = {\n anima: [],\n stsc: [],\n};\n\nexport class Produtos {\n constructor(private http: AxiosInstance, protected resource: string) {}\n\n satelite(tipo: string): Promise> {\n return this.http.get(`${this.resource}/satelite/${tipo}`);\n }\n\n stsc(): Promise> {\n return this.http.get(`${this.resource}/stsc`);\n }\n\n radar(tipo: string): Promise> {\n return this.http.get(`${this.resource}/radar/${tipo}`);\n }\n\n sigwx(): Promise> {\n return this.http.get(`${this.resource}/sigwx`);\n }\n}\n\nconst produtosRepositories = new Produtos(Api, \"produtos\");\nexport default produtosRepositories;\n","import React, { FunctionComponent } from \"react\";\nimport \"./styles.css\";\n\ntype props = {\n title: string;\n endTitle?: string;\n topLabels?: string[];\n valuesList: { label: string; color: string[]; scale: number }[];\n valuesListTop?: { value: string; label?: string; scale: number }[];\n};\n\nconst GradientLegend: FunctionComponent = ({\n title,\n valuesList,\n valuesListTop,\n endTitle,\n topLabels,\n}: props) => {\n function makeGradient(): string {\n let gradient = \"linear-gradient(to right, \";\n let stops = 0;\n valuesList.forEach((item) => (stops += item.scale));\n const fraction = Math.round(100 / stops);\n\n for (let i = 0; i < valuesList.length; i++) {\n const v = valuesList[i];\n if (v.scale > 1) {\n const colorProgressFraction = Math.round(\n (fraction * v.scale) / v.color.length\n );\n let colorProgressProgress = 0;\n /* eslint-disable no-loop-func */\n\n v.color.forEach((c) => {\n gradient += `${c} ${colorProgressProgress}%,`;\n colorProgressProgress += colorProgressFraction;\n });\n } else {\n v.color.forEach((c, j) => {\n gradient += `${c}`;\n if (j < v.color.length && i < valuesList.length) {\n if (j !== v.color.length - 1) {\n gradient += \", \";\n }\n }\n });\n if (i < valuesList.length - 1) {\n gradient += \", \";\n }\n }\n }\n\n gradient += \")\";\n return gradient;\n }\n\n return (\n
\n
{title}
\n {topLabels && (\n
\n {topLabels.map((l, i) => (\n \n {l}\n \n ))}\n
\n )}\n
\n {valuesListTop &&\n valuesListTop.map((v, k) => (\n \n ))}\n
\n
\n
\n {valuesList.map((v, k) => (\n \n ))}\n
\n {endTitle &&
{endTitle}
}\n \n );\n};\n\nconst LegendItem = ({ scale, label }: { scale: number; label: string }) => {\n let style;\n if (scale > 1) {\n style = { flex: `${scale}` };\n }\n return (\n \n {label}\n \n );\n};\n\nexport default GradientLegend;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Circle, ImageOverlay, Popup } from \"react-leaflet\";\nimport produtosRepositories, {\n RadarDadosType,\n RadarType,\n} from \"../../repositories/Produtos\";\nimport { IResponse } from \"../../repositories/models\";\nimport { Typography } from \"@mui/material\";\nimport ButtonLegend from \"../../components/ButtonLegend\";\nimport TemporaryDrawer from \"../../components/TemporaryDrawer\";\nimport GradientLegend from \"../../components/GradientLegend\";\nimport SettingsInputAntennaIcon from \"@mui/icons-material/SettingsInputAntenna\";\nimport useLayerChecked from \"../../hooks/useLayerChecked\";\n\nconst paramsDefault = \"maxcappi\";\nconst layer = \"Radar\";\nconst Radar = () => {\n const subscribed = useRef(true);\n const [data, setData] = useState([]);\n const [open, setOpen] = useState(false);\n const { checkedLayer } = useLayerChecked({\n layer: layer,\n });\n useEffect(() => {\n subscribed.current = true;\n getData(paramsDefault);\n return () => {\n subscribed.current = false;\n };\n }, []);\n\n const getData = async (parameters = paramsDefault) => {\n try {\n const { data } = await produtosRepositories.radar>(\n parameters\n );\n if (subscribed.current) {\n if (data.data.radar !== undefined) {\n setData(data.data.radar[0] as any);\n }\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n const toggleDrawer =\n (open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => {\n if (\n event.type === \"keydown\" &&\n ((event as React.KeyboardEvent).key === \"Tab\" ||\n (event as React.KeyboardEvent).key === \"Shift\")\n ) {\n return;\n }\n\n setOpen(open);\n };\n\n if (!checkedLayer) {\n return null;\n }\n\n return (\n <>\n {data.length > 0 &&\n data.map((row: RadarDadosType, index: number) => {\n const color = row.path === null ? \"#721c24a3\" : \"#999\";\n return (\n <>\n \n \n \n \n {row.nome}\n \n \n {row.data ? row.data : \"Não disponível\"}\n \n \n \n \n );\n })}\n \n \n \n \n 100\", color: [\"#FF00FF\", \"#9758C9\"], scale: 1 },\n ]}\n valuesListTop={[\n { value: \"0\", scale: 1, label: \"M. Fraco\" },\n { value: \"20\", scale: 1, label: \"Fraco\" },\n { value: \"30\", scale: 1, label: \"Moderado\" },\n { value: \"45\", scale: 1, label: \"Forte\" },\n { value: \"63\", scale: 1, label: \"\" },\n { value: \"75\", scale: 1, label: \"M. Forte\" },\n ]}\n />\n \n \n );\n};\n\nexport default Radar;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport produtosRepositories, {\n SateliteDadosType,\n SateliteType,\n} from \"../../repositories/Produtos\";\nimport { IResponse } from \"../../repositories/models\";\nimport { ImageOverlay } from \"react-leaflet\";\n\nimport ButtonLegend from \"../../components/ButtonLegend\";\nimport TemporaryDrawer from \"../../components/TemporaryDrawer\";\nimport GradientLegend from \"../../components/GradientLegend\";\nimport SatelliteIcon from \"@mui/icons-material/Satellite\";\nimport useLayerChecked from \"../../hooks/useLayerChecked\";\n\nconst paramsDefault = \"realcada\";\nconst layer = \"Satélite\";\nconst Satelite = () => {\n const subscribed = useRef(true);\n const [latLon, setLatLon] = useState({\n id: 1,\n lat_max: 12.52,\n lat_min: -56,\n lon_max: -25.24,\n lon_min: -100,\n });\n const [satelite, setSatelite] = useState({\n data: \"\",\n path: \"\",\n tamanho: 0,\n });\n const [hora, setHora] = useState(\"\");\n const [open, setOpen] = useState(false);\n const { checkedLayer } = useLayerChecked({\n layer: layer,\n });\n useEffect(() => {\n subscribed.current = true;\n getSatelite();\n return () => {\n subscribed.current = false;\n };\n }, []);\n\n const getSatelite = async (parameters = paramsDefault) => {\n try {\n const { data } = await produtosRepositories.satelite<\n IResponse\n >(parameters);\n if (subscribed.current) {\n if (data.data.satelite !== undefined) {\n setLatLon(data.data.lat_lon);\n setSatelite(data.data.satelite[0]);\n setHora(data.data.anima[0] + \"Z\");\n }\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n const toggleDrawer =\n (open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => {\n if (\n event.type === \"keydown\" &&\n ((event as React.KeyboardEvent).key === \"Tab\" ||\n (event as React.KeyboardEvent).key === \"Shift\")\n ) {\n return;\n }\n\n setOpen(open);\n };\n if (!checkedLayer) {\n return null;\n }\n return (\n <>\n {satelite.path && (\n <>\n \n \n )}\n \n \n \n \n \n \n \n );\n};\n\nexport default Satelite;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport produtosRepositories, {\n StscDadoType,\n StscType,\n} from \"../../repositories/Produtos\";\nimport { IResponse } from \"../../repositories/models\";\nimport { Circle } from \"react-leaflet\";\nimport ButtonLegend from \"../../components/ButtonLegend\";\nimport useLayerChecked from \"../../hooks/useLayerChecked\";\nimport { CloudLightning } from \"react-feather\";\n\nconst layer = \"Tsc\";\n\nconst Tsc = () => {\n const subscribed = useRef(true);\n const [data, setData] = useState([]);\n const [hora, setHora] = useState(\"\");\n const { checkedLayer } = useLayerChecked({\n layer: layer,\n });\n\n useEffect(() => {\n subscribed.current = true;\n getTsc();\n return () => {\n subscribed.current = false;\n };\n }, []);\n\n const getTsc = async () => {\n try {\n const { data } = await produtosRepositories.stsc>();\n if (subscribed.current) {\n if (data.data.stsc !== undefined) {\n setData(data.data.stsc[0] as any);\n setHora(data.data.anima[0]);\n }\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n if (!checkedLayer) {\n return null;\n }\n\n return (\n <>\n {data.map((row, index) => (\n \n ))}\n \n \n \n \n );\n};\n\nexport default Tsc;\n","import React, { FC } from \"react\";\n\nimport {\n AppBar,\n Dialog,\n DialogContent,\n IconButton,\n ListItem,\n SvgIconProps,\n Toolbar,\n Typography,\n} from \"@mui/material\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface ModalType {\n title: string;\n menu: string;\n linkExterno?: boolean;\n icon: React.ReactElement;\n children: React.ReactNode;\n}\n\nconst MenuModal: FC = ({ title, menu, icon, children }) => {\n const [open, setOpen] = React.useState(false);\n\n const handleClickOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n return (\n \n \n {icon}\n \n \n\n \n \n \n \n \n \n \n {title}\n \n \n \n\n {children}\n \n \n );\n};\n\nexport default MenuModal;\n","import React, { FC, useEffect, useState } from \"react\";\nimport { TextFieldProps } from \"@mui/material/TextField\";\n\nimport { useDebounce } from \"use-debounce\";\nimport {\n Autocomplete,\n AutocompleteProps,\n CircularProgress,\n TextField,\n} from \"@mui/material\";\n\ninterface AsyncAutocompleteProps {\n fetchOptions: (search: string) => Promise;\n debounceTime?: number;\n TextFieldProps?: TextFieldProps;\n AutocompleteProps?: Omit<\n AutocompleteProps,\n \"renderInput\" | \"options\"\n >;\n}\n\nconst AsyncAutocomplete: FC = (\n props: AsyncAutocompleteProps\n) => {\n const { AutocompleteProps, debounceTime = 300, fetchOptions } = props;\n const { freeSolo, onOpen, onClose } = AutocompleteProps as any;\n const [open, setOpen] = useState(false);\n const [searchText, setSearchText] = useState(\"\");\n const [options, setOptions] = useState([]);\n const [debouncedSearchText] = useDebounce(searchText, debounceTime);\n const loading = open && options.length === 0;\n\n useEffect(() => {\n if (!open) {\n return;\n }\n if (debouncedSearchText === \"\" && freeSolo) {\n return;\n }\n\n let isSubscribed = true;\n (async () => {\n try {\n const data = await fetchOptions(debouncedSearchText);\n if (isSubscribed) {\n setOptions(data);\n }\n } catch (e) {\n console.log(e);\n }\n })();\n return () => {\n isSubscribed = false;\n };\n }, [debouncedSearchText, fetchOptions, freeSolo, open]);\n\n const textFieldProps: TextFieldProps = {\n margin: \"normal\",\n variant: \"outlined\",\n fullWidth: true,\n InputLabelProps: { shrink: true },\n ...(props.TextFieldProps && { ...props.TextFieldProps }),\n };\n\n const autocompleteProps: AutocompleteProps = {\n loadingText: \"Carregando...\",\n noOptionsText: \"Nenhum item encontrado\",\n ...(AutocompleteProps && { ...AutocompleteProps }),\n open,\n options,\n loading,\n inputValue: searchText,\n onOpen() {\n setOpen(true);\n onOpen && onOpen();\n },\n onClose() {\n setOpen(false);\n onClose && onClose();\n },\n onInputChange(event, value) {\n setSearchText(value);\n },\n // eslint-disable-next-line react/display-name\n renderInput: (params) => (\n \n {loading && }\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n ),\n };\n\n return ;\n};\n\nexport default AsyncAutocomplete;\n","import React from \"react\";\nimport { FormControlProps, FormHelperText } from \"@mui/material\";\nimport aerodromosRepositories from \"../../../repositories/Aerodromos\";\nimport AsyncAutocomplete from \"../../../components/AsyncAutocomplete\";\n\ninterface LocalidadesFieldProps {\n setLocalidades: (localidade: any) => void;\n error?: any;\n FormControlProps?: FormControlProps;\n}\nconst LocalidadesField = (props: LocalidadesFieldProps) => {\n const { setLocalidades, error } = props;\n\n function fetchOptions(pesquisa: string) {\n return aerodromosRepositories\n .pesquisa(pesquisa)\n .then((data: any) => data.data.data);\n }\n\n return (\n <>\n option.cod + \" - \" + option.nome,\n onChange: (event: any, value: any) => {\n setLocalidades(value);\n },\n disableCloseOnSelect: false,\n freeSolo: true,\n id: \"localidades-id\",\n }}\n fetchOptions={fetchOptions}\n TextFieldProps={{\n label: \"Localidades\",\n id: \"origem-id\",\n margin: \"normal\",\n }}\n />\n {error && {error.message}}\n \n );\n};\n\nexport default LocalidadesField;\n","/* eslint-disable no-template-curly-in-string */\n\nimport { setLocale } from \"yup\";\n\nconst ptBR = {\n mixed: {\n required: \"${path} é requerido\",\n notType: \"${path} é inválido\",\n },\n string: {\n max: \"${path} precisa ter no máximo ${max} caracteres\",\n email: \"${path} inválido\",\n },\n number: {\n min: \"${path} precisa ser no mínimo ${min}\",\n },\n};\n\nsetLocale(ptBR);\n\nexport * from \"yup\";\n","import * as React from \"react\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport List from \"@mui/material/List\";\nimport { Box, ListItem } from \"@mui/material\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { MensagemType } from \"../../../repositories/Mensagens\";\nimport nl2br from \"react-nl2br\";\n\ninterface ListMensageProps {\n mens: MensagemType[];\n}\n\nconst ListMensage = ({ mens }: ListMensageProps) => {\n return (\n <>\n {Object.keys(mens).length > 0 ? (\n Object.keys(mens).map((row, index) => (\n \n {row}\n \n }\n >\n \n \n \n \n \n \n \n ))\n ) : (\n Nenhuma informação disponível.\n )}\n \n );\n};\n\nexport default ListMensage;\n// import React from \"react\";\n// import { makeStyles, Theme, createStyles } from \"@mui/material/styles\";\n// import ListSubheader from \"@mui/material/ListSubheader\";\n// import List from \"@mui/material/List\";\n// import ListItem from \"@mui/material/ListItem\";\n// import ListItemText from \"@mui/material/ListItemText\";\n//\n// import { MensagemType } from \"../../../repositories/Mensagens\";\n// import nl2br from \"react-nl2br\";\n//\n// const useStyles = makeStyles((theme: Theme) =>\n// createStyles({\n// root: {\n// width: \"100%\",\n// backgroundColor: theme.palette.background.paper,\n// },\n// nested: {\n// paddingLeft: theme.spacing(4),\n// },\n// title: {\n// backgroundColor: \"#e0e0e0\",\n// fontWeight: \"bold\",\n// color: \"#000\",\n// },\n// })\n// );\n//\n// interface ListMensageProps {\n// mens: MensagemType[];\n// }\n//\n// const ListMensage = ({ mens }: ListMensageProps) => {\n// const classes = useStyles();\n//\n// return (\n// <>\n// {Object.keys(mens).length > 0\n// ? Object.keys(mens).map((row, index) => (\n// \n// {row}\n// \n// }\n// className={classes.root}\n// >\n// \n// \n// \n// \n// \n// \n// \n// ))\n// : \"Nenhuma informação disponível.\"}\n// \n// );\n// };\n//\n// export default ListMensage;\n","import React, { useState } from \"react\";\nimport LocalidadesField from \"./components/localidadesField\";\nimport * as yup from \"../../vendor/yup\";\nimport { Box, Button, CircularProgress } from \"@mui/material\";\nimport { SubmitHandler, useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport mensagensRepositories from \"../../repositories/Mensagens\";\nimport ListMensage from \"./components/ListMensage\";\n\ninterface MensagensProps {\n localidades: any[];\n}\n\nconst schema = yup.object().shape({\n localidades: yup\n .array()\n .min(1, \"Localidade é requerido\")\n .label(\"Localidade\")\n .required(),\n});\n\nconst Mensagens = () => {\n const {\n handleSubmit,\n setValue,\n formState: { errors },\n } = useForm({\n resolver: yupResolver(schema),\n defaultValues: {\n localidades: [],\n },\n });\n const [mensagens, setMensagens] = useState([]);\n const [loading, setLoading] = useState(false);\n const [search, setSearch] = useState(false);\n\n const getMetarTaf = async (cod: string) => {\n try {\n setLoading(true);\n const { data } = await mensagensRepositories.metar(cod);\n setMensagens(data);\n setSearch(true);\n } catch (e) {\n console.log(e);\n } finally {\n setLoading(false);\n }\n };\n\n const onSubmit: SubmitHandler = (formData) => {\n const localidades = formData.localidades.map((row) => row.cod);\n getMetarTaf(localidades.join());\n };\n return (\n \n
\n setValue(\"localidades\", value)}\n error={errors.localidades}\n />\n \n \n {loading && }\n {search && (\n <>\n \n \n )}\n
\n );\n};\n\nexport default Mensagens;\n","import * as React from \"react\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Box from \"@mui/material/Box\";\n\nexport default function CircularIndeterminate() {\n return (\n \n \n \n );\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport produtosRepositories from \"../../repositories/Produtos\";\nimport { Box } from \"@mui/material\";\nimport Loading from \"../../components/Loading\";\n\nconst Sigwx = () => {\n const subscribed = useRef(true);\n const [loading, setLoading] = useState(false);\n const [imageUrl, setImageUrl] = useState(\"\");\n\n useEffect(() => {\n subscribed.current = true;\n getSigwx();\n return () => {\n subscribed.current = false;\n };\n }, []);\n\n const getSigwx = async () => {\n try {\n setLoading(true);\n const { data } = await produtosRepositories.sigwx();\n setImageUrl(data);\n } catch (error) {\n console.error(error);\n } finally {\n setLoading(false);\n }\n };\n return (\n \n {loading ? (\n \n ) : (\n \n {\"Sigwx\"}\n \n )}\n \n );\n};\n\nexport default Sigwx;\n","import {\n isMobile,\n isAndroid,\n isFirefox,\n isIOS,\n isOpera,\n browserVersion,\n} from \"mobile-device-detect\";\n\nexport const platforms = {\n NATIVE: \"native\", // currently: Chrome, Edge mobile, Samsung internet\n FIREFOX: \"firefox\",\n FIREFOX_NEW: \"firefox_new\", // above version 79\n OPERA: \"opera\",\n IDEVICE: \"idevice\",\n OTHER: \"other\", // don't know, so will do nothing\n};\n\nexport function getPlatform() {\n let platform = platforms.OTHER;\n // eslint-disable-next-line no-prototype-builtins\n if (window.hasOwnProperty(\"BeforeInstallPromptEvent\")) {\n platform = platforms.NATIVE;\n } else if (isMobile && isAndroid && isFirefox && +browserVersion >= 79) {\n platform = platforms.FIREFOX_NEW;\n } else if (isMobile && isAndroid && isFirefox) {\n platform = platforms.FIREFOX;\n } else if (isOpera && isAndroid && isMobile) {\n platform = platforms.OPERA;\n } else if (isIOS && isMobile) {\n platform = platforms.IDEVICE;\n }\n\n return platform;\n}\n","import React from \"react\";\nimport { SvgIcon } from \"@mui/material\";\n\nexport function IOSShareIcon() {\n return (\n \n \n \n \n \n );\n}\n\nexport function FireFoxA2HSIcon() {\n return (\n \n \n \n \n \n \n );\n}\n\nexport function MenuIcon() {\n return (\n \n \n \n );\n}\n\nexport function OperaA2HSIcon() {\n return (\n \n \n \n );\n}\n","import React from \"react\";\nimport { Box, Button, DialogActions, Typography } from \"@mui/material\";\nimport { FC, ReactNode } from \"react\";\nimport { platforms } from \"./Platforms\";\nimport {\n IOSShareIcon,\n FireFoxA2HSIcon,\n MenuIcon,\n OperaA2HSIcon,\n} from \"./icons\";\n\ninterface DialogActionWithInstructionsType {\n action1: ReactNode;\n action2: ReactNode;\n onSubmit: () => void;\n}\n\nconst DialogActionWithInstructions: FC = ({\n action1,\n action2,\n onSubmit,\n}) => {\n return (\n \n \n \n Para instalar este aplicativo:\n \n
    \n
  • \n \n {action1}\n \n
  • \n
  • {action2}
  • \n
\n
\n \n \n \n
\n );\n};\n\ninterface InstallDialogActionType {\n onClose: () => void;\n platform: string;\n onSubmit: () => void;\n}\n\nconst InstallDialogAction: FC = ({\n onClose,\n platform,\n onSubmit,\n}) => {\n return (\n <>\n \n {platform === platforms.NATIVE && (\n <>\n \n \n Instalar\n \n \n )}\n {platform === platforms.IDEVICE && (\n \n Toque no botão de compartilhamento:\n \n \n }\n action2=\"em seguida, localize e toque 'Adicionar à Tela de Início'\"\n onSubmit={onSubmit}\n />\n )}\n {platform === platforms.FIREFOX && (\n \n Toque neste ícone na barra de endereço:\n \n \n }\n action2=\"em seguida, toque '+Adicionar à Tela de Início'\"\n onSubmit={onSubmit}\n />\n )}\n {platform === platforms.FIREFOX_NEW && (\n \n Toque no botão de menu:\n \n \n }\n action2=\"em seguida, toque 'Install'\"\n onSubmit={onSubmit}\n />\n )}\n {platform === platforms.OPERA && (\n \n Toque no botão de menu:\n \n \n }\n action2={\n <>\n em seguida, toque\n \n Home screen\n \n }\n onSubmit={onSubmit}\n />\n )}\n {platform === platforms.OTHER && (\n \n \n Infelizmente, o recurso de instalação não é suportado pelo seu\n navegador.\n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default InstallDialogAction;\n","import React, { FC } from \"react\";\nimport {\n Box,\n Dialog,\n DialogContent,\n DialogTitle,\n Typography,\n} from \"@mui/material\";\nimport InstallDialogAction from \"./InstallDialogAction\";\n\ninterface InstallDialogType {\n open: boolean;\n onClose: () => void;\n onSubmit: () => void;\n logo?: any;\n title: string;\n subtitle?: string;\n features?: any;\n platform: string;\n description?: string;\n}\n\nconst InstallDialog: FC = ({\n open,\n onClose,\n onSubmit,\n title,\n subtitle,\n logo,\n features,\n platform,\n description,\n}) => {\n return (\n \n {title || \"Install Web App\"}\n \n \n {!!logo && (\n \n \"logo\"\n \n )}\n {!!subtitle && (\n \n {subtitle}\n \n )}\n \n {!!description && (\n <>\n \n {description}\n \n \n )}\n \n \n \n );\n};\n\nexport default InstallDialog;\n","import React, {\n useState,\n useRef,\n createContext,\n useContext,\n FC,\n useEffect,\n useCallback,\n} from \"react\";\nimport { platforms, getPlatform } from \"./Platforms\";\nimport InstallDialog from \"./InstallDialog\";\n\nconst ReactPWAInstallContext = createContext({\n supported: () => {\n return false;\n },\n isInstalled: () => {\n return false;\n },\n pwaInstall: (options: any) => {\n return {};\n },\n});\n\nexport const useReactPWAInstall = () => useContext(ReactPWAInstallContext);\n\nconst platform = getPlatform();\n\ninterface ReactPWAInstallProviderType {\n children: React.ReactNode;\n enableLogging: boolean;\n}\n\nconst ReactPWAInstallProvider: FC = ({\n children,\n enableLogging,\n}) => {\n const awaitingPromiseRef = useRef(null);\n const deferredprompt = useRef(null);\n const [dialogState, setDialogState] = useState(null);\n\n const logger = useCallback(\n (message: string) => {\n if (enableLogging) {\n console.log(message);\n }\n },\n [enableLogging]\n );\n\n const supported = useCallback(() => {\n if (deferredprompt.current != null && platform === platforms.NATIVE) {\n logger(\"supported: true - native platform\");\n return true;\n }\n if (platform !== platforms.NATIVE && platform !== platforms.OTHER) {\n logger(\"supported: true - manual support\");\n return true;\n }\n logger(\"supported: false\");\n return false;\n }, [logger]);\n\n const isInstalled = useCallback(() => {\n if (\n (window.navigator as any).standalone === true ||\n window.matchMedia(\"(display-mode: standalone)\").matches\n ) {\n logger(\"isInstalled: true. Already in standalone mode\");\n return true;\n }\n logger(\"isInstalled: false.\");\n return false;\n }, [logger]);\n\n const [contextValue, setContextValue] = useState({\n supported: supported,\n isInstalled: isInstalled,\n pwaInstall: openDialog,\n });\n\n const handleBeforeInstallPromptEvent = useCallback(\n (event: any) => {\n event.preventDefault();\n deferredprompt.current = event;\n logger(\"beforeinstallprompt event fired and captured\");\n setContextValue({\n supported: supported,\n isInstalled: isInstalled,\n pwaInstall: openDialog,\n });\n },\n [isInstalled, logger, supported]\n );\n\n useEffect(() => {\n window.addEventListener(\n \"beforeinstallprompt\",\n handleBeforeInstallPromptEvent\n );\n return function cleanup() {\n window.removeEventListener(\n \"beforeinstallprompt\",\n handleBeforeInstallPromptEvent\n );\n };\n }, [handleBeforeInstallPromptEvent]);\n\n function openDialog(options: any) {\n setDialogState(options);\n return new Promise((resolve, reject) => {\n awaitingPromiseRef.current = { resolve, reject };\n });\n }\n\n function handleClose() {\n setDialogState(null);\n if (awaitingPromiseRef.current) {\n awaitingPromiseRef.current.reject();\n }\n }\n\n function handleInstall() {\n logger(\"handleInstall called\");\n setDialogState(null);\n if (deferredprompt.current != null) {\n return (deferredprompt.current as any)\n .prompt()\n .then((event: any) => (deferredprompt.current as any).userChoice)\n .then((choiceResult: any) => {\n if (choiceResult.outcome === \"accepted\") {\n logger(\"PWA native installation succesful\");\n if (awaitingPromiseRef.current) {\n awaitingPromiseRef.current.resolve();\n }\n } else {\n logger(\"User opted out by cancelling native installation\");\n if (awaitingPromiseRef.current) {\n awaitingPromiseRef.current.reject();\n }\n }\n })\n .catch((err: any) => {\n if (awaitingPromiseRef.current) {\n awaitingPromiseRef.current.resolve();\n }\n logger(`Error occurred in the installing process: ${err}`);\n });\n } else {\n if (awaitingPromiseRef.current) {\n awaitingPromiseRef.current.resolve();\n }\n }\n }\n\n return (\n <>\n \n {children}\n \n \n \n );\n};\n\nexport default ReactPWAInstallProvider;\n","import React from \"react\";\n\nimport { ListItem } from \"@mui/material\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport { useReactPWAInstall } from \"../vendor/pwa-install\";\n\nconst MenuInstall = () => {\n const { pwaInstall, supported, isInstalled } = useReactPWAInstall();\n\n const handleClick = () => {\n pwaInstall({\n title: \"Instalar Web App\",\n subtitle: \"REDEMET LITE\",\n logo: \"logo192.png\",\n features: (\n
    \n
  • Cool feature 1
  • \n
  • Cool feature 2
  • \n
  • Even cooler feature
  • \n
  • Works offline
  • \n
\n ),\n description: \"Desenvolvido para dispositivos móveis\",\n });\n };\n\n if (supported() && !isInstalled()) {\n return (\n \n {}\n \n \n );\n } else {\n return null;\n }\n};\n\nexport default MenuInstall;\n","import React from \"react\";\n\nimport { List } from \"@mui/material\";\nimport MenuLayer from \"../Leaflet/MenuLayer\";\nimport AirplanemodeActiveIcon from \"@mui/icons-material/AirplanemodeActive\";\nimport { LayerGroup } from \"react-leaflet\";\nimport Aerodromos from \"../../produtos/Aerodromos\";\nimport Sigmet from \"../../produtos/Sigmet\";\nimport WaterIcon from \"@mui/icons-material/Water\";\nimport SettingsInputAntennaIcon from \"@mui/icons-material/SettingsInputAntenna\";\nimport Radar from \"../../produtos/Radar\";\nimport SatelliteIcon from \"@mui/icons-material/Satellite\";\nimport Satelite from \"../../produtos/Satelite\";\nimport { CloudLightning } from \"react-feather\";\nimport Tsc from \"../../produtos/Tsc\";\nimport MenuModal from \"../MenuModal\";\nimport { FilterDrama, ManageSearch } from \"@mui/icons-material\";\nimport Mensagens from \"../../produtos/Mensagens\";\nimport Sigwx from \"../../produtos/Sigwx\";\nimport MenuInstall from \"../MenuInstall\";\n\nconst ListItems = () => {\n return (\n \n }>\n \n \n \n \n }>\n \n \n }>\n \n \n \n \n }>\n \n \n \n \n }>\n \n \n \n \n }>\n \n \n \n \n }>\n \n \n \n \n );\n};\nexport default ListItems;\n","import React from \"react\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\nimport Divider from \"@mui/material/Divider\";\nimport ListItems from \"./ListItems\";\nimport MuiDrawer from \"@mui/material/Drawer\";\nimport { styled } from \"@mui/material/styles\";\n\nconst drawerWidth = 190;\n\nconst Drawer = styled(MuiDrawer, {\n shouldForwardProp: (prop) => prop !== \"open\",\n})(({ theme, open }) => ({\n \"& .MuiDrawer-paper\": {\n whiteSpace: \"nowrap\",\n width: drawerWidth,\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n boxSizing: \"border-box\",\n ...(!open && {\n overflowX: \"hidden\",\n transition: theme.transitions.create(\"width\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n width: theme.spacing(5),\n [theme.breakpoints.up(\"sm\")]: {\n width: theme.spacing(5),\n },\n }),\n },\n}));\nconst MenuList = () => {\n const [open, setOpen] = React.useState(false);\n const toggleDrawer = () => {\n setOpen(!open);\n };\n\n return (\n \n \n \n {open ? : }\n \n {\"logo\"}\n \n \n \n \n );\n};\n\nexport default MenuList;\n","import { LatLngTuple } from \"leaflet\";\n\nexport const CENTER: LatLngTuple = [-15.7801, -55.0];\nexport const ZOOM = 3;\nexport const MINZOOM = 2;\n","import React, { ReactNode } from \"react\";\nimport { MapContainer, WMSTileLayer, ZoomControl } from \"react-leaflet\";\nimport { CENTER, MINZOOM, ZOOM } from \"../../config/map\";\nimport { CRS } from \"leaflet\";\nimport ControlDiv from \"./ControlDiv\";\nimport Loading from \"../Loading\";\n\ninterface MapProps {\n children?: ReactNode;\n loading?: boolean;\n}\nconst Map = ({ children, loading }: MapProps) => {\n return (\n \n \n \n\n {children && children}\n {loading && (\n \n \n \n )}\n \n );\n};\n\nexport default Map;\n","import * as React from \"react\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport InfoIcon from \"@mui/icons-material/Help\";\nimport { FC, ReactNode } from \"react\";\nimport MenuList from \"./MenuList\";\nimport Map from \"../Leaflet/Map\";\nimport ControlDiv from \"../Leaflet/ControlDiv\";\nimport ButtonLegend from \"../ButtonLegend\";\n\nconst mdTheme = createTheme();\ninterface LayoutProps {\n title?: string;\n children?: ReactNode;\n}\n\nconst Layout: FC = ({ children }) => {\n return (\n \n \n \n window.open(\n \"https://ajuda.decea.mil.br/artigo-categoria/redemet-lite/\",\n \"_blank\"\n )\n }\n position={\"topright\"}\n >\n \n \n \n \n \n\n \n theme.palette.mode === \"light\"\n ? theme.palette.grey[100]\n : theme.palette.grey[900],\n flexGrow: 1,\n height: \"100vh\",\n overflow: \"auto\",\n }}\n >\n \n \n \n \n );\n};\n\nexport default Layout;\n","import React from \"react\";\nimport \"./App.css\";\nimport Layout from \"./components/Layout\";\n\nconst App = () => {\n return ;\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://cra.link/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\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: 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://cra.link/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: string, config?: 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://cra.link/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: string, config?: 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 { 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 ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorkerRegistration from \"./serviceWorkerRegistration\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport ReactPWAInstallProvider from \"./vendor/pwa-install\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\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://cra.link/PWA\n//serviceWorkerRegistration.unregister();\nserviceWorkerRegistration.unregister();\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":""}