{"version":3,"file":"static/js/1041.b3f23a83.chunk.js","mappings":"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","sources":["plugins/Collector/components/CollectorForm.js","plugins/Collector/components/Page.js","plugins/Collector/components/Toolbar.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Page from \"./Page.js\";\nimport Typography from \"@mui/material/Typography\";\n\nconst SaveErrorTextWrapper = styled(\"div\")(({ theme }) => ({\n color: theme.palette.error.contrastText,\n background: theme.palette.error.main,\n marginTop: \"15px\",\n borderRadius: theme.shape.borderRadius,\n padding: \"5px\",\n}));\n\nconst ErrorTypography = styled(Typography)(({ theme }) => ({\n color: theme.palette.text.primary,\n}));\n\nconst saveErrorText = \"Fel - din kommentar gick inte att spara.\";\n//const validationErrorText = \" - detta fält krävs\";\nclass CollectorForm extends Component {\n state = {\n comment: \"\",\n saveError: \"\",\n validationError: \"\",\n form: [],\n displayPlace: false,\n activePage: 0,\n direction: \"right\",\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n ...this.state,\n form: props.form,\n };\n\n props.model.observer.subscribe(\"abort\", () => {\n this.abort();\n });\n\n props.model.observer.subscribe(\"reset\", () => {\n // Set the page indicator to -1. This will reset the form properly.\n // Then set the page indicator to 0 to display the first page.\n // Just setting the flag to 0 will not reset the form if there is only one page.\n this.setState(\n {\n activePage: -1,\n },\n () => {\n this.setState({\n activePage: 0,\n });\n }\n );\n });\n }\n\n componentDidMount() {\n if (!this.props.model.serviceConfig) {\n this.setState({\n configurationError: true,\n });\n }\n }\n\n saveError = (text) => {\n this.setState({\n saveError: text || saveErrorText,\n });\n };\n\n renderSaveError() {\n return this.state.saveError ? (\n {this.state.saveError}\n ) : null;\n }\n\n abort = () => {\n this.props.onClose();\n };\n\n render() {\n const { activePage, direction } = this.state;\n const { form, serviceConfig } = this.props;\n if (this.state.configurationError) {\n return (\n \n Nödvändig konfiguration saknas. Verktyget kan inte användas för\n tillfället.\n \n );\n } else {\n return form\n .sort((p1, p2) =>\n p1.order === p2.order ? 0 : p1.order > p2.order ? 1 : -1\n )\n .map(\n (page, i) =>\n activePage === page.order && (\n {\n this.setState({\n activePage: activePage + 1,\n direction: \"left\",\n });\n }}\n onPrevPage={() => {\n this.setState({\n activePage: activePage - 1,\n direction: \"right\",\n });\n }}\n >\n )\n );\n }\n }\n}\n\nexport default CollectorForm;\n","import React, { Component } from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Box from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport Parser from \"html2json\";\nimport Button from \"@mui/material/Button\";\nimport Input from \"@mui/material/Input\";\nimport TextField from \"@mui/material/TextField\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport NativeSelect from \"@mui/material/NativeSelect\";\nimport FormLabel from \"@mui/material/FormLabel\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormGroup from \"@mui/material/FormGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport ArrowForwardIcon from \"@mui/icons-material/ArrowForward\";\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\nimport Slide from \"@mui/material/Slide\";\nimport Toolbar from \"./Toolbar.js\";\nimport { withSnackbar } from \"notistack\";\n\nconst PageContent = styled(\"div\")(() => ({\n height: \"calc(100% - 60px)\",\n overflowX: \"hidden\",\n borderBottom: \"1px solid #ccc\",\n}));\n\nconst PageContentInner = styled(\"div\")(() => ({\n paddingBottom: \"10px\",\n}));\n\nclass Page extends Component {\n constructor(props) {\n super(props);\n if (props.page.text) {\n var json = Parser.html2json(props.page.text);\n this.state = {\n json: json,\n displayThankYou: false,\n };\n this.formErrors = {};\n }\n }\n\n getError(field) {\n return this.formErrors.hasOwnProperty(field.name) ? (\n
{this.formErrors[field.name]}
\n ) : null;\n }\n\n checkInteger(name, value) {\n var formValues = Object.assign({}, this.props.model.formValues);\n if (/^\\d+$/.test(value) || value === \"\") {\n formValues[name] = value;\n } else {\n if (!this.props.model.formValues[name]) {\n formValues[name] = \"\";\n }\n }\n this.props.model.formValues = formValues;\n this.forceUpdate();\n }\n\n checkNumber(name, value) {\n var formValues = Object.assign({}, this.props.model.formValues);\n if (/^\\d+([.,](\\d+)?)?$/.test(value) || value === \"\") {\n value = value.replace(\",\", \".\");\n formValues[name] = value;\n } else {\n if (!this.props.model.formValues[name]) {\n formValues[name] = \"\";\n }\n }\n this.props.model.formValues = formValues;\n this.forceUpdate();\n }\n\n checkUrl(name, value) {\n var regex =\n /^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!$&'()*+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!$&'()*+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!$&'()*+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!$&'()*+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!$&'()*+,;=]|:|@)|\\/|\\?)*)?$/i;\n var valid = regex.test(value);\n var formValues = Object.assign({}, this.props.model.formValues);\n if (valid || value === \"\") {\n formValues[name] = value;\n delete this.formErrors[name];\n } else {\n formValues[name] = \"\";\n this.formErrors[name] =\n \"Ange en giltig url. t.ex. https://www.example.com\";\n }\n this.props.model.formValues = formValues;\n this.forceUpdate();\n }\n\n checkText(name, value) {\n var formValues = Object.assign({}, this.props.model.formValues);\n formValues[name] = value;\n this.props.model.formValues = formValues;\n this.forceUpdate();\n }\n\n checkSelect(name, value) {\n var formValues = Object.assign({}, this.props.model.formValues);\n formValues[name] = value;\n this.props.model.formValues = formValues;\n this.forceUpdate();\n }\n\n checkMultiple(name, checked, value, index) {\n var formValues = Object.assign({}, this.props.model.formValues);\n formValues[name][index].checked = checked;\n this.props.model.formValues = formValues;\n this.forceUpdate();\n }\n\n checkDate(name, date) {\n var formValues = Object.assign({}, this.props.model.formValues);\n formValues[name] = date;\n this.props.model.formValues = formValues;\n this.forceUpdate();\n }\n\n getValueMarkup(field, label) {\n if (!field) return null;\n\n if (field.dataType === \"int\") {\n field.textType = \"heltal\";\n }\n\n if (field.dataType === \"number\") {\n field.textType = \"nummer\";\n }\n\n if (field.dataType === \"date\") {\n field.textType = \"datum\";\n }\n\n var value = this.props.model.formValues[field.name];\n\n if (value === undefined || value === null) {\n value = \"\";\n }\n\n if (value === \"\" && field.initialRender) {\n if (field.defaultValue !== null) {\n value = field.defaultValue;\n }\n }\n\n if (Array.isArray(label)) {\n label = label.join(\" \");\n }\n\n switch (field.textType) {\n case \"heltal\":\n return (\n {\n this.checkInteger(field.name, e.target.value);\n field.initialRender = false;\n }}\n />\n );\n case \"nummer\":\n return (\n {\n this.checkNumber(field.name, e.target.value);\n field.initialRender = false;\n }}\n />\n );\n case \"datum\":\n return (\n {\n this.checkDate(field.name, e.target.value);\n field.initialRender = false;\n }}\n InputLabelProps={{\n shrink: true,\n }}\n />\n );\n case \"url\":\n case \"fritext\":\n return (\n <>\n {\n this.checkText(field.name, e.target.value);\n field.initialRender = false;\n }}\n onBlur={(e) => {\n if (field.textType === \"url\") {\n this.checkUrl(field.name, e.target.value);\n }\n field.initialRender = false;\n }}\n />\n {this.getError(field)}\n \n );\n case \"flerval\":\n let defaultValues = [];\n if (typeof field.defaultValue === \"string\") {\n defaultValues = field.defaultValue.split(\",\");\n }\n if (field.initialRender) {\n defaultValues.forEach((defaultValue) => {\n value.forEach((val) => {\n if (defaultValue === val.value) {\n val.checked = true;\n }\n });\n });\n }\n\n let checkboxes = field.values.map((val, i) => {\n var id = field.name + i,\n item = (Array.isArray(value) &&\n value.find((item) => item.value === val)) || {\n checked: false,\n };\n\n return (\n {\n this.checkMultiple(field.name, e.target.checked, val, i);\n field.initialRender = false;\n }}\n />\n }\n label={val}\n />\n );\n });\n return (\n
\n \n {label || field.name}\n {checkboxes}\n \n
\n );\n case \"lista\":\n let options = [];\n if (Array.isArray(field.values)) {\n options = field.values.map((val, i) => (\n \n ));\n if (field.defaultValue === undefined || field.defaultValue === \"\") {\n options.unshift(\n \n );\n }\n }\n\n if ((!value || value === \"\") && field.defaultValue) {\n value = field.defaultValue;\n if (field.initialRender !== false) {\n setTimeout(() => {\n this.checkSelect(field.name, value);\n }, 0);\n }\n }\n\n return (\n
\n \n {label || field.name}\n }\n onChange={(e) => {\n this.checkSelect(field.name, e.target.value);\n field.initialRender = false;\n }}\n >\n {options}\n \n \n
\n );\n case null:\n return {value};\n default:\n return {value};\n }\n }\n\n getFieldConfig(fieldName) {\n return this.props.serviceConfig.editableFields.find(\n (field) => field.name === fieldName\n );\n }\n\n renderFromAttribute(attr) {\n if (attr) {\n if (attr.type && attr.type === \"toolbar\") {\n return (\n {\n if (window.innerWidth < 600) {\n this.props.model.globalObserver.publish(\"core.minimizeWindow\");\n this.props.enqueueSnackbar(\n \"Klicka i kartan för att rita objekt\"\n );\n }\n }}\n />\n );\n }\n if (attr.field) {\n return this.getValueMarkup(this.getFieldConfig(attr.field), attr.label);\n }\n } else {\n return null;\n }\n }\n\n renderFromJsonDom(json) {\n if (json && json.child) {\n return json.child.map((child, i) => {\n if (child.node === \"element\") {\n switch (child.tag) {\n case \"div\":\n return (\n
\n {this.renderFromAttribute(child.attr)}\n {this.renderFromJsonDom(child)}\n
\n );\n case \"p\":\n return (\n

\n {this.renderFromAttribute(child.attr)}\n {this.renderFromJsonDom(child)}\n

\n );\n case \"label\":\n return ;\n case \"h1\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n case \"h2\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n case \"h3\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n case \"h4\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n case \"h5\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n case \"h6\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n case \"a\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n case \"ul\":\n return
    {this.renderFromJsonDom(child)}
;\n case \"li\":\n return
  • {this.renderFromJsonDom(child)}
  • ;\n case \"br\":\n return
    ;\n case \"img\":\n return (\n \n {this.renderFromJsonDom(child)}\n \n );\n default:\n return null;\n }\n }\n if (child.node === \"text\") {\n return {child.text};\n }\n return null;\n });\n } else {\n return null;\n }\n }\n\n save = () => {\n this.props.model.save(\n (r) => {\n if (\n r &&\n r.TransactionResponse &&\n r.TransactionResponse.TransactionSummary &&\n r.TransactionResponse.TransactionSummary.totalInserted\n ) {\n const ins =\n r.TransactionResponse.TransactionSummary.totalInserted.toString();\n if (Number(ins) > 0) {\n if (this.props.options.showThankYou) {\n this.setState({\n displayThankYou: true,\n });\n } else {\n this.setState(\n {\n displayThankYou: true,\n },\n () => {\n this.props.model.observer.publish(\"abort\");\n }\n );\n }\n } else {\n this.saveError();\n }\n } else {\n this.saveError();\n }\n },\n (error) => {\n this.saveError();\n }\n );\n };\n\n saveError = () => {\n this.props.model.globalObserver.publish(\n \"core.alert\",\n \"Det gick inte att spara, försök igen senare.\"\n );\n };\n\n renderButtons() {\n const { page, numPages, onPrevPage, onNextPage } = this.props;\n\n const prevButton = (\n {\n if (typeof this.refs.toolbar !== \"undefined\") {\n this.refs.toolbar.storeValues();\n }\n onPrevPage();\n }}\n >\n \n \n );\n\n const nextButton = (\n {\n if (typeof this.refs.toolbar !== \"undefined\") {\n this.refs.toolbar.storeValues();\n }\n onNextPage();\n }}\n >\n \n \n );\n\n const sendButton = (\n \n Skicka\n \n );\n\n const okButton = (\n {\n this.props.model.observer.publish(\"abort\");\n }}\n >\n {this.props.options.collectAgain ? \"Tyck till igen\" : \"Stäng\"}\n \n );\n\n const closeButton = (\n {\n this.props.model.app.windows.forEach((window) => {\n if (window.type === \"collector\") {\n window.closeWindow();\n }\n });\n }}\n >\n Stäng\n \n );\n\n if (this.state.displayThankYou) {\n if (this.props.options.collectAgain) {\n return (\n
    \n {okButton}\n {closeButton}\n
    \n );\n } else {\n return
    {okButton}
    ;\n }\n }\n\n if (numPages === 1) {\n return
    {sendButton}
    ;\n }\n if (numPages > 1 && page.order === numPages - 1) {\n return (\n
    \n {prevButton}\n {sendButton}\n
    \n );\n }\n if (page.order > 0 && page.order < numPages - 1) {\n return (\n
    \n {prevButton}\n {nextButton}\n
    \n );\n }\n if (page.order === 0) {\n return
    {nextButton}
    ;\n }\n\n return null;\n }\n\n createMarkup = () => {\n return {\n __html: this.props.options.thankYou,\n };\n };\n\n renderThankYou() {\n return
    ;\n }\n\n renderSlide() {\n const { page } = this.props;\n const { json } = this.state;\n return (\n \n
    \n {page.header}\n {this.renderFromJsonDom(json)}\n
    \n \n );\n }\n\n render() {\n const { displayThankYou } = this.state;\n return (\n this.props.active && (\n \n \n {displayThankYou ? this.renderThankYou() : this.renderSlide()}\n \n
    {this.renderButtons()}
    \n
    \n )\n );\n }\n}\n\nexport default withSnackbar(Page);\n","import React, { Component } from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Button from \"@mui/material/Button\";\nimport ScatterPlotIcon from \"@mui/icons-material/ScatterPlot\";\nimport BorderStyleIcon from \"@mui/icons-material/BorderStyle\";\nimport LinearScaleIcon from \"@mui/icons-material/LinearScale\";\nimport Typography from \"@mui/material/Typography\";\nimport WKT from \"ol/format/WKT\";\n\nconst StyledButton = styled(Button)(({ theme }) => ({\n margin: theme.spacing(1),\n width: \"115px\",\n}));\n\nconst ToolbarDiv = styled(\"div\")(({ theme }) => ({\n margin: \"5px\",\n}));\n\nclass Toolbar extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeTool: undefined,\n };\n this.props.model.observer.subscribe(\"abortInteraction\", () => {\n this.setState({\n activeTool: undefined,\n });\n });\n\n // Clear layer and attempt to read saved values\n if (this.props.model.wkt) {\n this.props.model.vectorSource.clear();\n\n const format = new WKT();\n const WKTString = this.props.model.formValues[this.props.field];\n if (WKTString && WKTString.length > 0) {\n let features = format.readFeatures(WKTString);\n features.forEach((feature) => {\n this.props.model.vectorSource.addFeature(feature);\n });\n }\n }\n }\n\n componentWillUnmount() {\n this.props.model.observer.unsubscribe(\"abortInteraction\");\n this.props.model.deactivateInteraction();\n }\n\n changeTool(type, geometryType) {\n const { model } = this.props;\n this.props.onChangeTool();\n if (geometryType && this.state.activeTool === geometryType.toLowerCase()) {\n model.deactivateInteraction();\n return this.setState({\n activeTool: undefined,\n });\n }\n if (this.state.activeTool === type) {\n model.deactivateInteraction();\n return this.setState({\n activeTool: undefined,\n });\n }\n model.deactivateInteraction();\n\n switch (type) {\n case \"add\":\n model.activateInteraction(\"add\", geometryType);\n break;\n case \"remove\":\n model.activateInteraction(\"remove\");\n break;\n case \"modify\":\n model.activateInteraction(\"modify\");\n break;\n case \"move\":\n model.activateInteraction(\"move\");\n break;\n default:\n break;\n }\n }\n\n onAddPointClicked() {\n this.setState({ activeTool: \"point\" });\n this.changeTool(\"add\", \"Point\");\n }\n\n onAddLineClicked() {\n this.setState({ activeTool: \"linestring\" });\n this.changeTool(\"add\", \"LineString\");\n }\n\n onAddPolygonClicked() {\n this.setState({ activeTool: \"polygon\" });\n this.changeTool(\"add\", \"Polygon\");\n }\n\n getStatusMessage(data) {\n if (!data) {\n return (\n \n Uppdateringen lyckades men det upptäcktes inte några ändringar.\n \n );\n }\n if (data.ExceptionReport) {\n return (\n \n Uppdateringen misslyckades:{\" \"}\n {data.ExceptionReport.Exception.ExceptionText.toString()}\n \n );\n }\n if (\n data.TransactionResponse &&\n data.TransactionResponse.TransactionSummary\n ) {\n return (\n
    \n Uppdateringen lyckades.\n \n Antal skapade objekt:{\" \"}\n {data.TransactionResponse.TransactionSummary.totalInserted.toString()}\n \n \n Antal borttagna objekt:{\" \"}\n {data.TransactionResponse.TransactionSummary.totalDeleted.toString()}\n \n \n Antal uppdaterade objekt:{\" \"}\n {data.TransactionResponse.TransactionSummary.totalUpdated.toString()}\n \n
    \n );\n } else {\n return (\n \n Status för uppdateringen kunde inte avläsas ur svaret från servern.\n \n );\n }\n }\n\n onSaveClicked() {\n if (!this.props.model.editSource) {\n return;\n }\n this.props.model.save((response) => {\n this.props.model.filty = false;\n this.props.model.refreshEditingLayer();\n this.props.app.globalObserver.publish(\n \"core.alert\",\n this.getStatusMessage(response)\n );\n });\n }\n\n onCancelClicked() {\n this.props.model.deactivate();\n this.props.panel.setState({\n checked: false,\n enabled: false,\n selectedSource: false,\n });\n this.setState({\n activeTool: undefined,\n });\n }\n\n getSelectedStyle(type) {\n var style = {};\n if (type === this.state.activeTool) {\n style.backgroundColor = \"#ccc\";\n }\n return style;\n }\n\n storeValues() {\n // Stores any potential features found on the map as WKT before taking the next or previous step.\n //These are later pushed to the server on submission.\n //They are also put on the map again if the user comes back to this step.\n if (!this.props.model.wkt) {\n return;\n }\n const format = new WKT();\n let wkt = \"\";\n\n if (this.props.model.vectorSource.getFeatures().length > 0) {\n wkt = format.writeFeatures(this.props.model.vectorSource.getFeatures());\n }\n\n // Store the converted features in the model\n let formValues = Object.assign({}, this.props.model.formValues);\n formValues[this.props.field] = wkt;\n this.props.model.formValues = formValues;\n // Clear layer\n this.props.model.vectorSource.clear();\n }\n\n render() {\n const source = this.props.serviceConfig;\n var disabled = !this.props.enabled,\n editPoint = false,\n editPolygon = false,\n editLine = false;\n\n if (this.props.model.wkt) {\n // WKT gets the information from the tag since there is support for multiple toolbars\n // Different toolbars can therefore support different types of geometries\n editPoint = this.props.geotype.indexOf(\"point\") !== -1;\n editPolygon = this.props.geotype.indexOf(\"polygon\") !== -1;\n editLine = this.props.geotype.indexOf(\"line\") !== -1;\n } else if (source) {\n // Non-WKT only supports insertion of one geometry so it can be retrieved from the source\n editPoint = source.editPoint;\n editLine = source.editLine;\n editPolygon = source.editPolygon;\n }\n\n return (\n
    \n \n
    \n {\n this.onAddPointClicked();\n }}\n type=\"button\"\n title=\"Lägg till plats\"\n style={this.getSelectedStyle(\"point\")}\n >\n Plats\n \n \n {\n this.onAddLineClicked();\n }}\n type=\"button\"\n title=\"Lägg till sträcka\"\n style={this.getSelectedStyle(\"linestring\")}\n >\n Sträcka\n \n \n {\n this.onAddPolygonClicked();\n }}\n type=\"button\"\n title=\"Lägg till område\"\n style={this.getSelectedStyle(\"polygon\")}\n >\n Område\n \n \n
    \n
    \n
    \n );\n }\n}\n\nexport default Toolbar;\n"],"names":["SaveErrorTextWrapper","styled","theme","color","palette","error","contrastText","background","main","marginTop","borderRadius","shape","padding","ErrorTypography","Typography","text","primary","CollectorForm","Component","constructor","props","super","state","comment","saveError","validationError","form","displayPlace","activePage","direction","this","setState","abort","onClose","model","observer","subscribe","componentDidMount","serviceConfig","configurationError","renderSaveError","render","sort","p1","p2","order","map","page","i","active","numPages","length","options","onNextPage","onPrevPage","PageContent","height","overflowX","borderBottom","PageContentInner","paddingBottom","Page","save","r","TransactionResponse","TransactionSummary","totalInserted","ins","toString","Number","showThankYou","displayThankYou","publish","globalObserver","createMarkup","__html","thankYou","json","Parser","formErrors","getError","field","hasOwnProperty","name","checkInteger","value","formValues","Object","assign","test","forceUpdate","checkNumber","replace","checkUrl","valid","checkText","checkSelect","checkMultiple","checked","index","checkDate","date","getValueMarkup","label","dataType","textType","undefined","initialRender","defaultValue","Array","isArray","join","id","sx","minWidth","margin","onChange","e","target","type","InputLabelProps","shrink","multiline","onBlur","defaultValues","split","forEach","val","checkboxes","values","item","find","control","component","unshift","setTimeout","input","getFieldConfig","fieldName","editableFields","renderFromAttribute","attr","ref","geotype","enabled","onChangeTool","window","innerWidth","enqueueSnackbar","renderFromJsonDom","child","node","tag","variant","href","rel","src","width","alt","renderButtons","prevButton","float","onClick","refs","toolbar","storeValues","nextButton","sendButton","okButton","collectAgain","closeButton","app","windows","closeWindow","renderThankYou","dangerouslySetInnerHTML","renderSlide","in","mountOnEnter","unmountOnExit","header","withSnackbar","StyledButton","Button","spacing","ToolbarDiv","Toolbar","activeTool","wkt","vectorSource","clear","format","WKT","WKTString","readFeatures","feature","addFeature","componentWillUnmount","unsubscribe","deactivateInteraction","changeTool","geometryType","toLowerCase","activateInteraction","onAddPointClicked","onAddLineClicked","onAddPolygonClicked","getStatusMessage","data","ExceptionReport","Exception","ExceptionText","totalDeleted","totalUpdated","onSaveClicked","editSource","response","filty","refreshEditingLayer","onCancelClicked","deactivate","panel","selectedSource","getSelectedStyle","style","backgroundColor","getFeatures","writeFeatures","source","disabled","editPoint","editPolygon","editLine","indexOf","title","marginLeft"],"sourceRoot":""}