{"version":3,"file":"component---src-pages-data-tsx-80624cf7b8df91c6d4d7.js","mappings":"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","sources":["webpack://marine-debris-tracker/./src/context/DataPlatform/DataPlatformContext.tsx","webpack://marine-debris-tracker/./src/components/Forms/Switch.tsx","webpack://marine-debris-tracker/./src/components/DataPlatform/Filters/ListSelect.tsx","webpack://marine-debris-tracker/./src/components/DataPlatform/Filters/CategoriesFilter.tsx","webpack://marine-debris-tracker/./src/components/DataPlatform/Filters/RadioGroupFilter.tsx","webpack://marine-debris-tracker/./src/util/data/formatDownloadData.ts","webpack://marine-debris-tracker/./src/components/DataPlatform/Filters.tsx","webpack://marine-debris-tracker/./src/components/DataPlatform/Map/MapStatsContainer.tsx","webpack://marine-debris-tracker/./src/components/DataPlatform/MapStats.tsx","webpack://marine-debris-tracker/./src/components/DataPlatform/DataPlatform.tsx","webpack://marine-debris-tracker/./src/context/DataPlatform/DataPlatformContextProvider.tsx","webpack://marine-debris-tracker/./src/pages/data.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport { FilterType } from \"../../types/filters\";\nimport { ListType } from \"../../types/list\";\n\ntype MapDataType = { latitude: string; longitude: string; [k: string]: any };\n\ninterface DataPlatformContextType {\n lists?: ListType[];\n data?: MapDataType[];\n setData?: (s: MapDataType[]) => void;\n loading?: boolean;\n err?: string;\n filters?: FilterType;\n\n setFilters?: (f: FilterType) => void;\n\n loadData?: (f: FilterType) => Promise;\n}\n\nexport const DataPlatformContext = createContext({});\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../../styles/colors\";\n\nconst SwitchLabel = styled.label`\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n width: 40px;\n height: 13px;\n background: ${({ isChecked }) =>\n isChecked ? `${colors.orange}65` : `${colors.black}65`};\n border-radius: 100px;\n position: relative;\n transition: background-color 0.2s;\n`;\n\nconst SwitchButton = styled.span`\n position: absolute;\n /* top: 2px; */\n left: 2px;\n width: 23px;\n height: 23px;\n border-radius: 45px;\n transition: 0.3s;\n background: ${({ isChecked }) => (isChecked ? colors.orange : colors.white)};\n box-shadow: 0 0 2px 0 rgba(10, 10, 10, 0.29);\n left: ${({ isChecked }) => (isChecked ? `calc(100% - 2px)` : `0px`)};\n transform: ${({ isChecked }) =>\n isChecked ? `translateX(-90%)` : `translateX(0%)`};\n`;\n\nconst SwitchWrapper = styled.div`\n display: flex;\n margin: 5px 0px;\n align-items: center;\n`;\n\nconst SwitchContent = styled.div`\n margin-left: 10px;\n`;\n\nconst Switch = ({ handleChange, checked, children }) => {\n return (\n <>\n \n \n \n \n {children}\n \n \n );\n};\n\nexport default Switch;\n","import React, { useContext } from \"react\";\nimport { DataPlatformContext } from \"../../../context/DataPlatform/DataPlatformContext\";\nimport { getOrganization } from \"../../../dataApi/getOrganizations\";\nimport Select from \"../../Forms/Select\";\n\nconst ListSelect = () => {\n const { lists, loading, filters, setFilters } = useContext(\n DataPlatformContext\n );\n\n // create list name for select to account for long names\n const createListName = (name: string) => {\n if (name.length > 30) {\n return name.substr(0, 30) + \"...\";\n } else {\n return name;\n }\n };\n\n const selectData: { label: string; value: string }[] = [\n {\n label: \"All Organizations\",\n value: \"-1\",\n },\n ];\n\n if (lists) {\n lists.forEach((list) => {\n selectData.push({ label: list.name, value: `${list.id}` });\n });\n }\n\n return (\n {\n if (val === \"-1\") {\n setFilters({ ...filters, list: \"all\" });\n return;\n }\n const listId = lists.find((list) => `${list.id}` === val).id;\n // fetch detailed list data\n const list = await getOrganization(listId);\n setFilters({ ...filters, list: list });\n }}\n data={selectData}\n title={\n !filters.list && loading\n ? \"Loading...\"\n : filters.list\n ? filters.list === \"all\"\n ? \"All Organizations\"\n : createListName(filters.list.name)\n : \"Select an Organization\"\n }\n >\n );\n};\n\nexport default ListSelect;\n","import React, { useContext } from \"react\";\nimport Select from \"../../Forms/Select\";\nimport styled from \"styled-components\";\nimport { Checkbox } from \"@material-ui/core\";\nimport { colors } from \"../../../styles/colors\";\nimport { DataPlatformContext } from \"../../../context/DataPlatform/DataPlatformContext\";\n\nconst CheckboxGrid = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr;\n margin: 0px 10px;\n`;\n\nconst CheckboxLabel = styled.div`\n width: 150px;\n text-align: center;\n padding: 10px;\n cursor: pointer;\n &:hover {\n background-color: ${`${colors.black}20`};\n }\n`;\n\nconst CheckboxLabels = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n`;\n\nconst CheckboxWrapper = styled.div`\n cursor: pointer;\n`;\n\nconst DebrisTrackerCheckbox = ({\n children,\n isChecked,\n update,\n}: {\n children: any;\n isChecked: boolean;\n update: () => void;\n}) => {\n return (\n \n \n {children}\n \n );\n};\n\nconst CategoriesFilter = () => {\n const { filters, setFilters, loading } = useContext(DataPlatformContext);\n\n const selectAll = () => {\n const newCheckboxes = filters.checkboxes.map((item) => {\n return { ...item, value: true };\n });\n setFilters({ ...filters, checkboxes: newCheckboxes });\n };\n\n const unselectAll = () => {\n const newCheckboxes = filters.checkboxes.map((item) => {\n return { ...item, value: false };\n });\n setFilters({ ...filters, checkboxes: newCheckboxes });\n };\n\n return (\n \n );\n};\n\nexport default CategoriesFilter;\n","import RadioGroup from \"@material-ui/core/RadioGroup\";\nimport styled from \"styled-components\";\nimport React, { useContext } from \"react\";\nimport RadioButton from \"../../Forms/RadioButton\";\nimport { DataPlatformContext } from \"../../../context/DataPlatform/DataPlatformContext\";\n\nexport const FilterRadioGroup = styled(RadioGroup)`\n color: rgba(255, 255, 255, 1);\n`;\n\nconst FilterDate = styled.input`\n margin: 10px 0px;\n font-family: \"Lato\";\n @media only screen and (max-width: 478px) {\n margin-left: 0px;\n margin-right: 0px;\n }\n`;\n\nconst RadioGroupFilterLabel = styled.span`\n margin-right: 10px;\n`;\n\nconst RadioGroupFilter = () => {\n const { filters, setFilters } = useContext(DataPlatformContext);\n\n const setDateType = (type: \"all\" | \"exact\" | \"range\") => {\n setFilters({ ...filters, date_type: type });\n };\n\n const handleDateChange = (e) => {\n setFilters({ ...filters, [e.target.name]: e.target.value });\n };\n\n return (\n \n {\n setDateType(\"all\");\n }}\n >\n All\n \n {/* Exact Date */}\n {\n setDateType(\"exact\");\n }}\n >\n Exact\n \n \n {/* Date Range */}\n {\n setDateType(\"range\");\n }}\n >\n Range\n \n \n \n \n );\n};\n\nexport default RadioGroupFilter;\n","import { FeatureCollection, Geometry } from \"geojson\";\nimport { cloneDeep } from \"lodash\";\n\nconst single_org_metadata = [\n \"list_name\",\n \"itemname\",\n \"material\",\n \"quantity\",\n \"description\",\n \"latitude\",\n \"longitude\",\n \"altitude\",\n \"radius\",\n \"location\",\n \"timestamp\",\n \"dt\",\n \"project_name\",\n \"username\",\n \"manual_upload\",\n \"event_name\",\n \"id\",\n \"log_index\"\n];\n\nconst all_org_metadata = [\n \"list_name\",\n \"master_item_name\",\n \"master_material\",\n \"itemname\",\n \"material\",\n \"quantity\",\n \"description\",\n \"latitude\",\n \"longitude\",\n \"altitude\",\n \"radius\",\n \"location\",\n \"timestamp\",\n \"dt\",\n \"project_name\",\n \"username\",\n \"manual_upload\",\n \"event_name\",\n \"id\",\n \"log_index\"\n];\n\nexport const formatDownloadGeojson = (\n geojson: FeatureCollection,\n allOrg: boolean\n) => {\n const comparatorList = allOrg ? all_org_metadata : single_org_metadata;\n const geojsonCopy = cloneDeep(geojson);\n // ensure data properties match metadata doc\n geojsonCopy.features.forEach((feature) => {\n Object.keys(feature.properties).forEach((keyname) => {\n if (comparatorList.includes(keyname)) return;\n delete feature.properties[keyname];\n });\n });\n return geojsonCopy;\n};\n","import React, { useContext, useRef, useState } from \"react\";\nimport { DataPlatformContext } from \"../../context/DataPlatform/DataPlatformContext\";\nimport Button from \"../Button/Button\";\nimport Switch from \"../Forms/Switch\";\nimport {\n FiltersContainer,\n FiltersTitle,\n FiltersWrapper,\n} from \"./Filters/FiltersComponents\";\nimport ListSelect from \"./Filters/ListSelect\";\nimport CategoriesFilter from \"./Filters/CategoriesFilter\";\nimport RadioGroupFilter from \"./Filters/RadioGroupFilter\";\nimport { FilterType } from \"../../types/filters\";\nimport styled from \"styled-components\";\nimport { colors } from \"../../styles/colors\";\nimport dayjs from \"dayjs\";\nimport GeoJSONtoCSV from \"../../util/data/GeoJSONtoCSV\";\nimport { formatDownloadGeojson } from \"../../util/data/formatDownloadData\";\nimport { JSONtoCSV } from \"../../util/data/JSONtoCSV\";\nimport { DebrisTrackerContext } from \"../../context/DebrisTrackerContext\";\n\nconst FilterErrorMessage = styled.p`\n color: ${colors.orange};\n text-align: center;\n margin-bottom: 0px;\n`;\n\nconst Filters = ({ geojson }: { geojson: GeoJSON.FeatureCollection }) => {\n const { filters, setFilters, loading, loadData, setData } = useContext(\n DataPlatformContext\n );\n\n const { user } = useContext(DebrisTrackerContext);\n\n const linkRef = useRef(undefined);\n\n const [err, setErr] = useState(\"\");\n\n const setErrMessage = (str: string) => {\n setErr(str);\n setTimeout(() => {\n setErr(\"\");\n }, 2000);\n };\n\n const filtersRef = useRef(filters);\n\n const shouldFetch = () => {\n if (\n filters.date_type === \"range\" &&\n dayjs(filters.start_date).isAfter(filters.end_date)\n ) {\n setErrMessage(\"Invalid Date Range\");\n return false;\n }\n\n if (\n filters.list !== filtersRef.current.list ||\n filters.date_type !== filtersRef.current.date_type ||\n (filters.date_type === \"range\" &&\n filters.start_date !== filtersRef.current.start_date) ||\n (filters.date_type === \"range\" &&\n filters.end_date !== filtersRef.current.end_date) ||\n (filters.date_type === \"exact\" &&\n filters.exact_date !== filtersRef.current.exact_date)\n ) {\n return true;\n }\n return false;\n };\n\n const searchData = async () => {\n if (shouldFetch()) {\n const res = await loadData(filters);\n setData(res);\n filtersRef.current = filters;\n } else {\n filtersRef.current = filters;\n }\n };\n\n const DownloadButton = () => {\n const ButtonWrapper = styled.div`\n margin-top: 10px;\n text-align: center;\n padding: 15px;\n cursor: pointer;\n `;\n\n const handleDownload = () => {\n // compute data and convert to csv\n const newDownloadData = GeoJSONtoCSV(\n formatDownloadGeojson(geojson, filters.list === \"all\")\n );\n const csvData = JSONtoCSV(newDownloadData);\n\n // store data in new blob and create a url\n const csvBlob = new Blob([csvData], { type: \"text/csv\" });\n const url = URL.createObjectURL(csvBlob);\n\n // set tags href to blob url\n if (linkRef.current) {\n linkRef.current.href = url;\n }\n // click the tag\n linkRef.current && linkRef.current.click();\n };\n\n return (\n <>\n \n Download Selected Data\n \n \n \n );\n };\n\n return (\n \n Filter\n {err && {err}}\n \n {filters.list !== \"all\" && user && user.id && (\n {\n if (filters.user_data == -1) {\n setFilters({ ...filters, user_data: user.id });\n } else {\n setFilters({ ...filters, user_data: -1 });\n }\n }}\n checked={filters.user_data !== -1}\n >\n My Data\n \n )}\n {filters.list !== \"all\" && (\n {\n setFilters({ ...filters, showManual: !filters.showManual });\n }}\n checked={filters.showManual}\n >\n Show manual events\n \n )}\n \n \n \n \n Search\n \n {geojson && geojson.features.length > 0 && }\n \n \n );\n};\n\nexport default Filters;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../../../styles/colors\";\nimport numberWithCommas from \"../../../util/numberWithCommas\";\nimport BarChart from \"../Charts/BarChart\";\nimport PieChart from \"../Charts/PieChart\";\n// import PieChart from \"../../components/Dashboard/PieChart\";\n// import BarChart from \"../../components/Dashboard/BarChart\";\n\nconst MapStatsWrapper = styled.div`\n font-family: \"Lato\";\n color: #536275;\n display: flex;\n flex-direction: column;\n padding-left: 20px;\n @media only screen and (max-width: 768px) {\n margin-bottom: 20px;\n }\n`;\n\nconst MapStatsTitle = styled.h2`\n font-weight: 400;\n font-size: 22px;\n margin-bottom: 0px;\n margin-top: -50px;\n width: auto;\n background-color: white;\n z-index: 1200;\n padding: 19px;\n margin-left: -20px;\n width: 300px;\n\n @media only screen and (max-width: 991px) {\n margin: 0px;\n padding-left: 0px;\n }\n @media only screen and (max-width: 478px) {\n width: auto;\n }\n`;\n\nconst MapStatsTotals = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst TotalLabel = styled.span`\n font-weight: 700;\n margin: 10px 0px;\n`;\n\nconst Total = styled.span`\n color: ${colors.orange};\n`;\n\nconst MapStatsGraphs = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nconst Chart = styled.div`\n margin-left: ${({ left }) => (left ? \"20px\" : \"0px\")};\n\n @media only screen and (max-width: 768px) {\n margin-left: 0px;\n }\n`;\n\nconst Charts = styled.div`\n display: flex;\n\n @media only screen and (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nconst ChartWrapper = styled.div`\n min-width: 30vw;\n`;\n\nconst TooManyItems = () => {\n return (\n
\n

Too many items in result set

\n \n Our platform can't load this much data, try narrowing the date range and try again.\n \n
\n );\n};\n\nconst MapStatsContainer = ({\n itemCount,\n eventCount,\n pieData,\n barData,\n loading,\n}: {\n itemCount?: number;\n eventCount?: number;\n pieData?: any;\n barData?: any;\n loading?: boolean;\n}) => {\n const maxItemCount = Math.pow(10, 6);\n return (\n \n Totals\n \n \n Total debris count:{\" \"}\n {itemCount < maxItemCount ? (\n \n {loading\n ? \"Loading...\"\n : itemCount\n ? numberWithCommas(itemCount)\n : 0}\n \n ) : (\n Too many items\n )}\n \n \n Total collection events:{\" \"}\n \n {loading\n ? \"Loading...\"\n : eventCount\n ? numberWithCommas(eventCount)\n : 0}\n \n \n \n {itemCount < maxItemCount ? (\n \n \n \n

Distribution by Category

\n \n {loading ? (\n
Loading...
\n ) : pieData && pieData.length > 0 ? (\n \n ) : (\n
Select a list to show Distribution by Category
\n )}\n
\n
\n \n

Top Items

\n \n {loading ? (\n
Loading...
\n ) : barData && barData.length > 0 ? (\n \n ) : (\n
Select a list to show Top Items
\n )}\n
\n
\n
\n
\n ) : (\n \n )}\n
\n );\n};\n\nexport default MapStatsContainer;\n","import React, { useEffect, useState } from \"react\";\nimport { BarChartType, PieChartDataType } from \"../../types/charts\";\nimport { geojsonToBar, geojsonToPie } from \"../../util/data/chartFunctions\";\nimport MapStatsContainer from \"./Map/MapStatsContainer\";\n\nconst MapStats = ({\n geojson,\n loading,\n}: {\n geojson: GeoJSON.FeatureCollection;\n loading: boolean;\n}) => {\n const [itemCount, setItemCount] = useState(0);\n const [eventCount, setEventCount] = useState(0);\n const [pieData, setPieData] = useState([]);\n const [barData, setBarData] = useState([]);\n\n // calculate new counts\n useEffect(() => {\n if (!geojson) {\n return;\n }\n let newItemCount = 0;\n let newEventCount = 0;\n geojson.features.forEach((item) => {\n newItemCount += parseInt(item.properties.quantity, 10);\n newEventCount += 1;\n });\n setItemCount(newItemCount);\n setEventCount(newEventCount);\n }, [geojson]);\n\n // new pie data\n useEffect(() => {\n const newPieData = geojsonToPie(geojson);\n setPieData(newPieData);\n }, [geojson]);\n\n // new bar data\n useEffect(() => {\n const data = geojsonToBar(geojson);\n setBarData(data);\n }, [geojson]);\n\n return (\n <>\n \n \n );\n};\n\nexport default MapStats;\n","import React, { useContext, useEffect, useRef, useState } from \"react\";\nimport Filters from \"./Filters\";\nimport ItemsMap from \"./ItemsMap\";\nimport MapStats from \"./MapStats\";\nimport styled from \"styled-components\";\nimport { DataPlatformContext } from \"../../context/DataPlatform/DataPlatformContext\";\nimport { convertToGeoJSON } from \"../../util/data/convertToGeoJSON\";\nimport { applyFilters } from \"../../util/data/itemsDataFunctions\";\nimport pointsWithinPolygon from \"@turf/points-within-polygon\";\n\nconst DataPlatformContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n`;\n\nconst ControlsContainer = styled.div`\n height: 100%;\n display: flex;\n @media only screen and (max-width: 991px) {\n }\n\n @media only screen and (max-width: 767px) {\n flex-direction: column;\n }\n\n @media only screen and (max-width: 478px) {\n }\n`;\n\nconst DataPlatform = () => {\n const { filters, data, loading } = useContext(DataPlatformContext);\n\n // drawn polygon\n const [filterPolygon, setFilterPolygon] = useState(undefined);\n\n //copy of the raw geojson data. used when data needs to be filtered without fetching new data.\n const defaultGeojson: GeoJSON.FeatureCollection = {\n type: \"FeatureCollection\",\n features: [],\n };\n\n const unfilteredGeojson = useRef(defaultGeojson);\n\n const [geojson, setGeojson] = useState(\n unfilteredGeojson.current\n );\n\n // update data\n useEffect(() => {\n if (data && data.length > 0) {\n let geojson = convertToGeoJSON(data);\n unfilteredGeojson.current = geojson;\n let filteredGeojson = geojson;\n\n if (filters.date_type !== \"all\" && filters.list != \"all\") {\n geojson = applyFilters(filters, geojson);\n unfilteredGeojson.current = geojson;\n filteredGeojson = applyFilters(filters, unfilteredGeojson.current);\n }\n\n setGeojson(filteredGeojson);\n } else if (data && data.length === 0) {\n setGeojson(defaultGeojson);\n }\n }, [data]);\n\n // update on filter change\n useEffect(() => {\n if (data && data.length > 0) {\n setGeojson(applyFilters(filters, unfilteredGeojson.current));\n }\n }, [filters]);\n\n // update data on polygon change\n useEffect(() => {\n if (data && data.length > 0) {\n if (filterPolygon === undefined) {\n setGeojson(applyFilters(filters, unfilteredGeojson.current));\n } else {\n const points = pointsWithinPolygon(\n // @ts-ignore\n geojson,\n filterPolygon.toGeoJSON()\n );\n setGeojson(points);\n }\n }\n }, [filterPolygon]);\n\n return (\n \n {typeof window !== \"undefined\" && (\n \n )}\n \n \n \n \n \n );\n};\n\nexport default DataPlatform;\n","import React, { useEffect, useState } from \"react\";\nimport { FilterType, CheckboxType } from \"../../types/filters\";\nimport { DataPlatformContext } from \"./DataPlatformContext\";\nimport dayjs from \"dayjs\";\nimport { ListType } from \"../../types/list\";\nimport { useItemData } from \"../../util/useItemData\";\nimport { useAllOrgData } from \"../../util/hooks/useOrgData\";\nimport useGlobalMaterials from \"../../util/hooks/useGlobalMaterials\";\n\n// interface DataPlatformState {\n// orgs: ListType[];\n// filters: FilterType;\n// }\n\n// interface DataPlatformActions {\n// LOAD_ORGS: \"LOAD_ORGS\";\n// UPDATE_SELECTED_ORG: \"UPDATE_SELECTED_ORG\";\n// LOAD_POINTS: \"LOAD_POINTS\";\n// LOAD_STATS: \"LOAD_STATS\";\n// LOAD_DETAILS: \"LOAD_DETAILS\";\n// }\n\nconst DataPlatformContextProvider = ({ children }: { children?: any }) => {\n const defaultFilters: FilterType = {\n checkboxes: [],\n date_type: \"range\",\n exact_date: dayjs().format(\"YYYY-MM-DD\"),\n start_date: dayjs().subtract(1, \"M\").format(\"YYYY-MM-DD\"),\n end_date: dayjs().format(\"YYYY-MM-DD\"),\n list: undefined,\n user_data: -1,\n showManual: false,\n };\n\n //TODO: Reimplement filter state management as reducer\n // const filterReducer = (prev: FilterType, action: any) => {};\n\n const [filters, setFilters] = useState(defaultFilters);\n\n const [data, setData] = useState([]);\n\n const { organizations, loading: orgsLoading } = useAllOrgData();\n const { loadData, loading: itemsLoading } = useItemData();\n const {\n allOrgSections,\n loading: globalMaterialsLoading,\n } = useGlobalMaterials();\n\n /*********************/\n /** Update handlers **/\n /*********************/\n\n // on list change, extract materials and create\n // material checkboxes\n useEffect(() => {\n if (filters.list !== \"all\") {\n const list: ListType = filters.list;\n // @ts-ignore\n if (list && list.materials) {\n // @ts-ignore\n list.sections = list.materials;\n }\n const newCheckboxes: CheckboxType[] =\n list &&\n list.sections &&\n list.sections.map((sections) => {\n return {\n id: `${sections.id}`,\n name: sections.description,\n value: true,\n };\n });\n setFilters({ ...filters, checkboxes: newCheckboxes });\n } else {\n //handle all organizations\n\n const newCheckboxes: CheckboxType[] =\n !globalMaterialsLoading &&\n allOrgSections &&\n allOrgSections.map((section) => {\n return {\n id: `${section.material_id}`,\n name: section.name,\n value: true,\n };\n });\n setFilters({ ...filters, checkboxes: newCheckboxes });\n }\n }, [filters.list]);\n\n const dataPlatformState = {\n lists: organizations,\n loading: orgsLoading || itemsLoading || globalMaterialsLoading,\n\n data,\n setData,\n\n filters,\n setFilters,\n\n loadData,\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport default DataPlatformContextProvider;\n","import * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport Layout from \"../components/Layout/Layout\";\nimport Seo from \"../components/seo\";\nimport DataPlatform from \"../components/DataPlatform/DataPlatform\";\nimport DataPlatformContextProvider from \"../context/DataPlatform/DataPlatformContextProvider\";\n\nconst DataPage = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default DataPage;\n"],"names":["DataPlatformContext","createContext","SwitchLabel","styled","label","withConfig","displayName","componentId","_ref","isChecked","colors","orange","black","SwitchButton","span","_ref2","white","_ref3","_ref4","SwitchWrapper","div","SwitchContent","_ref5","handleChange","checked","children","React","onClick","ListSelect","lists","loading","filters","setFilters","useContext","selectData","value","forEach","list","push","name","id","Select","onChange","async","val","listId","find","getOrganization","data","title","length","substr","CheckboxGrid","CheckboxLabel","CheckboxLabels","CheckboxWrapper","DebrisTrackerCheckbox","update","Checkbox","color","CategoriesFilter","enabled","undefined","selectAll","newCheckboxes","checkboxes","map","item","unselectAll","checkbox","i","key","idx","findIndex","box","FilterRadioGroup","RadioGroup","FilterDate","input","RadioGroupFilterLabel","RadioGroupFilter","setDateType","type","date_type","handleDateChange","e","target","RadioButton","defaultValue","exact_date","start_date","end_date","single_org_metadata","all_org_metadata","FilterErrorMessage","p","geojson","loadData","setData","user","DebrisTrackerContext","linkRef","useRef","err","setErr","useState","filtersRef","shouldFetch","dayjs","isAfter","setTimeout","current","DownloadButton","ButtonWrapper","handleDownload","newDownloadData","GeoJSONtoCSV","formatDownloadGeojson","allOrg","comparatorList","geojsonCopy","_cloneDeep","features","feature","Object","keys","properties","keyname","includes","csvData","JSONtoCSV","csvBlob","Blob","url","URL","createObjectURL","href","click","download","ref","FiltersContainer","FiltersTitle","FiltersWrapper","Switch","user_data","showManual","Button","style","width","marginTop","padding","opacity","cursor","res","MapStatsWrapper","MapStatsTitle","h2","MapStatsTotals","TotalLabel","Total","MapStatsGraphs","Chart","left","Charts","ChartWrapper","TooManyItems","itemCount","eventCount","pieData","barData","maxItemCount","Math","pow","className","numberWithCommas","PieChart","BarChart","setItemCount","setEventCount","setPieData","setBarData","useEffect","newItemCount","newEventCount","parseInt","quantity","newPieData","geojsonToPie","geojsonToBar","MapStatsContainer","DataPlatformContainer","ControlsContainer","DataPlatform","filterPolygon","setFilterPolygon","defaultGeojson","unfilteredGeojson","setGeojson","convertToGeoJSON","filteredGeojson","applyFilters","points","pointsWithinPolygon","toGeoJSON","window","ItemsMap","cluster","interactive","draw","Filters","MapStats","defaultFilters","format","subtract","organizations","orgsLoading","useAllOrgData","itemsLoading","useItemData","allOrgSections","globalMaterialsLoading","useGlobalMaterials","materials","sections","description","section","material_id","dataPlatformState","Provider","DataPage","DataPlatformContextProvider","Layout","vertical","Helmet","src","rel","Seo"],"sourceRoot":""}