{"version":3,"file":"static/js/8681.2a8dad90.chunk.js","mappings":"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","sources":["components/Card.js","plugins/BaseWindowPlugin.js","plugins/Coordinates/Coordinates.js","plugins/Coordinates/CoordinatesModel.js","plugins/Coordinates/CoordinatesTransformRow.js","plugins/Coordinates/CoordinatesView.js","plugins/Location/constants/index.js","../node_modules/@mui/icons-material/Explore.js","../node_modules/@mui/material/CardActionArea/cardActionAreaClasses.js","../node_modules/@mui/material/CardActionArea/CardActionArea.js","../node_modules/@mui/material/CardHeader/cardHeaderClasses.js","../node_modules/@mui/material/CardHeader/CardHeader.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js"],"sourcesContent":["import React from \"react\";\nimport propTypes from \"prop-types\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n Card as MUICard,\n CardHeader,\n CardActionArea,\n Avatar,\n} from \"@mui/material\";\n\nconst StyledCard = styled(MUICard)(({ theme }) => ({\n marginBottom: theme.spacing(1),\n width: \"210px\",\n [theme.breakpoints.down(\"sm\")]: {\n boxShadow: \"none\",\n borderBottom: \"1px solid #ccc\",\n borderRadius: 0,\n margin: 0,\n width: \"100%\",\n justifyContent: \"left\",\n },\n}));\n\nconst StyledAvatar = styled(Avatar)(({ theme }) => ({\n background: theme.palette.text.primary,\n}));\n\nclass Card extends React.PureComponent {\n state = {\n open: false,\n text: \"\",\n };\n\n static propTypes = {\n abstract: propTypes.string.isRequired,\n icon: propTypes.object.isRequired,\n onClick: propTypes.func.isRequired,\n title: propTypes.string.isRequired,\n };\n\n static defaultProps = {\n abstract: \"Beskrivning saknas\",\n title: \"Titel saknas\",\n };\n\n render() {\n const { abstract, icon, onClick, title } = this.props;\n\n return (\n \n \n {icon}}\n title={title}\n subheader={abstract}\n />\n \n \n );\n }\n}\n\nexport default Card;\n","import React from \"react\";\nimport propTypes from \"prop-types\";\nimport { isMobile } from \"./../utils/IsMobile\";\nimport { createPortal } from \"react-dom\";\nimport { Hidden, ListItem, ListItemIcon, ListItemText } from \"@mui/material\";\nimport Window from \"../components/Window.js\";\nimport Card from \"../components/Card.js\";\nimport PluginControlButton from \"../components/PluginControlButton\";\n\nclass BaseWindowPlugin extends React.PureComponent {\n static propTypes = {\n app: propTypes.object.isRequired,\n children: propTypes.object.isRequired,\n custom: propTypes.object.isRequired,\n map: propTypes.object.isRequired,\n options: propTypes.object.isRequired,\n type: propTypes.string.isRequired,\n };\n\n constructor(props) {\n super(props);\n // 'type' is basically a unique identifier for each plugin\n this.type = props.type.toLowerCase() || undefined;\n\n // There will be defaults in props.custom, so that each plugin has own default title/description\n this.description = props.options.description || props.custom.description;\n\n // Should Window be visible at start?\n const visibleAtStart =\n (this.props.app.config.mapConfig.map.clean === false && // Never show in clean mode\n (isMobile\n ? props.options.visibleAtStartMobile\n : props.options.visibleAtStart)) ||\n false;\n\n // If plugin is shown at start, we want to register it as shown in the Analytics module too.\n // Normally, the event would be sent when user clicks on the button that activates the plugin,\n // but in this case there won't be any click as the window will be visible at start.\n if (visibleAtStart) {\n this.props.app.globalObserver.publish(\"analytics.trackEvent\", {\n eventName: \"pluginShown\",\n pluginName: this.type,\n activeMap: this.props.app.config.activeMap,\n });\n }\n\n // Title and Color are kept in state and not as class properties. Keeping them in state\n // ensures re-render when new props arrive and update the state variables (see componentDidUpdate() too).\n this.state = {\n title: props.options.title || props.custom.title || \"Unnamed plugin\",\n color: props.options.color || props.custom.color || null,\n windowVisible: visibleAtStart,\n };\n\n // Title is a special case: we want to use the state.title and pass on to Window in order\n // to update Window's title dynamically. At the same time, we want all other occurrences,\n // e.g. Widget or Drawer button's label to remain the same.\n this.title = props.options.title || props.custom.title || \"Unnamed plugin\";\n\n // Try to get values from admin's option. Fallback to customs from Plugin defaults, or finally to hard-coded values.\n this.width = props.options.width || props.custom.width || 400;\n this.height = props.options.height || props.custom.height || \"auto\";\n this.position = props.options.position || props.custom.position || \"left\";\n\n // Register Window in our global register\n props.app.registerWindowPlugin(this);\n\n // Subscribe to a global event that makes it possible to show/hide Windows.\n // First we prepare a unique event name for each plugin so it looks like '{pluginName}.showWindow'.\n const eventName = `${this.type}.showWindow`;\n // Next, subscribe to that event, expect 'opts' array.\n // To find all places where this event is publish, search for 'globalObserver.publish(\"show'\n props.app.globalObserver.subscribe(eventName, (opts) => {\n this.showWindow(opts);\n });\n\n // Same as above, but to close the window.\n const closeEventName = `${this.type}.closeWindow`;\n\n props.app.globalObserver.subscribe(closeEventName, () => {\n this.closeWindow();\n });\n }\n\n // Does not run on initial render, but runs on subsequential re-renders.\n componentDidUpdate(prevProps) {\n // Window's title and color can be updated on-the-flight, so we keep them\n // in state and ensure that state is updated when new props arrive.\n prevProps.custom.title !== this.props.custom.title &&\n this.setState({ title: this.props.custom.title });\n\n prevProps.custom.color !== this.props.custom.color &&\n this.setState({ color: this.props.custom.color });\n }\n\n pluginIsWidget(target) {\n return [\"left\", \"right\"].includes(target);\n }\n\n handleButtonClick = (e) => {\n this.showWindow({\n hideOtherPluginWindows: true,\n runCallback: true,\n });\n this.props.app.globalObserver.publish(\"core.onlyHideDrawerIfNeeded\");\n };\n\n showWindow = (opts = {}) => {\n const hideOtherPluginWindows = opts.hideOtherPluginWindows || true,\n runCallback = opts.runCallback || true;\n // Let the App know which tool is currently active\n this.props.app.activeTool = this.type;\n\n // Tell the Analytics model about this\n this.props.app.globalObserver.publish(\"analytics.trackEvent\", {\n eventName: \"pluginShown\",\n pluginName: this.type,\n activeMap: this.props.app.config.activeMap,\n });\n\n // AppModel keeps track of recently shown plugins.\n this.props.app.pushPluginIntoHistory({\n type: this.type,\n icon: this.props.custom.icon,\n title: this.title,\n description: this.description,\n });\n\n // Don't continue if visibility hasn't changed\n if (this.state.windowVisible === true) {\n return null;\n }\n\n hideOtherPluginWindows === true && this.props.app.onWindowOpen(this);\n\n this.setState(\n {\n windowVisible: true,\n },\n () => {\n // Notify the app that a plugin's visibility has changed\n this.props.app.globalObserver.publish(\"core.pluginVisibilityChanged\");\n\n // If there's a callback defined in custom, run it\n runCallback === true &&\n typeof this.props.custom.onWindowShow === \"function\" &&\n this.props.custom.onWindowShow();\n }\n );\n };\n\n closeWindow = () => {\n // If closeWindow was initiated by the tool that is currently\n // active, we should unset the activeTool property\n if (this.type === this.props.app.activeTool)\n this.props.app.activeTool = undefined;\n\n this.setState(\n {\n windowVisible: false,\n },\n () => {\n // Notify the app that a plugin's visibility has changed\n this.props.app.globalObserver.publish(\"core.pluginVisibilityChanged\");\n\n typeof this.props.custom.onWindowHide === \"function\" &&\n this.props.custom.onWindowHide();\n }\n );\n };\n /**\n * @summary Render the plugin and its buttons according to settings in admin.\n * @description See comments in code to follow the rendering logic.\n * @param {*} custom\n * @returns {object} React.Component\n * @memberof BaseWindowPlugin\n */\n renderWindow(custom) {\n const { target } = this.props.options;\n // BaseWindowPlugin, which calls this method, will supply an object.\n // If that object contains a render() function, we want to call it\n // and bypass any other functionality from this method.\n return typeof custom?.render === \"function\" ? (\n custom.render()\n ) : (\n // If there was not custom render method, we do \"normal\" rendering.\n // That includes rendering the plugin Window itself, as well as a\n // button (that will trigger opening of the plugin Window).\n <>\n t.type === \"layerswitcher\"\n )}\n >\n {/* We have to pass windowVisible down to the children so that we can conditionally render\n the component, since it does not accept components with display: \"none\". We use the\n windowVisible-prop to make sure that we don't render the when the window\n is not visible.*/}\n {React.cloneElement(this.props.children, {\n windowVisible: this.state.windowVisible,\n })}\n \n {/* Always render a Drawer button unless its target is \"hidden\". \n It's a backup for plugins render elsewhere: we hide \n Widget and Control buttons on small screens and fall \n back to Drawer button). */}\n {target !== \"hidden\" && this.renderDrawerButton()}\n {/* Widget buttons must also render a Widget */}\n {this.pluginIsWidget(target) &&\n this.renderWidgetButton(`${target}-column`)}\n {/* Finally, render a Control button if target has that value */}\n {target === \"control\" && this.renderControlButton()}\n \n );\n }\n\n /**\n * This is a bit of a special case. This method will render\n * not only plugins specified as Drawer plugins (target===toolbar),\n * but it will also render Widget and Control plugins - given some special condition.\n *\n * Those special conditions are small screens, where there's no screen\n * estate to render the Widget button in Map Overlay.\n */\n renderDrawerButton() {\n return createPortal(\n \n \n {this.props.custom.icon}\n \n \n ,\n document.getElementById(\"plugin-buttons\")\n );\n }\n\n renderWidgetButton(id) {\n return createPortal(\n // Hide Widget button on small screens, see renderDrawerButton too\n \n \n ,\n document.getElementById(id)\n );\n }\n\n renderControlButton() {\n return createPortal(\n // Hide Control button on small screens, see renderDrawerButton too\n \n \n ,\n document.getElementById(\"plugin-control-buttons\")\n );\n }\n\n render() {\n // Don't render if \"clean\" query param is specified, otherwise go on\n return (\n this.props.app.config.mapConfig.map.clean !== true &&\n this.renderWindow(this.props.custom)\n );\n }\n}\n\nexport default BaseWindowPlugin;\n","import React from \"react\";\nimport BaseWindowPlugin from \"../BaseWindowPlugin\";\n\nimport ExploreIcon from \"@mui/icons-material/Explore\";\n\nimport CoordinatesView from \"./CoordinatesView.js\";\nimport CoordinatesModel from \"./CoordinatesModel.js\";\nimport Observer from \"react-event-observer\";\n\nclass Coordinates extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.localObserver = Observer();\n\n this.coordinatesModel = new CoordinatesModel({\n map: props.map,\n app: props.app,\n options: props.options,\n localObserver: this.localObserver,\n });\n }\n\n onWindowShow = () => {\n this.coordinatesModel.activate();\n };\n\n onWindowHide = () => {\n this.coordinatesModel.deactivate();\n };\n\n render() {\n return (\n ,\n title: \"Visa koordinat\",\n description: \"Visa koordinater för given plats\",\n height: \"dynamic\",\n width: 400,\n disablePadding: true,\n onWindowShow: this.onWindowShow,\n onWindowHide: this.onWindowHide,\n }}\n >\n \n \n );\n }\n}\n\nexport default Coordinates;\n","import { transform } from \"ol/proj\";\nimport Feature from \"ol/Feature\";\nimport Vector from \"ol/layer/Vector\";\nimport VectorSource from \"ol/source/Vector\";\nimport Point from \"ol/geom/Point.js\";\nimport Draw from \"ol/interaction/Draw.js\";\nimport { Circle as CircleStyle, Fill, Stroke, Style, Icon } from \"ol/style\";\n\nclass CoordinatesModel {\n constructor(settings) {\n this.app = settings.app;\n this.map = settings.map;\n this.localObserver = settings.localObserver;\n this.thousandSeparator = settings.options.thousandSeparator ?? false;\n this.showFieldsOnStart = settings.options.showFieldsOnStart ?? false;\n\n this.coordinates = undefined;\n this.transformations = settings.options.transformations;\n if (!this.transformations || this.transformations.length === 0) {\n this.transformations = [\n {\n code: \"EPSG:4326\",\n precision: 3,\n default: false,\n hint: \"\",\n title: \"WGS84\",\n xtitle: \"Lng\",\n ytitle: \"Lat\",\n inverseAxis: true,\n },\n ];\n } else {\n // Give default values in case none is set\n this.transformations.forEach((t) => {\n t.code = t.code ?? \"\";\n t.precision = t.precision ?? 3;\n t.default = t.default ?? false;\n t.title = t.title ?? \"\";\n t.xtitle = t.xtitle ?? \"\";\n t.ytitle = t.ytitle ?? \"\";\n t.inverseAxis = t.inverseAxis ?? \"\";\n t.coordinates = t.coordinates ?? \"\";\n });\n }\n\n this.source = new VectorSource();\n this.vector = new Vector({\n layerType: \"system\",\n zIndex: 5000,\n name: \"pluginCoordinate\",\n caption: \"Coordinate layer\",\n source: this.source,\n });\n this.map.addLayer(this.vector);\n this.localObserver.subscribe(\"newCoordinates\", (incomingCoords) => {\n let transformedCoords = incomingCoords[\"coordinates\"];\n if (\n incomingCoords[\"proj\"] !== this.map.getView().getProjection().getCode()\n ) {\n transformedCoords = transform(\n incomingCoords[\"coordinates\"],\n incomingCoords[\"proj\"],\n this.map.getView().getProjection().getCode()\n );\n }\n this.addMarker(transformedCoords);\n });\n }\n\n activate() {\n this.addInteraction();\n this.localObserver.publish(\"showSnackbar\");\n if (this.showFieldsOnStart) {\n this.localObserver.publish(\"newCoordinates\", {\n coordinates: this.map.getView().getCenter(),\n proj: this.map.getView().getProjection().getCode(),\n force: true,\n });\n }\n }\n\n deactivate() {\n this.removeInteraction();\n this.vector.getSource().clear();\n\n this.localObserver.publish(\"hideSnackbar\");\n }\n\n /**\n * @summary Removes any previous markers and adds a new one to the given coordinates.\n * @memberof CoordinatesModel\n */\n addMarker = (coordinates) => {\n // Prepare the feature\n const feature = new Feature({\n geometry: new Point(coordinates),\n });\n\n // Style it with a nice icon\n const styleMarker = new Style({\n image: new Icon({\n anchor: [0.5, 1],\n scale: 0.15,\n src: \"marker.png\",\n }),\n });\n feature.setStyle(styleMarker);\n\n // Remove any previous markers\n this.vector.getSource().clear();\n\n // Add the new marker\n this.source.addFeature(feature);\n };\n\n /**\n * @summary Pans so the marker is at the center of the view\n */\n centerOnMarker = () => {\n if (this.vector.getSource().getFeatures().length > 0) {\n this.map\n .getView()\n .setCenter(\n this.vector\n .getSource()\n .getFeatures()[0]\n .getGeometry()\n .getCoordinates()\n );\n }\n };\n\n /**\n * @summary Zooms in on and centers on the marker\n */\n zoomOnMarker = () => {\n if (this.vector.getSource().getFeatures().length > 0) {\n this.map\n .getView()\n .fit(this.vector.getSource().getFeatures()[0].getGeometry());\n }\n };\n\n /**\n * @summary Gets the user's position and puts the marker there\n */\n goToUserLocation = () => {\n if (navigator.geolocation) {\n const options = {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 30000,\n };\n\n navigator.geolocation.getCurrentPosition(\n (pos) => {\n const point = new Point([pos.coords.longitude, pos.coords.latitude]);\n point.transform(\n \"EPSG:4326\",\n this.map.getView().getProjection().getCode()\n );\n this.coordinates = point.getCoordinates();\n this.localObserver.publish(\"newCoordinates\", {\n coordinates: this.coordinates,\n proj: this.map.getView().getProjection().getCode(),\n force: true,\n });\n this.map.getView().setCenter(point.getCoordinates());\n },\n (error) => {\n // If error code is 1 (User denied Geolocation), show Snackbar with instructions to enable it again\n if (error.code === 1) {\n this.localObserver.publish(\"location-permissions-denied\");\n }\n },\n options\n );\n }\n };\n\n /**\n * @summary Executed when the reset button is pressed and sends a request\n * to all transformations to reset their values to empty strings.\n * Also removes the marker\n */\n resetCoords = () => {\n this.vector.getSource().clear();\n this.localObserver.publish(\"resetCoordinates\");\n this.coordinates = undefined;\n };\n\n /**\n * @summary When draw has ended, get the coordinates for the point\n * drawn and add a marker to those coordinates.\n *\n * @memberof CoordinatesModel\n */\n handleDrawEnd = (e) => {\n // Grab coordinates from the Point that has been drawn\n this.coordinates = e.feature.getGeometry().getCoordinates();\n this.addMarker(this.coordinates);\n\n this.localObserver.publish(\"newCoordinates\", {\n coordinates: this.coordinates,\n proj: this.map.getView().getProjection(),\n force: true,\n });\n };\n\n addInteraction() {\n this.draw = new Draw({\n source: this.source,\n type: \"Point\",\n style: new Style({\n image: new CircleStyle({\n radius: 5,\n stroke: new Stroke({\n color: \"rgba(0, 0, 0, 0.7)\",\n }),\n fill: new Fill({\n color: \"rgba(255, 255, 255, 0.2)\",\n }),\n }),\n }),\n });\n this.draw.on(\"drawend\", this.handleDrawEnd);\n this.map.addInteraction(this.draw);\n this.map.clickLock.add(\"coordinates\");\n\n // Add snap interactions AFTER measure source has been added\n // this will allow us to snap to the newly added source too\n this.map.snapHelper.add(\"coordinates\");\n }\n\n removeInteraction() {\n this.map.snapHelper.delete(\"coordinates\");\n this.map.removeInteraction(this.draw);\n this.map.clickLock.delete(\"coordinates\");\n }\n\n closeSnackbar() {\n this.localObserver.publish(\"hideSnackbar\");\n }\n}\n\nexport default CoordinatesModel;\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport NumberFormat from \"react-number-format\";\nimport { transform } from \"ol/proj\";\nimport { withSnackbar } from \"notistack\";\nimport Grid from \"@mui/material/Grid\";\n\nclass CoordinatesTransformRow extends React.PureComponent {\n state = {\n errorX: \"\",\n errorY: \"\",\n coordinateX: \"\",\n coordinateY: \"\",\n coordinateXFloat: 0,\n coordinateYFloat: 0,\n wasLastChanged: false,\n wasModified: false,\n };\n\n constructor(props) {\n super(props);\n this.model = this.props.model;\n this.transformation = this.props.transformation;\n this.localObserver = this.props.model.localObserver;\n\n this.localObserver.subscribe(\"newCoordinates\", (incomingCoords) => {\n // Force a change if the new coords from map click or user location since\n // there might be a transformation with the same code as on the map\n if (\n incomingCoords[\"proj\"] !== this.transformation.code ||\n incomingCoords[\"force\"]\n ) {\n const transformedCoords = transform(\n incomingCoords[\"coordinates\"],\n incomingCoords[\"proj\"],\n this.props.transformation.code\n );\n this.setState({\n errorX: \"\",\n errorY: \"\",\n wasModified: true,\n coordinateX: transformedCoords[0].toFixed(\n this.transformation.precision\n ),\n coordinateY: transformedCoords[1].toFixed(\n this.transformation.precision\n ),\n coordinateXFloat: transformedCoords[0],\n coordinateYFloat: transformedCoords[1],\n wasLastChanged: false,\n });\n } else {\n this.setState({ wasLastChanged: true, wasModified: true });\n }\n });\n\n this.localObserver.subscribe(\"resetCoordinates\", () => {\n this.setState({\n errorX: \"\",\n errorY: \"\",\n coordinateX: \"\",\n coordinateY: \"\",\n coordinateXFloat: 0,\n coordinateYFloat: 0,\n });\n });\n }\n\n handleInputX(event) {\n if (\n (!this.props.inverseAxis && event.value === this.state.coordinateX) ||\n (this.props.inverseAxis && event.value === this.state.coordinateY)\n ) {\n // Nothing was changed so do nothing, this happens since the value is\n // changed multiple times during formatting and we do not want to create\n // infinite loops\n return;\n }\n if (!this.props.inverseAxis) {\n // Validate that the changed data is a finite number\n this.setState({\n coordinateX: event.value,\n coordinateXFloat: event.floatValue,\n wasModified: true,\n });\n } else {\n this.setState({\n coordinateY: event.value,\n coordinateYFloat: event.floatValue,\n wasModified: true,\n });\n }\n if (isNaN(event.floatValue) || !isFinite(event.floatValue)) {\n this.setState({ errorX: \"Ange ett decimaltal\" });\n } else {\n this.setState({ errorX: \"\" });\n const updatedValue = event.floatValue;\n\n if (!this.props.inverseAxis) {\n // publish the new value so all other transformations and the marker is updated\n this.localObserver.publish(\"newCoordinates\", {\n coordinates: [updatedValue, this.state.coordinateYFloat],\n proj: this.props.transformation.code,\n force: false,\n });\n } else {\n // publish the new value so all other transformations and the marker is updated\n this.localObserver.publish(\"newCoordinates\", {\n coordinates: [this.state.coordinateXFloat, updatedValue],\n proj: this.props.transformation.code,\n force: false,\n });\n }\n }\n }\n\n handleInputY(event) {\n if (\n (!this.props.inverseAxis && event.value === this.state.coordinateY) ||\n (this.props.inverseAxis && event.value === this.state.coordinateX)\n ) {\n // Nothing was changed so do nothing, this happens since the value is\n // changed multiple times during formatting and we do not want to create\n // infinite loops\n return;\n }\n if (!this.props.inverseAxis) {\n // Validate that the changed data is a finite number\n this.setState({\n coordinateY: event.value,\n coordinateYFloat: event.floatValue,\n wasModified: true,\n });\n } else {\n this.setState({\n coordinateX: event.value,\n coordinateXFloat: event.floatValue,\n wasModified: true,\n });\n }\n if (isNaN(event.floatValue) || !isFinite(event.floatValue)) {\n this.setState({ errorY: \"Ange ett decimaltal\" });\n } else {\n this.setState({ errorY: \"\" });\n const updatedValue = event.floatValue;\n\n if (!this.props.inverseAxis) {\n // publish the new value so all other transformations and the marker is updated\n this.localObserver.publish(\"newCoordinates\", {\n coordinates: [this.state.coordinateXFloat, updatedValue],\n proj: this.props.transformation.code,\n force: false,\n });\n } else {\n // publish the new value so all other transformations and the marker is updated\n this.localObserver.publish(\"newCoordinates\", {\n coordinates: [updatedValue, this.state.coordinateYFloat],\n proj: this.props.transformation.code,\n force: false,\n });\n }\n }\n }\n\n componentWillUnmount() {}\n\n render() {\n let xCoord = this.props.inverseAxis\n ? this.state.coordinateY\n : this.state.coordinateX;\n let yCoord = this.props.inverseAxis\n ? this.state.coordinateX\n : this.state.coordinateY;\n\n if (this.model.showFieldsOnStart || this.state.wasModified) {\n return (\n \n \n \n {this.transformation\n ? this.transformation.title +\n \" (\" +\n this.transformation.code +\n \")\"\n : \"\"}\n \n \n \n {\n this.handleInputX(values);\n }}\n axis={this.props.transformation.inverseAxis ? \"X\" : \"Y\"}\n error={this.state.errorX !== \"\"}\n helperText={this.state.errorX}\n thousandSeparator={this.model.thousandSeparator ? \" \" : false}\n customInput={TextField}\n fullWidth={true}\n />\n \n \n {\n this.handleInputY(values);\n }}\n axis={this.props.transformation.inverseAxis ? \"Y\" : \"X\"}\n error={this.state.errorY !== \"\"}\n helperText={this.state.errorY}\n thousandSeparator={this.model.thousandSeparator ? \" \" : false}\n customInput={TextField}\n fullWidth={true}\n />\n \n \n );\n } else {\n return <>;\n }\n }\n}\n\nexport default withSnackbar(CoordinatesTransformRow);\n","import React from \"react\";\nimport Button from \"@mui/material/Button\";\nimport { styled } from \"@mui/material/styles\";\nimport Grid from \"@mui/material/Grid\";\nimport CoordinatesTransformRow from \"./CoordinatesTransformRow.js\";\nimport { Divider, Tooltip } from \"@mui/material\";\n\nimport { withSnackbar } from \"notistack\";\n\nimport {\n LOCATION_DENIED_SNACK_OPTIONS,\n LOCATION_DENIED_SNACK_MESSAGE,\n} from \"plugins/Location/constants/index.js\";\n\nconst StyledGridContainer = styled(Grid)(({ theme }) => ({\n padding: theme.spacing(2),\n}));\n\nclass CoordinatesView extends React.PureComponent {\n state = {};\n\n constructor(props) {\n super(props);\n this.model = this.props.model;\n this.snackbarKey = null;\n this.localObserver = this.props.localObserver;\n\n /**\n * Setup listeners that will show/hide snackbar. The Model will publish\n * the following events in order to show/hide Snackbar.\n * Snackbar will show up to inform user to click in the map. When user has\n * clicked, or changed to another tool, the snackbar will close.\n */\n this.localObserver.subscribe(\"showSnackbar\", () => {\n this.snackbarKey = this.props.enqueueSnackbar(\n \"Klicka i kartan för att välja position.\",\n {\n variant: \"info\",\n persist: true,\n anchorOrigin: {\n vertical: \"bottom\",\n horizontal: \"center\",\n },\n sx: {\n // Custom styling to follow Material Design guidelines for Snackbar.\n // Placing the close button to the right of the text.\n \".SnackbarItem-contentRoot\": {\n flexWrap: \"inherit !important\",\n },\n },\n action: (key) => (\n {\n this.props.model.closeSnackbar();\n }}\n >\n Stäng\n \n ),\n }\n );\n });\n\n this.localObserver.subscribe(\"hideSnackbar\", () => {\n this.props.closeSnackbar(this.snackbarKey);\n });\n\n this.localObserver.subscribe(\"location-permissions-denied\", () => {\n this.props.enqueueSnackbar(\n LOCATION_DENIED_SNACK_MESSAGE,\n LOCATION_DENIED_SNACK_OPTIONS\n );\n });\n }\n\n componentWillUnmount() {\n this.model.deactivate();\n }\n\n renderProjections() {\n return (\n <>\n {this.props.model.transformations.map((transformation, index) => (\n \n ))}\n \n );\n }\n\n renderButtons() {\n return (\n \n \n \n {\n this.props.model.resetCoords();\n }}\n >\n Rensa\n \n \n \n \n \n {\n this.props.model.goToUserLocation();\n }}\n >\n Min position\n \n \n \n \n \n {\n this.props.model.centerOnMarker();\n }}\n >\n Panorera\n \n \n \n \n \n {\n this.props.model.zoomOnMarker();\n }}\n >\n Zooma\n \n \n \n \n );\n }\n\n render() {\n return (\n \n \n {this.renderProjections()}\n \n \n \n \n \n {this.renderButtons()}\n \n \n );\n }\n}\n\nexport default withSnackbar(CoordinatesView);\n","export const LOCATION_DENIED_SNACK_MESSAGE =\n \"Du behöver tillåta att applikationen visar din position. För datorer: De flesta webbläsare har en lås-ikon i adressfältet som du kan klicka på för att tillåta Plats/Position.\";\nexport const LOCATION_DENIED_SNACK_OPTIONS = Object.freeze({\n variant: \"info\",\n persist: false,\n anchorOrigin: {\n vertical: \"top\",\n horizontal: \"center\",\n },\n});\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 10.9c-.61 0-1.1.49-1.1 1.1s.49 1.1 1.1 1.1c.61 0 1.1-.49 1.1-1.1s-.49-1.1-1.1-1.1zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm2.19 12.19L6 18l3.81-8.19L18 6l-3.81 8.19z\"\n}), 'Explore');\nexports.default = _default;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardActionAreaUtilityClass(slot) {\n return generateUtilityClass('MuiCardActionArea', slot);\n}\nconst cardActionAreaClasses = generateUtilityClasses('MuiCardActionArea', ['root', 'focusVisible', 'focusHighlight']);\nexport default cardActionAreaClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"focusVisibleClassName\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport cardActionAreaClasses, { getCardActionAreaUtilityClass } from './cardActionAreaClasses';\nimport ButtonBase from '../ButtonBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n focusHighlight: ['focusHighlight']\n };\n return composeClasses(slots, getCardActionAreaUtilityClass, classes);\n};\nconst CardActionAreaRoot = styled(ButtonBase, {\n name: 'MuiCardActionArea',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n display: 'block',\n textAlign: 'inherit',\n width: '100%',\n [`&:hover .${cardActionAreaClasses.focusHighlight}`]: {\n opacity: (theme.vars || theme).palette.action.hoverOpacity,\n '@media (hover: none)': {\n opacity: 0\n }\n },\n [`&.${cardActionAreaClasses.focusVisible} .${cardActionAreaClasses.focusHighlight}`]: {\n opacity: (theme.vars || theme).palette.action.focusOpacity\n }\n}));\nconst CardActionAreaFocusHighlight = styled('span', {\n name: 'MuiCardActionArea',\n slot: 'FocusHighlight',\n overridesResolver: (props, styles) => styles.focusHighlight\n})(({\n theme\n}) => ({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit',\n opacity: 0,\n backgroundColor: 'currentcolor',\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.short\n })\n}));\nconst CardActionArea = /*#__PURE__*/React.forwardRef(function CardActionArea(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardActionArea'\n });\n const {\n children,\n className,\n focusVisibleClassName\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(CardActionAreaRoot, _extends({\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(focusVisibleClassName, classes.focusVisible),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [children, /*#__PURE__*/_jsx(CardActionAreaFocusHighlight, {\n className: classes.focusHighlight,\n ownerState: ownerState\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardActionArea.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardActionArea;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardHeaderUtilityClass(slot) {\n return generateUtilityClass('MuiCardHeader', slot);\n}\nconst cardHeaderClasses = generateUtilityClasses('MuiCardHeader', ['root', 'avatar', 'action', 'content', 'title', 'subheader']);\nexport default cardHeaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"avatar\", \"className\", \"component\", \"disableTypography\", \"subheader\", \"subheaderTypographyProps\", \"title\", \"titleTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Typography from '../Typography';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport cardHeaderClasses, { getCardHeaderUtilityClass } from './cardHeaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n avatar: ['avatar'],\n action: ['action'],\n content: ['content'],\n title: ['title'],\n subheader: ['subheader']\n };\n return composeClasses(slots, getCardHeaderUtilityClass, classes);\n};\nconst CardHeaderRoot = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Root',\n overridesResolver: (props, styles) => _extends({\n [`& .${cardHeaderClasses.title}`]: styles.title,\n [`& .${cardHeaderClasses.subheader}`]: styles.subheader\n }, styles.root)\n})({\n display: 'flex',\n alignItems: 'center',\n padding: 16\n});\nconst CardHeaderAvatar = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Avatar',\n overridesResolver: (props, styles) => styles.avatar\n})({\n display: 'flex',\n flex: '0 0 auto',\n marginRight: 16\n});\nconst CardHeaderAction = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n flex: '0 0 auto',\n alignSelf: 'flex-start',\n marginTop: -4,\n marginRight: -8,\n marginBottom: -4\n});\nconst CardHeaderContent = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})({\n flex: '1 1 auto'\n});\nconst CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardHeader'\n });\n const {\n action,\n avatar,\n className,\n component = 'div',\n disableTypography = false,\n subheader: subheaderProp,\n subheaderTypographyProps,\n title: titleProp,\n titleTypographyProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n disableTypography\n });\n const classes = useUtilityClasses(ownerState);\n let title = titleProp;\n if (title != null && title.type !== Typography && !disableTypography) {\n title = /*#__PURE__*/_jsx(Typography, _extends({\n variant: avatar ? 'body2' : 'h5',\n className: classes.title,\n component: \"span\",\n display: \"block\"\n }, titleTypographyProps, {\n children: title\n }));\n }\n let subheader = subheaderProp;\n if (subheader != null && subheader.type !== Typography && !disableTypography) {\n subheader = /*#__PURE__*/_jsx(Typography, _extends({\n variant: avatar ? 'body2' : 'body1',\n className: classes.subheader,\n color: \"text.secondary\",\n component: \"span\",\n display: \"block\"\n }, subheaderTypographyProps, {\n children: subheader\n }));\n }\n return /*#__PURE__*/_jsxs(CardHeaderRoot, _extends({\n className: clsx(classes.root, className),\n as: component,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [avatar && /*#__PURE__*/_jsx(CardHeaderAvatar, {\n className: classes.avatar,\n ownerState: ownerState,\n children: avatar\n }), /*#__PURE__*/_jsxs(CardHeaderContent, {\n className: classes.content,\n ownerState: ownerState,\n children: [title, subheader]\n }), action && /*#__PURE__*/_jsx(CardHeaderAction, {\n className: classes.action,\n ownerState: ownerState,\n children: action\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardHeader.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The action to display in the card header.\n */\n action: PropTypes.node,\n /**\n * The Avatar element to display.\n */\n avatar: PropTypes.node,\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, `subheader` and `title` won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `title` text, and optional `subheader` text\n * with the Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The content of the component.\n */\n subheader: PropTypes.node,\n /**\n * These props will be forwarded to the subheader\n * (as long as disableTypography is not `true`).\n */\n subheaderTypographyProps: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The content of the component.\n */\n title: PropTypes.node,\n /**\n * These props will be forwarded to the title\n * (as long as disableTypography is not `true`).\n */\n titleTypographyProps: PropTypes.object\n} : void 0;\nexport default CardHeader;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"raised\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Paper from '../Paper';\nimport { getCardUtilityClass } from './cardClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n name: 'MuiCard',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n overflow: 'hidden'\n };\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCard'\n });\n const {\n className,\n raised = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n raised\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardRoot, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : undefined,\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the card will use raised styling.\n * @default false\n */\n raised: chainPropTypes(PropTypes.bool, props => {\n if (props.raised && props.variant === 'outlined') {\n return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n }\n return null;\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;"],"names":["StyledCard","styled","MUICard","theme","marginBottom","spacing","width","breakpoints","down","boxShadow","borderBottom","borderRadius","margin","justifyContent","StyledAvatar","Avatar","background","palette","text","primary","Card","React","state","open","render","abstract","icon","onClick","title","this","props","avatar","subheader","defaultProps","BaseWindowPlugin","constructor","super","handleButtonClick","e","showWindow","hideOtherPluginWindows","runCallback","app","globalObserver","publish","opts","activeTool","type","eventName","pluginName","activeMap","config","pushPluginIntoHistory","custom","description","windowVisible","onWindowOpen","setState","onWindowShow","closeWindow","undefined","onWindowHide","toLowerCase","options","visibleAtStart","mapConfig","map","clean","isMobile","visibleAtStartMobile","color","height","position","registerWindowPlugin","subscribe","closeEventName","componentDidUpdate","prevProps","pluginIsWidget","target","includes","renderWindow","onClose","onResize","onMaximize","onMinimize","draggingEnabled","customPanelHeaderButtons","resizingEnabled","scrollable","allowMaximizedWindow","disablePadding","mode","layerswitcherConfig","tools","find","t","children","renderDrawerButton","renderWidgetButton","renderControlButton","createPortal","mdUp","button","divider","selected","document","getElementById","id","mdDown","Coordinates","coordinatesModel","activate","deactivate","localObserver","Observer","CoordinatesModel","model","settings","addMarker","coordinates","feature","Feature","geometry","Point","styleMarker","Style","image","Icon","anchor","scale","src","setStyle","vector","getSource","clear","source","addFeature","centerOnMarker","getFeatures","length","getView","setCenter","getGeometry","getCoordinates","zoomOnMarker","fit","goToUserLocation","navigator","geolocation","enableHighAccuracy","timeout","maximumAge","getCurrentPosition","pos","point","coords","longitude","latitude","transform","getProjection","getCode","proj","force","error","code","resetCoords","handleDrawEnd","thousandSeparator","showFieldsOnStart","transformations","forEach","precision","default","xtitle","ytitle","inverseAxis","hint","VectorSource","Vector","layerType","zIndex","name","caption","addLayer","incomingCoords","transformedCoords","addInteraction","getCenter","removeInteraction","draw","Draw","style","CircleStyle","radius","stroke","Stroke","fill","Fill","on","clickLock","add","snapHelper","delete","closeSnackbar","CoordinatesTransformRow","errorX","errorY","coordinateX","coordinateY","coordinateXFloat","coordinateYFloat","wasLastChanged","wasModified","transformation","toFixed","handleInputX","event","value","floatValue","isNaN","isFinite","updatedValue","handleInputY","componentWillUnmount","xCoord","yCoord","container","item","rowSpacing","xs","variant","fontWeight","md","label","size","onValueChange","values","axis","helperText","customInput","TextField","fullWidth","withSnackbar","StyledGridContainer","Grid","padding","CoordinatesView","snackbarKey","enqueueSnackbar","persist","anchorOrigin","vertical","horizontal","sx","flexWrap","action","key","LOCATION_DENIED_SNACK_MESSAGE","LOCATION_DENIED_SNACK_OPTIONS","renderProjections","index","renderButtons","mb","sm","columnSpacing","Object","freeze","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","jsx","d","getCardActionAreaUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CardActionAreaRoot","ButtonBase","overridesResolver","styles","root","display","textAlign","cardActionAreaClasses","opacity","vars","hoverOpacity","focusOpacity","CardActionAreaFocusHighlight","focusHighlight","overflow","pointerEvents","top","right","bottom","left","backgroundColor","transition","transitions","create","duration","short","inProps","ref","useThemeProps","className","focusVisibleClassName","other","_objectWithoutPropertiesLoose","ownerState","classes","composeClasses","useUtilityClasses","_jsxs","_extends","clsx","focusVisible","_jsx","getCardHeaderUtilityClass","CardHeaderRoot","cardHeaderClasses","alignItems","CardHeaderAvatar","flex","marginRight","CardHeaderAction","alignSelf","marginTop","CardHeaderContent","content","component","disableTypography","subheaderProp","subheaderTypographyProps","titleProp","titleTypographyProps","Typography","as","getCardUtilityClass","CardRoot","Paper","raised","elevation"],"sourceRoot":""}