{"version":3,"file":"js/5720-5204b0cb017a0200bba9.chunk.js","mappings":"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","sources":["webpack://solvi-web/./app/packs/src/analytics.ts","webpack://solvi-web/./app/packs/src/components/toolbar-map-view/index.js","webpack://solvi-web/./app/packs/src/components/toolbar-map-view/toolbar.js","webpack://solvi-web/./app/packs/src/components/toolbar-overlay.js","webpack://solvi-web/./app/packs/src/components/ui/elements/dropdown.js","webpack://solvi-web/./app/packs/src/components/ui/elements/slider.tsx","webpack://solvi-web/./app/packs/src/components/ui/elements/toggle-spinner.js","webpack://solvi-web/./app/packs/src/components/ui/elements/toggle.js","webpack://solvi-web/./app/packs/src/components/ui/shared/action-card.js","webpack://solvi-web/./app/packs/src/components/ui/shared/tool-toggle.js","webpack://solvi-web/./app/packs/src/components/undo.js","webpack://solvi-web/./app/packs/src/file-import.js","webpack://solvi-web/./app/packs/src/user-error.js"],"sourcesContent":["import { logException } from './logger'\n\ndeclare global {\n interface Window {\n // eslint-disable-next-line camelcase\n sa_event?: (name: string, metadata?: Record) => void\n }\n}\n\nexport default function addEvent(\n name: string,\n metadata?: Record\n) {\n try {\n window.sa_event && window.sa_event(name, metadata)\n } catch (e) {\n logException(e)\n }\n}\n","import { useEffect, useRef, useState } from 'react'\nimport Map from 'ol/Map'\nimport * as olControl from 'ol/control'\nimport ScaleLine from 'ol/control/ScaleLine'\nimport TileLayer from 'ol/layer/Tile'\nimport XYZSource from 'ol/source/XYZ'\nimport View from 'ol/View'\nimport MapControls from '../map-controls'\nimport Toolbar from './toolbar'\nimport PropTypes from 'prop-types'\nimport { maxOrthoZoom } from '../../ol-styles'\n\nexport default function ToolbarMapView({\n mapboxToken,\n units,\n onMapInitialized,\n children,\n extent,\n}) {\n const [map, setMap] = useState()\n\n useEffect(() => {\n map && onMapInitialized && onMapInitialized(map)\n }, [map, onMapInitialized])\n\n useEffect(() => {\n const map = new Map({\n target: document.getElementById('map'), // TODO handle this better\n logo: false,\n controls: olControl\n .defaults({ rotate: false })\n .extend([new ScaleLine({ units })]),\n layers: [\n new TileLayer({\n source: new XYZSource({\n maxZoom: 17,\n tileSize: [512, 512],\n url:\n 'https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/{z}/{x}/{y}?access_token=' +\n mapboxToken,\n attributions: [\n '
Background imagery ' +\n '© Mapbox | ' +\n '© OpenStreetMap | ' +\n 'Improve this map',\n ],\n }),\n }),\n ],\n view: new View({\n maxZoom: maxOrthoZoom,\n center: [0, 0],\n zoom: 3,\n }) /* 24 corresponds to about 1cm/px */,\n })\n setMap(map)\n\n return () => {\n setMap(null)\n map.setTarget(null)\n }\n }, [mapboxToken, units])\n\n const controlsRef = useRef()\n\n return map ? (\n <>\n {children(map)}\n
\n {controlsRef.current && (\n \n )}\n \n ) : null\n}\n\nToolbarMapView.propTypes = {\n mapboxToken: PropTypes.string.isRequired,\n children: PropTypes.func,\n units: PropTypes.string,\n onMapInitialized: PropTypes.func,\n extent: PropTypes.arrayOf(PropTypes.number),\n}\n","import PropTypes from 'prop-types'\n\nexport default function Toolbar({ children, fullHeight }) {\n return (\n
{children}
\n )\n}\n\nToolbar.propTypes = {\n children: PropTypes.node,\n fullHeight: PropTypes.bool,\n}\n","import { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport ReactDOM from 'react-dom'\n\nexport default function ToolbarOverlay({\n children,\n fullHeight,\n overlay,\n addContainer = true,\n}) {\n const [height, setHeight] = useState(0)\n const [width, setWidth] = useState(0)\n\n useEffect(() => {\n if (!ToolbarOverlay.container) {\n ToolbarOverlay.container = document.createElement('div')\n }\n\n const toolbar = document.querySelector('.toolbar')\n setHeight(toolbar?.offsetHeight)\n setWidth(toolbar?.offsetWidth)\n toolbar?.classList.add('tw-hidden')\n document\n .querySelector('#toolbar-placeholder')\n ?.appendChild(ToolbarOverlay.container)\n\n return () => {\n const toolbar = document.querySelector('.toolbar')\n toolbar.classList.remove('tw-hidden')\n document\n .querySelector('#toolbar-placeholder')\n .removeChild(ToolbarOverlay.container)\n }\n }, [])\n\n return (\n <>\n {ToolbarOverlay.container &&\n ReactDOM.createPortal(\n \n {overlay ? (\n
\n {overlay}\n
\n ) : null}\n {addContainer ? (\n
\n {children}\n
\n ) : (\n children\n )}\n
,\n ToolbarOverlay.container\n )}\n \n )\n}\n\nToolbarOverlay.propTypes = {\n children: PropTypes.node,\n fullHeight: PropTypes.bool,\n addContainer: PropTypes.bool,\n overlay: PropTypes.node,\n}\n","import { useEffect, useRef } from 'react'\nimport { DropDownButton } from './button'\nimport Checkbox from './checkbox'\nimport PropTypes from 'prop-types'\n\nexport default function Dropdown({\n children,\n toggleLabel,\n className,\n dropup,\n keepOpen,\n tourStepIdentifier,\n preventCloseOutside,\n disabled,\n title,\n}) {\n const dropdownRef = useRef(null)\n\n useEffect(() => {\n preventCloseOutside &&\n $(dropdownRef.current).on({\n 'shown.bs.dropdown': function () {\n this.closable = false\n },\n click: function () {\n this.closable = true\n },\n 'hide.bs.dropdown': function () {\n return this.closable\n },\n })\n }, [preventCloseOutside])\n\n return (\n
\n \n {toggleLabel}\n \n {!keepOpen ? (\n
    \n {children}\n
\n ) : (\n // hack to keep the dropdown open on click used in ZS renderDisplaymenu\n \n
    {children}
\n \n )}\n
\n )\n}\n\nDropdown.propTypes = {\n children: PropTypes.node,\n toggleLabel: PropTypes.node,\n className: PropTypes.string,\n dropup: PropTypes.bool,\n keepOpen: PropTypes.bool,\n tourStepIdentifier: PropTypes.string,\n preventCloseOutside: PropTypes.bool,\n disabled: PropTypes.bool,\n title: PropTypes.string,\n}\n\nexport function DropDownItem({ onClick, children }) {\n return (\n
  • \n \n {children}\n \n
  • \n )\n}\n\nDropDownItem.propTypes = {\n children: PropTypes.node,\n onClick: PropTypes.func,\n}\n\nexport function DropDownItemCheckbox({ onChange, title, checked, disabled }) {\n return (\n
  • \n \n {title}\n \n
  • \n )\n}\n\nDropDownItemCheckbox.propTypes = {\n title: PropTypes.string,\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n onChange: PropTypes.func,\n}\n","import {\n MutableRefObject,\n ReactNode,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\nimport { Range } from 'react-range'\nimport { IProps, IRenderTrackParams } from 'react-range/lib/types'\nimport * as d3 from 'd3'\nimport { clamp } from 'lodash'\n\ninterface SliderProps\n extends Pick<\n Readonly & Readonly<{ children?: ReactNode }>,\n | 'min'\n | 'max'\n | 'step'\n | 'values'\n | 'onChange'\n | 'onFinalChange'\n | 'renderMark'\n | 'renderTrack'\n | 'children'\n > {\n numberDecimals: number\n thumbNotch: boolean\n}\n\nconst thumbClass = `\n tw-mt-2 tw-text-xs tw-font-bold tw-bg-primary tw-border-0 tw-text-white tw-px-2\n tw-py-1 tw-w-10 tw-h-6 tw-rounded-sm focus:tw-outline-none tw-flex tw-justify-center`\n\nexport default function Slider({\n numberDecimals,\n renderTrack = defaultRenderTrack,\n thumbNotch = false,\n min,\n max,\n values,\n ...props\n}: SliderProps) {\n for (let i = 0; i < values.length; i++) {\n values[i] = clamp(values[i], min, max)\n }\n\n return (\n (\n <>\n
    \n {/* TODO: haven't really been able to reproduce this with Tailwind, \n so hardcoded for now. */}\n {thumbNotch && (\n \n )}\n \n {value.toFixed(numberDecimals)}\n
    \n \n )}\n />\n )\n}\n\nconst defaultRenderTrack = ({ props, children }: IRenderTrackParams) => (\n
    {children}
    \n)\n\ninterface SliderTrackProps extends IRenderTrackParams {\n min: number\n max: number\n ticks?: number\n track: boolean\n}\n\nexport function SliderTrack({\n min,\n max,\n ticks = 2,\n track = true,\n props,\n children,\n}: SliderTrackProps) {\n const containerRef: MutableRefObject = useRef(null)\n const [width, setWidth] = useState()\n useEffect(() => {\n if (containerRef.current) {\n const observer = new ResizeObserver(entries => {\n // See https://stackoverflow.com/a/76714495; without this code,\n // we got a lot of Sentry notifications like\n // \"ResizeObserver loop completed with undelivered notifications.\"\n window.requestAnimationFrame(() => {\n if (!Array.isArray(entries) || !entries.length) return\n setWidth(containerRef.current?.offsetWidth || 0)\n })\n })\n observer.observe(containerRef.current)\n\n return () => {\n observer.disconnect()\n }\n }\n }, [])\n const margin = 0\n const trackRef = useCallback(\n (node: SVGSVGElement) => {\n if (!node || !width) return\n\n const chart = d3\n .select(node)\n .attr('width', width + 2 * margin)\n .attr('height', 16)\n .attr('class', 'tw-text-system-grey-400')\n const x = d3\n .scaleLinear()\n .domain([min, max])\n .range([margin, width - margin])\n const xAxis = d3.axisBottom(x).ticks(ticks).tickPadding(2)\n const xAxisSelection = chart\n .selectAll('.histogram-x-axis')\n .data([1])\n .join(enter => enter.append('g').attr('class', 'histogram-x-axis'))\n .call(xAxis as any)\n\n if (!track) {\n xAxisSelection.call(g => g.select('.domain').remove())\n }\n },\n [width, min, max, ticks, track]\n )\n\n return (\n
    \n
    \n \n
    \n {children}\n
    \n )\n}\n","import { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nexport default function ToggleSpinner({ delay = 50 }) {\n const [showSpinner, setShowSpinner] = useState(false)\n useEffect(() => {\n const timer = setTimeout(() => setShowSpinner(true), delay)\n return () => {\n clearTimeout(timer)\n }\n }, [delay])\n\n return (\n showSpinner && (\n
    \n \n
    \n )\n )\n}\n\nToggleSpinner.propTypes = {\n delay: PropTypes.number,\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport ToggleSpinner from './toggle-spinner'\nimport Checkbox from './checkbox'\n\nlet nextId = 1\n\nexport default function Toggle(props) {\n const id = useMemo(() => `_toggle_${nextId++}`, [])\n\n return (\n \n )\n}\n\nToggle.propTypes = {\n active: PropTypes.bool,\n alwaysRender: PropTypes.bool,\n children: PropTypes.node,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n helpText: PropTypes.string,\n loading: PropTypes.bool,\n onSetActive: PropTypes.func,\n title: PropTypes.node,\n subTitle: PropTypes.string,\n}\n","import PropTypes from 'prop-types'\n\n/**\n *\n * @param {any} param0\n * @returns\n */\nexport function ActionCard({\n title,\n onClick,\n id,\n children,\n borderColor,\n className,\n leadingChildren,\n trailingChildren,\n ...props\n}) {\n return (\n \n
    \n
    \n {leadingChildren}\n
    \n

    \n {title}\n

    \n \n {children}\n
    \n
    \n
    \n
    \n {trailingChildren}\n \n )\n}\n\nActionCard.propTypes = {\n onClick: PropTypes.func,\n title: PropTypes.node,\n id: PropTypes.string,\n borderColor: PropTypes.string,\n className: PropTypes.string,\n children: PropTypes.node,\n leadingChildren: PropTypes.node,\n trailingChildren: PropTypes.node,\n}\n\nexport function ActionCards({ children }) {\n return
    {children}
    \n}\n\nActionCards.propTypes = {\n children: PropTypes.node.isRequired,\n}\n","import { useCallback, useContext, useEffect } from 'react'\nimport Toggle from '../elements/toggle'\nimport { store } from '../../../store'\nimport PropTypes from 'prop-types'\nimport { TOOL_SET_ACTIVE, TOOL_REGISTER } from '../../../store/actions'\nimport addEvent from '../../../analytics'\n\nexport default function ToolToggle(props) {\n const {\n id,\n defaultActive,\n children,\n onSetActive,\n loading,\n mutuallyExclusive,\n } = props\n const {\n state: { tools },\n dispatch,\n } = useContext(store)\n let result\n let active = defaultActive || false\n let disabled = false\n const tool = tools[id]\n\n useEffect(() => {\n if (!tool) {\n dispatch({\n type: TOOL_REGISTER,\n tool: {\n id,\n active,\n },\n })\n }\n }, [active, dispatch, id, tool])\n\n const setActive = useCallback(\n active => {\n dispatch({\n type: TOOL_SET_ACTIVE,\n tool: { id, active },\n })\n\n addEvent(active ? 'tool_open' : 'tool_close', { tool: id })\n\n if (active && mutuallyExclusive) {\n for (const toolId of mutuallyExclusive) {\n dispatch({\n type: TOOL_SET_ACTIVE,\n tool: { id: toolId, active: false },\n })\n }\n }\n },\n [id, mutuallyExclusive, dispatch]\n )\n\n if (!tool) {\n result = null\n } else {\n active = tool.active\n disabled = tool.disabled\n\n result = (\n \n {children}\n \n )\n }\n\n // Call onSetActive with initial state when mounted\n useEffect(() => {\n onSetActive && onSetActive(active)\n }, [active]) // TODO: we should also depend on onSetActive here, but that requires changes in the tools using this component\n\n return result\n}\n\nToolToggle.propTypes = {\n id: PropTypes.string.isRequired,\n title: PropTypes.node,\n defaultActive: PropTypes.bool,\n children: PropTypes.node,\n onSetActive: PropTypes.func,\n loading: PropTypes.bool,\n disabled: PropTypes.bool,\n disabledMessage: PropTypes.node,\n mutuallyExclusive: PropTypes.arrayOf(PropTypes.string),\n className: PropTypes.string,\n}\n\nexport function SectionToggle({\n active,\n disabled,\n disabledMessage,\n children,\n alwaysRender,\n className,\n padding = 'tw-p-5',\n onSetActive,\n loading,\n title,\n subTitle,\n helpText,\n}) {\n return (\n \n \n {(alwaysRender && (\n
    {children}
    \n )) ||\n (active && children) ? (\n
    {children}
    \n ) : undefined}\n {disabled && disabledMessage ? (\n
    \n {disabledMessage}\n
    \n ) : null}\n \n )\n}\n\nSectionToggle.propTypes = {\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n disabledMessage: PropTypes.node,\n children: PropTypes.node,\n alwaysRender: PropTypes.bool,\n className: PropTypes.string,\n padding: PropTypes.string,\n onSetActive: PropTypes.func,\n loading: PropTypes.bool,\n title: PropTypes.node,\n subTitle: PropTypes.string,\n helpText: PropTypes.string,\n}\n","import { Component } from 'react'\nimport produce, { applyPatches } from 'immer'\nimport PropTypes from 'prop-types'\n\n/**\n * @template T\n * @typedef UndoContext\n * @property {T} state\n * @property {boolean} canUndo\n * @property {boolean} canRedo\n * @property {() => void} undo\n * @property {() => void} redo\n * @property {(recipe: (draft: T) => void) => void} add\n * @property {(recipe: (draft: T) => void) => void} addPartial\n * @property {(oldState: T, newState: T) => void} onChange\n */\n\n/**\n * @typedef UndoProps\n * @property {object} initialState\n * @property {(undoContext: UndoContext) => import('react').ReactNode} children\n */\n\nexport default class Undo extends Component {\n /**\n *\n * @param {UndoProps} props\n */\n constructor(props) {\n super(props)\n\n this.state = {\n currentState: produce(props.initialState, () => {}),\n undoPatches: [{ undo: [], redo: [] }],\n undoIndex: 0,\n }\n }\n\n componentDidUpdate(oldProps, oldState) {\n if (oldProps.initialState !== this.props.initialState) {\n this.setState({\n currentState: produce(this.props.initialState, () => {}),\n undoPatches: [{ undo: [], redo: [] }],\n undoIndex: 0,\n })\n }\n\n if (\n this.props.onChange &&\n oldState.currentState !== this.state.currentState\n ) {\n this.props.onChange(\n oldState.currentState,\n this.state.currentState,\n this.state.undoIndex === 0\n )\n }\n }\n\n componentWillUnmount() {\n this.props.onUnmount && this.props.onUnmount(this.getContext())\n }\n\n render() {\n return this.props.children(this.getContext())\n }\n\n getContext() {\n return {\n state: this.state.currentState,\n canUndo: this.state.undoIndex > 0,\n canRedo: this.state.undoIndex < this.state.undoPatches.length - 1,\n undo: this.undo.bind(this),\n redo: this.redo.bind(this),\n add: this.undoable.bind(this),\n addPartial: this.undoablePartial.bind(this),\n }\n }\n\n undo() {\n if (this.state.undoIndex < 1) return Promise.resolve(this.getContext())\n\n const patches = this.state.undoPatches[this.state.undoIndex]\n if (this.state.undoPatches.length === 0) {\n this.state.undoPatches.push([])\n }\n\n let nextState = this.state.currentState\n if (this.props.onPatch) {\n patches.undo.forEach(p => {\n this.props.onPatch(nextState, p)\n nextState = applyPatches(nextState, [p])\n })\n } else {\n nextState = applyPatches(this.state.currentState, patches.undo)\n }\n\n return new Promise(resolve =>\n this.setState(\n {\n currentState: nextState,\n undoPatches: this.state.undoPatches,\n undoIndex: this.state.undoIndex - 1,\n },\n () => resolve(this.getContext())\n )\n )\n }\n\n redo() {\n if (this.state.undoIndex >= this.state.undoPatches.length - 1)\n return Promise.resolve(this.getContext())\n\n const patches = this.state.undoPatches[this.state.undoIndex + 1]\n\n let nextState = this.state.currentState\n if (this.props.onPatch) {\n patches.redo.forEach(p => {\n this.props.onPatch(nextState, p)\n nextState = applyPatches(nextState, [p])\n })\n } else {\n nextState = applyPatches(this.state.currentState, patches.redo)\n }\n\n return new Promise(resolve =>\n this.setState(\n {\n currentState: nextState,\n undoIndex: this.state.undoIndex + 1,\n },\n () => resolve(this.getContext())\n )\n )\n }\n\n undoable(action) {\n const nextState = produce(\n this.state.currentState,\n action,\n this.addToUndo.bind(this)\n )\n return new Promise(resolve =>\n this.setState({ currentState: nextState }, () =>\n resolve(this.getContext())\n )\n )\n }\n\n undoablePartial(action) {\n const nextState = produce(\n this.state.currentState,\n action,\n this.addToCurrentUndo.bind(this)\n )\n return new Promise(resolve =>\n this.setState({ currentState: nextState }, () =>\n resolve(this.getContext())\n )\n )\n }\n\n addToCurrentUndo(patches, inversePatches) {\n if (this.state.undoIndex === this.state.undoPatches.length - 1) {\n const currentStep = this.state.undoPatches[\n this.state.undoPatches.length - 1\n ]\n currentStep.redo.push(...patches)\n currentStep.undo.push(...inversePatches)\n this.setState({ undoPatches: this.state.undoPatches })\n }\n }\n\n addToUndo(patches, inversePatches) {\n const undoPatches = this.state.undoPatches.slice(\n 0,\n this.state.undoIndex + 1\n )\n undoPatches.push({ redo: patches, undo: inversePatches })\n this.setState({ undoPatches, undoIndex: undoPatches.length - 1 })\n }\n}\n\nUndo.propTypes = {\n initialState: PropTypes.object,\n onChange: PropTypes.func,\n children: PropTypes.func,\n onPatch: PropTypes.func,\n onUnmount: PropTypes.func,\n}\n","import { kml } from '@tmcw/togeojson'\nimport UserError from './user-error'\n\nexport default function importFiles(files, options) {\n const maxFeatures = options?.maxFeatures\n\n const fileEndsWith = ext =>\n files.some(f => f.name.toLowerCase().endsWith(ext))\n const findFileExtension = ext =>\n files.find(f => f.name.toLowerCase().endsWith(ext))\n const fileToArrayBuffer = (f, required = true) =>\n f\n ? new Promise((resolve, reject) => {\n if (!f && required) {\n throw new Error('File is missing.')\n }\n\n if (!(f instanceof File) && f.arrayBuffer) {\n // Extracted ZIP file, see ZIP implementation below;\n // each file inside a ZIP is extracted to an object with its\n // name and an arrayBuffer property with its contents.\n return resolve(f.arrayBuffer)\n }\n const reader = new FileReader()\n reader.addEventListener('loadend', () => resolve(reader.result))\n reader.addEventListener('error', err =>\n reject(new Error(`Import failed: ${err}`))\n )\n reader.readAsArrayBuffer(f)\n })\n : Promise.resolve()\n\n files = Array.from(files)\n\n const type = fileEndsWith('.shp')\n ? 'shape'\n : fileEndsWith('.kml')\n ? 'kml'\n : fileEndsWith('.json') || fileEndsWith('.geojson')\n ? 'geojson'\n : fileEndsWith('.zip')\n ? 'zip'\n : null\n\n let converter\n\n switch (type) {\n case 'zip':\n converter = import('jszip')\n .then(({ default: JSZip }) => {\n return new JSZip().loadAsync(files[0])\n })\n .then(zip => {\n const readPromises = []\n const files = []\n zip.forEach((relPath, file) => {\n if (!file.dir) {\n readPromises.push(\n file.async('arraybuffer').then(arrayBuffer =>\n files.push({\n name: file.name,\n arrayBuffer,\n })\n )\n )\n }\n })\n\n return Promise.all(readPromises).then(() => files)\n })\n .then(files => importFiles(files, options))\n break\n case 'shape':\n converter = import('shapefile').then(shapefile =>\n Promise.all([\n fileToArrayBuffer(findFileExtension('.shp')),\n fileToArrayBuffer(findFileExtension('.dbf'), false),\n fileToArrayBuffer(findFileExtension('.prj'), false),\n ]).then(([shpBuffer, dbfBuffer, prjBuffer]) => {\n const readShapefile = dbfBuffer\n ? shapefile.open(shpBuffer, dbfBuffer)\n : shapefile.open(shpBuffer)\n\n return readShapefile\n .then(source => {\n const features = []\n return new Promise((resolve, reject) => {\n const readNext = async () => {\n for (let i = 0; i < 100; i++) {\n const result = await source.read()\n if (result.done) {\n return resolve(features)\n } else {\n try {\n checkNumberFeatures(features)\n } catch (e) {\n return reject(e)\n }\n\n features.push(result.value)\n }\n }\n setTimeout(readNext)\n }\n\n readNext()\n })\n })\n .then(features => ({\n type: 'FeatureCollection',\n features,\n }))\n .then(featureCollection => {\n if (prjBuffer) {\n const prj = new TextDecoder().decode(prjBuffer)\n return import('reproject').then(({ toWgs84 }) =>\n toWgs84(featureCollection, prj)\n )\n } else {\n // Assume WGS84\n return featureCollection\n }\n })\n })\n )\n break\n case 'kml':\n converter = fileToArrayBuffer(findFileExtension('.kml'))\n .then(arrayBuffer =>\n new DOMParser().parseFromString(\n new TextDecoder().decode(arrayBuffer),\n 'application/xml'\n )\n )\n .then(doc => kml(doc))\n .then(featureCollection => {\n checkNumberFeatures(featureCollection.features)\n return featureCollection\n })\n break\n case 'geojson':\n converter = fileToArrayBuffer(\n findFileExtension('.json') || findFileExtension('.geojson')\n )\n .then(arrayBuffer => JSON.parse(new TextDecoder().decode(arrayBuffer)))\n .then(featureCollection => {\n checkNumberFeatures(featureCollection.features)\n return featureCollection\n })\n break\n default:\n throw new UserError({\n type: 'warning',\n html: (\n
    \n Unknown file type selected.\n

    Shapefile (shp), KML and GeoJSON are supported.

    \n
    \n ),\n })\n }\n\n return converter\n\n function checkNumberFeatures(features) {\n if (maxFeatures && features?.length > maxFeatures) {\n throw new UserError({\n type: 'warning',\n html: (\n
    \n Too many zones.\n

    \n This file contains too many zones to be handled by zonal\n statistics. The maximum number of zones is {maxFeatures}.\n

    \n
    \n ),\n })\n }\n }\n}\n","export default class UserError extends Error {\n constructor({ type, html }) {\n super(html)\n this.type = type\n this.html = html\n }\n}\n"],"names":["addEvent","name","metadata","window","sa_event","e","logException","ToolbarMapView","mapboxToken","units","onMapInitialized","children","extent","map","setMap","useState","useEffect","Map","target","document","getElementById","logo","controls","olControl","rotate","extend","ScaleLine","layers","TileLayer","source","XYZSource","maxZoom","tileSize","url","attributions","view","View","maxOrthoZoom","center","zoom","setTarget","controlsRef","useRef","_jsxs","_Fragment","_jsx","Toolbar","ref","className","current","MapControls","container","propTypes","PropTypes","isRequired","fullHeight","ToolbarOverlay","overlay","addContainer","height","setHeight","width","setWidth","createElement","toolbar","querySelector","offsetHeight","offsetWidth","classList","add","appendChild","remove","removeChild","ReactDOM","style","top","Dropdown","toggleLabel","dropup","keepOpen","tourStepIdentifier","preventCloseOutside","disabled","title","dropdownRef","$","on","this","closable","click","DropDownButton","DropDownItem","onClick","href","thumbClass","Slider","numberDecimals","renderTrack","defaultRenderTrack","thumbNotch","min","max","values","props","i","length","clamp","Range","renderThumb","value","position","pointerEvents","backgroundColor","left","bottom","border","borderColor","borderBottomColor","borderWidth","toFixed","SliderTrack","ticks","track","containerRef","observer","ResizeObserver","entries","requestAnimationFrame","Array","isArray","observe","disconnect","trackRef","useCallback","node","chart","d3","attr","x","domain","range","xAxis","tickPadding","xAxisSelection","selectAll","data","join","enter","append","call","g","select","ToggleSpinner","delay","showSpinner","setShowSpinner","timer","setTimeout","clearTimeout","nextId","Toggle","id","useMemo","htmlFor","subTitle","loading","Checkbox","type","onChange","onSetActive","checked","active","helpText","hidden","alwaysRender","ActionCard","leadingChildren","trailingChildren","ActionCards","ToolToggle","defaultActive","mutuallyExclusive","state","tools","dispatch","useContext","store","result","tool","TOOL_REGISTER","setActive","TOOL_SET_ACTIVE","toolId","SectionToggle","disabledMessage","padding","undefined","Undo","Component","constructor","super","currentState","produce","initialState","undoPatches","undo","redo","undoIndex","componentDidUpdate","oldProps","oldState","setState","componentWillUnmount","onUnmount","getContext","render","canUndo","canRedo","bind","undoable","addPartial","undoablePartial","Promise","resolve","patches","push","nextState","onPatch","forEach","p","applyPatches","action","addToUndo","addToCurrentUndo","inversePatches","currentStep","slice","importFiles","files","options","maxFeatures","fileEndsWith","ext","some","f","toLowerCase","endsWith","findFileExtension","find","fileToArrayBuffer","required","reject","Error","File","arrayBuffer","reader","FileReader","addEventListener","err","readAsArrayBuffer","from","converter","then","default","JSZip","loadAsync","zip","readPromises","relPath","file","dir","async","all","shapefile","shpBuffer","dbfBuffer","prjBuffer","open","features","readNext","read","done","checkNumberFeatures","featureCollection","prj","TextDecoder","decode","toWgs84","DOMParser","parseFromString","doc","kml","JSON","parse","UserError","html"],"sourceRoot":""}