{"version":3,"file":"main.b099c8fd5537e8ebadaa.js","mappings":"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","sources":["webpack://innsynspa/webpack/runtime/chunk loaded","webpack://innsynspa/webpack/runtime/create fake namespace object","webpack://innsynspa/./src/i18n.ts","webpack://innsynspa/./src/components/externalLInk/externalLink.tsx","webpack://innsynspa/./src/pages/about/about-se.tsx","webpack://innsynspa/./src/pages/about/about-no.tsx","webpack://innsynspa/./src/pages/about/about-en.tsx","webpack://innsynspa/./src/constants/language.ts","webpack://innsynspa/./src/model/layer/layer.ts","webpack://innsynspa/./src/constants/layers.ts","webpack://innsynspa/./src/components/dateFilter/dateFilter.types.ts","webpack://innsynspa/./src/components/dateFilter/dateFilter.util.ts","webpack://innsynspa/./src/helpers.ts","webpack://innsynspa/./src/map/vectorLayerLoader.ts","webpack://innsynspa/./src/model/stedfesting/StedfestingTypes.ts","webpack://innsynspa/./src/model/stedfesting/Stedfesting.ts","webpack://innsynspa/./src/store/tooltip/types.ts","webpack://innsynspa/./src/store/tooltip/actions.ts","webpack://innsynspa/./src/map/mapActions.ts","webpack://innsynspa/./src/map/mapActionHandler.ts","webpack://innsynspa/./src/constants/mapProjection.ts","webpack://innsynspa/./src/map/proj4-defs.ts","webpack://innsynspa/./src/constants/carnivore.ts","webpack://innsynspa/./src/constants/carnivoreDamage.ts","webpack://innsynspa/./src/constants/observations.ts","webpack://innsynspa/./src/store/settings/types.ts","webpack://innsynspa/./src/styles/materialTheme.js","webpack://innsynspa/./src/styles/materialThemeSvensk.js","webpack://innsynspa/./src/constants/evaluation.ts","webpack://innsynspa/./src/map/styles.ts","webpack://innsynspa/./src/constants/damageCause.ts","webpack://innsynspa/./src/constants/carnivoreObserved.ts","webpack://innsynspa/./src/map/map.ts","webpack://innsynspa/./src/store/map/types.ts","webpack://innsynspa/./src/store/map/actions.ts","webpack://innsynspa/./src/map/layerLoader.ts","webpack://innsynspa/./src/store/map/reducer.ts","webpack://innsynspa/./src/store/menu/types.ts","webpack://innsynspa/./src/store/menu/reducer.ts","webpack://innsynspa/./src/constants/locationType.ts","webpack://innsynspa/./src/store/refund/types.ts","webpack://innsynspa/./src/constants/reindeerLocationType.ts","webpack://innsynspa/./src/store/refund/reducer.ts","webpack://innsynspa/./src/store/rightpanel/types.ts","webpack://innsynspa/./src/constants/rightpanelContent.ts","webpack://innsynspa/./src/store/rightpanel/reducer.ts","webpack://innsynspa/./src/store/searchfilter/types.ts","webpack://innsynspa/./src/store/searchfilter/reducer.ts","webpack://innsynspa/./src/store/settings/actions.ts","webpack://innsynspa/./src/store/settings/reducer.ts","webpack://innsynspa/./src/store/sidePanel/types.ts","webpack://innsynspa/./src/store/sidePanel/reducer.ts","webpack://innsynspa/./src/store/tooltip/reducer.ts","webpack://innsynspa/./src/store/index.ts","webpack://innsynspa/./src/store/map/sideEffects.ts","webpack://innsynspa/./src/components/themeButtton/themeButton.tsx","webpack://innsynspa/./src/applicationInsights.ts","webpack://innsynspa/./src/components/errorBoundary/errorBoundary.tsx","webpack://innsynspa/./src/components/logo/logo.tsx","webpack://innsynspa/./src/store/menu/action.ts","webpack://innsynspa/./src/components/menubutton/menubutton.tsx","webpack://innsynspa/./src/components/watermark/watermark.tsx","webpack://innsynspa/./src/hooks/breakpoint.ts","webpack://innsynspa/./src/components/julehilsen/santahat2.svg","webpack://innsynspa/./src/components/julehilsen/julehilsen.tsx","webpack://innsynspa/./src/components/menubar/menubar.tsx","webpack://innsynspa/./src/constants/contactInfo.ts","webpack://innsynspa/./src/components/footer/footer.tsx","webpack://innsynspa/./src/components/staticPageFrame/staticPageFrame.tsx","webpack://innsynspa/./src/pages/about/about.tsx","webpack://innsynspa/./src/components/loader/loader.tsx","webpack://innsynspa/./src/store/rightpanel/action.ts","webpack://innsynspa/./src/map/controls/layers.ts","webpack://innsynspa/./src/Icons/tooltipInfoCircle.svg","webpack://innsynspa/./src/map/controls/zoom.ts","webpack://innsynspa/./src/components/toggleSwitch/toggleSwitch.tsx","webpack://innsynspa/./src/components/layerSelectorToolTip/tooltip.tsx","webpack://innsynspa/./src/components/layerselect/layerSelector.tsx","webpack://innsynspa/./assets/svg/deadcarnivores/dod.svg","webpack://innsynspa/./assets/svg/dna/Dna.svg","webpack://innsynspa/./assets/svg/dna/UnanalysedDna.svg","webpack://innsynspa/./assets/svg/maptool/lag.svg","webpack://innsynspa/./assets/svg/maptool/zoominn.svg","webpack://innsynspa/./assets/svg/maptool/zoomut.svg","webpack://innsynspa/./assets/svg/observasjonstyper/Bed.svg","webpack://innsynspa/./assets/svg/observasjonstyper/Digging.svg","webpack://innsynspa/./assets/svg/observasjonstyper/ErroneousReport.svg","webpack://innsynspa/./assets/svg/observasjonstyper/Faeces.svg","webpack://innsynspa/./assets/svg/observasjonstyper/Footprint.svg","webpack://innsynspa/./assets/svg/observasjonstyper/HairOrFeather.svg","webpack://innsynspa/./assets/svg/observasjonstyper/Observation.svg","webpack://innsynspa/./assets/svg/observasjonstyper/Reproduction.svg","webpack://innsynspa/./assets/svg/observasjonstyper/TerritorialMarking.svg","webpack://innsynspa/./assets/svg/observasjonstyper/TreeMarkings.svg","webpack://innsynspa/./assets/svg/observasjonstyper/VisualObservation.svg","webpack://innsynspa/./assets/svg/rovviltskade/Cattle.svg","webpack://innsynspa/./assets/svg/rovviltskade/Dog.svg","webpack://innsynspa/./assets/svg/rovviltskade/Goat.svg","webpack://innsynspa/./assets/svg/rovviltskade/Reindeer.svg","webpack://innsynspa/./assets/svg/rovviltskade/Sheep.svg","webpack://innsynspa/./src/constants/sampleStatus.ts","webpack://innsynspa/./src/services/featureService.ts","webpack://innsynspa/./src/store/sidePanel/action.ts","webpack://innsynspa/./src/store/searchfilter/action.ts","webpack://innsynspa/./src/components/tooltip/tooltip.util.ts","webpack://innsynspa/./src/components/searchresultItem/searchresultItem.tsx","webpack://innsynspa/./src/Icons/icons.tsx","webpack://innsynspa/./src/components/toolbar/toolbar.tsx","webpack://innsynspa/./src/components/share/share.tsx","webpack://innsynspa/./src/constants/sampleType.ts","webpack://innsynspa/./src/components/tooltip/DNATooltipDescription.tsx","webpack://innsynspa/./src/constants/controlType.ts","webpack://innsynspa/./src/components/tooltip/rovviltobservasjonTooltipDescription.tsx","webpack://innsynspa/./src/constants/incidentArea.ts","webpack://innsynspa/./src/constants/damageState.ts","webpack://innsynspa/./src/constants/carnivoreDamageInspectedBy.ts","webpack://innsynspa/./src/components/tooltip/rovviltskadeTooltipDescription.tsx","webpack://innsynspa/./src/constants/causeOfDeathType.ts","webpack://innsynspa/./src/constants/gender.ts","webpack://innsynspa/./src/constants/outcomeDeadCarnivore.ts","webpack://innsynspa/./src/components/tooltip/dodeRovdyrTooltipDescription.tsx","webpack://innsynspa/./src/components/tooltip/tooltipDescription.tsx","webpack://innsynspa/./src/components/tooltip/stedfestingInfo.tsx","webpack://innsynspa/./src/components/tooltip/tooltipHeaderInfo.tsx","webpack://innsynspa/./src/components/tooltip/tooltip.tsx","webpack://innsynspa/./src/components/attribution/attribution.tsx","webpack://innsynspa/./src/components/mobileTooltip/mobileTooltip.tsx","webpack://innsynspa/./src/components/map/map.tsx","webpack://innsynspa/./src/components/searchbar/suggestionService.ts","webpack://innsynspa/./src/components/searchbarInput/searchbarInput.tsx","webpack://innsynspa/./assets/svg/md-icons/checkmark.svg","webpack://innsynspa/./src/components/searchbar/searchbar.tsx","webpack://innsynspa/./src/components/checkbox/checkbox.tsx","webpack://innsynspa/./src/components/expansionField/expansionField.tsx","webpack://innsynspa/./src/components/filterbar/filterLists.ts","webpack://innsynspa/./src/components/carnivoreFilter/carnivoreFilter.tsx","webpack://innsynspa/./src/components/dateFilter/dateFilter.tsx","webpack://innsynspa/./src/components/searchfilter/searchfilter.utils.ts","webpack://innsynspa/./src/components/expansionPanel/expansionPanel.tsx","webpack://innsynspa/./src/components/checkboxList/checkboxList.tsx","webpack://innsynspa/./src/components/registrationsFilter/registrationsFilter.tsx","webpack://innsynspa/./src/constants/areasearchTypes.ts","webpack://innsynspa/./src/constants/country.ts","webpack://innsynspa/./src/services/areaService.ts","webpack://innsynspa/./src/components/searchableSelect/areaSearchableSelect.tsx","webpack://innsynspa/./src/components/geographyFilter/geographyFilter.tsx","webpack://innsynspa/./src/components/evaluationFilter/evaluationFilter.tsx","webpack://innsynspa/./src/hooks/loadingDots.ts","webpack://innsynspa/./src/components/searchfilter/searchfilter.tsx","webpack://innsynspa/./src/components/searchresultList/navigateSearchResult.tsx","webpack://innsynspa/./src/constants/originIndividual.ts","webpack://innsynspa/./src/services/individService.ts","webpack://innsynspa/./src/components/searchresultList/searchresultTitle.tsx","webpack://innsynspa/./src/components/searchresultList/searchresultList.tsx","webpack://innsynspa/./src/components/sidepanel/sidepanel.tsx","webpack://innsynspa/./src/components/accessibilityModal/accessibilityModal.tsx","webpack://innsynspa/./src/components/systemMessage/systemMessage.tsx","webpack://innsynspa/./src/services/systemvarselService.ts","webpack://innsynspa/./src/components/SystemMessageBanner/systemMessageBanner.tsx","webpack://innsynspa/./src/pages/home.tsx","webpack://innsynspa/./src/pages/accessibility/accessibiltyContent-no.tsx","webpack://innsynspa/./src/pages/accessibility/accessibiltyContent-se.tsx","webpack://innsynspa/./src/pages/accessibility/accessibility.tsx","webpack://innsynspa/./src/components/languageSelector/languageSelector.tsx","webpack://innsynspa/./src/services/reportService.ts","webpack://innsynspa/./src/hooks/featureToggles.ts","webpack://innsynspa/./src/components/menu/menu.tsx","webpack://innsynspa/./src/pages/contact.tsx","webpack://innsynspa/./src/constants/refundAnimal.ts","webpack://innsynspa/./src/services/statisticService.ts","webpack://innsynspa/./src/store/refund/action.ts","webpack://innsynspa/./src/components/dropdownSelector/dropdownSelector.tsx","webpack://innsynspa/./src/components/yearSelector/yearSelector.tsx","webpack://innsynspa/./src/components/compensationSelector/compensationSelector.tsx","webpack://innsynspa/./src/components/statisticalInfoBox/statisticalInfoBox.tsx","webpack://innsynspa/./src/components/damageCauseTable/damageCauseTableSmall.tsx","webpack://innsynspa/./src/components/damageCauseTable/damageCauseTable.tsx","webpack://innsynspa/./src/components/damageCauseTableReindeer/damageCauseTableReindeerSmall.tsx","webpack://innsynspa/./src/components/damageCauseTableReindeer/damageCauseTableReindeer.tsx","webpack://innsynspa/./src/components/statisticalTableReindeer/statisticalTableReindeer.tsx","webpack://innsynspa/./src/components/yearpicker/yearperiodpicker.tsx","webpack://innsynspa/./src/pages/refundReindeer.tsx","webpack://innsynspa/./src/components/statisticalInfoYears/statisticalInfoYears.util.tsx","webpack://innsynspa/./src/components/statisticalInfoYears/statisticalInfoYears.tsx","webpack://innsynspa/./src/components/statisticalTable/statisticalTableSheep.tsx","webpack://innsynspa/./src/pages/refundSheep.tsx","webpack://innsynspa/./src/constants/culture.ts","webpack://innsynspa/./src/constants/languageCode.ts","webpack://innsynspa/./src/components/reportpage/reportpage.tsx","webpack://innsynspa/./src/pages/report/reportdoderovdyr.tsx","webpack://innsynspa/./src/pages/report/reportrovviltskade.tsx","webpack://innsynspa/./src/components/root/root.tsx","webpack://innsynspa/./src/index.tsx","webpack://innsynspa/webpack/bootstrap","webpack://innsynspa/webpack/runtime/compat get default export","webpack://innsynspa/webpack/runtime/define property getters","webpack://innsynspa/webpack/runtime/global","webpack://innsynspa/webpack/runtime/hasOwnProperty shorthand","webpack://innsynspa/webpack/runtime/make namespace object","webpack://innsynspa/webpack/runtime/node module decorator","webpack://innsynspa/webpack/runtime/jsonp chunk loading","webpack://innsynspa/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","import {curry} from 'ramda';\r\nimport {ApplicationState} from './store';\r\nimport {connect, shallowEqual, useSelector} from 'react-redux';\r\nimport {Language} from './constants/language';\r\n\r\n// noinspection SpellCheckingInspection\r\nconst i18n = {\r\n 'accessibility.buttonLabel.en': 'Show accessibility information',\r\n 'accessibility.buttonLabel.no': 'Vis tilgjengelighetsinformasjon',\r\n 'accessibility.buttonLabel.sv': 'Visa tillgänglighetsinformation',\r\n 'accessibility.info.en': 'Accessibility information',\r\n 'accessibility.info.no': 'Tilgjengelighetsinformasjon',\r\n 'accessibility.info.sv': 'Tillgänglighetsinformation',\r\n 'accessibility.label.en': 'Accessibility',\r\n 'accessibility.label.no': 'Tilgjengelighet',\r\n 'accessibility.label.sv': 'Tillgänglighet',\r\n 'accessibility.homepage.en': 'Homepage',\r\n 'accessibility.homepage.no': 'Startside',\r\n 'accessibility.homepage.sv': 'Startsida',\r\n 'accessibility.search.en': 'Individual search bar',\r\n 'accessibility.search.no': 'Individsøk',\r\n 'accessibility.search.sv': 'Individsök',\r\n 'accessibility.fromMenu.en': 'from Menu',\r\n 'accessibility.fromMenu.no': 'fra Meny',\r\n 'accessibility.fromMenu.sv': 'frÃ¥n Meny',\r\n 'accessibility.shortcuts.en': 'Shortcuts',\r\n 'accessibility.shortcuts.no': 'Snarveier',\r\n 'accessibility.shortcuts.sv': 'Genvägar',\r\n 'accessibility.shortcut.en': 'shortcut',\r\n 'accessibility.shortcut.no': 'hurtigtast',\r\n 'accessibility.shortcut.sv': 'genväg',\r\n 'accessibility.command.en': 'Access keys',\r\n 'accessibility.command.no': 'Hurtigkommandoer',\r\n 'accessibility.command.sv': 'Kortkommandon',\r\n 'accessibility.command.p1.en': 'There are other shortcuts, accesskeys, available to ease the navigation on the website. Different browsers use different keystrokes to activate accesskey shortcuts.',\r\n 'accessibility.command.p1.no': 'Hurtigkommandoer skal gjøre det mer effektivt Ã¥ bruke siden, spesielt for de som er ofte inne pÃ¥ nettstedet. Hvordan hurtigkommandoene brukes avhenger av nettleser.',\r\n 'accessibility.command.p1.sv': 'Sättet att nÃ¥ dessa genvägar skiljer sig lite beroende pÃ¥ vilken webbläsare du använder.',\r\n 'accessibility.skipToContent.en': 'Skip to content',\r\n 'accessibility.skipToContent.no': 'Hopp til hovedinnhold',\r\n 'accessibility.skipToContent.sv': 'Hoppa till huvudinnehÃ¥ll',\r\n 'accessibility.skipFilter.en': 'Skip filters',\r\n 'accessibility.skipFilter.no': 'Hopp over filter',\r\n 'accessibility.skipFilter.sv': 'Hoppa över filter',\r\n 'accessibility.shortcuts.p1.en': 'There is a skip button to the carnivore filter that can be accessed with tab navigation from the top of the page.',\r\n 'accessibility.shortcuts.p1.no': 'Snarvei til filtrering av rovdyr finnes ved tab-navigering fra toppen av søkesiden.',\r\n 'accessibility.shortcuts.p1.sv': 'Högst upp pÃ¥ sidan finns en genväg till filtrering av rovdjursarter. Genvägen nÃ¥s genom att använda tab-tangenten frÃ¥n toppen av sidan. ',\r\n 'accessibility.tips.en': 'Accessibility tips and tricks',\r\n 'accessibility.tips.no': 'Tips og triks',\r\n 'accessibility.tips.sv': 'Tips och tricks',\r\n 'accessibility.contentSETitle.en': 'Accessibility statement for rovbase.se',\r\n 'accessibility.contentSETitle.no': 'Tilgjengelighetserklæring for rovbase.se',\r\n 'accessibility.contentSETitle.sv': 'Tillgänglighet för Rovbase.se',\r\n 'accessibility.contentNOTitle.en': 'Accessibility statement for rovbase.no',\r\n 'accessibility.contentNOTitle.no': 'Tilgjengelighetserklæring for rovbase.no',\r\n 'accessibility.contentNOTitle.sv': 'Tillgänglighet för Rovbase.no', \r\n 'ariaLabel.geographySearch.en': 'Geography search',\r\n 'ariaLabel.geographySearch.no': 'Geografisøk',\r\n 'ariaLabel.geographySearch.sv': 'Geografiskt sökomrÃ¥de',\r\n 'ariaLabel.link.en': 'Link to ',\r\n 'ariaLabel.link.no': 'Lenke til ',\r\n 'ariaLabel.link.sv': 'Länk till ',\r\n 'ariaLabel.mailLink.en': 'Send link to ',\r\n 'ariaLabel.mailLink.no': 'Send lenke til ',\r\n 'ariaLabel.mailLink.sv': 'Skicka länk till ',\r\n 'ariaLabel.openHomepage.en': 'To home page',\r\n 'ariaLabel.openHomepage.no': 'Til startsiden',\r\n 'ariaLabel.openHomepage.sv': 'Till startsidan',\r\n 'ariaLabel.search.en': 'Search',\r\n 'ariaLabel.search.no': 'søk',\r\n 'ariaLabel.search.sv': 'sök',\r\n 'ariaLabel.openCalendar.en': 'Open calendar',\r\n 'ariaLabel.openCalendar.no': 'Ã…pne datovelger',\r\n 'ariaLabel.openCalendar.sv': 'öppna kalender',\r\n 'button.selectAll.en': 'Select all',\r\n 'button.selectAll.no': 'Velg alle',\r\n 'button.selectAll.sv': 'Välj alla',\r\n 'button.selectNone.en': 'Select none',\r\n 'button.selectNone.no': 'Velg ingen',\r\n 'button.selectNone.sv': 'Välj ingen',\r\n 'carnivore.bear.en': 'Bear',\r\n 'carnivore.bear.no': 'Bjørn',\r\n 'carnivore.bear.sv': 'Björn',\r\n 'carnivore.eagle.en': 'Golden Eagle',\r\n 'carnivore.eagle.no': 'Kongeørn',\r\n 'carnivore.eagle.sv': 'Kungsörn',\r\n 'carnivore.goldenEagle.en': 'Golden Eagle',\r\n 'carnivore.goldenEagle.no': 'Kongeørn',\r\n 'carnivore.goldenEagle.sv': 'Kungsörn',\r\n 'carnivore.lynx.en': 'Lynx',\r\n 'carnivore.lynx.no': 'Gaupe',\r\n 'carnivore.lynx.sv': 'Lodjur',\r\n 'carnivore.unknownProtected.en': 'Unknown protected carnivore',\r\n 'carnivore.unknownProtected.no': 'Ukjent fredet rovdyr',\r\n 'carnivore.unknownProtected.sv': 'Okänt fredat rovdjur',\r\n 'carnivore.wolf.en': 'Wolf',\r\n 'carnivore.wolf.no': 'Ulv',\r\n 'carnivore.wolf.sv': 'Varg',\r\n 'carnivore.wolverine.en': 'Wolverine',\r\n 'carnivore.wolverine.no': 'Jerv',\r\n 'carnivore.wolverine.sv': 'Järv',\r\n 'carnivoreDamage.cattle.en': 'Cattle',\r\n 'carnivoreDamage.cattle.no': 'Storfe',\r\n 'carnivoreDamage.cattle.sv': 'Nötkreatur',\r\n 'carnivoreDamage.dog.en': 'Dog',\r\n 'carnivoreDamage.dog.no': 'Hund',\r\n 'carnivoreDamage.dog.sv': 'Hund',\r\n 'carnivoreDamage.goat.en': 'Goat',\r\n 'carnivoreDamage.goat.no': 'Geit',\r\n 'carnivoreDamage.goat.sv': 'Get',\r\n 'carnivoreDamage.reindeer.en': 'Reindeer',\r\n 'carnivoreDamage.reindeer.no': 'Rein',\r\n 'carnivoreDamage.reindeer.sv': 'Ren',\r\n 'carnivoreDamage.sheep.en': 'Sheep',\r\n 'carnivoreDamage.sheep.no': 'Sau',\r\n 'carnivoreDamage.sheep.sv': 'FÃ¥r',\r\n 'carnivoreDamage.infoMessage.en': 'Only damages on reindeer are shown in Sweden. More information in ',\r\n 'carnivoreDamage.infoMessage.no': 'I Sverige vises kun rovviltskader pÃ¥ rein. Les mer pÃ¥ ',\r\n 'carnivoreDamage.infoMessage.sv': 'I Sverige visas endast rovdjursskador pÃ¥ ren. Läs mer under ',\r\n 'carnivoreDamage.infoMessage2.en': 'See also ',\r\n 'carnivoreDamage.infoMessage2.no': 'Se ogsÃ¥ ',\r\n 'carnivoreDamage.infoMessage2.sv': 'Se även ',\r\n 'carnivoreFilter.carnivore.en': 'Carnivores',\r\n 'carnivoreFilter.carnivore.no': 'Rovdyr',\r\n 'carnivoreFilter.carnivore.sv': 'Rovdjur',\r\n 'carnivoreObserved.bear.en': 'Bear',\r\n 'carnivoreObserved.bear.no': 'Bjørn',\r\n 'carnivoreObserved.bear.sv': 'Björn',\r\n 'carnivoreObserved.eagle.en': 'Golden Eagle',\r\n 'carnivoreObserved.eagle.no': 'Kongeørn',\r\n 'carnivoreObserved.eagle.sv': 'Kungsörn',\r\n 'carnivoreObserved.lynx.en': 'Lynx',\r\n 'carnivoreObserved.lynx.no': 'Gaupe',\r\n 'carnivoreObserved.lynx.sv': 'Lodjur',\r\n 'carnivoreObserved.unknown.en': 'Unknown',\r\n 'carnivoreObserved.unknown.no': 'Ukjent',\r\n 'carnivoreObserved.unknown.sv': 'Okänd',\r\n 'carnivoreObserved.wolf.en': 'Wolf',\r\n 'carnivoreObserved.wolf.no': 'Ulv',\r\n 'carnivoreObserved.wolf.sv': 'Varg',\r\n 'carnivoreObserved.wolverine.en': 'Wolverine',\r\n 'carnivoreObserved.wolverine.no': 'Jerv',\r\n 'carnivoreObserved.wolverine.sv': 'Järv',\r\n 'carnivoreObserved.redFox.en': 'Red fox',\r\n 'carnivoreObserved.redFox.no': 'Rødrev',\r\n 'carnivoreObserved.redFox.sv': 'Rödräv',\r\n 'carnivoreObserved.arcticFox.en': 'Arctic fox',\r\n 'carnivoreObserved.arcticFox.no': 'Fjellrev',\r\n 'carnivoreObserved.arcticFox.sv': 'Fjällräv',\r\n 'carnivoreObserved.dog.en': 'Dog',\r\n 'carnivoreObserved.dog.no': 'Hund',\r\n 'carnivoreObserved.dog.sv': 'Hund',\r\n 'carnivoreObserved.mink.en': 'Mink',\r\n 'carnivoreObserved.mink.no': 'Mink',\r\n 'carnivoreObserved.mink.sv': 'Mink',\r\n 'carnivoreObserved.marten.en': 'Pine marten',\r\n 'carnivoreObserved.marten.no': 'MÃ¥r',\r\n 'carnivoreObserved.marten.sv': 'MÃ¥rd',\r\n 'contact.visitAddress.en': 'Visiting address',\r\n 'contact.visitAddress.no': 'Besøksadresse',\r\n 'contact.visitAddress.sv': 'Besöksadress',\r\n 'contact.postAddress.en': 'Mail address',\r\n 'contact.postAddress.no': 'Postadresse',\r\n 'contact.postAddress.sv': 'Postadress',\r\n 'contact.panel1.header.en': 'Report information about carnivores or sheep or reindeer carcasses',\r\n 'contact.panel1.header.no': 'Meld inn opplysninger om rovvilt eller kadaver av sau eller rein',\r\n 'contact.panel1.header.sv': 'Lämna upplysningar om rovdjur eller skador pÃ¥ tamdjur',\r\n 'contact.panel2.header.en': 'More information about compensation for sheep or reindeer losses',\r\n 'contact.panel2.header.no': 'Mer informasjon om erstatning for sau eller rein i ditt fylke',\r\n 'contact.panel2.header.sv': 'Mer information om ersättning för skador pÃ¥ tamdjur',\r\n 'contact.panel3.header.en': 'More information about carnivores',\r\n 'contact.panel3.header.no': 'Mer informasjon om rovvilt',\r\n 'contact.panel3.header.sv': 'Mer information om rovdjuren',\r\n 'contact.panel1.en':\r\n 'If you have information about carnivores or sheep and/or semi-domesticated reindeer carcasses, please contact ',\r\n 'contact.panel1.no': 'Om du har opplysninger om rovvilt eller kadaver av sau eller rein ber vi deg ta kontakt med ',\r\n 'contact.panel1.sv': 'Om du har sett ett rovdjur eller spÃ¥r av rovdjur eller hittat kadaver av tamdjur kontakta',\r\n 'contact.panel2.en':\r\n 'For more information about compensation for sheep and/or semi-domesticated reindeer losses in your county, please contact ',\r\n 'contact.panel2.no': 'For mer informasjon om erstatning for sau eller rein i ditt fylke ta kontakt med ',\r\n 'contact.panel2.sv': 'För mer information om ersättning för tamdjur kontakta ',\r\n 'contact.panel3-1.en': 'More information about carnivores in Norway is available (in Norwegian) at',\r\n 'contact.panel3-1.no': 'Mer informasjon om rovvilt i Norge finner du ',\r\n 'contact.panel3-1.sv': 'Mer information om rovdjuren i Norge hittar du ',\r\n 'contact.panel3-2.en': 'Information about carnivores in Sweden is available (in Swedish) at',\r\n 'contact.panel3-2.no': 'Informasjon om rovvilt i Sverige finner du ',\r\n 'contact.panel3-2.sv': 'Information om rovdjuren i Sverige hittar du pÃ¥ ',\r\n 'contact.p3-2.en':\r\n 'For comprehensive information about carnivores in Norway, or if you have questions about this web service, please contact ',\r\n 'contact.p3-2.no': 'Ved spørsmÃ¥l om Rovbase.no, eller overordnet informasjon om rovvilt, kontakt ',\r\n 'contact.p3-2.sv': 'För övergripande information om rovdjur kontakta ',\r\n 'contact.or.en': 'or',\r\n 'contact.or.no': 'eller',\r\n 'contact.or.sv': 'eller',\r\n 'contact.MDIR.en': 'Norwegian Environment Agency',\r\n 'contact.MDIR.no': 'Miljødirektoratet',\r\n 'contact.MDIR.sv': 'Miljødirektoratet',\r\n 'contact.Naturvardsverket.en': 'Swedish Environmental Protection Agency',\r\n 'contact.Naturvardsverket.no': 'NaturvÃ¥rdsverket',\r\n 'contact.Naturvardsverket.sv': 'NaturvÃ¥rdsverket',\r\n 'contact.atMDIR.en': 'Norwegian Environment Agency',\r\n 'contact.atMDIR.no': 'hos Miljødirektoratet',\r\n 'contact.atMDIR.sv': 'hos Miljødirektoratet',\r\n 'contact.atNaturvardsverket.en': 'Swedish Environmental Protection Agency',\r\n 'contact.atNaturvardsverket.no': 'hos NaturvÃ¥rdsverket',\r\n 'contact.atNaturvardsverket.sv': 'NaturvÃ¥rdsverkets webbplats',\r\n 'country.norway.en': 'Norway',\r\n 'country.norway.no': 'Norge',\r\n 'country.norway.sv': 'Norge',\r\n 'country.sweden.en': 'Sweden',\r\n 'country.sweden.no': 'Sverige',\r\n 'country.sweden.sv': 'Sverige',\r\n 'dateLabel.from.en': 'From',\r\n 'dateLabel.from.no': 'Fra',\r\n 'dateLabel.from.sv': 'FrÃ¥n',\r\n 'dateLabel.lastMonth.en': 'Last month',\r\n 'dateLabel.lastMonth.no': 'Siste mÃ¥ned',\r\n 'dateLabel.lastMonth.sv': 'Senaste mÃ¥naden',\r\n 'dateLabel.lastWeek.en': 'Last week',\r\n 'dateLabel.lastWeek.no': 'Siste uke',\r\n 'dateLabel.lastWeek.sv': 'Senaste veckan',\r\n 'dateLabel.lastYear.en': 'Last 12 months',\r\n 'dateLabel.lastYear.no': 'Siste Ã¥r',\r\n 'dateLabel.lastYear.sv': 'Senaste Ã¥ret',\r\n 'dateLabel.to.en': 'To',\r\n 'dateLabel.to.no': 'Til',\r\n 'dateLabel.to.sv': 'Till',\r\n 'dateLabel.today.en': 'Today',\r\n 'dateLabel.today.no': 'I dag',\r\n 'dateLabel.today.sv': 'Idag',\r\n 'dateLabel.chooseDate.en': 'Select date',\r\n 'dateLabel.chooseDate.no': 'Velg dato',\r\n 'dateLabel.chooseDate.sv': 'Välj datum',\r\n 'dateLabel.invalidFromDate.en': 'Date should not be after to-date',\r\n 'dateLabel.invalidFromDate.no': 'Dato mÃ¥ ikke være etter til-dato',\r\n 'dateLabel.invalidFromDate.sv': 'Datum fÃ¥r inte vara efter till-datum',\r\n 'dateLabel.invalidToDate.en': 'Date should not be before from date',\r\n 'dateLabel.invalidToDate.no': 'Dato mÃ¥ ikke være før fra-dato',\r\n 'dateLabel.invalidToDate.sv': 'Datum fÃ¥r inte vara före frÃ¥n-datum',\r\n 'dateLabel.invalidDate.en': 'Invalid Date Format',\r\n 'dateLabel.invalidDate.no': 'Ugyldig datoformat',\r\n 'dateLabel.invalidDate.sv': 'Ogiltigt datumformat',\r\n 'datePicker.time.en': 'Time',\r\n 'datePicker.time.no': 'Tid',\r\n 'datePicker.time.sv': 'Tid',\r\n 'deadCarnivore.ageByNINA.en': 'determined by NINA',\r\n 'deadCarnivore.ageByNINA.no': 'fastsatt av NINA',\r\n 'deadCarnivore.ageByNINA.sv': 'fastställt av NINA',\r\n 'deadCarnivore.ageBySVA.en': 'determined by SVA',\r\n 'deadCarnivore.ageBySVA.no': 'fastsatt av SVA',\r\n 'deadCarnivore.ageBySVA.sv': 'fastställt av Statens veterinärmedicinska anstalt',\r\n 'deadCarnivore.agePreliminary.en': 'preliminary assessment',\r\n 'deadCarnivore.agePreliminary.no': 'foreløpig vurdering',\r\n 'deadCarnivore.agePreliminary.sv': 'preliminär bedömning',\r\n 'deadCarnivore.controlType.fieldVerificationCarnivoreContact.en':\r\n 'The death has been inspected by carnivore contact personnel (Norway)',\r\n 'deadCarnivore.controlType.fieldVerificationCarnivoreContact.no': 'Dødsfallet er kontrollert av rovviltkontakt',\r\n 'deadCarnivore.controlType.fieldVerificationCarnivoreContact.sv': 'Händelsen är kontrollerad av rovviltkontakt (Norge)',\r\n 'deadCarnivore.controlType.fieldVerificationSNO.en':\r\n 'The death has been inspected by the Norwegian Nature Inspectorate (Norway)',\r\n 'deadCarnivore.controlType.fieldVerificationSNO.no': 'Dødsfallet er kontrollert av Statens Naturoppsyn',\r\n 'deadCarnivore.controlType.fieldVerificationSNO.sv': 'Händelsen är kontrollerad av Statens Naturoppsyn (Norge)',\r\n 'deadCarnivore.controlType.photograph.en': 'The death has been inspected via photo',\r\n 'deadCarnivore.controlType.photograph.no': 'Dødsfallet er kontrollert ved hjelp av foto',\r\n 'deadCarnivore.controlType.photograph.sv': 'Händelsen är kontrollerad med hjälp av foto',\r\n 'deadCarnivore.controlType.notVerified.en': 'The death has not been inspected',\r\n 'deadCarnivore.controlType.notVerified.no': 'Dødsfallet er ikke kontrollert',\r\n 'deadCarnivore.controlType.notVerified.sv': 'Händelsen är inte kontrollerad',\r\n 'deadCarnivore.controlType.interview.en': 'The death has been inspected via interview or letter',\r\n 'deadCarnivore.controlType.interview.no': 'Dødsfallet er kontrollert ved hjelp av intervju eller brev',\r\n 'deadCarnivore.controlType.interview.sv': 'Händelsen är kontrollerad via intervju eller brev',\r\n 'deadCarnivore.controlType.laboratory.en': 'The death has been inspected in a laboratory',\r\n 'deadCarnivore.controlType.laboratory.no': 'Dødsfallet er kontrollert i laboratorium',\r\n 'deadCarnivore.controlType.laboratory.sv': 'Djuret är kontrollerat av laboratorium',\r\n 'deadCarnivore.controlType.fieldVerificationLST.en':\r\n 'The death has been inspected by the County Administrative Board (Sweden)',\r\n 'deadCarnivore.controlType.fieldVerificationLST.no': 'Dødsfallet er kontrollert av Länsstyrelsen',\r\n 'deadCarnivore.controlType.fieldVerificationLST.sv': 'Händelsen är kontrollerad av Länsstyrelsen',\r\n 'deadCarnivore.controlType.fieldVerificationSamiVillage.en':\r\n 'The death has been inspected by a Saami village (Sweden)',\r\n 'deadCarnivore.controlType.fieldVerificationSamiVillage.no': 'Dødsfallet er kontrollert av sameby',\r\n 'deadCarnivore.controlType.fieldVerificationSamiVillage.sv':\r\n 'Händelsen är kontrollerad av samebyns inventeringssamordnare',\r\n 'deadCarnivore.controlType.GPS.en': 'The death has been inspected via GPS- or radio tracking',\r\n 'deadCarnivore.controlType.GPS.no': 'Dødsfallet er kontrollert ved hjelp av GPS eller radiopeiling',\r\n 'deadCarnivore.controlType.GPS.sv': 'Händelsen är kontrollerad med hjälp av gps eller radiopejling',\r\n 'deadCarnivore.dead.en': 'Dead',\r\n 'deadCarnivore.dead.no': 'Død',\r\n 'deadCarnivore.dead.sv': 'Död',\r\n 'deadCarnivore.dead.intetkjonn.en': 'Dead',\r\n 'deadCarnivore.dead.intetkjonn.no': 'Død',\r\n 'deadCarnivore.dead.intetkjonn.sv': 'Dött',\r\n 'deadCarnivore.deathCausePhrase.killed.licenseHunting.en': 'was killed during legal hunting',\r\n 'deadCarnivore.deathCausePhrase.killed.licenseHunting.no': 'ble felt ved lisensfelling',\r\n 'deadCarnivore.deathCausePhrase.killed.licenseHunting.sv': 'fälldes under licensjakt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.licenseHunting.en': 'was shot at during legal hunting, damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.licenseHunting.no': 'ble pÃ¥skutt i lisensjakt. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.licenseHunting.sv': 'pÃ¥skjuten vid licensjakt, konstaterades skadad men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.killed.quotaHunting.en': 'was killed during legal hunting',\r\n 'deadCarnivore.deathCausePhrase.killed.quotaHunting.no': 'ble felt i kvotejakt',\r\n 'deadCarnivore.deathCausePhrase.killed.quotaHunting.sv': 'fälldes under licensjakt/kvotjakt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.quotaHunting.en': 'was shot at during legal hunting, damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.quotaHunting.no': 'ble pÃ¥skutt i kvotejakt. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.quotaHunting.sv': 'pÃ¥skjuten vid licensjakt, konstaterades skadad men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.quotaHunting.en': 'was shot at during legal hunting, damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.quotaHunting.no': 'ble pÃ¥skutt i kvotejakt. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.quotaHunting.sv': 'pÃ¥skjutet vid licensjakt/kvotjakt, konstaterades skadat men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.killed.damageControl.en': 'was killed on a damage control permit',\r\n 'deadCarnivore.deathCausePhrase.killed.damageControl.no': 'ble felt i skadefelling',\r\n 'deadCarnivore.deathCausePhrase.killed.damageControl.sv': 'fälldes under skyddsjakt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.damageControl.en': 'was shot at on a damage control permit, damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.damageControl.no': 'ble pÃ¥skutt i skadefelling. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.damageControl.sv': 'pÃ¥skjuten vid skyddsjakt, konstaterades skadad men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.damageControl.en': 'was shot at on a damage control permit',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.damageControl.no': 'ble pÃ¥skutt i skadefelling. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.damageControl.sv': 'pÃ¥skjutet vid skyddsjakt, konstaterades skadat men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.killed.defenceOfAnimal.en': 'was killed on a damage control permit (enskilds initiativ (S))',\r\n 'deadCarnivore.deathCausePhrase.killed.defenceOfAnimal.no': 'ble felt i nødverge av hensyn til tamdyr',\r\n 'deadCarnivore.deathCausePhrase.killed.defenceOfAnimal.sv': 'fälldes under skyddsjakt enskilds initiativ',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.defenceOfAnimal.en': 'was shot at on a damage control permit (enskilds initiativ (S)), damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.defenceOfAnimal.no': 'ble pÃ¥skutt i nødverge av hensyn til tamdyr. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.defenceOfAnimal.sv': 'pÃ¥skjuten vid skyddsjakt pÃ¥ enskilds initiativ, konstaterades skadad men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.defenceOfAnimal.en': 'was shot at on a damage control permit (enskilds initiativ (S)), damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.defenceOfAnimal.no': 'ble pÃ¥skutt i nødverge av hensyn til tamdyr. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.defenceOfAnimal.sv': 'pÃ¥skjutet vid skyddsjakt pÃ¥ enskilds initiativ, konstaterades skadat men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.killed.snoMission.en': 'was killed by Statens Naturoppsyn (Norway)',\r\n 'deadCarnivore.deathCausePhrase.killed.snoMission.no': 'ble felt av Statens Naturoppsyn',\r\n 'deadCarnivore.deathCausePhrase.killed.snoMission.sv': 'fälldes av Statens Naturoppsyn (Norge)',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.snoMission.en': 'was shot by Statens Naturoppsyn (Norway), damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.snoMission.no': 'ble pÃ¥skutt i fellingsoppdrag til Statens Naturoppsyn. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.snoMission.sv': 'pÃ¥skjuten under uppdrag till Statens Naturoppsyn (Norge), konstaterades skadad men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.snoMission.en': 'was shot by Statens Naturoppsyn (Norway), damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.snoMission.no': 'pÃ¥skutt i fellingsoppdrag av Statens Naturoppsyn. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.snoMission.sv': 'pÃ¥skjutet under uppdrag till Statens Naturoppsyn (Norge), konstaterades skadat men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.animalWelfare.en': 'was euthanised for animal welfare reasons',\r\n 'deadCarnivore.deathCausePhrase.animalWelfare.no': 'ble felt av dyrevelferdshensyn',\r\n 'deadCarnivore.deathCausePhrase.animalWelfare.sv': 'avlivades av djurskyddsskäl',\r\n 'deadCarnivore.deathCausePhrase.policeDecision.en': 'was killed by decision of the police',\r\n 'deadCarnivore.deathCausePhrase.policeDecision.no': 'ble felt etter beslutning fra politiet',\r\n 'deadCarnivore.deathCausePhrase.policeDecision.sv': 'avlivades pÃ¥ Polismyndighetens initiativ',\r\n 'deadCarnivore.deathCausePhrase.killedByAnimal.en': 'was killed by another animal',\r\n 'deadCarnivore.deathCausePhrase.killedByAnimal.no': 'ble drept av annet dyr',\r\n 'deadCarnivore.deathCausePhrase.killedByAnimal.sv': 'dödades av annat djur',\r\n 'deadCarnivore.deathCausePhrase.research.en': 'died in connection with research',\r\n 'deadCarnivore.deathCausePhrase.research.no': 'døde i forbindelse med forskning',\r\n 'deadCarnivore.deathCausePhrase.research.sv': 'dog i samband med forskningsverksamhet',\r\n 'deadCarnivore.deathCausePhrase.illegalKilling.en': 'was illegally killed',\r\n 'deadCarnivore.deathCausePhrase.illegalKilling.no': 'er illegalt avlivet',\r\n 'deadCarnivore.deathCausePhrase.illegalKilling.sv': 'dödades illegalt',\r\n 'deadCarnivore.deathCausePhrase.collisionRail.en': 'was hit by a train',\r\n 'deadCarnivore.deathCausePhrase.collisionRail.no': 'ble pÃ¥kjørt av tog',\r\n 'deadCarnivore.deathCausePhrase.collisionRail.sv': 'blev pÃ¥körd av tÃ¥g',\r\n 'deadCarnivore.deathCausePhrase.collisionRoad.en': 'was hit by a car',\r\n 'deadCarnivore.deathCausePhrase.collisionRoad.no': 'ble pÃ¥kjørt av bil',\r\n 'deadCarnivore.deathCausePhrase.collisionRoad.sv': 'blev pÃ¥körd av bil',\r\n 'deadCarnivore.deathCausePhrase.killed.selfDefence.en': 'was killed in defense of person, animal or other property',\r\n 'deadCarnivore.deathCausePhrase.killed.selfDefence.no': 'ble felt i nødverge',\r\n 'deadCarnivore.deathCausePhrase.killed.selfDefence.sv': 'dödades i nödvärn',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.selfDefence.en': 'was shot at in defense of person, animal or other property. Damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.selfDefence.no': 'ble pÃ¥skutt i nødverge. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.shotDamageConfirmed.selfDefence.sv': 'pÃ¥skjuten i nödvärn, konstaterades skadad men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.selfDefence.en': 'was shot at in defense of person, animal or other property. Damage confirmed but not killed',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.selfDefence.no': 'ble pÃ¥skutt i nødverge. Skadet, men ikke felt',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.shotDamageConfirmed.selfDefence.sv': 'pÃ¥skjutet i nödvärn, konstaterades skadat men fälldes inte',\r\n 'deadCarnivore.deathCausePhrase.accident.en': 'died in an accident',\r\n 'deadCarnivore.deathCausePhrase.accident.no': 'døde i en ulykke',\r\n 'deadCarnivore.deathCausePhrase.accident.sv': 'dödades i olyckshändelse',\r\n 'deadCarnivore.deathCausePhrase.disease.en': 'died from disease',\r\n 'deadCarnivore.deathCausePhrase.disease.no': 'døde av sykdom',\r\n 'deadCarnivore.deathCausePhrase.disease.sv': 'dog av sjukdom',\r\n 'deadCarnivore.deathCausePhrase.unknown.en': 'died from unknown causes',\r\n 'deadCarnivore.deathCausePhrase.unknown.no': 'døde av ukjente Ã¥rsaker',\r\n 'deadCarnivore.deathCausePhrase.unknown.sv': 'dog av okänd orsak',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.collisionRail.en': 'was hit by a train',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.collisionRail.no': 'ble pÃ¥kjørt av tog',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.collisionRail.sv': 'blev pÃ¥kört av tÃ¥g',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.collisionRoad.en': 'was hit by a car',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.collisionRoad.no': 'ble pÃ¥kjørt av bil',\r\n 'deadCarnivore.deathCausePhrase.intetkjonn.collisionRoad.sv': 'blev pÃ¥kört av bil',\r\n 'deadCarnivore.slaughterWeight.en': 'carcass weight',\r\n 'deadCarnivore.slaughterWeight.no': 'slaktevekt',\r\n 'deadCarnivore.slaughterWeight.sv': 'slaktvikt',\r\n 'deadCarnivore.unknown.en': 'Unknown',\r\n 'deadCarnivore.unknown.no': 'Ukjent',\r\n 'deadCarnivore.unknown.sv': 'Okänd',\r\n 'deadCarnivore.documentation.en': 'The death is ',\r\n 'deadCarnivore.documentation.no': 'Dødsfallet er ',\r\n 'deadCarnivore.documentation.sv': 'Händelsen är ',\r\n 'deadCarnivore.year.en': 'year',\r\n 'deadCarnivore.year.no': 'Ã¥r',\r\n 'deadCarnivore.year.sv': 'Ã¥r',\r\n 'deadCarnivore.gender.male.en': 'Male',\r\n 'deadCarnivore.gender.male.no': 'Hann',\r\n 'deadCarnivore.gender.male.sv': 'Hane',\r\n 'deadCarnivore.gender.female.en': 'Female',\r\n 'deadCarnivore.gender.female.no': 'Hunn',\r\n 'deadCarnivore.gender.female.sv': 'Hona',\r\n 'deadCarnivore.gender.unknown.en': 'Unknown',\r\n 'deadCarnivore.gender.unknown.no': 'Ukjent',\r\n 'deadCarnivore.gender.unknown.sv': 'Okänt',\r\n 'rovviltskade.report.description.en': 'These statistics show the number of domestic animals and items damaged by carnivores in Sweden. Damages on reindeer is not included. The results are filtered by year, county, carnivore and type of damage. For further details, please click on \"About the data\".',\r\n 'rovviltskade.report.description.no':'Statistikk over skader pÃ¥ført av rovdyr',\r\n 'rovviltskade.report.description.sv':'Här visas statistik om angrepp av stora rovdjur pÃ¥ tamdjur med mera i Sverige. Skador pÃ¥ ren är inte inkluderat. Antalen som visas beror pÃ¥ de filtreringar du gör pÃ¥ Ã¥r, län, rovdjur och vad som skadats. Tryck pÃ¥ \"Om statistiken\" för att läsa mer.',\r\n 'deadCarnivore.report.description.en': 'These statistics provide the number of carnivores that have been killed through hunting, damage control, or found deceased in Scandinavia. The results are filtered by country, counties, years, and causes of death. For further details, please click on \"About the data\".',\r\n 'deadCarnivore.report.description.no': 'Her vises antall rovdyr som er felt ved jakt, lisensfelling, skadefelling eller er funnet døde av andre Ã¥rsaker i Skandinavia. Resultatet er basert pÃ¥ de filtreringer du gjør pÃ¥ land, fylker, Ã¥r og dødsÃ¥rsaker. Klikk pÃ¥ â€Om statistikken†for Ã¥ lese mer.',\r\n 'deadCarnivore.report.description.sv': 'Här visas antal rovdjur som fällts vid jakt eller hittats döda av annan orsak i Skandinavien. Antalen som visas beror pÃ¥ de filtreringar du gör pÃ¥ Ã¥r, land, län och dödsorsak. Tryck pÃ¥ \"Om statistiken\" för att läsa mer.',\r\n 'dnaInfo.barcode.no': 'Strekkoden for DNA-prøven er ',\r\n 'dnaInfo.barcode.sv': 'Streckkoden för DNA-provet är ',\r\n 'dnaInfo.barcode.en': 'The DNA-sample barcode is ',\r\n 'dnaInfo.identity.no': 'Den er identifisert som ',\r\n 'dnaInfo.identity.sv': 'Den är identifierad som ',\r\n 'dnaInfo.identity.en': 'It is identified as ',\r\n 'dnaInfo.unanalysed.en': 'The sample has not been analysed.',\r\n 'dnaInfo.unanalysed.no': 'Prøven er ikke analysert.',\r\n 'dnaInfo.unanalysed.sv': 'Provet är inte analyserat.',\r\n 'error.oida.en': 'Something went wrong',\r\n 'error.oida.no': 'Oi da.. noe gikk galt',\r\n 'error.oida.sv': 'Oj, ett fel har uppstÃ¥tt',\r\n 'error.goBack.en': 'Go back to the homepage',\r\n 'error.goBack.no': 'Tilbake til startsiden',\r\n 'error.goBack.sv': 'Tillbaka till startsidan',\r\n 'evaluation.documented.en': 'Confirmed',\r\n 'evaluation.documented.no': 'Dokumentert',\r\n 'evaluation.documented.sv': 'Dokumenterad',\r\n 'evaluation.assessedSure.en': 'Presumed correct',\r\n 'evaluation.assessedSure.no': 'Antatt sikker',\r\n 'evaluation.assessedSure.sv': 'Bedömd som säker',\r\n 'evaluation.unsure.en': 'Uncertain',\r\n 'evaluation.unsure.no': 'Usikker',\r\n 'evaluation.unsure.sv': 'Osäker',\r\n 'evaluation.erroneousReport.en': 'Show erronous reports, i.e. tracks that were not from carnivores',\r\n 'evaluation.erroneousReport.no': 'Vis feilmeld. - dvs spor som ikke var rovdyr likevel',\r\n 'evaluation.erroneousReport.sv': 'Visa felrapporter',\r\n 'evaluation.title.documented.en': 'Confirmed',\r\n 'evaluation.title.documented.no': 'Dokumentert',\r\n 'evaluation.title.documented.sv': 'Dokumenterad',\r\n 'evaluation.title.assessedSure.en': 'Presumed correct',\r\n 'evaluation.title.assessedSure.no': 'Antatt sikker',\r\n 'evaluation.title.assessedSure.sv': 'Bedömd som säker',\r\n 'evaluation.title.unsure.en': 'Uncertain',\r\n 'evaluation.title.unsure.no': 'Usikker',\r\n 'evaluation.title.unsure.sv': 'Osäker',\r\n 'evaluation.title.erroneousReport.en': 'Erroneous reports',\r\n 'evaluation.title.erroneousReport.no': 'Feilmeldinger',\r\n 'evaluation.title.erroneousReport.sv': 'Felrapporter',\r\n 'evaluation.title.noneChecked.en': 'None selected',\r\n 'evaluation.title.noneChecked.no': 'Ingen valgt',\r\n 'evaluation.title.noneChecked.sv': 'Ingen vald',\r\n 'evaluation.label.documented.en': 'Confirmed',\r\n 'evaluation.label.documented.no': 'Dokumentert',\r\n 'evaluation.label.documented.sv': 'Dokumenterad',\r\n 'evaluation.label.assessedSure.en': 'Presumed correct',\r\n 'evaluation.label.assessedSure.no': 'Antatt sikker',\r\n 'evaluation.label.assessedSure.sv': 'Bedömd som säker',\r\n 'evaluation.label.unsure.en': 'Uncertain',\r\n 'evaluation.label.unsure.no': 'Usikker',\r\n 'evaluation.label.unsure.sv': 'Osäker',\r\n 'evaluation.label.erroneousReport.en': 'Erroneous report on/about',\r\n 'evaluation.label.erroneousReport.no': 'Feilmelding om ',\r\n 'evaluation.label.erroneousReport.sv': 'Felrapport om',\r\n 'expandableList.locationInputPlaceholder.en': 'Country, region, county or municipality',\r\n 'expandableList.locationInputPlaceholder.no': 'Land, region, fylke eller kommune',\r\n 'expandableList.locationInputPlaceholder.sv': 'Land, län, kommun eller förvaltningsomrÃ¥de',\r\n 'expandableList.periodFromInputPlaceholder.en': 'From date',\r\n 'expandableList.periodFromInputPlaceholder.no': 'Fra dato',\r\n 'expandableList.periodFromInputPlaceholder.sv': 'FrÃ¥n datum',\r\n 'expandableList.periodToInputPlaceholder.en': 'To date',\r\n 'expandableList.periodToInputPlaceholder.no': 'Til dato',\r\n 'expandableList.periodToInputPlaceholder.sv': 'Till datum',\r\n 'expandableList.showMore.en': 'Show more options',\r\n 'expandableList.showMore.no': 'Vis flere valg',\r\n 'expandableList.showMore.sv': 'Visa fler val',\r\n 'expandableList.showLess.en': 'Show less options',\r\n 'expandableList.showLess.no': 'Vis færre valg ',\r\n 'expandableList.showLess.sv': 'Visa färre val',\r\n 'filterbar.carnivoreDamage.en': 'Carnivore damages',\r\n 'filterbar.carnivoreDamage.no': 'Skader etter rovdyr',\r\n 'filterbar.carnivoreDamage.sv': 'Skada orsakad av rovdjur',\r\n 'filterbar.date.en': 'Date',\r\n 'filterbar.date.no': 'Dato',\r\n 'filterbar.date.sv': 'Datum',\r\n 'filterbar.evaluation.en': 'Evaluation',\r\n 'filterbar.evaluation.no': 'Vurdering av registrering',\r\n 'filterbar.evaluation.sv': 'Bedömning',\r\n 'filterbar.observation.en': 'Observation of carnivore',\r\n 'filterbar.observation.no': 'Observasjon av rovdyr',\r\n 'filterbar.observation.sv': 'Observation av rovdjur',\r\n 'filterbar.otherCarnivore.en': 'Damage caused by other carnivore',\r\n 'filterbar.otherCarnivore.no': 'Skader pÃ¥ført av andre rovdyr',\r\n 'filterbar.otherCarnivore.sv': 'Skador orsakade av andra rovdjur',\r\n 'filterbar.place.en': 'Place',\r\n 'filterbar.place.no': 'Sted',\r\n 'filterbar.place.sv': 'Plats',\r\n 'filterbar.showMoreSpecies.en': 'Show more species',\r\n 'filterbar.showMoreSpecies.no': 'Vis flere arter',\r\n 'filterbar.showMoreSpecies.sv': 'Visa fler arter',\r\n 'filterbar.species.en': 'Species',\r\n 'filterbar.species.no': 'Arter',\r\n 'filterbar.species.sv': 'Arter',\r\n 'filterbar.showAll.en': 'Select all',\r\n 'filterbar.showAll.no': 'Velg alle',\r\n 'filterbar.showAll.sv': 'Välj alla',\r\n 'filterbar.documented.en': 'Confirmed, presumed correct and uncertain',\r\n 'filterbar.documented.no': 'Dokumentert, sikker og usikker',\r\n 'filterbar.documented.sv': 'Dokumenterad, bedömd som säker och osäker',\r\n 'filterbar.showFilter.en': 'Show filters',\r\n 'filterbar.showFilter.no': 'Vis filter',\r\n 'filterbar.showFilter.sv': 'Visa filter',\r\n 'filterbar.HideFilter.en': 'Hide filters',\r\n 'filterbar.HideFilter.no': 'Skjul filter',\r\n 'filterbar.HideFilter.sv': 'Göm filter',\r\n 'filterbar.showMoreFilter.en': 'Show more filters',\r\n 'filterbar.showMoreFilter.no': 'Vis flere filter',\r\n 'filterbar.showMoreFilter.sv': 'Visa fler filter',\r\n 'filterlist.goldenEagle.en': 'Damages caused by golden eagle',\r\n 'filterlist.goldenEagle.no': 'Skader etter kongeørn',\r\n 'filterlist.goldenEagle.sv': 'Skada orsakad av kungsörn',\r\n 'filterlist.unknownProtected.en': 'Damages caused by unknown carnivore',\r\n 'filterlist.unknownProtected.no': 'Skader etter ukjent fredet rovvilt',\r\n 'filterlist.unknownProtected.sv': 'Skada orsakat av okänt fredat rovdjur',\r\n 'footer.developedBy.en': 'Developed by ',\r\n 'footer.developedBy.no': 'Utviklet av ',\r\n 'footer.developedBy.sv': 'Utvecklad av ',\r\n 'incidentArea.backCountry.en': 'Back country',\r\n 'incidentArea.backCountry.no': 'Utmark',\r\n 'incidentArea.backCountry.sv': 'Bete utan stängsel',\r\n 'incidentArea.cultivatedLand.en': 'Cultivated land',\r\n 'incidentArea.cultivatedLand.no': 'Innmark',\r\n 'incidentArea.cultivatedLand.sv': 'Inäga',\r\n 'incidentArea.fields.en': 'Fields',\r\n 'incidentArea.fields.no': 'Inngjerdet innmark',\r\n 'incidentArea.fields.sv': 'Bete innanför stängsel',\r\n 'incidentArea.fence.en': 'Fields with predator fence',\r\n 'incidentArea.fence.no': 'OmrÃ¥de med rovviltavvisende gjerde',\r\n 'incidentArea.fence.sv': 'Bete med rovdjursavvisande stängsel',\r\n 'individual.origin.f1.en': 'The carnivore is a first generation offspring (F1:a) of an immigrated Finnish-Russian wolf',\r\n 'individual.origin.f1.no': 'Dyret er et første generasjons avkom (F1:a) av en innvandret finsk-russisk ulv',\r\n 'individual.origin.f1.sv': 'Djuret är en första generationens avkomma (F1:a) till en invandrad finsk-rysk varg',\r\n 'individual.origin.hybrid.en': 'The carnivore is a hybrid of wolf and dog',\r\n 'individual.origin.hybrid.no': 'Dyret er en hybrid mellom ulv og hund',\r\n 'individual.origin.hybrid.sv': 'Djuret är en hybrid mellan varg och hund',\r\n 'individual.origin.immigrant.en': 'The carnivore is an imigrated Finnish-Russian wolf',\r\n 'individual.origin.immigrant.no': 'Dyret er en innvandret finsk-russisk ulv',\r\n 'individual.origin.immigrant.sv': 'Djuret är en invandrad finsk-rysk varg',\r\n 'languageSelect.language.en': 'Language',\r\n 'languageSelect.language.no': 'SprÃ¥k',\r\n 'languageSelect.language.sv': 'SprÃ¥k',\r\n 'map.layers.en': 'Layers',\r\n 'map.layers.no': 'Kartlag',\r\n 'map.layers.sv': 'Kartskikt',\r\n 'map.zoominn.en': 'Zoom in',\r\n 'map.zoominn.no': 'Zoom inn',\r\n 'map.zoominn.sv': 'Zooma in',\r\n 'map.zoomut.en': 'Zoom out',\r\n 'map.zoomut.no': 'Zoom ut',\r\n 'map.zoomut.sv': 'Zooma ut',\r\n 'menu.en': 'Menu',\r\n 'menu.no': 'Meny',\r\n 'menu.sv': 'Meny',\r\n 'menu.about.en': 'About Rovbase',\r\n 'menu.about.no': 'Om Rovbase',\r\n 'menu.about.sv': 'Om Rovbase',\r\n 'menu.contact.en': 'Contact us',\r\n 'menu.contact.no': 'Kontakt oss',\r\n 'menu.contact.sv': 'Kontakta oss',\r\n 'menu.email.en': 'E-mail',\r\n 'menu.email.no': 'E-post',\r\n 'menu.email.sv': 'E-post',\r\n 'menu.facts.en': 'Carnivore facts',\r\n 'menu.facts.no': 'Rovdyrfakta',\r\n 'menu.facts.sv': 'Fakta om stora rovdjur',\r\n 'menu.phone.en': 'Tel',\r\n 'menu.phone.no': 'Tlf',\r\n 'menu.phone.sv': 'Tel',\r\n 'menu.privacypolicy.en': 'Privacy policy',\r\n 'menu.privacypolicy.no': 'Personvern',\r\n 'menu.privacypolicy.sv': 'Personuppgifter',\r\n 'menu.refund.en': 'Compensation sheep and reindeer',\r\n 'menu.refund.no': 'Erstatning sau og rein',\r\n 'menu.refund.sv': 'Ersättning fÃ¥r och ren',\r\n 'menu.refundSheep.en': 'Compensation sheep',\r\n 'menu.refundSheep.no': 'Erstatning sau',\r\n 'menu.refundSheep.sv': 'Ersättning fÃ¥r (Norge)',\r\n 'menu.refundReindeer.en': 'Compensation reindeer',\r\n 'menu.refundReindeer.no': 'Erstatning rein',\r\n 'menu.refundReindeer.sv': 'Ersättning ren (Norge)',\r\n 'menu.reportDodeRovdyr.no': 'Statistikk døde rovdyr',\r\n 'menu.reportDodeRovdyr.sv': 'Statistik döda rovdjur',\r\n 'menu.reportDodeRovdyr.en': 'Statistics dead carnivores',\r\n 'menu.reportRovviltskade.no': 'Statistikk rovviltskader (Sverige)',\r\n 'menu.reportRovviltskade.sv': 'Viltskadestatistik (Sverige)',\r\n 'menu.reportRovviltskade.en': 'Statistics carnivore damanges',\r\n 'menu.search.en': 'Search',\r\n 'menu.search.no': 'Søk i Rovbase',\r\n 'menu.search.sv': 'Sök i Rovbase',\r\n 'menu.privacyPolicy.en': 'Privacy Policy',\r\n 'menu.privacyPolicy.no': 'Personvernerklæring',\r\n 'menu.privacyPolicy.sv': 'Integritetspolicy',\r\n 'menu.accessibilityStatement.en': 'Accessibility Statement',\r\n 'menu.accessibilityStatement.no': 'Tilgjengelighetserklæring',\r\n 'menu.accessibilityStatement.sv': 'Tillgänglighet',\r\n 'footer.organisationNumber.en': 'Organisation number',\r\n 'footer.organisationNumber.no': 'Organisasjonsnummer',\r\n 'footer.organisationNumber.sv': 'Organisationsnummer',\r\n 'footer.email.en': 'E-mail',\r\n 'footer.email.no': 'E-post',\r\n 'footer.email.sv': 'E-post',\r\n 'footer.phone.en': 'Phone',\r\n 'footer.phone.no': 'Telefon',\r\n 'footer.phone.sv': 'Telefon',\r\n 'number.one.en': 'A',\r\n 'number.one.no': 'En',\r\n 'number.one.sv': 'En',\r\n 'observations.en': 'Observations',\r\n 'observations.no': 'Observasjoner',\r\n 'observations.sv': 'Observationer',\r\n 'observations.age.en': 'Age',\r\n 'observations.age.no': 'Alder',\r\n 'observations.age.sv': 'Ã…lder',\r\n 'observations.analysedDna.en': 'Analysed DNA',\r\n 'observations.analysedDna.no': 'Analysert DNA',\r\n 'observations.analysedDna.sv': 'Analyserat DNA',\r\n 'observations.bed.en': 'Bed',\r\n 'observations.bed.no': 'Leie',\r\n 'observations.bed.sv': 'Lega',\r\n 'observations.blood.en': 'Blood',\r\n 'observations.blood.no': 'Blod',\r\n 'observations.blood.sv': 'Blod',\r\n 'observations.dead.en': 'Dead',\r\n 'observations.dead.no': 'Død',\r\n 'observations.dead.sv': 'Död',\r\n 'observations.deadCarnivores.en': 'Dead carnivores',\r\n 'observations.deadCarnivores.no': 'Døde rovdyr',\r\n 'observations.deadCarnivores.sv': 'Döda rovdjur',\r\n 'observations.digging.en': 'Digging',\r\n 'observations.digging.no': 'Graving',\r\n 'observations.digging.sv': 'Grävt',\r\n 'observations.dna.en': 'Dna',\r\n 'observations.dna.no': 'Dna',\r\n 'observations.dna.sv': 'Dna',\r\n 'observations.faeces.en': 'Feaces',\r\n 'observations.faeces.no': 'Ekskrement',\r\n 'observations.faeces.sv': 'Spillning',\r\n 'observations.footprint.en': 'Footprint',\r\n 'observations.footprint.no': 'Spor',\r\n 'observations.footprint.sv': 'SpÃ¥r',\r\n 'observations.hair.en': 'Hair',\r\n 'observations.hair.no': 'HÃ¥r',\r\n 'observations.hair.sv': 'HÃ¥r',\r\n 'observations.hairOrFeather.en': 'Hair',\r\n 'observations.hairOrFeather.no': 'HÃ¥r',\r\n 'observations.hairOrFeather.sv': 'HÃ¥r',\r\n 'observations.observation.en': 'Observation',\r\n 'observations.observation.no': 'Observasjon',\r\n 'observations.observation.sv': 'Observation',\r\n 'observations.offspring.en': 'Offspring',\r\n 'observations.offspring.no': 'Yngling',\r\n 'observations.offspring.sv': 'Föryngring',\r\n 'observations.reproduction.en': 'Offspring',\r\n 'observations.reproduction.no': 'Yngling',\r\n 'observations.reproduction.sv': 'Föryngring',\r\n 'observations.territorialMarking.en': 'Territorial marking',\r\n 'observations.territorialMarking.no': 'Revirmarkering',\r\n 'observations.territorialMarking.sv': 'Revirmarkering',\r\n 'observations.tissue.en': 'Tissue',\r\n 'observations.tissue.no': 'Vev',\r\n 'observations.tissue.sv': 'Vävnad',\r\n 'observations.treeMarkings.en': 'Tree markings',\r\n 'observations.treeMarkings.no': 'Merker pÃ¥ trær',\r\n 'observations.treeMarkings.sv': 'Märken pÃ¥ träd',\r\n 'observations.unanalysedDna.en': 'Unanalysed DNA',\r\n 'observations.unanalysedDna.no': 'Uanalysert DNA',\r\n 'observations.unanalysedDna.sv': 'Ej analyserat DNA-prov',\r\n 'observations.unspecifiedType.en': 'Unspecified type',\r\n 'observations.unspecifiedType.no': 'Uklassifisert',\r\n 'observations.unspecifiedType.sv': 'Observationstyp ej angiven',\r\n 'observations.visualObservation.en': 'Visual observation',\r\n 'observations.visualObservation.no': 'Synsobservasjon',\r\n 'observations.visualObservation.sv': 'Synobservation',\r\n 'observations.visualObservations.en': 'Visual observation',\r\n 'observations.visualObservations.no': 'Synsobserv.',\r\n 'observations.visualObservations.sv': 'Synobservation',\r\n 'observationsFilterList.analysedDna.en': 'Analysed DNA',\r\n 'observationsFilterList.analysedDna.no': 'Analysert DNA-prøve',\r\n 'observationsFilterList.analysedDna.sv': 'Analyserat DNA-prov',\r\n 'observationsFilterList.deadCarnivores.en': 'Dead carnivores',\r\n 'observationsFilterList.deadCarnivores.no': 'Dødt rovdyr observert',\r\n 'observationsFilterList.deadCarnivores.sv': 'Dött rovdjur observerat',\r\n 'observationsFilterList.footprint.en': 'Traces observed',\r\n 'observationsFilterList.footprint.no': 'Spor observert',\r\n 'observationsFilterList.footprint.sv': 'SpÃ¥r/tassavtryck',\r\n 'observationsFilterList.offspring.en': 'Offspring',\r\n 'observationsFilterList.offspring.no': 'Yngling',\r\n 'observationsFilterList.offspring.sv': 'Föryngring',\r\n 'observationsFilterList.unanalysedDna.en': 'Unanalysed DNA',\r\n 'observationsFilterList.unanalysedDna.no': 'Uanalysert DNA-prøve',\r\n 'observationsFilterList.unanalysedDna.sv': 'Ej analyserat DNA-prov',\r\n 'observationsFilterList.visualObservation.en': 'Carnivore observed',\r\n 'observationsFilterList.visualObservation.no': 'Dyr observert',\r\n 'observationsFilterList.visualObservation.sv': 'Rovdjur observerat',\r\n 'observations.controlType.fieldVerificationCarnivoreContact.en':\r\n 'The observation has been inspected by carnivore contact personnel (Norway)',\r\n 'observations.controlType.fieldVerificationCarnivoreContact.no': 'Observasjonen er kontrollert av rovviltkontakt',\r\n 'observations.controlType.fieldVerificationCarnivoreContact.sv': 'Observationen är kontrollerad av rovviltkontakt',\r\n 'observations.controlType.fieldVerificationSNO.en':\r\n 'The observation has been inspected by the Norwegian Nature Inspectorate (Norway)',\r\n 'observations.controlType.fieldVerificationSNO.no': 'Observasjonen er kontrollert av Statens Naturoppsyn',\r\n 'observations.controlType.fieldVerificationSNO.sv': 'Observationen är kontrollerad av Statens Naturoppsyn (Norge)',\r\n 'observations.controlType.photograph.en': 'The observation was inspected via photo',\r\n 'observations.controlType.photograph.no': 'Observasjonen er kontrollert ved hjelp av foto',\r\n 'observations.controlType.photograph.sv': 'Observationen är kontrollerad med hjälp av foto',\r\n 'observations.controlType.notVerified.en': 'The observation has not been inspected',\r\n 'observations.controlType.notVerified.no': 'Observasjonen er ikke kontrollert',\r\n 'observations.controlType.notVerified.sv': 'Observationen är inte kontrollerad',\r\n 'observations.controlType.interview.en': 'The observation was inspected via interview or letter',\r\n 'observations.controlType.interview.no': 'Observasjonen er kontrollert ved hjelp av intervju eller brev',\r\n 'observations.controlType.interview.sv': 'Observationen är kontrollerad via intervju eller brev',\r\n 'observations.controlType.laboratory.en': 'The observation was inspected in a laboratory',\r\n 'observations.controlType.laboratory.no': 'Observasjonen er kontrollert i laboratorium',\r\n 'observations.controlType.laboratory.sv': 'Observationen är kontrollerat av laboratorium',\r\n 'observations.controlType.fieldVerificationLST.en':\r\n 'The observation has been inspected by the County Administrative Board (Sweden)',\r\n 'observations.controlType.fieldVerificationLST.no': 'Observasjonen er kontrollert av Länsstyrelsen',\r\n 'observations.controlType.fieldVerificationLST.sv': 'Observationen är kontrollerad av Länsstyrelsen',\r\n 'observations.controlType.fieldVerificationSamiVillage.en':\r\n 'The observation has been inspected by a Saami village (Sweden)',\r\n 'observations.controlType.fieldVerificationSamiVillage.no': 'Observasjonen er kontrollert av sameby',\r\n 'observations.controlType.fieldVerificationSamiVillage.sv':\r\n 'Observationen är kontrollerad av samebyns inventeringssamordnare',\r\n 'observations.controlType.GPS.en': 'The observation has been inspected via GPS- or radio tracking',\r\n 'observations.controlType.GPS.no': 'Observasjonen er kontrollert ved hjelp av GPS eller radiopeiling',\r\n 'observations.controlType.GPS.sv': 'Observationen är kontrollerad med hjälp av gps eller radiopejling',\r\n 'observations.observationType.en': 'Observation types',\r\n 'observations.observationType.no': 'Observasjonstyper',\r\n 'observations.observationType.sv': 'Observationer',\r\n 'observationsFilter.all.en': 'All',\r\n 'observationsFilter.all.no': 'Alle',\r\n 'observationsFilter.all.sv': 'Alla',\r\n 'observationsFilter.onlyOffspring.en': 'Only offspring',\r\n 'observationsFilter.onlyOffspring.no': 'Kun yngling',\r\n 'observationsFilter.onlyOffspring.sv': 'Endast observationer av unge/ungar',\r\n 'refund.reindeer.en': 'Reindeer',\r\n 'refund.reindeer.no': 'Rein',\r\n 'refund.reindeer.sv': 'Ren',\r\n 'refund.reindeerAllAreas.en': 'All reindeer husbandry areas in Norway',\r\n 'refund.reindeerAllAreas.no': 'Alle reinbeiteomrÃ¥der i Norge',\r\n 'refund.reindeerAllAreas.sv': 'Alla renbetesomrÃ¥den i Norge',\r\n 'refund.reindeerAreaDistrict.en': 'Reindeer husbandry district or area',\r\n 'refund.reindeerAreaDistrict.no': 'Reinbeitedistrikt eller omrÃ¥de',\r\n 'refund.reindeerAreaDistrict.sv': 'Renbetesdistrikt eller omrÃ¥de',\r\n 'refund.graphicalImage.en': 'Graphical image of ',\r\n 'refund.graphicalImage.no': 'Grafisk fremstilling av ',\r\n 'refund.graphicalImage.sv': 'Grafisk framställning av ',\r\n 'refund.sheepCompensationGraphTitle.en': 'Normal loss / Total compensated / Total loss ',\r\n 'refund.sheepCompensationGraphTitle.no': 'Normaltap / Antall erstattet / Totalt tap ',\r\n 'refund.sheepCompensationGraphTitle.sv': 'Normalförlust / Antal som kompenserats / Total förlust ',\r\n 'refund.reindeerCompensationGraphTitle.en': 'Total compensated / Applied loss / Total loss ',\r\n 'refund.reindeerCompensationGraphTitle.no': 'Antall erstattet / Omsøkt tap / Totalt tap ',\r\n 'refund.reindeerCompensationGraphTitle.sv': 'Antal som kompenserats / Ansökt förlust / Total förlust ',\r\n 'refund.compensationAmountGraphTitle.en': 'Compensation amount per area',\r\n 'refund.compensationAmountGraphTitle.no': 'Erstatningsbeløp per omrÃ¥de',\r\n 'refund.compensationAmountGraphTitle.sv': 'Ersättningsbelopp per omrÃ¥de',\r\n 'refund.normalLoss.en': 'Normal loss',\r\n 'refund.normalLoss.no': 'Normaltap',\r\n 'refund.normalLoss.sv': 'Normalförlust',\r\n 'refund.totalCompensated.en': 'Total compensated',\r\n 'refund.totalCompensated.no': 'Antall erstattet',\r\n 'refund.totalCompensated.sv': 'Antal som kompenserats',\r\n 'refund.totalLoss.en': 'Total loss',\r\n 'refund.totalLoss.no': 'Totalt tap',\r\n 'refund.totalLoss.sv': 'Total förlust',\r\n 'refund.appliedLoss.en': 'Applied loss',\r\n 'refund.appliedLoss.no': 'Omsøkt tap',\r\n 'refund.appliedLoss.sv': 'Ansökt förlust',\r\n 'refund.compensationAmount.en': 'Compensation amount',\r\n 'refund.compensationAmount.no': 'Erstatnings\\u00ADbeløp', // \\u00AD er unicode character for soft hyphen\r\n 'refund.compensationAmount.sv': 'Kompensations\\u00ADbelopp (NOK)', // \\u00AD er unicode character for soft hyphen\r\n 'refund.sheepCompensation.en': 'Sheep compensation',\r\n 'refund.sheepCompensation.no': 'Sauerstatning',\r\n 'refund.sheepCompensation.sv': 'FÃ¥rkompensation',\r\n 'refund.reindeerCompensation.en': 'Reindeer compensation',\r\n 'refund.reindeerCompensation.no': 'Reinerstatning',\r\n 'refund.reindeerCompensation.sv': 'Renkompensation',\r\n 'refund.area.en': 'Area',\r\n 'refund.area.no': 'OmrÃ¥de',\r\n 'refund.area.sv': 'OmrÃ¥de',\r\n 'refund.compensated.en': 'Compensated',\r\n 'refund.compensated.no': 'Erstattet',\r\n 'refund.compensated.sv': 'Ersatt',\r\n 'refund.numberOfApplications.en': 'Number of applications',\r\n 'refund.numberOfApplications.no': 'Antall søknader',\r\n 'refund.numberOfApplications.sv': 'Antal ansökningar',\r\n 'refund.lamb.en': 'Lamb',\r\n 'refund.lamb.no': 'Lam',\r\n 'refund.lamb.sv': 'Lamm',\r\n 'refund.sheep.en': 'Sheep',\r\n 'refund.sheep.no': 'Sau',\r\n 'refund.sheep.sv': 'FÃ¥r',\r\n 'refund.species.en': 'Species',\r\n 'refund.species.no': 'Art',\r\n 'refund.species.sv': 'Art',\r\n 'refund.compensatedLamb.en': 'Lamb compensated ',\r\n 'refund.compensatedLamb.no': 'Antall lam erstattet',\r\n 'refund.compensatedLamb.sv': 'Antal lamm som ersatts',\r\n 'refund.compensatedSheep.en': 'Sheep compensated ',\r\n 'refund.compensatedSheep.no': 'Antall sau erstattet',\r\n 'refund.compensatedSheep.sv': 'Antal fÃ¥r som ersatts',\r\n 'refund.compensatedCalf.en': 'Reindeer calf compensated ',\r\n 'refund.compensatedCalf.no': 'Antall kalv erstattet',\r\n 'refund.compensatedCalf.sv': 'Antal kalvar som ersatts',\r\n 'refund.compensatedBull.en': 'Reindeer bull compensated ',\r\n 'refund.compensatedBull.no': 'Antall okserein erstattet',\r\n 'refund.compensatedBull.sv': 'Antal sarvar som ersatts',\r\n 'refund.compensatedDoe.en': 'Reindeer doe compensated ',\r\n 'refund.compensatedDoe.no': 'Antall simlerein erstattet',\r\n 'refund.compensatedDoe.sv': 'Antal vajor som ersatts',\r\n 'refund.compensatedDriving.en': 'Reindeer driving compensated ',\r\n 'refund.compensatedDriving.no': 'Antall kjørerein erstattet',\r\n 'refund.compensatedDriving.sv': 'Antal dragrenar som ersatts',\r\n 'refund.compensatedTotal.en': 'Total compensated',\r\n 'refund.compensatedTotal.no': 'Totalt erstattet',\r\n 'refund.compensatedTotal.sv': 'Totalt som ersätts',\r\n 'refund.compensatedPercent.en': 'Share of total loss',\r\n 'refund.compensatedPercent.no': 'Andel av totalt tap',\r\n 'refund.compensatedPercent.sv': 'Andel av total förlust',\r\n 'refund.compensationCarnivoreTitle.en': 'Compensation per carnivore',\r\n 'refund.compensationCarnivoreTitle.no': 'Antall dyr erstattet og skadevolder',\r\n 'refund.compensationCarnivoreTitle.sv': 'Ersättning fördelat pÃ¥ skadegörare',\r\n 'refund.calf.en': 'Calf',\r\n 'refund.calf.no': 'Kalv',\r\n 'refund.calf.sv': 'Kalv',\r\n 'refund.bull.en': 'Bull',\r\n 'refund.bull.no': 'Okserein',\r\n 'refund.bull.sv': 'Sarv',\r\n 'refund.doe.en': 'Doe',\r\n 'refund.doe.no': 'Simlerein',\r\n 'refund.doe.sv': 'Vaja',\r\n 'refund.driving.en': 'Driving',\r\n 'refund.driving.no': 'Kjørerein',\r\n 'refund.driving.sv': 'Dragren',\r\n 'report.fullscreen.en': 'Fullscreen',\r\n 'report.fullscreen.no': 'Fullskjerm',\r\n 'report.fullscreen.sv': 'Helskärm',\r\n 'report.toTopOfPage.en': 'To top of page',\r\n 'report.toTopOfPage.no': 'Til toppen av siden',\r\n 'report.toTopOfPage.sv': 'Till sidans topp',\r\n 'searchfilter.geography.en': 'Geography',\r\n 'searchfilter.geography.no': 'Geografi',\r\n 'searchfilter.geography.sv': 'Geografiskt omrÃ¥de',\r\n 'searchfilter.allAreas.en': 'Norway, Sweden and Finland',\r\n 'searchfilter.allAreas.no': 'Norge, Sverige og Finland',\r\n 'searchfilter.allAreas.sv': 'Norge, Sverige och Finland',\r\n 'searchfilter.selectCarnivore.en': 'Select carnivore to show in the map',\r\n 'searchfilter.selectCarnivore.no': 'Velg rovdyr for Ã¥ vise i kartet',\r\n 'searchfilter.selectCarnivore.sv': 'Välj rovdjur som ska visas pÃ¥ kartan',\r\n 'searchfilter.registrations.en': 'Registrations',\r\n 'searchfilter.registrations.no': 'Registreringer',\r\n 'searchfilter.registrations.sv': 'Registreringar',\r\n 'searchfilter.messageAutosearch.en': 'Changing the search criterias will automatically update the map',\r\n 'searchfilter.messageAutosearch.no': 'Kartet oppdateres automatisk ved endring av søkekriteriene i dette panelet',\r\n 'searchfilter.messageAutosearch.sv': 'Kartan uppdateras automatiskt när sökkriterierna i denna panel ändras',\r\n 'searchableSelect.locationInputPlaceholder.en': 'Country, region, county or municipality',\r\n 'searchableSelect.locationInputPlaceholder.no': 'Land, region, fylke eller kommune',\r\n 'searchableSelect.locationInputPlaceholder.sv': 'Land, län, kommun och förvaltningsomrÃ¥de',\r\n 'searchableSelect.locationSearchInputPlaceholder.en': 'Country, county or municipality',\r\n 'searchableSelect.locationSearchInputPlaceholder.no': 'Land, fylke eller kommune',\r\n 'searchableSelect.locationSearchInputPlaceholder.sv': 'Land, län, kommun och förvaltningsomrÃ¥de',\r\n 'searchableSelect.noOptionsMessage.en': 'No options',\r\n 'searchableSelect.noOptionsMessage.no': 'Ingen valg',\r\n 'searchableSelect.noOptionsMessage.sv': 'Ingen vald',\r\n 'searchbar.placeholder.en': 'Search by individual, ID or barcode',\r\n 'searchbar.placeholder.no': 'Søk pÃ¥ individ, ID eller strekkode',\r\n 'searchbar.placeholder.sv': 'Sök efter individ, ID eller streckkod',\r\n 'searchbar.label.en': 'Carnivore individual and ID-search',\r\n 'searchbar.label.no': 'Individ og ID-søk',\r\n 'searchbar.label.sv': 'Individ och ID-sök',\r\n 'searchresultItem.descriptionText.en': 'Injured by',\r\n 'searchresultItem.descriptionText.no': 'Skadet av',\r\n 'searchresultItem.descriptionText.sv': 'Skadad av',\r\n 'searchresultList.hits.en': 'hits',\r\n 'searchresultList.hits.no': 'treff',\r\n 'searchresultList.hits.sv': 'träff',\r\n 'searchresultList.loading.en': 'Loading',\r\n 'searchresultList.loading.no': 'Laster',\r\n 'searchresultList.loading.sv': 'Laddar',\r\n 'searchresultList.noResult.en': 'No hits',\r\n 'searchresultList.noResult.no': 'Søket ga ingen resultater',\r\n 'searchresultList.noResult.sv': 'Ingen träff',\r\n 'searchresultList.showMore.en': 'Show more',\r\n 'searchresultList.showMore.no': 'Vis flere',\r\n 'searchresultList.showMore.sv': 'Visa fler',\r\n 'searchresultList.showResults.en': 'Showing results',\r\n 'searchresultList.showResults.no': 'Viser resultat',\r\n 'searchresultList.showResults.sv': 'Visar resultat',\r\n 'searchresultList.showFilter.en': 'Show searchfilter',\r\n 'searchresultList.showFilter.no': 'Vis søkefilter',\r\n 'searchresultList.showFilter.sv': 'Visa sökfilter',\r\n 'searchresultList.showMap.en': 'Show map',\r\n 'searchresultList.showMap.no': 'Vis kart',\r\n 'searchresultList.showMap.sv': 'Visa karta',\r\n 'searchresultList.ofTotal.en': 'of',\r\n 'searchresultList.ofTotal.no': 'av',\r\n 'searchresultList.ofTotal.sv': 'av',\r\n 'searchresultList.backToSearch.en': 'Back to search',\r\n 'searchresultList.backToSearch.no': 'Tilbake til søk',\r\n 'searchresultList.backToSearch.sv': 'Tillbaka till sök',\r\n 'searchresult.mailBody.en': 'This is a link to Rovbase%0d%0a',\r\n 'searchresult.mailBody.no': 'Her følger link til Rovbase%0d%0a',\r\n 'searchresult.mailBody.sv': 'Länk till Rovbase%0d%0a',\r\n 'searchType.barcode.en': 'barcode',\r\n 'searchType.barcode.no': 'strekkoden',\r\n 'searchType.barcode.sv': 'streckkoden',\r\n 'searchType.id.en': 'ID',\r\n 'searchType.id.no': 'ID',\r\n 'searchType.id.sv': 'ID',\r\n 'searchType.search.en': 'search',\r\n 'searchType.search.no': 'søket',\r\n 'searchType.search.sv': 'söket',\r\n 'shareSite.feedback.en': 'Link is copied to clipboard',\r\n 'shareSite.feedback.no': 'Lenken er kopiert til utklippstavlen',\r\n 'shareSite.feedback.sv': 'Kopierat till urklipp',\r\n 'shareSite.share.en': 'Share',\r\n 'shareSite.share.no': 'Del',\r\n 'shareSite.share.sv': 'Dela',\r\n 'sidepanel.resultList.en': 'Show results in list',\r\n 'sidepanel.resultList.no': 'Vis resultat i liste',\r\n 'sidepanel.resultList.sv': 'Visa resultat i listan',\r\n 'sidepanel.resultMap.en': 'Show results in map',\r\n 'sidepanel.resultMap.no': 'Vis resultat i kart',\r\n 'sidepanel.resultMap.sv': 'Visa resultat i karta',\r\n 'systemvarsel.tileLoadError.no': 'Vi opplever dessverre problemer med Ã¥ vise enkelte bakgrunnskart. Beklager de ulempene dette medfører',\r\n 'systemvarsel.tileLoadError.en': 'Unfortunately, we are experiencing problems with displaying some background maps. Sorry for the inconvenience this causes',\r\n 'systemvarsel.tileLoadError.sv': 'Vi opplever dessverre problemer med Ã¥ vise enkelte bakgrunnskart. Beklager de ulempene dette medfører',\r\n 'layerSelector.beitelag.en': 'Beitelag map',\r\n 'layerSelector.beitelag.no': 'Beitelagskart',\r\n 'layerSelector.beitelag.sv': 'Beteslagskarta',\r\n 'layerSelector.color.en': 'Color',\r\n 'layerSelector.color.no': 'Farge',\r\n 'layerSelector.color.sv': 'Färg',\r\n 'layerSelector.forvaltningsomrade.en': 'Management areas',\r\n 'layerSelector.forvaltningsomrade.no': 'ForvaltningsomrÃ¥der',\r\n 'layerSelector.forvaltningsomrade.sv': 'FörvaltningsomrÃ¥den',\r\n 'layerSelector.maptype.en': 'Map type',\r\n 'layerSelector.maptype.no': 'Karttype',\r\n 'layerSelector.maptype.sv': 'Kartskikt',\r\n 'layerSelector.mapdetails.en': 'Map details',\r\n 'layerSelector.mapdetails.no': 'Kartdetaljer',\r\n 'layerSelector.mapdetails.sv': 'Kartdetaljer',\r\n 'layerSelector.reinbeitedistrikt.en': 'Reindeer husbandry district',\r\n 'layerSelector.reinbeitedistrikt.no': 'Reinbeitedistrikt',\r\n 'layerSelector.reinbeitedistrikt.sv': 'Renbetesdistrikt',\r\n 'layerSelector.reinbeiteomrade.en': 'Reindeer husbandry area',\r\n 'layerSelector.reinbeiteomrade.no': 'ReinbeiteomrÃ¥de',\r\n 'layerSelector.reinbeiteomrade.sv': 'RenbetesomrÃ¥den',\r\n 'layerSelector.reindrift.en': 'Reindeer husbandry',\r\n 'layerSelector.reindrift.no': 'Reindrift',\r\n 'layerSelector.reindrift.sv': 'Renskötsel',\r\n 'layerSelector.samebygrense.en': 'Sami villages',\r\n 'layerSelector.samebygrense.no': 'Samebygrense',\r\n 'layerSelector.samebygrense.sv': 'Samebygränser',\r\n 'layerSelector.satellite.en': 'Satellite',\r\n 'layerSelector.satellite.no': 'Flyfoto',\r\n 'layerSelector.satellite.sv': 'Ortofoto',\r\n 'layerSelector.managementAreas.en': 'Management areas',\r\n 'layerSelector.managementAreas.no': 'ForvaltningsomrÃ¥der',\r\n 'layerSelector.managementAreas.sv': 'FörvaltningsomrÃ¥den (Norge)',\r\n 'layerSelector.basemap.en': 'Basemap',\r\n 'layerSelector.basemap.no': 'Bakgrunnskart',\r\n 'layerSelector.basemap.sv': 'Bakgrundskarta',\r\n 'layerSelector.samebygrense.info.en': 'Boundary lines between Saami villages (Sweden)' ,\r\n 'layerSelector.samebygrense.info.no': 'Grenselinjer mellom samebyer', \r\n 'layerSelector.samebygrense.info.sv': 'Byskiljande gränslinjer mellan samebyar som i administrativ ordning fastställts och vunnit laga kraft' ,\r\n 'theCarnivore.bear.en': 'The bear',\r\n 'theCarnivore.bear.no': 'Bjørnen',\r\n 'theCarnivore.bear.sv': 'Björnen',\r\n 'theCarnivore.goldenEagle.en': 'The golden eagle',\r\n 'theCarnivore.goldenEagle.no': 'Kongeørnen',\r\n 'theCarnivore.goldenEagle.sv': 'Kungsörnen',\r\n 'theCarnivore.lynx.en': 'The lynx',\r\n 'theCarnivore.lynx.no': 'Gaupen',\r\n 'theCarnivore.lynx.sv': 'Lodjuret',\r\n 'theCarnivore.unknownProtected.en': 'Unknown protected',\r\n 'theCarnivore.unknownProtected.no': 'Ukjent fredet',\r\n 'theCarnivore.unknownProtected.sv': 'Okänt fredat',\r\n 'theCarnivore.wolf.en': 'The wolf',\r\n 'theCarnivore.wolf.no': 'Ulven',\r\n 'theCarnivore.wolf.sv': 'Vargen',\r\n 'theCarnivore.wolverine.en': 'The wolverine',\r\n 'theCarnivore.wolverine.no': 'Jerven',\r\n 'theCarnivore.wolverine.sv': 'Järven',\r\n 'theCarnivore.bear.female.en': 'the female bear',\r\n 'theCarnivore.bear.female.no': 'hunnbjørnen',\r\n 'theCarnivore.bear.female.sv': 'björnhona',\r\n 'theCarnivore.bear.male.en': 'the male bear',\r\n 'theCarnivore.bear.male.no': 'hannbjørnen',\r\n 'theCarnivore.bear.male.sv': 'björnhane',\r\n 'theCarnivore.bear.unknown.en': 'the bear',\r\n 'theCarnivore.bear.unknown.no': 'bjørnen',\r\n 'theCarnivore.bear.unknown.sv': 'björnen',\r\n 'theCarnivore.lynx.female.en': 'the female lynx',\r\n 'theCarnivore.lynx.female.no': 'hunngaupen',\r\n 'theCarnivore.lynx.female.sv': 'lodjurhona',\r\n 'theCarnivore.lynx.male.en': 'the male lynx',\r\n 'theCarnivore.lynx.male.no': 'hanngaupen',\r\n 'theCarnivore.lynx.male.sv': 'lodjurhane',\r\n 'theCarnivore.lynx.unknown.en': 'the lynx',\r\n 'theCarnivore.lynx.unknown.no': 'gaupen',\r\n 'theCarnivore.lynx.unknown.sv': 'lodjuret',\r\n 'theCarnivore.wolf.female.en': 'the female wolf',\r\n 'theCarnivore.wolf.female.no': 'hunnulven',\r\n 'theCarnivore.wolf.female.sv': 'varghona',\r\n 'theCarnivore.wolf.male.en': 'the male wolf',\r\n 'theCarnivore.wolf.male.no': 'hannulven',\r\n 'theCarnivore.wolf.male.sv': 'varghane',\r\n 'theCarnivore.wolf.unknown.en': 'the wolf',\r\n 'theCarnivore.wolf.unknown.no': 'ulven',\r\n 'theCarnivore.wolf.unknown.sv': 'vargen',\r\n 'theCarnivore.wolverine.female.en': 'the female wolverine',\r\n 'theCarnivore.wolverine.female.no': 'hunnjerven',\r\n 'theCarnivore.wolverine.female.sv': 'järvhona',\r\n 'theCarnivore.wolverine.male.en': 'the male wolverine',\r\n 'theCarnivore.wolverine.male.no': 'hannjerven',\r\n 'theCarnivore.wolverine.male.sv': 'järvhane',\r\n 'theCarnivore.wolverine.unknown.en': 'the wolverine',\r\n 'theCarnivore.wolverine.unknown.no': 'jerven',\r\n 'theCarnivore.wolverine.unknown.sv': 'järven',\r\n 'tooltip.dnaAnalysed.en': 'The sample has been analysed and is in form of a',\r\n 'tooltip.dnaAnalysed.no': 'Prøven er analysert og tilhører en',\r\n 'tooltip.dnaAnalysed.sv': 'Analysresultatet visar att det är en',\r\n 'tooltip.dnaAnalysed.nonFunctioning.en': 'The sample has been analysed, but was non-functioning.',\r\n 'tooltip.dnaAnalysed.nonFunctioning.no': 'Prøven er analysert, men ikke-fungerende.',\r\n 'tooltip.dnaAnalysed.nonFunctioning.sv': 'DNA-analysen gav inget resultat.',\r\n 'tooltip.dnaBarcode.en': 'The DNA-sample barcode is',\r\n 'tooltip.dnaBarcode.no': 'Strekkoden for DNA-prøven er',\r\n 'tooltip.dnaBarcode.sv': 'Streckkoden för DNA-provet är',\r\n 'tooltip.dnaIdentity.en': 'is identified as',\r\n 'tooltip.dnaIdentity.no': 'er identifisert som',\r\n 'tooltip.dnaIdentity.sv': 'är identifierad som',\r\n 'tooltip.dnafrom.en': 'from',\r\n 'tooltip.dnafrom.no': 'fra',\r\n 'tooltip.dnafrom.sv': 'med art bedömd i fält som',\r\n 'tooltip.dnaphrase.en': 'A DNA-sample is submitted as',\r\n 'tooltip.dnaphrase.no': 'En DNA-prøve er levert inn som',\r\n 'tooltip.dnaphrase.sv': 'Ett DNA-prov i form av',\r\n 'tooltip.east.en': 'East',\r\n 'tooltip.east.no': 'Øst',\r\n 'tooltip.east.sv': 'Öst',\r\n 'tooltip.individual.en': 'Carnivore individual ',\r\n 'tooltip.individual.no': 'Rovdyrindivid ',\r\n 'tooltip.individual.sv': 'Rovdjursindivid ',\r\n 'tooltip.individualPhrase.en': ' has been at the location.',\r\n 'tooltip.individualPhrase.no': ' har vært pÃ¥ stedet.',\r\n 'tooltip.individualPhrase.sv': ' har varit pÃ¥ platsen.',\r\n 'tooltip.nextPage.en': 'Next page',\r\n 'tooltip.nextPage.no': 'Neste side',\r\n 'tooltip.nextPage.sv': 'Nästa sida',\r\n 'tooltip.nextPost.en': 'Next post',\r\n 'tooltip.nextPost.no': 'Neste post',\r\n 'tooltip.nextPost.sv': 'Nästa post',\r\n 'tooltip.north.en': 'North',\r\n 'tooltip.north.no': 'Nord',\r\n 'tooltip.north.sv': 'Norr',\r\n 'tooltip.of.en': 'of',\r\n 'tooltip.of.no': 'av',\r\n 'tooltip.of.sv': 'av',\r\n 'tooltip.previousPage.en': 'Previous page',\r\n 'tooltip.previousPage.no': 'Forrige side',\r\n 'tooltip.previousPage.sv': 'FöregÃ¥ende sida',\r\n 'tooltip.previousPost.en': 'Previous post',\r\n 'tooltip.previousPost.no': 'Forrige post',\r\n 'tooltip.previousPost.sv': 'FöregÃ¥ende post',\r\n 'tooltip.sampleType.blood.en': 'Blood',\r\n 'tooltip.sampleType.blood.no': 'Blod',\r\n 'tooltip.sampleType.blood.sv': 'Blod',\r\n 'tooltip.sampleType.hair.en': 'Hair',\r\n 'tooltip.sampleType.hair.no': 'HÃ¥r',\r\n 'tooltip.sampleType.hair.sv': 'HÃ¥r',\r\n 'tooltip.sampleType.saliva.en': 'Saliva',\r\n 'tooltip.sampleType.saliva.no': 'Spytt',\r\n 'tooltip.sampleType.saliva.sv': 'Saliv',\r\n 'tooltip.sampleType.scat.en': 'Scat',\r\n 'tooltip.sampleType.scat.no': 'Ekskrement',\r\n 'tooltip.sampleType.scat.sv': 'Spillning',\r\n 'tooltip.sampleType.scentMarking.en': 'Scent marking',\r\n 'tooltip.sampleType.scentMarking.no': 'Sekret',\r\n 'tooltip.sampleType.scentMarking.sv': 'Sekret',\r\n 'tooltip.sampleType.tissue.en': 'Tissue',\r\n 'tooltip.sampleType.tissue.no': 'Vev',\r\n 'tooltip.sampleType.tissue.sv': 'Vävnad',\r\n 'tooltip.sampleType.urine.en': 'Urine',\r\n 'tooltip.sampleType.urine.no': 'Urin',\r\n 'tooltip.sampleType.urine.sv': 'Urin',\r\n 'tooltip.copyLink.en': 'Copy link',\r\n 'tooltip.copyLink.no': 'Kopier lenke',\r\n 'tooltip.copyLink.sv': 'Kopiera länk',\r\n 'tooltip.mailLink.en': 'Send by e-mail',\r\n 'tooltip.mailLink.no': 'Send pÃ¥ e-post',\r\n 'tooltip.mailLink.sv': 'Skicka som e-post',\r\n 'tooltip.animalDamaged.en': 'One/an animal is ',\r\n 'tooltip.animalDamaged.no': 'Ett dyr er ',\r\n 'tooltip.animalDamaged.sv': 'Ett djur ',\r\n 'compensation.header.en': 'Compensation for ',\r\n 'compensation.header.no': 'Erstatning for ',\r\n 'compensation.header.sv': 'Ersättning för rovdjurens skador pÃ¥ ',\r\n 'compensation.messageAutosearch.en': 'Changing the search criterias will automatically update the page',\r\n 'compensation.messageAutosearch.no': 'Siden oppdateres automatisk ved endring av søkekriteriene i dette panelet',\r\n 'compensation.messageAutosearch.sv': 'Sidan uppdateras automatiskt när sökkriterierna i denna panel ändras',\r\n 'compensation.sheepSeason.en': 'Season',\r\n 'compensation.sheepSeason.no': 'Beitesesong',\r\n 'compensation.sheepSeason.sv': 'Betessäsong',\r\n 'compensation.reindeerSeason.en': 'Season',\r\n 'compensation.reindeerSeason.no': 'ReindriftsÃ¥r',\r\n 'compensation.reindeerSeason.sv': 'RenskötselÃ¥r',\r\n 'compensation.from.en': 'From',\r\n 'compensation.from.no': 'Fra',\r\n 'compensation.from.sv': 'FrÃ¥n',\r\n 'compensation.to.en': 'To',\r\n 'compensation.to.no': 'Til',\r\n 'compensation.to.sv': 'Till',\r\n 'damageState.dead.en': 'killed',\r\n 'damageState.dead.no': 'drept',\r\n 'damageState.dead.sv': 'har dödats',\r\n 'damageState.damagedAndEuthanized.en': 'euthanized',\r\n 'damageState.damagedAndEuthanized.no': 'skadd og avlivet',\r\n 'damageState.damagedAndEuthanized.sv': 'har avlivats',\r\n 'damageState.damagedNotEuthanized.en': 'injured',\r\n 'damageState.damagedNotEuthanized.no': 'skadd og ikke avlivet',\r\n 'damageState.damagedNotEuthanized.sv': 'har skadats',\r\n 'damageState.missing.en': 'missing',\r\n 'damageState.missing.no': 'savnet',\r\n 'damageState.missing.sv': 'saknas',\r\n 'inspectedBy.sno.en': 'The damage was inspected by SNO',\r\n 'inspectedBy.sno.no': 'Skaden er undersøkt av SNO',\r\n 'inspectedBy.sno.sv': 'Skadan är undersökt av SNO',\r\n 'inspectedBy.sysselmester.en': 'The damage was inspected by Sysselmesteren',\r\n 'inspectedBy.sysselmester.no': 'Skaden er undersøkt av Sysselmesteren',\r\n 'inspectedBy.sysselmester.sv': 'Skadan är undersökt av Sysselmesteren',\r\n 'inspectedBy.lansstyrelsen.en': 'The damage was inspected by Länsstyrelsen',\r\n 'inspectedBy.lansstyrelsen.no': 'Skaden er undersøkt av Länsstyrelsen',\r\n 'inspectedBy.lansstyrelsen.sv': 'Skadan är undersökt av länsstyrelsen',\r\n 'inspectedBy.samiVillage.en': 'The damage was inspected by a sami village',\r\n 'inspectedBy.samiVillage.no': 'Skaden er undersøkt av en sameby',\r\n 'inspectedBy.samiVillage.sv': 'Skadan är undersökt av en sameby',\r\n 'inspectedBy.notControlledInField.en': 'The damage was not controlled in field',\r\n 'inspectedBy.notControlledInField.no': 'Rapport ikke kontrollert pÃ¥ stedet',\r\n 'inspectedBy.notControlledInField.sv': 'Rapport om skada har inte följts upp pÃ¥ plats',\r\n\r\n 'uu.close.en': 'Close',\r\n 'uu.close.no': 'Lukk',\r\n 'uu.close.sv': 'Stäng',\r\n 'uu.clear.en': 'Clear',\r\n 'uu.clear.no': 'Nullstill',\r\n 'uu.clear.sv': 'Rensa',\r\n 'uu.expand.en': 'expand',\r\n 'uu.expand.no': 'utvid',\r\n 'uu.expand.sv': 'expandera',\r\n 'uu.icon.en': 'icon',\r\n 'uu.icon.no': 'ikon',\r\n 'uu.icon.sv': 'ikon',\r\n 'uu.openInNew.en': 'open external link',\r\n 'uu.openInNew.no': 'Ã¥pne lenke til ekstern side',\r\n 'uu.openInNew.sv': 'öppna länk till extern sida',\r\n 'uu.openNewWindow.en': 'opens an external link in a new window',\r\n 'uu.openNewWindow.no': 'Ã¥pner ekstern side i et nytt vindu',\r\n 'uu.openNewWindow.sv': 'öppnar extern sida i ett nytt fönster',\r\n 'uu.openPanel.en': 'open sidepanel',\r\n 'uu.openPanel.no': 'Ã¥pne sidepanel',\r\n 'uu.openPanel.sv': 'öppna sidopanel',\r\n 'uu.closePanel.en': 'close sidepanel',\r\n 'uu.closePanel.no': 'lukke sidepanel',\r\n 'uu.closePanel.sv': 'stänga sidopanel',\r\n \r\n 'tooltip.label.en': 'Tips for the field',\r\n 'tooltip.label.no': 'Tips for feltet',\r\n 'tooltip.label.sv': 'Tips för fältet ',\r\n \r\n};\r\n\r\nconst templates = {\r\n 'dnaInfo.submitted.no': 'En DNA-prøve er levert inn som £observationType£ fra £art£.',\r\n 'dnaInfo.submitted.sv': 'Ett DNA-prov i form av £observationType£ med art bedömd i fält som £art£.',\r\n 'dnaInfo.submitted.en': 'A DNA-sample is submitted as £observationType£ from £art£.',\r\n 'dnaInfo.analysed.no': 'Prøven er analysert og tilhører en £art£.',\r\n 'dnaInfo.analysed.sv': 'Analysresultatet visar att det är en £art£.',\r\n 'dnaInfo.analysed.en': 'The sample has been analysed and is in form of a £art£.',\r\n\r\n 'searchresult.individDescription.en': 'Showing £count£ hit(s) on £individualType£ £individual£',\r\n 'searchresult.individDescription.no': 'Viser £count£ treff pÃ¥ £individualType£ £individual£',\r\n 'searchresult.individDescription.sv': 'Visar £count£ träff pÃ¥ £individualType£ £individual£',\r\n 'searchresult.individDescription.origin.en': 'The animal is £origin£.',\r\n 'searchresult.individDescription.origin.no': 'Dyret er £origin£.',\r\n 'searchresult.individDescription.origin.sv': 'Djuret är £origin£.',\r\n 'searchresult.individDescription.revir.en': ', born in the £revir£-territory',\r\n 'searchresult.individDescription.revir.no': ', født i £revir£-reviret',\r\n 'searchresult.individDescription.revir.sv': ', född i £revir£-reviret',\r\n 'searchresult.specialSearchDescription.en': 'Showing £count£ hit(s) on £searchType£ £searchText£',\r\n 'searchresult.specialSearchDescription.no': 'Viser £count£ treff pÃ¥ £searchType£ £searchText£',\r\n 'searchresult.specialSearchDescription.sv': 'Visar £count£ träff pÃ¥ £searchType£ £searchText£',\r\n 'searchresult.multipleElementsSearch.en': '£element1£, £element2£ and £count£ other elements',\r\n 'searchresult.multipleElementsSearch.no': '£element1£, £element2£ og £count£ andre elementer',\r\n 'searchresult.multipleElementsSearch.sv': '£element1£, £element2£ och £count£ andra sökord',\r\n\r\n 'tooltip.observation.no': '£art£ er observert. £controlType£ Observasjonen er £evaluation£.',\r\n 'tooltip.observation.sv': '£art£ har observerats. £controlType£ Observationen är £evaluation£.',\r\n 'tooltip.observation.en': '£art£ has been observed. £controlType£ The observation is £evaluation£. ',\r\n 'tooltip.observation.error.no': '£art£ er observert. £controlType£ Observasjonen er en feilmelding.',\r\n 'tooltip.observation.error.sv': '£art£ har observerats. £controlType£ Observationen är en felrapport.',\r\n 'tooltip.observation.error.en': '£art£ has been observed. £controlType£ The observation is an erroneous report.',\r\n\r\n 'tooltip.damage.no': '£object£ £damageState£. £inspectedBy£. SkadeÃ¥rsaken er £documentation£. ',\r\n 'tooltip.damage.sv': '£object£ £damageState£. £inspectedBy£. Skadeorsaken är £documentation£. ',\r\n 'tooltip.damage.en': '£object£ £damageState£. £inspectedBy£. The cause of the damage is £documentation£. ',\r\n 'tooltip.damage.area.no': 'Skaden skjedde i £area£.',\r\n 'tooltip.damage.area.sv': 'Skadan skedde i £area£.',\r\n 'tooltip.damage.area.en': 'The damage occured at £area£.',\r\n\r\n 'tooltip.dead.en': 'The animal\\'s sex was £sex£, weight was £weight£, and age was £age£. ',\r\n 'tooltip.dead.no': 'Dyrets kjønn var £sex£, vekt var £weight£ og alder var £age£. ',\r\n 'tooltip.dead.sv': 'Djurets kön var £sex£, vikt var £weight£ och Ã¥lder är £age£. ',\r\n 'tooltip.dead.identity.en': '£theAnimal£ is identified as ',\r\n 'tooltip.dead.identity.no': '£theAnimal£ er identifisert som ',\r\n 'tooltip.dead.identity.sv': '£theAnimal£ är identifierad som ',\r\n\r\n 'tooltip.mailBody.en': 'This is a link to \"£title£\" in Rovbase%0d%0a',\r\n 'tooltip.mailBody.no': 'Her følger link til \"£title£\" i Rovbase%0d%0a',\r\n 'tooltip.mailBody.sv': 'Länk till \"£title£\" i Rovbase%0d%0a',\r\n\r\n 'dateLabel.dateMustBeAfter.en': 'Date must be after £date£',\r\n 'dateLabel.dateMustBeAfter.no': 'Dato mÃ¥ være etter £date£',\r\n 'dateLabel.dateMustBeAfter.sv': 'Datum fÃ¥r inte vara före £date£',\r\n 'dateLabel.dateMustBeBefore.en': 'Date must be before £date£',\r\n 'dateLabel.dateMustBeBefore.no': 'Dato mÃ¥ være før £date£',\r\n 'dateLabel.dateMustBeBefore.sv': 'Datum fÃ¥r inte vara efter £date£',\r\n};\r\n\r\n// Hjelpefunksjoner\r\nexport type LangProp = {\r\n language: Language;\r\n};\r\n\r\nconst get = (langId: Language, id: string): string => {\r\n const stringId = `${id}.${langId}`;\r\n if (i18n[stringId]) {\r\n return i18n[stringId];\r\n } else {\r\n /* eslint-disable no-console */\r\n /* eslint-disable no-undef */\r\n console.warn(`Could not load language for ${id}`);\r\n return '';\r\n }\r\n};\r\n\r\nconst getTemplate = (langId: Language, id: string, input: any): string => {\r\n const stringId = `${id}.${langId}`;\r\n if (templates[stringId]) {\r\n const test = templates[stringId].replace(RegExp('£\\\\w*£', 'gi'), function(i: string): string {\r\n let a = i.slice(1, i.length - 1);\r\n if (input[a] !== undefined) {\r\n a = input[a];\r\n }\r\n return a;\r\n });\r\n return test;\r\n } else {\r\n /* eslint-disable no-console */\r\n /* eslint-disable no-undef */\r\n console.warn(`Could not load language for ${id}`);\r\n return '';\r\n }\r\n};\r\n\r\ntype StateProps = {\r\n language: Language;\r\n};\r\n\r\ntype OwnProps = {\r\n textId: string;\r\n};\r\n\r\ntype Props = StateProps & OwnProps;\r\n\r\nconst getTest = (props: Props): string => {\r\n const stringId = `${props.textId}.${props.language}`;\r\n if (i18n[stringId]) {\r\n return i18n[stringId];\r\n } else {\r\n /* eslint-disable no-console */\r\n /* eslint-disable no-undef */\r\n console.warn(`Could not load language for ${props.textId}`);\r\n return '';\r\n }\r\n};\r\n\r\nconst mapStateToProps = (appState: ApplicationState): StateProps => {\r\n return {\r\n language: appState.settings.language,\r\n };\r\n};\r\n\r\n// export const dd = connect(mapStateToProps)(getTest);\r\n\r\nexport const connectedContainer = connect(mapStateToProps, { getTest });\r\n\r\nexport function useLanguage(lang?: Language): (str: string) => string {\r\n const language: Language = lang || useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n return curry(get)(language);\r\n}\r\n\r\nexport function useLanguageTemplate(): (str: string, input: any) => string {\r\n const language = useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n return curry(getTemplate)(language);\r\n}\r\n\r\nexport const L = curry(get);\r\nexport const LT = curry(getTemplate);\r\nexport default L;\r\n\r\n// export type TranslationContextValue = {\r\n// translation: Translation;\r\n// setLanguage: (language: Language) => void;\r\n// }\r\n\r\n// export const TranslationContext = createContext<TranslationContextValue>(\r\n// defaultContext()\r\n// );\r\n\r\n// export const useTranslation = (): TranslationContextValue => useContext(TranslationContext);\r\n","import React, {ReactElement, ReactNode} from \"react\";\r\nimport OpenInNewIcon from \"@material-ui/icons/OpenInNew\";\r\nimport {useLanguage} from \"../../i18n\";\r\n\r\ntype LinkProps = {\r\n href: string;\r\n children?: ReactNode;\r\n}\r\n\r\nexport function ExternalLink (props: LinkProps): ReactElement {\r\n const l = useLanguage();\r\n return (\r\n <a href={props.href}\r\n target=\"_blank\"\r\n rel=\"noopener\"\r\n title={props.href}\r\n >\r\n {props.children}\r\n <OpenInNewIcon\r\n role=\"img\"\r\n className=\"open-in-new\"\r\n aria-label={l('uu.openNewWindow')}\r\n titleAccess={l('uu.openNewWindow')}\r\n />\r\n </a>\r\n )\r\n}","import React, {ReactElement} from 'react';\r\nimport {Link} from 'react-router-dom';\r\nimport {ExternalLink} from '../../components/externalLInk/externalLink';\r\nimport {useLanguage} from '../../i18n';\r\n\r\nexport function AboutContentSE(): ReactElement {\r\n const l = useLanguage();\r\n return (\r\n <>\r\n <header>\r\n <h2>Om Rovbase</h2>\r\n <p className=\"about-ingress\">\r\n PÃ¥ Rovbase.se visas uppgifter frÃ¥n rovdjursinventeringar, besiktningar av skador orsakade av rovdjur\r\n och om rovdjur som fällts vid jakt eller som dött av annan orsak. Uppgifterna rör främst de stora\r\n rovdjuren björn, järv, lodjur och varg.\r\n </p>\r\n </header>\r\n <p>\r\n Databasen Rovbase är ett viktigt verktyg i förvaltningen av de stora rovdjuren. I databasen lagras\r\n uppgifter om rovdjurens förekomst, om skador rovdjuren orsakar och om döda rovdjur.\r\n Lagringen av uppgifter görs av Statens naturoppsyn (SNO), Veterinærinstituttet, länsstyrelserna,\r\n Statens veterinärmedicinska anstalt, laboratorier som utför DNA-analyser, med flera.\r\n Uppgifterna i Rovbase ligger till grund för beräkningar av rovdjursbestÃ¥ndens storlek och utbredning\r\n samt för statistik över skador. \r\n </p>\r\n <p>\r\n Mer om rovdjursförvaltningen och vem som gör vad kan du läsa pÃ¥{' '}\r\n <ExternalLink href={'https://www.miljodirektoratet.no'}>Miljødirektoratets</ExternalLink>{' '}\r\n och <ExternalLink href={'https://www.naturvardsverket.se/'}>NaturvÃ¥rdsverkets</ExternalLink>{' '}\r\n webbplatser.\r\n </p>\r\n <h3>Vilka uppgifter finns i Rovbase?</h3>\r\n <p>\r\n I Rovbase kan du ta del av uppgifter frÃ¥n rovdjursinventeringar,\r\n om skador orsakade av rovdjur och om döda rovdjur. \r\n Personuppgifter och uppgifter som omfattas av sekretess visas inte.\r\n </p>\r\n <h4>Inventering av de stora rovdjuren</h4>\r\n <p>\r\n Inventering av järv, lodjur och varg sker enligt metodik som är gemensam för Norge och Sverige, medan \r\n inventeringen av björn sker pÃ¥ liknande sätt i de bÃ¥da länderna. Inventeringsmetodiken ingÃ¥r i Norges \r\n nationella övervakningsprogram för rovdjur. \r\n Läs mer pÃ¥ <ExternalLink href={'https://www.miljodirektoratet.no'}>Miljødirektoratets</ExternalLink>\r\n {' '}och <ExternalLink href={'https://www.naturvardsverket.se/'}>NaturvÃ¥rdsverkets</ExternalLink>\r\n {' '}webbplatser.\r\n </p>\r\n <p>\r\n I Rovbase hittar du uppgifter om rovdjursobservationer gjorda av inventeringspersonal frÃ¥n SNO, \r\n länsstyrelsen eller de svenska samebyarna. En stor del av uppgifterna utgörs av observationer som \r\n rapporterats till inventeringspersonal som därefter bedömt riktigheten i uppgifterna. I Rovbase finns \r\n även de prover av biologiskt material som samlats in i samband med inventering. Proverna kan exempelvis \r\n vara frÃ¥n spillning, urin eller hÃ¥r. När DNA analyserats i proverna visas även laboratoriets analyssvar \r\n för respektive prov.\r\n </p>\r\n <p>\r\n Fynd gjorda vid lyor eller av järv under perioden 1 mars – 31 aug eller av varg under perioden 1 maj –\r\n 31 juli visas inte.\r\n </p>\r\n <h4>Döda rovdjur </h4>\r\n <p>\r\n I Rovbase hittar du uppgifter om djur av arterna björn, järv, lodjur och varg som fällts vid jakt eller \r\n som dött av annan orsak. I mÃ¥nga fall utförs Ã¥ldersbestämning av Norsk institutt for naturforskning i \r\n Norge eller SVA i Sverige, och DNA i vävnadsprover frÃ¥n djuren analyseras för att fastställa vilken \r\n rovdjursindivid det handlar om. Dessa uppgifter framgÃ¥r i respektive post.\r\n </p>\r\n <p>\r\n Sammanställning av antal djur som fällts vid jakt eller hittats döda av annan orsak finns pÃ¥ sidan{' '} \r\n <Link to=\"/rapport/doderovdyr\">{l('menu.reportDodeRovdyr')}</Link>.\r\n </p>\r\n <h4>Skador av stora rovdjur</h4>\r\n <p>\r\n I Rovbase hittar du uppgifter om skador pÃ¥ tamdjur, orsakade av björn, järv, kungsörn, lodjur eller \r\n varg och som besiktigats av SNO (Norge), länsstyrelsen eller samebymedlemmar (Sverige).\r\n I Sverige är endast skador pÃ¥ ren tillgängliga i sök-funktionen och i kartan pÃ¥ Rovbase.se.\r\n </p>\r\n <p>\r\n Observera att skador pÃ¥ ren anmäls och besiktigas i liten utsträckning i Sverige. Det beror pÃ¥ att \r\n ersättningen för rovdjurens skador pÃ¥ ren främst bygger pÃ¥ hur mÃ¥nga rovdjur som finns inom respektive \r\n samebys marker och inte pÃ¥ enskilda skador.\r\n </p>\r\n \r\n <p>\r\n Statistik för Sverige över skador orsakade av stora rovdjur pÃ¥ annat än ren finns pÃ¥ sidan{' '}\r\n <Link to=\"/rapport/rovviltskade\">{l('menu.reportRovviltskade')}</Link>.\r\n </p>\r\n \r\n <p>\r\n Statistik för Norge över skador inom fÃ¥r- och rennäringen orsakade av rovdjur samt utbetalade \r\n ersättningsbelopp finns pÃ¥ sidan <Link to={'/erstatning/sau'}>Ersättning fÃ¥r</Link> respektive{' '} \r\n <Link to={'/erstatning/rein'}>Ersättning ren</Link>.\r\n </p>\r\n <p>\r\n Mer om ersättningssystemen för skador orsakade av rovdjur finns att läsa pÃ¥ {' '}\r\n <ExternalLink href=\"https://www.miljodirektoratet.no\">Miljødirektoratets</ExternalLink>{', '}\r\n <ExternalLink href=\"https://www.naturvardsverket.se\">NaturvÃ¥rdsverkets</ExternalLink>{', '}\r\n <ExternalLink href=\"https://www.sametinget.no\">Sametingets</ExternalLink>{' och '}\r\n <ExternalLink href=\"https://www.lansstyrelsen.se\">länsstyrelsernas</ExternalLink> webbplatser.\r\n </p>\r\n </>\r\n );\r\n}\r\n","import React, {Fragment, ReactElement} from 'react';\r\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\r\nimport {AboutRovbaseData} from './about';\r\nimport {NavLink, Link} from 'react-router-dom';\r\nimport {ExternalLink} from '../../components/externalLInk/externalLink';\r\nimport {useLanguage} from '../../i18n';\r\n\r\ntype AboutNOProps = {\r\n aboutRovbaseData: AboutRovbaseData\r\n}\r\n\r\nexport function AboutContentNO(props: AboutNOProps): ReactElement {\r\n const l = useLanguage();\r\n return (\r\n <>\r\n <header>\r\n <h2>Om Rovbase</h2>\r\n <p className=\"about-ingress\">\r\n Her viser vi geografiske registreringer av observasjoner og skader etter rovdyr i Norge og Sverige. \r\n Det er i hovedsak registreringer av de fire store rovdyrene ulv, bjørn, gaupe og jerv. \r\n Rovbase inneholder ogsÃ¥ registreringer av skader pÃ¥ført av kongeørn og ukjent fredet rovvilt.\r\n </p>\r\n </header>\r\n <p>\r\n Rovbase er et viktig verktøy for forvaltning av de store rovdyrene. Mer om forvaltningen og hvem som\r\n gjør hva kan du lese pÃ¥\r\n <ExternalLink href={'https://www.miljodirektoratet.no'}>Miljødirektoratets</ExternalLink> og{' '} \r\n <ExternalLink href={'https://www.naturvardsverket.se/'}>NaturvÃ¥rdsverkets</ExternalLink> nettsteder, \r\n eller hos respektive statsforvaltere eller länsstyrelse.\r\n </p>\r\n <p>\r\n En stor del av informasjonen i Rovbase er basert pÃ¥ opplysninger og tips fra lokale kilder og\r\n enkeltpersoner, og er et viktig bidrag til kunnskapen om utbredelsen av rovdyrene.\r\n Rovbase inneholder ogsÃ¥ informasjon om organiserte registreringer gjennomført av feltpersonell og \r\n laboratorieanalyser av prøvefunn. Dette omfatter blant annet:\r\n </p>\r\n <ul className=\"info-list\">\r\n <li>Undersøkelser av husdyr og tamrein, skadet eller drept av rovdyr.</li>\r\n <li>Spor og sportegn fra rovdyr som er undersøkt og kvalitetssikret</li>\r\n <li>Ekskrement og hÃ¥rprøver fra rovdyr, samlet inn av organisert feltpersonell eller \r\n forskningsprosjekt</li>\r\n </ul>\r\n \r\n <p>\r\n I Rovbase er det ogsÃ¥ tilgjengelig en oversikt over erstatningstall for tapt sau, lam og rein i Norge. \r\n Innholdet i Rovbase oppdateres av Statsforvalteren i respektive fylker, Statens naturoppsyn (SNO), og \r\n Norsk institutt for naturforskning (NINA), i henhold til Norges nasjonale overvÃ¥kingsprogram for \r\n rovvilt. Detaljer om det nasjonale overvÃ¥knings­programmet og rapporter fra overvÃ¥kningen finnes pÃ¥{' '}\r\n <ExternalLink href={'https://rovdata.no/'}>Rovdata</ExternalLink> sitt nettsted.\r\n </p>\r\n <p>\r\n NaturvÃ¥rdsverket i Sverige samler inn data om rovdyrene med samme metodikk, via respektive länsstyrelser\r\n i Sverige. I Sverige er bare skader pÃ¥ rein tilgjengelig i søkefunksjon og kartet pÃ¥ rovbase.no.\r\n Skader pÃ¥ rein rapporteres og undersøkes i liten utstrekning i Sverige.\r\n Det skyldes at erstatning for rovdyrskader pÃ¥ rein baseres pÃ¥ hvor mange rovdyr som er i respektive\r\n samebys areal, og ikke pÃ¥ dokumenterte kadaver. Statistikk for skader forÃ¥rsaket av store rovdyr pÃ¥ \r\n annet enn tamrein i Sverige finnes pÃ¥ menyvalget{' '}\r\n <Link to=\"/rapport/rovviltskade\">{l('menu.reportRovviltskade')}</Link>.\r\n </p>\r\n <p>\r\n Personopplysninger og sensitive opplysninger om artene vises ikke.\r\n </p>\r\n \r\n <h3>Innhold i Rovbase</h3>\r\n <div className=\"about-statistics\">\r\n <span>Rovbase kartløsning</span>\r\n <ul className=\"statistics-list\">\r\n {props.aboutRovbaseData && (\r\n <Fragment>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreObserved.toLocaleString()}</span>\r\n <span>Observasjoner av rovdyr</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreDamageSheep.toLocaleString()}</span>\r\n <span>Sau skadet av rovdyr</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreDamageReindeer.toLocaleString()}</span>\r\n <span>Rein skadet av rovdyr</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreDead.toLocaleString()}</span>\r\n <span>Døde rovdyr</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.dnaSamples.toLocaleString()}</span>\r\n <span>DNA-prøver</span>\r\n </li>\r\n </Fragment>\r\n )}\r\n </ul>\r\n </div>\r\n <p>\r\n <span>Har du opplysninger Ã¥ bidra med, ta gjerne </span>\r\n <NavLink to=\"/kontakt\" activeClassName=\"selected\" accessKey=\"7\">\r\n kontakt med oss\r\n </NavLink>\r\n </p>\r\n </>\r\n );\r\n}\r\n","import React, {Fragment, ReactElement} from \"react\";\r\nimport NavigateNextIcon from \"@material-ui/icons/NavigateNext\";\r\nimport {AboutRovbaseData} from \"./about\";\r\n\r\ntype AboutENProps = {\r\n aboutRovbaseData: AboutRovbaseData\r\n}\r\n\r\nexport function AboutContentEN(props: AboutENProps): ReactElement {\r\n return (\r\n <>\r\n <header>\r\n <h2>About Rovbase</h2>\r\n <p className=\"about-ingress\">\r\n Rovbase is a management tool to accumulate and verify information on the distribution and occurrence of \r\n carnivores, the depredation on livestock of carnivores, and the compensation for depredation of \r\n carnivores on livestock.\r\n </p>\r\n </header>\r\n <p>\r\n The database consists of both a production database (login required) and a web-site for public access to data. \r\n The production database may contain information not displayed in the public web-site. \r\n The difference is caused by the need to limit access to sensitive information, determined e.g. by cases still \r\n undergoing verification, police investigation or where disclosure may compromise sensitive information on \r\n persons involved.\r\n </p>\r\n <h3>Content in Rovbase</h3>\r\n <div className=\"about-statistics\">\r\n <span>As of today's date the database contains the following data:</span>\r\n <ul className=\"statistics-list\">\r\n {props.aboutRovbaseData && (\r\n <Fragment>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreObserved.toLocaleString()}</span>\r\n <span>Carnivore observations</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreDamageSheep.toLocaleString()}</span>\r\n <span>Carnivore damages on sheep</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreDamageReindeer.toLocaleString()}</span>\r\n <span>Carnivore damages on semi-domesticated reindeer</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.carnivoreDead.toLocaleString()}</span>\r\n <span>Dead carnivores</span>\r\n </li>\r\n <li>\r\n <NavigateNextIcon />\r\n <span>{props.aboutRovbaseData.dnaSamples.toLocaleString()}</span>\r\n <span>DNA samples</span>\r\n </li>\r\n </Fragment>\r\n )}\r\n </ul>\r\n </div>\r\n </>\r\n )\r\n}\r\n","export enum Language {\r\n NO = 'no',\r\n SV = 'sv',\r\n EN = 'en',\r\n}\r\n\r\nexport function isLang(id: string): id is Language {\r\n return id.toUpperCase() in Language;\r\n}\r\n","import any from 'ramda/es/any';\r\nimport values from 'ramda/es/values';\r\nimport all from 'ramda/es/all';\r\nexport enum LayerType {\r\n WMS,\r\n WMTS,\r\n VECTOR,\r\n}\r\n\r\nexport enum AccessMethod {\r\n NONE,\r\n BAAT,\r\n MAPP,\r\n}\r\n\r\nexport enum LayerGroup {\r\n BG = 'BG',\r\n}\r\n\r\nexport type Layer = {\r\n id: string;\r\n urls: string[];\r\n type: LayerType;\r\n access: AccessMethod;\r\n options?: any;\r\n params?: any;\r\n group?: LayerGroup;\r\n tileUrl?: string;\r\n};\r\n\r\nexport type LayerCollection = { [id: string]: Layer };\r\n\r\nexport function isLayer(obj: Layer | LayerCollection): obj is Layer {\r\n return typeof obj.id === 'string' && Array.isArray(obj.urls) && LayerType[obj.type as LayerType] !== undefined;\r\n}\r\n\r\nexport function isLayerGroup(obj: Layer | LayerCollection): obj is LayerCollection {\r\n return isLayer(values(obj)[0]);\r\n}\r\n\r\nexport function isVisible(layer: Layer | LayerCollection): boolean {\r\n if (isLayer(layer)) {\r\n return layer.options.visible;\r\n } else if (isLayerGroup(layer)) {\r\n return all(layer => layer.options.visible, values(layer));\r\n }\r\n}\r\n","import { LayerType, Layer, AccessMethod, LayerGroup } from '../model/layer/layer';\r\n\r\nexport const layers: Layer[] = [\r\n {\r\n id: 'norge_graatone',\r\n group: LayerGroup.BG,\r\n type: LayerType.WMTS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://cache.kartverket.no/v1/wmts?service=WMTS&request=GetCapabilities'],\r\n params: {\r\n LAYERS: 'topograatone',\r\n TILED: true,\r\n FORMAT: 'image/png',\r\n VERSION: '1.0.0',\r\n TILEMATRIXSET: 'utm33n',\r\n PROJECTION: 'EPSG:25833'\r\n },\r\n options: {\r\n attribution: 'Statens kartverk',\r\n zIndex: 11,\r\n visible: true\r\n },\r\n },\r\n {\r\n id: 'sverige_nedtonad',\r\n group: LayerGroup.BG,\r\n type: LayerType.WMTS,\r\n access: AccessMethod.MAPP,\r\n urls: ['https://app-md-mapproxy-prod.azurewebsites.net/api/proxy/sverige_wmts?request=GetCapabilities&service=wmts'],\r\n tileUrl: 'https://app-md-mapproxy-prod.azurewebsites.net/api/proxy/sverige_wmts?',\r\n params: {\r\n LAYERS: 'topowebb_nedtonad',\r\n TILED: true,\r\n FORMAT: 'image/png',\r\n PROJECTION: 'EPSG:3857'\r\n },\r\n options: {\r\n attribution: 'Lantmäteriet',\r\n zIndex: 10,\r\n visible: true,\r\n },\r\n },\r\n {\r\n id: 'norge',\r\n group: LayerGroup.BG,\r\n type: LayerType.WMTS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://cache.kartverket.no/v1/wmts?service=WMTS&request=GetCapabilities'],\r\n params: {\r\n LAYERS: 'topo',\r\n TILED: true,\r\n FORMAT: 'image/png',\r\n VERSION: '1.0.0',\r\n TILEMATRIXSET: 'utm33n',\r\n PROJECTION: 'EPSG:25833'\r\n },\r\n options: {\r\n attribution: 'Statens kartverk',\r\n zIndex: 10,\r\n visible: false\r\n },\r\n },\r\n {\r\n id: 'sverige',\r\n group: LayerGroup.BG,\r\n type: LayerType.WMTS,\r\n access: AccessMethod.MAPP,\r\n urls: ['https://app-md-mapproxy-prod.azurewebsites.net/api/proxy/sverige_wmts?request=GetCapabilities&service=wmts'],\r\n tileUrl: 'https://app-md-mapproxy-prod.azurewebsites.net/api/proxy/sverige_wmts?',\r\n params: {\r\n LAYERS: 'topowebb',\r\n TILED: true,\r\n FORMAT: 'image/png',\r\n PROJECTION: 'EPSG:3857'\r\n },\r\n options: {\r\n attribution: 'Lantmäteriet',\r\n zIndex: 9,\r\n visible: true,\r\n },\r\n },\r\n {\r\n group: LayerGroup.BG,\r\n id: 'norgeibilder',\r\n type: LayerType.WMS,\r\n access: AccessMethod.BAAT,\r\n urls: [\r\n 'https://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.nib_utm33_v2',\r\n 'https://gatekeeper2.geonorge.no/BaatGatekeeper/gk/gk.nib_utm33_v2',\r\n 'https://gatekeeper3.geonorge.no/BaatGatekeeper/gk/gk.nib_utm33_v2',\r\n ],\r\n params: {\r\n LAYERS: '0',\r\n TILED: true,\r\n FORMAT: 'image/png',\r\n VERSION: '1.1.1',\r\n },\r\n options: {\r\n attribution: 'Statens Kartverk',\r\n zIndex: 11,\r\n visible: false,\r\n },\r\n },\r\n {\r\n group: LayerGroup.BG,\r\n id: 'sverige_orto',\r\n type: LayerType.WMS,\r\n access: AccessMethod.MAPP,\r\n urls: ['https://app-md-mapproxy-prod.azurewebsites.net/api/proxy/sverige_orto'],\r\n params: {\r\n LAYERS: 'Ortofoto_0.5',\r\n TILED: true,\r\n FORMAT: 'image/jpeg',\r\n VERSION: '1.1.1',\r\n },\r\n options: {\r\n attribution: 'Lantmäteriet',\r\n zIndex: 10,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'ulv',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://kart.miljodirektoratet.no/geoserver/forvaltningsomrader_rovdyr/wms'],\r\n params: {\r\n LAYERS: 'ulv_forvaltningsomrade',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'Miljødirektoratet',\r\n zIndex: 15,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'bjorn',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://kart.miljodirektoratet.no/geoserver/forvaltningsomrader_rovdyr/wms'],\r\n params: {\r\n LAYERS: 'bjorn_forvaltningsomrade',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'Miljødirektoratet',\r\n zIndex: 15,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'jerv',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://kart.miljodirektoratet.no/geoserver/forvaltningsomrader_rovdyr/wms'],\r\n params: {\r\n LAYERS: 'jerv_forvaltningsomrade',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'Miljødirektoratet',\r\n zIndex: 15,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'gaupe',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://kart.miljodirektoratet.no/geoserver/forvaltningsomrader_rovdyr/wms'],\r\n params: {\r\n LAYERS: 'gaupe_forvaltningsomrade',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'Miljødirektoratet',\r\n zIndex: 15,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'reinbeite_omr',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://kart.miljodirektoratet.no/geoserver/wms?Service=wms&'],\r\n params: {\r\n LAYERS: 'reinbeite_omrade',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'Miljødirektoratet',\r\n zIndex: 18,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'reinbeite_distr',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://kart.miljodirektoratet.no/geoserver/wms?Service=wms&'],\r\n params: {\r\n LAYERS: 'reinbeitedistrikt_omrade',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'Miljødirektoratet',\r\n zIndex: 17,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'beitelaggrenser',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://wms.nibio.no/cgi-bin/beite'],\r\n params: {\r\n LAYERS: 'Beitelaggrenser',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'NIBIO',\r\n zIndex: 15,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'beitelagnamn',\r\n type: LayerType.WMS,\r\n access: AccessMethod.NONE,\r\n urls: ['https://wms.nibio.no/cgi-bin/beite'],\r\n params: {\r\n LAYERS: 'Beitelagnamn',\r\n FORMAT: 'image/png',\r\n TRANSPARENT: true,\r\n },\r\n options: {\r\n attribution: 'NIBIO',\r\n maxResolution: 170,\r\n zIndex: 15,\r\n visible: false,\r\n },\r\n },\r\n {\r\n id: 'samebygrenser',\r\n type: LayerType.VECTOR,\r\n access: AccessMethod.NONE,\r\n urls: ['/api/samebygrenser'],\r\n options: {\r\n zIndex: 16,\r\n visible: false,\r\n },\r\n },\r\n];\r\n","export enum DatePreset {\r\n LastSevenDays = 0,\r\n LastMonth = 1,\r\n ThisYear = 2,\r\n}\r\n","import {isSameDay, subDays, subYears} from 'date-fns';\r\nimport {DatePreset} from './dateFilter.types';\r\nimport {dateToISOString} from '../../helpers';\r\n\r\nconst isLast7days = (today: string, fromDate: string, toDate: string): boolean =>\r\n isSameDay(fromDate, subDays(today, 7)) && isSameDay(toDate, today);\r\n\r\nconst isLastMonth = (today: string, fromDate: string, toDate: string): boolean =>\r\n isSameDay(fromDate, subDays(today, 30)) && isSameDay(toDate, today);\r\n\r\nconst isThisYear = (today: string, fromDate: string, toDate: string): boolean =>\r\n isSameDay(fromDate, subYears(today, 1)) && isSameDay(toDate, today);\r\n\r\nconst isBeforeOrSameDate = (date: string, dateToCompare: string): boolean =>\r\n date <= dateToCompare;\r\n\r\nconst isAfterOrSameDate = (date: string, dateToCompare: string): boolean =>\r\n date >= dateToCompare;\r\n\r\nexport function subtractDays(date: string, amount: number): string {\r\n return dateToISOString(subDays(date, amount));\r\n}\r\n\r\nexport function subtractYears(date: string, amount: number): string {\r\n return dateToISOString(subYears(date, amount));\r\n}\r\n\r\nexport function currentDatePreset(fromDate: string, toDate: string, today: string): DatePreset {\r\n if (isLast7days(today, fromDate, toDate)) {\r\n return DatePreset.LastSevenDays;\r\n } else if (isLastMonth(today, fromDate, toDate)) {\r\n return DatePreset.LastMonth;\r\n } else if (isThisYear(today, fromDate, toDate)) {\r\n return DatePreset.ThisYear;\r\n }\r\n return null;\r\n}\r\n\r\nexport function isValidDate(dateString: string): boolean {\r\n return !isNaN(Date.parse(dateString));\r\n}\r\n\r\nexport function dateIsBetween(checkDate: string, minDate: string, maxDate: string): boolean {\r\n return isAfterOrSameDate(checkDate, minDate) && isBeforeOrSameDate(checkDate, maxDate);\r\n}","import { curry, pipe } from 'ramda';\r\nimport Onable from 'ol/Observable';\r\nimport { fromEventPattern, Observable } from 'rxjs';\r\nimport { format } from 'date-fns';\r\nimport { Language } from './constants/language';\r\nimport {isValidDate} from './components/dateFilter/dateFilter.util';\r\nimport { formatISO } from 'date-fns';\r\n\r\ntype BEvent = {\r\n preventDefault: Effect;\r\n};\r\n\r\ntype Effect = (args: any[]) => any;\r\n\r\nexport function btnHandler(fn: Effect): (...args: any) => (e: BEvent) => any {\r\n return (...args: any) => {\r\n return (e: BEvent) => {\r\n // @ts-ignore\r\n e.preventDefault();\r\n // @ts-ignore\r\n fn(...args);\r\n };\r\n };\r\n}\r\n\r\nexport function promisify<T>(v: T): Promise<T> {\r\n return new Promise(res => {\r\n res(v);\r\n });\r\n}\r\n\r\n/**\r\n * @description Tar inn en effekt (a: T) => any, og returnerer en funksjon (a: T) => T, som utfører effekten\r\n * resultatet fra effekten blir ignorert\r\n */\r\nexport const transparentEffect = curry(<T>(fn: (a: T) => any, a: T) => {\r\n fn(a);\r\n return a;\r\n});\r\n\r\nexport const fromOnable = <T extends Onable, TRes>(obj: T, type: Parameters<T['on']>[0][0]): Observable<TRes> => fromEventPattern(\r\n handler => obj.on(type, handler),\r\n handler => obj.un(type, handler)\r\n);\r\n\r\nexport const dateToISOString = (date: Date) => formatISO(date, { representation: 'date' });\r\nexport const dateToStringForUrl = pipe(dateToISOString, encodeURIComponent);\r\nexport const dateFormatString = (language: Language): string => {\r\n if (language === Language.SV) {\r\n return 'yyyy.MM.dd';\r\n }\r\n if (language === Language.EN) {\r\n return 'MM.dd.yyyy';\r\n }\r\n return 'dd.MM.yyyy';\r\n};\r\n\r\nexport function formatDateStringToLocaleString(dateString: string, lang: Language): string {\r\n if (!isValidDate(dateString)) return '';\r\n \r\n return format(dateString, dateFormatString(lang));\r\n}","import VectorSource from \"ol/source/Vector\";\r\nimport {Extent} from \"ol/extent\";\r\nimport {fromExtent} from \"ol/geom/Polygon\";\r\nimport WKT from \"ol/format/WKT\";\r\nimport {Layer} from \"../model/layer/layer\";\r\nimport queryString from \"query-string\";\r\nimport Feature from \"ol/Feature\";\r\nimport { pipe, map } from 'ramda'\r\n\r\ntype SimpleFeature = {\r\n id: string;\r\n wkt: string;\r\n datatype: string;\r\n}\r\n\r\nlet wkt = new WKT();\r\n\r\nfunction toFeature(simplefeature: SimpleFeature): Feature {\r\n return new Feature({\r\n geometry: wkt.readGeometry(simplefeature.wkt)\r\n });\r\n}\r\n\r\nfunction createUrl(extent: Extent, layer: Layer): string {\r\n let extentGeom = fromExtent(extent);\r\n let wktPolygon = wkt.writeGeometry(extentGeom);\r\n\r\n const urlBase = layer.urls[0];\r\n const params = {extent: wktPolygon};\r\n return urlBase\r\n .concat(('?'))\r\n .concat(queryString.stringify(params));\r\n}\r\n\r\nconst addToSource = (source: VectorSource) => (feature: Feature): void => {\r\n source.addFeature(feature);\r\n};\r\n\r\nconst parseAndAdd = (source: VectorSource) => pipe(toFeature, addToSource(source));\r\n\r\nexport const VectorLayerLoader = (source: VectorSource, layer: Layer) => (extent: Extent): void => {\r\n const url = createUrl(extent, layer);\r\n\r\n fetch(url, {method: 'POST'})\r\n .then(res => {\r\n if (!res.ok) {\r\n throw Error(res.statusText);\r\n } else {\r\n return res.json();\r\n }\r\n })\r\n .then((json: SimpleFeature[]) => {\r\n json.forEach(parseAndAdd(source));\r\n })\r\n .catch(error => {\r\n source.removeLoadedExtent(extent);\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n });\r\n\r\n};","export enum Datatype {\r\n DNA = 'dna', // NB: Denne mÃ¥ være med smÃ¥ bokstaver\r\n Rovviltobservasjon = 'Rovviltobservasjon',\r\n Rovviltskade = 'Rovviltskade',\r\n YnglelokalitetJerv = 'YnglelokalitetJerv',\r\n DodeRovdyr = 'DodeRovdyr',\r\n MarhundObservasjon = 'MarhundObservasjon',\r\n KongeornReirplass = 'KongeornReirplass',\r\n}\r\n\r\nexport type Individ = {\r\n individID: string;\r\n individnavn: string;\r\n};\r\n\r\ntype StedfestingBase = {\r\n id: string;\r\n wkt: string;\r\n datatype: Datatype;\r\n dato: string;\r\n kommune: string;\r\n funnsted: string;\r\n rovdyrArtsID: string;\r\n};\r\n\r\nexport type DNA = StedfestingBase & {\r\n strekkode: string;\r\n artsIDPrøve: string;\r\n artsIDAnalyse: string;\r\n prøvetypeID: string;\r\n prøvestatusID: string;\r\n individ?: Individ;\r\n kjønnID: string;\r\n};\r\n\r\nexport type Rovviltobservasjon = StedfestingBase & {\r\n observasjonstype: string;\r\n artsID: string;\r\n kjønnID: string;\r\n vurderingID: string;\r\n observasjoner: number[];\r\n totaltAntall: string;\r\n individ: Individ[];\r\n kontrollstatusID: string;\r\n};\r\n\r\nexport type Rovviltskade = StedfestingBase & {\r\n tilstandID: string;\r\n skadetypeID: string;\r\n skadeÃ¥rsakID: string;\r\n skadestedID: string;\r\n hendelseID: string;\r\n vurderingID: string;\r\n undersoktAvID: string;\r\n};\r\n\r\nexport type DodeRovdyr = StedfestingBase & {\r\n artsID: string;\r\n kjønnID: string;\r\n alder: string;\r\n alderFastsattNINA: boolean;\r\n alderFastsattSVA: boolean;\r\n yngling: boolean;\r\n vekt: string;\r\n helvekt: string;\r\n slaktevekt: string;\r\n bakgrunnArsakID: string;\r\n utfallID: string;\r\n vurderingID: string;\r\n individ?: Individ;\r\n};\r\n\r\nexport type Stedfesting = DNA | Rovviltobservasjon | Rovviltskade | DodeRovdyr;\r\n","import Feature from 'ol/Feature';\r\nimport WKT from 'ol/format/WKT';\r\nimport { Datatype, DNA, Rovviltobservasjon, Rovviltskade, Stedfesting, DodeRovdyr } from './StedfestingTypes';\r\nimport { curry } from 'ramda';\r\n\r\nexport function toFeature(stedfesting: Stedfesting): Feature {\r\n const wkt = new WKT();\r\n const feature = new Feature({\r\n geometry: wkt.readGeometry(stedfesting.wkt)\r\n });\r\n\r\n feature.set('stedfesting', stedfesting);\r\n return feature;\r\n}\r\n\r\nexport function fromFeature(feature: Feature): Stedfesting {\r\n return feature.get('stedfesting');\r\n}\r\n\r\nexport const toLookupVal = (s: Stedfesting): string => `${s.id}-${s.datatype}`;\r\n\r\nexport const isSame = curry((s1: Stedfesting, s2: Stedfesting) => s1.id === s2.id && s1.datatype === s2.datatype);\r\n\r\nexport function isStedfesting(obj: any): obj is Stedfesting {\r\n return obj && obj.id && validDatatype(obj.datatype || '');\r\n}\r\n\r\nexport function isDNA(stedfesting: any): stedfesting is DNA {\r\n return isStedfesting(stedfesting) && stedfesting.datatype === Datatype.DNA;\r\n}\r\n\r\nexport function isRovviltskade(stedfesting: any): stedfesting is Rovviltskade {\r\n return isStedfesting(stedfesting) && stedfesting.datatype === Datatype.Rovviltskade;\r\n}\r\n\r\nexport function isRovviltobservasjon(stedfesting: any): stedfesting is Rovviltobservasjon {\r\n return isStedfesting(stedfesting) && stedfesting.datatype === Datatype.Rovviltobservasjon;\r\n}\r\n\r\nexport function isDodeRovdyr(stedfesting: any): stedfesting is DodeRovdyr {\r\n return isStedfesting(stedfesting) && stedfesting.datatype === Datatype.DodeRovdyr;\r\n}\r\n\r\nexport function validDatatype(datatype: string): datatype is Datatype {\r\n return Object.values(Datatype).includes(datatype as Datatype);\r\n}\r\n","import { Stedfesting } from '../../model/stedfesting/StedfestingTypes';\r\nimport { Action } from 'redux';\r\n\r\nexport type TooltipState = {\r\n stedfesting: Stedfesting;\r\n};\r\n\r\nexport type SetTooltipAction = Action & {\r\n stedfesting: Stedfesting;\r\n};\r\n\r\nexport const SET_TOOLTIP = '@tooltip/SET_TOOLTIP';\r\nexport const CLEAR_TOOLTIP = '@tooltip/CLEAR_TOOLTIP';\r\n","import { Action } from 'redux';\r\nimport { Stedfesting } from '../../model/stedfesting/StedfestingTypes';\r\nimport { CLEAR_TOOLTIP, SetTooltipAction, SET_TOOLTIP } from './types';\r\n\r\nexport function setTooltip(stedfesting: Stedfesting): SetTooltipAction {\r\n return {\r\n type: SET_TOOLTIP,\r\n stedfesting\r\n };\r\n}\r\n\r\nexport function ClearTooltip(): Action {\r\n return {\r\n type: CLEAR_TOOLTIP\r\n };\r\n}\r\n","import { Layer } from '../model/layer/layer';\r\nimport { Stedfesting } from '../model/stedfesting/StedfestingTypes';\r\nimport { MapAction } from './types';\r\n\r\nexport enum MapActionType {\r\n ADD_FEATURES = 'ADD_FEATURES',\r\n CLEAR_FEATURES = 'CLEAR_FEATURES',\r\n ADD_LAYERS = 'ADD_LAYERS',\r\n TOGGLE_LAYER = 'TOGGLE_LAYER',\r\n ZOOM_TO_FEATURE = 'ZOOM_TO_FEATURE',\r\n ZOOM_TO_FEATURE_MOBILE = 'ZOOM_TO_FEATURE_MOBILE',\r\n ZOOM_TO_FEATURES = 'ZOOM_TO_FEATURES',\r\n ZOOM_TO_FEATURES_MOBILE = 'ZOOM_TO_FEATURES_MOBILE',\r\n}\r\n\r\nexport function toggleMapLayers(layer: string[]): MapAction<string[]> {\r\n return {\r\n type: MapActionType.TOGGLE_LAYER,\r\n value: layer,\r\n };\r\n}\r\n\r\nexport function addLayersToMap(layers: Layer[]): MapAction<Layer[]> {\r\n return {\r\n type: MapActionType.ADD_LAYERS,\r\n value: layers,\r\n };\r\n}\r\n\r\nexport function addFeatures(features: Stedfesting[]): MapAction<Stedfesting[]> {\r\n return {\r\n type: MapActionType.ADD_FEATURES,\r\n value: features,\r\n };\r\n}\r\n\r\nexport function clearFeatures(): MapAction<void> {\r\n return {\r\n type: MapActionType.CLEAR_FEATURES,\r\n value: undefined,\r\n };\r\n}\r\n\r\nexport function zoomToFeature(id: string): MapAction<string> {\r\n return {\r\n type: MapActionType.ZOOM_TO_FEATURE,\r\n value: id,\r\n };\r\n}\r\n\r\nexport function zoomToFeatureMobile(id: string): MapAction<string> {\r\n return {\r\n type: MapActionType.ZOOM_TO_FEATURE_MOBILE,\r\n value: id,\r\n };\r\n}\r\n\r\nexport function zoomToFeatures(): MapAction<void> {\r\n return {\r\n type: MapActionType.ZOOM_TO_FEATURES,\r\n value: undefined,\r\n };\r\n}\r\n\r\nexport function zoomToFeaturesMobile(): MapAction<void> {\r\n return {\r\n type: MapActionType.ZOOM_TO_FEATURES_MOBILE,\r\n value: undefined,\r\n };\r\n}\r\n","import {Subscription} from 'rxjs';\r\nimport {Layer} from '../model/layer/layer';\r\nimport {toFeature} from '../model/stedfesting/Stedfesting';\r\nimport {Stedfesting} from '../model/stedfesting/StedfestingTypes';\r\nimport {createLayer, isPromiseOfLayer, isResolvedBaseLayer, setTileLoadeError} from './layerLoader';\r\nimport {olMap, onMapAction, pointSource} from './map';\r\nimport {MapActionType} from './mapActions';\r\nimport {boundingExtent, getCenter} from 'ol/extent';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport TileLayer from 'ol/layer/Tile';\r\nimport {OSM} from 'ol/source';\r\n\r\nexport const initMapListeners = (): Subscription[] => {\r\n return [\r\n onMapAction(MapActionType.ADD_FEATURES).subscribe((stedfestings: Stedfesting[]): void => {\r\n pointSource.addFeatures(stedfestings.map(toFeature));\r\n }),\r\n\r\n onMapAction(MapActionType.CLEAR_FEATURES).subscribe(() => {\r\n pointSource.clear();\r\n }),\r\n\r\n onMapAction<Layer[]>(MapActionType.ADD_LAYERS).subscribe((layers: Layer[]): void => {\r\n const layerArray = olMap.getLayers().getArray();\r\n \r\n layers\r\n // Har midlertidig problemer med svenske kartlag, fjerner derfor disse (og erstatter med osmlayer)\r\n .filter(layer => !layer.id.includes('sverige'))\r\n .map(createLayer)\r\n .filter(isResolvedBaseLayer)\r\n .filter(layer => !layerArray.some(l => l.get('layerName') === layer.get('layerName')))\r\n .forEach(layer =>olMap.addLayer(layer));\r\n \r\n layers\r\n // Har midlertidig problemer med svenske kartlag, fjerner derfor disse (og erstatter med osmlayer)\r\n .filter(layer => !layer.id.includes('sverige'))\r\n .map(createLayer)\r\n .filter(isPromiseOfLayer)\r\n\r\n .forEach(layer =>\r\n layer.then(layer => {\r\n if (!layerArray.some(l => l.get('layerName') === layer.get('layerName'))) {\r\n olMap.addLayer(layer);\r\n setTileLoadeError(layer);\r\n }\r\n })\r\n );\r\n \r\n // Har midlertidig problemer med svenske kartlag, fjerner derfor disse (og erstatter med osmlayer)\r\n const osmlayer = new TileLayer({\r\n source: new OSM()\r\n });\r\n osmlayer.set('layerName', 'osm');\r\n\r\n olMap.addLayer(osmlayer);\r\n }),\r\n\r\n onMapAction<string[]>(MapActionType.TOGGLE_LAYER).subscribe((visibleLayers: string[]): void => {\r\n const olLayers = olMap\r\n .getLayers()\r\n .getArray()\r\n .filter(layer => !(layer instanceof VectorLayer) || layer.get('layerName') === 'samebygrenser'); \r\n\r\n // Layers som skal slÃ¥s av\r\n const disable = olLayers\r\n // OSM-laget er ikke en del av de vanlige kartlagene, og finnes derfor ikke i visibleLayers. Filtrerer ut denne først sÃ¥ den ikke blir disablet\r\n .filter(layer => layer.get('layerName') !== 'osm')\r\n // .filter(layer => layer.getVisible() && !visibleLayers.includes(layer.get('layerName')));\r\n disable.forEach(layer => layer.setVisible(false));\r\n\r\n // Layers som skal slÃ¥s pÃ¥\r\n const enable = olLayers.filter(\r\n layer => !layer.getVisible() && visibleLayers.includes(layer.get('layerName'))\r\n );\r\n enable.forEach(layer => {layer.setVisible(true);});\r\n }),\r\n\r\n onMapAction<string>(MapActionType.ZOOM_TO_FEATURE).subscribe((id: string): void => {\r\n const feature = pointSource.getFeatures().find(f => f.get('stedfesting').id === id);\r\n // @ts-ignore\r\n const featureCoord = feature.getGeometry().getCoordinates();\r\n // olMap.getView().setCenter(featureCoord);\r\n olMap.getView().cancelAnimations();\r\n olMap.getView().animate({\r\n zoom: 8,\r\n center: featureCoord,\r\n });\r\n }),\r\n\r\n onMapAction<string>(MapActionType.ZOOM_TO_FEATURE_MOBILE).subscribe((id: string): void => {\r\n const feature = pointSource.getFeatures().find(f => f.get('stedfesting').id === id);\r\n // @ts-ignore\r\n const featureCoord = feature.getGeometry().getCoordinates();\r\n // olMap.getView().setCenter(featureCoord);\r\n const extent = boundingExtent([featureCoord]);\r\n olMap.getView().cancelAnimations();\r\n olMap.getView().fit(extent, {\r\n padding: [100, 100, 400, 100],\r\n duration: 1500,\r\n\r\n maxZoom: 8,\r\n });\r\n }),\r\n\r\n onMapAction(MapActionType.ZOOM_TO_FEATURES).subscribe((): void => {\r\n const features = pointSource.getFeatures();\r\n if (features.length === 1) {\r\n // @ts-ignore\r\n const coordinates = features.map(feature => feature.getGeometry().getCoordinates());\r\n const center = getCenter(boundingExtent(coordinates));\r\n olMap.getView().cancelAnimations();\r\n olMap.getView().animate({\r\n zoom: 8,\r\n center: center,\r\n });\r\n } else if (features.length > 1) {\r\n // @ts-ignore\r\n const coordinates = features.map(feature => feature.getGeometry().getCoordinates());\r\n const extent = boundingExtent(coordinates);\r\n olMap.getView().cancelAnimations();\r\n olMap.getView().fit(extent, {\r\n padding: [100, 100, 100, 100],\r\n duration: 1500,\r\n maxZoom: 8,\r\n });\r\n }\r\n }),\r\n\r\n onMapAction(MapActionType.ZOOM_TO_FEATURES_MOBILE).subscribe((): void => {\r\n const features = pointSource.getFeatures();\r\n if (features.length === 1) {\r\n // @ts-ignore\r\n const coordinates = features.map(feature => feature.getGeometry().getCoordinates());\r\n const extent = boundingExtent(coordinates);\r\n olMap.getView().cancelAnimations();\r\n olMap.getView().fit(extent, {\r\n padding: [60, 10, 400, 10],\r\n duration: 1500,\r\n maxZoom: 8,\r\n });\r\n } else if (features.length > 1) {\r\n // @ts-ignore\r\n const coordinates = features.map(feature => feature.getGeometry().getCoordinates());\r\n const extent = boundingExtent(coordinates);\r\n olMap.getView().cancelAnimations();\r\n olMap.getView().fit(extent, {\r\n padding: [60, 20, 200, 20],\r\n duration: 1500,\r\n maxZoom: 8,\r\n });\r\n }\r\n }),\r\n ];\r\n};\r\n","export enum MapProjection {\r\n EPSG_3006 = 'EPSG:3006', // SWEREF99 TM\r\n EPSG_4326 = 'EPSG:4326', // WGS 84 / LatLong\r\n EPSG_25833 = 'EPSG:25833', // ETRS89 / UTM zone 33N\r\n EPSG_32633 = 'EPSG:32633' // WGS 84 / UTM zone 33N\r\n}","import {MapProjection} from '../constants/mapProjection';\r\n\r\nexport const defs = [\r\n [MapProjection.EPSG_32633, '+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs'],\r\n [MapProjection.EPSG_3006, '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'],\r\n [MapProjection.EPSG_4326, '+proj=longlat +ellps=WGS84 +datum=WGS84 +units=m +no_defs'],\r\n [MapProjection.EPSG_25833, '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +type=crs'],\r\n];\r\n","export enum Carnivore {\r\n Wolf = 1,\r\n Bear = 2,\r\n Lynx = 3,\r\n Wolverine = 4,\r\n Eagle = 6,\r\n UnknownProtected = 7,\r\n}\r\n\r\nexport const mainCarnivoreArray = [Carnivore.Wolf, Carnivore.Bear, Carnivore.Lynx, Carnivore.Wolverine];\r\nexport const otherCarnivoresArray = [Carnivore.Eagle, Carnivore.UnknownProtected];\r\n\r\nexport const allCarnivoreArray = mainCarnivoreArray.concat(otherCarnivoresArray);\r\n\r\n// Other carnivores only affects a subset of the filter options\r\n","export enum CarnivoreDamage {\r\n Sheep = 1,\r\n Reindeer = 2,\r\n Dog = 3,\r\n Goat = 4,\r\n Cattle = 5,\r\n}\r\n\r\nexport const defaultCarnivoreDamageFilter = [CarnivoreDamage.Sheep, CarnivoreDamage.Reindeer, CarnivoreDamage.Dog, \r\n CarnivoreDamage.Goat, CarnivoreDamage.Cattle] ;\r\n","export enum Observations {\r\n DeadCarnivores = 1,\r\n VisualObservation = 2,\r\n Footprint = 3,\r\n Faeces = 4,\r\n TerritorialMarking = 5,\r\n Reproduction = 6,\r\n TreeMarkings = 7,\r\n HairOrFeather = 8,\r\n Bed = 9,\r\n Digging = 10,\r\n AnalysedDna = 11,\r\n UnanalysedDna = 12,\r\n UnspecifiedType = 13,\r\n}\r\n\r\n\r\nexport const defaultObservationsFilter = [Observations.DeadCarnivores, Observations.VisualObservation, Observations.Footprint, Observations.UnanalysedDna, Observations.AnalysedDna];\r\nexport const dnaObservations = [Observations.AnalysedDna, Observations.UnanalysedDna];\r\n","import { Action } from 'redux';\r\nimport { Language } from '../../constants/language';\r\n\r\nexport type SettingsState = {\r\n language: Language;\r\n isLoading: boolean;\r\n site: Site;\r\n isInitialized: boolean;\r\n};\r\n\r\nexport type LanguageAction = Action & {\r\n language: Language;\r\n};\r\n\r\nexport type SiteAction = Action & {\r\n site: Site;\r\n};\r\n\r\nexport enum Site {\r\n NO,\r\n SE,\r\n}\r\n\r\nexport type isLoadingAction = Action & {\r\n isLoading: boolean;\r\n};\r\n\r\nexport type isInitializedAction = Action & {\r\n isInitialized: boolean;\r\n};\r\n\r\nexport const SET_LANGUAGE = '@settings/SET_LANGUAGE';\r\nexport const SET_ISLOADING = '@settings/SET_ISLOADING';\r\nexport const SET_HAS_SEARCHED = '@settings/SET_HAS_SEARCHED';\r\nexport const SET_SITE = '@settings/SET_SITE';\r\nexport const SET_ISINITIALIZED = '@settings/SET_ISINITIALIZED';\r\n","import {createTheme} from '@material-ui/core/styles';\r\nconst theme = createTheme({\r\n typography: {\r\n fontFamily: 'Palatino',\r\n button: {\r\n textTransform: 'none',\r\n },\r\n },\r\n palette: {\r\n primary: {\r\n main: '#4C6E6E', // Mellomgrønn\r\n light: '#79A8A8', // Grønn\r\n dark: '#325553', // Mørkegrønn\r\n contrastText: '#ffffff',\r\n },\r\n secondary: {\r\n main: '#EBF3F3', // Lysegrønn\r\n light: '#FFFFFF',\r\n dark: '#D7E6E6', // GrÃ¥grønn\r\n contrastText: '#3E3E3E',\r\n },\r\n common: {\r\n white: '#ffffff',\r\n black: '#3E3E3E',\r\n },\r\n background: {\r\n default: '#f5f5f5',\r\n paper: '#ffffff',\r\n },\r\n grey: {\r\n 100: '#f5f5f5', // light grey color (border, background etc)\r\n 200: '#efefef', // button secondary\r\n 300: '#d8d8d8',\r\n 400: '#c3c3c3',\r\n 500: '#b0afaf', // dark border color\r\n 600: '#979797',\r\n 700: '#707070', // MørkegrÃ¥ (ogsÃ¥ farge til ukjent fredet)\r\n 900: '#3E3E3E',\r\n },\r\n warning: {\r\n main: '#F3D5CF',\r\n },\r\n text: {\r\n primary: '#3E3E3E',\r\n secondary: '#3E3E3E',\r\n disabled: '#707070',\r\n },\r\n stroke: {\r\n selectedCluster: '#EF7D00',\r\n },\r\n action: {\r\n active: '#C9D3D3', // Fokus\r\n },\r\n\r\n // Animals\r\n bear: {\r\n main: '#784212',\r\n focus: '#572f0d',\r\n },\r\n wolf: {\r\n main: '#cb4335',\r\n focus: '#802b21',\r\n },\r\n lynx: {\r\n main: '#00a677',\r\n focus: '#008c65',\r\n },\r\n wolverine: {\r\n main: '#2582a0',\r\n focus: '#164e60',\r\n },\r\n raccoonDog: {\r\n main: '#404040',\r\n focus: '#000000',\r\n },\r\n goldenEagle: {\r\n main: '#76448a',\r\n focus: '#4a2a57',\r\n },\r\n unknownProtected: {\r\n main: '#707070',\r\n focus: '#505050',\r\n },\r\n dna: {\r\n main: '#ffffff',\r\n border: '#707070',\r\n symbol: '#353535',\r\n },\r\n unselected: {\r\n main: '#EFEFEF',\r\n color: '#8f8f8f',\r\n text: '#8f8f8f',\r\n },\r\n },\r\n overrides: {},\r\n spacing: 6,\r\n});\r\n\r\nexport default theme;\r\n","import {createTheme} from '@material-ui/core/styles';\r\nimport theme from '../styles/materialTheme';\r\n\r\nconst themeSE = createTheme({\r\n ...theme,\r\n palette: {\r\n ...theme.palette,\r\n primary: {\r\n main: '#3A588F',\r\n light: '#5393C3',\r\n dark: '#244582',\r\n },\r\n // primary: {\r\n // main: '#244582',\r\n // light: '#0064C8',\r\n // dark: '#003366',\r\n // },\r\n secondary: {\r\n main: '#EFEFEF',\r\n light: '#ffffff',\r\n dark: '#D8D8D8',\r\n },\r\n },\r\n});\r\n\r\nexport default themeSE;\r\n","export enum Evaluation {\r\n Documented = 1,\r\n AssessedSure = 2,\r\n Unsure = 3,\r\n ErroneousReport = 4,\r\n}\r\n\r\nexport const defaultEvaluationFilter = [Evaluation.Documented, Evaluation.AssessedSure, Evaluation.Unsure];\r\n","import {alpha} from '@material-ui/core/styles';\r\nimport Feature from 'ol/Feature';\r\nimport Circle from 'ol/style/Circle';\r\nimport Fill from 'ol/style/Fill';\r\nimport Icon from 'ol/style/Icon';\r\nimport Stroke from 'ol/style/Stroke';\r\nimport Style from 'ol/style/Style';\r\nimport Text from 'ol/style/Text';\r\nimport {defaultTo, either, isEmpty, isNil, pipe} from 'ramda';\r\nimport 'whatwg-fetch';\r\nimport {Carnivore} from '../constants/carnivore';\r\nimport {CarnivoreDamage} from '../constants/carnivoreDamage';\r\nimport {Observations} from '../constants/observations';\r\nimport {\r\n fromFeature,\r\n isDNA,\r\n isDodeRovdyr,\r\n isRovviltobservasjon,\r\n isRovviltskade,\r\n isStedfesting,\r\n toLookupVal,\r\n} from '../model/stedfesting/Stedfesting';\r\nimport {Rovviltobservasjon, Rovviltskade} from '../model/stedfesting/StedfestingTypes';\r\nimport {store} from '../store';\r\nimport {Site} from '../store/settings/types';\r\nimport theme from '../styles/materialTheme.js';\r\nimport themeSE from '../styles/materialThemeSvensk.js';\r\nimport {Evaluation} from '../constants/evaluation';\r\nimport {DamageCause} from '../constants/damageCause';\r\nimport {CarnivoreObserved} from '../constants/carnivoreObserved';\r\n\r\n// Root til svg-mappen\r\nconst ICON_DIR_ROOT = '/assets/svg';\r\n\r\nconst getSvgStyleUrl = createSvgDataUrlLoader();\r\n\r\n// Standard-stil hvis stil er null\r\nexport const fallbackStyle = new Style({\r\n image: new Circle({\r\n fill: new Fill({\r\n color: '#000',\r\n }),\r\n radius: 12,\r\n }),\r\n text: new Text({\r\n text: '?',\r\n fill: new Fill({\r\n color: '#FFF',\r\n }),\r\n }),\r\n});\r\n\r\n// Hjelpefunksjoner\r\nconst isInvalid = (str: string): boolean => either(isNil, isEmpty)(str);\r\nconst isCluster = (feature: Feature): boolean => feature && feature.get('features');\r\n\r\nconst clusterText = (clustersize: number): Text => {\r\n return new Text({\r\n text: `${clustersize}`,\r\n scale: clustersize >= 50 ? 1.7 : 1.5,\r\n fill: new Fill({\r\n color: '#FFF',\r\n }),\r\n offsetX: 0,\r\n offsetY: 1,\r\n });\r\n};\r\n\r\n/**\r\n * Henter filsti for rovviltskade-ikon\r\n * @param stedfesting\r\n */\r\nexport const getIconPathRovviltskade = (stedfesting: Rovviltskade): string | null => {\r\n const damageType = CarnivoreDamage[stedfesting.skadetypeID];\r\n if (isInvalid(damageType)) {\r\n return null;\r\n }\r\n const dir = 'rovviltskade';\r\n return `${ICON_DIR_ROOT}/${dir}/${damageType}.svg`;\r\n};\r\n\r\n/**\r\n * Henter filsti for dna-ikon\r\n */\r\nexport const getIconPathDNA = (): string => {\r\n const dir = 'dna';\r\n return `${ICON_DIR_ROOT}/${dir}/dna.svg`;\r\n};\r\n\r\n/**\r\n * Henter filsti for uanalysert dna-ikon\r\n */\r\nexport const getUnanalysedIconPathDNA = (): string | null => {\r\n const dir = 'dna';\r\n return `${ICON_DIR_ROOT}/${dir}/unanalysedDNA.svg`;\r\n};\r\n\r\n/**\r\n * Henter filsti for rovviltobservasjon-ikon\r\n *\r\n * @param perpetratorTypeId\r\n * @param observations\r\n */\r\nexport const getIconPathRovviltobservasjon = (stedfesting: Rovviltobservasjon): string | null => {\r\n const observations = stedfesting.observasjoner;\r\n const dir = 'observasjonstyper';\r\n if (parseInt(stedfesting.vurderingID) === Evaluation.ErroneousReport) {\r\n return `${ICON_DIR_ROOT}/${dir}/ErroneousReport.svg`;\r\n }\r\n if (observations.length > 1 || observations.length === 0) {\r\n const observationType = 'Observation';\r\n return `${ICON_DIR_ROOT}/${dir}/${observationType}.svg`;\r\n }\r\n const observationType = Observations[observations[0]];\r\n return `${ICON_DIR_ROOT}/${dir}/${observationType}.svg`;\r\n};\r\n\r\n/**\r\n * Henter filsti for DødeRovdyr-ikon\r\n *\r\n * @param perpetratorTypeId\r\n * @param observations\r\n */\r\nexport const getIconPathDodeRovdyr = (): string | null => {\r\n const dir = 'deadcarnivores';\r\n return `${ICON_DIR_ROOT}/${dir}/dod.svg`;\r\n};\r\n\r\n/**\r\n * Oppretter stil for feature\r\n * @param feature\r\n *\r\n */\r\nfunction getIconStyle(feature: Feature, selected: boolean): Style[] {\r\n const iconPath = getIconPath(feature);\r\n const selectedIconStroke =\r\n store.getState().settings.site === Site.SE ? themeSE.palette.primary.light : theme.palette.primary.light;\r\n const strokeSize = 10;\r\n \r\n if (selected) {\r\n return [\r\n new Style({\r\n image: new Icon({\r\n src: getSvgStyleUrl(iconPath, feature, false),\r\n scale: 0.6,\r\n }),\r\n zIndex: 10,\r\n }),\r\n new Style({\r\n image: new Circle({\r\n stroke: new Stroke({\r\n color: selectedIconStroke,\r\n width: strokeSize,\r\n }),\r\n radius: 16,\r\n }),\r\n zIndex: 1,\r\n }),\r\n ];\r\n }\r\n return [\r\n new Style({\r\n image: new Icon({\r\n src: getSvgStyleUrl(iconPath, feature, false),\r\n scale: 0.6,\r\n }),\r\n }),\r\n ];\r\n}\r\n\r\nexport function getIconPath(feature: Feature): string {\r\n const stedfesting = fromFeature(feature);\r\n if (isRovviltobservasjon(stedfesting)) {\r\n return getIconPathRovviltobservasjon(stedfesting);\r\n }\r\n if (isRovviltskade(stedfesting)) {\r\n return getIconPathRovviltskade(stedfesting);\r\n }\r\n if (isDNA(stedfesting)) {\r\n if (stedfesting.prøvestatusID.length > 0) {\r\n return getIconPathDNA();\r\n }\r\n return getUnanalysedIconPathDNA();\r\n }\r\n if (isDodeRovdyr(stedfesting)) {\r\n return getIconPathDodeRovdyr();\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * Oppretter stil for en stedfesting\r\n * @param stedfesting\r\n * @public\r\n */\r\nexport function getStyle(feature: Feature): Style[] {\r\n const defaultIfNil = defaultTo(fallbackStyle);\r\n const selected = store.getState().map.selectedStedfesting;\r\n const hovered = store.getState().map.hoveredStedfesting;\r\n const array = hovered != null ? [...selected, hovered] : selected;\r\n const marked = new Map(array.map(s => [toLookupVal(s), s]));\r\n\r\n // Cluster\r\n if (isCluster(feature)) {\r\n const cFeatures = feature.get('features').map(pipe(fromFeature, toLookupVal));\r\n if (cFeatures.length > 1) {\r\n if (cFeatures.some(v => marked.has(v))) {\r\n return getSelectedClusterStyle(feature);\r\n }\r\n return getClusterStyle(feature);\r\n }\r\n }\r\n\r\n // Stedfesting\r\n let style;\r\n if (feature.get('features') !== undefined) {\r\n const [f] = feature.get('features');\r\n const stedfesting = fromFeature(f);\r\n\r\n if (isStedfesting(stedfesting)) {\r\n style = marked.has(toLookupVal(stedfesting)) ? getSelectedStyle(feature) : getIconStyle(f, false);\r\n }\r\n }\r\n\r\n return defaultIfNil(style);\r\n}\r\n\r\n/**\r\n * Oppretter stil for en markert stedfesting\r\n * @param stedfesting\r\n * @public\r\n */\r\nexport function getSelectedStyle(feature: Feature): Style {\r\n const defaultIfNil = defaultTo(fallbackStyle);\r\n let style;\r\n\r\n // Cluster\r\n if (isCluster(feature) && feature.get('features').length > 1) {\r\n style = getClusterStyle(feature);\r\n style.getImage().setRadius(style.getImage().getRadius() + 4);\r\n style\r\n .getImage()\r\n .getFill()\r\n .setColor([255, 99, 1, 1]);\r\n return style;\r\n }\r\n\r\n // Stedfesting\r\n if (feature.get('features') !== undefined) {\r\n const [f] = feature.get('features');\r\n const stedfesting = fromFeature(f);\r\n\r\n if (isStedfesting(stedfesting)) {\r\n style = getIconStyle(f, true);\r\n }\r\n }\r\n return defaultIfNil(style);\r\n}\r\n\r\nexport function getSelectedClusterStyle(feature: Feature): Style[] {\r\n const color =\r\n store.getState().settings.site === Site.SE ? themeSE.palette.primary.dark : theme.palette.primary.dark;\r\n //const defaultIfNil = defaultTo(fallbackStyle);\r\n const clusterSize = feature.getProperties().features.length;\r\n const radius = Math.min(12 + clusterSize * 0.1, 20);\r\n const selectedClusterStroke = alpha(theme.palette.stroke.selectedCluster, 0.8);\r\n const strokeWidth = 10;\r\n return [\r\n new Style({\r\n image: new Circle({\r\n fill: new Fill({\r\n color: color,\r\n }),\r\n radius: radius,\r\n }),\r\n text: clusterText(clusterSize),\r\n zIndex: 10,\r\n }),\r\n new Style({\r\n image: new Circle({\r\n stroke: new Stroke({\r\n color: selectedClusterStroke,\r\n width: strokeWidth,\r\n }),\r\n radius: radius,\r\n }),\r\n }),\r\n ];\r\n}\r\n\r\n/**\r\n * @param feature\r\n * @public\r\n */\r\nexport function getClusterStyle(feature: Feature): Style[] {\r\n const color =\r\n store.getState().settings.site === Site.SE ? themeSE.palette.primary.dark : theme.palette.primary.dark;\r\n const stroke =\r\n store.getState().settings.site === Site.SE\r\n ? alpha(themeSE.palette.primary.dark, 0.3)\r\n : alpha(theme.palette.primary.dark, 0.3);\r\n const clusterSize = (feature.get('features') || []).length;\r\n const radius = Math.min(12 + clusterSize * 0.1, 20);\r\n const strokeSize = 10;\r\n return [\r\n new Style({\r\n image: new Circle({\r\n fill: new Fill({\r\n color: color,\r\n }),\r\n\r\n radius: radius,\r\n }),\r\n zIndex: 10,\r\n text: clusterText(clusterSize),\r\n }),\r\n new Style({\r\n image: new Circle({\r\n stroke: new Stroke({\r\n color: stroke,\r\n width: strokeSize,\r\n }),\r\n radius: radius,\r\n }),\r\n zIndex: 1,\r\n }),\r\n ];\r\n}\r\n\r\nfunction toSvg(str: string): Element {\r\n const parser = new DOMParser();\r\n const doc = parser.parseFromString(str, 'image/svg+xml');\r\n return doc.children[0];\r\n}\r\n\r\nexport function getColorFromFeature(feature: Feature): string {\r\n const stedfesting = fromFeature(feature);\r\n\r\n let id;\r\n if (isRovviltobservasjon(stedfesting) || isDodeRovdyr(stedfesting)) {\r\n id = stedfesting.artsID;\r\n }\r\n if (isRovviltskade(stedfesting)) {\r\n id = stedfesting.skadeÃ¥rsakID;\r\n }\r\n if (isDNA(stedfesting)) {\r\n if (stedfesting.prøvestatusID.length > 0) {\r\n id = stedfesting.artsIDAnalyse;\r\n return getColorFromCarnivoreObservedId(id);\r\n } else {\r\n return theme.palette.dna.main;\r\n }\r\n }\r\n return getColorFromCarnivoreId(id);\r\n}\r\n\r\nexport function getColorFromCarnivoreId(id: string): string {\r\n switch (parseInt(id)) {\r\n case Carnivore.Lynx:\r\n return theme.palette.lynx.main;\r\n case Carnivore.Wolverine:\r\n return theme.palette.wolverine.main;\r\n case Carnivore.Bear:\r\n return theme.palette.bear.main;\r\n case Carnivore.Wolf:\r\n return theme.palette.wolf.main;\r\n case Carnivore.Eagle:\r\n return theme.palette.goldenEagle.main;\r\n case Carnivore.UnknownProtected:\r\n return theme.palette.unknownProtected.main;\r\n default:\r\n return '#FFFFFF';\r\n }\r\n}\r\n\r\nexport function getColorFromCarnivoreObservedId(id: string): string {\r\n switch (parseInt(id)) {\r\n case CarnivoreObserved.Lynx:\r\n return theme.palette.lynx.main;\r\n case CarnivoreObserved.Wolverine:\r\n return theme.palette.wolverine.main;\r\n case CarnivoreObserved.Bear:\r\n return theme.palette.bear.main;\r\n case CarnivoreObserved.Wolf:\r\n return theme.palette.wolf.main;\r\n case CarnivoreObserved.Eagle:\r\n return theme.palette.goldenEagle.main;\r\n case CarnivoreObserved.Unknown:\r\n return theme.palette.unknownProtected.main;\r\n default:\r\n return theme.palette.grey[700];\r\n }\r\n}\r\n\r\nexport function getColorFromDamageCauseId(id: string): string {\r\n switch (parseInt(id)) {\r\n case DamageCause.Lynx:\r\n return theme.palette.lynx.main;\r\n case DamageCause.Wolverine:\r\n return theme.palette.wolverine.main;\r\n case DamageCause.Bear:\r\n return theme.palette.bear.main;\r\n case DamageCause.Wolf:\r\n return theme.palette.wolf.main;\r\n case DamageCause.Eagle:\r\n return theme.palette.goldenEagle.main;\r\n case DamageCause.UnknownProtected:\r\n return theme.palette.unknownProtected.main;\r\n default:\r\n return theme.palette.grey[700];\r\n }\r\n}\r\n\r\nconst setColor = (color: string) => (svg: Element) => {\r\n svg.setAttribute('style', `fill: ${color};`);\r\n return svg;\r\n};\r\n\r\nconst setInvertedColor = (color: string) => (svg: Element) => {\r\n if (color === '#ffffff') {\r\n svg.setAttribute('style', 'fill: #353535;');\r\n } else {\r\n svg.setAttribute('style', 'fill: #FFFFFF;');\r\n }\r\n const svgPaths = Array.from(svg.getElementsByClassName('st0'));\r\n svgPaths.map(element => element.setAttribute('style', `fill: ${color};`));\r\n return svg;\r\n};\r\n\r\nconst createUrl = (svg: Element): string => {\r\n const str = new XMLSerializer().serializeToString(svg);\r\n return `data:image/svg+xml;base64,${btoa(str)}`;\r\n};\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nconst svgLoadedHandler = (color: string, selected: boolean): ((str: string) => string) =>\r\n selected ? pipe(toSvg, setInvertedColor(color), createUrl) : pipe(toSvg, setColor(color), createUrl);\r\n\r\ntype CachedSvgUrl = string | Promise<string>;\r\n// eslint-disable-next-line no-unused-vars\r\nexport function createSvgDataUrlLoader(): (baseUrl: string, feature: Feature, selected: boolean) => string {\r\n // Cache som holder pÃ¥ alle lastede, eller lastende ikoner\r\n const svgCache: Record<string, CachedSvgUrl> = {};\r\n\r\n // TypeGuards\r\n const isLoaded = (key: string): boolean => typeof svgCache[key] === 'string';\r\n const isLoading = (key: string): boolean => svgCache[key] instanceof Promise;\r\n\r\n // Funksjon som tar i mot en url og en feature\r\n // laster ikon for feature ved behov\r\n return (baseUrl, feature, selected): string => {\r\n // Cache-nøkkel er url + farge\r\n // Nettleser vil ta seg av caching av base-SVG, sÃ¥ derfor\r\n // cacher vi hver variant i svgCache\r\n const color = getColorFromFeature(feature);\r\n const key = baseUrl + color + selected;\r\n // Hvis ikon er etterspurt tidligere\r\n if (svgCache[key]) {\r\n if (isLoaded(key)) {\r\n // Ikon er ferdig lastet\r\n return svgCache[key] as string;\r\n } else if (isLoading(key)) {\r\n // Ikon er etterspurt, men ikke lastet ferdig\r\n const promise = svgCache[key] as Promise<string>;\r\n promise.then(() => feature.changed()); // oppdater feature nÃ¥r ikon er klart\r\n return baseUrl; // vis ikon uten riktig farge intill videre\r\n }\r\n } else {\r\n // Ikon er ikke etterspurt\r\n const promise = fetch(baseUrl) // Start lasting av ikon\r\n .then(res => res.text())\r\n .then(svgLoadedHandler(color, selected));\r\n\r\n svgCache[key] = promise; // legg promise i cache for Ã¥ signalisere at det lastes\r\n\r\n promise.then(url => {\r\n // NÃ¥r lastet, legg ikon i cache og tegn ikon pÃ¥ nytt\r\n svgCache[key] = url;\r\n feature.changed();\r\n });\r\n }\r\n return baseUrl;\r\n };\r\n}\r\n","export enum DamageCause {\r\n Lynx = 1,\r\n Wolverine = 2,\r\n Bear = 3,\r\n Wolf = 4,\r\n Eagle = 5,\r\n UnknownProtected = 6,\r\n}\r\n","// Used for analysed DNA-samples\r\nexport enum CarnivoreObserved {\r\n Lynx = 1,\r\n Wolverine = 2,\r\n Bear = 3,\r\n Wolf = 4,\r\n Eagle = 5,\r\n RedFox = 6,\r\n ArcticFox = 7,\r\n Dog = 8,\r\n Unknown = 14,\r\n Mink = 15,\r\n Marten = 17,\r\n}\r\n","import {Feature, Map, View} from 'ol';\r\nimport Select, {SelectEvent} from 'ol/interaction/Select';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport Overlay from 'ol/Overlay';\r\nimport {addProjection, get as getProjection} from 'ol/proj';\r\nimport {register} from 'ol/proj/proj4';\r\nimport Cluster from 'ol/source/Cluster';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport proj4 from 'proj4';\r\nimport {MutableRefObject, useEffect, useRef} from 'react';\r\nimport {Observable, OperatorFunction, Subject, Subscription} from 'rxjs';\r\nimport {filter, map} from 'rxjs/operators';\r\nimport {fromOnable} from '../helpers';\r\nimport {isStedfesting} from '../model/stedfesting/Stedfesting';\r\nimport {Stedfesting} from '../model/stedfesting/StedfestingTypes';\r\nimport {store, useActionCreator} from '../store';\r\nimport {requestGKToken, selectStedfesting} from '../store/map/actions';\r\nimport {setTooltip} from '../store/tooltip/actions';\r\nimport {initMapListeners} from './mapActionHandler';\r\nimport {MapActionType} from './mapActions';\r\nimport {defs} from './proj4-defs';\r\nimport {getStyle} from './styles';\r\nimport {MapAction} from './types';\r\nimport {defaults as InteractionDefaults} from 'ol/interaction';\r\nimport {MapProjection} from '../constants/mapProjection';\r\n\r\nconst port$ = new Subject<MapAction<any>>();\r\n\r\nconst debug = <T>(debug: boolean): OperatorFunction<MapAction<T>, MapAction<T>> =>\r\n map(value => {\r\n if (debug) {\r\n // eslint-disable-next-line no-console\r\n console.log('DEBUG', value);\r\n }\r\n return value;\r\n });\r\n\r\nexport function onMapAction<T>(filterType: MapActionType): Observable<T> {\r\n return port$.pipe(\r\n filter((value: MapAction<T>): boolean => value.type === filterType),\r\n debug(false),\r\n map((val): T => val.value)\r\n );\r\n}\r\n\r\nexport function mapDispatch<T>(action: MapAction<T>): void {\r\n return port$.next(action);\r\n}\r\n\r\nexport const pointSource = new VectorSource();\r\n\r\nexport const clusterSource = new Cluster({\r\n distance: 60,\r\n source: pointSource,\r\n});\r\n\r\nconst pointLayer = new VectorLayer({\r\n source: clusterSource,\r\n zIndex: 20,\r\n style: getStyle,\r\n});\r\npointLayer.set('layerName', 'stedfesting');\r\n\r\nexport const select = new Select({\r\n layers: [pointLayer],\r\n hitTolerance: 10,\r\n});\r\n\r\n//Setup\r\nproj4.defs(defs);\r\nregister(proj4);\r\nconst utm33 = getProjection(MapProjection.EPSG_32633);\r\nconst extent = [-2500000, 3500000, 3045984, 9045984];\r\nutm33.setExtent(extent);\r\naddProjection(utm33);\r\n\r\nconst view = new View({\r\n projection: utm33,\r\n center: [270728, 7041841],\r\n zoom: 4,\r\n maxZoom: 12,\r\n minZoom: 2,\r\n // Begrenser extent for Ã¥ ikke kunne se kanten pÃ¥ kartene\r\n extent: [-1090000, 5600000, 2150000, 8130000] // [minx, miny, maxx, maxy]\r\n});\r\n\r\nconst interactions = InteractionDefaults({\r\n altShiftDragRotate: false,\r\n pinchRotate: false,\r\n});\r\n\r\nexport const olMap = new Map({\r\n target: '#map',\r\n controls: [],\r\n interactions: interactions,\r\n layers: [\r\n // new TileLayer({\r\n // source: new OSM()\r\n // }),\r\n pointLayer,\r\n ],\r\n view: view,\r\n});\r\n\r\nexport function useMap(map: Map): MutableRefObject<any> {\r\n const mapRef = useRef();\r\n useSelect(olMap);\r\n useClusterSize();\r\n\r\n useEffect(() => {\r\n const sub$: Subscription[] = initMapListeners();\r\n \r\n // Setter gkt (gatekeeper-token) pÃ¥ kartlag-urlene som bruker token \r\n store.dispatch(requestGKToken());\r\n \r\n return function cleanUp() {\r\n sub$.forEach(sub => sub.unsubscribe());\r\n };\r\n }, []);\r\n\r\n useEffect((): void => {\r\n if (mapRef.current) {\r\n map.setTarget(mapRef.current);\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n // map.updateSize();\r\n });\r\n\r\n return mapRef;\r\n}\r\n\r\nexport const useSelect = (map: Map): [Stedfesting, (nyStedfesting: Stedfesting, nextNum: number) => void, number] => {\r\n const setSelectedStedfestings = useActionCreator(selectStedfesting);\r\n const setTooltipStedfesting = useActionCreator(setTooltip);\r\n\r\n useEffect(() => {\r\n const select$ = fromOnable(select, 'select').subscribe(() => clusterSource.changed());\r\n\r\n const selectHandler = (event): void => {\r\n const unclustered = getUnclusteredFeatures(event.selected);\r\n setSelectedStedfestings(unclustered.map(i => i.getProperties().stedfesting));\r\n select.getFeatures().clear();\r\n select.getFeatures().push(new Feature());\r\n\r\n if ((unclustered || []).length) {\r\n const { stedfesting } = unclustered[0].getProperties();\r\n if (isStedfesting(stedfesting)) {\r\n setTooltipStedfesting(stedfesting);\r\n }\r\n } else {\r\n setTooltipStedfesting(null);\r\n }\r\n };\r\n select.on('select', selectHandler);\r\n return () => {\r\n select.un('select', selectHandler);\r\n select$.unsubscribe();\r\n };\r\n }, [map]);\r\n return;\r\n};\r\n\r\nolMap.addInteraction(select);\r\n\r\nexport const useClusterSize = (): void => {\r\n useEffect(() => {\r\n const zoomHandler = (): void => {\r\n const zoom = olMap.getView().getZoom();\r\n const distance = (pointLayer.getSource() as Cluster).getDistance();\r\n if (zoom >= 10 && distance !== 30) {\r\n (pointLayer.getSource() as Cluster).setDistance(30);\r\n } else if (zoom < 10 && distance !== 60) {\r\n (pointLayer.getSource() as Cluster).setDistance(60);\r\n }\r\n };\r\n view.on('change:resolution', zoomHandler);\r\n return () => view.un('change:resolution', zoomHandler);\r\n });\r\n};\r\n\r\n/**\r\n * Tar inn en array med features hvor noen av featurene kan være cluster-features, og returnerer en liste med rene uclustrede features\r\n * @param {Array<modules:ol/Feature>} features\r\n * @returns {Array<modules:ol/Feature>} features\r\n */\r\nexport function getUnclusteredFeatures(features: Feature[]): Feature[] {\r\n const selectedFeatures: Feature[] = [];\r\n\r\n features.forEach(feature => {\r\n if (feature.get('features'))\r\n // Cluster\r\n feature.get('features').forEach((clusteredFeature: Feature) => selectedFeatures.push(clusteredFeature));\r\n else selectedFeatures.push(feature); // Ikke Cluster\r\n });\r\n\r\n return selectedFeatures;\r\n}\r\n\r\nexport function setOverlay(ref, coordinate): void {\r\n const popup = new Overlay({\r\n element: ref,\r\n stopEvent: false,\r\n });\r\n\r\n popup.setPosition(coordinate);\r\n olMap.addOverlay(popup);\r\n}\r\n\r\n/* eslint-disable no-undef */\r\n//@ts-ignore\r\nwindow.olMap = olMap;\r\n","import { Action } from 'redux';\r\nimport { Layer, LayerCollection } from '../../model/layer/layer';\r\nimport { Stedfesting } from '../../model/stedfesting/StedfestingTypes';\r\n\r\nexport type MapState = {\r\n layers: LayerCollection;\r\n stedfesting: Stedfesting[];\r\n selectedStedfesting: Stedfesting[];\r\n hoveredStedfesting: Stedfesting;\r\n errorLoadingKartlag: string;\r\n};\r\n\r\nexport type LayerAction = Action & {\r\n layers: LayerCollection;\r\n};\r\n\r\nexport type LayerToggleAction = Action & {\r\n layer: Layer;\r\n};\r\n\r\nexport type LayerGroupToggleAction = Action & {\r\n layers: LayerCollection;\r\n active: boolean;\r\n};\r\n\r\nexport type StedfestingAction = Action & {\r\n stedfestings: Stedfesting[];\r\n};\r\n\r\nexport type SelectedStedfestingAction = Action & {\r\n selectedStedfesting: Stedfesting[];\r\n};\r\n\r\nexport type HoveredStedfestingAction = Action & {\r\n hoveredStedfesting: Stedfesting;\r\n};\r\n\r\nexport type SetKartlagFeilerAction = Action & {\r\n kartlagnavn: string;\r\n};\r\n\r\nexport const REQUEST_GKTOKEN = '@map/REQUEST_GKTOKEN';\r\nexport const INIT_LAYERS = '@map/INIT_LAYERS';\r\nexport const TOGGLE_LAYER = '@map/TOGGLE_LAYER';\r\nexport const TOGGLE_LAYER_GROUP = '@map/TOGGLE_LAYER_GROUP';\r\nexport const SET_STEDFESTING = '@map/SET_STEDFESTINGS';\r\nexport const SELECT_STEDFESTING = '@map/SELECT_STEDFESTING';\r\nexport const HOVER_STEDFESTING = '@map/HOVER_STEDFESTING';\r\nexport const CLEAR_SELECTED = '@map/CLEAR_SELECTED';\r\nexport const KARTLAGFEILER = '@Kartlag/KARTLAGFEILER'\r\n","import { Action, AnyAction } from 'redux';\r\nimport { mapDispatch } from '../../map/map';\r\nimport { addFeatures, clearFeatures } from '../../map/mapActions';\r\nimport { Layer, LayerCollection } from '../../model/layer/layer';\r\nimport { Stedfesting } from '../../model/stedfesting/StedfestingTypes';\r\nimport {\r\n INIT_LAYERS,\r\n LayerAction,\r\n LayerGroupToggleAction,\r\n LayerToggleAction,\r\n REQUEST_GKTOKEN,\r\n SelectedStedfestingAction,\r\n SELECT_STEDFESTING,\r\n SET_STEDFESTING,\r\n StedfestingAction,\r\n TOGGLE_LAYER,\r\n TOGGLE_LAYER_GROUP,\r\n HoveredStedfestingAction,\r\n HOVER_STEDFESTING,\r\n CLEAR_SELECTED,\r\n KARTLAGFEILER\r\n} from './types';\r\nimport fromPairs from 'ramda/es/fromPairs';\r\n\r\nexport function requestGKToken(): Action {\r\n return {\r\n type: REQUEST_GKTOKEN,\r\n };\r\n}\r\n\r\nexport const toLayerCollection = (layers: Layer[]): LayerCollection =>\r\n fromPairs(layers.map(layer => [layer.id, layer]));\r\n\r\nexport function setLayers(layers: Layer[]): LayerAction {\r\n const layerMap = toLayerCollection(layers);\r\n return {\r\n type: INIT_LAYERS,\r\n layers: layerMap,\r\n };\r\n}\r\n\r\nexport function toggleLayer(layer: Layer): LayerToggleAction {\r\n return {\r\n type: TOGGLE_LAYER,\r\n layer,\r\n };\r\n}\r\n\r\nexport function toggleLayerGroup(layerGroup: LayerCollection, active: boolean): LayerGroupToggleAction {\r\n return {\r\n type: TOGGLE_LAYER_GROUP,\r\n layers: layerGroup,\r\n active,\r\n };\r\n}\r\n\r\nexport function setStedfesting(stedfestings: Stedfesting[]): StedfestingAction {\r\n mapDispatch(clearFeatures());\r\n mapDispatch(addFeatures(stedfestings));\r\n return {\r\n type: SET_STEDFESTING,\r\n stedfestings,\r\n };\r\n}\r\n\r\nexport function selectStedfesting(selectedStedfesting: Stedfesting[]): SelectedStedfestingAction {\r\n return {\r\n type: SELECT_STEDFESTING,\r\n selectedStedfesting,\r\n };\r\n}\r\n\r\nexport function hoverStedfesting(hoveredStedfesting: Stedfesting): HoveredStedfestingAction {\r\n return {\r\n type: HOVER_STEDFESTING,\r\n hoveredStedfesting,\r\n };\r\n}\r\n\r\nexport function clearSelected(): Action {\r\n return {\r\n type: CLEAR_SELECTED,\r\n };\r\n}\r\n\r\nexport function setKartlagFeiler(kartlagnavn: string): AnyAction{\r\n return {\r\n type: KARTLAGFEILER,\r\n kartlagnavn\r\n };\r\n}\r\n","import WMTSCapabilities from 'ol/format/WMTSCapabilities';\r\nimport BaseLayer from 'ol/layer/Base';\r\nimport TileLayer from 'ol/layer/Tile';\r\nimport VectorLayer from 'ol/layer/Vector';\r\nimport {bbox} from 'ol/loadingstrategy';\r\nimport TileWMS from 'ol/source/TileWMS';\r\nimport VectorSource from 'ol/source/Vector';\r\nimport WMTS, {optionsFromCapabilities} from 'ol/source/WMTS';\r\nimport {defaultTo} from 'ramda';\r\nimport {AccessMethod, Layer, LayerType} from '../model/layer/layer';\r\nimport {VectorLayerLoader} from './vectorLayerLoader';\r\nimport {bufferTime, filter, map, mapTo} from 'rxjs/operators';\r\nimport {fromEventPattern, merge, ReplaySubject} from 'rxjs';\r\nimport {setKartlagFeiler} from '../store/map/actions';\r\nimport {store} from '../store';\r\n\r\ntype ProxyToken = {\r\n tileToken: string;\r\n};\r\n\r\nconst proxyToken: Promise<ProxyToken> = fetch('/api/mapproxytoken').then(res => res.json());\r\n\r\nconst addGktToken = (token: string) => (url: string) => {\r\n const hasParam = url.match(/.*\\?((.*=.*)(&?))+/);\r\n if (hasParam) {\r\n return `${url}&gkt=${token}`;\r\n } else {\r\n return `${url}?gkt=${token}`;\r\n }\r\n};\r\n\r\nconst addTokenToConfig = (token: string, config: Layer): Layer => ({\r\n ...config,\r\n urls: (config.urls || []).map(addGktToken(token)),\r\n});\r\n\r\nexport function isResolvedBaseLayer(layer: BaseLayer | Promise<TileLayer<WMTS | TileWMS>>): layer is BaseLayer {\r\n return layer instanceof BaseLayer;\r\n}\r\n\r\nexport function isPromiseOfLayer(layer: BaseLayer | Promise<TileLayer<WMTS | TileWMS>>): layer is Promise<TileLayer<WMTS | TileWMS>> {\r\n return !!(layer && (layer as Promise<TileLayer<WMTS | TileWMS>>).then);\r\n}\r\n\r\nexport const createLayer = (layer: Layer): BaseLayer | Promise<TileLayer<WMTS | TileWMS>> => {\r\n switch (layer.type) {\r\n case LayerType.WMS:\r\n return createLayerWms(layer);\r\n case LayerType.WMTS:\r\n return createLayerWmts(layer);\r\n case LayerType.VECTOR:\r\n return createLayerVector(layer);\r\n default:\r\n return null;\r\n }\r\n};\r\n\r\nfunction createLayerVector(layer: Layer): VectorLayer<VectorSource> {\r\n const source = new VectorSource({\r\n strategy: bbox,\r\n });\r\n source.setLoader(VectorLayerLoader(source, layer));\r\n const vectorLayer = new VectorLayer({\r\n source,\r\n ...layer.options,\r\n });\r\n vectorLayer.set('layerName', layer.id);\r\n return vectorLayer;\r\n}\r\n\r\n\r\nfunction createAuthHeaders(layer: Layer) {\r\n if (layer.access != AccessMethod.MAPP) {\r\n return {};\r\n }\r\n return fetch('api/mapproxytoken')\r\n .then(res => res.json())\r\n .then(json => {\r\n return {\r\n headers: {\r\n Authorization: `Bearer ${json.tileToken}`\r\n }\r\n }\r\n });\r\n}\r\n\r\nasync function createLayerWmts(layer: Layer): Promise<TileLayer<WMTS>> {\r\n const capabilitiesParser = new WMTSCapabilities();\r\n const headers = await createAuthHeaders(layer);\r\n try {\r\n const text = await fetch(layer.urls[0], headers)\r\n .then(res => {\r\n if (!res.ok) {\r\n Promise.reject(res);\r\n }\r\n return res.text();\r\n });\r\n\r\n const capabilities = capabilitiesParser.read(text);\r\n const options = optionsFromCapabilities(capabilities, {\r\n layer: layer.params.LAYERS,\r\n format: layer.params.FORMAT,\r\n crossOrigin: 'anonymous',\r\n matrixSet: layer.params.TILEMATRIXSET,\r\n projection: layer.params.PROJECTION,\r\n });\r\n \r\n const source = new WMTS(options);\r\n \r\n if (layer.access === AccessMethod.MAPP) {\r\n source.setUrl(layer.tileUrl)\r\n source.setTileLoadFunction(createMapProxyTileLoader(proxyToken));\r\n }\r\n \r\n const tile = new TileLayer<WMTS>({\r\n preload: Infinity,\r\n source,\r\n visible: layer.options.visible,\r\n zIndex: layer.options.zIndex\r\n });\r\n\r\n\r\n tile.set('layerName', layer.id);\r\n return tile;\r\n\r\n } catch {\r\n throw `Could not load layer ${layer.id}`;\r\n }\r\n}\r\n\r\nfunction createLayerWms(layer: Layer): TileLayer<TileWMS> {\r\n const {\r\n params,\r\n options: { zIndex, visible, maxResolution },\r\n urls,\r\n } = layer;\r\n\r\n const defaultMaxRes = defaultTo(Number.MAX_SAFE_INTEGER);\r\n\r\n const source = new TileWMS({\r\n urls,\r\n params,\r\n crossOrigin: 'anonymous',\r\n });\r\n\r\n const l = new TileLayer({\r\n preload: Infinity,\r\n zIndex,\r\n visible,\r\n minResolution: 0,\r\n maxResolution: defaultMaxRes(maxResolution),\r\n source,\r\n });\r\n\r\n if (layer.access === AccessMethod.MAPP) {\r\n source.setTileLoadFunction(createMapProxyTileLoader(proxyToken));\r\n }\r\n\r\n l.set('layerName', layer.id);\r\n return l;\r\n}\r\n\r\nexport const setTileLoadeError = function (layer: TileLayer<TileWMS | WMTS>): void {\r\n const source = layer.getSource();\r\n\r\n const error = fromEventPattern(\r\n handler => source.on('tileloaderror', handler),\r\n handler => source.un('tileloaderror', handler)\r\n );\r\n\r\n const success = fromEventPattern(\r\n handler => source.on('tileloadend', handler),\r\n handler => source.un('tileloadend', handler)\r\n );\r\n\r\n const errorSuccess = merge(error.pipe(mapTo('error')), success.pipe(mapTo('success')));\r\n\r\n const errorSuccessBuffered = errorSuccess.pipe(\r\n bufferTime(10000),\r\n map(val => ({\r\n success: val.filter(v => v === 'success').length,\r\n error: val.filter(v => v === 'error').length,\r\n })),\r\n filter(val => val.error !== 0),\r\n filter(val => !!(!val.success && val.error)),\r\n mapTo(layer.get('title'))\r\n );\r\n\r\n const replayError = new ReplaySubject();\r\n\r\n errorSuccessBuffered.subscribe(replayError);\r\n\r\n layer.set('layerFailed$', replayError);\r\n errorSuccessBuffered.subscribe((title) => {\r\n layer.setVisible(false);\r\n store.dispatch(setKartlagFeiler(title));\r\n });\r\n};\r\n\r\n\r\nexport const withBaatToken = (layerArray: Layer[], token: string): Layer[] => {\r\n const withBaat = layerArray\r\n .filter(layer => layer.access === AccessMethod.BAAT)\r\n .map(layer => addTokenToConfig(token, layer));\r\n const withoutBaat = layerArray.filter(l => l.access !== AccessMethod.BAAT);\r\n return [...withBaat, ...withoutBaat];\r\n};\r\n\r\nasync function loadImage(uri, token): Promise<string> {\r\n const blob = await fetch(uri, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token.tileToken}`,\r\n },\r\n }).then(res => res.blob());\r\n\r\n return new Promise(resolve => {\r\n const reader = new FileReader();\r\n reader.addEventListener('load', () => {\r\n resolve(reader.result as string);\r\n });\r\n reader.readAsDataURL(blob);\r\n });\r\n}\r\n\r\nfunction createMapProxyTileLoader(tokenPromise) {\r\n return async (imageTile, src) => {\r\n const token = await tokenPromise;\r\n imageTile.getImage().src = await loadImage(src, token);\r\n };\r\n}\r\n","import toPairs from 'ramda/es/toPairs';\r\nimport values from 'ramda/es/values';\r\nimport { Reducer } from 'redux';\r\nimport { store } from '..';\r\nimport { layers } from '../../constants/layers';\r\nimport { transparentEffect } from '../../helpers';\r\nimport { withBaatToken } from '../../map/layerLoader';\r\nimport { mapDispatch } from '../../map/map';\r\nimport { addLayersToMap, toggleMapLayers } from '../../map/mapActions';\r\nimport { Layer, isVisible, LayerGroup } from '../../model/layer/layer';\r\nimport { setLayers, toLayerCollection } from './actions';\r\nimport {\r\n CLEAR_SELECTED,\r\n HoveredStedfestingAction,\r\n HOVER_STEDFESTING,\r\n INIT_LAYERS,\r\n LayerAction,\r\n LayerGroupToggleAction,\r\n MapState,\r\n REQUEST_GKTOKEN,\r\n SelectedStedfestingAction,\r\n SELECT_STEDFESTING,\r\n SET_STEDFESTING,\r\n StedfestingAction,\r\n TOGGLE_LAYER_GROUP, \r\n KARTLAGFEILER, \r\n SetKartlagFeilerAction,\r\n} from './types';\r\nimport {curry, identity} from 'ramda';\r\n\r\nconst initialState: MapState = {\r\n layers: {},\r\n stedfesting: [],\r\n selectedStedfesting: [],\r\n hoveredStedfesting: null,\r\n errorLoadingKartlag: \"\"\r\n};\r\n\r\nconst mapLayers = localStorage.mapLayers || [];\r\nlet storedLayers: string[] = [];\r\ntry {\r\n storedLayers = JSON.parse(mapLayers);\r\n} catch (e) {\r\n localStorage.clear();\r\n}\r\nconst layerInSelectedLayersGroup = (selectedArray: Layer[], layer: Layer): boolean =>\r\n selectedArray[0].group && layer.group && selectedArray[0].group === layer.group;\r\n\r\nconst toggleLayerVisibility = (layer: Layer): void =>\r\n (layer.options = {\r\n ...layer.options,\r\n visible: !layer.options.visible,\r\n });\r\nconst disableLayerVisibility = (layer: Layer): void => {\r\n layer.options = {\r\n ...layer.options,\r\n visible: false,\r\n };\r\n};\r\n\r\nexport const mapReducer: Reducer<MapState> = (state = initialState, action): MapState => {\r\n switch (action.type) {\r\n case REQUEST_GKTOKEN: {\r\n getGKToken();\r\n return state;\r\n }\r\n\r\n case INIT_LAYERS: {\r\n const { layers } = action as LayerAction;\r\n const layersArray: Layer[] = toPairs(layers).map(([name, layer]) => ({\r\n ...layer,\r\n options: {\r\n ...layer.options,\r\n visible: storedLayers.length > 0 ? storedLayers.includes(name) : layer.options.visible,\r\n },\r\n }));\r\n mapDispatch(addLayersToMap(layersArray));\r\n const layerCollection = toLayerCollection(layersArray);\r\n\r\n return {\r\n ...state,\r\n layers: layerCollection,\r\n };\r\n }\r\n case TOGGLE_LAYER_GROUP: {\r\n const { layers, active } = action as LayerGroupToggleAction;\r\n\r\n const setVisible = curry(\r\n (visible: boolean, layer: Layer): Layer => ({\r\n ...layer,\r\n options: {\r\n ...layer.options,\r\n visible,\r\n },\r\n })\r\n );\r\n\r\n const hasGroup = values(layers).some(layer => layer.group in LayerGroup);\r\n\r\n const groups = values(layers).map(layer => layer.group).filter(identity);\r\n \r\n const layersInGroup = hasGroup\r\n ? toLayerCollection(\r\n values(state.layers)\r\n .filter(layer => groups.includes(layer.group))\r\n .map(setVisible(false))\r\n )\r\n : {};\r\n // Alle endrede kartlag oppdateres med riktig visible-verdi\r\n const changedLayers = toLayerCollection(values(layers).map<Layer>(setVisible(active)));\r\n\r\n // Oppretter ny MapState\r\n const newState: MapState = {\r\n ...state,\r\n layers: {\r\n ...state.layers,\r\n ...layersInGroup,\r\n ...changedLayers,\r\n },\r\n };\r\n\r\n // Varsler kartet om hvilke kartlag som nÃ¥ skal være aktiv\r\n const visibleLayerIds = values(newState.layers)\r\n .filter(isVisible)\r\n .map(layer => layer.id);\r\n mapDispatch(toggleMapLayers(visibleLayerIds));\r\n\r\n return newState;\r\n }\r\n\r\n case SET_STEDFESTING: {\r\n const { stedfestings } = action as StedfestingAction;\r\n return {\r\n ...state,\r\n stedfesting: stedfestings,\r\n };\r\n }\r\n\r\n case SELECT_STEDFESTING: {\r\n const { selectedStedfesting } = action as SelectedStedfestingAction;\r\n return {\r\n ...state,\r\n selectedStedfesting: selectedStedfesting,\r\n };\r\n }\r\n\r\n case HOVER_STEDFESTING: {\r\n const { hoveredStedfesting } = action as HoveredStedfestingAction;\r\n return {\r\n ...state,\r\n hoveredStedfesting: hoveredStedfesting,\r\n };\r\n }\r\n\r\n case CLEAR_SELECTED: {\r\n return {\r\n ...state,\r\n selectedStedfesting: [],\r\n };\r\n }\r\n \r\n case KARTLAGFEILER: {\r\n const { kartlagnavn } = action as SetKartlagFeilerAction;\r\n return {\r\n ...state,\r\n errorLoadingKartlag: kartlagnavn\r\n }\r\n }\r\n \r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\nconst setToken = (token: string): LayerAction => store.dispatch(setLayers(withBaatToken(layers, token)));\r\n\r\nfunction getGKToken(): void {\r\n fetch('/api/gktoken', { headers: { Accept: 'text/html' } })\r\n .then(result => result.text())\r\n .then(text => text.replace(/\"/g, ''))\r\n .then(transparentEffect(setToken))\r\n .catch(err => {\r\n throw Error(err);\r\n });\r\n}\r\n","export enum MenuActionType {\r\n TOGGLE = '@menu/TOGGLE',\r\n OPEN = '@menu/OPEN',\r\n CLOSE = '@menu/CLOSE'\r\n}\r\n\r\nexport type MenuState = {\r\n open: boolean;\r\n};\r\n","import { MenuActionType, MenuState } from './types';\r\nimport { AnyAction, Reducer } from 'redux';\r\n\r\nconst initialState: MenuState = {\r\n open: false\r\n};\r\n\r\nconst reducer: Reducer<MenuState> = (state = initialState, action: AnyAction): MenuState => {\r\n switch (action.type) {\r\n case MenuActionType.OPEN:\r\n return {\r\n ...state,\r\n open: true\r\n };\r\n case MenuActionType.CLOSE:\r\n return {\r\n ...state,\r\n open: false\r\n };\r\n case MenuActionType.TOGGLE:\r\n return {\r\n ...state,\r\n open: !state.open\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport { reducer as menuReducer };\r\n","export enum LocationType {\r\n Country = 0,\r\n County = 1,\r\n Municipality = 2,\r\n Region = 3,\r\n}","import {\r\n sheepCompensationArea,\r\n sheepCompensationDamageCause,\r\n reindeerCompensationDamageCause,\r\n reindeerCompensationArea,\r\n} from '../../constants/statistics';\r\nimport { Action } from 'redux';\r\nimport {ReindeerLocation} from \"../../model/area/reindeerLocation\";\r\n\r\nexport type NumberListItem = {\r\n value: number;\r\n label: string;\r\n}\r\n\r\nexport type StringListItem = {\r\n value: string;\r\n label: string;\r\n}\r\n\r\nexport type Listeelement =\r\n{\r\n id: string;\r\n tekst: string;\r\n}\r\n\r\nexport type RefundDataListdata = {\r\n reinbeitedistrikt: StringListItem[];\r\n reinbeiteomrÃ¥der: StringListItem[];\r\n sauerstatningÃ…r: NumberListItem[];\r\n reinerstatningÃ…r: NumberListItem[];\r\n}\r\n\r\n\r\nexport type RefundFilter = {\r\n FromYear: NumberListItem;\r\n ToYear: NumberListItem;\r\n FromYearRein: NumberListItem;\r\n ToYearRein: NumberListItem;\r\n Region: string;\r\n County: string;\r\n Municipality: string;\r\n Reinbeiteomrade: string;\r\n Reinbeitedistrikt: string;\r\n}\r\n\r\nexport type RefundSearchFilter = {\r\n FromYear: number;\r\n ToYear: number;\r\n Region: string;\r\n County: string;\r\n Municipality: string;\r\n Reinbeiteomrade: string;\r\n Reinbeitedistrikt: string;\r\n}\r\n\r\nexport type SheepStatistics = {\r\n sheepCompensationArea: sheepCompensationArea[];\r\n damageCauseList: sheepCompensationDamageCause[];\r\n}\r\n\r\nexport type ReindeerStatistics = {\r\n reindeerCompensationArea: reindeerCompensationArea[];\r\n damageCauseList: reindeerCompensationDamageCause[];\r\n}\r\n\r\nexport type RefundDataState = {\r\n readonly refundFilter: RefundFilter;\r\n readonly sheepStatistics: SheepStatistics;\r\n readonly reindeerStatistics: ReindeerStatistics;\r\n readonly isFetching: boolean;\r\n readonly listData: RefundDataListdata;\r\n}\r\n\r\n//Actiontypes\r\nexport const SET_ISFETCHING = '@refund/SET_ISFETCHING';\r\nexport const UPDATE_LOCATION = '@refund/UPDATE_LOCATION';\r\nexport const UPDATE_LOCATIONREINDEER = '@refund/UPDATE_LOCATIONREINDEER';\r\nexport const UPDATE_FROMYEAR = '@refund/UPDATE_FROMYEAR';\r\nexport const UPDATE_TOYEAR = '@refund/UPDATE_TOYEAR';\r\nexport const UPDATE_FROMYEAR_REIN = '@refund/UPDATE_FROMYEAR_REIN';\r\nexport const UPDATE_TOYEAR_REIN = '@refund/UPDATE_TOYEAR_REIN';\r\nexport const REQUEST_REFUNDLISTDATA = '@refund/REQUEST_REFUNDLISTDATA';\r\nexport const RECEIVE_REFUNDLISTDATA = '@refund/RECEIVE_REFUNDLISTDATA';\r\nexport const RECEIVE_REFUNDSEARCHRESULTSHEEP = '@refund/RECEIVE_REFUNDSEARCHRESULTSHEEP';\r\nexport const RECEIVE_REFUNDSEARCHRESULTREINDEER = '@refund/RECEIVE_REFUNDSEARCHRESULTREINDEER';\r\n\r\n//Actions\r\ntype RefundUpdateAction = {\r\n type: typeof UPDATE_LOCATION;\r\n location: string;\r\n}\r\n\r\ntype RefundUpdateLocationReindeerAction = {\r\n type: typeof UPDATE_LOCATIONREINDEER;\r\n location: ReindeerLocation;\r\n}\r\n\r\ntype RefundUpdateFromYearAction = {\r\n type: typeof UPDATE_FROMYEAR;\r\n fromYear: number;\r\n}\r\n\r\ntype RefundUpdateToYearAction = {\r\n type: typeof UPDATE_TOYEAR;\r\n toYear: number;\r\n}\r\n\r\ntype RequestRefundListData = {\r\n type: typeof REQUEST_REFUNDLISTDATA;\r\n}\r\n\r\ntype ReceiveRefundListData = {\r\n type: typeof RECEIVE_REFUNDLISTDATA;\r\n result: RefundDataListdata;\r\n}\r\ntype ReceiveRefundSearchResultSheep = {\r\n type: typeof RECEIVE_REFUNDSEARCHRESULTSHEEP;\r\n result: SheepStatistics;\r\n}\r\n\r\ntype ReceiveRefundSearchResultReindeer = {\r\n type: typeof RECEIVE_REFUNDSEARCHRESULTREINDEER;\r\n result: ReindeerStatistics;\r\n}\r\n\r\nexport type isLoadingAction = Action & {\r\n isFetching: boolean;\r\n}\r\n\r\nexport type RefundFetchActionTypes =\r\n | RequestRefundListData\r\n | ReceiveRefundListData\r\n | ReceiveRefundSearchResultSheep\r\n | RefundUpdateAction\r\n | RefundUpdateFromYearAction\r\n | RefundUpdateToYearAction\r\n | ReceiveRefundSearchResultReindeer\r\n | RefundUpdateLocationReindeerAction\r\n","export enum ReindeerLocationType {\r\n Country = 0,\r\n Reinbeiteomrade = 1,\r\n Reinbeitedistrikt = 2\r\n}\r\n","import { Reducer } from 'redux';\r\nimport { LocationType } from '../../constants/locationType';\r\nimport {head} from 'ramda';\r\nimport {\r\n sheepCompensationArea,\r\n sheepCompensationDamageCause,\r\n reindeerCompensationArea,\r\n reindeerCompensationDamageCause,\r\n} from '../../constants/statistics';\r\nimport {\r\n RECEIVE_REFUNDLISTDATA,\r\n RefundDataState,\r\n RefundFilter,\r\n REQUEST_REFUNDLISTDATA,\r\n SET_ISFETCHING,\r\n UPDATE_LOCATION,\r\n RECEIVE_REFUNDSEARCHRESULTSHEEP,\r\n UPDATE_FROMYEAR,\r\n UPDATE_TOYEAR,\r\n RECEIVE_REFUNDSEARCHRESULTREINDEER,\r\n UPDATE_LOCATIONREINDEER, Listeelement, UPDATE_FROMYEAR_REIN, UPDATE_TOYEAR_REIN,\r\n} from './types';\r\nimport { ReindeerLocationType } from '../../constants/reindeerLocationType';\r\n\r\nexport const initialRefundFilter: RefundFilter = {\r\n ToYear: undefined,\r\n FromYear: undefined,\r\n ToYearRein: undefined,\r\n FromYearRein: undefined,\r\n Region: '',\r\n County: '',\r\n Municipality: '',\r\n Reinbeiteomrade: '',\r\n Reinbeitedistrikt: '',\r\n};\r\n\r\nconst initState: RefundDataState = {\r\n refundFilter: initialRefundFilter,\r\n sheepStatistics: {\r\n sheepCompensationArea: [],\r\n damageCauseList: [],\r\n },\r\n reindeerStatistics: {\r\n reindeerCompensationArea: [],\r\n damageCauseList: [],\r\n },\r\n isFetching: true,\r\n listData: {\r\n reinbeitedistrikt: [],\r\n reinbeiteomrÃ¥der: [],\r\n reinerstatningÃ…r: [],\r\n sauerstatningÃ…r: [],\r\n },\r\n};\r\n\r\nconst reducer: Reducer<RefundDataState> = (state = initState, action): RefundDataState => {\r\n switch (action.type) {\r\n case UPDATE_LOCATION:\r\n if (action.location.locationType === LocationType.Country) {\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n County: '',\r\n Region: '',\r\n Municipality: '',\r\n },\r\n };\r\n }\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n County: '',\r\n Region: '',\r\n Municipality: '',\r\n [LocationType[action.location.locationType]]: action.location.value,\r\n },\r\n };\r\n case UPDATE_LOCATIONREINDEER: {\r\n if (action.location.locationType === ReindeerLocationType.Country) {\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n Reinbeiteomrade: '',\r\n Reinbeitedistrikt: '',\r\n },\r\n };\r\n }\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n Reinbeiteomrade: '',\r\n Reinbeitedistrikt: '',\r\n [ReindeerLocationType[action.location.locationType]]: action.location.value,\r\n },\r\n };\r\n }\r\n case UPDATE_FROMYEAR: {\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n FromYear: action.fromYear,\r\n },\r\n };\r\n }\r\n case UPDATE_TOYEAR: {\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n ToYear: action.toYear,\r\n },\r\n };\r\n }\r\n case UPDATE_FROMYEAR_REIN: {\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n FromYearRein: action.fromYearRein,\r\n },\r\n };\r\n }\r\n case UPDATE_TOYEAR_REIN: {\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n ToYearRein: action.toYearRein,\r\n },\r\n };\r\n }\r\n case REQUEST_REFUNDLISTDATA:\r\n return {\r\n ...state,\r\n isFetching: true,\r\n };\r\n case SET_ISFETCHING: {\r\n return {\r\n ...state,\r\n isFetching: action.isLoading,\r\n };\r\n }\r\n case RECEIVE_REFUNDLISTDATA:\r\n const sauÃ…r: Listeelement[] = action.result.sauerstatningÃ…r;\r\n const reinÃ…r: Listeelement[] = action.result.reinerstatningÃ…r;\r\n const newestYearRein: Listeelement = head(reinÃ…r);\r\n const newestYearSau: Listeelement = head(sauÃ…r);\r\n return {\r\n ...state,\r\n refundFilter: {\r\n ...state.refundFilter,\r\n FromYear: {\r\n value: Number(newestYearSau.id),\r\n label: newestYearSau.tekst\r\n },\r\n ToYear: {\r\n value: Number(newestYearSau.id),\r\n label: newestYearSau.tekst\r\n },\r\n FromYearRein: {\r\n value: Number(newestYearRein.id),\r\n label: newestYearRein.tekst\r\n },\r\n ToYearRein: {\r\n value: Number(newestYearRein.id),\r\n label: newestYearRein.tekst\r\n },\r\n },\r\n //isFetching: false,\r\n listData: {\r\n reinerstatningÃ…r: reinÃ…r.map((obj: Listeelement) => ({\r\n value: Number(obj.id),\r\n label: obj.tekst,\r\n })),\r\n reinbeitedistrikt: action.result.reinbeitedistrikt.map(obj => ({\r\n value: obj.id,\r\n label: obj.tekst,\r\n })),\r\n reinbeiteomrÃ¥der: action.result.reinbeiteomrÃ¥der.map(obj => ({ value: obj.id, label: obj.tekst })),\r\n sauerstatningÃ…r: sauÃ…r.map(obj => ({\r\n value: Number(obj.id),\r\n label: obj.tekst,\r\n })),\r\n },\r\n };\r\n case RECEIVE_REFUNDSEARCHRESULTSHEEP:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n sheepStatistics: {\r\n sheepCompensationArea: action.result.erstatningSauOmradeListe.map(obj =>\r\n mapToSheepCompensationList(obj)\r\n ),\r\n damageCauseList: action.result.erstatningSauSkadevolderListe.map(obj =>\r\n mapToDamageCauseListSheep(obj)\r\n ),\r\n },\r\n };\r\n\r\n case RECEIVE_REFUNDSEARCHRESULTREINDEER:\r\n return {\r\n ...state,\r\n isFetching: false,\r\n reindeerStatistics: {\r\n reindeerCompensationArea: action.result.erstatningReinOmrÃ¥deListe.map(obj =>\r\n mapToReindeerCompensationList(obj)\r\n ),\r\n damageCauseList: action.result.erstatningReinSkadevolderListe.map(obj =>\r\n mapToDamageCauseListReindeer(obj)\r\n ),\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nfunction mapToDamageCauseListSheep(obj: any): sheepCompensationDamageCause {\r\n const list: sheepCompensationDamageCause = {\r\n artID: obj.artID,\r\n compensatedSheep: obj.antallErstattetSau,\r\n compensatedLamb: obj.antallErstattetLam,\r\n compensatedTotal: obj.antallErstattetTotalt,\r\n percent: obj.prosent,\r\n };\r\n return list;\r\n}\r\n\r\nfunction mapToSheepCompensationList(obj: any): sheepCompensationArea {\r\n const list: sheepCompensationArea = {\r\n area: (obj.omrÃ¥de as string).split(' (N)')[0],\r\n year: obj.beitesesong,\r\n applications: obj.antallSøknaderTotalt,\r\n normalLossSheep: obj.beregnetNormaltapSau,\r\n normalLossLamb: obj.beregnetNormaltapLam,\r\n normalLossTotal: obj.beregnetNormaltapTotalt,\r\n compensatedSheep: obj.erstattetSau,\r\n compensatedLamb: obj.erstattetLam,\r\n compensatedTotal: obj.erstattetTotalt,\r\n totalLossSheep: obj.totaltTapSau,\r\n totalLossLamb: obj.totaltTapLam,\r\n totalLossTotal: obj.totaltTapTotalt,\r\n compensationAmount: obj.erstatningsbelopTotalt,\r\n };\r\n return list;\r\n}\r\n\r\nfunction mapToDamageCauseListReindeer(obj: any): reindeerCompensationDamageCause {\r\n const list: reindeerCompensationDamageCause = {\r\n artID: obj.artID,\r\n compensatedCalf: obj.antallErstattetKalv,\r\n compensatedBull: obj.antallErstattetOkserein,\r\n compensatedDoe: obj.antallErstattetSimlerein,\r\n compensatedDriving: obj.antallErstattetKjørerein,\r\n compensatedTotal: obj.antallErstattetTotalt,\r\n percent: obj.prosent,\r\n };\r\n return list;\r\n}\r\n\r\nfunction mapToReindeerCompensationList(obj: any): reindeerCompensationArea {\r\n const list: reindeerCompensationArea = {\r\n area: (obj.omrÃ¥de as string).split(' (N)')[0],\r\n year: obj.beitesesong,\r\n applications: obj.antallSøknader,\r\n compensatedCalf: obj.erstattetKalv,\r\n compensatedBull: obj.erstattetOkserein,\r\n compensatedDoe: obj.erstattetSimlerein,\r\n compensatedDriving: obj.erstattetKjørerein,\r\n compensatedTotal: obj.erstattetTotalt,\r\n appliedLossCalf: obj.omsøktTapKalv,\r\n appliedLossBull: obj.omsøktTapOkserein,\r\n appliedLossDoe: obj.omsøktTapSimlerein,\r\n appliedLossTotal: obj.omsøktTapTotalt,\r\n totalLossCalf: obj.totaltTapKalv,\r\n totalLossBull: obj.totaltTapOkserein,\r\n totalLossDoe: obj.totaltTapSimlerein,\r\n totalLossTotal: obj.totaltTapTotalt,\r\n compensationAmount: obj.erstatningsbeløp,\r\n };\r\n return list;\r\n}\r\n\r\nexport { reducer as RefundReducer };\r\n","import { Action } from 'redux';\r\nimport { RightPanelContent } from '../../constants/rightpanelContent';\r\n\r\nexport type RightPanelContentAction = Action & { component: RightPanelContent };\r\n\r\nexport type RightPanelState = {\r\n component: RightPanelContent;\r\n};\r\n\r\nexport const SET_RIGHTPANEL_CONTENT = '@rightpanel/SET_RIGHTPANEL_CONTENT';\r\n","export enum RightPanelContent {\r\n LayerSelector = 'layerSelect',\r\n None = 'none',\r\n}\r\n","import { Reducer } from 'redux';\r\nimport { RightPanelState, SET_RIGHTPANEL_CONTENT, RightPanelContentAction } from './types';\r\nimport { RightPanelContent } from '../../constants/rightpanelContent';\r\n\r\nconst initialState = {\r\n component: 'none' as RightPanelContent.None,\r\n};\r\n\r\nconst reducer: Reducer<RightPanelState> = (state: RightPanelState = initialState, action): RightPanelState => {\r\n switch (action.type) {\r\n case SET_RIGHTPANEL_CONTENT:\r\n action as RightPanelContentAction;\r\n return {\r\n ...state,\r\n component: action.component === state.component ? RightPanelContent.None : action.component,\r\n };\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nexport { reducer as RightPanelReducer };\r\n","import { Action } from 'redux';\r\n\r\n// Objekt som sendes til backend -> Skal være lik 'SearchFilter' modellen i backend\r\nexport type Filter = {\r\n Carnivore: number[];\r\n CarnivoreDamage: number[];\r\n Evaluation: number[];\r\n Observation: number[];\r\n Offspring: boolean;\r\n FromDate: string;\r\n ToDate: string;\r\n Country: string[];\r\n Region: string[];\r\n County: string[];\r\n Municipality: string[];\r\n IndividualNameOrID: string;\r\n Barcode: string[];\r\n Rovdjursforum: boolean;\r\n ID: string[];\r\n}\r\n\r\n// Hvordan state skal se ut i store\r\nexport type SearchFilterState = {\r\n searchFilter: Readonly<Filter>;\r\n searchinput: string;\r\n}\r\n\r\ntype Update = {\r\n searchFilter: Filter;\r\n}\r\n\r\nexport type ToggleRovdyrAction = {\r\n type: string;\r\n filterArrayName: string;\r\n id: number;\r\n}\r\n\r\nexport type ToggleLocationAction = {\r\n type: string;\r\n filterArrayName: string;\r\n stringId: string;\r\n}\r\n\r\nexport type ClearLocationAction = {\r\n type: string;\r\n}\r\n\r\nexport type UpdateFilterElementAction = {\r\n type: string;\r\n fieldName: string;\r\n payload: any;\r\n}\r\n\r\nexport type UpdateBothDatesAction = {\r\n type: string;\r\n fromDate: string;\r\n toDate: string;\r\n}\r\n\r\nexport type ToggleAllInListAction = {\r\n type: string;\r\n arrayName: string;\r\n array?: number[];\r\n}\r\n\r\nexport type SetSearchinputAction = {\r\n type: string;\r\n searchinput: string;\r\n}\r\n\r\nexport type UpdateAction = Update & Action\r\nexport type UpdatePartialAction = { searchFilterPartial: Partial<Filter> } & Action\r\n\r\n// Hvilke action types vi skal ha\r\nexport const UPDATE = '@searchFilter/UPDATE';\r\nexport const UPDATE_PARTIAL = '@searchFilter/UPDATE_PARTIAL';\r\n\r\nexport const ADD_FILTERLISTELEMENT = '@searchFilter/ADD_FILTERLISTELEMENT';\r\nexport const REMOVE_FILTERLISTELEMENT = '@searchFilter/REMOVE_FILTERLISTELEMENT';\r\nexport const ADD_LOCATIONLISTELEMENT = '@searchFilter/ADD_LOCATIONLISTELEMENT';\r\nexport const REMOVE_LOCATIONLISTELEMENT = '@searchFilter/REMOVE_LOCATIONLISTELEMENT';\r\nexport const CLEAR_LOCATIONLISTELEMENTS = '@searchFilter/CLEAR_LOCATIONLISTELEMENTS';\r\nexport const UPDATE_FILTERELEMENT = '@searchFilter/UPDATE_FILTERELEMENT';\r\nexport const UPDATE_BOTH_DATES = '@searchFilter/UPDATE_BOTH_DATES';\r\nexport const SELECT_ALL_IN_LIST = '@searchFilter/SELECT_ALL_IN_LIST';\r\nexport const DESELECT_ALL_IN_LIST = '@searchFilter/DESELECT_ALL_IN_LIST';\r\nexport const SET_SEARCHINPUT = '@searchFilter/SET_SEARCHINPUT';\r\n","import { Reducer } from 'redux';\r\nimport {\r\n ADD_FILTERLISTELEMENT,\r\n ADD_LOCATIONLISTELEMENT,\r\n CLEAR_LOCATIONLISTELEMENTS,\r\n DESELECT_ALL_IN_LIST,\r\n Filter,\r\n REMOVE_FILTERLISTELEMENT,\r\n REMOVE_LOCATIONLISTELEMENT,\r\n SearchFilterState,\r\n SELECT_ALL_IN_LIST,\r\n SET_SEARCHINPUT,\r\n UPDATE,\r\n UPDATE_BOTH_DATES,\r\n UPDATE_FILTERELEMENT,\r\n UPDATE_PARTIAL,\r\n} from './types';\r\nimport {defaultObservationsFilter} from '../../constants/observations';\r\nimport {defaultEvaluationFilter} from '../../constants/evaluation';\r\nimport {defaultCarnivoreDamageFilter} from '../../constants/carnivoreDamage';\r\nimport {dateToISOString} from '../../helpers';\r\nimport {subtractDays} from '../../components/dateFilter/dateFilter.util';\r\n\r\nconst today = dateToISOString(new Date()); \r\nconst lastThirty = subtractDays(today, 30);\r\n\r\nexport const initialSearchFilters: Filter = {\r\n Carnivore: [],\r\n CarnivoreDamage: defaultCarnivoreDamageFilter,\r\n Evaluation: defaultEvaluationFilter,\r\n Observation: defaultObservationsFilter,\r\n Offspring: false,\r\n FromDate: lastThirty,\r\n ToDate: today,\r\n Country: [],\r\n Region: [],\r\n County: [],\r\n Municipality: [],\r\n IndividualNameOrID: '',\r\n Barcode: [],\r\n Rovdjursforum: false,\r\n ID: [],\r\n};\r\n\r\nconst initialState: SearchFilterState = {\r\n searchFilter: initialSearchFilters,\r\n searchinput: '',\r\n};\r\n\r\nconst reducer: Reducer<SearchFilterState> = (state = initialState, action): SearchFilterState => {\r\n switch (action.type) {\r\n case UPDATE:\r\n return {\r\n ...state,\r\n searchFilter: action.searchFilter,\r\n };\r\n\r\n case UPDATE_PARTIAL:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n ...action.searchFilterPartial,\r\n },\r\n };\r\n\r\n case ADD_FILTERLISTELEMENT:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n [action.filterArrayName]: state.searchFilter[action.filterArrayName].concat(action.id),\r\n },\r\n };\r\n case REMOVE_FILTERLISTELEMENT:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n [action.filterArrayName]: state.searchFilter[action.filterArrayName].filter(\r\n item => item !== action.id\r\n ),\r\n },\r\n };\r\n\r\n case ADD_LOCATIONLISTELEMENT:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n [action.filterArrayName]: state.searchFilter[action.filterArrayName].concat(action.stringId),\r\n },\r\n };\r\n case REMOVE_LOCATIONLISTELEMENT:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n [action.filterArrayName]: state.searchFilter[action.filterArrayName].filter(\r\n item => item !== action.stringId\r\n ),\r\n },\r\n };\r\n\r\n case CLEAR_LOCATIONLISTELEMENTS:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n Country: [],\r\n County: [],\r\n Region: [],\r\n Municipality: [],\r\n },\r\n };\r\n\r\n case UPDATE_FILTERELEMENT:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n [action.fieldName]: action.payload,\r\n },\r\n };\r\n case UPDATE_BOTH_DATES:\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n FromDate: action.fromDate,\r\n ToDate: action.toDate,\r\n },\r\n };\r\n case SELECT_ALL_IN_LIST: {\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n [action.arrayName]: action.array,\r\n },\r\n };\r\n }\r\n\r\n case DESELECT_ALL_IN_LIST: {\r\n return {\r\n ...state,\r\n searchFilter: {\r\n ...state.searchFilter,\r\n [action.arrayName]: [],\r\n },\r\n };\r\n }\r\n\r\n case SET_SEARCHINPUT: {\r\n return {\r\n ...state,\r\n searchinput: action.searchinput,\r\n };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nexport { reducer as searchFilterReducer };\r\n","import {\r\n SET_LANGUAGE,\r\n LanguageAction,\r\n SET_ISLOADING,\r\n isLoadingAction,\r\n SiteAction,\r\n Site,\r\n SET_SITE,\r\n SET_ISINITIALIZED,\r\n isInitializedAction,\r\n} from './types';\r\nimport { Language } from '../../constants/language';\r\n\r\nexport function setLanguage(language: Language): LanguageAction {\r\n return {\r\n type: SET_LANGUAGE,\r\n language,\r\n };\r\n}\r\nexport function setIsLoading(isLoading: boolean): isLoadingAction {\r\n return {\r\n type: SET_ISLOADING,\r\n isLoading,\r\n };\r\n}\r\n\r\nexport function setSite(site: Site): SiteAction {\r\n return {\r\n type: SET_SITE,\r\n site,\r\n };\r\n}\r\n\r\nexport function setIsInitialized(isInitialized: boolean): isInitializedAction {\r\n return {\r\n type: SET_ISINITIALIZED,\r\n isInitialized,\r\n };\r\n}\r\n","import { Reducer } from 'redux';\r\nimport {\r\n SettingsState,\r\n SET_LANGUAGE,\r\n SET_ISLOADING,\r\n LanguageAction,\r\n Site,\r\n SET_SITE,\r\n SiteAction,\r\n SET_ISINITIALIZED,\r\n} from './types';\r\nimport { store } from '../index';\r\nimport { setSite, setLanguage } from './actions';\r\nimport { Language, isLang } from '../../constants/language';\r\n\r\nconst isSwedish = /.se$/.test(location.origin);\r\n// as Language.NO nødvendig, men usikker pÃ¥ hvorfor. Virker som bug knyttet til enum vs const enum\r\nconst defaultLanguage = isSwedish ? ('sv' as Language.SV) : ('no' as Language.NO);\r\nlet language: Language = defaultLanguage;\r\ntry {\r\n if (isLang(localStorage.language)) {\r\n language = localStorage.language;\r\n } else {\r\n localStorage.clear();\r\n }\r\n} catch (e) {\r\n localStorage.clear();\r\n}\r\n\r\nconst initialState: SettingsState = {\r\n language: language,\r\n isLoading: false,\r\n site: isSwedish ? Site.SE : Site.NO,\r\n isInitialized: false,\r\n};\r\n\r\nexport const settingsReducer: Reducer<SettingsState> = (state = initialState, action): SettingsState => {\r\n switch (action.type) {\r\n case SET_LANGUAGE: {\r\n const { language } = action as LanguageAction;\r\n return {\r\n ...state,\r\n language,\r\n };\r\n }\r\n\r\n case SET_SITE: {\r\n const { site } = action as SiteAction;\r\n return {\r\n ...state,\r\n site,\r\n };\r\n }\r\n\r\n case SET_ISLOADING: {\r\n return {\r\n ...state,\r\n isLoading: action.isLoading,\r\n };\r\n }\r\n\r\n case SET_ISINITIALIZED: {\r\n return {\r\n ...state,\r\n isInitialized: action.isInitialized,\r\n };\r\n }\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\n// @ts-ignore\r\nwindow.setSite = site => {\r\n if (site === 'no' || site === 'se') {\r\n store.dispatch(setSite(site === 'no' ? 0 : 1));\r\n store.dispatch(setLanguage(site === 'no' ? Language.NO : Language.SV));\r\n }\r\n};\r\n","import {IndividualData} from \"../../components/searchresultList/searchresultTitle\";\r\n\r\n// export type SidePanelFilter = {\r\n// // carnivore: number[];\r\n// };\r\n\r\nexport type MenuState = {\r\n open: boolean;\r\n};\r\n\r\nexport type SidePanelFilterState = {\r\n // sidePanelState: Readonly<SidePanelFilter>;\r\n individ: IndividualData;\r\n menuState: MenuState;\r\n};\r\n\r\nexport const UPDATE = '@sidePanel/UPDATE';\r\nexport const OPEN = '@sidePanel/OPEN';\r\nexport const CLOSE = '@sidePanel/CLOSE';\r\nexport const SET_INDIVID = '@sidePanel/SET_INDIVID';\r\nexport const REMOVE_INDIVID = '@sidePanel/SET_INDIVID';\r\n","import { Reducer } from 'redux';\r\nimport {\r\n CLOSE,\r\n MenuState,\r\n OPEN,\r\n REMOVE_INDIVID,\r\n SET_INDIVID,\r\n SidePanelFilterState,\r\n} from './types';\r\n\r\nconst initialMenuState: MenuState = {\r\n open: false\r\n};\r\n\r\nconst initialState: SidePanelFilterState = {\r\n individ: null,\r\n menuState: initialMenuState\r\n};\r\n\r\nconst reducer: Reducer<SidePanelFilterState> = (state = initialState, action): SidePanelFilterState => {\r\n switch (action.type) {\r\n case OPEN:\r\n return {\r\n ...state,\r\n menuState: {\r\n open: true\r\n }\r\n };\r\n case CLOSE:\r\n return {\r\n ...state,\r\n menuState: {\r\n open: false\r\n }\r\n };\r\n case SET_INDIVID: \r\n return {\r\n ...state,\r\n individ: action.value\r\n };\r\n case REMOVE_INDIVID:\r\n return {\r\n ...state,\r\n individ: initialState.individ\r\n }; \r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n\r\nexport { reducer as sidePanelReducer };\r\n","import { TooltipState, SET_TOOLTIP, SetTooltipAction, CLEAR_TOOLTIP } from './types';\r\nimport { AnyAction } from 'redux';\r\n\r\nconst initialState: TooltipState = {\r\n stedfesting: null\r\n};\r\n\r\nexport const tooltipReducer = (state: TooltipState = initialState, action: AnyAction): TooltipState => {\r\n switch (action.type) {\r\n case SET_TOOLTIP: {\r\n const { stedfesting } = action as SetTooltipAction;\r\n return {\r\n ...state,\r\n stedfesting\r\n };\r\n }\r\n\r\n case CLEAR_TOOLTIP: {\r\n return {\r\n ...initialState\r\n };\r\n }\r\n\r\n default: {\r\n return state;\r\n }\r\n }\r\n};\r\n","import {last, path} from 'ramda';\r\nimport { useDispatch } from 'react-redux';\r\nimport { applyMiddleware, combineReducers, createStore, Store } from 'redux';\r\nimport {composeWithDevTools} from '@redux-devtools/extension';\r\nimport thunk from 'redux-thunk';\r\nimport { Observable } from 'rxjs';\r\nimport { map, pairwise, startWith } from 'rxjs/operators';\r\nimport { mapReducer } from './map/reducer';\r\nimport { initCookieStore } from './map/sideEffects';\r\nimport { MapState } from './map/types';\r\nimport { menuReducer } from './menu/reducer';\r\nimport { MenuState } from './menu/types';\r\nimport { RefundReducer } from './refund/reducer';\r\nimport { RefundDataState } from './refund/types';\r\nimport { RightPanelReducer } from './rightpanel/reducer';\r\nimport { RightPanelState } from './rightpanel/types';\r\nimport { searchFilterReducer } from './searchfilter/reducer';\r\nimport { SearchFilterState } from './searchfilter/types';\r\nimport { settingsReducer } from './settings/reducer';\r\nimport { SettingsState } from './settings/types';\r\nimport { sidePanelReducer } from './sidePanel/reducer';\r\nimport { SidePanelFilterState } from './sidePanel/types';\r\nimport { tooltipReducer } from './tooltip/reducer';\r\nimport { TooltipState } from './tooltip/types';\r\n\r\nexport type ApplicationState = {\r\n searchFilter: SearchFilterState;\r\n settings: SettingsState;\r\n map: MapState;\r\n rightPanel: RightPanelState;\r\n sidePanelFilter: SidePanelFilterState;\r\n menu: MenuState;\r\n tooltip: TooltipState;\r\n refund: RefundDataState;\r\n};\r\n\r\nconst reducers = combineReducers<ApplicationState>({\r\n searchFilter: searchFilterReducer,\r\n settings: settingsReducer,\r\n map: mapReducer,\r\n rightPanel: RightPanelReducer,\r\n sidePanelFilter: sidePanelReducer,\r\n menu: menuReducer,\r\n tooltip: tooltipReducer,\r\n refund: RefundReducer,\r\n});\r\n\r\nexport const store = createStore(reducers, composeWithDevTools(applyMiddleware(thunk)));\r\ninitCookieStore();\r\n\r\nexport function useActionCreator<T>(action: T): T {\r\n const dispatch = useDispatch();\r\n // @ts-ignore\r\n return (...args) => dispatch(action(...args));\r\n}\r\n\r\n//https://github.com/reduxjs/redux/issues/303#issuecomment-125184409\r\nexport function observe(store: Store): Observable<ApplicationState> {\r\n return new Observable(observer => {\r\n observer.next(store.getState());\r\n return store.subscribe(() => observer.next(store.getState()));\r\n });\r\n}\r\n\r\nexport function observeProp<T>(store: Store, propPath: string[]): Observable<T> {\r\n return observe(store).pipe(\r\n startWith(null as ApplicationState),\r\n map(path<T>(propPath)),\r\n pairwise(),\r\n map(last)\r\n ) as Observable<T>;\r\n}\r\n\r\n","import { observeProp, store } from '..';\r\nimport { LayerCollection, Layer } from '../../model/layer/layer';\r\nimport filter from 'ramda/es/filter';\r\nimport keys from 'ramda/es/keys';\r\nimport { Language } from '../../constants/language';\r\n\r\nexport function initCookieStore(): void {\r\n observeProp<LayerCollection>(store, ['map', 'layers']).subscribe(layerCollection => {\r\n localStorage.setItem(\r\n 'mapLayers',\r\n JSON.stringify(keys(filter((layer: Layer) => layer.options.visible, layerCollection)))\r\n );\r\n });\r\n\r\n observeProp<Language>(store, ['settings', 'language']).subscribe(language => {\r\n localStorage.setItem('language', language);\r\n });\r\n}\r\n","import { makeStyles, Theme } from '@material-ui/core';\r\nimport { createStyles } from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport React, {ButtonHTMLAttributes, ReactElement} from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport {ApplicationState, store} from '../../store';\r\nimport { Site } from '../../store/settings/types';\r\nimport {useLanguage} from '../../i18n';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n primaryButton: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n minHeight: '40px',\r\n border: 'none',\r\n padding: '8px 16px',\r\n '&:hover': {\r\n backgroundColor: theme.palette.primary.dark,\r\n },\r\n '&:focus': {\r\n outline: `2px solid ${theme.palette.primary.main}`,\r\n outlineOffset: '2px',\r\n },\r\n '&:disabled': {\r\n visibility: 'hidden',\r\n },\r\n },\r\n secondaryButton: {\r\n backgroundColor: theme.palette.common.white,\r\n color: theme.palette.primary.main,\r\n minHeight: '40px',\r\n border: `2px solid ${store.getState().settings.site === Site.SE ? theme.palette.primary.main : theme.palette.primary.light}`,\r\n padding: '8px 16px',\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n '&:focus': {\r\n color: theme.palette.common.white,\r\n border: `2px solid ${theme.palette.primary.main}`,\r\n outline: `2px solid ${theme.palette.primary.main}`,\r\n outlineOffset: '2px',\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n '&:disabled': {\r\n visibility: 'hidden',\r\n },\r\n },\r\n linkButton: {\r\n textDecoration: 'underline',\r\n color: theme.palette.primary.main,\r\n backgroundColor: 'unset',\r\n border: '0',\r\n borderRadius: '5px',\r\n padding: '12px 3px',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n // backgroundColor: theme.palette.secondary.main,\r\n textDecoration: 'none',\r\n },\r\n '&:focus': {\r\n outline: `1px solid ${theme.palette.primary.light}`,\r\n // outlineOffset: '2px',\r\n },\r\n '&:disabled': {\r\n color: theme.palette.grey[500],\r\n textDecoration: 'none',\r\n backgroundColor: 'unset',\r\n cursor: 'unset',\r\n },\r\n },\r\n inlineLinkButton: {\r\n textDecoration: 'underline',\r\n color: theme.palette.primary.main,\r\n backgroundColor: 'unset',\r\n border: '0',\r\n padding: '0',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n textDecoration: 'none',\r\n },\r\n '&:focus': {\r\n outline: `1px solid ${theme.palette.primary.light}`,\r\n outlineOffset: '2px',\r\n },\r\n },\r\n iconFocus: {\r\n border: '0',\r\n backgroundColor: 'unset',\r\n borderRadius: '50%',\r\n padding: '10px',\r\n height: '44px',\r\n width: '44px',\r\n cursor: 'pointer',\r\n color: theme.palette.primary.dark,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n '&:focus': {\r\n backgroundColor: theme.palette.action.active,\r\n outline: 'none',\r\n },\r\n },\r\n skipContent: {\r\n position: 'absolute',\r\n left: '-2000px',\r\n top: '0',\r\n margin: '12px',\r\n backgroundColor: theme.palette.secondary.light,\r\n fontSize: '20px',\r\n padding: '16px',\r\n color: theme.palette.primary.dark,\r\n '&:focus': {\r\n left: '0px',\r\n zIndex: 100,\r\n outline: `2px solid ${theme.palette.primary.dark}`,\r\n animation: '0.5s',\r\n // outlineOffset: '3px',\r\n },\r\n },\r\n dateButton: {\r\n color: theme.palette.primary.main,\r\n border: `1px solid ${theme.palette.secondary.dark}`,\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: 0,\r\n fontSize: '16px',\r\n minHeight: '50px',\r\n padding: '8px',\r\n fontFamily: 'inherit',\r\n\r\n '& span': {\r\n margin: '0 4px',\r\n },\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n '&:focus': {\r\n outline: 'none',\r\n border: `1px solid ${theme.palette.action.active}`,\r\n backgroundColor: theme.palette.action.active,\r\n },\r\n },\r\n dateButtonSelected: {\r\n border: `1px solid ${theme.palette.secondary.dark}`,\r\n backgroundColor: theme.palette.secondary.dark,\r\n color: theme.palette.text.primary,\r\n fontWeight: 'bold',\r\n },\r\n })\r\n);\r\n\r\nexport function PrimaryButton(props: ButtonHTMLAttributes<HTMLButtonElement>): JSX.Element {\r\n const classes = useStyles({});\r\n const buttonClass = classnames(classes.primaryButton, props.className);\r\n return (\r\n <button {...props} className={buttonClass}>\r\n {props.children}\r\n </button>\r\n );\r\n}\r\n\r\nexport function SecondaryButton(props: ButtonHTMLAttributes<HTMLButtonElement>): JSX.Element {\r\n const classes = useStyles({});\r\n const buttonClass = classnames(classes.secondaryButton, props.className);\r\n return (\r\n <button {...props} className={buttonClass}>\r\n {props.children}\r\n </button>\r\n );\r\n}\r\n\r\nexport function InlineLinkButton(props: ButtonHTMLAttributes<HTMLButtonElement>): JSX.Element {\r\n const classes = useStyles({});\r\n const linkButtonClass = classnames(classes.inlineLinkButton, props.className);\r\n\r\n return (\r\n <button {...props} className={linkButtonClass}>\r\n {props.children}\r\n </button>\r\n );\r\n}\r\n\r\nexport function LinkButton(props: ButtonHTMLAttributes<HTMLButtonElement>): JSX.Element {\r\n const classes = useStyles({});\r\n const linkButtonClass = classnames(props.className, classes.linkButton, );\r\n\r\n return (\r\n <button {...props} className={linkButtonClass}>\r\n {props.children}\r\n </button>\r\n );\r\n}\r\n\r\nexport function IconButton(props: ButtonHTMLAttributes<HTMLButtonElement>): JSX.Element {\r\n const classes = useStyles({});\r\n const iconButtonClass = classnames(classes.iconFocus, props.className);\r\n\r\n return (\r\n <button {...props} className={iconButtonClass}>\r\n {props.children}\r\n </button>\r\n );\r\n}\r\n\r\nexport function HoppTilHovedinnhold({mainContentId}: {mainContentId: string}): JSX.Element {\r\n const classes = useStyles({});\r\n const l = useLanguage();\r\n return (\r\n <a href={`#${mainContentId}`} className={classes.skipContent} tabIndex={1} >\r\n {l('accessibility.skipToContent')}\r\n </a>\r\n ); \r\n}\r\n\r\nexport function SkipFilters(): JSX.Element {\r\n const classes = useStyles({});\r\n const l = useLanguage();\r\n return (\r\n <a href={'#sidepanel_btngroup'} className={classes.skipContent}>\r\n {l('accessibility.skipFilter')}\r\n </a>\r\n );\r\n}\r\n\r\ntype PresetButtonProps = {\r\n selected: boolean;\r\n onClick: () => void;\r\n}\r\n\r\nexport function PresetButton(props: PresetButtonProps & ButtonHTMLAttributes<HTMLButtonElement>): ReactElement {\r\n const classes = useStyles({});\r\n const dateButtonClass = classnames(classes.dateButton, props.className, 'date-preset-button');\r\n const dateButtonSelectedClass = classnames(classes.dateButton, classes.dateButtonSelected, props.className, 'date-preset-button');\r\n const presetButtonClass = props.selected ? dateButtonSelectedClass : dateButtonClass;\r\n return (\r\n <button {...props}\r\n className={presetButtonClass}\r\n aria-pressed={props.selected}\r\n >\r\n {props.children}\r\n </button>\r\n );\r\n}\r\n","import {ReactPlugin} from '@microsoft/applicationinsights-react-js';\r\nimport {ApplicationInsights} from '@microsoft/applicationinsights-web';\r\nimport {history} from './components/root/root';\r\n\r\nlet reactPlugins;\r\nlet appInsights;\r\n\r\n// @ts-ignore\r\nif (window.confAiEnabled && window.confAiEnabled()) {\r\n reactPlugins = new ReactPlugin();\r\n appInsights = new ApplicationInsights({\r\n config: {\r\n // @ts-ignore\r\n connectionString: window.confAiEnabled && window.confAiEnabled() ? window.confAiConnectionString : '',\r\n loggingLevelConsole: 2,\r\n extensions: [reactPlugins],\r\n extensionConfig: {\r\n [reactPlugins.identifier]: { history },\r\n },\r\n },\r\n });\r\n appInsights.loadAppInsights();\r\n}\r\n\r\nexport const reactPlugin = reactPlugins;\r\nexport const appInsight = appInsights && appInsights.appInsights;\r\n","import React, { Component, ErrorInfo, ReactNode } from 'react';\r\nimport { PrimaryButton } from '../themeButtton/themeButton';\r\nimport './errorBoundary.scss';\r\nimport {appInsight} from \"../../applicationInsights\";\r\nimport L from \"../../i18n\";\r\nimport {store} from \"../../store\";\r\n\r\ntype ErrorState = {\r\n hasError: boolean;\r\n error?: Error;\r\n errorInfo?: ErrorInfo;\r\n};\r\n\r\nexport class ErrorBoundary extends Component<{}, ErrorState> {\r\n public constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n hasError: false,\r\n error: null,\r\n errorInfo: null,\r\n };\r\n }\r\n\r\n private static getDerivedStateFromError(error: Error): ErrorState {\r\n return { hasError: true, error: error };\r\n }\r\n\r\n public componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void {\r\n try {\r\n // const { appInsights } = window;\r\n const _error = error instanceof Error ? error : new Error(error);\r\n appInsight && appInsight.trackException({exception: _error });\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error('Could not log exception', e);\r\n }\r\n }\r\n\r\n public render(): ReactNode {\r\n if (this.state.hasError) {\r\n const language = store.getState().settings.language;\r\n const l = L(language);\r\n // Fallback UI\r\n return (\r\n <div className=\"error-wrapper\">\r\n <h2>{l('error.oida')}</h2>\r\n <details style={{ whiteSpace: 'pre-wrap' }}>\r\n {this.state.error.message}\r\n </details>\r\n <PrimaryButton onClick={() => (window.location.href = window.location.origin)}>\r\n {l('error.goBack')}\r\n </PrimaryButton>\r\n </div>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n","import React from 'react';\r\nimport {Site} from '../../store/settings/types';\r\nimport {defaultTo} from 'ramda';\r\nimport {Language} from '../../constants/language';\r\nimport {useLanguage} from \"../../i18n\";\r\n\r\ntype Props = {\r\n site: Site;\r\n language: Language;\r\n width?: number;\r\n alt: string;\r\n};\r\n\r\nfunction getLogoVersion(site: Site): string {\r\n const mdirLogo = 'mdir_logo_M';\r\n const path = '/assets/svg/logo/';\r\n let file;\r\n const ifNotNil = defaultTo(mdirLogo);\r\n\r\n switch (site) {\r\n case Site.NO:\r\n file = mdirLogo;\r\n break;\r\n case Site.SE:\r\n file = 'naturvardsverket';\r\n break;\r\n default:\r\n file = mdirLogo;\r\n break;\r\n }\r\n\r\n return `${path}${ifNotNil(file)}.svg`;\r\n}\r\n\r\ntype OwnProps = {\r\n language: Language;\r\n width?: number;\r\n};\r\n\r\nexport function LogoMdirText(props: OwnProps): JSX.Element {\r\n const l = useLanguage();\r\n return (\r\n <>\r\n {props.language === Language.EN ?\r\n <img\r\n src={'/assets/svg/logo/mdir_logo_en_horisontal.svg'}\r\n alt={l('contact.MDIR')}\r\n width={props.width || 192}\r\n />\r\n :\r\n <img\r\n src={'/assets/svg/logo/mdir_logo_horisontal.svg'}\r\n alt={l('contact.MDIR')}\r\n width={props.width || 192}\r\n />}\r\n </>\r\n \r\n );\r\n}\r\n\r\nexport function Logo(props: Props): JSX.Element {\r\n return (\r\n <img\r\n src={getLogoVersion(props.site)}\r\n alt={props.alt}\r\n width={props.width || 44}\r\n height={props.width || 44}\r\n />\r\n );\r\n}\r\n","import { AnyAction } from 'redux';\r\nimport { MenuActionType } from './types';\r\n\r\nexport function openMenu(): AnyAction {\r\n return {\r\n type: MenuActionType.OPEN\r\n };\r\n}\r\n\r\nexport function closeMenu(): AnyAction {\r\n return {\r\n type: MenuActionType.CLOSE\r\n };\r\n}\r\n\r\nexport function toggleMenu(): AnyAction {\r\n return {\r\n type: MenuActionType.TOGGLE\r\n };\r\n}\r\n","import { Button, Hidden, Theme } from '@material-ui/core';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport { createStyles, makeStyles } from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Dispatch } from 'redux';\r\nimport { btnHandler } from '../../helpers';\r\nimport { useLanguage } from '../../i18n';\r\nimport { toggleMenu } from '../../store/menu/action';\r\nimport './menubutton.scss';\r\n\r\ntype DispatchProps = {\r\n toggleMenu: () => void;\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n menuButton: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n '&:focus': {\r\n outline: `2px solid ${theme.palette.primary.main}`,\r\n outlineOffset: '2px',\r\n },\r\n },\r\n })\r\n);\r\ntype Props = DispatchProps;\r\n\r\nfunction _MenuButton(props: Props): JSX.Element {\r\n const classes = useStyles({});\r\n const menuButtonMobile = classnames(classes.menuButton, 'menu-button--mobile');\r\n const menuButton = classnames(classes.menuButton, 'menu-button');\r\n const l = useLanguage();\r\n\r\n return (\r\n <Fragment>\r\n <Hidden smUp>\r\n <button\r\n className={menuButtonMobile}\r\n onClick={btnHandler(props.toggleMenu)()}\r\n aria-label={l('menu')}\r\n tabIndex={3}\r\n >\r\n <MenuIcon fontSize=\"large\" aria-hidden={true}/>\r\n </button>\r\n </Hidden>\r\n <Hidden xsDown>\r\n <div className=\"menu-button-wrapper\">\r\n <nav> \r\n <button\r\n className={menuButton}\r\n onClick={btnHandler(props.toggleMenu)()}\r\n accessKey=\"3\"\r\n aria-haspopup={true}\r\n >\r\n {l('menu')}\r\n <MenuIcon className=\"menu-icon\" aria-hidden={true} />\r\n </button>\r\n </nav>\r\n </div>\r\n </Hidden>\r\n </Fragment>\r\n );\r\n}\r\n\r\nconst mapDispatchToProps = (dispatch: Dispatch): DispatchProps => {\r\n return {\r\n toggleMenu: () => dispatch(toggleMenu()), //toggleMenu()\r\n };\r\n};\r\n\r\nexport const MenuButton = connect(null, mapDispatchToProps)(_MenuButton);\r\n","import React, {ReactElement} from \"react\";\r\nimport classnames from 'classnames'\r\nimport './watermark.scss';\r\n\r\ntype WatermarkProps = {\r\n className?: string;\r\n}\r\n\r\nexport function Watermark(props: WatermarkProps): ReactElement {\r\n const combinedClassName = classnames(\"watermark\", props.className);\r\n const testSite = window.location.origin.includes('test');\r\n \r\n if (testSite) { \r\n return (\r\n <div className={combinedClassName}>\r\n TEST\r\n </div>\r\n )\r\n } else {\r\n return null;\r\n };\r\n}\r\n\r\nexport function WatermarkMapLayer(): ReactElement {\r\n const testSite = window.location.origin.includes('test');\r\n if (testSite) {\r\n return (\r\n <div className={\"watermark-map-layer\"}>\r\n <div>TEST</div>\r\n </div>\r\n )\r\n } else {\r\n return null;\r\n };\r\n}","import {useMediaQuery} from '@material-ui/core';\r\n\r\nexport function useMobileBreakpointInnsyn(): boolean {\r\n return useMediaQuery('(max-width:599px)');\r\n}\r\n\r\n// sender inn option noSsr:true (som betyr ingen serverside rendring)\r\n// dette fikset problem hvor hooken først returnerer false, og deretter true\r\nexport function useMobileBreakpointPortraitInnsyn(): boolean {\r\n return useMediaQuery('(max-width:599px) and (orientation: portrait)', {noSsr: true});\r\n}\r\n\r\n// sender inn option noSsr:true (som betyr ingen serverside rendring)\r\n// dette fikset problem hvor hooken først returnerer false, og deretter true\r\nexport function useMobileBreakpointLandscapeInnsyn(): boolean {\r\n return useMediaQuery('(max-height:599px) and (orientation: landscape)', {noSsr: true});\r\n}\r\n\r\nexport function useTabletBreakpointInnsyn(): boolean {\r\n return useMediaQuery('(max-width:959px)');\r\n}\r\n\r\nexport function useDesktopBreakpointInnsyn(): boolean {\r\n return useMediaQuery('(min-width:1450px)');\r\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSantahat2 = function SvgSantahat2(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 389.79 297.77\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M202.14 509.51c3.51-8.24 56.07-68.58 97.15-74.29 41.17-5.73 70 26.43 75.71 31.43s27.86 62.86 27.86 62.86l19.28 65L435 623.79l12.14 19.29 10 11.43 16.43 7.14s-1.87-3.48-4.37.8c-2.5 4.29 11.87 13.57-10.63 17.32-22.63 3.77-43.21-4.55-70-19.55-26.78-15-27.5-30.89-32.14-41.43-4.64-10.53 13.57-.71 13.57-.71l1.43-10.72 6.43-14.28 7.14-30.72-7.14-7.85-4.29-3.58 3.57-10.71-50.71-21.43L315 503.08l-16.43 6.43-5.71-11.43-12.15 5-5-11.43-5-.72-4.28 12.86-30.72 7.86-5.71-7.14-6.43 8.57c4.61-5.22-24.94 4.66-21.43-3.57z\",\n style: {\n fillRule: \"evenodd\",\n stroke: \"#000\",\n strokeWidth: 1,\n fill: \"red\"\n },\n transform: \"matrix(-1 0 0 1 542.24 -430.59)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M488.51 726.88c-1.22-.86-2.22-2.38-2.22-3.38 0-3.38-2.1-3.99-8.32-2.41-6.94 1.77-8.22 1.1-9.42-4.99-.79-4.04-.95-4.18-5.09-4.48-3.49-.25-4.44-.76-5.22-2.81-1.25-3.27-1.22-8.09.05-8.88.55-.34 1-1.71 1-3.04 0-1.75 1.12-3.14 4-4.96 4.57-2.89 4.92-4.31 1.75-7.2-1.67-1.53-4.21-2.23-9.75-2.71-14.16-1.21-21.51-2.25-24.32-3.42-1.55-.64-4.88-1.17-7.41-1.17-4.21 0-11.12-1.53-18.77-4.18-1.65-.56-4.82-1.35-7.04-1.73-4.12-.72-9.96-4.33-10.88-6.74-.29-.74-1.14-1.35-1.89-1.35-.76 0-3.04-1.8-5.07-4-2.04-2.2-4.38-4-5.2-4-1.83 0-9.42-7.56-9.42-9.38 0-.72-.9-2.12-2-3.12-1.1-.99-2-2.25-2-2.79s-.7-1.5-1.56-2.12c-.86-.63-1.92-3.6-2.36-6.61s-1.53-6.83-2.44-8.48c-.9-1.65-1.63-3.53-1.64-4.19-.01-2.22-2.01-2.44-4.76-.51-3.53 2.48-9.91 4.55-11.79 3.83-.81-.31-1.45-1.84-1.45-3.44 0-1.58-.88-3.67-1.96-4.64-1.34-1.22-2.04-3.36-2.25-6.91-.26-4.62-.54-5.17-2.79-5.48-3.19-.43-6-2.93-6-5.32 0-1.02-.95-2.64-2.1-3.6-1.15-.95-2.5-2.8-3.01-4.09-.73-1.85-1.43-2.23-3.31-1.76-4.51 1.13-8.7-.43-10.1-3.77-1.16-2.75-1.69-3.05-4.94-2.77-4.01.35-6.54-1.14-6.54-3.83 0-.96-.86-2.83-1.91-4.16-1.04-1.33-2.05-3.52-2.25-4.85-.39-2.74-4.31-4.12-11.47-4.04-2.5.02-4.62-.55-5.37-1.46-1.6-1.93-3.46-1.91-6.47.06-3.39 2.23-8.78 1.52-10.02-1.32-1.1-2.5-2.51-2.99-2.51-.86 0 1.71-7.51 8.61-9.37 8.61-.75 0-3.06 1.35-5.13 3-2.7 2.15-4.86 3-7.57 3-2.89 0-3.95.47-4.42 1.96-.35 1.12-3.26 3.2-6.82 4.89-3.41 1.62-7.24 4.16-8.52 5.64-1.97 2.28-2.86 2.61-5.7 2.08-2.77-.52-3.57-.26-4.48 1.45-2.76 5.14-12.38 7.75-16.12 4.37-.99-.89-3.26-1.92-5.05-2.29-4.85-.99-7.05-5.28-5.55-10.84 1.42-5.29.33-6.82-3.74-5.27-6.01 2.28-9.23-2.22-6.17-8.63 2.76-5.78 2.31-6.72-2.85-6.01-3.77.51-4.79.27-6.5-1.56-2.54-2.73-2.53-3.01.42-7.68 2.62-4.16 6.54-7.65 9.71-8.65 2.92-.93 1.82-3.78-1.74-4.51-1.69-.34-3.6-.95-4.24-1.35-1.62-1-1.45-4.11.3-5.56 2.13-1.78 8.93-2.44 12.44-1.22 2.82.98 3.21.82 5.28-2.13 1.24-1.75 2.82-3.64 3.54-4.19.71-.55 2.08-2.57 3.03-4.5 1.43-2.86 2.43-3.59 5.52-4 2.6-.34 4.3-1.3 5.5-3.09.95-1.42 2.63-3.91 3.73-5.52s5.22-5.84 9.17-9.4c3.95-3.57 7.46-7.42 7.82-8.56.57-1.88 9.55-10.77 24.6-24.37 3.08-2.78 6.33-5.06 7.22-5.06s2.08-.86 2.64-1.91 2.71-2.93 4.78-4.18 5.42-3.55 7.44-5.11c2.03-1.57 5.18-3.35 7-3.96 1.83-.61 4.45-2.08 5.83-3.26 1.37-1.18 5.87-3.65 10-5.48 4.12-1.83 8.97-4.03 10.77-4.88 2.76-1.32 4.25-1.37 9.61-.39 3.49.65 7.79 1.17 9.56 1.17 3.14 0 13.89 3.68 19.21 6.56 1.46.8 3.28 1.44 4.04 1.44s6.99 2.9 13.84 6.44c11.2 5.78 13.19 7.23 19.55 14.25 8.25 9.09 15.69 19.74 18.4 26.31.57 1.38 1.75 3.78 2.63 5.35.89 1.56 2.19 5.16 2.9 8 1.38 5.54 3.23 11.1 4.62 13.89.48.96.87 2.62.87 3.69 0 1.08.41 2.21.91 2.52s1.23 2.47 1.62 4.81c.38 2.33 1.32 5.44 2.07 6.91 2.03 3.98 6.34 17.61 7.04 22.26.59 4 5.18 16.6 7.86 21.62.75 1.4 1.91 5.67 2.57 9.5.71 4.1 2.99 10.69 5.56 16.06 2.4 5.01 4.37 9.7 4.37 10.42 0 .73.6 2.03 1.33 2.89.74.87 1.94 3.16 2.68 5.08.74 1.93 2.39 4.78 3.67 6.33 1.27 1.56 2.32 3.29 2.32 3.86 0 .56 1.12 2.36 2.5 4 1.37 1.63 2.5 3.51 2.5 4.18 0 .66 2.28 3.44 5.07 6.17 2.8 2.73 5.7 6.14 6.46 7.57.93 1.78 2.79 3 5.86 3.86 4.13 1.16 4.72 1.09 7.19-.85 1.48-1.16 3.29-2.12 4.03-2.12s1.6-1.23 1.91-2.75c1.57-7.66 2.83-10.35 6.84-14.66 4.36-4.68 4.39-4.69 7.75-3.32 2.62 1.07 3.82 2.48 5.34 6.31 1.09 2.71 2.11 5.12 2.27 5.35.17.24 1.89-.32 3.82-1.25 1.94-.92 4.37-1.68 5.41-1.68 3.1 0 7.77 4.69 8.73 8.76.75 3.14 1.64 4.1 5.56 5.96 2.78 1.33 5.28 3.4 6.17 5.11.82 1.59 2.82 3.44 4.44 4.11 4.93 2.05 7.38 5.47 7.92 11.06.38 3.96.09 5.49-1.34 7.07-1.72 1.91-1.73 2.17-.13 4.88 1.89 3.2 2.19 7.26.73 9.99-.53.99-3.57 2.84-6.75 4.1-7.94 3.15-8.28 3.52-8.28 9.13 0 6.29-3.08 12.56-6.6 13.45-1.42.35-5.47.41-9 .13-5.06-.41-7.22-.12-10.13 1.37-4.49 2.29-9.07 2.41-12.05.33zm12.25-6.01c2.43-3.18 2.59-3.86 1.53-6.44-1.38-3.32-.7-5 2.02-5 2.33 0 3.98 2.85 3.98 6.9 0 4.72 6.19 6.88 10.55 3.68 1.67-1.22 1.95-2.66 1.95-10.03 0-9.66.58-10.59 6.53-10.37 9.77.36 13.9-8.21 4.85-10.07-3.5-.71-5.49-4.11-2.41-4.11.89 0 2.95-.68 4.58-1.52 2.41-1.25 2.95-2.16 2.95-5.04 0-4.08-2.52-8.44-4.87-8.43-.9 0-2.98.9-4.63 1.99-6.41 4.24-9.84 1.01-4.63-4.36 2.76-2.86 2.98-3.46 1.79-5.08-1.2-1.64-2.25-1.76-9.38-1.14-9.85.86-11.07-.42-5.89-6.19 2.71-3.01 3.19-4.16 2.5-6-2-5.34-8.08-3.29-11.1 3.75-3.61 8.43-6.79 7.24-6.79-2.53 0-12.28-3.52-14.92-9.01-6.78-3.34 4.95-3.47 6.83-1.43 20.17 1.13 7.42-2.06 7.95-6.8 1.11-1.51-2.17-3.2-3.95-3.75-3.95-1.81 0-1.07 2.78 1.56 5.91 3.01 3.57 2.86 6.46-.36 6.92-2.62.37-5.97 4.83-4.61 6.15.49.49 2.47 1.03 4.39 1.2 5.52.51 5.09 3.16-1.18 7.17-8.63 5.53-13.75 15.66-8.3 16.44 1.27.18 3.45-1.19 5.95-3.75 5.77-5.9 10.12-4.91 6 1.37-2.3 3.52-3.05 11.86-1.2 13.39 2.47 2.06 4.56.31 6.7-5.64 2.74-7.58 3.4-8.6 5.75-8.96 1.92-.29 1.99.11 1.52 9.08-.48 9.3-.47 9.4 2.27 11.55 3.86 3.03 5.84 2.73 8.97-1.39zm-33.92-45.62c3.05-2.67 3.53-3.64 3.04-6.08-.79-3.94-4.34-8.74-6.47-8.74-1.97 0-17.5-14.67-21.16-20-1.33-1.92-3.15-4.31-4.06-5.3-.9-.99-2.42-3.69-3.36-6-.95-2.31-4.44-10.05-7.76-17.2-7.27-15.64-7.62-16.46-12.26-28.5-2.01-5.22-4.3-10.97-5.09-12.78s-1.43-4.25-1.43-5.43c0-2.16-1.17-6.35-3.57-12.79-.72-1.92-1.76-5.75-2.32-8.5-2.82-13.92-5.84-25.61-8.24-31.88-1.03-2.69-1.87-5.73-1.87-6.77 0-1.05-1.58-5.02-3.5-8.85-1.93-3.82-3.5-7.58-3.5-8.35s-.63-1.92-1.39-2.55c-.77-.64-2.74-3.95-4.39-7.38-2.23-4.63-5.55-8.71-12.97-15.97-5.49-5.36-10.5-9.75-11.14-9.75-1.53 0-16.17-6.88-18.11-8.51-1.72-1.44-12.23-4.66-22.5-6.89-9.81-2.13-23.2-.06-30.32 4.68-2.03 1.35-6.61 4.11-10.18 6.13-13.43 7.61-29.3 18.6-34.59 23.96-2.25 2.27-10.52 10.21-18.38 17.63-7.86 7.43-15.01 14.58-15.88 15.91-1.5 2.27-1.45 2.48.82 4 2.85 1.89 14.03 2.45 14.03.7 0-1.38 6.65-7.61 8.13-7.61.58 0 2.32 1.35 3.87 3 3.53 3.79 7.89 3.95 15.22.58 2.9-1.34 7.86-3.18 11.03-4.1 3.16-.91 5.75-2.16 5.75-2.77 0-2.25 5.24-8.57 8.09-9.75 2.56-1.05 3.24-.97 5.04.66 1.14 1.04 2.76 3.59 3.6 5.68.83 2.08 1.8 3.64 2.14 3.47.34-.18 2.31-1.17 4.36-2.22 3.27-1.66 4.05-1.73 6.28-.54 1.4.75 2.79 2.37 3.1 3.6.31 1.24 1.33 2.94 2.26 3.78 1.53 1.38 2.17 1.3 6.66-.85 10.18-4.87 11.8-4.37 13.99 4.27 1.11 4.36 1.47 4.74 4.94 5.3 3.61.59 5.49 2.13 5.52 4.54.02 1.49 2.38 2.35 6.43 2.35 2.21 0 4.97 1.27 8.66 3.98 8.71 6.39 9.36 6.61 12.49 4.15 1.49-1.17 3.7-2.13 4.92-2.13 2.72 0 6.12 3.58 5.72 6.02-.21 1.28.69 2.12 3.13 2.93 6.62 2.18 7.52 4.7 5.12 14.3-.53 2.13-.33 2.75.88 2.75 5.71 0 9.43 5.38 8.11 11.74-.94 4.55-.71 6.27 1.15 8.34 1.49 1.67 1.87 6.73.64 8.45-.4.56-1.97 1.81-3.48 2.77-2.28 1.45-2.76 2.47-2.79 5.98-.01 2.32-.69 5.1-1.5 6.16-.8 1.07-1.46 3.17-1.46 4.66 0 1.64-1.39 4.38-3.5 6.9-1.93 2.31-3.5 5.3-3.5 6.65 0 6.31-5.35 10.84-9.91 8.4-2.76-1.47-2.77.17-.02 7.17 2.16 5.49 8.9 14.15 16.83 21.61 7.4 6.97 8.46 7.56 22.24 12.14 3.1 1.04 6.47 2.35 7.5 2.92 6.25 3.49 17.77 7.5 23.35 8.15 3.58.41 7.77 1.24 9.32 1.85s6.27 1.12 10.5 1.13 8.36.45 9.19.98c2.2 1.43 2.59 1.3 6.55-2.18zm-118.03-64.91c.38-1.19 1.53-1.91 3.04-1.91 1.88 0 2.44.53 2.44 2.34 0 3.65 1.19 3.96 3.59.94l2.21-2.77 1.85 3.24c3.19 5.6 6.86 3.3 5.75-3.61-.6-3.77-.45-4.17 2-5.1 4.27-1.62 4.34-3.85.25-7.72-2.01-1.89-3.65-3.77-3.65-4.18 0-1.86 2.5-2.88 5.94-2.42 4.87.66 6.12-1.79 3.04-5.96-2.59-3.5-2.25-6.83.85-8.37 1.43-.7 1.92-1.42 1.25-1.83-1.78-1.1-1.24-3.95 1.42-7.56 4.88-6.61 2.58-9.29-5.68-6.63-7.31 2.36-8.47 2.16-9.21-1.57-.58-2.88-.12-3.73 4.59-8.5 4.89-4.96 5.12-5.4 3.55-6.97-1.41-1.42-2.26-1.51-5.29-.58-3.13.96-3.86.85-5.54-.82-1.06-1.06-1.92-2.65-1.92-3.54 0-1.6-1.17-1.58-5.18.08-1.08.45-2.31-.05-3.5-1.43-5.62-6.5-9.72-9.54-14.59-10.78-3.98-1.02-5.79-1.06-7.95-.17-3.78 1.57-6.18-.33-5.4-4.28.66-3.27-1.05-3.73-4.78-1.28-3.02 1.98-5.92.92-5.25-1.91 1.48-6.24 1.81-11.62.71-11.62-2.08 0-6.5 2.75-9.5 5.91-3.34 3.51-5.03 3.87-6.45 1.34-.57-1.02-2.16-1.75-3.8-1.75-2.67 0-2.8-.21-2.62-4.25.24-5.55-1.7-5.62-6.81-.25-5.13 5.4-7.36 5.38-6.49-.05.75-4.68-2.44-13.43-4.63-12.71-1.94.64-3.73 4.86-3.75 8.81-.02 5.07-1.42 5.95-9.38 5.95-6.08 0-7.78.45-13.34 3.5-8.63 4.75-12.59 4.67-15.21-.31-1.93-3.66-3.54-2.11-3.22 3.11.42 6.86-.43 8.7-4.03 8.7-2.07 0-3.91-.94-5.8-2.96-3.19-3.41-4.03-3.06-4.03 1.66 0 4.76-2.38 5.3-6.37 1.44-1.78-1.73-3.77-3.14-4.42-3.14s-1.48 1.8-1.83 3.98c-1.07 6.7-2.83 7.08-7.78 1.69-4.74-5.17-6.03-5.62-7.6-2.68-.8 1.5-.68 2.73.47 4.95 2.04 3.97 1.92 5.06-.55 5.06-1.8 0-1.99.42-1.41 3.07.57 2.58.34 3.16-1.42 3.62-1.15.3-2.09 1.13-2.09 1.85 0 .71-2.89 2.26-6.41 3.43-7.24 2.41-15.87 7.71-15.31 9.41.59 1.8 5.56 1.9 9.82.2 8.15-3.26 8.83-1.46 2.9 7.67-6.07 9.33-5.42 10.65 2.94 6 3.93-2.18 5.19-2.49 6.19-1.51.99.99.7 2.79-1.47 8.93-3.29 9.34-2.4 11.41 2.77 6.4 4.78-4.63 6.57-3.71 6.57 3.4 0 3.04.41 5.53.91 5.53 4.51 0 7.47-5.25 6.53-11.55-.62-4.08-.5-4.45 1.46-4.45 1.45 0 2.66 1.12 3.8 3.5 3.06 6.43 8 3.66 6.87-3.86-.53-3.54-.34-4.51.97-5.02 1.9-.72 3.42.02 5.26 2.57 2.8 3.88 8.2.73 8.2-4.77 0-1.8.76-4.04 1.7-4.98 1.61-1.61 1.86-1.53 4.32 1.43 1.44 1.72 3.1 3.13 3.69 3.13 1.54 0 2.26-2.43 1.21-4.09-1.31-2.06-1.12-3.56.65-5.33 2.24-2.25 3.93-1.95 5.24.92 3.17 6.96 11.06-2.26 12.41-14.5.19-1.68.89-2.5 2.16-2.5 1.8 0 3.27 3.35 5.05 11.5 1.05 4.82 2.18 5.66 4.65 3.46 1.21-1.07 3.07-3.9 4.13-6.27 2.65-5.91 5.17-5.43 5.59 1.07.17 2.61.75 4.74 1.28 4.74.54 0 1.93-1.59 3.08-3.55 2.86-4.84 5.24-4.27 5.65 1.37.37 5.14 2.35 6.32 5.55 3.31 3.37-3.16 4.64-2.67 4.64 1.79 0 6.75.66 7.48 4.67 5.11 1.89-1.11 3.86-2.03 4.38-2.03 1.76 0 .96 3.6-1.56 7.01-1.42 1.92-2.12 3.77-1.63 4.26 1.02 1.02 6.17-1.2 11.03-4.77 6.29-4.61 8.86-2.23 4.7 4.35l-2.54 4.03 6.4-.47c5.81-.43 6.45-.28 7.05 1.61.4 1.26 0 3.09-1 4.62-2.05 3.13-1.28 4.12 1.9 2.41 4.27-2.28 5.74 1.11 3.13 7.2-.6 1.41-.25 1.75 1.78 1.75 3.28 0 5.18 5.21 4.23 11.58-.76 5.04.49 5.82 3.05 1.92 1.92-2.93 3.95-3.21 5.28-.73.64 1.2.51 2.56-.43 4.25-.75 1.37-1.39 2.83-1.41 3.26-.07 1.47 4.89-2.47 5.49-4.37z\",\n style: {\n fill: \"#000\"\n },\n transform: \"matrix(-1 0 0 1 542.24 -430.59)\"\n }));\n};\nexport default SvgSantahat2;","import React, {useMemo, useState} from 'react';\r\nimport SantaHat from './santahat2.svg';\r\nimport './julehilsen.scss';\r\n\r\nexport function Julehilsen(): JSX.Element {\r\n const [snowfall, setSnowfall] = useState<boolean>(false);\r\n const showJulehilsen = useMemo(() => new Date < new Date(2023, 0, 2), []);\r\n const onJuleklikk = (): void => {\r\n setSnowfall(!snowfall);\r\n };\r\n return (\r\n showJulehilsen && <>\r\n <button className=\"julehilsen\" onClick={onJuleklikk} type=\"button\" tabIndex={2}\r\n >\r\n <SantaHat/>\r\n God Jul\r\n </button>\r\n {snowfall &&\r\n <div id=\"divSnowflakes\" className=\"snowflakes\" aria-hidden=\"true\">\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n <div className=\"snowflake\">{'\\u2744'}</div>\r\n </div>\r\n }\r\n </>\r\n );\r\n}","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\nimport {connect} from 'react-redux';\r\nimport {NavLink} from 'react-router-dom';\r\nimport {Language} from '../../constants/language';\r\nimport {useLanguage} from '../../i18n';\r\nimport {ApplicationState} from '../../store';\r\nimport {Site} from '../../store/settings/types';\r\nimport {Logo} from '../logo/logo';\r\nimport {MenuButton} from '../menubutton/menubutton';\r\nimport './menubar.scss';\r\nimport {Watermark} from '../watermark/watermark';\r\nimport {useMobileBreakpointInnsyn, useTabletBreakpointInnsyn} from '../../hooks/breakpoint';\r\nimport {Julehilsen} from '../julehilsen/julehilsen';\r\n\r\ntype StateProps = {\r\n site: Site;\r\n language: Language;\r\n};\r\n\r\ntype Props = StateProps;\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n menuBar: {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.primary.dark,\r\n },\r\n logoLink: {\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: 'none',\r\n '& img': {\r\n outline: `1px solid ${theme.palette.primary.light}`,\r\n outlineOffset: '2px'\r\n }\r\n\r\n }\r\n },\r\n siteName: {\r\n color: theme.palette.primary.dark, \r\n },\r\n rovbaseLink: {\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: `1px solid ${theme.palette.primary.light}`,\r\n outlineOffset: '2px'\r\n }\r\n }\r\n })\r\n);\r\n\r\nfunction _MenuBar(props: Props): JSX.Element {\r\n const classes = useStyles({});\r\n const menuBarClass = classnames(classes.menuBar, 'menu-bar');\r\n const siteNameClass = classnames(classes.siteName, 'site-name');\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n const tabletScreen = useTabletBreakpointInnsyn();\r\n const logoWidth = tabletScreen ? 44 : 60;\r\n const l = useLanguage();\r\n\r\n return (\r\n <div className={menuBarClass}>\r\n <div className=\"logo-title-container\">\r\n <div className=\"logos\">\r\n <a\r\n href=\"https://www.miljodirektoratet.no/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className={classes.logoLink}\r\n tabIndex={2}\r\n >\r\n <Logo language={props.language} site={Site.NO} width={logoWidth} alt={`${l('contact.MDIR')}, ${l('uu.openNewWindow')}`} />\r\n </a>\r\n <a\r\n href=\"https://www.naturvardsverket.se/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className={classes.logoLink}\r\n tabIndex={2}\r\n >\r\n <Logo language={props.language} site={Site.SE} width={logoWidth} alt={`${l('contact.Naturvardsverket')}, ${l('uu.openNewWindow')}`} />\r\n </a>\r\n </div>\r\n <NavLink\r\n className={classes.rovbaseLink}\r\n to=\"/\"\r\n exact={true}\r\n title={l('ariaLabel.openHomepage')}\r\n aria-label={l('ariaLabel.openHomepage')}\r\n tabIndex={2}\r\n accessKey={'1'}\r\n >\r\n <h1 className={siteNameClass}>Rovbase</h1>\r\n </NavLink>\r\n <Watermark className={'menu-watermark'} />\r\n </div>\r\n {/* Kommenter inn julehilsen for nisselue og snø pÃ¥ skjerm */}\r\n {!mobileScreen && <Julehilsen/>}\r\n {mobileScreen && <MenuButton />}\r\n </div>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n site: state.settings.site,\r\n language: state.settings.language,\r\n };\r\n};\r\n\r\nexport const MenuBar = connect(mapStateToProps, null)(_MenuBar);\r\n","type ContactInfo = {\r\n visitAdress: string[];\r\n postAdress: string;\r\n mail: string;\r\n phone: string;\r\n};\r\n\r\nexport const mdirInfo: ContactInfo = {\r\n visitAdress: ['Brattørkaia 15, 7010 Trondheim'],\r\n postAdress: 'Postboks 5672 Torgarden, 7485 Trondheim',\r\n mail: 'post@miljodir.no',\r\n phone: '+47 73 58 05 00',\r\n};\r\n\r\nexport const naturvardsInfo: ContactInfo = {\r\n visitAdress: ['Virkesvägen 2, 120 30 Stockholm', 'Forskarens väg 5, 831 40 Östersund'],\r\n postAdress: 'NaturvÃ¥rdsverket, 106 48 Stockholm',\r\n mail: 'kundtjanst@naturvardsverket.se',\r\n phone: '+46 010-698 10 00',\r\n};\r\n\r\nexport const stripPhoneNumber = (phone: string): string => {\r\n return phone.replace(/[\\s-]/g, '');\r\n};\r\n","import React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {NavLink} from 'react-router-dom';\r\nimport {useLanguage} from '../../i18n';\r\nimport {ApplicationState} from '../../store';\r\nimport {Logo, LogoMdirText} from '../logo/logo';\r\nimport './footer.scss';\r\nimport {Site} from '../../store/settings/types';\r\nimport {mdirInfo, naturvardsInfo, stripPhoneNumber} from '../../constants/contactInfo';\r\nimport {ExternalLink} from '../externalLInk/externalLink';\r\n\r\nexport function Footer(): JSX.Element {\r\n const l = useLanguage();\r\n const site = useSelector((state: ApplicationState) => state.settings.site);\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n const contactInfo = site === Site.NO ? mdirInfo : naturvardsInfo;\r\n\r\n return (\r\n <footer className=\"footer\">\r\n <div className=\"footer-logo-wrapper\">\r\n {site === Site.NO ? <LogoMdirText language={language}/> : <Logo site={site} language={language} width={60} alt={l('contact.Naturvardsverket')} />}\r\n </div>\r\n <div className=\"footer-content-wrapper\">\r\n <div className=\"footer-link\">\r\n <ExternalLink href={'https://www.miljodirektoratet.no/personvernerklaring/'}>{l('menu.privacyPolicy')}</ExternalLink>\r\n </div>\r\n <div className=\"footer-link\">\r\n <NavLink to=\"/tilgjengelighet\" activeClassName=\"selected\" accessKey=\"0\">\r\n {l('menu.accessibilityStatement')}\r\n </NavLink>\r\n </div>\r\n <div className=\"footer-link\">\r\n <NavLink to=\"/kontakt\" activeClassName=\"selected\" accessKey=\"7\">\r\n {l('menu.contact')}\r\n </NavLink>\r\n </div>\r\n <div className=\"footer-link\">\r\n <a href={`mailto:${contactInfo.mail}`}>{`${l('menu.email')}: ${contactInfo.mail}`}</a>\r\n </div>\r\n <div className=\"footer-link\">\r\n <a href={`tel:${stripPhoneNumber(contactInfo.phone)}`}>\r\n {`${l('menu.phone')}: ${contactInfo.phone}`}\r\n </a>\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n}","import React, {ReactNode} from 'react';\r\nimport { MenuBar } from '../menubar/menubar';\r\nimport { MenuButton } from '../menubutton/menubutton';\r\nimport { Footer } from '../footer/footer';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core';\r\nimport './staticPageFrame.scss';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\nimport classnames from 'classnames';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n '& a': {\r\n '&:active, &:visited, &:link': {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n },\r\n })\r\n);\r\n\r\ntype StaticPageFrameProps = { className?: string, children: ReactNode | ReactNode[] }\r\n\r\nexport default function StaticPageFrame(props: StaticPageFrameProps): JSX.Element {\r\n const classes = useStyles({});\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n const classNameContainer = props.className || '';\r\n return (\r\n <div className={classnames('content-wrapper', classNameContainer)}>\r\n <MenuBar />\r\n {!mobileScreen && <MenuButton />}\r\n <main className={classes.root}>{props.children}</main>\r\n <Footer/>\r\n </div>\r\n );\r\n}\r\n","import React, {useState} from 'react';\r\nimport {useSelector} from \"react-redux\";\r\nimport {AboutContentSE} from \"./about-se\";\r\nimport {AboutContentNO} from \"./about-no\";\r\nimport {AboutContentEN} from \"./about-en\";\r\nimport {Language} from '../../constants/language';\r\nimport {HoppTilHovedinnhold} from '../../components/themeButtton/themeButton';\r\nimport {ErrorBoundary} from '../../components/errorBoundary/errorBoundary';\r\nimport StaticPageFrame from '../../components/staticPageFrame/staticPageFrame';\r\nimport {ApplicationState} from '../../store';\r\nimport './about.scss';\r\n\r\nexport type AboutRovbaseData = {\r\n carnivoreDamageSheep: number;\r\n carnivoreDamageReindeer: number;\r\n carnivoreObserved: number;\r\n carnivoreDead: number;\r\n dnaSamples: number;\r\n compensationApplicationsSheep: number | '';\r\n compensationApplicationsReindeer: number;\r\n};\r\n\r\nfunction createRequest(): object {\r\n let headers = new Headers({\r\n Accept: 'application/json',\r\n });\r\n return {\r\n method: 'POST',\r\n headers: headers,\r\n };\r\n}\r\n\r\nexport function About(): JSX.Element {\r\n const [aboutRovbaseData, setAboutRovbaseData] = useState<AboutRovbaseData>();\r\n const lang = useSelector((state:ApplicationState) => state.settings.language);\r\n React.useEffect(() => {\r\n fetch('/api/aboutRovbase', createRequest())\r\n .then(response => response.json())\r\n .then(res => setAboutRovbaseData(res.omRovbaseData));\r\n }, []);\r\n return (\r\n <ErrorBoundary>\r\n <StaticPageFrame>\r\n <HoppTilHovedinnhold mainContentId={\"mainContent\"} />\r\n <div className=\"about\" id={\"mainContent\"}>\r\n {lang === Language.SV && <AboutContentSE/>}\r\n {lang === Language.NO && <AboutContentNO aboutRovbaseData={aboutRovbaseData} />}\r\n {lang === Language.EN && <AboutContentEN aboutRovbaseData={aboutRovbaseData} />}\r\n </div>\r\n </StaticPageFrame>\r\n </ErrorBoundary>\r\n );\r\n}\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport { alpha } from '@material-ui/core/styles';\r\nimport classnames from 'classnames';\r\nimport React, { Fragment } from 'react';\r\nimport './loader.scss';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n backgroundColor: alpha(theme.palette.common.black, 0.5),\r\n position: 'absolute',\r\n height: '100%',\r\n width: '100%',\r\n zIndex: 1,\r\n },\r\n spinner: {\r\n border: `${'5px ' + 'solid '}${theme.palette.secondary.dark}`,\r\n borderTop: `${'5px ' + 'solid '}${alpha(theme.palette.common.black, 0)}`,\r\n },\r\n spinnerWrapper: {\r\n zIndex: 8,\r\n position: 'absolute',\r\n top: '30%',\r\n // left: 0;\r\n right: '30%',\r\n },\r\n })\r\n);\r\nexport default function Loader(): JSX.Element {\r\n const style = useStyles({});\r\n return (\r\n <Fragment>\r\n <div className={style.root}></div>\r\n <div className={style.spinnerWrapper}>\r\n <LoadingSpinner />\r\n </div>\r\n </Fragment>\r\n );\r\n}\r\n\r\nexport function LoadingSpinner(): JSX.Element {\r\n const style = useStyles({});\r\n const loadingClass = classnames(style.spinner, 'loadingscreen_spinner');\r\n return <div className={loadingClass}></div>;\r\n}\r\n","import { SET_RIGHTPANEL_CONTENT, RightPanelContentAction } from './types';\r\nimport { RightPanelContent } from '../../constants/rightpanelContent';\r\n\r\nexport function setRightPanelContent(component: RightPanelContent): RightPanelContentAction {\r\n return {\r\n type: SET_RIGHTPANEL_CONTENT,\r\n component,\r\n };\r\n}\r\n"," import { Control } from '../types';\r\nimport { store } from '../../store';\r\nimport { setRightPanelContent } from '../../store/rightpanel/action';\r\nimport { RightPanelContent } from '../../constants/rightpanelContent';\r\n\r\nconst openPanel = (): void => {\r\n store.dispatch(setRightPanelContent(RightPanelContent.LayerSelector));\r\n};\r\n\r\nconst closePanel = (): void => {\r\n store.dispatch(setRightPanelContent(RightPanelContent.None));\r\n};\r\n\r\nexport const Layers: Control = {\r\n id: 'layers',\r\n activate: openPanel,\r\n deactivate: closePanel,\r\n};\r\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgTooltipInfoCircle = function SvgTooltipInfoCircle(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 16,\n height: 16,\n fill: \"none\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00433F\",\n d: \"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M7.764 3.406c.191 0 .353.067.485.202a.67.67 0 0 1 .199.488.658.658 0 0 1-.202.482.658.658 0 0 1-.482.202.665.665 0 0 1-.488-.202.658.658 0 0 1-.202-.482c0-.191.067-.354.202-.488a.665.665 0 0 1 .488-.202Zm-1.49 3.57V6.63c.79-.09 1.453-.26 1.99-.513l.135.098c-.033.867-.05 1.53-.05 1.99v1.11c.021 1.058.033 1.63.037 1.716.005.203.027.352.068.445.02.037.046.068.079.095a.38.38 0 0 0 .146.064c.025.004.25.01.678.018V12a33.84 33.84 0 0 0-1.483-.043c-.326 0-.859.014-1.6.043v-.348l.58-.006a.452.452 0 0 0 .199-.046.283.283 0 0 0 .107-.1c.044-.082.073-.226.085-.434 0-.053.012-.637.037-1.752V8.24c0-.606-.02-.966-.061-1.08a.254.254 0 0 0-.132-.137c-.063-.03-.334-.046-.814-.046Z\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgTooltipInfoCircle;","import Map from 'ol/Map';\r\nimport { Control } from '../types';\r\n\r\nfunction zoomIn (map: Map): void {\r\n const zoom = map.getView().getZoom();\r\n map.getView().setZoom(zoom + 1);\r\n}\r\n\r\nfunction zoomOut (map: Map): void {\r\n const zoom = map.getView().getZoom();\r\n map.getView().setZoom(zoom - 1);\r\n}\r\n\r\nexport const ZoomIn: Control = {\r\n id: 'zoomin',\r\n activate: zoomIn\r\n};\r\n\r\nexport const ZoomOut: Control = {\r\n id: 'zoomout',\r\n activate: zoomOut\r\n};","import { Theme } from '@material-ui/core';\r\nimport { createStyles, makeStyles } from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport React, {ChangeEvent, ReactElement} from 'react';\r\nimport './toggleSwitch.scss';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n input: {\r\n '& + .switch-label::before': {\r\n backgroundColor: theme.palette.grey[200],\r\n },\r\n '& + .switch-label::after': {\r\n backgroundColor: theme.palette.grey[600],\r\n boxShadow: '0 0 0 2px white',\r\n },\r\n '&:checked + .switch-label::before': {\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n '&:checked + .switch-label::after': {\r\n backgroundColor: theme.palette.primary.main,\r\n }\r\n },\r\n toggleSwitch: {\r\n '&:focus-within .switch-label::before': {\r\n outline: `2px solid ${theme.palette.background.paper}`,\r\n transition: '0s'\r\n }\r\n },\r\n \r\n })\r\n);\r\n\r\ntype ToggleSwitchProps = {\r\n id: string;\r\n label: string;\r\n checked: boolean;\r\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\r\n}\r\n\r\nexport function ToggleSwitch(props: ToggleSwitchProps): ReactElement {\r\n const classes = useStyles({});\r\n const toggleSwitchClasses = classnames('toggle-switch', classes.toggleSwitch);\r\n\r\n return (\r\n <div className={toggleSwitchClasses}>\r\n <input\r\n id={props.id}\r\n className={classes.input}\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n aria-checked={props.checked}\r\n onChange={e => props.onChange(e)}\r\n checked={props.checked}\r\n />\r\n <label className=\"switch-label\" htmlFor={props.id} >\r\n {props.label}\r\n </label>\r\n </div>\r\n );\r\n \r\n \r\n}\r\n","import React, {ReactElement, useEffect, useState} from 'react';\r\nimport TooltipInfoCircle from '../../Icons/tooltipInfoCircle.svg';\r\nimport './tooltip.scss';\r\nimport {useLanguage} from '../../i18n';\r\nimport classnames from 'classnames';\r\n\r\ntype TooltipProps = {\r\n tooltipForLabel: string;\r\n text: string;\r\n bubbleDirection?: 'up' |'down' | 'left' | 'right' //default verdi er \"up\"\r\n}\r\n\r\nexport function Tooltip({tooltipForLabel, text, bubbleDirection = \"up\"} : TooltipProps): ReactElement {\r\n const [visible, setVisible] = useState(false);\r\n const l = useLanguage();\r\n \r\n\r\n const onEsc = (e: KeyboardEvent): void =>{\r\n if(e.key === 'Escape'){\r\n setVisible(false);\r\n }\r\n };\r\n const onOutsideClick = (): void => setVisible(false);\r\n\r\n useEffect(() => {\r\n if(visible){\r\n document.addEventListener('keyup', onEsc);\r\n document.addEventListener('click', onOutsideClick);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('keyup', onEsc);\r\n document.removeEventListener('click', onOutsideClick);\r\n };\r\n }, [visible]);\r\n\r\n const bobleClasses = classnames('boble', {'boble-hidden': !visible}, bubbleDirection );\r\n return (\r\n <div className=\"tooltip-container\" aria-live=\"polite\" aria-atomic=\"true\">\r\n <span className={bobleClasses} role=\"status\"> \r\n {visible && text}\r\n <i/>\r\n </span>\r\n <button type=\"button\"\r\n className=\"tooltip-btn\"\r\n onClick={() => setVisible(!visible)}\r\n aria-label={classnames(l(\"tooltip.label\"), tooltipForLabel)}>\r\n <TooltipInfoCircle/>\r\n </button>\r\n </div>\r\n );\r\n}","import { createStyles, Drawer, Theme } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport makeStyles from '@material-ui/styles/makeStyles';\r\nimport filter from 'ramda/es/filter';\r\nimport values from 'ramda/es/values';\r\nimport React, {PropsWithChildren, ReactElement} from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useLanguage } from '../../i18n';\r\nimport { isVisible, LayerCollection, LayerGroup } from '../../model/layer/layer';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport { toggleLayerGroup } from '../../store/map/actions';\r\nimport { IconButton } from '../themeButtton/themeButton';\r\nimport classnames from 'classnames';\r\nimport './layerSelector.scss';\r\nimport {ToggleSwitch} from '../toggleSwitch/toggleSwitch';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\nimport {Tooltip} from '../layerSelectorToolTip/tooltip';\r\n\r\n\r\nconst useLSStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n title: {\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n imageButton: {\r\n '& img': {\r\n border: `3px solid ${theme.palette.grey[300]}`,\r\n },\r\n '&:focus': {\r\n fontWeight: 'bold', \r\n },\r\n '&:focus img': {\r\n outline: `1px solid ${theme.palette.primary.dark}`,\r\n outlineOffset: '2px',\r\n }\r\n },\r\n layerChecked: {\r\n '& img':{\r\n border: `3px solid ${theme.palette.primary.light}`,\r\n }\r\n },\r\n imageSwitch: {\r\n '&:focus-within': {\r\n outline: `1px solid ${theme.palette.primary.light}`,\r\n }\r\n },\r\n switchButtonWrapper: {\r\n display: 'flex',\r\n maxWidth: 'fit-content',\r\n '&:focus-within': {\r\n outline: `1px solid ${theme.palette.primary.light}`,\r\n }\r\n }\r\n })\r\n);\r\n\r\nconst layerCollectionNotEmpty = (layers: LayerCollection): boolean => values(layers).length > 0;\r\n\r\ntype LayerSelectorProps = {\r\n open: boolean;\r\n closeDrawer: () => void;\r\n};\r\n\r\nexport function LayerSelector(props: LayerSelectorProps): JSX.Element {\r\n const classes = useLSStyles({});\r\n const titleClass = classnames(classes.title, 'layer-selector-header');\r\n const mobile = useMobileBreakpointInnsyn();\r\n const layers = useSelector((state: ApplicationState) => state.map.layers);\r\n const l = useLanguage();\r\n const getLayerGroup = (ids: string[]): LayerCollection => filter(layer => ids.includes(layer.id), layers);\r\n const drawerPosition = mobile ? 'bottom' : 'right';\r\n const toggleLayers = useActionCreator(toggleLayerGroup);\r\n \r\n // Layer groups\r\n const reinbeitedistriktLayer = getLayerGroup(['reinbeite_omr', 'reinbeite_distr']);\r\n const beitelagsLayer = getLayerGroup(['beitelagnamn', 'beitelaggrenser']);\r\n const samebyLayer = getLayerGroup(['samebygrenser']);\r\n\r\n return (\r\n <Drawer anchor={drawerPosition} onClose={props.closeDrawer} open={props.open}>\r\n <div className={'layer-selector-container'}>\r\n <div className={titleClass}>\r\n <h2>{l('map.layers')}</h2>\r\n <IconButton onClick={props.closeDrawer} tabIndex={0} aria-label={l('uu.close')}>\r\n <CloseIcon color=\"primary\" />\r\n </IconButton>\r\n </div>\r\n <div className={'layer-selector-body'}>\r\n <LayerGroupWrapper title={l('layerSelector.basemap')}>\r\n <div className={'image-switch-container'}>\r\n <MapLayerImageButton \r\n label=\"Standard\" \r\n layers={getLayerGroup(['norge_graatone', 'sverige_nedtonad'])} \r\n group=\"bg\"\r\n imgsrc=\"/assets/png/graatone.png\" \r\n />\r\n <MapLayerImageButton \r\n label={l('layerSelector.satellite')} \r\n layers={getLayerGroup(['norgeibilder', 'sverige_orto'])}\r\n group=\"bg\"\r\n imgsrc={'/assets/png/nib.png'} \r\n />\r\n <MapLayerImageButton \r\n label={l('layerSelector.color')} \r\n layers={getLayerGroup(['norge', 'sverige'])} \r\n group=\"bg\" \r\n imgsrc={'/assets/png/topo.png'} \r\n />\r\n </div>\r\n </LayerGroupWrapper>\r\n <LayerGroupWrapper title={l('layerSelector.reindrift')}>\r\n {layerCollectionNotEmpty(reinbeitedistriktLayer) &&\r\n <div className={classes.switchButtonWrapper}>\r\n <ToggleSwitch id={'layer-selector-reinbeite'} label={l('layerSelector.reinbeitedistrikt')} checked={isVisible(reinbeitedistriktLayer)} onChange={() => toggleLayers(reinbeitedistriktLayer, !isVisible(reinbeitedistriktLayer))}/>\r\n </div>\r\n }\r\n {layerCollectionNotEmpty(beitelagsLayer) &&\r\n <div className={classes.switchButtonWrapper}>\r\n <ToggleSwitch id={'layer-selector-beitelag'} label={l('layerSelector.beitelag')} checked={isVisible(beitelagsLayer)} onChange={() => toggleLayers(beitelagsLayer, !isVisible(beitelagsLayer))}/>\r\n </div>\r\n }\r\n {layerCollectionNotEmpty(samebyLayer) &&\r\n <div className={classes.switchButtonWrapper}>\r\n <ToggleSwitch id={'layer-selector-sameby'} label={l('layerSelector.samebygrense')} checked={isVisible(samebyLayer)} onChange={() => toggleLayers(samebyLayer, !isVisible(samebyLayer))}/>\r\n <Tooltip text={l('layerSelector.samebygrense.info')} tooltipForLabel={l('layerSelector.samebygrense')}/>\r\n </div>\r\n }\r\n </LayerGroupWrapper>\r\n <LayerGroupWrapper title={l('layerSelector.managementAreas')}>\r\n <MapLayerImageSwitch label={l('carnivore.wolf')} imgsrc={'/assets/svg/layerIcons/ulv.svg'} layers={getLayerGroup(['ulv'])}/>\r\n <MapLayerImageSwitch label={l('carnivore.bear')} imgsrc={'/assets/svg/layerIcons/bjorn.svg'} layers={getLayerGroup(['bjorn'])}/>\r\n <MapLayerImageSwitch label={l('carnivore.lynx')} imgsrc={'/assets/svg/layerIcons/gaupe.svg'} layers={getLayerGroup(['gaupe'])}/>\r\n <MapLayerImageSwitch label={l('carnivore.wolverine')} imgsrc={'/assets/svg/layerIcons/jerv.svg'} layers={getLayerGroup(['jerv'])}/>\r\n \r\n </LayerGroupWrapper> \r\n </div>\r\n </div>\r\n </Drawer>\r\n );\r\n}\r\n\r\ntype layerGroupProps = {\r\n title: string;\r\n}\r\n\r\nfunction LayerGroupWrapper(props: PropsWithChildren<layerGroupProps>): ReactElement {\r\n return (\r\n <div className={'layer-group-wrapper'}>\r\n <h3>{props.title}</h3>\r\n {props.children}\r\n </div>\r\n );\r\n}\r\n\r\n\r\ntype ImageButtonProps = {\r\n label: string;\r\n group?: string;\r\n layers: LayerCollection;\r\n imgsrc: string;\r\n};\r\n\r\n\r\nfunction MapLayerImageButton(props: ImageButtonProps): ReactElement {\r\n const classes = useLSStyles({});\r\n const checked = isVisible(props.layers);\r\n const toggleLayers = useActionCreator(toggleLayerGroup);\r\n const checkedClass = classnames('image-button', classes.imageButton, classes.layerChecked);\r\n const imageButtonClass = classnames('image-button', classes.imageButton);\r\n const handleClickLayer = (layers: LayerCollection) => e => {\r\n e.preventDefault();\r\n if (values(layers)[0].group && checked) {\r\n return;\r\n }\r\n toggleLayers(layers, !isVisible(layers));\r\n };\r\n // console.log(checked);\r\n return (\r\n <button className={checked ? checkedClass : imageButtonClass } onClick={handleClickLayer(props.layers)} aria-pressed={isVisible(props.layers)}>\r\n <img className={'layer-image'} src={props.imgsrc} alt=\"\" />\r\n <div>{props.label}</div>\r\n </button>\r\n );\r\n}\r\n\r\ntype ImageSwitchProps = {\r\n label: string;\r\n layers: LayerCollection;\r\n imgsrc: string;\r\n};\r\n\r\n\r\nfunction MapLayerImageSwitch(props: ImageSwitchProps): ReactElement {\r\n const classes = useLSStyles({});\r\n const imageSwitchClass = classnames('layer-selector-image-switch', classes.imageSwitch);\r\n const toggleLayers = useActionCreator(toggleLayerGroup);\r\n\r\n return (\r\n <div className={imageSwitchClass}>\r\n <ToggleSwitch id={`map-layer-${props.label}`} label={props.label} checked={isVisible(props.layers)} onChange={() => toggleLayers(props.layers, !isVisible(props.layers))}/>\r\n <img src={props.imgsrc} alt={''} />\r\n </div>\r\n );\r\n}\r\n\r\n","var _path, _path2, _path3, _path4, _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgDod = function SvgDod(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 64,\n height: 64,\n fill: \"none\",\n viewBox: \"0 0 40 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 35.125c8.353 0 15.125-6.772 15.125-15.125S28.353 4.875 20 4.875 4.875 11.647 4.875 20 11.647 35.125 20 35.125Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M20 5.375c8.063 0 14.625 6.563 14.625 14.625 0 8.063-6.563 14.625-14.625 14.625-8.063 0-14.625-6.563-14.625-14.625 0-8.063 6.563-14.625 14.625-14.625Zm0-1c-8.625 0-15.625 7-15.625 15.625s7 15.625 15.625 15.625 15.625-7 15.625-15.625S28.625 4.375 20 4.375Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 35.125c8.353 0 15.125-6.772 15.125-15.125S28.353 4.875 20 4.875 4.875 11.647 4.875 20 11.647 35.125 20 35.125Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M20 5.375c8.063 0 14.625 6.563 14.625 14.625 0 8.063-6.563 14.625-14.625 14.625-8.063 0-14.625-6.563-14.625-14.625 0-8.063 6.563-14.625 14.625-14.625Zm0-1c-8.625 0-15.625 7-15.625 15.625s7 15.625 15.625 15.625 15.625-7 15.625-15.625S28.625 4.375 20 4.375Z\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n clipPath: \"url(#dod_svg__a)\",\n clipRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.97 22.737c.642.135 1.31-.022 1.772-.488l1.407-1.407 2.007 2.007-1.407 1.407c-.462.466-.619 1.134-.485 1.776a1.735 1.735 0 0 1-.772 1.82 1.73 1.73 0 0 1-1.903-.026 1.735 1.735 0 0 1-.75-1.664 1.743 1.743 0 0 1-1.663-.75 1.729 1.729 0 0 1-.03-1.902 1.742 1.742 0 0 1 1.824-.773Zm12.062-5.472c-.642-.135-1.31.022-1.776.485l-1.406 1.406-2.008-2.007 1.407-1.407c.466-.463.623-1.13.488-1.772-.138-.668.12-1.4.773-1.825a1.729 1.729 0 0 1 1.902.03c.582.4.828 1.049.75 1.664a1.735 1.735 0 0 1 1.664.75c.388.564.4 1.328.026 1.903a1.735 1.735 0 0 1-1.82.773Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.257 22.25c.464.464 1.131.62 1.774.487a1.74 1.74 0 0 1 1.796 2.673 1.736 1.736 0 0 1-1.665.751 1.737 1.737 0 1 1-3.424-.13c.133-.643-.024-1.31-.488-1.774l-6.506-6.507c-.464-.464-1.131-.62-1.774-.487a1.74 1.74 0 0 1-1.824-.772 1.737 1.737 0 0 1 1.693-2.653 1.737 1.737 0 0 1 .752-1.665 1.74 1.74 0 0 1 2.672 1.796c-.133.643.023 1.31.487 1.774l6.507 6.507Z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"dod_svg__a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M11.875 28.125h16.25v-16.25h-16.25z\"\n })))));\n};\nexport default SvgDod;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgDna = function SvgDna(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Dna_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Dna_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.3 37c1.9-2.1 1.4-4.8.5-7.5 2.7.8 5.5 1.1 7.4-1l-1.7-1.6c-.4.4-.8.6-1.3.8l-6.7-6.2c.1-.5.3-.9.7-1.3l-1.7-1.6c-2 2.1-1.4 4.8-.5 7.5-2.7-.8-5.5-1.1-7.4 1s-1.4 4.8-.5 7.5c-2.7-.8-5.5-1.1-7.4 1l1.7 1.6c.4-.4.8-.6 1.3-.8l6.7 6.2c-.1.5-.3.9-.7 1.3l1.7 1.6c2-2.1 1.4-4.8.5-7.5 2.7.7 5.5 1 7.4-1zm-1.6-13.5 4.5 4.2c-1.1-.1-2.2-.5-3.4-.9-.5-1.2-.9-2.3-1.1-3.3zm-.6 5.1c.5 1.4 1 2.7 1.2 3.9l-5.2-4.9c1.2.2 2.6.6 4 1zm.5 6.8c-.3.3-.6.5-.9.6l-6.9-6.5c.1-.3.3-.7.6-.9.3-.3.6-.5.9-.6l6.9 6.4c-.1.4-.3.7-.6 1zm-7.3 5.1-4.5-4.2c1.1.1 2.2.5 3.4.9.5 1.2.9 2.3 1.1 3.3zm.6-5.1c-.5-1.4-1-2.7-1.2-3.9l5.2 4.8c-1.2-.1-2.6-.5-4-.9z\",\n className: \"Dna_svg__st0\"\n })));\n};\nexport default SvgDna;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgUnanalysedDna = function SvgUnanalysedDna(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".UnanalysedDna_svg__st0{fill:#707070}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"UnanalysedDna_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.3 37c1.9-2.1 1.4-4.8.5-7.5 2.7.8 5.5 1.1 7.4-1l-1.7-1.6c-.4.4-.8.6-1.3.8l-6.7-6.2c.1-.5.3-.9.7-1.3l-1.7-1.6c-2 2.1-1.4 4.8-.5 7.5-2.7-.8-5.5-1.1-7.4 1s-1.4 4.8-.5 7.5c-2.7-.8-5.5-1.1-7.4 1l1.7 1.6c.4-.4.8-.6 1.3-.8l6.7 6.2c-.1.5-.3.9-.7 1.3l1.7 1.6c2-2.1 1.4-4.8.5-7.5 2.7.7 5.5 1 7.4-1zm-1.6-13.5 4.5 4.2c-1.1-.1-2.2-.5-3.4-.9-.5-1.2-.9-2.3-1.1-3.3zm-.6 5.1c.5 1.4 1 2.7 1.2 3.9l-5.2-4.9c1.2.2 2.6.6 4 1zm.5 6.8c-.3.3-.6.5-.9.6l-6.9-6.5c.1-.3.3-.7.6-.9.3-.3.6-.5.9-.6l6.9 6.4c-.1.4-.3.7-.6 1zm-7.3 5.1-4.5-4.2c1.1.1 2.2.5 3.4.9.5 1.2.9 2.3 1.1 3.3zm.6-5.1c-.5-1.4-1-2.7-1.2-3.9l5.2 4.8c-1.2-.1-2.6-.5-4-.9z\",\n className: \"UnanalysedDna_svg__st0\"\n })));\n};\nexport default SvgUnanalysedDna;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgLag = function SvgLag(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32,\n height: 32\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 27.75 2.875 18.125 0 20.25 16 32l16-11.75-2.875-2.125L16 27.75zm0-4.25 13.125-9.625L32 11.75 16 0 0 11.75l2.875 2.125z\"\n })));\n};\nexport default SvgLag;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgZoominn = function SvgZoominn(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32,\n height: 32\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.25 11.313h-3V8.375H15.5v2.938h-3v2.813h3v3h2.75v-3h3zm8.438 2.437c.313-3.375-.75-6.625-2.938-9.25a12.461 12.461 0 0 0-2.313-2.125C19.749-1 13.374-.75 8.874 3c-2.563 2.188-4.125 5.25-4.438 8.625-.313 3.25.688 6.5 2.813 9L2.874 26.75c-1 1.5-.688 3.563.75 4.625a3.386 3.386 0 0 0 4.688-.75l4.313-6.125c4.25 1.563 9 .813 12.563-2.188 2.625-2.188 4.188-5.188 4.5-8.563zm-6.313 6.375C20.5 22.5 16.687 23 13.5 21.688c-.75-.313-1.438-.625-2.125-1.125-.625-.438-1.25-1-1.75-1.688-3.438-4.063-2.938-10.25 1.188-13.688 3.5-2.938 8.375-3 11.938-.438.625.438 1.25 1 1.813 1.625 3.438 4.125 2.875 10.25-1.188 13.75z\"\n })));\n};\nexport default SvgZoominn;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgZoomut = function SvgZoomut(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 32,\n height: 32\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.313 11.125h9.438V14h-9.438zm17.375 2.625c.313-3.375-.75-6.625-2.938-9.25a12.461 12.461 0 0 0-2.313-2.125C19.749-1 13.374-.75 8.874 3c-2.563 2.188-4.125 5.25-4.438 8.625-.313 3.25.688 6.5 2.813 9L2.874 26.75c-1 1.5-.688 3.563.75 4.625a3.386 3.386 0 0 0 4.688-.75l4.313-6.125c4.25 1.563 9 .813 12.563-2.188 2.625-2.188 4.188-5.188 4.5-8.563zm-6.313 6.375C20.5 22.5 16.687 23 13.5 21.688c-.75-.313-1.438-.625-2.125-1.125-.625-.438-1.25-1-1.75-1.688-3.438-4.063-2.938-10.25 1.188-13.688 3.5-2.938 8.375-3 11.938-.438.625.438 1.25 1 1.813 1.625 3.438 4.125 2.875 10.25-1.188 13.75z\"\n })));\n};\nexport default SvgZoomut;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgBed = function SvgBed(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Bed_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Bed_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.1 22H22c-1.8.8-3.3 1.9-3.9 3.9v10.9c.7 1.9 1.8 3.6 4.1 4 .3 0 .5.6.5 1 .1 1.3 0 2.6 0 4.2 2.2-1.5 4.2-2.9 6.2-4.1.9-.5 1.9-.9 3-.9 2.5-.1 5.1-.1 7.7 0 3.1.1 5.4-.8 6.5-3.8V26.3c-.7-2.2-2-3.6-4-4.3zM27.5 34.8c-.1.1-.3.2-.6.2h-4.4c-.3 0-.5-.1-.7-.2-.2-.2-.3-.3-.3-.5s.1-.3.2-.4c.1-.2.3-.4.7-.8.3-.4.7-.8 1-1 .3-.3.5-.6.8-.9.3-.3.4-.5.6-.7.2-.2.3-.3.4-.5h-2.4c-.3 0-.6 0-.8-.1-.2-.1-.3-.2-.3-.4s.1-.3.2-.4c.1-.1.3-.2.5-.2h3.7c.3 0 .6.1.8.2.2.1.3.3.3.5 0 .1 0 .2-.1.3 0 .1-.1.2-.1.3-.1.1-.1.2-.2.2l-.3.3-3 3.3h3.1c.3 0 .4.1.6.2.1.1.2.3.2.4.3 0 .2.1.1.2zm7.6 0c-.1.1-.4.2-.6.2h-4.4c-.3 0-.5-.1-.7-.2-.2-.2-.3-.3-.3-.5s.1-.3.2-.4c.1-.2.3-.4.7-.8.3-.4.7-.8 1-1 .3-.3.5-.6.8-.9.3-.3.4-.5.6-.7.2-.2.3-.3.4-.5h-2.4c-.3 0-.6 0-.8-.1-.2-.1-.3-.2-.3-.4s.1-.3.2-.4c.1-.1.3-.2.5-.2h3.7c.3 0 .6.1.8.2.2.1.3.3.3.5 0 .1 0 .2-.1.3 0 .1-.1.2-.1.3-.1.1-.1.2-.2.2l-.3.3-3 3.3h3.1c.3 0 .4.1.6.2.1.1.2.3.2.4.3 0 .2.1.1.2zm7.5 0c-.1.1-.4.2-.6.2h-4.4c-.3 0-.5-.1-.7-.2-.2-.2-.3-.3-.3-.5s.1-.3.2-.4c.1-.2.3-.4.7-.8.3-.4.7-.8 1-1 .3-.3.5-.6.8-.9.3-.3.4-.5.6-.7.2-.2.3-.3.4-.5h-2.4c-.3 0-.6 0-.8-.1-.2-.1-.3-.2-.3-.4s.1-.3.2-.4c.1-.1.3-.2.5-.2h3.7c.3 0 .6.1.8.2.2.1.3.3.3.5 0 .1 0 .2-.1.3 0 .1-.1.2-.1.3-.1.1-.1.2-.2.2l-.3.3-3 3.3h3.1c.3 0 .4.1.6.2.1.1.2.3.2.4.4 0 .3.1.1.2z\",\n className: \"Bed_svg__st0\"\n })));\n};\nexport default SvgBed;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgDigging = function SvgDigging(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Digging_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Digging_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m51.6 30-3 2.3-1.7 2.2.1.8-.1.1v.3l-.5 1.4v.8l-.6.9-.3 2.6-.9.6-1.1-1.1-2 .5-.3-.6-1.7-.9-1.9-.5-.6-1.1-1.3-.9-.2-.6v-1.4l-1.1-3.9-1.5-1-.2-1-1.5-1.7v-1.4L29.6 25l-.5-1.1-2.3-.9-1.2-1.1-2.2-.7-1.7.8h-1.3l-1.4.6-1.6.6-1.6 1.5v1l-.8.3-1.6 1.4-1 1.5-4 .8v2.9l5.1-1 1.3-1.9 1.2-1.1 1.7-.6v-1.5l.7-.7 1.3-.4 1.1-.5h1.3l1.4-.7 1.1.4 1.2 1 1.9.8.3.7 1.2 1.1v1.4l1.7 1.8.3 1.3 1.5 1 .8 2.8v1.6l.6 1.5 1.5 1 .7 1.4 2.3.6 1.2.7.9 1.2 2.2-.5 1.5 1.5 2.9-2 .3-3.1.6-1v-.9l.5-1.1.3-.8-.1-.6 1-1.3 2.3-1.8h3.2V30z\",\n className: \"Digging_svg__st0\"\n })));\n};\nexport default SvgDigging;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgErroneousReport = function SvgErroneousReport(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".ErroneousReport_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"ErroneousReport_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.9 33.1c.2-.3.4-.6.7-.9.1-.2.3-.3.5-.4.4-.2.7-.1 1 .1.1 0 .2.1.3 0 .2 0 .4 0 .6.2.1.1.1.5 0 .6-.3.5-.6.6-1 .5-.1-.1-.2-.1-.3-.2-.1-.1-.2-.1-.3 0-.4.5-.7 1.1-1.1 1.6-.1.2-.3.4-.4.6-.2.2-.4.2-.6.2-.2 0-.4-.1-.4-.4 0-.3-.1-.7-.1-1 0-.9.1-1.9.2-2.8v-.8h-.1c-.1.1-.1.2-.2.3-.6 1.2-1.1 2.3-1.5 3.6-.4 1.4-.9 2.7-1.4 4-.1.2-.1.4-.2.5-.1.3-.4.4-.6.5-.2.1-.5-.1-.6-.3-.1-.4-.2-.7-.2-1.1.1-1.4.1-2.7.2-4 .1-1.8.3-3.5.5-5.3v-1.5c-.1.4-.3.8-.4 1.2l-.6 1.8c-.3.9-.5 1.8-.8 2.7l-.9 4.2c-.2.8-.3 1.6-.4 2.4-.2 1.1-.5 2.3-.9 3.4-.1.4-.4.6-.8.7-.3.1-.7-.2-.9-.5-.3-.5-.4-1.1-.4-1.7-.1-.9-.2-1.7-.2-2.6v-2.8c0-.8.1-1.7.1-2.5l.3-3.9v-.1c-.1.4-.2.8-.3 1.3-.3 1.2-.5 2.5-.7 3.7-.2.9-.3 1.7-.4 2.6-.2 1.5-.5 3.1-.7 4.6-.1.5-.1 1-.3 1.5-.1.6-.5.8-.9.6-.3-.1-.4-.5-.5-.8 0-.5-.1-.9-.1-1.4v-2.8c0-.9.1-1.9.1-2.8 0-1 .1-1.9.1-2.9 0-1.1.1-2.2.1-3.3 0-1.1.1-2.1.2-3.2 0-.3.1-.6 0-1 0 .1-.1.2-.1.3-.2.7-.5 1.3-.7 2-.3 1.1-.6 2.1-.8 3.2-.4 1.8-.7 3.6-1.2 5.3-.1.2-.2.5-.4.7-.3.3-.9.3-1.1-.1-.2-.4-.3-.9-.3-1.4-.1-.9-.1-1.9-.2-2.8-.1-.9-.1-1.8-.2-2.8 0-.3-.1-.6-.1-.8h-.1c-.1.3-.2.5-.3.8-.3.9-.5 1.7-.9 2.6-.3.7-.5 1.4-.9 2-.2.5-.6.6-1.1.4l-.3-.3-.3-1.8v-.2l-.1-.1c-.1.3-.3.6-.4.8-.1.1-.1.3-.2.4-.2.2-.5.3-.7.2-.3-.2-.4-.4-.3-.7.3-.6.7-1.3 1-1.9.2-.4.5-.4.8-.4.3 0 .4.3.6.5.2.5.4.9.4 1.4l.3-.9c.3-1 .6-2 1-2.9.2-.5.4-1 .8-1.3.3-.3.9-.2 1.1.1.3.4.5.8.5 1.3 0 .6.2 1.2.2 1.8.1.8.1 1.6.1 2.5 0 .6.1 1.3.2 1.9 0-.2.1-.4.2-.5.3-1.6.7-3.3 1-4.9.1-.5.3-.9.4-1.4.2-.5.3-1.1.5-1.6.2-.7.5-1.3.7-2 .3-.7.6-1.3 1-2 .1-.2.3-.3.6-.4.3-.1.6.1.7.5v1.1c-.1.9-.1 1.7-.2 2.6-.1 1-.1 2-.2 3.1 0 .6-.1 1.2-.1 1.7 0 .9-.1 1.9-.1 2.8 0 1.1-.1 2.1-.1 3.2v.1l.3-1.5c.2-1 .3-1.9.5-2.9.1-.8.3-1.5.5-2.3l.6-2.4c.4-1.3.7-2.5 1.1-3.7.2-.7.5-1.4.8-2.1.1-.3.3-.4.6-.4s.4.2.5.5v.5c-.1.6-.2 1.3-.3 1.9-.2 1.3-.4 2.7-.6 4-.1.9-.2 1.7-.3 2.6-.1 1-.1 2.1-.2 3.1 0 .9-.1 1.7-.1 2.6 0 1.1.1 2.3.2 3.4 0 .3.1.6.1.8 0 .1 0 .1.1.2.1-.2.2-.5.2-.7.2-.9.4-1.8.5-2.6.3-1.4.5-2.7.8-4.1.1-.7.3-1.3.5-2 .1-.5.2-.9.4-1.4.5-1.4.9-2.8 1.4-4.2.2-.6.5-1.2.8-1.8.1-.2.3-.4.5-.5.3-.2.8 0 .8.4.1.4.1.9.1 1.3-.1 1.3-.1 2.5-.2 3.8-.1 1.3-.3 2.6-.4 3.9-.1.8-.1 1.5-.1 2.3 0-.1.1-.1.1-.2.3-.8.5-1.6.8-2.4.4-1.1.9-2.1 1.3-3.1.2-.5.5-.9.9-1.3.3-.3.9-.3 1.1 0l.3.6c.2.7.2 1.3.2 2-.1.2-.2.7-.2 1.2z\",\n className: \"ErroneousReport_svg__st0\"\n })));\n};\nexport default SvgErroneousReport;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgFaeces = function SvgFaeces(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Faeces_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Faeces_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.8 34.8c-.2-.2-.4-.4-.5-.7-.9-1.3-.9-2.9.1-4s2.6-1.4 3.9-.6c2.9 1.8 6.1 2.5 9.3 2.9 1.5.2 2.8.5 3.5 2.1.1.3.5.5.8.7 2.3 1.6 2.3 4.5-.3 5.6-2.4 1-5.1 1.6-7.7 1.9-3.8.5-7.5-.1-11-1.6-1.3-.5-2.3-1.4-2.4-2.9 0-1.3.4-2.4 1.6-2.9.8-.4 1.7-.4 2.7-.5zM30.2 28.8c1.4-.4 1.7-1.4 1.8-2.7.1-3 1.6-4.5 4.6-4.9-1.4 1.4-.7 2.5.3 3.6 1.4 1.4 2.2 3.1 1.9 5.1-.1 1-.5 1.5-1.6 1.3-2.4-.6-4.7-1.2-7.1-1.8.1-.2.1-.4.1-.6z\",\n className: \"Faeces_svg__st0\"\n })));\n};\nexport default SvgFaeces;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgFootprint = function SvgFootprint(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Footprint_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Footprint_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.8 44.1c-.9-.3-1.8-.7-2.8-1.1-1.5-.6-2.9-.6-4.4-.1-.8.3-1.6.6-2.5.8-.5.1-1 .2-1.5.2-1.6 0-2.8-1.5-2.4-3.1.5-2.2 1.4-4.1 2.8-5.8 1.7-2.1 4-3 6.7-2.4 1 .2 1.8.8 2.5 1.5 1.8 1.6 3.1 3.6 4.1 5.8.2.5.4 1.2.4 1.7.1 1.1-.5 1.9-1.5 2.3-.1 0-.3.1-.4.1-.3.1-.7.1-1 .1zM36.8 19.9c1.7.5 2.4 1.9 2.5 3.6.1 1.5-.2 2.9-1.2 4.1-.3.3-.6.7-.9.9-1.4 1-2.9.7-3.9-.8-1.5-2.3-.4-7 2.7-7.8h.8zM44.6 31c-.2.7-.4 1.3-.7 2-.6 1.2-1.5 2.1-2.9 2.4-1.1.3-2-.1-2.6-1.1-.7-1.1-.6-2.3-.3-3.5.4-1.5 1.3-2.8 2.8-3.4 1.4-.6 2.6-.1 3.3 1.3l.3.9c.1.5.1.9.1 1.4zM19.4 30c.1-.2.1-.4.2-.6.4-1.4 1.9-2.1 3.3-1.5 2.2 1 3.5 3.6 3 6-.4 1.7-1.8 2.4-3.3 1.8-1.7-.7-2.7-2.1-3.1-3.9 0-.1-.1-.2-.1-.3V30zM31.2 25.2c0 1.1-.2 2-.8 2.8-.8 1-2 1.3-3.1.7-1.7-.9-2.5-2.5-2.7-4.3-.1-1.2-.1-2.4.8-3.4.9-1.1 2.1-1.4 3.3-.6 1.4.9 2.1 2.2 2.4 3.8 0 .4.1.8.1 1z\",\n className: \"Footprint_svg__st0\"\n })));\n};\nexport default SvgFootprint;","var _style, _circle, _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgHairOrFeather = function SvgHairOrFeather(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".HairOrFeather_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"HairOrFeather_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.2 45c.1-.7.2-1.2.3-1.8.3-1.7.4-3.4.2-5.2-.1-.7-.1-1.5-.2-2.2-.3-1.7-.6-3.3-1-4.9-.6-2.3-1.3-4.5-2-6.8-.5-1.6-1.2-3.1-1.8-4.6-.1-.2-.2-.5-.3-.8.2.1.3.1.4.2 2.6 2.2 5 4.7 6.8 7.9 1 1.8 1.9 3.7 2.5 5.7.5 1.7.9 3.4 1.1 5.2.1 1.9 0 3.8 0 5.7 0 .4-.1.7-.2 1.1 0 .4-.3.4-.5.4h-4.6c-.2.1-.4.1-.7.1z\",\n className: \"HairOrFeather_svg__st0\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.5 44.5h-4.7c.1-.6.2-1.1.3-1.6.1-1.3.2-2.6.2-3.9-.1-1.9-.4-3.8-.9-5.6-.5-1.7-.9-3.4-1.5-5.1L19.7 25l-.6-1.5c0-.1 0-.2-.1-.4 3.1 2.4 5.5 5.3 7.1 9.1 1.6 3.9 2.2 8 1.4 12.3zM45 24l-.3.9c-.8 2.2-1.7 4.4-2.4 6.7-.5 1.8-.8 3.6-1.2 5.4-.4 1.7-.4 3.4-.3 5.1 0 .9.2 1.7.3 2.6 0 .2 0 .4.1.6h-4.7c-.3-1.6-.5-3.3-.3-4.9.1-.7.2-1.4.2-2.1.2-1.5.6-2.9 1.1-4.3 1.2-3.5 3.2-6.2 5.7-8.5.6-.5 1.1-1 1.7-1.5.1-.1.1-.1.1 0z\",\n className: \"HairOrFeather_svg__st0\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.2 37.3c-.2-1-.3-1.9-.5-2.7-.3-1.2-.7-2.4-1.1-3.6-.1-.5-.2-.8.1-1.2 1.1-2 2.5-3.6 4.1-4.9 1.7-1.4 3.5-2.7 5.4-3.6.4-.2.7-.4 1.1-.6h.3c-4.6 4.3-7.7 9.8-9.4 16.6z\",\n className: \"HairOrFeather_svg__st0\"\n })));\n};\nexport default SvgHairOrFeather;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgObservation = function SvgObservation(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Observation_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Observation_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.6 35.1c-.9 0-1.6-.3-2.2-.8-.6-.6-.9-1.3-.9-2.3 0-.9.3-1.6.9-2.2.6-.6 1.3-.9 2.2-.9.9 0 1.6.3 2.2.9.6.6.9 1.3.9 2.2 0 1-.3 1.8-.9 2.3-.6.6-1.3.8-2.2.8zM32 35.1c-.9 0-1.6-.3-2.2-.8-.6-.6-.9-1.3-.9-2.3 0-.9.3-1.6.9-2.2.6-.6 1.3-.9 2.2-.9s1.6.3 2.2.9c.6.6.9 1.3.9 2.2 0 1-.3 1.8-.9 2.3-.6.6-1.3.8-2.2.8zM45.4 35.1c-.9 0-1.6-.3-2.2-.8-.6-.6-.9-1.3-.9-2.3 0-.9.3-1.6.9-2.2.6-.6 1.3-.9 2.2-.9.9 0 1.6.3 2.2.9.6.6.9 1.3.9 2.2 0 1-.3 1.8-.9 2.3-.6.6-1.3.8-2.2.8z\",\n className: \"Observation_svg__st0\"\n })));\n};\nexport default SvgObservation;","var _circle;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgReproduction = function SvgReproduction(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n style: {\n fill: \"#fff\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 26.1c2 .1 4-.8 5.8-.9 3.1-.2 5.9.3 7.9 1.9 4.5 3.3 3.8 6.2 1.9 8.9-1.2-.3-.3-3-.4-4.2-.1-1.1-.6-1.7-1.1-1.6-.1 1.1-.2 2.1-.6 2.6 0 .9-.1 2.3.3 2.3.9.4 1.1 1 .6 1.9-.4.7-.8 1.5-1.2 2.2-.4.7-1 1.2-2.1 1-.7.9-2.3 1.7-3.8 1.4-.3-.1-.5-.1-.6-.3.2-.6.2-1.3 1.8-1.5.5-.4.9-.8 1.3-1.2.7-1.2.2-1.9-.5-2.5-.7-.5-1.2-1.1-1.6-1.9-1 .5-2 .7-3 .5-.6 2.2-1 4.4-1.4 5.7-.1.3-.3.5-.5.7-.5.5-.9.8-1.5.5-.5.7-1.2 1-2.1.8-.3-.1-.6-.1-.7-.4.1-.6.3-1.2 1.7-1.3.5-1.7.8-3.6 1.1-5.4-.9-.3-1.8-1.2-2.7-2.3-.9-.9-2.2-1.1-4.1-.3-.8.6-1.5 1.2-2.4.7-1.5.1-2.3-.3-1.5-1.6.5-.7.7-1.6.5-2.8.1-.8.3-1.6 1-2.4-.5-.5-.8-.9-1-1.4-.2-.6.4-.5 2 .3 1.2-.7 4 0 6.9.6z\",\n style: {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n fill: \"#fff\"\n }\n }));\n};\nexport default SvgReproduction;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgTerritorialMarking = function SvgTerritorialMarking(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".TerritorialMarking_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"TerritorialMarking_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 44.7H24.2c-.4-.1-.8-.2-1.1-.4-.9-.6-1.5-1.6-1.8-2.9 0-.2-.1-.5-.1-.7v-.9c.1-.3.1-.7.2-1 .2-.6.5-1.1.8-1.7.9-1.4 1.7-2.9 2.3-4.6 0 0 0-.1.1-.1.1.2.1.4.2.5.3.9.7 1.8 1.1 2.6.5.8.9 1.6 1.4 2.4.2.4.5.9.6 1.4.1.2.1.4.1.7v.7c0 .2 0 .3-.1.5-.3 1.7-1 2.8-2.3 3.4-.1-.1-.4-.1-.6.1zM32.5 29.6H31.7c-.4-.1-.8-.2-1.1-.4-.9-.6-1.5-1.6-1.8-2.9 0-.2-.1-.5-.1-.7v-.9c.1-.3.1-.7.2-1 .2-.6.5-1.1.8-1.7.9-1.4 1.7-2.9 2.3-4.6 0 0 0-.1.1-.1.1.2.1.4.2.5.3.9.7 1.8 1.1 2.6.4.8.9 1.6 1.4 2.4.2.4.5.9.6 1.4.1.2.1.4.1.7v.7c0 .1 0 .3-.1.5-.3 1.7-1 2.8-2.3 3.4-.1-.1-.4 0-.6.1zM39.8 44.8H39c-.4-.1-.8-.2-1.1-.4-.9-.6-1.5-1.6-1.8-2.9 0-.2-.1-.5-.1-.7v-.9c.1-.3.1-.7.2-1 .2-.6.5-1.1.8-1.7.9-1.4 1.7-2.9 2.3-4.6 0 0 0-.1.1-.1.1.2.1.4.2.5.3.9.7 1.8 1.1 2.6.5.8.9 1.6 1.4 2.4.2.4.5.9.6 1.4.1.2.1.4.1.7v.7c0 .2 0 .3-.1.5-.3 1.7-1 2.8-2.3 3.4-.1 0-.2 0-.6.1z\",\n className: \"TerritorialMarking_svg__st0\"\n })));\n};\nexport default SvgTerritorialMarking;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgTreeMarkings = function SvgTreeMarkings(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".TreeMarkings_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"TreeMarkings_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m42.6 40.5-6.8-10.2h5.6L32 16.1l-9.4 14.2h5.6l-6.8 10.2h8.8v7.3h3.6v-7.3z\",\n className: \"TreeMarkings_svg__st0\"\n })));\n};\nexport default SvgTreeMarkings;","var _style, _circle, _path, _path2, _circle2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgVisualObservation = function SvgVisualObservation(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".VisualObservation_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"VisualObservation_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46 31.6c-.1-.1-1.6-2-4-4-1.5-1.2-2.9-2.1-4.4-2.7-1.9-.8-3.7-1.3-5.5-1.3-1.8 0-3.6.4-5.5 1.3-1.5.7-3 1.6-4.4 2.7-2.5 1.9-4 3.9-4 4l-.5.4.3.4c.1.1 1.6 2 4 4 1.5 1.1 2.9 2.1 4.4 2.7 1.9.8 3.7 1.3 5.5 1.3 1.8 0 3.6-.4 5.5-1.3 1.5-.7 3-1.6 4.4-2.7 2.5-1.9 4-3.9 4-4l.3-.4-.1-.4zm-14 6.9c-3.6 0-6.5-2.9-6.5-6.5s2.9-6.5 6.5-6.5 6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5z\",\n className: \"VisualObservation_svg__st0\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 3.7,\n className: \"VisualObservation_svg__st0\"\n })));\n};\nexport default SvgVisualObservation;","var _path, _path2, _path3, _path4;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgCattle = function SvgCattle(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 64,\n height: 64,\n fill: \"none\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 56.2c13.365 0 24.2-10.835 24.2-24.2C56.2 18.635 45.365 7.8 32 7.8 18.635 7.8 7.8 18.635 7.8 32c0 13.365 10.835 24.2 24.2 24.2Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4 0 12.9-10.5 23.4-23.4 23.4C19.1 55.4 8.6 44.9 8.6 32 8.6 19.1 19.1 8.6 32 8.6ZM32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M29.3 40.4v-2.2c0-.1.1-.2.1-.3.2-.3.2-.6.2-1 0-.3.1-.5.1-.9 0-.5.1-.9.1-1.3 0-.1 0-.2.2-.2.3-.2.7-.2 1.1-.1.7.1 1.4.2 2 .2.2 0 .4.1.5.1.1 0 .2.1.2.1.3.1.5.1.9.2 0 0 .1 0 .1-.1.4-.2.8-.4 1.1-.5.4-.2.7-.3 1.1-.5.2-.1.4-.1.6-.1.3.1.5.3.8.5 0 0 .1.1.1.2v.2s.1.2.2.2.2-.1.2-.2c.1-.2.1-.3.1-.5 0 0 0-.1.1-.1v.2c0 .2 0 .2.1.4 0 .1.1.1.2.2l.1-.1c.1-.2.1-.3.1-.4 0-.1.1-.2.2-.2.1.1.2.1.2.2.4.5.8 1.2 1.2 1.7.4.6.5 1.3.6 2.1.1.9-.1 1.7-.3 2.5-.1.2-.2.2-.2.3-.1.2-.3.3-.2.5l-.1.1-.2.2c-.1.1-.1.2.1.2.5.2 1.1.2 1.6.1.2 0 .3-.4.2-.5 0-.1-.1-.1-.1-.1 0-.1.1-.2.1-.2.1-.1.1-.2.2-.2l-.1-.1h.2c-.1-.1-.2-.2-.1-.3.1-.1.2-.1.3-.2-.1 0-.2-.1-.2-.2.1 0 .2-.1.3-.1-.1-.1-.2-.1-.2-.2 0 0-.1-.1-.1-.2 0-1-.1-2 .2-3 .1-.4.2-.7.3-1 0-.2 0-.3-.1-.4-.3-.3-.3-.7-.5-1.1-.2-.5-.1-.9 0-1.3.1-.9.3-1.9.6-2.8.2-.5.4-1 .5-1.5h.1c0 .2.1.3.1.5v.6c0 .4-.1.8-.3 1.2-.2.3-.2.6-.3 1-.1.6-.1 1.2-.2 1.8 0 .5.1.9.1 1.4 0 .1 0 .2.2.2l.1.1.2.2c.1-.1.1-.2.2-.2.2.2.5 0 .5-.3s-.1-.6-.2-1-.2-.8-.2-1.2c0-.2 0-.5.1-.5.3-.3.3-.7.3-1.1.1-.5.1-1.1.2-1.6s0-1-.2-1.6c-.2-.4-.2-.8-.4-1.2-.3-.9-.9-1.4-1.8-1.5-.5-.1-.9-.2-1.3-.2-.1 0-.2 0-.2-.1-.7-.2-1-.2-1.3-.2-.5 0-1.1.1-1.6.1-.5.1-1.2.2-1.7.2-1.5.1-3 .1-4.5.1h-2.3l-2.4.3c-.5.1-1 .4-1.5.6-.2.1-.4.2-.6.2-.4.2-.9.3-1.2.4-.3.1-.6.2-.9.2h-.2c-.3-.2-.5-.2-.9 0-.2.2-.4.2-.6.2-.2 0-.3-.1-.4-.3-.1-.2-.2-.3-.2-.4-.4-.2-.5-.5-.5-1-.2.2-.3.5-.2.8-.2.1-.5.2-.8.3H19c-.1-.2-.2-.3-.3-.5-.1-.1-.1-.2-.1-.2-.2.2-.2.5-.1.7.1.2.2.3.3.5.1.1.1.2 0 .2-.2.4-.5.7-.8 1-.2.2-.2.2-.2.5 0 .2-.1.4-.1.5 0 .1-.1.1-.1.2-.2.2-.3.4-.5.5-.2.2-.4.5-.6.7-.1.2-.2.2-.2.4v.3c.2.2.2.5.5.6h.1c.1.2.3.2.5.2s.4 0 .5-.2c0-.1.2-.1.2-.1.5-.1.9-.1 1.3-.2s.7 0 1 0c1-.1 1.8.5 2.5 1.1.2.2.4.4.5.6.2.4.5.7.9.9.2.2.4.2.6.4.2.1.4.2.5.4.4.3.8.5 1.2.6.2 0 .2.1.2.2.1.5.2.9.3 1.4.1.3.2.5.2.9.2.3.1.6.1.9-.1.5-.1 1.1-.2 1.6 0 .1-.1.2-.1.2-.1.2-.2.3-.4.5-.1.2-.2.2-.4.4v.2c0 .1.1.1.2.2.5.1.9 0 1.4-.2H28.2c.1-.2.2-.2.4-.2.3-.2.5-.4.2-.7.5-.3.5-.5.5-.8Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M29 40.9c.3-.1.3-.2.3-.5v-2.2c0-.1.1-.2.1-.3.2-.3.2-.6.2-1 0-.3.1-.5.1-.9 0-.5.1-.9.1-1.3 0-.1 0-.2.2-.2.3-.2.7-.2 1.1-.1.7.1 1.4.2 2 .2.2 0 .4.1.5.1.1 0 .2.1.2.1.3.1.5.1.9.2 0 0 .1 0 .1-.1.4-.2.8-.4 1.1-.5.4-.2.7-.3 1.1-.5.2-.1.4-.1.6-.1.3.1.5.3.8.5 0 0 .1.1.1.2v.2c0 .1.1.2.2.2s.2-.1.2-.2c.1-.2.1-.3.1-.5 0 0 0-.1.1-.1v.2c0 .2 0 .2.1.4 0 .1.1.1.2.2l.1-.1c.1-.2.1-.3.1-.4 0-.1.1-.2.2-.2.1.1.2.1.2.2.4.5.8 1.2 1.2 1.7.4.6.5 1.3.6 2.1.1.9-.1 1.7-.3 2.5-.1.2-.2.2-.2.3-.1.2-.3.3-.2.5l-.1.1-.2.2c-.1.1-.1.2.1.2.5.2 1.1.2 1.6.1.2 0 .3-.4.2-.5 0-.1-.1-.1-.1-.1 0-.1.1-.2.1-.2.1-.1.1-.2.2-.2l-.1-.1h.2c-.1-.1-.2-.2-.1-.3.1-.1.2-.1.3-.2-.1 0-.2-.1-.2-.2.1 0 .2-.1.3-.1-.1-.1-.2-.1-.2-.2 0 0-.1-.1-.1-.2 0-1-.1-2 .2-3 .1-.4.2-.7.3-1 0-.2 0-.3-.1-.4-.3-.3-.3-.7-.5-1.1-.2-.5-.1-.9 0-1.3.1-.9.3-1.9.6-2.8.2-.5.4-1 .5-1.5h.1c0 .2.1.3.1.5v.6c0 .4-.1.8-.3 1.2-.2.3-.2.6-.3 1-.1.6-.1 1.2-.2 1.8 0 .5.1.9.1 1.4 0 .1 0 .2.2.2l.1.1.2.2c.1-.1.1-.2.2-.2.2.2.5 0 .5-.3s-.1-.6-.2-1-.2-.8-.2-1.2c0-.2 0-.5.1-.5.3-.3.3-.7.3-1.1.1-.5.1-1.1.2-1.6s0-1-.2-1.6c-.7-.3-.7-.7-.9-1.2-.3-.9-.9-1.4-1.8-1.5-.5-.1-.9-.2-1.3-.2-.1 0-.2 0-.2-.1-.2-.2-.5-.3-.9-.3-.5 0-1.1.1-1.6.1-.5.1-1.2.2-1.7.2-1.5.1-3 .1-4.5.1h-2.3l-2.4.3c-.5.1-1 .4-1.5.6-.2.1-.4.2-.6.2-.4.2-.9.3-1.2.4-.3.1-.6.2-.9.2h-.2c-.3-.2-.5-.2-.9 0-.2.2-.4.2-.6.2-.2 0-.3-.1-.4-.3-.1-.2-.2-.3-.2-.4-.4-.2-.5-.5-.5-1-.2.2-.3.5-.2.8-.2.1-.5.2-.8.3h-.2c-.1-.2-.2-.3-.3-.5-.1-.1-.1-.2-.1-.2-.2.2-.2.5-.1.7.1.2.2.3.3.5.1.1.1.2 0 .2-.2.4-.5.7-.8 1-.2.2-.2.2-.2.5 0 .2-.1.4-.1.5 0 .1-.1.1-.1.2-.2.2-.3.4-.5.5-.2.2-.4.5-.6.7-.1.2-.2.2-.2.4v.3c.2.2.2.5.5.6h.1c.1.2.3.2.5.2s.4 0 .5-.2c0-.1.2-.1.2-.1.5-.1.9-.1 1.3-.2s.7 0 1 0c1-.1 1.8.5 2.5 1.1.2.2.4.4.5.6.2.4.5.7.9.9.2.2.4.2.6.4.2.1.4.2.5.4.4.3.8.5 1.2.6.2 0 .2.1.2.2.1.5.2.9.3 1.4.1.3.2.5.2.9.2.3.1.6.1.9-.1.5-.1 1.1-.2 1.6 0 .1-.1.2-.1.2-.1.2-.2.3-.4.5-.1.2-.2.2-.4.4v.2c0 .1.1.1.2.2.5.1.9 0 1.4-.2H28.1c.1-.2.2-.2.4-.2.6-.3.7-.5.5-.9Z\"\n })));\n};\nexport default SvgCattle;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgDog = function SvgDog(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Dog_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Dog_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.3 43.2c-.1-.4-.5-2.8-.5-3.6-.1-.7.2-.8-.5-1.6s-1.5-2.2-1.7-3c-.2-.7-.6-3-.9-4-.3-.9-1.2-2.2-1.2-2.2s1.5-2 1.8-3.3c.3-1.5.1-2.9-.6-4.4-.4-1-2.1-1.6-2.1-1.6s.9 1.8 1.1 2.8c.2 1 .2 2.3-.8 3.9-.8 1.3-1 1.6-1.7 1.8-.7.2-2.1.1-3.6.1s-2.4.2-3.6.1c-1.3-.1-1.8-.5-2.4-.5-.6 0-2.2-.6-3.2-1l-.6-.3c-.6-.7-1.2-1.6-1.4-2.1-.3-.7-.4-1.7-1.3-2.2 0 0-1.2-.6-2.1-.8-.9-.1-2.2 0-2.4.2-.2.2-.4.6-.6.8-.3.2-2.2.3-2.4.4-.2.1-.3.5-.3.7 0 .2 0 .9.1 1.1.1.2.5 1.1 2.1 1.4 1.6.4 1.9-.1 2.1.5.2.6-1.1 2.3.3 3.2 1 .7 1.9-.1 1.9-.1l.3 1.2c.1.8.3 1.9 1 2.8 1.2 1.4 1.6 1.8 1.9 2.5.3.6.3 2.6.4 4.1 0 .9.3 1.8-.3 2.2-.7.3-1 .5-1 .7 0 .2.3.7.7.7.5 0 1.4-.1 1.5-.4.1-.3.7-2.4.7-2.4l.1-1.5s.7 2.5.6 3.2c-.1.6-1.3.8-1.2 1.4.1.6 1.1.3 1.8.2.7-.1.7-1.1.7-1.7 0-.6 0-.6.1-1 .1-.5.2-3.3.3-4.1.1-.7.1-1.6 1.8-1.7 1.8-.1 3.7-.4 4.5-.9.8-.5 1.7.5 1.7.5.5 1.6 1.3 2.2 1.6 2.5.9.7.9.5 1.3 1.7.4 1.1.6 2 .4 2.2-.2.3-.9.2-1 .5.1.5-.2.8.3.8.4.1 2 .3 2.2-.2.2-.5.3-2.1.4-2.8.1-.7.1-1.4.1-1.4s1 .6 1.4 1.3c.4.7.7 2.7.7 2.7s-.7-.1-.9.5c-.2.5.5.7 1 .7.4-.1 1.6-.2 1.4-.6z\",\n className: \"Dog_svg__st0\"\n })));\n};\nexport default SvgDog;","var _style, _circle, _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgGoat = function SvgGoat(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Goat_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Goat_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.3 20.9h.3v.1c-.1.3-.1.6-.2.9 0 .1 0 .2.1.3.1.1.2 0 .3 0 .1-.1.2-.2.2-.3.2-.4.6-.5 1-.7.2-.1.4-.1.6-.1.3 0 .7 0 1 .2.6.3 1.2.6 1.6 1.2.1.1.2.3.2.5v.1s-.1 0-.1-.1c-.1-.2-.3-.3-.4-.5-.2-.2-.3-.3-.6-.4-.4-.1-.7-.2-1.1-.1-.3.1-.6.2-.8.4-.2.2-.2.3-.1.5 0 .1.1.1.1.2s.1.1.2.1h.1c.2-.1.4 0 .5.2l.1.1.3.3c.1.1.1.2-.1.3-.1 0-.1.1-.2.1l.1.1 1.5 1.2c.1.1.2.1.4.1h.6c.3 0 .5.1.8.2.2.1.4.1.7.1.4 0 .8 0 1.2.1.2.1.5.1.7.2.4.1.7.2 1.1.3.3.1.7.2 1 .2h1.2c.3 0 .6-.1.9-.2.5-.2 1-.3 1.5-.3.4 0 .7-.1 1.1-.1.3 0 .7-.1 1-.2h1c.7 0 1.5 0 2.2.1.5.1.9.3 1.3.5l1.5.9c.1.1.4 0 .4-.2v-.3c0-.1-.1-.2-.2-.2-.2 0-.4 0-.6-.1-.1 0-.2 0-.3-.1v-.3h.7V26c0-.1 0-.1.1-.2.1 0 .2-.1.3-.1-.1 0-.2-.1-.3-.1.2-.1.4-.1.4-.3 0-.2.2-.3.1-.5h.3c.2.1.4.1.5.2.3.1.4.3.5.6v1.2h.3v.1h-.1c-.1.2-.2.4-.4.6v.1c.1 0 .2.1.1.2v.1l.1.1c0 .1.1.1.1.2-.1 0-.1 0-.2.1h-.1s-.1 0-.1.1c0 0 0 .1.1.1s.2.1.2.1c0 .1-.1.2-.1.3h-.1v.2c-.1.1 0 .2 0 .3v.1c-.2 0-.2 0-.2.2 0 0 0 .1-.1.1s-.2.1-.2.2v.3c0 .3-.1.6-.4.9-.2.2-.4.5-.5.9-.1.4-.2.8-.4 1.2-.1.2-.2.5-.3.7 0 .1 0 .2-.1.3-.1.3-.2.6-.3 1-.1.3-.2.7-.3 1-.1.4-.2.7-.2 1.1 0 .4.1.8.2 1.2 0 .2.1.4 0 .6v1c0 .2-.1.4 0 .6 0 .1 0 .2-.1.2v.2c0 .5-.1 1-.2 1.5 0 .1-.1.2-.2.3-.1 0-.1.1-.2.2-.1.3-.2.4-.5.5h-.1c0 .1 0 .2.1.3.1.2 0 .3-.1.4-.2.2-.3.4-.6.3-.2 0-.3 0-.4.2l-.1.1h-1c-.2 0-.3-.2-.2-.3 0-.1.1-.1 0-.2v-.2c.1-.2.2-.3.3-.5.2-.2.3-.5.5-.7.1-.1.1-.2.2-.4l.3-.6c.1-.2.1-.4.2-.6 0-.1.1-.3.1-.4 0-.2.1-.5.1-.8v-.7c0-.1 0-.2-.2-.3-.1 0-.1-.1-.1-.2.1-.2 0-.4-.1-.6-.1-.3-.3-.6-.4-.8-.1-.1-.1-.3-.2-.4l-.1-.1-.1.1s0 .1-.1.1c-.2 0-.3.1-.5.1h-.6c-.2 0-.3-.1-.5-.2l-.1-.1c-.1 0-.3.2-.3.3l-.1.1c-.1-.1-.2 0-.3.1l-.1.1c-.1.1-.2.1-.3.3V38c0-.1 0-.2-.2-.2 0 0-.1 0-.1-.1 0-.2-.2-.3-.3-.3h-.1s-.1-.1-.1 0h-1.5c-.7-.1-1.3-.2-2-.3-.1 0-.3 0-.4-.1-.3-.1-.7-.3-1-.4-.3-.1-.5 0-.7.1-.1.1-.2.1-.3.1l-.1.1v.7c0 .2-.1.5-.1.7 0 .2-.1.3-.1.5s0 .3.2.4c-.1.1-.2.2-.3.2-.1 0-.1.1 0 .1l.2.2H30c-.1 0-.2.1-.2.2v.5c0 .1-.1.2-.1.3 0 .3 0 .7.1 1l.3 1.2c0 .1 0 .1.1.2.1.2.1.3.1.5 0 0-.1 0-.2-.1.1.2.1.3 0 .4 0 .1-.1.1-.2.1h-.1v.1l.1.1h-.1c.1.2.1.2-.1.3l-.1.1c.1 0 .2.1.3.1l-.1.1c-.2 0-.3.1-.4.3-.1.1-.1.1-.2.1h-.7c-.2 0-.3-.1-.5-.2-.1-.1-.2-.1-.2-.1-.2.1-.4.1-.5.1-.2 0-.4-.2-.4-.5.1-.3.3-.6.5-.9.2-.3.3-.6.3-1s-.1-.8-.1-1.1c-.1-.5-.2-.9-.2-1.4 0-.1-.1-.2-.1-.3v-1.4c0-.3-.1-.5-.2-.8-.1-.2-.1-.5-.4-.6-.1-.1-.3-.2-.3-.4l-.1-.1c-.2 0-.3-.1-.3-.2-.2-.3-.4-.5-.7-.7-.1-.1-.2-.2-.2-.3 0-.1 0-.2-.1-.2-.2-.2-.2-.4-.3-.6 0-.2-.1-.5-.1-.7 0-.3-.1-.6-.2-.9-.2-.3-.4-.6-.5-1-.1-.1-.1-.3-.2-.4-.1-.1-.2-.3-.2-.5 0-.1 0-.1-.1-.2-.2-.3-.3-.6-.5-.9-.2-.4-.4-.9-.6-1.3-.1-.2-.3-.4-.5-.7 0-.1-.1-.1-.2-.2-.1.1-.2.2-.2.3 0 .3.1.7.2 1v.2c0 .1-.1.2-.1.4v.5c-.1 0-.1-.1-.1-.1v.3c0-.1 0-.1-.1-.2l-.1.1c-.1.1-.1.2-.1.4-.1.2-.2.3-.2.5 0 0 0 .1-.1.1l-.1.1c0 .1-.1.2-.1.3-.1-.1-.1-.1-.2-.1.2-.3.2-.6.2-.9l-.3.6c-.1.1-.2.2-.2.1h-.2c.1 0 .1-.1.2-.2h-.2s-.1 0-.1-.1c0 0 0-.1.1-.1.1-.1.3-.2.4-.2h-.2c.1-.3.4-.6.3-1-.1 0-.1.1-.1.1 0-.3.1-.6.1-.8 0 0-.1 0-.1.1v-.7c0-.2 0-.4-.2-.6l-.1-.1c-.3 0-.6-.2-.8-.4-.1-.1-.1-.3 0-.4-.1-.1-.1-.3-.1-.5 0-.3 0-.5.2-.7.1-.1.1-.2.2-.3.2-.3.4-.6.4-1 0-.3 0-.4-.3-.4-.5 0-1-.2-1.4-.5l-.3-.3v-.1h.1c0-.1.1-.1.2-.2h.3c.2 0 .4.1.6 0 .2-.1.4-.1.7-.1.1 0 .1-.1.2-.1.1-.1.2-.1.2-.2.1-.1.1-.1.1-.2.1-.1.1-.3.2-.4.1-.1.2-.2.2-.3 0-.1.1-.3.1-.4 0 .1.3 0 .5-.3zm7.5 20s-.1 0 0 0c0 .4-.1.8.1 1.2v-1c0-.1-.1-.2-.1-.2z\",\n className: \"Goat_svg__st0\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.8 40.9c0 .1.1.2.1.3v1c-.2-.5-.1-.9-.1-1.3-.1 0 0 0 0 0z\",\n className: \"Goat_svg__st0\"\n })));\n};\nexport default SvgGoat;","var _style, _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgReindeer = function SvgReindeer(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 64,\n height: 64,\n fill: \"none\"\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Reindeer_svg__st0{fill:#fff}\")), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 56.2c13.365 0 24.2-10.835 24.2-24.2C56.2 18.635 45.365 7.8 32 7.8 18.635 7.8 7.8 18.635 7.8 32c0 13.365 10.835 24.2 24.2 24.2Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4 0 12.9-10.5 23.4-23.4 23.4C19.1 55.4 8.6 44.9 8.6 32 8.6 19.1 19.1 8.6 32 8.6ZM32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7Z\",\n className: \"Reindeer_svg__st0\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M20.4 25.1c.1-.1.1-.2-.2-.2-.3-.1-.5-.1-1.1-.2-.5-.1-.6-.2-1-.2-.4-.2-.5-.1-.6 0-.1 0-.5.1-.6.1-.1 0-.3 0-.2-.2.1-.2-.1-.2-.2-.3-.2-.1-.2-.2-.2-.3 0-.1-.2-.2-.2-.4-.1-.2 0-.2.1 0s.5.5.7.5c.2.1.3 0 .4-.1.1-.1-.2-.4-.2-.6-.1-.2.3.1.3.2.1.1.6.5 1.2.8.6.2 1.3.2 1.6.2.3 0 .5.1.7.1.2 0 .1-.1-.1-.2-.1-.2-.9-.7-1.1-.7-.2-.1-.4 0-.6 0-.2 0-.7 0-.9-.1-.2-.1-.1-.2 0-.2s.2-.1.3-.1c.1 0 .2-.2.1-.3-.1-.2-.5-.4-.6-.5-.2-.1-.2-.2.2-.2.3.1.6.3.9.5.2.2.5.2.5.2s.2 0 .2-.1c0-.2-.2-.3-.3-.5-.5 0-.6-.1-.5-.3 0-.2.2-.1.4.2.2.2.5.2.5.2s.1-.2.1-.4.1-.2.2-.1c.1.2.1.5 0 .7-.1.3.1.5.2.6.2.2.8.5 1.2.6.4.2.6 0 .8-.1.6-.4 1.9-1.8 2-2 .2-.2.5-.7.5-1 .1-.3 0-.5-.1-.7-.1-.2-.2-.6-.2-1.1-.1-.5-.3-.9-.6-1.2-.3-.4-.9-.8-1.2-1-.3-.2-.8-.6-1-.7-.2 0-.1 0 0 0s.1-.1 0-.3c-.1-.2.2 0 .2.1.6.6.9.7 1 .8.2.1.4.1.5-.1.1-.2 0-.7 0-.8 0-.2-.2-.5-.2-.7-.1-.1-.1-.2.1-.1.1.1.5.7.5.8.1.2.2 1 .2 1.3.1.2.2.2.3.2.1-.1.2-.5.3-.5.1-.1.1.2 0 .3 0 .2-.2.4 0 .7.1.3.5.7.7.8.2.1.4 0 .5-.1.1-.1.3-.4.3-.4v-.3c-.1-.2-.2-.5-.2-.6 0-.1-.1-.2 0-.4s.1.2.2.3c0 .2.2.5.2.8.1.2.3.1.4 0 .1-.1.1-.2.1-.3 0-.2.1-.5.1-.6 0-.1.1-.2.2-.1 0 .1 0 .2.1.4 0 .2 0 .2.2.1s.5-.9.5-.9c0-.1.2-.2.1.1 0 .3-.4 1.1-.6 1.4-.2.3-1.1.9-1.2 1.1-.2.2-.5.5-.5 1.1 0 .6-.2 1.2-.2 1.3-.1.1-.1.2 0 .3.1.1.4.1.5 0 .1 0 .2-.1.1.2-.2.2-.8.2-.8.2s-.1 0-.2.1c-.5.8-1.5 1.3-1.1 1.2.4-.1 1-.1 1.5-.2s2-.7 2.1-.8c.2-.2.2-.2.3-.5.2-.3.1.3.3.1.2-.2.7-.8.8-1 .1-.2.4-.6.5-.7.1-.1.2-.2.3-.6.1-.4 0-1.6 0-1.7-.2-1-.9-2-1-2.2l-.5-.5c-.1-.2.1-.2.2-.1.7.4 1.3 1.3 1.5 1.6.2.2.4.2.5.2.2 0 .2-.2.3-.2.1-.1.2 0 .2.2s-.3.5-.3.5c-.1.1.1.3.2.5s.2.2.3.2c.1 0 .5-.4.5-.5.1-.1.2-.3.3-.5.1-.2.2-.2.2 0s-.1.5-.2.7c-.1.2-.8.7-.9.9-.2.2-.2.6-.1.7 0 .1-.1.2.2.4.2.1.5 0 .5-.1.1-.1.1-.2.2-.2 0-.1 0-.3.1-.5 0-.2.2-.1.2 0s-.1.3-.1.3-.1.2.1.2c.1-.1.3-.3.4-.3.1-.1 0-.1 0-.2s-.1-.2-.1-.3c0-.2.1-.1.1 0s.1.2.2.2c.1.1.2 0 .2-.2.1-.2.2-.8.2-.9 0-.1.2-.1.2.1s-.2.9-.2 1.1c-.4.9-1.2 1.2-1.6 1.4-.3.2-.6.3-.9.6-.2.2-.7 1-.9 1.2-.2.2-1.3 1.1-2.2 1.4-.9.3-2.1.5-2.6.5s-.9.2-1.2.4c-.3.2-.6.7-.6.7s.2.2.5.3c.5.2.7 0 1.1 0 .4 0 .6-.1.9 0 .2 0 .2.2.2.3-.2.5-.9.9-.9.9 1.2 1 2.5 1.2 3.4 1.2.9 0 1.2-.2 2-.3.8-.1 1.5.2 1.8.2.3.1.9.2 1.4.3h1.5c.8 0 1.1 0 2-.2.9-.2 1.9-.4 3.2-.4 1.3.1 1.7.4 2.1.5.4.1.9.2 1.2.1.3-.1.5 0 .7 0 .2 0 .3.1.7.1.4 0 .5.1.8.3.2.2.3.5.3.7 0 .2-.3.2-.5.5-.2.2 0 .5.1 1.2 0 .7-.2.9-.4 1.2-.2.3-.2.7-.3 1.2-.2.5-1.5 2.7-1.5 2.7.4 1.2 2 2 2.2 2.1.2.2.2.2.3.5.1.2-.1.5 0 2.3.1 1.7.2 2.3.3 2.8.2.5.2 1.3.2 1.6.1.2 0 .4 0 .6-.1.2-.4.1-.5.1-.1-.1-.1.1-.1.2s0 .2-.2.3c-.2.1-1.2.1-1.6.1-.5 0-.4-.1-.3-.2.1-.2.6-.5.8-.7-.7-.7-.7-.8-.7-1 0-.2.2-.3.2-.6.1-.2.2-1.2.1-1.7s-.3-1.5-.5-2.3c-.2-.8-.5-1.2-1-1.6-.5-.4-.5-.7-.5-.7 0 .4.2.9.2 1.1 0 .2-.1.5-.2.6-.2.2-.3.3-.3.4v.4c0 .2-.3.9-.7 2-.3 1.2-.5 2-.5 2.4-.1.3-.1.4 0 .5.1.2.1.4.1.5 0 .2-.2.2-.2.2v.5c0 .1-.2.3-.4.3s-.4.2-.5.2c-.2.1-1-.2-1.2-.3-.2-.2 0-.5.1-.7.1-.2.4-.3.5-.4.1-.1.2-.3.3-.6.2-.4.3-.4.3-.5.1-.3.7-1.5.8-2.1.2-.6.2-2.4.2-2.7 0-.4-.1-.5-.2-1-.2-.5-.2-.5-.3-1.1-.1-.5-.4-1-.5-1.2-.2-.2-.4-.2-.7.1-.3.3-1.2.7-1.9.8-.7.1-1.9-.2-2.6-.4-.7-.2-1.6 0-1.7.2-.2.1-.3.2-.3.5s-.3 2-.3 2.3c0 .3-.2.4-.1.8 0 .5 0 .8-.1 1-.1.2-.2.5-.1.6v2c0 .4.1.9.2 1 .1.2.1.2.1.4s.2.5.2.8c.1.2-.2.2-.3.1-.2-.1 0 .2 0 .2v.1c-.1.2-.5.4-.9.5-.5.1-.6-.1-.6-.2s-.3 0-.5 0c-.1 0-.5 0-.4-.2.1-.2.9-1.1.9-1.3 0-.2 0-.5.1-.6 0-.1.2-.5.3-1-.1-.8-.1-1.8-.1-2.1-.1-.4-.1-.5-.2-.9s0-.9 0-1.3-.2-1.4-.2-1.6c-.1-.2-.2-1-.3-.9 0 .1-.2 1.2-.2 1.6 0 .3-.2.9-.2 1.1 0 .2.1.5.1.8 0 .3-.1.9-.2 1.2-.1.3-.2 1.7-.2 2 0 .3-.1.8 0 1 .1.2.2.5.1.6v.6c0 .1-.1.2-.2.1s-.1.1-.1.1v.2c-.2.2-.7.2-.9.2-.2.1-.4.3-.8.2-.4 0-.4-.4-.4-.4s-.2 0-.3-.1c-.2-.1.8-.6.8-.7 0-.1.2-.3.2-.4.1-.1.2-.3.2-.5.1-.3.3-.8.3-.9.1-.4.1-1.2.1-1.5 0-.3-.2-.9-.2-1.2 0-.3-.1-.9-.1-1.3s-.2-.9-.3-1.3c-.1-.4-.2-1.1-.2-1.3-.1-.2-.2-.4-.3-.5-.2-.2-.3-.4-.5-.5-.2-.2-.3-.2-.5-.2s-.6.2-.7.2c-.1.1-.4.5-.5.6l-.3.2c.7-.3.8-.5.8-.5l-.3.2c.2-.2.4-.6.4-.6-.1 0-.4.3-.4.3.1-.2.1-.5.1-.5 0 .1-.2.5-.2.5V35.7s-.2.3-.2.2c0-.1.1-.3.1-.2 0 .1-.2.1-.2.1.1-.3.1-.5.1-.5-.2.2-.5.2-.5.2.2-.2.2-.3.2-.5s-.1-.1-.1-.1c-.2.2-.5.4-.5.4.1-.1.2-.4.2-.5 0-.1-.1-.1-.1-.1 0 .1-.2.3-.2.2v-.3c-.1.2-.2.5-.2.5.1-.1.1-.5.1-.5 0 .1-.2.4-.2.4.1-.2.1-.5.1-.5 0 .1-.3.4-.2.3.1-.1.1-.4.1-.5 0-.1-.1-.1-.1 0-.1.2-.4.6-.4.6.1-.1.2-.5.2-.5-.2.2-.4.5-.4.5.1-.2.1-.5.1-.5s-.2.2-.2.1c.1-.2.1-.2 0-.2-.2.3-.8.5-.8.5.2-.2.2-.9.2-.9-.1 0-.5.5-.5.4 0-.1.1-.3.1-.3-.1 0-.2.2-.2.2v-.4c0-.3.4-1 .4-1.2 0-.2 0-.6.1-.7 0-.4-.2-.7-.3-.9-.1-.2-.2-.5-.5-.9s-1.5-.7-2-.8c-.5-.1-.8-.2-1.2-.1-.5 0-.9-.1-.9-.5 0-.2-.2-.3-.2-.5-.1-.2-.2-.5 0-.6.2-.2.6-.5.8-.5.2-.1.9-.4 1.1-.5.2-.1.6-.2.7-.4.2-.5.3-.6.3-.6s-.1-.3.2-.5Z\",\n className: \"Reindeer_svg__st0\"\n })));\n};\nexport default SvgReindeer;","var _style, _circle, _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgSheep = function SvgSheep(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 64,\n height: 64,\n style: {\n enableBackground: \"new 0 0 64 64\"\n }\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".Sheep_svg__st0{fill:#fff}\")), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 32,\n cy: 32,\n r: 24.2\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32 8.6c12.9 0 23.4 10.5 23.4 23.4S44.9 55.4 32 55.4 8.6 44.9 8.6 32 19.1 8.6 32 8.6M32 7C18.2 7 7 18.2 7 32s11.2 25 25 25 25-11.2 25-25S45.8 7 32 7z\",\n className: \"Sheep_svg__st0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.6 37.7c-.2 0-.4.1-.6.1-.4 0-.7-.1-.9-.4-.3-.3-.8-.5-1.2-.7-.5-.1-.9 0-1.4 0-1.3 0-2.6-.1-3.9-.1-.8 0-1.6-.1-2.4-.1-.4 0-1 .7-1 1.3 0 1.1 0 2.1.1 3.2 0 .6-.4 1.4-.9 1.4-.2 0-.4-.1-.7-.2l.3-.6c0-.1.1-.1.2-.2-.3 0-.6-.1-1.1-.2 1.3-.9.9-2.1 1-3.2v-.2c-.1-.9-.2-.9-1-1-.2 0-.4-.1-.6-.2-.7-.4-1.3-.8-2.1-1.1-.4-.1-.8-.6-.9-1-.1-1-.5-1.9-.8-2.8-.1-.3-.4-.5-.4-.7-.4-1.3-.8-2.6-1.1-3.9-.4 0-.8-.1-1.2-.1-.4 0-.8 0-1.2.1-.4.1-.7.1-.8-.4-.3-1-.2-1.1.6-1.6s1.5-1.1 2.3-1.5c.8-.4 1.6-.3 2.4 0 .3.1.6.1.9 0 .3-.1.7-.1 1.3-.2-.2.3-.3.5-.4.7 1.4.7 2.8 1.4 4.4 1.8 1.9.5 3.7.3 5.4.1 1.4-.2 2.7-.1 4.1-.3 1.5-.1 2.6.6 3.7 1.4 1 .7 1.4 1.7 1.9 2.7.3.5.2 1.3.2 1.9 0 .7-.2 1.5-.3 2.2 0 .2-.1.4-.2.7-.1-.2-.2-.3-.3-.5l-.1.1s-.1 0-.1.1c-.1.4 0 .8-.5 1.1-.1.1-.1.4-.2.6-.1.2 0 .6-.5.5 0 0-.2.3-.2.5-.1 1.3-.1 2.7-.1 4v.4c.3.6-.4.8-.3 1.3-.4 0-.8.1-1.2.1 0-.1-.1-.1-.1-.1.8-1.1 1.4-2.3.7-3.8-.3.3-.4.7-.4 1.1-.1.4 0 .9-.4 1.2-.1.1-.1.4-.1.7-.3 0-.7.1-1.3.1.8-1.4 1.7-2.6 1.4-4.3z\",\n className: \"Sheep_svg__st0\"\n })));\n};\nexport default SvgSheep;","export enum SampleStatus {\r\n Functional = 1,\r\n NotFunctional = 2,\r\n}\r\n","let aborts: AbortController[] = [];\r\n\r\nconst abortAll = (): void => {\r\n aborts.forEach(a => a.abort());\r\n aborts = [];\r\n};\r\n\r\nexport function postSearch(search: object): Promise<Response> {\r\n abortAll();\r\n const abortController = new AbortController();\r\n aborts.push(abortController);\r\n const { signal } = abortController;\r\n return fetch('api/Feature', { ...search, signal });\r\n}\r\n","import { AnyAction } from 'redux';\r\nimport {OPEN, CLOSE, SET_INDIVID, REMOVE_INDIVID} from './types';\r\nimport {IndividualData} from \"../../components/searchresultList/searchresultTitle\";\r\n\r\nexport function OpenSearchresultlist(): AnyAction {\r\n return {\r\n type: OPEN,\r\n };\r\n}\r\n\r\nexport function CloseSearchresultlist(): AnyAction {\r\n return {\r\n type: CLOSE,\r\n };\r\n}\r\n\r\n\r\nexport function SetIndivid(individ: IndividualData): AnyAction {\r\n return {\r\n value: individ,\r\n type: SET_INDIVID\r\n }\r\n}\r\n\r\n\r\nexport function RemoveIndivid(): AnyAction {\r\n return {\r\n type: REMOVE_INDIVID\r\n }\r\n}\r\n","import {\r\n CLEAR_LOCATIONLISTELEMENTS,\r\n ClearLocationAction,\r\n DESELECT_ALL_IN_LIST,\r\n Filter,\r\n REMOVE_FILTERLISTELEMENT,\r\n SELECT_ALL_IN_LIST,\r\n SET_SEARCHINPUT,\r\n SetSearchinputAction,\r\n ToggleAllInListAction,\r\n ToggleLocationAction,\r\n ToggleRovdyrAction,\r\n UPDATE,\r\n UPDATE_BOTH_DATES,\r\n UPDATE_FILTERELEMENT,\r\n UPDATE_PARTIAL,\r\n UpdateAction,\r\n UpdateBothDatesAction,\r\n UpdateFilterElementAction,\r\n UpdatePartialAction,\r\n} from './types';\r\nimport {ThunkAction, ThunkDispatch} from 'redux-thunk';\r\nimport {ApplicationState} from '..';\r\nimport {Action, Dispatch} from 'redux';\r\nimport {isStedfesting} from '../../model/stedfesting/Stedfesting';\r\nimport {Stedfesting} from '../../model/stedfesting/StedfestingTypes';\r\nimport {selectStedfesting, setStedfesting} from '../map/actions';\r\nimport {setIsLoading} from '../settings/actions';\r\nimport queryString from 'query-string';\r\nimport {LocationType} from '../../constants/locationType';\r\nimport {history} from '../../components/root/root';\r\nimport {postSearch} from '../../services/featureService';\r\nimport {mapDispatch} from '../../map/map';\r\nimport {zoomToFeatures, zoomToFeaturesMobile} from '../../map/mapActions';\r\nimport {setTooltip} from '../tooltip/actions';\r\nimport {dateToStringForUrl} from '../../helpers';\r\nimport {Observations} from '../../constants/observations';\r\nimport {isEmpty} from 'ramda';\r\nimport {OpenSearchresultlist} from '../sidePanel/action';\r\nimport {appInsight} from '../../applicationInsights';\r\nimport {Language} from '../../constants/language';\r\n\r\n//hjelpefunksjoner\r\nconst isInArray = (stedfestings: Stedfesting[], selected: Stedfesting): boolean => {\r\n return stedfestings.some(a => {\r\n if (a.id === selected.id) {\r\n return true;\r\n } else return false;\r\n });\r\n};\r\n\r\nexport function UpdateSearchFilter(searchFilter: Filter): UpdateAction {\r\n return {\r\n type: UPDATE,\r\n searchFilter,\r\n };\r\n}\r\n\r\nexport function PartialUpdateSearchFilter(searchFilterPartial: Partial<Filter>): UpdatePartialAction {\r\n return {\r\n type: UPDATE_PARTIAL,\r\n searchFilterPartial,\r\n };\r\n}\r\n\r\n// Carnivore, CarnivoreDamage, Evaluation, Observation\r\nexport function ToggleFilterListElement(type: string, filterArrayName: string, id: number): ToggleRovdyrAction {\r\n return {\r\n type: type,\r\n filterArrayName,\r\n id,\r\n };\r\n}\r\n\r\n// Country, Region, County, Municipality\r\nexport function ToggleLocationListElement(actionType: string, filterArrayName: string, stringId: string): ToggleLocationAction {\r\n return {\r\n type: actionType,\r\n filterArrayName,\r\n stringId,\r\n };\r\n}\r\n\r\nexport function UpdateFilterElement(fieldName: keyof Filter, payload: any): UpdateFilterElementAction {\r\n return {\r\n type: UPDATE_FILTERELEMENT,\r\n fieldName,\r\n payload,\r\n };\r\n}\r\n\r\nexport function UpdateBothDates(fromDate: string, toDate: string): UpdateBothDatesAction {\r\n return {\r\n type: UPDATE_BOTH_DATES,\r\n fromDate,\r\n toDate,\r\n };\r\n}\r\n\r\nexport function ClearLocationListelements(): ClearLocationAction {\r\n return {\r\n type: CLEAR_LOCATIONLISTELEMENTS,\r\n };\r\n}\r\n\r\nexport function SelectAllInList(arrayName: string, array: number[]): ToggleAllInListAction {\r\n return {\r\n type: SELECT_ALL_IN_LIST,\r\n arrayName: arrayName,\r\n array: array,\r\n \r\n };\r\n}\r\n\r\nexport function DeselectAllInList(arrayname: string): ToggleAllInListAction {\r\n return {\r\n type: DESELECT_ALL_IN_LIST,\r\n arrayName: arrayname,\r\n };\r\n}\r\n\r\nexport function SetSearchinput(searchinput: string): SetSearchinputAction {\r\n return {\r\n type: SET_SEARCHINPUT,\r\n searchinput: searchinput,\r\n };\r\n}\r\n\r\nexport function createSearch(filter: Filter, languageCode: string): object {\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n });\r\n const body = {\r\n LanguageCode: languageCode,\r\n SearchFilter: filter,\r\n };\r\n return {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body),\r\n };\r\n}\r\nexport const getIndividualSearchUrl = (searchText: string[]): string => {\r\n return queryString.stringify({ T: searchText }, {arrayFormat: 'comma'});\r\n};\r\n\r\n//https://www.npmjs.com/package/query-string\r\nexport function UpdateUrl(searchFilter: Filter): void {\r\n if (searchFilter.IndividualNameOrID.length > 0) {\r\n history.push({\r\n pathname: '/individ',\r\n search: queryString.stringify({ IndividualNameOrID: searchFilter.IndividualNameOrID }),\r\n });\r\n } else if (searchFilter.Barcode.length > 0) {\r\n history.push({\r\n pathname: '/search',\r\n search: getIndividualSearchUrl(searchFilter.Barcode.map(str => str.trim())), \r\n });\r\n \r\n } else if (searchFilter.ID.length > 0) {\r\n history.push({\r\n pathname: '/search',\r\n search: getIndividualSearchUrl(searchFilter.ID.map(str => str.trim())),\r\n });\r\n \r\n } else {\r\n const filterToUrl = {\r\n Carnivore: searchFilter.Carnivore.length > 0 ? searchFilter.Carnivore : '',\r\n CarnivoreDamage: searchFilter.CarnivoreDamage.length > 0 ? searchFilter.CarnivoreDamage : '',\r\n Evaluation: searchFilter.Evaluation.length > 0 ? searchFilter.Evaluation : '',\r\n ToDate: searchFilter.ToDate,\r\n FromDate: searchFilter.FromDate,\r\n Observation: searchFilter.Observation.length > 0 ? searchFilter.Observation : '',\r\n Offspring: searchFilter.Offspring,\r\n Country: searchFilter.Country,\r\n County: searchFilter.County,\r\n Region: searchFilter.Region,\r\n Municipality: searchFilter.Municipality,\r\n };\r\n\r\n history.push({\r\n pathname: '/filter',\r\n search: queryString.stringify(filterToUrl, { arrayFormat: 'comma' }),\r\n });\r\n }\r\n}\r\n\r\nexport function searchAction(): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: Dispatch, getState): Promise<void> {\r\n const { searchFilter } = getState().searchFilter;\r\n const { language } = getState().settings;\r\n\r\n UpdateUrl(searchFilter);\r\n\r\n await loadFeaturesFromSearchfilter(dispatch, searchFilter, language);\r\n };\r\n}\r\n\r\nexport async function loadFeaturesFromSearchfilter(dispatch: Dispatch, searchFilter: Filter, language: Language): Promise<void> {\r\n const search = createSearch(searchFilter, language);\r\n dispatch(setIsLoading(true));\r\n try {\r\n const response = await postSearch(search);\r\n if (response.ok) {\r\n const result = await response.json();\r\n const stedfestinger: Stedfesting[] = result.filter(isStedfesting);\r\n const sortedStedfestinger = stedfestinger.sort((a, b) => a.dato.localeCompare(b.dato)).reverse();\r\n dispatch(setStedfesting(sortedStedfestinger));\r\n const windowWidth = window.innerWidth;\r\n\r\n if (windowWidth > 600) {\r\n mapDispatch(zoomToFeatures());\r\n } else {\r\n mapDispatch(zoomToFeaturesMobile());\r\n }\r\n\r\n if (!isEmpty(searchFilter.ID) || !isEmpty(searchFilter.Barcode) || !isEmpty(searchFilter.IndividualNameOrID)) {\r\n dispatch(OpenSearchresultlist());\r\n\r\n // Logging til application insights\r\n appInsight?.trackEvent({name: 'SEARCH_IND_ID_BC', properties: {individual: searchFilter.IndividualNameOrID, id: searchFilter.ID, barcode: searchFilter.Barcode, hits: stedfestinger.length}});\r\n }\r\n\r\n if (sortedStedfestinger.length === 1) {\r\n dispatch(selectStedfesting(sortedStedfestinger));\r\n dispatch(setTooltip(sortedStedfestinger[0]));\r\n } else {\r\n dispatch(selectStedfesting([]));\r\n dispatch(setTooltip(null));\r\n }\r\n }\r\n dispatch(setIsLoading(false));\r\n } catch (error) {\r\n if (error.name !== 'AbortError') {\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.debug('Abort previous search');\r\n }\r\n }\r\n}\r\n\r\nexport function UpdateOffspringElementAndSearch(\r\n payload: any\r\n): ThunkAction<void, ApplicationState, void, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<any, any, any>): Promise<any> {\r\n dispatch(UpdateFilterElement('Offspring', payload));\r\n dispatch(ToggleFilterListElement(REMOVE_FILTERLISTELEMENT, 'Observation', Observations.AnalysedDna));\r\n dispatch(ToggleFilterListElement(REMOVE_FILTERLISTELEMENT, 'Observation', Observations.UnanalysedDna));\r\n dispatch(searchAction());\r\n };\r\n}\r\n\r\n\r\nexport function UpdateSearchFilterAndSearch(\r\n searchFilter: Partial<Filter>\r\n): ThunkAction<void, ApplicationState, void, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<any, any, any>): Promise<any> {\r\n dispatch(PartialUpdateSearchFilter(searchFilter));\r\n dispatch(searchAction());\r\n };\r\n}\r\n\r\nexport function ToggleFilterListElementOgSok(\r\n type: string,\r\n filterArrayName: string,\r\n id: number\r\n): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<{}, {}, any>): Promise<any> {\r\n dispatch(ToggleFilterListElement(type, filterArrayName, id));\r\n dispatch(searchAction());\r\n };\r\n}\r\n\r\nexport function ToggleLocationListElementAndSearch(\r\n actionType: string,\r\n locationType: number,\r\n idString: string\r\n): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<{}, {}, any>): Promise<any> {\r\n if (actionType === CLEAR_LOCATIONLISTELEMENTS) {\r\n dispatch(ClearLocationListelements());\r\n } else {\r\n const filterName = LocationType[locationType];\r\n dispatch(ToggleLocationListElement(actionType, filterName, idString));\r\n }\r\n dispatch(searchAction());\r\n };\r\n}\r\n\r\nexport function UpdateDateFilter(\r\n field: keyof Filter,\r\n date: string\r\n): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<{}, {}, any>): Promise<any> {\r\n dispatch(UpdateFilterElement(field, date));\r\n dispatch(searchAction());\r\n };\r\n}\r\n\r\nexport function UpdateBothDatesAndSearch(\r\n fromDate: string,\r\n toDate: string,\r\n): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<{}, {}, any>): Promise<any> {\r\n dispatch(UpdateBothDates(fromDate, toDate));\r\n dispatch(searchAction());\r\n };\r\n}\r\n\r\nexport function SelectAllAndSearch(\r\n arrayName: string,\r\n array: number[]\r\n): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<{}, {}, any>): Promise<any> {\r\n dispatch(SelectAllInList(arrayName, array));\r\n dispatch(searchAction());\r\n };\r\n}\r\n\r\nexport function DeSelectAllAndSearch(arrayName: string): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: ThunkDispatch<{}, {}, any>): Promise<any> {\r\n dispatch(DeselectAllInList(arrayName));\r\n dispatch(searchAction());\r\n };\r\n}\r\n","import WKT from 'ol/format/WKT';\r\nimport Point from 'ol/geom/Point';\r\nimport {get as getProjection, transform} from 'ol/proj';\r\nimport {MouseEvent} from 'react';\r\nimport {Carnivore} from '../../constants/carnivore';\r\nimport {CarnivoreDamage} from '../../constants/carnivoreDamage';\r\nimport {CarnivoreObserved} from '../../constants/carnivoreObserved';\r\nimport {Evaluation} from '../../constants/evaluation';\r\nimport {Language} from '../../constants/language';\r\nimport {Observations} from '../../constants/observations';\r\nimport {SampleStatus} from '../../constants/sampleStatus';\r\nimport L from '../../i18n';\r\nimport {\r\n Datatype,\r\n DNA,\r\n DodeRovdyr,\r\n Individ,\r\n Rovviltobservasjon,\r\n Rovviltskade,\r\n Stedfesting,\r\n} from '../../model/stedfesting/StedfestingTypes';\r\nimport {getIndividualSearchUrl} from '../../store/searchfilter/action';\r\nimport {Site} from '../../store/settings/types';\r\nimport './tooltip.scss';\r\nimport curry from 'ramda/es/curry';\r\nimport {join} from 'ramda';\r\nimport {MapProjection} from '../../constants/mapProjection';\r\n\r\nexport const formatIndividString = (individ: Individ): string => {\r\n return `${individ.individID} ${individ.individnavn}`;\r\n};\r\n\r\n\r\nexport const getCoordinates = (wktString: string, site: Site): number[] => {\r\n const wkt = new WKT();\r\n const geom: Point = wkt.readGeometry(wktString) as Point;\r\n const coordinates = geom.getCoordinates();\r\n\r\n if (site === Site.SE) {\r\n return transform(coordinates, getProjection(MapProjection.EPSG_32633), getProjection(MapProjection.EPSG_3006));\r\n }\r\n return coordinates;\r\n};\r\n\r\nexport const getStedfestingUrl = (stedfesting: Stedfesting): string => {\r\n const { origin } = location;\r\n const search = getIndividualSearchUrl([stedfesting.id]);\r\n return `${origin}/search?${search}`;\r\n};\r\n\r\nexport const getUrl = (): string => {\r\n const { href } = location;\r\n return href;\r\n};\r\n\r\nexport const copyStedfestingUrlToClipboard = curry(\r\n (stedfesting: Stedfesting, e: MouseEvent<HTMLButtonElement>): void => {\r\n e.preventDefault();\r\n navigator.clipboard.writeText(getStedfestingUrl(stedfesting));\r\n }\r\n);\r\n\r\nexport const copyUrlToClipboard = (e: MouseEvent<HTMLButtonElement>): void => {\r\n e.preventDefault();\r\n navigator.clipboard.writeText(getUrl());\r\n};\r\n\r\nexport const getCoordinateType = (site: Site): string => {\r\n return site === Site.SE ? 'SWEREF99' : 'UTM33';\r\n};\r\n\r\nexport function camelCase(str: string): string {\r\n return str === undefined\r\n ? ''\r\n : str\r\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function(word, index) {\r\n return index === 0 ? word.toLowerCase() : word.toUpperCase();\r\n })\r\n .replace(/\\s+/g, '');\r\n}\r\n\r\nexport function getStringFromEnum(enumType: any, id: string): string {\r\n return camelCase(enumType[parseInt(id)]);\r\n}\r\n\r\nexport function getStringFromEnumNumber(enumType: any, id: number): string {\r\n return camelCase(enumType[id]);\r\n}\r\n\r\nexport const isNullOrEmpty = (str) => !str || str === '';\r\nexport const notNullOrEmpty = (str) => !isNullOrEmpty(str);\r\n\r\nexport const kommaseparert = join(\", \");\r\n\r\nfunction rovviltskadeHeader(language: Language, stedfesting: Rovviltskade): string {\r\n const l = L(language);\r\n const damageType = l(`carnivoreDamage.${getStringFromEnum(CarnivoreDamage, stedfesting.skadetypeID)}`);\r\n const perpetrator = l(`carnivore.${getStringFromEnum(Carnivore, stedfesting.skadeÃ¥rsakID)}`).toLowerCase();\r\n const descriptionText = l('searchresultItem.descriptionText').toLowerCase();\r\n if (language === Language.SV) {\r\n return `Skada pÃ¥ ${damageType.toLowerCase()} orsakad av ${perpetrator}`;\r\n }\r\n return `${damageType} ${descriptionText} ${perpetrator} `;\r\n}\r\nfunction dnaHeader(language: Language, stedfesting: DNA): string {\r\n const l = L(language);\r\n if (parseInt(stedfesting.prøvestatusID) === SampleStatus.Functional) {\r\n const art = l(\r\n `carnivoreObserved.${getStringFromEnum(CarnivoreObserved, stedfesting.artsIDAnalyse)}`\r\n ).toLowerCase();\r\n return `DNA, ${art} `;\r\n } else {\r\n return 'DNA ';\r\n }\r\n}\r\n\r\nfunction rovviltobservasjonHeader(language: Language, stedfesting: Rovviltobservasjon): string {\r\n const l = L(language);\r\n if (parseInt(stedfesting.vurderingID) === Evaluation.ErroneousReport) {\r\n return `${l('evaluation.label.erroneousReport')} ${l(\r\n `carnivore.${getStringFromEnum(Carnivore, stedfesting.artsID)}`\r\n ).toLowerCase()} `;\r\n }\r\n const observation =\r\n stedfesting.observasjoner.length === 1\r\n ? getStringFromEnumNumber(Observations, stedfesting.observasjoner[0])\r\n : 'observation';\r\n const perpetrator = getStringFromEnum(Carnivore, stedfesting.artsID);\r\n return `${l(`observations.${observation}`)}, ${l(`carnivore.${perpetrator}`).toLowerCase()}`;\r\n}\r\n\r\nfunction dodeRovdyrHeader(language: Language, stedfesting: DodeRovdyr): string {\r\n const l = L(language);\r\n const perpetrator = getStringFromEnum(Carnivore, stedfesting.artsID);\r\n const intetkjonnPhrase = stedfesting.artsID === Carnivore.Lynx.toString() ? l('deadCarnivore.dead.intetkjonn') : l('deadCarnivore.dead')\r\n return `${intetkjonnPhrase} ${l(`carnivore.${perpetrator}`).toLowerCase()}`;\r\n}\r\n\r\nexport function stedfestingTitle(language: Language, stedfesting: Stedfesting): string {\r\n switch (stedfesting.datatype) {\r\n case Datatype.DNA: {\r\n return dnaHeader(language, stedfesting as DNA);\r\n }\r\n case Datatype.DodeRovdyr: {\r\n return dodeRovdyrHeader(language, stedfesting as DodeRovdyr);\r\n }\r\n case Datatype.Rovviltobservasjon: {\r\n return rovviltobservasjonHeader(language, stedfesting as Rovviltobservasjon);\r\n }\r\n case Datatype.Rovviltskade: {\r\n return rovviltskadeHeader(language, stedfesting as Rovviltskade);\r\n }\r\n }\r\n return '';\r\n}\r\n\r\n","import {Theme} from '@material-ui/core';\r\nimport {createStyles, makeStyles} from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {Language} from '../../constants/language';\r\nimport {IconComponent} from '../../Icons/icons';\r\nimport {clusterSource, mapDispatch} from '../../map/map';\r\nimport {zoomToFeature, zoomToFeatureMobile} from '../../map/mapActions';\r\nimport {getColorFromFeature} from '../../map/styles';\r\nimport {toFeature} from '../../model/stedfesting/Stedfesting';\r\nimport {Stedfesting} from '../../model/stedfesting/StedfestingTypes';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {hoverStedfesting, selectStedfesting} from '../../store/map/actions';\r\nimport {setTooltip} from '../../store/tooltip/actions';\r\nimport {stedfestingTitle} from '../tooltip/tooltip.util';\r\nimport {formatDateStringToLocaleString} from '../../helpers';\r\nimport './searchresultItem.scss';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n searchItem: {\r\n borderColor: theme.palette.secondary.dark,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n '&:focus': {\r\n backgroundColor: theme.palette.secondary.dark,\r\n outline: 'none',\r\n },\r\n },\r\n })\r\n);\r\n\r\ntype ListProps = {\r\n stedfesting: Stedfesting;\r\n closeSidepanel: () => void;\r\n};\r\n\r\nexport function getColor(stedfesting: Stedfesting): string {\r\n return getColorFromFeature(toFeature(stedfesting));\r\n}\r\n\r\nconst funnsted = (stedfesting: Stedfesting): string =>\r\n stedfesting.funnsted.length > 0 ? ` - ${stedfesting.funnsted}` : '';\r\n\r\nfunction searchresultItemTitle(language: Language, stedfesting: Stedfesting): string {\r\n let title = stedfestingTitle(language, stedfesting);\r\n if (title.length > 0) {\r\n title = title.concat(funnsted(stedfesting));\r\n }\r\n return title;\r\n}\r\n\r\nexport function SearchresultItem(props: ListProps): JSX.Element {\r\n const lang = useSelector((state: ApplicationState) => state.settings.language);\r\n const setTooltipStedfesting = useActionCreator(setTooltip);\r\n const setSelectedStedfesting = useActionCreator(selectStedfesting);\r\n const setHoverStedfesting = useActionCreator(hoverStedfesting);\r\n\r\n const classes = useStyle({});\r\n const resultItemClass = classnames(classes.searchItem, 'result-button-item');\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n\r\n function clickOnItem(stedfesting: Stedfesting): void {\r\n mobileScreen && props.closeSidepanel();\r\n mobileScreen ? mapDispatch(zoomToFeatureMobile(stedfesting.id)) : mapDispatch(zoomToFeature(stedfesting.id));\r\n setSelectedStedfesting([stedfesting]);\r\n setTooltipStedfesting(stedfesting);\r\n }\r\n\r\n function pointerEnterHandle(): void {\r\n setHoverStedfesting(props.stedfesting);\r\n clusterSource.changed();\r\n }\r\n\r\n function pointerLeaveHandle(): void {\r\n setHoverStedfesting(null);\r\n clusterSource.changed();\r\n }\r\n\r\n return (\r\n <button\r\n className={resultItemClass}\r\n onClick={() => clickOnItem(props.stedfesting)}\r\n onPointerEnter={pointerEnterHandle}\r\n onPointerLeave={pointerLeaveHandle}\r\n >\r\n <IconComponent stedfesting={props.stedfesting} className={'searchresult-icon'} />\r\n <div className=\"result-text-wrapper\">\r\n <div className=\"datatype-description\">{searchresultItemTitle(lang, props.stedfesting)}</div>\r\n <div className=\"search-item-date\">{formatDateStringToLocaleString(props.stedfesting.dato, lang)}</div>\r\n <div>{props.stedfesting.kommune}</div>\r\n </div>\r\n </button>\r\n );\r\n}","import React, { Fragment } from 'react';\r\nimport Dead from '../../assets/svg/deadcarnivores/dod.svg';\r\nimport Dna from '../../assets/svg/dna/Dna.svg';\r\nimport UnanalysedDna from '../../assets/svg/dna/UnanalysedDna.svg';\r\nimport Layers from '../../assets/svg/maptool/lag.svg';\r\nimport ZoomIn from '../../assets/svg/maptool/zoominn.svg';\r\nimport ZoomOut from '../../assets/svg/maptool/zoomut.svg';\r\nimport Bed from '../../assets/svg/observasjonstyper/Bed.svg';\r\nimport Digging from '../../assets/svg/observasjonstyper/Digging.svg';\r\nimport ErroneousReport from '../../assets/svg/observasjonstyper/ErroneousReport.svg';\r\nimport Faeces from '../../assets/svg/observasjonstyper/Faeces.svg';\r\nimport Footprint from '../../assets/svg/observasjonstyper/Footprint.svg';\r\nimport HairOrFeather from '../../assets/svg/observasjonstyper/HairOrFeather.svg';\r\nimport Observation from '../../assets/svg/observasjonstyper/Observation.svg';\r\nimport Reproduction from '../../assets/svg/observasjonstyper/Reproduction.svg';\r\nimport TerritorialMarking from '../../assets/svg/observasjonstyper/TerritorialMarking.svg';\r\nimport TreeMarkings from '../../assets/svg/observasjonstyper/TreeMarkings.svg';\r\nimport VisualObservation from '../../assets/svg/observasjonstyper/VisualObservation.svg';\r\nimport Cattle from '../../assets/svg/rovviltskade/Cattle.svg';\r\nimport Dog from '../../assets/svg/rovviltskade/Dog.svg';\r\nimport Goat from '../../assets/svg/rovviltskade/Goat.svg';\r\nimport Reindeer from '../../assets/svg/rovviltskade/Reindeer.svg';\r\nimport Sheep from '../../assets/svg/rovviltskade/Sheep.svg';\r\nimport Arrow from '../../assets/svg/arrow/arrow.svg';\r\nimport { getColor } from '../components/searchresultItem/searchresultItem';\r\nimport { CarnivoreDamage } from '../constants/carnivoreDamage';\r\nimport { Observations } from '../constants/observations';\r\nimport { isDNA, isDodeRovdyr, isRovviltobservasjon, isRovviltskade } from '../model/stedfesting/Stedfesting';\r\nimport { DNA, Rovviltobservasjon, Rovviltskade, Stedfesting } from '../model/stedfesting/StedfestingTypes';\r\nimport { Evaluation } from '../constants/evaluation';\r\n\r\ntype Props = {\r\n stedfesting: Stedfesting;\r\n className?: string;\r\n};\r\n\r\ntype IconProps = {\r\n type: string;\r\n};\r\n\r\nexport function MapToolIcon(props: IconProps): JSX.Element {\r\n if (props.type === 'zoomin') {\r\n return <ZoomIn />;\r\n }\r\n if (props.type === 'zoomout') {\r\n return <ZoomOut />;\r\n }\r\n if (props.type === 'layers') {\r\n return <Layers />;\r\n }\r\n}\r\n\r\nexport function IconComponent(props: Props): JSX.Element {\r\n const color = getColor(props.stedfesting);\r\n if (isRovviltobservasjon(props.stedfesting)) {\r\n return <RovviltobservasjonComponent {...props} />;\r\n }\r\n if (isRovviltskade(props.stedfesting)) {\r\n return <RovviltskadeComponent {...props} />;\r\n }\r\n if (isDodeRovdyr(props.stedfesting)) {\r\n return <Dead style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n }\r\n if (isDNA(props.stedfesting)) {\r\n return <DNAComponent {...props} />;\r\n }\r\n}\r\n\r\nfunction DNAComponent(props: Props): JSX.Element {\r\n const analysedSample = (props.stedfesting as DNA).prøvestatusID.length > 0;\r\n const color = getColor(props.stedfesting);\r\n return (\r\n <Fragment>\r\n {analysedSample && <Dna style={{ fill: color }} className={props.className} aria-hidden={true} />}\r\n {!analysedSample && (\r\n <UnanalysedDna style={{ fill: '#FFFFFF' }} className={props.className} aria-hidden={true} />\r\n )}\r\n </Fragment>\r\n );\r\n}\r\n\r\nfunction RovviltskadeComponent(props: Props): JSX.Element {\r\n const color = getColor(props.stedfesting);\r\n const damageType = parseInt((props.stedfesting as Rovviltskade).skadetypeID);\r\n switch (damageType) {\r\n case CarnivoreDamage.Sheep:\r\n return <Sheep style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case CarnivoreDamage.Reindeer:\r\n return <Reindeer style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case CarnivoreDamage.Dog:\r\n return <Dog style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case CarnivoreDamage.Goat:\r\n return <Goat style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case CarnivoreDamage.Cattle:\r\n return <Cattle style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction RovviltobservasjonComponent(props: Props): JSX.Element {\r\n const observations = (props.stedfesting as Rovviltobservasjon).observasjoner;\r\n const color = getColor(props.stedfesting);\r\n if (parseInt((props.stedfesting as Rovviltobservasjon).vurderingID) === Evaluation.ErroneousReport) {\r\n return <ErroneousReport style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n }\r\n if (observations.length > 1 || observations.length === 0) {\r\n return <Observation style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n }\r\n const [observationType] = observations;\r\n // TODO: endring av observasjonstyper\r\n switch (observationType) {\r\n case Observations.DeadCarnivores:\r\n return <Dead style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.VisualObservation:\r\n return <VisualObservation style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.Footprint:\r\n return <Footprint style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.Faeces:\r\n return <Faeces style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.TerritorialMarking:\r\n return <TerritorialMarking style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.Reproduction:\r\n return <Reproduction style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.TreeMarkings:\r\n return <TreeMarkings style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.HairOrFeather:\r\n return <HairOrFeather style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.Bed:\r\n return <Bed style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n case Observations.Digging:\r\n return <Digging style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n default:\r\n return <Observation style={{ fill: color }} className={props.className} aria-hidden={true} />;\r\n }\r\n}\r\n\r\nexport function ArrowComponent(): JSX.Element {\r\n return (\r\n <Arrow\r\n style={{ fill: '#FF0000', height: '25px', transform: ' rotate(90deg)', pointerEvents: 'none' }}\r\n className=\"testing\"\r\n />\r\n );\r\n}\r\n","import { Theme } from '@material-ui/core';\r\nimport { createStyles, makeStyles } from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\nimport { MapToolIcon } from '../../Icons/icons';\r\nimport { olMap } from '../../map/map';\r\nimport { Control } from '../../map/types';\r\nimport './toolbar.scss';\r\n\r\ntype Props = {\r\n children: JSX.Element[];\r\n};\r\n\r\nconst useStyle = makeStyles((theme: Theme) =>\r\n createStyles({\r\n tool: {\r\n backgroundColor: theme.palette.common.white,\r\n fill: theme.palette.primary.dark,\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n fill: theme.palette.common.white,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport function MapToolbar(props: Props): JSX.Element {\r\n return <div className=\"toolbar\">{props.children}</div>;\r\n}\r\n\r\ntype MapToolProps = {\r\n label: string;\r\n control: Control;\r\n src: string;\r\n onActivate?: () => void;\r\n ariaLabel?: string;\r\n};\r\n\r\nexport function MapTool(props: MapToolProps): JSX.Element {\r\n const classes = useStyle({});\r\n const toolClass = classnames(classes.tool, 'tool');\r\n const clickHandler = (e): void => {\r\n e.preventDefault();\r\n props.control.activate(olMap);\r\n\r\n if (props.onActivate) {\r\n props.onActivate();\r\n }\r\n };\r\n\r\n return (\r\n <button className={toolClass} onClick={clickHandler} aria-label={props.ariaLabel}>\r\n <span className=\"maptool-text\">{props.label}</span>\r\n <span className=\"maptool-icon-wrapper\">\r\n <MapToolIcon type={props.src} />\r\n </span>\r\n </button>\r\n );\r\n}\r\n","import { createStyles, makeStyles, Theme } from '@material-ui/core';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport LinkIcon from '@material-ui/icons/Link';\r\nimport MailOutlineIcon from '@material-ui/icons/MailOutline';\r\nimport classnames from 'classnames';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useLanguage } from '../../i18n';\r\nimport './share.scss';\r\n\r\ntype OwnProps = {\r\n copyUrl: string;\r\n mailLink: string;\r\n feedbackObject: any;\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n shareLinkWrapper: {\r\n color: theme.palette.primary.main,\r\n '&:focus': {\r\n outline: `1px solid ${theme.palette.primary.light}`,\r\n },\r\n },\r\n mailIcon: {\r\n fill: theme.palette.primary.main,\r\n height: '24px',\r\n },\r\n icon: {\r\n fill: theme.palette.primary.main,\r\n },\r\n feedbackMessage: {\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n })\r\n);\r\n\r\nconst copyToClipboard = (url: string): void => {\r\n const el = document.createElement('textarea'); // Create a <textarea> element\r\n el.value = url; // The string to copy\r\n el.setAttribute('readonly', ''); // Make it readonly to be tamper-proof\r\n el.style.position = 'absolute';\r\n el.style.left = '-9999px'; // Move outside the screen to make it invisible\r\n document.body.appendChild(el); // Append the <textarea> element to the HTML document\r\n const selected =\r\n document.getSelection().rangeCount > 0 // Check if there is any content selected previously\r\n ? document.getSelection().getRangeAt(0) // Store selection if found\r\n : false; // Mark as false to know no selection existed before\r\n el.select(); // Select the <textarea> content\r\n document.execCommand('copy'); // Copy - only works as a result of a user action (e.g. click events)\r\n document.body.removeChild(el); // Remove the <textarea> element\r\n if (selected) {\r\n // If a selection existed before copying\r\n document.getSelection().removeAllRanges(); // Unselect everything on the HTML document\r\n document.getSelection().addRange(selected); // Restore the original selection\r\n }\r\n};\r\n\r\nexport function Share(props: OwnProps): JSX.Element {\r\n const classes = useStyles({});\r\n const l = useLanguage();\r\n const [feedback, setFeedback] = useState(false);\r\n const feedbackMessage = classnames(classes.feedbackMessage, 'feedback-message');\r\n const copyLinkWrapper = classnames(classes.shareLinkWrapper, 'copy-link-wrapper');\r\n const mailLinkWrapper = classnames(classes.shareLinkWrapper, 'mail-link-wrapper');\r\n\r\n const copy = (url: string): void => {\r\n setFeedback(true);\r\n copyToClipboard(url);\r\n };\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n setFeedback(false);\r\n }, 4000);\r\n return () => clearTimeout(timer);\r\n }, [feedback === true]);\r\n\r\n useEffect(() => {\r\n setFeedback(false);\r\n }, [props.feedbackObject]);\r\n\r\n return (\r\n <div className=\"share\">\r\n <div className=\"share-title\">{l('shareSite.share')}</div>\r\n <div className=\"share-buttons-container\">\r\n <button className={copyLinkWrapper} onClick={() => copy(props.copyUrl)}>\r\n <LinkIcon className={classes.icon} aria-hidden={true} />\r\n {l('tooltip.copyLink')}\r\n </button>\r\n <a href={props.mailLink} className={mailLinkWrapper}>\r\n <MailOutlineIcon className={classes.mailIcon} aria-hidden={true} />\r\n {l('tooltip.mailLink')}\r\n </a>\r\n </div>\r\n {feedback && (\r\n <div className={feedbackMessage}>\r\n <CheckIcon className={classes.icon} aria-hidden={true} />\r\n <span>{l('shareSite.feedback')}</span>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","export enum SampleType {\r\n Scat = 1,\r\n Blood = 2,\r\n Urine = 3,\r\n Hair = 4,\r\n Tissue = 5,\r\n Saliva = 6,\r\n ScentMarking = 7,\r\n}","import {useLanguage, useLanguageTemplate} from \"../../i18n\";\r\nimport {SampleType} from \"../../constants/sampleType\";\r\nimport {Carnivore} from \"../../constants/carnivore\";\r\nimport {SampleStatus} from \"../../constants/sampleStatus\";\r\nimport {CarnivoreObserved} from \"../../constants/carnivoreObserved\";\r\nimport React from \"react\";\r\nimport {getStringFromEnum, isNullOrEmpty} from \"./tooltip.util\";\r\nimport {DNA} from \"../../model/stedfesting/StedfestingTypes\";\r\nimport {BarcodeLink, IndividLink} from \"./tooltip\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {ApplicationState} from \"../../store\";\r\nimport './tooltip.scss';\r\n\r\nfunction useIntro(stedfesting: DNA): string {\r\n const lt = useLanguageTemplate();\r\n const l = useLanguage();\r\n \r\n const observationType = l(`tooltip.sampleType.${getStringFromEnum(SampleType, stedfesting.prøvetypeID)}`).toLowerCase();\r\n const art = l(`carnivore.${getStringFromEnum(Carnivore, stedfesting.artsIDPrøve)}`).toLowerCase();\r\n \r\n return lt('dnaInfo.submitted', {observationType: observationType, art: art});\r\n}\r\n\r\nfunction useAnalysed(stedfesting: DNA): string {\r\n const lt = useLanguageTemplate();\r\n const l = useLanguage();\r\n const provestatusID = parseInt(stedfesting?.prøvestatusID);\r\n\r\n switch (provestatusID) {\r\n case SampleStatus.Functional:\r\n const analysedArt =\r\n stedfesting.artsIDAnalyse.length > 0 &&\r\n l(`carnivoreObserved.${getStringFromEnum(CarnivoreObserved, stedfesting.artsIDAnalyse)}`).toLowerCase();\r\n\r\n return lt('dnaInfo.analysed', {\r\n art: analysedArt,\r\n });\r\n case SampleStatus.NotFunctional:\r\n return l('tooltip.dnaAnalysed.nonFunctioning');\r\n \r\n default:\r\n return l('dnaInfo.unanalysed');\r\n }\r\n\r\n}\r\n\r\nexport function DnaTooltipDescription(): JSX.Element {\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting) as DNA;\r\n const l = useLanguage();\r\n const analysed = useAnalysed(stedfesting);\r\n const intro = useIntro(stedfesting);\r\n \r\n return (\r\n <div className=\"tooltip-description\">\r\n <div>{intro} {analysed}</div> \r\n {stedfesting.individ && <IndividLink individ={[stedfesting.individ]} text={l('dnaInfo.identity')} />}\r\n <BarcodeLink barcode={stedfesting.strekkode} text={l('dnaInfo.barcode')} />\r\n </div>\r\n );\r\n}\r\n","export enum ControlType {\r\n FieldVerificationCarnivoreContact = 1,\r\n FieldVerificationSNO = 2,\r\n Photograph = 3,\r\n NotVerified = 4,\r\n Interview = 5,\r\n Laboratory = 6,\r\n FieldVerificationLST = 7,\r\n FieldVerificationSamiVillage = 8,\r\n GPS = 9,\r\n}\r\n","import {useLanguage, useLanguageTemplate} from \"../../i18n\";\r\nimport {ControlType} from \"../../constants/controlType\";\r\nimport {Evaluation} from \"../../constants/evaluation\";\r\nimport {Carnivore} from \"../../constants/carnivore\";\r\nimport {Observations} from \"../../constants/observations\";\r\nimport React from \"react\";\r\nimport {getStringFromEnum, getStringFromEnumNumber, notNullOrEmpty} from \"./tooltip.util\";\r\nimport {Rovviltobservasjon} from \"../../model/stedfesting/StedfestingTypes\";\r\nimport {IndividLink} from \"./tooltip\";\r\nimport './tooltip.scss';\r\nimport {useSelector} from \"react-redux\";\r\nimport {ApplicationState} from \"../../store\";\r\n\r\nfunction useIntro(stedfesting: Rovviltobservasjon): string {\r\n const lt = useLanguageTemplate();\r\n const l = useLanguage();\r\n const vurderingID = parseInt(stedfesting.vurderingID);\r\n const art = l(`carnivore.${getStringFromEnum(Carnivore, stedfesting.artsID)}`);\r\n \r\n const control = notNullOrEmpty(stedfesting.kontrollstatusID)\r\n ? `${l(`observations.controlType.${getStringFromEnum(ControlType, stedfesting.kontrollstatusID)}`)}. `\r\n : `${l('observations.controlType.notVerified')}`;\r\n\r\n if (vurderingID === Evaluation.ErroneousReport) {\r\n return lt('tooltip.observation.error', {\r\n art: art,\r\n controlType: control,\r\n });\r\n }\r\n\r\n return lt('tooltip.observation', {\r\n art: art,\r\n controlType: control,\r\n evaluation: l(`evaluation.${getStringFromEnum(Evaluation, stedfesting.vurderingID)}`).toLowerCase(),\r\n });\r\n}\r\n\r\nfunction useObservations(stedfesting: Rovviltobservasjon): string {\r\n const l = useLanguage();\r\n\r\n if (stedfesting.observasjoner.length > 0) {\r\n const observations = stedfesting.observasjoner.map((i, key) => {\r\n if (key === 0) {\r\n return l(`observations.${getStringFromEnumNumber(Observations, i)}`);\r\n } else {\r\n return l(`observations.${getStringFromEnumNumber(Observations, i)}`).toLowerCase();\r\n }\r\n });\r\n \r\n return observations.join(\", \");\r\n }\r\n}\r\n\r\nexport function RovviltobservasjonTooltipDescription(): JSX.Element {\r\n const l = useLanguage();\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting) as Rovviltobservasjon;\r\n\r\n const intro = useIntro(stedfesting);\r\n const observations = useObservations(stedfesting);\r\n\r\n return (\r\n <div className=\"tooltip-description\">\r\n {intro}\r\n <IndividLink individ={stedfesting.individ} text={l('tooltip.individual')} postText={l('tooltip.individualPhrase')}/>\r\n {observations && <div className=\"observation-types\">{observations}</div>}\r\n </div>\r\n );\r\n}\r\n\r\n","export enum IncidentArea {\r\n BackCountry = 1,\r\n CultivatedLand = 2,\r\n Fields = 3,\r\n Fence = 4\r\n}\r\n","export enum DamageState {\r\n Dead = 1,\r\n DamagedAndEuthanized = 2,\r\n DamagedNotEuthanized = 3,\r\n Missing = 4,\r\n}","export enum CarnivoreDamageInspectedBy {\r\n Sno = 1,\r\n Sysselmester = 2,\r\n Lansstyrelsen = 3,\r\n SamiVillage = 4,\r\n NotControlledInField = 5\r\n}\r\n","import {useLanguage, useLanguageTemplate} from '../../i18n';\r\nimport {Evaluation} from '../../constants/evaluation';\r\nimport {IncidentArea} from '../../constants/incidentArea';\r\nimport React from 'react';\r\nimport {getStringFromEnum, notNullOrEmpty} from './tooltip.util';\r\nimport {Rovviltskade} from '../../model/stedfesting/StedfestingTypes';\r\nimport './tooltip.scss';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {DamageState} from '../../constants/damageState';\r\nimport {CarnivoreDamageInspectedBy} from '../../constants/carnivoreDamageInspectedBy';\r\n\r\nfunction useIntro(stedfesting: Rovviltskade) {\r\n const lt = useLanguageTemplate();\r\n const l = useLanguage();\r\n \r\n const damageState = l(`damageState.${getStringFromEnum(DamageState, stedfesting.tilstandID)}`).toLowerCase();\r\n const inspectedBy = l(`inspectedBy.${getStringFromEnum(CarnivoreDamageInspectedBy, stedfesting.undersoktAvID)}`);\r\n \r\n return lt('tooltip.damage', {\r\n object: l('tooltip.animalDamaged'),\r\n damageState: damageState,\r\n inspectedBy: inspectedBy,\r\n documentation: l(`evaluation.${getStringFromEnum(Evaluation, stedfesting.vurderingID)}`).toLowerCase(),\r\n });\r\n \r\n \r\n}\r\n\r\nfunction useArea(stedfesting: Rovviltskade){\r\n const lt = useLanguageTemplate();\r\n const l = useLanguage();\r\n const incidentArea = l(`incidentArea.${getStringFromEnum(IncidentArea, stedfesting.skadestedID)}`).toLowerCase();\r\n \r\n return notNullOrEmpty(stedfesting.skadestedID) &&\r\n lt('tooltip.damage.area', {\r\n area: incidentArea\r\n });\r\n}\r\n\r\nexport function RovviltskadeTooltipDescription(): JSX.Element {\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting) as Rovviltskade;\r\n \r\n const intro = useIntro(stedfesting);\r\n const area = useArea(stedfesting);\r\n \r\n return (\r\n <div className=\"tooltip-description\">\r\n {intro}\r\n {area}\r\n </div>\r\n );\r\n}\r\n","/* eslint-disable no-unused-vars */\r\n// Skal matche CauseOfDeathType.cs i backend\r\nexport enum causeOfDeathType {\r\n LicenseHunting = 1,\r\n DamageControl = 2,\r\n DefenceOfAnimal = 3,\r\n SnoMission = 4,\r\n AnimalWelfare = 5,\r\n PoliceDecision = 6,\r\n KilledByAnimal = 7,\r\n Research = 8,\r\n IllegalKilling = 9,\r\n CollisionRail = 10,\r\n CollisionRoad = 11,\r\n SelfDefence = 12,\r\n Accident = 13,\r\n Disease = 14,\r\n Unknown = 15,\r\n QuotaHunting = 16\r\n}\r\n","export enum Gender {\r\n Male = 1,\r\n Female = 2,\r\n Unknown = 3,\r\n}\r\n","/* eslint-disable no-unused-vars */\r\n// Skal matche UtfallDodeRovdyr.cs i backend\r\nexport enum OutcomeDeadCarnivore {\r\n Killed = 1,\r\n ShotDamageConfirmed = 2,\r\n ShotDamageUnknown = 3\r\n}\r\n","import {useLanguage, useLanguageTemplate} from '../../i18n';\r\nimport {Carnivore} from '../../constants/carnivore';\r\nimport {causeOfDeathType} from '../../constants/causeOfDeathType';\r\nimport {Gender} from '../../constants/gender';\r\nimport {Evaluation} from '../../constants/evaluation';\r\nimport React from 'react';\r\nimport {getStringFromEnum, notNullOrEmpty} from './tooltip.util';\r\nimport {DodeRovdyr} from '../../model/stedfesting/StedfestingTypes';\r\nimport {IndividLink} from './tooltip';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport './tooltip.scss';\r\nimport {OutcomeDeadCarnivore} from '../../constants/outcomeDeadCarnivore';\r\n\r\nconst weightNotNullIsh = (weight: string): boolean => notNullOrEmpty(weight) && parseInt(weight) !== 0 && weight !== '0,00';\r\nconst getWeight = (rovdyr: DodeRovdyr) => {\r\n const l = useLanguage();\r\n if (weightNotNullIsh(rovdyr.helvekt)){\r\n return `${rovdyr.helvekt} kg`\r\n }\r\n if (weightNotNullIsh(rovdyr.slaktevekt)){\r\n return `${rovdyr.slaktevekt} kg (${l('deadCarnivore.slaughterWeight')})`;\r\n }\r\n return null;\r\n}\r\n\r\nfunction useCauseOfDeath(dodeRovdyr: DodeRovdyr): string {\r\n const l = useLanguage();\r\n const theAnimal = l(`theCarnivore.${getStringFromEnum(Carnivore, dodeRovdyr.artsID)}`);\r\n const causeOfDeath = getStringFromEnum(causeOfDeathType, dodeRovdyr.bakgrunnArsakID);\r\n const bakgrunnArsak = parseInt(dodeRovdyr.bakgrunnArsakID);\r\n const utfall = parseInt(dodeRovdyr.utfallID);\r\n const causeOfDeathWithOutcome = [causeOfDeathType.LicenseHunting, causeOfDeathType.QuotaHunting, causeOfDeathType.DamageControl, causeOfDeathType.DefenceOfAnimal, causeOfDeathType.SnoMission, causeOfDeathType.SelfDefence];\r\n const withOutcome = causeOfDeathWithOutcome.includes(parseInt(dodeRovdyr.bakgrunnArsakID));\r\n const outcome = withOutcome ? `${getStringFromEnum(OutcomeDeadCarnivore, dodeRovdyr.utfallID)}.` : '';\r\n const causeOfDeathIntetkjonn = [causeOfDeathType.CollisionRoad, causeOfDeathType.CollisionRail];\r\n const erIntetkjonn = parseInt(dodeRovdyr.artsID) === Carnivore.Lynx && (causeOfDeathIntetkjonn.includes(bakgrunnArsak) || (causeOfDeathWithOutcome.includes(bakgrunnArsak) && utfall === OutcomeDeadCarnivore.ShotDamageConfirmed));\r\n const intetkjonn = erIntetkjonn ? 'intetkjonn.' : '';\r\n \r\n const deathCausePhrase = l(`deadCarnivore.deathCausePhrase.${intetkjonn}${outcome}${causeOfDeath}`);\r\n \r\n return `${theAnimal} ${deathCausePhrase}. `;\r\n}\r\n\r\nfunction useIntro(dodeRovdyr: DodeRovdyr): string {\r\n const lt = useLanguageTemplate();\r\n const l = useLanguage();\r\n \r\n const ageIsNumber: boolean = notNullOrEmpty(dodeRovdyr.alder) && !isNaN(parseInt(dodeRovdyr.alder));\r\n\r\n const year = ageIsNumber ? l('deadCarnivore.year') : '';\r\n const ageSuffix = dodeRovdyr.alderFastsattNINA ? l('deadCarnivore.ageByNINA') : (dodeRovdyr.alderFastsattSVA ? l('deadCarnivore.ageBySVA') : l('deadCarnivore.agePreliminary'));\r\n\r\n const age =\r\n dodeRovdyr.alder.length > 0\r\n ? `${dodeRovdyr.alder.toLowerCase()} ${year} (${ageSuffix})`\r\n : l('deadCarnivore.unknown').toLowerCase();\r\n const sex =\r\n dodeRovdyr.kjønnID.length > 0\r\n ? l(`deadCarnivore.gender.${getStringFromEnum(Gender, dodeRovdyr.kjønnID)}`).toLowerCase()\r\n : l('deadCarnivore.gender.unknown').toLowerCase();\r\n\r\n const weight = getWeight(dodeRovdyr) ?? l('deadCarnivore.unknown').toLowerCase();\r\n \r\n return lt('tooltip.dead', {\r\n sex: sex,\r\n weight: weight,\r\n age: age,\r\n documentation: l(`evaluation.${getStringFromEnum(Evaluation, dodeRovdyr.vurderingID)}`).toLowerCase(),\r\n });\r\n}\r\n\r\nfunction useDocumentation(dodeRovdyr: DodeRovdyr): string {\r\n const l = useLanguage();\r\n return notNullOrEmpty(dodeRovdyr.vurderingID) ? \r\n `${l('deadCarnivore.documentation')} ${l(`evaluation.${getStringFromEnum(Evaluation, dodeRovdyr.vurderingID)}`).toLowerCase()}. `\r\n : \r\n '';\r\n}\r\n\r\nexport function DodeRovdyrTooltipDescription(): JSX.Element {\r\n const dodeRovdyr = useSelector((state: ApplicationState) => state.tooltip.stedfesting) as DodeRovdyr;\r\n const lt = useLanguageTemplate();\r\n const l = useLanguage();\r\n \r\n const causeOfDeath = useCauseOfDeath(dodeRovdyr);\r\n const intro = useIntro(dodeRovdyr);\r\n const documentation = useDocumentation(dodeRovdyr);\r\n \r\n const theAnimal = l(`theCarnivore.${getStringFromEnum(Carnivore, dodeRovdyr.artsID)}`);\r\n const identity = lt('tooltip.dead.identity', {\r\n theAnimal: theAnimal,\r\n });\r\n \r\n return (\r\n <div className=\"tooltip-description\">\r\n {causeOfDeath}\r\n {intro}\r\n {documentation}\r\n {dodeRovdyr.individ && <IndividLink individ={[dodeRovdyr.individ]} text={identity}/>}\r\n {dodeRovdyr.yngling && \r\n <div className={'observation-types'}>\r\n {l('observations.offspring')}\r\n </div>\r\n }\r\n </div>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {ApplicationState} from \"../../store\";\r\nimport {DnaTooltipDescription} from \"./DNATooltipDescription\";\r\nimport {RovviltobservasjonTooltipDescription} from \"./rovviltobservasjonTooltipDescription\";\r\nimport {RovviltskadeTooltipDescription} from \"./rovviltskadeTooltipDescription\";\r\nimport {DodeRovdyrTooltipDescription} from \"./dodeRovdyrTooltipDescription\";\r\nimport {Datatype} from \"../../model/stedfesting/StedfestingTypes\";\r\n\r\n\r\nexport function TooltipDescription(): JSX.Element {\r\n const datatype = useSelector((state: ApplicationState) => state.tooltip.stedfesting?.datatype);\r\n \r\n switch (datatype) {\r\n case Datatype.DNA: \r\n return <DnaTooltipDescription /> \r\n case Datatype.DodeRovdyr:\r\n return <DodeRovdyrTooltipDescription />\r\n case Datatype.Rovviltobservasjon: \r\n return <RovviltobservasjonTooltipDescription />\r\n case Datatype.Rovviltskade: \r\n return <RovviltskadeTooltipDescription />\r\n default:\r\n return null;\r\n }\r\n}","import React, {ReactElement} from \"react\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {ApplicationState} from \"../../store\";\r\nimport {getCoordinates, getCoordinateType} from \"./tooltip.util\";\r\nimport {useLanguage} from \"../../i18n\";\r\nimport classnames from \"classnames\";\r\nimport {makeStyles, Theme} from \"@material-ui/core\";\r\nimport {createStyles} from \"@material-ui/styles\";\r\nimport './tooltip.scss'\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n borderTop: {\r\n borderTop: `1px solid ${theme.palette.grey[200]}`,\r\n },\r\n borderBottom: {\r\n borderBottom: `1px solid ${theme.palette.grey[200]}`\r\n },\r\n })\r\n);\r\n\r\nexport function StedfestingInfo(): ReactElement {\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const site = useSelector((state: ApplicationState) => state.settings.site);\r\n const coordinates = getCoordinates(stedfesting.wkt, site);\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const stedfestingIDClass = classnames(classes.borderTop, classes.borderBottom, \"stedfesting-info-pair\");\r\n const stedfestingCoordinateClass = classnames(classes.borderBottom, \"stedfesting-info-pair\");\r\n return (\r\n <div className=\"stedfesting-info\">\r\n <div className={stedfestingIDClass}>\r\n <span>ID</span> {stedfesting.id}\r\n </div>\r\n <div className={stedfestingCoordinateClass}>\r\n <span>{l('tooltip.north')} {getCoordinateType(site)}</span>\r\n {coordinates[1].toFixed(0)}\r\n </div>\r\n <div className={stedfestingCoordinateClass}>\r\n <span>{l('tooltip.east')} {getCoordinateType(site)}</span>\r\n {coordinates[0].toFixed(0)}\r\n </div>\r\n </div>\r\n )\r\n}","import {Stedfesting} from '../../model/stedfesting/StedfestingTypes';\r\nimport React, {ReactElement} from 'react';\r\nimport {useLanguage} from '../../i18n';\r\nimport {Language} from '../../constants/language';\r\nimport {shallowEqual, useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {isNullOrEmpty, kommaseparert} from './tooltip.util';\r\nimport {IconComponent} from '../../Icons/icons';\r\nimport {formatDateStringToLocaleString} from '../../helpers';\r\nimport './tooltip.scss';\r\ntype TooltipInfoGridProps = {\r\n stedfesting: Stedfesting\r\n}\r\n\r\nexport function TooltipHeaderInfo(props: TooltipInfoGridProps): ReactElement {\r\n const {funnsted, kommune, dato} = props.stedfesting;\r\n const l = useLanguage();\r\n const language: Language = useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n const sted = isNullOrEmpty(funnsted) ? kommune : kommaseparert([kommune, funnsted]);\r\n return (\r\n <span className=\"tooltip-header-info\">\r\n <IconComponent stedfesting={props.stedfesting} className=\"tooltip-icon\"/>\r\n <span className=\"info-grid\">\r\n <span className=\"field-label\">{l('filterbar.date')}</span>\r\n <span>{formatDateStringToLocaleString(dato, language)}</span>\r\n <span className=\"field-label\">{l('filterbar.place')}</span>\r\n <span>{sted}</span>\r\n </span>\r\n </span>\r\n );\r\n}\r\n","import {makeStyles, Theme} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport {createStyles} from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport {equals} from 'ramda';\r\nimport findIndex from 'ramda/es/findIndex';\r\nimport React, {ReactElement, useRef, Fragment} from 'react';\r\nimport {shallowEqual, useSelector} from 'react-redux';\r\nimport {Language} from '../../constants/language';\r\nimport {useLanguage, useLanguageTemplate} from '../../i18n';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {selectStedfesting} from '../../store/map/actions';\r\nimport {setTooltip} from '../../store/tooltip/actions';\r\nimport {Share} from '../share/share';\r\nimport {IconButton, InlineLinkButton, PrimaryButton, SecondaryButton} from '../themeButtton/themeButton';\r\nimport './tooltip.scss';\r\nimport {\r\n formatIndividString,\r\n getStedfestingUrl, getStringFromEnum, notNullOrEmpty,\r\n stedfestingTitle,\r\n} from './tooltip.util';\r\nimport {ErrorBoundary} from '../errorBoundary/errorBoundary';\r\nimport {SetSearchinput, UpdateSearchFilterAndSearch} from '../../store/searchfilter/action';\r\nimport {Individ} from '../../model/stedfesting/StedfestingTypes';\r\nimport {Carnivore} from '../../constants/carnivore';\r\nimport {TooltipDescription} from './tooltipDescription';\r\nimport {StedfestingInfo} from './stedfestingInfo';\r\nimport {TooltipHeaderInfo} from './tooltipHeaderInfo';\r\nimport {clusterSource} from '../../map/map';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n border: `1px solid ${theme.palette.grey[300]}`,\r\n },\r\n titleBanner: {\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n borderTop: {\r\n borderTop: `1px solid ${theme.palette.grey[200]}`,\r\n }\r\n })\r\n);\r\n\r\nfunction TooltipTitle(): ReactElement {\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const language: Language = useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n const selectedStedfestings = useSelector((state: ApplicationState) => state.map.selectedStedfesting);\r\n const individSearchText = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.IndividualNameOrID);\r\n const setTooltipStedfesting = useActionCreator(setTooltip);\r\n const setSelectedStedfestings = useActionCreator(selectStedfesting);\r\n const individ = useSelector((state: ApplicationState) => state.sidePanelFilter.individ);\r\n const clusterSize = selectedStedfestings.length;\r\n const index = findIndex(equals(stedfesting))(selectedStedfestings);\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const titleClass = classnames(classes.titleBanner, 'title-banner');\r\n const individSearch = individSearchText.length > 0;\r\n const cluster = clusterSize > 1;\r\n const clusterOrIndividual = cluster || individSearch;\r\n const theCarnivoreString = getStringFromEnum(Carnivore, individ?.artsID);\r\n \r\n const individualCarnivoreType = individ ?\r\n `${l(`theCarnivore.${theCarnivoreString}`)}`\r\n : l('tooltip.individual').toLowerCase();\r\n const individTitleText = individ && `${individualCarnivoreType} ${individ.individID} ${individ.individnavn}`;\r\n \r\n const handleCloseTooltip = () => {\r\n setTooltipStedfesting(null);\r\n setSelectedStedfestings([]);\r\n clusterSource.changed();\r\n };\r\n\r\n return (\r\n <div className={titleClass}>\r\n <div className={'titles'}>\r\n {cluster && <div className=\"title cluster\">{`${index + 1} ${l('tooltip.of')} ${clusterSize}`}</div>}\r\n {individSearch && <div className=\"title individ\">{individTitleText}</div>}\r\n {!clusterOrIndividual && <div className=\"title\">{stedfestingTitle(language, stedfesting)}</div>}\r\n </div>\r\n <IconButton\r\n className={'close-button'}\r\n onClick={handleCloseTooltip}\r\n aria-label={l('uu.close')}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </div>\r\n );\r\n}\r\n\r\ntype BarcodeLinkProps = {\r\n barcode: string;\r\n text: string;\r\n}\r\n\r\nexport function BarcodeLink(props: BarcodeLinkProps): ReactElement {\r\n const setSearchParameter = useActionCreator(UpdateSearchFilterAndSearch);\r\n const setSearchinput = useActionCreator(SetSearchinput);\r\n\r\n const handleBarcodeSearch = (barcode: string): void => {\r\n setSearchParameter({\r\n IndividualNameOrID: '',\r\n ID: [],\r\n Barcode: [barcode],\r\n });\r\n setSearchinput(barcode);\r\n };\r\n\r\n return (\r\n <div className=\"barcode-link\">\r\n {props.text}\r\n <InlineLinkButton onClick={() => handleBarcodeSearch(props.barcode)}>\r\n {props.barcode}\r\n </InlineLinkButton>\r\n </div>\r\n );\r\n}\r\n\r\ntype IndividLinkProps = {\r\n individ: Individ[],\r\n text: string;\r\n postText?: string\r\n}\r\n\r\nexport function IndividLink(props: IndividLinkProps): ReactElement {\r\n const setSearchParameter = useActionCreator(UpdateSearchFilterAndSearch);\r\n const setSearchinput = useActionCreator(SetSearchinput);\r\n\r\n const handleIndividSearch = (individ: Individ): void => {\r\n setSearchParameter({\r\n IndividualNameOrID: individ.individID,\r\n ID: [],\r\n Barcode: [],\r\n });\r\n setSearchinput(`${individ.individID} ${individ.individnavn}`);\r\n };\r\n \r\n return (\r\n <>\r\n {props.individ.length > 0 && (\r\n <div className=\"individ-link\">\r\n {props.text}\r\n {props.individ.map((individ, i) => (\r\n <Fragment key={individ.individID}>\r\n {i > 0 && <span>{', '}</span>}\r\n <InlineLinkButton onClick={() => handleIndividSearch(individ)}>\r\n {individ.individnavn.length > 0\r\n ? formatIndividString(individ)\r\n : individ.individID}\r\n </InlineLinkButton>\r\n </Fragment>\r\n ))}\r\n {props.postText}\r\n </div>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\n\r\nfunction TooltipHeader(): ReactElement {\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const language: Language = useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n const isIndividSearch = notNullOrEmpty(useSelector((state: ApplicationState) => state.searchFilter.searchFilter.IndividualNameOrID));\r\n const isCluster = useSelector((state: ApplicationState) => state.map.selectedStedfesting).length > 1;\r\n const clusterOrIndividual = isCluster || isIndividSearch;\r\n return (\r\n <>\r\n {clusterOrIndividual && (\r\n <div className=\"extra-title\">{stedfestingTitle(language, stedfesting)}</div>\r\n )}\r\n <TooltipHeaderInfo stedfesting={stedfesting}/>\r\n </>\r\n );\r\n}\r\n\r\nfunction NavigateTooltip(): ReactElement {\r\n const setTooltipStedfesting = useActionCreator(setTooltip);\r\n const selectedStedfestings = useSelector((state: ApplicationState) => state.map.selectedStedfesting);\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const l = useLanguage();\r\n\r\n const index = findIndex(equals(stedfesting))(selectedStedfestings);\r\n const clusterSize = selectedStedfestings.length;\r\n\r\n function handlePrevious(): void {\r\n setTooltipStedfesting(selectedStedfestings[index - 1]);\r\n }\r\n\r\n function handleNext(): void {\r\n setTooltipStedfesting(selectedStedfestings[index + 1]);\r\n }\r\n\r\n return (\r\n <div className=\"navigate-tooltip\">\r\n <SecondaryButton onClick={handlePrevious} disabled={index < 1}>\r\n {l('tooltip.previousPost')}\r\n </SecondaryButton>\r\n <div className=\"counter\">{`${index + 1} ${l('tooltip.of')} ${clusterSize}`}</div>\r\n <PrimaryButton onClick={handleNext} disabled={index + 1 >= clusterSize}>\r\n {l('tooltip.nextPost')}\r\n </PrimaryButton>\r\n </div>\r\n );\r\n\r\n}\r\n\r\nexport function Tooltip(): JSX.Element {\r\n const tooltip = useRef();\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const language: Language = useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n const clusterSize = useSelector((state: ApplicationState) => state.map.selectedStedfesting).length;\r\n const lt = useLanguageTemplate();\r\n const classes = useStyles({});\r\n const tooltipClass = classnames(classes.tooltip, 'tooltip');\r\n const cluster = clusterSize > 1;\r\n\r\n const mailSubject = stedfestingTitle(language, stedfesting);\r\n const mailLink = `mailto:?subject=Rovbase: ${mailSubject}&body=${lt('tooltip.mailBody', {\r\n title: mailSubject,\r\n })} ${getStedfestingUrl(stedfesting)}`;\r\n\r\n return (\r\n <div className={tooltipClass} ref={tooltip}>\r\n <ErrorBoundary>\r\n <TooltipTitle />\r\n <TooltipHeader />\r\n <div className={classes.borderTop}>\r\n <TooltipDescription/>\r\n <StedfestingInfo />\r\n <Share\r\n copyUrl={getStedfestingUrl(stedfesting)}\r\n mailLink={mailLink}\r\n feedbackObject={stedfesting}\r\n />\r\n {cluster && <NavigateTooltip />}\r\n </div>\r\n </ErrorBoundary>\r\n </div>\r\n );\r\n}\r\n","import { join, map, pipe, uniq, values } from 'ramda';\r\nimport * as React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Layer } from '../../model/layer/layer';\r\nimport { ApplicationState } from '../../store';\r\nimport './attribution.scss';\r\n\r\nconst getAttributionString = (layers: Layer[]): string => {\r\n const attribution = pipe(\r\n map<Layer, string>(layer => layer.options?.attribution),\r\n strings => strings.filter(val => val && val !== ''),\r\n uniq,\r\n join(', ')\r\n )(layers);\r\n\r\n return ` \\u00A9 ${attribution}`;\r\n};\r\n\r\nexport function Attribution(): JSX.Element {\r\n const layerCollection = useSelector((state: ApplicationState) => state.map.layers);\r\n const visibleLayers: Layer[] = values(layerCollection).filter(layer => layer.options.visible);\r\n const attributions = React.useMemo(() => getAttributionString(visibleLayers), [layerCollection]);\r\n\r\n return <div className=\"attribution-wrapper\">{attributions}</div>;\r\n}\r\n","import React, {ReactElement, useState} from 'react';\r\nimport {shallowEqual, useSelector} from 'react-redux';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {Language} from '../../constants/language';\r\nimport {useLanguage, useLanguageTemplate} from '../../i18n';\r\nimport './mobileTooltip.scss';\r\nimport {IconButton, LinkButton} from '../themeButtton/themeButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport {setTooltip} from '../../store/tooltip/actions';\r\nimport {selectStedfesting} from '../../store/map/actions';\r\nimport {getStedfestingUrl, stedfestingTitle} from '../tooltip/tooltip.util';\r\nimport {makeStyles, Theme} from '@material-ui/core';\r\nimport {createStyles} from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport findIndex from 'ramda/es/findIndex';\r\nimport {equals} from 'ramda';\r\nimport ArrowIosIcon from '@material-ui/icons/ArrowForwardIos';\r\nimport {Share} from '../share/share';\r\nimport {TooltipDescription} from '../tooltip/tooltipDescription';\r\nimport {StedfestingInfo} from '../tooltip/stedfestingInfo';\r\nimport {TooltipHeaderInfo} from '../tooltip/tooltipHeaderInfo';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n clusterNavigation: {\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n tooltipBody: {\r\n borderTop: `1px solid ${theme.palette.grey[200]}`\r\n },\r\n title: {\r\n color: theme.palette.primary.main,\r\n textDecoration: 'underline'\r\n }\r\n })\r\n);\r\n\r\nfunction ClusterNavigation(): ReactElement {\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const clusterNavigationClass = classnames('cluster-navigation', classes.clusterNavigation);\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const selectedStedfestings = useSelector((state: ApplicationState) => state.map.selectedStedfesting);\r\n const setTooltipStedfesting = useActionCreator(setTooltip);\r\n const clusterSize = useSelector((state: ApplicationState) => state.map.selectedStedfesting).length;\r\n const index = findIndex(equals(stedfesting))(selectedStedfestings);\r\n const showPreviousButton = index >= 1;\r\n const showNextButton = index + 1 < clusterSize;\r\n\r\n const handlePrevious = (): void => {\r\n setTooltipStedfesting(selectedStedfestings[index - 1]);\r\n };\r\n\r\n const handleNext = (): void => {\r\n setTooltipStedfesting(selectedStedfestings[index + 1]);\r\n };\r\n \r\n\r\n return (\r\n <div className={clusterNavigationClass}>\r\n {showPreviousButton &&\r\n <LinkButton onClick={handlePrevious} className=\"previous-tooltip-button\">\r\n <ArrowIosIcon />\r\n {l('tooltip.previousPost')}\r\n </LinkButton>\r\n }\r\n \r\n <div className=\"counter\">{`${index + 1} ${l('tooltip.of')} ${clusterSize}`}</div>\r\n {showNextButton && \r\n <LinkButton onClick={handleNext} className=\"next-tooltip-button\" disabled={index + 1 >= clusterSize}>\r\n {l('tooltip.nextPost')}\r\n <ArrowIosIcon />\r\n </LinkButton> \r\n }\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\ntype HeaderProps = {\r\n OnTitleClick: () => void,\r\n TooltipSize: TooltipSize\r\n}\r\n\r\nfunction TooltipHeader(props: HeaderProps): ReactElement {\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const language: Language = useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n const l = useLanguage();\r\n const setTooltipStedfesting = useActionCreator(setTooltip);\r\n const setSelectedStedfestings = useActionCreator(selectStedfesting);\r\n const classes = useStyles({});\r\n const titleClass = classnames('tooltip-title', classes.title);\r\n\r\n\r\n const handleCloseTooltip = () => {\r\n setTooltipStedfesting(null);\r\n setSelectedStedfestings([]);\r\n };\r\n return (\r\n <div className=\"tooltip-header\">\r\n {props.TooltipSize === TooltipSize.Small && \r\n <button className=\"tooltip-content\" onClick={props.OnTitleClick} type=\"button\">\r\n <span className={titleClass}>{stedfestingTitle(language, stedfesting)}</span>\r\n <TooltipHeaderInfo stedfesting={stedfesting}/>\r\n </button>\r\n }\r\n {props.TooltipSize === TooltipSize.Large &&\r\n <div className=\"tooltip-content\">\r\n <div className=\"tooltip-title\">{stedfestingTitle(language, stedfesting)}</div>\r\n <TooltipHeaderInfo stedfesting={stedfesting}/>\r\n </div>\r\n }\r\n <IconButton\r\n className=\"close-button\"\r\n onClick={handleCloseTooltip}\r\n aria-label={l('uu.close')}\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n </div>\r\n );\r\n}\r\n\r\nenum TooltipSize {\r\n Small = 0,\r\n Large = 1\r\n}\r\n\r\nexport function MobileTooltip(){\r\n const lt = useLanguageTemplate();\r\n const language: Language = useSelector((state: ApplicationState) => state.settings.language, shallowEqual);\r\n const [tooltipSize, setTooltipSize] = useState<TooltipSize>(TooltipSize.Small);\r\n const stedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const isCluster = useSelector((state: ApplicationState) => state.map.selectedStedfesting).length > 1;\r\n const classes = useStyles({});\r\n const tooltipBodyClass = classnames('tooltip-body', classes.tooltipBody);\r\n const mailSubject = stedfestingTitle(language, stedfesting);\r\n const mailLink = `mailto:?subject=Rovbase: ${mailSubject}&body=${lt('tooltip.mailBody', {\r\n title: mailSubject,\r\n })} ${getStedfestingUrl(stedfesting)}`;\r\n const onTitleClick = () => {\r\n setTooltipSize(TooltipSize.Large); \r\n };\r\n\r\n \r\n return (\r\n <div className={tooltipSize === TooltipSize.Large ? 'mobile-tooltip large': 'mobile-tooltip'}>\r\n {isCluster && <ClusterNavigation />}\r\n <TooltipHeader OnTitleClick={onTitleClick} TooltipSize={tooltipSize}/>\r\n {tooltipSize === TooltipSize.Large &&\r\n <div className={tooltipBodyClass}>\r\n <TooltipDescription/>\r\n <StedfestingInfo />\r\n <Share\r\n copyUrl={getStedfestingUrl(stedfesting)}\r\n mailLink={mailLink}\r\n feedbackObject={stedfesting}\r\n />\r\n </div>\r\n }\r\n </div>\r\n );\r\n}","import * as React from 'react';\r\nimport {useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useLanguage} from '../../i18n';\r\nimport {Layers} from '../../map/controls/layers';\r\nimport {ZoomIn, ZoomOut} from '../../map/controls/zoom';\r\nimport {olMap, useMap} from '../../map/map';\r\nimport {isStedfesting} from '../../model/stedfesting/Stedfesting';\r\nimport {ApplicationState} from '../../store';\r\nimport {LayerSelector} from '../layerselect/layerSelector';\r\nimport {MapTool, MapToolbar} from '../toolbar/toolbar';\r\nimport './map.scss';\r\nimport {Tooltip} from '../tooltip/tooltip';\r\nimport {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport {Attribution} from '../attribution/attribution';\r\nimport {WatermarkMapLayer} from '../watermark/watermark';\r\nimport {MobileTooltip} from '../mobileTooltip/mobileTooltip';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n map: {\r\n backgroundColor: theme.palette.background.default,\r\n },\r\n })\r\n);\r\n\r\nexport function MainMap(): JSX.Element {\r\n const tooltipStedfesting = useSelector((state: ApplicationState) => state.tooltip.stedfesting);\r\n const mapRef = useMap(olMap);\r\n const classes = useStyles({});\r\n const lang = useLanguage();\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n \r\n const [layerSelectorOpen, setLayerSelectorOpen] = useState(false);\r\n const openLayerSelector = (): void => {\r\n setLayerSelectorOpen(true);\r\n };\r\n const closeLayerSelector = (): void => {\r\n setLayerSelectorOpen(false);\r\n };\r\n\r\n return (\r\n <div id=\"map\" ref={mapRef} className={classes.map }>\r\n <MapToolbar>\r\n <MapTool label={lang('map.zoominn')} control={ZoomIn} src=\"zoomin\" ariaLabel={lang('map.zoominn')} />\r\n <MapTool label={lang('map.zoomut')} control={ZoomOut} src=\"zoomout\" ariaLabel={lang('map.zoomut')} />\r\n <MapTool\r\n label={lang('map.layers')}\r\n control={Layers}\r\n onActivate={openLayerSelector}\r\n src=\"layers\"\r\n ariaLabel={lang('map.layers')}\r\n />\r\n </MapToolbar>\r\n {mobileScreen && isStedfesting(tooltipStedfesting) && <MobileTooltip />}\r\n {!mobileScreen && isStedfesting(tooltipStedfesting) && <Tooltip />}\r\n <LayerSelector closeDrawer={closeLayerSelector} open={layerSelectorOpen} />\r\n <WatermarkMapLayer />\r\n <Attribution />\r\n </div>\r\n );\r\n}\r\n","export type SearchSuggestion = {\r\n id: string;\r\n tekst: string;\r\n};\r\nlet aborts: AbortController[] = [];\r\n\r\nconst abortAll = (): void => {\r\n aborts.forEach(a => a.abort());\r\n aborts = [];\r\n};\r\n\r\nexport function suggestionSearch(text: string): Promise<SearchSuggestion[]> {\r\n abortAll();\r\n const abortController = new AbortController();\r\n aborts.push(abortController);\r\n const trimmedText = text.trim(); // Tar bort whitespace foran og etter texten, da dette fører til feil i api-kallet.\r\n const encodedText = encodeURIComponent(trimmedText);\r\n const { signal } = abortController;\r\n return fetch(`api/individual/${encodedText}`, { signal })\r\n .then(res => res.json())\r\n}\r\n","import React, {useState} from 'react';\r\nimport {makeStyles, createStyles, Theme, InputBase} from '@material-ui/core';\r\nimport ClearIcon from '@material-ui/icons/Clear';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport {useLanguage} from '../../i18n';\r\nimport {useActionCreator, ApplicationState} from '../../store';\r\nimport {useSelector} from 'react-redux';\r\nimport {SetSearchinput} from '../../store/searchfilter/action';\r\nimport {SearchSuggestion, suggestionSearch} from '../searchbar/suggestionService';\r\nimport './searchbarInput.scss';\r\nimport {IconButton} from '../themeButtton/themeButton';\r\nimport classnames from 'classnames';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n searchbar: {\r\n border: `1px solid ${theme.palette.grey[400]}`,\r\n backgroundColor: theme.palette.common.white,\r\n \r\n '&:focus-within': {\r\n outline: `1px solid ${ theme.palette.primary.light}`,\r\n outlineOffset: '2px'\r\n }\r\n },\r\n input: {\r\n textOverflow: 'ellipsis',\r\n '&::placeholder': {\r\n opacity: 0.8,\r\n }, \r\n },\r\n iconButton: {\r\n padding: 8,\r\n [theme.breakpoints.up('sm')]: {\r\n padding: 10,\r\n },\r\n },\r\n })\r\n);\r\n\r\ntype OwnProps = {\r\n searchText: string;\r\n onSearch: (text: string) => void;\r\n setSuggestions: (suggestions: SearchSuggestion[]) => void;\r\n suggestions: SearchSuggestion[];\r\n clearSearch: () => void;\r\n handleSuggestionClick: (suggestion: SearchSuggestion, e: React.MouseEvent) => void;\r\n placeholderText: string;\r\n label: string;\r\n};\r\n\r\nexport function SearchbarInput(props: OwnProps): JSX.Element {\r\n const searchText = useSelector((state: ApplicationState) => state.searchFilter.searchinput);\r\n const setSearchText = useActionCreator(SetSearchinput);\r\n const [showSuggestions, setShowSuggestions] = useState<boolean>();\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const searchbarClass = classnames(classes.searchbar, 'searchbar');\r\n const maxLengthInput = 200;\r\n\r\n function handleSearchTextUpdate(text: string): void {\r\n \r\n // Serveren har en makslengde pÃ¥ URL'er som støttes, og vi ser at noen brukere møter denne grensen.\r\n // Dette fører til en exception. Ved Ã¥ begrense lengden pÃ¥ input-feltet unngÃ¥r vi dette.\r\n \r\n // kutter søkefeltet etter maxLengthInput\r\n const inputTextTruncated = text.substring(0, maxLengthInput);\r\n // oppdaterer søkefeltet med den avkuttede teksten\r\n setSearchText(inputTextTruncated);\r\n \r\n if (text.length > 1) { // Søker etter individ nÃ¥r man har skrevet minst 2 bokstaver.\r\n suggestionSearch(inputTextTruncated).then(result => {\r\n props.setSuggestions(result);\r\n setShowSuggestions(result.length > 0);\r\n });\r\n } else {\r\n setShowSuggestions(false);\r\n }\r\n }\r\n\r\n function handleOnEnter(event): void {\r\n if (event.keyCode === 13) {\r\n props.onSearch(searchText);\r\n }\r\n }\r\n\r\n return (\r\n <div className={searchbarClass} role={'search'}>\r\n <IconButton\r\n tabIndex={-1}\r\n className={classes.iconButton}\r\n onClick={() => props.onSearch(searchText)}\r\n\r\n aria-label={l('ariaLabel.search')}\r\n >\r\n <SearchIcon/>\r\n </IconButton>\r\n <InputBase\r\n value={searchText}\r\n id=\"searchbar\"\r\n className={'input-wrapper'}\r\n placeholder={props.placeholderText}\r\n onKeyDown={handleOnEnter}\r\n onFocus={() => setShowSuggestions(true)}\r\n onChange={e => handleSearchTextUpdate(e.target.value)}\r\n inputProps={{className: classes.input, 'aria-label': props.label}}\r\n />\r\n {searchText !== '' && (\r\n <IconButton onClick={props.clearSearch} className={classes.iconButton} aria-label={l('uu.clear')}>\r\n <ClearIcon/>\r\n </IconButton>\r\n )}\r\n\r\n {showSuggestions && searchText !== '' && (\r\n <div className=\"searchbar__suggestionBox\">\r\n {props.suggestions.map((suggestion, i) => (\r\n <button\r\n key={i}\r\n className=\"searchbar__suggestionItem\"\r\n onClick={e => props.handleSuggestionClick(suggestion, e)}\r\n >\r\n <span>{`${suggestion.id} ${suggestion.tekst}`}</span>\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgCheckmark = function SvgCheckmark(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n style: {\n enableBackground: \"new 0 0 13 10\"\n },\n viewBox: \"0 0 13 10\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.1 0 4.8 6.3l-3-3L0 5.2 4.8 10 13 1.9 11.1 0z\"\n })));\n};\nexport default SvgCheckmark;","import React, { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useLanguage } from '../../i18n';\r\nimport { ApplicationState, useActionCreator } from '../../store';\r\nimport { clearSelected } from '../../store/map/actions';\r\nimport { SetSearchinput, UpdateSearchFilterAndSearch } from '../../store/searchfilter/action';\r\nimport {CloseSearchresultlist, RemoveIndivid} from '../../store/sidePanel/action';\r\nimport { ClearTooltip } from '../../store/tooltip/actions';\r\nimport { SearchbarInput } from '../searchbarInput/searchbarInput';\r\nimport './searchbar.scss';\r\nimport { SearchSuggestion } from './suggestionService';\r\n\r\nexport default function Searchbar(): JSX.Element {\r\n const searchText = useSelector((state: ApplicationState) => state.searchFilter.searchinput);\r\n const setSearchText = useActionCreator(SetSearchinput);\r\n const [suggestions, setSuggestions] = useState<SearchSuggestion[]>([]);\r\n const setSearchParameter = useActionCreator(UpdateSearchFilterAndSearch);\r\n const clearTooltip = useActionCreator(ClearTooltip);\r\n const clearSelectedStedfestings = useActionCreator(clearSelected);\r\n const closeSearchresultList = useActionCreator(CloseSearchresultlist);\r\n const clearIndivid = useActionCreator(RemoveIndivid);\r\n const l = useLanguage();\r\n\r\n function handleSuggestionClick(individ: SearchSuggestion, e: React.MouseEvent<HTMLButtonElement, MouseEvent>): void {\r\n e.preventDefault();\r\n setSearchText( `${individ.id} ${individ.tekst}`);\r\n handleSearch(individ.id);\r\n }\r\n\r\n function handleSearch(text: string): void {\r\n // Clear tooltip and selected stedfestings from Redux\r\n clearTooltip();\r\n clearSelectedStedfestings();\r\n if (suggestions.some(s => s.id === text)) {\r\n setSearchParameter({\r\n IndividualNameOrID: text,\r\n ID: [],\r\n Barcode: [],\r\n });\r\n } else if (suggestions.length > 0) {\r\n setSearchParameter({\r\n IndividualNameOrID: suggestions[0].id,\r\n ID: [],\r\n Barcode: [],\r\n });\r\n setSearchText(`${suggestions[0].id} ${suggestions[0].tekst}`);\r\n }\r\n else {\r\n setSearchParameter({\r\n IndividualNameOrID: '',\r\n ID: text.replaceAll(' ', '').split(','),\r\n Barcode: text.replaceAll(' ', '').split(','),\r\n });\r\n clearIndivid();\r\n }\r\n setSuggestions([]);\r\n\r\n }\r\n\r\n function clearSearch(): void {\r\n setSearchText('');\r\n setSearchParameter({\r\n IndividualNameOrID: '',\r\n ID: [],\r\n Barcode: [],\r\n });\r\n setSuggestions([]);\r\n clearIndivid();\r\n closeSearchresultList();\r\n }\r\n\r\n return (\r\n <SearchbarInput\r\n searchText={searchText}\r\n onSearch={handleSearch}\r\n setSuggestions={setSuggestions}\r\n suggestions={suggestions}\r\n clearSearch={clearSearch}\r\n handleSuggestionClick={handleSuggestionClick}\r\n placeholderText={l('searchbar.placeholder')}\r\n label={l('searchbar.label')}\r\n />\r\n );\r\n}\r\n","import React from 'react';\r\nimport Checkmark from '../../../assets/svg/md-icons/checkmark.svg';\r\nimport './checkbox.scss';\r\n\r\ntype OwnProps = {\r\n label: string;\r\n onChange: () => void;\r\n selected: boolean;\r\n};\r\n\r\nexport function CheckboxWrapper(props: OwnProps): JSX.Element {\r\n const checkboxID = props.label.replace(' ', '').toLowerCase();\r\n return (\r\n <label className={'checkbox-text'}>\r\n <input\r\n type=\"checkbox\"\r\n className=\"checkbox-input\"\r\n checked={props.selected}\r\n onChange={props.onChange}\r\n value={props.label}\r\n id={checkboxID}\r\n />\r\n <label className=\"checkbox-label\" htmlFor={checkboxID}>\r\n <Checkmark className=\"checkmark\" aria-hidden={true} />\r\n </label>\r\n {props.label}\r\n </label>\r\n );\r\n}\r\n","import AddIcon from '@material-ui/icons/Add';\r\nimport RemoveIcon from '@material-ui/icons/Remove';\r\nimport React, {HTMLAttributes, PropsWithChildren, ReactChild, ReactElement, useEffect, useState} from \"react\";\r\nimport './expansionField.scss';\r\nimport { last, head } from 'ramda';\r\n\r\ntype ExpansionFieldProps = {\r\n children: [ReactElement, ReactChild];\r\n expanded?: boolean;\r\n onChangeExpanded?: () => void;\r\n};\r\n\r\nexport function ExpansionField({\r\n children,\r\n expanded,\r\n onChangeExpanded,\r\n }: ExpansionFieldProps & HTMLAttributes<HTMLDivElement>): JSX.Element {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const [overflow, setOverflow] = useState<boolean>(false);\r\n const expansionPanelOpen = open ? 'panel-open' : 'panel-closed';\r\n \r\n useEffect(() => {\r\n setOpen(expanded);\r\n }, [expanded !== undefined && expanded !== open]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setTimeout(function() {\r\n setOverflow(true);\r\n }, 300);\r\n }\r\n setOverflow(false);\r\n }, [open]);\r\n\r\n return (\r\n <div className=\"expansion-field\">\r\n <div className={overflow ? `${expansionPanelOpen} overflow` : expansionPanelOpen}>\r\n <div className=\"main-content\">{children[1]}</div>\r\n </div>\r\n {React.cloneElement(children[0], {\r\n clickHandler: () => {\r\n setOpen(!open);\r\n onChangeExpanded && onChangeExpanded();\r\n },\r\n open: open,\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\ntype ExpansionFieldTitleProps = {\r\n label: [string] | [string, string];\r\n clickHandler?: () => void;\r\n open?: boolean;\r\n};\r\n\r\nexport const ExpansionFieldTitle = (\r\n props: ExpansionFieldTitleProps & HTMLAttributes<HTMLButtonElement>\r\n): JSX.Element => {\r\n const handler = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>): void => {\r\n event.preventDefault();\r\n props.clickHandler();\r\n };\r\n\r\n return (\r\n <button className=\"expansion-field-title\" onClick={handler} aria-expanded={props.open}>\r\n <span className={props.open ? 'panel-icon expanded' : 'panel-icon'}>\r\n {props.open ? <RemoveIcon /> : <AddIcon fontSize=\"large\" />}\r\n </span>\r\n <span>{props.open ? last(props.label) : head(props.label)}</span>\r\n </button>\r\n );\r\n};\r\n\r\nexport const ExpansionFieldContent = (props: PropsWithChildren<{}>): JSX.Element => {\r\n return <>{props.children}</>;\r\n};","import { useSelector } from 'react-redux';\r\nimport { Carnivore } from '../../constants/carnivore';\r\nimport { CarnivoreDamage } from '../../constants/carnivoreDamage';\r\nimport { Observations } from '../../constants/observations';\r\nimport { useLanguage } from '../../i18n';\r\nimport { ApplicationState } from '../../store';\r\nimport { Evaluation } from '../../constants/evaluation';\r\n\r\nexport type Listobject = {\r\n id: number;\r\n label: string;\r\n // For list items that need the possibility to be disabled\r\n canBeDisabled?: boolean;\r\n}\r\n\r\nexport type ListobjectWithHeader = {\r\n header: string;\r\n list: Listobject[];\r\n groupState: number[];\r\n stateArrayName: string;\r\n}\r\n\r\ntype filterList = {\r\n mainCarnivore: Listobject[];\r\n otherCarnivore: Listobject[];\r\n carnivoreDamages: Listobject[];\r\n evaluation: Listobject[];\r\n observations: Listobject[];\r\n}\r\n\r\ntype FilterListsWithHeader = {\r\n carnivoreDamages: ListobjectWithHeader;\r\n observations: ListobjectWithHeader;\r\n registrationEvaluation: ListobjectWithHeader;\r\n}\r\n\r\nexport default function FilterLists(): filterList {\r\n const l = useLanguage();\r\n const mainCarnivore = [\r\n {\r\n id: Carnivore.Wolf,\r\n label: l('carnivore.wolf'),\r\n },\r\n {\r\n id: Carnivore.Bear,\r\n label: l('carnivore.bear'),\r\n },\r\n {\r\n id: Carnivore.Lynx,\r\n label: l('carnivore.lynx'),\r\n },\r\n {\r\n id: Carnivore.Wolverine,\r\n label: l('carnivore.wolverine'),\r\n },\r\n ];\r\n const otherCarnivore = [\r\n {\r\n id: Carnivore.Eagle,\r\n label: l('filterlist.goldenEagle'),\r\n },\r\n {\r\n id: Carnivore.UnknownProtected,\r\n label: l('filterlist.unknownProtected'),\r\n },\r\n ];\r\n\r\n const carnivoreDamages = [\r\n { id: CarnivoreDamage.Sheep, label: l('carnivoreDamage.sheep')},\r\n { id: CarnivoreDamage.Reindeer, label: l('carnivoreDamage.reindeer')},\r\n { id: CarnivoreDamage.Dog, label: l('carnivoreDamage.dog')},\r\n { id: CarnivoreDamage.Goat, label: l('carnivoreDamage.goat')},\r\n { id: CarnivoreDamage.Cattle, label: l('carnivoreDamage.cattle')},\r\n ];\r\n\r\n const evaluation = [\r\n { id: Evaluation.Documented, label: l('evaluation.documented')},\r\n { id: Evaluation.AssessedSure, label: l('evaluation.assessedSure')},\r\n { id: Evaluation.Unsure, label: l('evaluation.unsure')},\r\n { id: Evaluation.ErroneousReport, label: l('evaluation.erroneousReport')},\r\n ];\r\n\r\n const observations = [\r\n { id: Observations.DeadCarnivores, label: l('observationsFilterList.deadCarnivores')},\r\n { id: Observations.VisualObservation, label: l('observationsFilterList.visualObservation')},\r\n { id: Observations.Footprint, label: l('observationsFilterList.footprint')},\r\n { id: Observations.AnalysedDna, label: l('observationsFilterList.analysedDna'), canBeDisabled: true },\r\n { id: Observations.UnanalysedDna, label: l('observationsFilterList.unanalysedDna'), canBeDisabled: true },\r\n ];\r\n\r\n return {\r\n mainCarnivore,\r\n otherCarnivore,\r\n carnivoreDamages,\r\n evaluation: evaluation,\r\n observations,\r\n };\r\n}\r\n\r\nexport function GroupedFilterLists(): FilterListsWithHeader {\r\n const searchFilterState = useSelector((state: ApplicationState) => state.searchFilter.searchFilter);\r\n const filterList = FilterLists();\r\n const l = useLanguage();\r\n\r\n const observation: ListobjectWithHeader = {\r\n header: l('filterbar.observation'),\r\n list: filterList.observations,\r\n groupState: searchFilterState.Observation,\r\n stateArrayName: 'Observation',\r\n };\r\n\r\n const damagesAfterCarnivore: ListobjectWithHeader = {\r\n header: l('filterbar.carnivoreDamage'),\r\n list: filterList.carnivoreDamages,\r\n groupState: searchFilterState.CarnivoreDamage,\r\n stateArrayName: 'CarnivoreDamage',\r\n };\r\n\r\n const evaluation: ListobjectWithHeader = {\r\n header: l('filterbar.documented'),\r\n list: filterList.evaluation,\r\n groupState: searchFilterState.Evaluation,\r\n stateArrayName: 'Evaluation',\r\n };\r\n const registrationEvaluation = evaluation;\r\n const observations = observation;\r\n const carnivoreDamages = damagesAfterCarnivore;\r\n\r\n return {\r\n carnivoreDamages,\r\n observations,\r\n registrationEvaluation,\r\n };\r\n}\r\n","import React, {ChangeEvent, ReactElement} from 'react';\r\nimport {ExpansionField, ExpansionFieldContent, ExpansionFieldTitle} from '../expansionField/expansionField';\r\nimport FilterLists from '../filterbar/filterLists';\r\nimport {ADD_FILTERLISTELEMENT, REMOVE_FILTERLISTELEMENT} from '../../store/searchfilter/types';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {ToggleFilterListElementOgSok} from '../../store/searchfilter/action';\r\nimport {useLanguage} from '../../i18n';\r\nimport {ToggleSwitch} from '../toggleSwitch/toggleSwitch';\r\nimport './carnivoreFilter.scss';\r\n\r\nexport function CarnivoreFilter(): ReactElement {\r\n const { mainCarnivore, otherCarnivore } = FilterLists();\r\n const carnivoreFilter = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.Carnivore);\r\n const toggleCarnivoreElements = useActionCreator(ToggleFilterListElementOgSok);\r\n const l = useLanguage();\r\n function handleToggle(id: number, selected: boolean, sort: string): (e: ChangeEvent<HTMLInputElement>) => void {\r\n return (e: ChangeEvent<HTMLInputElement>) => {\r\n toggleCarnivoreElements(selected ? REMOVE_FILTERLISTELEMENT : ADD_FILTERLISTELEMENT, sort, id);\r\n e.preventDefault();\r\n };\r\n }\r\n \r\n return (\r\n <div className=\"carnivore-filter\">\r\n <h3>{l('carnivoreFilter.carnivore')}</h3>\r\n <div className=\"main-carnivore-box\" id=\"carnivoreFilter\">\r\n {mainCarnivore\r\n .sort((obj1, obj2) => obj1.label.localeCompare(obj2.label))\r\n .map(\r\n (carnivore, i): JSX.Element => {\r\n const selected = carnivoreFilter.includes(carnivore.id);\r\n return (\r\n <div key={i} className=\"switch-frame\">\r\n <ToggleSwitch\r\n id={`carnivore-filter-${carnivore.label}`}\r\n label={carnivore.label}\r\n checked={selected}\r\n onChange={handleToggle(carnivore.id, selected, 'Carnivore')}/>\r\n </div>\r\n );\r\n }\r\n )}\r\n\r\n </div>\r\n <ExpansionField>\r\n <ExpansionFieldTitle label={[l('expandableList.showMore'), l('expandableList.showLess')]} />\r\n <ExpansionFieldContent >\r\n <div className=\"carnivore-switch-box\">\r\n {otherCarnivore\r\n .map(\r\n (carnivore, i): ReactElement => {\r\n const selected = carnivoreFilter.includes(carnivore.id);\r\n return (\r\n <div key={i} className=\"switch-frame\">\r\n <ToggleSwitch \r\n id={`carnivore-filter-${carnivore.label}`}\r\n label={carnivore.label}\r\n checked={selected} \r\n onChange={handleToggle(carnivore.id, selected, 'Carnivore')}/>\r\n </div>\r\n );\r\n }\r\n )}\r\n </div>\r\n </ExpansionFieldContent>\r\n </ExpansionField>\r\n </div>\r\n );\r\n}\r\n","import React, {ChangeEvent} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useLanguage, useLanguageTemplate} from '../../i18n';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport './dateFilter.scss';\r\nimport './mdInputComponent.scss';\r\nimport {DatePreset} from './dateFilter.types';\r\nimport {currentDatePreset, dateIsBetween, isValidDate, subtractDays, subtractYears} from './dateFilter.util';\r\nimport {dateToISOString, formatDateStringToLocaleString} from '../../helpers';\r\nimport {ExpansionField, ExpansionFieldContent, ExpansionFieldTitle} from '../expansionField/expansionField';\r\nimport {UpdateBothDatesAndSearch, UpdateDateFilter, UpdateFilterElement} from '../../store/searchfilter/action';\r\nimport {PresetButton} from '../themeButtton/themeButton';\r\nimport {isAfter, isBefore} from \"date-fns\";\r\nimport {MdInput} from '@miljodirektoratet/md-react';\r\n\r\nexport default function DateFilter(): JSX.Element {\r\n const l = useLanguage();\r\n const lt = useLanguageTemplate();\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n const fromDate = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.FromDate);\r\n const toDate = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.ToDate);\r\n const minDate = \"1980-01-01\";\r\n const maxDate = \"2099-12-31\";\r\n const updateBothDates = useActionCreator(UpdateBothDatesAndSearch);\r\n const updateDate = useActionCreator(UpdateDateFilter);\r\n const updateFilter = useActionCreator(UpdateFilterElement);\r\n const ButtonList = [\r\n { id: DatePreset.LastSevenDays, label: l('dateLabel.lastWeek')},\r\n { id: DatePreset.LastMonth, label: l('dateLabel.lastMonth')},\r\n { id: DatePreset.ThisYear, label: l('dateLabel.lastYear')},\r\n ];\r\n const today = dateToISOString(new Date());\r\n \r\n function setDatePreset(id: DatePreset): void {\r\n if (id === currentDatePreset(fromDate, toDate, today)) {\r\n return;\r\n }\r\n switch (id) {\r\n case DatePreset.LastSevenDays:\r\n updateBothDates(subtractDays(today, 7), today);\r\n break;\r\n case DatePreset.LastMonth:\r\n updateBothDates(subtractDays(today, 30), today);\r\n break;\r\n case DatePreset.ThisYear:\r\n updateBothDates(subtractYears(today, 1), today);\r\n break;\r\n }\r\n }\r\n\r\n function handleToDateChange(event: ChangeEvent<HTMLInputElement>): void {\r\n const newToDate = event.target.value;\r\n \r\n if (!isValidDate(newToDate)) return;\r\n\r\n if (dateIsBetween(newToDate, minDate, maxDate)) {\r\n updateDate('ToDate', newToDate);\r\n } else {\r\n updateFilter('ToDate', newToDate);\r\n }\r\n\r\n }\r\n\r\n function handleFromDateChange(event: ChangeEvent<HTMLInputElement>): void {\r\n const newFromDate = event.target.value;\r\n \r\n if (!isValidDate(newFromDate)) return;\r\n \r\n if (dateIsBetween(newFromDate, minDate, toDate)) {\r\n updateDate('FromDate', newFromDate);\r\n } else {\r\n updateFilter('FromDate', newFromDate);\r\n }\r\n\r\n }\r\n\r\n const isFromDateInvalid = !isValidDate(fromDate) || (isValidDate(toDate) && !dateIsBetween(fromDate, minDate, toDate));\r\n const isToDateInvalid = !isValidDate(toDate) || (isValidDate(fromDate) && !dateIsBetween(toDate, fromDate, maxDate));\r\n\r\n function errorTextToDate(): string {\r\n if (!isValidDate(toDate)){\r\n return l('dateLabel.invalidDate');\r\n }\r\n else if (isBefore(toDate, fromDate)) {\r\n return l('dateLabel.invalidToDate');\r\n }\r\n else if (isAfter(toDate, maxDate)) {\r\n return lt('dateLabel.dateMustBeBefore', \r\n {date: formatDateStringToLocaleString(maxDate, language)});\r\n }\r\n\r\n // Unknown error\r\n return l('error.oida');\r\n }\r\n\r\n function errorTextFromDate(): string {\r\n if (!isValidDate(fromDate)){\r\n return l('dateLabel.invalidDate');\r\n }\r\n else if (isBefore(fromDate, minDate)) {\r\n return lt('dateLabel.dateMustBeAfter', \r\n {date: formatDateStringToLocaleString(minDate, language)});\r\n }\r\n else if (isAfter(fromDate, toDate)) {\r\n return l('dateLabel.invalidFromDate');\r\n }\r\n \r\n // Unknown error\r\n return l('error.oida');\r\n }\r\n\r\n return (\r\n <div className=\"date-filter\">\r\n <h3>{l('datePicker.time')}</h3>\r\n <div className=\"presets-button-group\">\r\n {ButtonList.map((btn, i) => (\r\n <PresetButton\r\n key={btn.id}\r\n selected={currentDatePreset(fromDate, toDate, today) === btn.id}\r\n onClick={() => setDatePreset(btn.id)}\r\n >\r\n <span>{btn.label}</span>\r\n </PresetButton>\r\n ))}\r\n </div>\r\n\r\n <ExpansionField>\r\n <ExpansionFieldTitle label={[l('dateLabel.chooseDate')]} />\r\n <ExpansionFieldContent>\r\n <MdInput\r\n value={fromDate}\r\n label={l('dateLabel.from')}\r\n size=\"normal\"\r\n type=\"date\"\r\n max={toDate}\r\n min={minDate}\r\n errorText={errorTextFromDate()}\r\n error={isFromDateInvalid}\r\n outerWrapperClass={'date-picker-wrapper'}\r\n onChange={handleFromDateChange}\r\n id=\"fromDate\"\r\n />\r\n <MdInput\r\n value={toDate}\r\n label={l('dateLabel.to')}\r\n size=\"normal\"\r\n type=\"date\"\r\n max={maxDate}\r\n min={fromDate}\r\n errorText={errorTextToDate()}\r\n error={isToDateInvalid}\r\n outerWrapperClass={'date-picker-wrapper'}\r\n onChange={handleToDateChange}\r\n id=\"toDate\"\r\n />\r\n </ExpansionFieldContent>\r\n </ExpansionField>\r\n </div>\r\n );\r\n}\r\n","import pick from 'ramda/es/pick';\r\nimport { AreaFilter } from '../../services/areaService';\r\nimport keys from 'ramda/es/keys';\r\nimport { LocationType } from '../../constants/locationType';\r\nimport {Area} from \"../../model/area/area\";\r\n\r\nexport function createLocationString(areas: Area[], defaultString: string): string {\r\n let places = '';\r\n if (areas === null) {\r\n places = defaultString;\r\n } else if (areas.length > 0) {\r\n areas.map(o => {\r\n if (places === '') {\r\n places = o.label;\r\n } else {\r\n places = places.concat(`, ${o.label}`);\r\n }\r\n });\r\n }\r\n return places;\r\n}\r\n\r\nexport const containsAll = (mainArray: number[], subArray: number[]) => subArray.every(i => mainArray.includes(i));\r\n\r\nexport const searchFilterToAreaSearchFilter = pick(['Country', 'County', 'Municipality', 'Region']);\r\n\r\nexport const locationIDsNotInAreaObjects = (filter: AreaFilter, areas: Area[]): boolean => {\r\n return keys(filter).some(\r\n type =>\r\n !filter[type].every(value =>\r\n areas\r\n .filter(area => area.locationType === LocationType[type])\r\n .some(area => area.value === value)\r\n )\r\n );\r\n};\r\n","import React, { PropsWithChildren, ReactChild, ReactElement, useState, HTMLAttributes, useEffect } from 'react';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport classnames from 'classnames';\r\nimport './expansionPanel.scss';\r\n\r\ntype CollapseProps = {\r\n children: [ReactElement, ReactChild];\r\n expanded?: boolean;\r\n onChangeExpanded?: () => void;\r\n theme?: 'light' | 'dark';\r\n};\r\n\r\nexport function ExpansionPanel({\r\n children,\r\n expanded,\r\n className,\r\n onChangeExpanded,\r\n theme\r\n}: CollapseProps & HTMLAttributes<HTMLDivElement>): JSX.Element {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const [overflow, setOverflow] = useState<boolean>(false);\r\n\r\n const expansionPanelClass = classnames(className, theme, 'expansion-panel');\r\n const expansionPanelOpen = open ? 'panel-open' : 'panel-closed';\r\n useEffect(() => {\r\n setOpen(expanded);\r\n }, [expanded !== undefined && expanded !== open]);\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setTimeout(function() {\r\n setOverflow(true);\r\n }, 300);\r\n }\r\n setOverflow(false);\r\n }, [open]);\r\n\r\n return (\r\n <div className={expansionPanelClass}>\r\n {React.cloneElement(children[0], {\r\n clickHandler: () => {\r\n setOpen(!open);\r\n onChangeExpanded && onChangeExpanded();\r\n },\r\n open: open,\r\n })}\r\n <div className={overflow ? `${expansionPanelOpen} overflow` : expansionPanelOpen}>\r\n <div className=\"panel-content\">{children[1]}</div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nExpansionPanel.defaultProps = {\r\n theme: 'light'\r\n}\r\n\r\ntype CollapseTitleProps = {\r\n clickHandler?: () => void;\r\n open?: boolean;\r\n theme?: 'light' | 'dark';\r\n\r\n};\r\n\r\nexport const ExpansionPanelTitle = (\r\n props: PropsWithChildren<CollapseTitleProps> & HTMLAttributes<HTMLButtonElement>\r\n): JSX.Element => {\r\n const titleClass = classnames(props.className, props.theme, 'expansion-panel-title');\r\n const handler = (event): void => {\r\n event.preventDefault();\r\n props.clickHandler();\r\n };\r\n\r\n return (\r\n <button className={titleClass} onClick={handler} aria-expanded={props.open}>\r\n <span>{props.children}</span>\r\n <span className={props.open ? 'icon expanded' : 'icon'}>\r\n <ExpandMoreIcon fontSize=\"large\" />\r\n </span>\r\n </button>\r\n );\r\n};\r\n\r\nExpansionPanelTitle.defaultProps = {\r\n theme: 'light'\r\n}\r\n\r\nexport const ExpansionPanelContent = (props: PropsWithChildren<{}>): JSX.Element => {\r\n return <>{props.children}</>;\r\n};","import React, {ReactElement, Fragment} from 'react';\r\nimport { useLanguage } from '../../i18n';\r\nimport { ADD_FILTERLISTELEMENT, REMOVE_FILTERLISTELEMENT } from '../../store/searchfilter/types';\r\nimport { CheckboxWrapper } from '../checkbox/checkbox';\r\nimport { ListobjectWithHeader} from '../filterbar/filterLists';\r\nimport './checkboxList.scss';\r\nimport { LinkButton } from '../themeButtton/themeButton';\r\nimport {useActionCreator} from '../../store';\r\nimport {DeSelectAllAndSearch, SelectAllAndSearch, ToggleFilterListElementOgSok} from '../../store/searchfilter/action';\r\n\r\ntype CheckboxListProps = {\r\n checkboxList: ListobjectWithHeader;\r\n disableBoxes?: boolean;\r\n}\r\n\r\nexport function CheckboxList(props: CheckboxListProps): ReactElement {\r\n const l = useLanguage();\r\n\r\n const selectAll = useActionCreator(SelectAllAndSearch);\r\n const deselectAll = useActionCreator(DeSelectAllAndSearch);\r\n const toggleElement = useActionCreator(ToggleFilterListElementOgSok);\r\n function handleToggle(id: number, selected: boolean, sort: string): void {\r\n toggleElement(selected ? REMOVE_FILTERLISTELEMENT : ADD_FILTERLISTELEMENT, sort, id);\r\n }\r\n return (\r\n <div className=\"expansionpanel-mobile\">\r\n <div>\r\n <LinkButton\r\n className={'check-all-button'}\r\n onClick={() =>\r\n selectAll(props.checkboxList.stateArrayName, props.checkboxList.list.map(item => item.id))\r\n }\r\n >\r\n {l('button.selectAll')}\r\n </LinkButton>\r\n <LinkButton\r\n className={'check-all-button'}\r\n onClick={() => deselectAll(props.checkboxList.stateArrayName)}\r\n >\r\n {l('button.selectNone')}\r\n </LinkButton>\r\n </div>\r\n <div className={props.checkboxList.list.length > 6 ? 'checkbox-content double' : 'checkbox-content'}>\r\n {props.checkboxList.list.map(\r\n (listItem, i): JSX.Element => {\r\n let selected = props.checkboxList.groupState.includes(listItem.id);\r\n \r\n // Disable checkboxes if the list item can be disabled and a trigger, disableBoxes, is set to true\r\n const disable = props.disableBoxes && listItem.canBeDisabled;\r\n return (\r\n <Fragment key={i}>\r\n {!disable && (\r\n <CheckboxWrapper\r\n label={listItem.label}\r\n onChange={(): void =>\r\n handleToggle(listItem.id, selected, props.checkboxList.stateArrayName)\r\n }\r\n selected={selected}\r\n />\r\n )}\r\n </Fragment>\r\n );\r\n }\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, {ReactElement, useState} from 'react';\r\nimport {useLanguage} from '../../i18n';\r\nimport {GroupedFilterLists,} from '../filterbar/filterLists';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {useSelector} from 'react-redux';\r\nimport {containsAll} from '../searchfilter/searchfilter.utils';\r\nimport {otherCarnivoresArray} from '../../constants/carnivore';\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from '../expansionPanel/expansionPanel';\r\nimport {CheckboxList} from '../checkboxList/checkboxList';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport {NavLink} from 'react-router-dom';\r\nimport {PresetButton} from '../themeButtton/themeButton';\r\nimport {UpdateOffspringElementAndSearch} from '../../store/searchfilter/action';\r\nimport {Language} from '../../constants/language';\r\n\r\nexport function RegistrationsFilter(): ReactElement {\r\n const [keyOpen, setKeyOpen] = useState<number>(null);\r\n const l = useLanguage();\r\n const { observations, carnivoreDamages } = GroupedFilterLists();\r\n const carnivoreFilter = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.Carnivore);\r\n const offspringFilter = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.Offspring);\r\n const showObservationFilter = !containsAll(otherCarnivoresArray, carnivoreFilter);\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n const UpdateFilterElement = useActionCreator(UpdateOffspringElementAndSearch);\r\n function toggleOffspring(selected: boolean): void {\r\n if(offspringFilter !== selected) {\r\n UpdateFilterElement(selected);\r\n }\r\n }\r\n \r\n return (\r\n <div className=\"registration-filter\">\r\n <h3>{l('searchfilter.registrations')}</h3>\r\n \r\n {/* Observations filter */}\r\n {showObservationFilter && \r\n <>\r\n <ExpansionPanel\r\n className=\"searchfilter-expansion-panel\"\r\n expanded={keyOpen === 1}\r\n onChangeExpanded={() => setKeyOpen(keyOpen === 1 ? null : 1)}\r\n >\r\n <ExpansionPanelTitle>{observations.header}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <div className={language === Language.SV ? 'yngling-button-group svensk' : 'yngling-button-group'}>\r\n <PresetButton\r\n selected={!offspringFilter}\r\n onClick={() => toggleOffspring(false,)}\r\n >\r\n <span>{l('observationsFilter.all')}</span>\r\n </PresetButton>\r\n\r\n <PresetButton\r\n selected={offspringFilter}\r\n onClick={() => toggleOffspring(true)}\r\n >\r\n <span>{l('observationsFilter.onlyOffspring')}</span>\r\n </PresetButton>\r\n </div>\r\n <div className=\"observations-list\">\r\n <h3>{l('observations')}</h3>\r\n <CheckboxList checkboxList={observations} disableBoxes={offspringFilter}/>\r\n </div>\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n \r\n </>\r\n }\r\n \r\n {/* Carnivore damages filter */}\r\n <ExpansionPanel\r\n className=\"searchfilter-expansion-panel\"\r\n expanded={keyOpen === 2}\r\n onChangeExpanded={() => setKeyOpen(keyOpen === 2 ? null : 2)}\r\n >\r\n <ExpansionPanelTitle>{carnivoreDamages.header}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <div className=\"info-message\">\r\n <InfoIcon aria-hidden={true} />\r\n <span>\r\n {l('carnivoreDamage.infoMessage')}\r\n <NavLink to=\"/om\">\r\n {l('menu.about')}\r\n </NavLink>. {l('carnivoreDamage.infoMessage2')}\r\n <NavLink to=\"/rapport/rovviltskade\">\r\n {l('menu.reportRovviltskade')}\r\n </NavLink>.\r\n </span>\r\n </div>\r\n <CheckboxList checkboxList={carnivoreDamages}/>\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n \r\n </div>\r\n );\r\n}\r\n\r\n\r\n","export enum AreaSearchTypes {\r\n all = 0,\r\n norway = 1,\r\n reindeer = 2,\r\n}\r\n","export enum Country {\r\n Norway = 1,\r\n Sweden = 2,\r\n Finland = 5\r\n}\r\n","import { LocationType } from '../constants/locationType';\r\nimport {Country} from '../constants/country';\r\nimport {Area} from '../model/area/area';\r\nimport {ReindeerLocationType} from '../constants/reindeerLocationType';\r\nimport {ReindeerLocation} from '../model/area/reindeerLocation';\r\n\r\nexport type AreaFilter = {\r\n Country: string[];\r\n Region: string[];\r\n County: string[];\r\n Municipality: string[];\r\n};\r\n\r\nexport type AreaSearchResult = {\r\n label: string,\r\n options: any[]\r\n}\r\n\r\nexport default {\r\n getAllAreas(input: string) {\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n });\r\n \r\n const req: RequestInit = {\r\n method: 'GET',\r\n headers: headers,\r\n };\r\n \r\n return fetch(`/api/areaSearch?searchString=${input}`, req)\r\n .then(response => response.json())\r\n .then((res: Area[]) => {\r\n return [\r\n { label: 'Land', options: res.filter(area => area.locationType === LocationType.Country) },\r\n \r\n { label: 'Regioner i Norge', options: res.filter(area => area.locationType === LocationType.Region && area.countryID === Country.Norway) },\r\n { label: 'Fylker i Norge', options: res.filter(area => area.locationType === LocationType.County && area.countryID === Country.Norway) },\r\n { label: 'Kommuner i Norge', options: res.filter(area => area.locationType === LocationType.Municipality && area.countryID === Country.Norway) },\r\n \r\n { label: 'Regioner i Sverige', options: res.filter(area => area.locationType === LocationType.Region && area.countryID === Country.Sweden)},\r\n { label: 'Län i Sverige', options: res.filter(area => area.locationType === LocationType.County && area.countryID === Country.Sweden) },\r\n { label: 'Kommuner i Sverige', options: res.filter(area => area.locationType === LocationType.Municipality && area.countryID === Country.Sweden) },\r\n\r\n { label: 'Maakunnat Suomessa', options: res.filter(area => area.locationType === LocationType.County && area.countryID === Country.Finland) },\r\n { label: 'Kunnat Suomessa', options: res.filter(area => area.locationType === LocationType.Municipality && area.countryID === Country.Finland) },\r\n ];\r\n });\r\n },\r\n\r\n getNorwayAreas(input: string) {\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n });\r\n\r\n const req: RequestInit = {\r\n method: 'GET',\r\n headers: headers,\r\n };\r\n return fetch(`/api/areaSearch?searchString=${input}`, req)\r\n .then(response => response.json())\r\n .then((res: Area[]) => {\r\n // filtrer bort det som ikke har countryID Norge\r\n const norwegianAreas = res.filter(area => area.countryID === Country.Norway);\r\n return [\r\n { label: 'Land', options: norwegianAreas.filter(area => area.locationType === LocationType.Country) },\r\n { label: 'Region', options: norwegianAreas.filter(area => area.locationType === LocationType.Region) },\r\n { label: 'Fylke', options: norwegianAreas.filter(area => area.locationType === LocationType.County) },\r\n { label: 'Kommune', options: norwegianAreas.filter(area => area.locationType === LocationType.Municipality) },\r\n ];\r\n });\r\n },\r\n getReindeerAreas(input: string) {\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n });\r\n\r\n const req: RequestInit = {\r\n method: 'GET',\r\n headers: headers,\r\n };\r\n return fetch(`/api/reindeerAreaSearch?searchString=${input}`, req)\r\n .then(response => response.json())\r\n .then((res: ReindeerLocation[]) => {\r\n return [\r\n { label: 'Land', options: res.filter(area => area.locationType === ReindeerLocationType.Country) },\r\n { label: 'Reinbeiteomrade', options: res.filter(area => area.locationType === ReindeerLocationType.Reinbeiteomrade),},\r\n { label: 'Reinbeitedistrikt', options: res.filter(area => area.locationType === ReindeerLocationType.Reinbeitedistrikt),\r\n },\r\n ];\r\n });\r\n },\r\n\r\n getAreasFromID(areafilter: AreaFilter, languageCode: string): Promise<Area[]> {\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n });\r\n\r\n const body = {\r\n LanguageCode: languageCode,\r\n AreaFilter: areafilter,\r\n };\r\n\r\n const areaSearch = {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(body),\r\n };\r\n\r\n return fetch('api/areatextsearch', { ...areaSearch }).then(response => response.json());\r\n },\r\n};\r\n","/* eslint-disable react/prop-types */\r\nimport {Chip, MenuItem, Paper, TextField, Theme, Typography, useTheme} from '@material-ui/core';\r\nimport {BaseTextFieldProps} from '@material-ui/core/TextField';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport {createStyles, makeStyles} from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport {default as React, HTMLAttributes, useState} from 'react';\r\nimport AsyncSelect from 'react-select/async';\r\nimport {ValueContainerProps} from 'react-select/src/components/containers';\r\nimport {ControlProps} from 'react-select/src/components/Control';\r\nimport {MenuProps, NoticeProps} from 'react-select/src/components/Menu';\r\nimport {MultiValueProps} from 'react-select/src/components/MultiValue';\r\nimport {ActionMeta} from 'react-select/src/types';\r\nimport {AreaSearchTypes} from '../../constants/areasearchTypes';\r\nimport {useLanguage} from '../../i18n';\r\nimport areaService, {AreaSearchResult} from '../../services/areaService';\r\nimport './searchableSelect.scss';\r\nimport {IconButton} from '../themeButtton/themeButton';\r\nimport {Area} from '../../model/area/area';\r\nimport {OptionProps} from 'react-select/src/components/Option';\r\nimport {ReindeerLocation} from '../../model/area/reindeerLocation';\r\nimport {SingleValueProps} from 'react-select/src/components/SingleValue';\r\n\r\ntype Location = Area | ReindeerLocation;\r\n\r\ntype OwnProps = {\r\n areas: Location[]\r\n onChange: (selectedOption: Location | Location[], action: ActionMeta<Location>) => void;\r\n placeholder: string;\r\n noOptionsMessage: string;\r\n filterMenu: boolean;\r\n isMultiSelect: boolean;\r\n type: AreaSearchTypes;\r\n};\r\n\r\nfunction areaSearch(input: string, type: AreaSearchTypes): Promise<AreaSearchResult[]> {\r\n switch (type) {\r\n case AreaSearchTypes.all:\r\n return areaService.getAllAreas(input);\r\n case AreaSearchTypes.norway:\r\n return areaService.getNorwayAreas(input);\r\n case AreaSearchTypes.reindeer:\r\n return areaService.getReindeerAreas(input);\r\n default:\r\n throw Error(`Unhandled case: ${type}`);\r\n }\r\n}\r\n\r\n/**Hentet fra https://material-ui.com/components/autocomplete/#react-select */\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n border: `1px solid ${theme.palette.grey[400]}`,\r\n minHeight: '44px',\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n rootMobile: {\r\n flexGrow: 1,\r\n minWidth: 290,\r\n },\r\n input: {\r\n display: 'flex',\r\n padding: 0,\r\n height: 'auto',\r\n borderBottom: 0,\r\n underline: 0,\r\n },\r\n valueContainer: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n flex: 1,\r\n alignItems: 'center',\r\n overflow: 'hidden',\r\n minHeight: '42px',\r\n },\r\n singleValue: {\r\n fontSize: 16,\r\n maxWidth: '95%',\r\n padding: '8px 4px'\r\n },\r\n chip: {\r\n margin: theme.spacing(0.5, 0.25),\r\n backgroundColor: theme.palette.grey[300],\r\n '&:focus': {\r\n backgroundColor: theme.palette.grey[200],\r\n border: `2px solid ${theme.palette.grey[500]}`,\r\n },\r\n },\r\n noOptionsMessage: {\r\n padding: theme.spacing(1, 2),\r\n },\r\n paper: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n marginTop: '1px',\r\n left: '-38px',\r\n right: 0,\r\n },\r\n divider: {\r\n height: theme.spacing(2),\r\n },\r\n icon: {\r\n color: theme.palette.primary.main\r\n }\r\n })\r\n);\r\n\r\nfunction NoOptionsMessage(props: NoticeProps<Location, false>): JSX.Element {\r\n return (\r\n <Typography color=\"textSecondary\" className={props.selectProps.classes.noOptionsMessage} {...props.innerProps}>\r\n {props.children}\r\n </Typography>\r\n );\r\n}\r\n\r\ntype InputComponentProps = Pick<BaseTextFieldProps, 'inputRef'> & HTMLAttributes<HTMLDivElement>;\r\n\r\nfunction inputComponent({ inputRef, ...props }: InputComponentProps): JSX.Element {\r\n return <div ref={inputRef} {...props} />;\r\n}\r\n\r\nfunction Control(props: ControlProps<Location, true>): JSX.Element {\r\n const {\r\n children,\r\n innerProps,\r\n innerRef,\r\n selectProps: { classes, TextFieldProps },\r\n } = props;\r\n\r\n return (\r\n <TextField\r\n fullWidth\r\n InputProps={{\r\n inputComponent,\r\n inputProps: {\r\n className: classes.input,\r\n ref: innerRef,\r\n children,\r\n ...innerProps,\r\n },\r\n }}\r\n {...TextFieldProps}\r\n />\r\n );\r\n}\r\n\r\nfunction Option(props: OptionProps<Location, false>): JSX.Element {\r\n return (\r\n <MenuItem\r\n ref={props.innerRef}\r\n selected={props.isFocused}\r\n component=\"div\"\r\n style={{\r\n fontWeight: props.isSelected ? 'normal' : 'lighter',\r\n }}\r\n {...props.innerProps}\r\n >\r\n {props.children}\r\n </MenuItem>\r\n );\r\n}\r\n\r\nfunction ValueContainer(props: ValueContainerProps<Location, false>): JSX.Element {\r\n return <div className={props.selectProps.classes.valueContainer}>{props.children}</div>;\r\n}\r\n\r\nfunction SingleValue(props: SingleValueProps<Location>): JSX.Element {\r\n return (\r\n <Typography className={props.selectProps.classes.singleValue} {...props.innerProps}>\r\n {props.children}\r\n </Typography>\r\n );\r\n}\r\n\r\nfunction MultiValue(props: MultiValueProps<Location>): JSX.Element {\r\n return (\r\n <Chip\r\n tabIndex={0}\r\n label={props.children}\r\n className={props.selectProps.classes.chip}\r\n onDelete={props.removeProps.onClick}\r\n deleteIcon={<CancelIcon {...props.removeProps} />}\r\n />\r\n );\r\n}\r\n\r\nfunction Menu(props: MenuProps<Location, false>): JSX.Element {\r\n return (\r\n <Paper square className={props.selectProps.classes.paper} {...props.innerProps}>\r\n {props.children}\r\n </Paper>\r\n );\r\n}\r\n\r\nconst components = {\r\n Control,\r\n Menu,\r\n Option,\r\n MultiValue,\r\n NoOptionsMessage,\r\n SingleValue,\r\n ValueContainer,\r\n};\r\n\r\n/** Hentet slutt */\r\n\r\nexport default function AreaSearchableSelect(props: OwnProps): JSX.Element {\r\n const theme = useTheme();\r\n const [inputText, setInputText] = useState<string>('');\r\n const classes = useStyles({});\r\n const searchWrapperClass = classnames(classes.root, 'locationSearch');\r\n const iconClass = classnames(classes.icon, 'icon-button-wrapper');\r\n const [activeTimerId, setActiveTimerId] = useState<number>();\r\n const l = useLanguage();\r\n const selectStyles = {\r\n input: (base) => ({\r\n ...base,\r\n color: theme.palette.text.primary,\r\n margin: '0px',\r\n //position: 'absolute',\r\n '& input': {\r\n font: 'inherit',\r\n },\r\n }),\r\n };\r\n\r\n function getOptionsWithTimeout(input: string): Promise<AreaSearchResult[]> {\r\n clearTimeout(activeTimerId);\r\n return new Promise<void>(resolve => {\r\n const timer = window.setTimeout(function() {\r\n clear();\r\n resolve();\r\n }, 1000);\r\n setActiveTimerId(timer);\r\n }).then(() => {\r\n return areaSearch(input, props.type);\r\n });\r\n }\r\n\r\n function clear(): void {\r\n clearTimeout(activeTimerId);\r\n setActiveTimerId(activeTimerId);\r\n }\r\n \r\n return (\r\n <div className={searchWrapperClass}>\r\n <span className={iconClass} aria-hidden={true}>\r\n <SearchIcon />\r\n </span>\r\n <span className=\"locationSearch-label\">\r\n <AsyncSelect\r\n isClearable={true}\r\n key={props.type}\r\n styles={selectStyles}\r\n aria-label={l('ariaLabel.geographySearch')}\r\n classes={classes}\r\n inputId=\"react-select-location\"\r\n isMulti={props.isMultiSelect}\r\n classNamePrefix=\"searchable-select\"\r\n cacheOptions\r\n defaultOptions\r\n value={props.areas}\r\n inputValue={inputText}\r\n onInputChange={setInputText}\r\n className=\"searchable-select-container\"\r\n placeholder={props.placeholder}\r\n loadOptions={getOptionsWithTimeout}\r\n onChange={props.onChange}\r\n maxMenuHeight={250}\r\n components={components}\r\n noOptionsMessage={() => props.noOptionsMessage}\r\n />\r\n </span>\r\n </div>\r\n );\r\n}\r\n","import React, {ReactElement, useEffect} from \"react\";\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from \"../expansionPanel/expansionPanel\";\r\nimport AreaSearchableSelect from \"../searchableSelect/areaSearchableSelect\";\r\nimport {AreaSearchTypes} from \"../../constants/areasearchTypes\";\r\nimport {useLanguage} from \"../../i18n\";\r\nimport {\r\n ADD_LOCATIONLISTELEMENT,\r\n CLEAR_LOCATIONLISTELEMENTS,\r\n REMOVE_LOCATIONLISTELEMENT\r\n} from \"../../store/searchfilter/types\";\r\nimport {ApplicationState, useActionCreator} from \"../../store\";\r\nimport {ToggleLocationListElementAndSearch} from \"../../store/searchfilter/action\";\r\nimport {\r\n createLocationString,\r\n locationIDsNotInAreaObjects,\r\n searchFilterToAreaSearchFilter\r\n} from \"../searchfilter/searchfilter.utils\";\r\nimport areaService from \"../../services/areaService\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {Area} from \"../../model/area/area\";\r\nimport '../searchfilter/searchfilter.scss';\r\n\r\nexport function GeographyFilter(): ReactElement {\r\n const l = useLanguage();\r\n const locationToggle = useActionCreator(ToggleLocationListElementAndSearch);\r\n const searchFilter = useSelector((state: ApplicationState) => state.searchFilter.searchFilter);\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n const [areas, setAreas] = React.useState<Area[]>([]);\r\n const [locationText, setLocationText] = React.useState<string>(l('searchfilter.allAreas'));\r\n\r\n const createLocationTitle = (areas: Area[]): string =>\r\n createLocationString(areas, l('searchfilter.allAreas'));\r\n \r\n const onLocationChange = (selectedOption: Area[], action: any): void => {\r\n switch (action.action) {\r\n case 'select-option':\r\n setAreas(areas.concat(action.option));\r\n locationToggle(ADD_LOCATIONLISTELEMENT, action.option.locationType, action.option.value);\r\n setLocationText(createLocationTitle(selectedOption));\r\n break;\r\n case 'remove-value':\r\n setAreas(areas.filter(area => area.value !== action.removedValue.value));\r\n locationToggle(\r\n REMOVE_LOCATIONLISTELEMENT,\r\n action.removedValue.locationType,\r\n action.removedValue.value\r\n );\r\n setLocationText(createLocationTitle(selectedOption));\r\n break;\r\n\r\n case 'clear':\r\n setAreas([]);\r\n locationToggle(CLEAR_LOCATIONLISTELEMENTS, null, null);\r\n setLocationText(l('searchfilter.allAreas'));\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const filter = searchFilterToAreaSearchFilter(searchFilter);\r\n if (locationIDsNotInAreaObjects(filter, areas)) {\r\n areaService\r\n .getAreasFromID(filter, language)\r\n .then((res) => {\r\n if (res.length > 0) {\r\n setAreas(res);\r\n setLocationText(createLocationTitle(res));\r\n }\r\n })\r\n // eslint-disable-next-line no-console\r\n .catch(error => console.error(error));\r\n }\r\n }, []);\r\n \r\n return (\r\n <div id=\"geography-filter\">\r\n <h3>{l('searchfilter.geography')}</h3>\r\n <ExpansionPanel className=\"searchfilter-expansion-panel\">\r\n <ExpansionPanelTitle>{locationText}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <div>\r\n <AreaSearchableSelect\r\n areas={areas}\r\n onChange={onLocationChange}\r\n placeholder={l('searchableSelect.locationInputPlaceholder')}\r\n noOptionsMessage={l('searchableSelect.noOptionsMessage')}\r\n filterMenu={true}\r\n isMultiSelect={true}\r\n type={AreaSearchTypes.all}\r\n />\r\n </div>\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n </div>\r\n )\r\n}\r\n","import React, {ReactElement} from \"react\";\r\nimport {useLanguage} from \"../../i18n\";\r\nimport {GroupedFilterLists} from \"../filterbar/filterLists\";\r\nimport {ApplicationState} from \"../../store\";\r\nimport {containsAll} from \"../searchfilter/searchfilter.utils\";\r\nimport {dnaObservations} from \"../../constants/observations\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from \"../expansionPanel/expansionPanel\";\r\nimport {CheckboxList} from \"../checkboxList/checkboxList\";\r\nimport {Evaluation} from \"../../constants/evaluation\";\r\nimport {getStringFromEnumNumber} from \"../tooltip/tooltip.util\";\r\n\r\nexport function EvaluationFilter(): ReactElement {\r\n const l = useLanguage();\r\n const { registrationEvaluation } = GroupedFilterLists();\r\n const searchFilter = useSelector((state: ApplicationState) => state.searchFilter.searchFilter);\r\n const evaluationFilterNeeded = searchFilter.CarnivoreDamage.length > 0 || !containsAll(dnaObservations, searchFilter.Observation);\r\n const evaluation = searchFilter.Evaluation;\r\n \r\n let title = '';\r\n if (evaluation.length > 0) {\r\n evaluation.sort((a, b) => a - b)\r\n .map((val, key) => {\r\n if (title === '') {\r\n title = l(`evaluation.title.${getStringFromEnumNumber(Evaluation, val)}`);\r\n } else if (key === evaluation.length -1 ) {\r\n title = title.concat(` & ${l(`evaluation.title.${getStringFromEnumNumber(Evaluation, val)}`).toLowerCase()}`);\r\n }\r\n else {\r\n title = title.concat(`, ${l(`evaluation.title.${getStringFromEnumNumber(Evaluation, val)}`).toLowerCase()}`);\r\n }\r\n });\r\n } else {\r\n title = l('evaluation.title.noneChecked');\r\n }\r\n \r\n return (\r\n <>\r\n {evaluationFilterNeeded &&\r\n <div id=\"evaluation-filter\">\r\n <h3>{l('filterbar.evaluation')}</h3>\r\n <ExpansionPanel className=\"searchfilter-expansion-panel\">\r\n <ExpansionPanelTitle>{title}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <CheckboxList checkboxList={registrationEvaluation} />\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n </div>\r\n }\r\n </>\r\n )\r\n}\r\n","import {useEffect, useState} from 'react';\r\n\r\nexport const useLoadingDots = (): string => {\r\n const [state, setState] = useState('');\r\n const [count, setCount] = useState(0);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setCount(count + 1);\r\n setState('.'.repeat((count % 4)));\r\n }, 500);\r\n\r\n return () => clearInterval(interval);\r\n });\r\n\r\n return state;\r\n};","import React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useLanguage} from '../../i18n';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {DeSelectAllAndSearch, SelectAllAndSearch,} from '../../store/searchfilter/action';\r\nimport {CheckboxWrapper} from '../checkbox/checkbox';\r\nimport Searchbar from '../searchbar/searchbar';\r\nimport './searchfilter.scss';\r\nimport {CarnivoreFilter} from '../carnivoreFilter/carnivoreFilter';\r\nimport {allCarnivoreArray} from '../../constants/carnivore';\r\nimport DateFilter from '../dateFilter/dateFilter';\r\nimport {RegistrationsFilter} from '../registrationsFilter/registrationsFilter';\r\nimport {GeographyFilter} from '../geographyFilter/geographyFilter';\r\nimport {EvaluationFilter} from '../evaluationFilter/evaluationFilter';\r\nimport {containsAll} from './searchfilter.utils';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\nimport {SkipFilters} from '../themeButtton/themeButton';\r\nimport {useLoadingDots} from '../../hooks/loadingDots';\r\nimport {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport classnames from 'classnames';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n helpMessage: {\r\n backgroundColor: theme.palette.secondary.main\r\n }\r\n })\r\n);\r\n\r\nexport function Searchfilter(): JSX.Element {\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const resultCount: number = useSelector((state: ApplicationState) => state.map.stedfesting.length);\r\n const carnivoreSelected =\r\n useSelector((state: ApplicationState) => state.searchFilter.searchFilter.Carnivore).length > 0;\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n const searchFilter = useSelector((state: ApplicationState) => state.searchFilter.searchFilter);\r\n const isLoading = useSelector((state: ApplicationState) => state.settings.isLoading);\r\n const deselectAll = useActionCreator(DeSelectAllAndSearch);\r\n const selectAll = useActionCreator(SelectAllAndSearch);\r\n const loadingDots = useLoadingDots();\r\n const helpMessageClass = classnames(classes.helpMessage, 'help-message-autosearch');\r\n\r\n const getSearchfilterHeader = (): string => {\r\n if (isLoading) {\r\n return `${l('searchresultList.loading')}${loadingDots}`;\r\n }\r\n return carnivoreSelected\r\n ? `${resultCount} ${l('searchresultList.hits')}`\r\n : l('searchfilter.selectCarnivore');\r\n };\r\n\r\n function ToggleAllMainCarnivore(): void {\r\n if (containsAll(searchFilter.Carnivore, allCarnivoreArray)) {\r\n // alle er valgt\r\n deselectAll('Carnivore');\r\n } else {\r\n selectAll('Carnivore', allCarnivoreArray);\r\n }\r\n }\r\n\r\n return (\r\n <main>\r\n <div className=\"searchfilter\">\r\n <h2 className=\"title\">{getSearchfilterHeader()}</h2>\r\n <p className={helpMessageClass}>{l('searchfilter.messageAutosearch')}</p>\r\n {mobileScreen && (\r\n <div className=\"checkbox-toggle-all-mobile\">\r\n <CheckboxWrapper\r\n label={l('filterbar.showAll')}\r\n selected={containsAll(searchFilter.Carnivore, allCarnivoreArray)}\r\n onChange={() => ToggleAllMainCarnivore()}\r\n />\r\n </div>\r\n )}\r\n\r\n <CarnivoreFilter/>\r\n {mobileScreen && (\r\n <div className=\"searchbar-mobile\">\r\n <Searchbar/>\r\n </div>\r\n )}\r\n\r\n {/* The filter panel appears when at least one carnivore is selected */}\r\n {carnivoreSelected && (\r\n <>\r\n <SkipFilters/>\r\n <DateFilter/>\r\n <RegistrationsFilter/>\r\n <GeographyFilter/>\r\n <EvaluationFilter/>\r\n </>\r\n )}\r\n </div>\r\n </main>\r\n );\r\n}\r\n\r\n","import {useLanguage} from \"../../i18n\";\r\nimport {LinkButton} from \"../themeButtton/themeButton\";\r\nimport React from \"react\";\r\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core\";\r\n\r\ntype NavigateProps = {\r\n offset: number;\r\n offsetStep: number;\r\n setOffset: (offset: number) => void;\r\n listLength: number;\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n sidepanel: {\r\n backgroundColor: theme.palette.common.white,\r\n height: '100%',\r\n overflow: 'auto',\r\n },\r\n header: {\r\n borderColor: theme.palette.secondary.dark,\r\n backgroundColor: theme.palette.common.white,\r\n },\r\n closeIcon: {\r\n padding: '10px',\r\n },\r\n footer: {\r\n borderTop: `1px solid ${theme.palette.secondary.dark}`,\r\n },\r\n navigateButton: {\r\n textDecoration: 'underline',\r\n },\r\n })\r\n);\r\n\r\nexport function NavigateSearchResult(props: NavigateProps): JSX.Element {\r\n const classes = useStyles({});\r\n const l = useLanguage();\r\n const handlePreviousItems = (): void => {\r\n if (props.offset > props.listLength) {\r\n props.setOffset(0);\r\n }\r\n if (props.offset > props.offsetStep) {\r\n props.setOffset(props.offset - props.offsetStep);\r\n }\r\n };\r\n const handleNextItems = (): void => {\r\n if (props.offset < props.listLength) {\r\n props.setOffset(props.offset + props.offsetStep);\r\n }\r\n };\r\n return (\r\n <>\r\n {props.listLength > props.offsetStep && (\r\n <div className=\"navigate\">\r\n <LinkButton\r\n className={classes.navigateButton}\r\n onClick={() => handlePreviousItems()}\r\n disabled={props.offset <= props.offsetStep}\r\n >\r\n {l('tooltip.previousPage')}\r\n </LinkButton>\r\n <span className=\"page-count\">{`${props.offset - (props.offsetStep - 1)} - ${Math.min(\r\n props.offset,\r\n props.listLength\r\n )} ${l('searchresultList.ofTotal')} ${props.listLength}`}</span>\r\n <LinkButton\r\n className={classes.navigateButton}\r\n onClick={() => handleNextItems()}\r\n disabled={props.offset > props.listLength}\r\n >\r\n {l('tooltip.nextPage')}\r\n </LinkButton>\r\n </div>)}\r\n </>\r\n );\r\n}\r\n","export enum OriginIndividual {\r\n Immigrant = 1,\r\n F1 = 2,\r\n Hybrid= 3,\r\n F2 = 4,\r\n Finsk = 5\r\n}\r\n","import {Individ} from \"../model/stedfesting/StedfestingTypes\";\r\nimport { IndividualData } from \"../components/searchresultList/searchresultTitle\";\r\n\r\nexport async function getIndividualData(individID: string): Promise<IndividualData> {\r\n const req = createRequest();\r\n const response = await fetch(`/api/individualData/${individID}`, req);\r\n if (response.ok) {\r\n return await response.json();\r\n }\r\n}\r\n\r\nfunction createRequest(): object {\r\n let headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n return {\r\n method: 'GET',\r\n headers: headers\r\n };\r\n}\r\n","import React, {ReactElement, useEffect, useState} from 'react';\r\nimport {useLanguage, useLanguageTemplate} from '../../i18n';\r\nimport {IconButton, SecondaryButton} from '../themeButtton/themeButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {SetSearchinput, UpdateSearchFilterAndSearch} from '../../store/searchfilter/action';\r\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\r\nimport {CloseSearchresultlist, RemoveIndivid, SetIndivid} from '../../store/sidePanel/action';\r\nimport {Individ, Stedfesting} from '../../model/stedfesting/StedfestingTypes';\r\nimport {isDNA, isDodeRovdyr, isRovviltobservasjon} from '../../model/stedfesting/Stedfesting';\r\nimport {getStringFromEnum} from '../tooltip/tooltip.util';\r\nimport {Carnivore} from '../../constants/carnivore';\r\nimport {useSelector} from 'react-redux';\r\nimport {OriginIndividual} from '../../constants/originIndividual';\r\nimport {Gender} from '../../constants/gender';\r\nimport {getIndividualData} from '../../services/individService';\r\nimport {isNil} from 'ramda';\r\n\r\ntype TitleProps = {\r\n title: string;\r\n}\r\n\r\nexport type IndividualData = {\r\n individID: string;\r\n individnavn: string;\r\n kjonnID: string;\r\n artsID: string;\r\n fodtRevir: string;\r\n opprinnelseID: string;\r\n}\r\n\r\nexport function ResultTitle(props: TitleProps): ReactElement {\r\n const l = useLanguage();\r\n const closeResultList = useActionCreator(CloseSearchresultlist);\r\n return (\r\n <div className=\"title\">\r\n <h2>{props.title}</h2>\r\n <IconButton onClick={closeResultList} aria-label={l('uu.close')}>\r\n <CloseIcon/>\r\n </IconButton>\r\n </div>\r\n );\r\n}\r\n\r\nexport function LoadingTitle(props: TitleProps): ReactElement {\r\n const l = useLanguage();\r\n const setSearchParameter = useActionCreator(UpdateSearchFilterAndSearch);\r\n const setSearchinput = useActionCreator(SetSearchinput);\r\n const closeResultList = useActionCreator(CloseSearchresultlist);\r\n const handleCloseSpecialSearch = (): void => {\r\n setSearchParameter({\r\n IndividualNameOrID: '',\r\n ID: [],\r\n Barcode: [],\r\n });\r\n setSearchinput('');\r\n closeResultList();\r\n };\r\n\r\n return (\r\n <div className={'loading-panel'}>\r\n <div className={'special-search-header'}>\r\n <SecondaryButton onClick={handleCloseSpecialSearch} className={'flex-button'}>\r\n <NavigateBeforeIcon className=\"arrow-left-icon\"/>\r\n <div>{`${l('searchresultList.backToSearch')}`}</div>\r\n </SecondaryButton>\r\n </div>\r\n <h2>{props.title}</h2>\r\n </div>\r\n );\r\n}\r\n\r\nexport const getIndividObjectFromStedfesting = (individSearchText: string, stedfesting: Stedfesting): Individ => {\r\n if (isDNA(stedfesting) || isDodeRovdyr(stedfesting)) {\r\n return stedfesting.individ && stedfesting.individ;\r\n } else if (isRovviltobservasjon(stedfesting)) {\r\n if (stedfesting.individ) {\r\n return stedfesting.individ.filter(obj => obj.individID === individSearchText)[0];\r\n }\r\n }\r\n return {individID: individSearchText, individnavn: ''};\r\n};\r\n\r\n\r\n\r\nexport function SpecialSearchTitle(): ReactElement {\r\n const l = useLanguage();\r\n const lt = useLanguageTemplate();\r\n\r\n // Actions from store\r\n const setSearchParameter = useActionCreator(UpdateSearchFilterAndSearch);\r\n const setSearchinput = useActionCreator(SetSearchinput);\r\n const closeResultList = useActionCreator(CloseSearchresultlist);\r\n const setIndivid = useActionCreator(SetIndivid);\r\n const clearIndivid = useActionCreator(RemoveIndivid);\r\n\r\n // Values from store\r\n const stedfestings = useSelector((state: ApplicationState) => state.map.stedfesting);\r\n const individSearchText = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.IndividualNameOrID);\r\n const barcode = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.Barcode);\r\n const id = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.ID);\r\n const individ = useSelector((state: ApplicationState) => state.sidePanelFilter.individ);\r\n\r\n // Other values\r\n const listLength = stedfestings.length;\r\n const isIndividSearch = individSearchText.length > 0;\r\n const isRovbaseIDSearch = listLength === 1 && id[0] === stedfestings[0].id;\r\n const haveIndivid = individ && listLength > 0;\r\n const theCarnivoreString = getStringFromEnum(Carnivore, individ?.artsID);\r\n const genderString = getStringFromEnum(Gender, individ?.kjonnID);\r\n const originString = getStringFromEnum(OriginIndividual, individ?.opprinnelseID).toLowerCase();\r\n const individualCarnivoreType = haveIndivid\r\n ? `${l(`theCarnivore.${theCarnivoreString}.${genderString}`)}`\r\n : l('tooltip.individual').toLowerCase();\r\n const searchType = listLength === 1 ? l('searchType.barcode') : l('searchType.search');\r\n\r\n\r\n const getBarcodeSearchTitle = (barcodes: string[]): string => {\r\n if (barcodes.length > 3) {\r\n return lt('searchresult.multipleElementsSearch', {element1: barcodes[0], element2: barcodes[1], count: barcodes.length - 2});\r\n }\r\n return barcodes.join(', ');\r\n };\r\n \r\n // Titles\r\n const individDescription = individ && lt('searchresult.individDescription', {\r\n count: listLength,\r\n individualType: individualCarnivoreType,\r\n individual: individ\r\n ? `${individ.individID} ${\r\n individ.individnavn\r\n }`\r\n : individSearchText,\r\n });\r\n const individOpprinnelse = individ?.opprinnelseID ? `. ${l(`individual.origin.${originString}`)}` : '';\r\n const individRevir = individ?.fodtRevir ? lt('searchresult.individDescription.revir', {\r\n revir: individ.fodtRevir\r\n }) : '';\r\n const individTitle = haveIndivid ? `${individDescription}${individRevir}${individOpprinnelse}` : individDescription;\r\n const idBarcodeTitle = lt('searchresult.specialSearchDescription', {\r\n searchType: isRovbaseIDSearch ? l('searchType.id') : searchType,\r\n count: listLength,\r\n searchText: getBarcodeSearchTitle(barcode),\r\n });\r\n const specialSearchTitle = isIndividSearch ? individTitle : idBarcodeTitle;\r\n\r\n useEffect(() => {\r\n if (!isNil(individSearchText) && individSearchText !== '') {\r\n getIndividualData(individSearchText)\r\n .then(res => setIndivid(res));\r\n }\r\n }, [individSearchText]);\r\n\r\n const handleCloseSpecialSearch = (): void => {\r\n setSearchParameter({\r\n IndividualNameOrID: '',\r\n ID: [],\r\n Barcode: [],\r\n });\r\n setSearchinput('');\r\n clearIndivid();\r\n closeResultList();\r\n };\r\n\r\n return (\r\n <>\r\n <div className={'special-search-header'}>\r\n <SecondaryButton onClick={handleCloseSpecialSearch} className={'flex-button'}>\r\n <NavigateBeforeIcon className=\"arrow-left-icon\"/>\r\n <div>{l('searchresultList.backToSearch')}</div>\r\n </SecondaryButton>\r\n </div>\r\n <h2>{specialSearchTitle}</h2>\r\n </>\r\n );\r\n}\r\n\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport classnames from 'classnames';\r\nimport React, {ReactElement, useEffect, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useLanguage} from '../../i18n';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {CloseSearchresultlist} from '../../store/sidePanel/action';\r\nimport {SearchresultItem} from '../searchresultItem/searchresultItem';\r\nimport {Share} from '../share/share';\r\nimport {PrimaryButton, SecondaryButton} from '../themeButtton/themeButton';\r\nimport {getUrl} from '../tooltip/tooltip.util';\r\nimport './searchresultList.scss';\r\nimport {NavigateSearchResult} from './navigateSearchResult';\r\nimport {LoadingTitle, ResultTitle, SpecialSearchTitle} from './searchresultTitle';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\nimport {useLoadingDots} from '../../hooks/loadingDots';\r\n\r\ntype OwnProps = {\r\n closeSidePanel: () => void;\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n borderBottom: `1px solid ${theme.palette.secondary.dark}`,\r\n },\r\n footer: {\r\n borderTop: `1px solid ${theme.palette.secondary.dark}`,\r\n }\r\n })\r\n);\r\n\r\nexport default function SearchresultList(props: OwnProps): ReactElement {\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const headerClass = classnames(classes.header, 'header');\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n\r\n // Actions from store\r\n const closeResultList = useActionCreator(CloseSearchresultlist);\r\n \r\n // Values from store\r\n const stedfestings = useSelector((state: ApplicationState) => state.map.stedfesting);\r\n const individSearchText = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.IndividualNameOrID);\r\n const barcode = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.Barcode);\r\n const id = useSelector((state: ApplicationState) => state.searchFilter.searchFilter.ID);\r\n const isLoading = useSelector((state: ApplicationState) => state.settings.isLoading);\r\n const loadingDots = useLoadingDots();\r\n\r\n // Other values\r\n // OffsetStep is the number of items to be shown in the list at once.\r\n const offsetStep = 20;\r\n // Offset is the index number of the last item in the list, \r\n // to keep track of which items in the stedfesting-array are currently shown \r\n const [offset, setOffset] = useState<number>(offsetStep);\r\n const listLength = stedfestings.length;\r\n const isIndividSearch = individSearchText.length > 0;\r\n const isSpecialSearch = isIndividSearch || barcode.length > 0 || id.length > 0;\r\n const numberOfFirstItemShown = offset - (offsetStep - 1);\r\n const numberOfLastItemShown = Math.min(offset, listLength);\r\n \r\n // Url- and mail-link for sharing search result\r\n const currentUrl = getUrl().replace(/&/g, '%26');\r\n const mailLink = `mailto:?subject=Rovbase&body=${l('searchresult.mailBody')}${currentUrl}`;\r\n \r\n // Titles \r\n const resultTitle = `${l('searchresultList.showResults')} ${numberOfFirstItemShown} - ${numberOfLastItemShown} (${listLength} ${l('searchresultList.hits')})`;\r\n const loadingTitle = `${l('searchresultList.loading')}${loadingDots}`;\r\n \r\n // Reset offset every time a new result is generated,\r\n // to always start showing the result list from the beginning of the list.\r\n useEffect(() => {\r\n setOffset(offsetStep);\r\n }, [listLength]);\r\n \r\n return (\r\n <div className=\"searchresult-panel\">\r\n {isLoading ? (\r\n <LoadingTitle title={loadingTitle} />\r\n ) : (\r\n <>\r\n <div className={headerClass}>\r\n {isSpecialSearch ? (\r\n <SpecialSearchTitle /> \r\n ) : (\r\n <ResultTitle title={resultTitle} />\r\n )}\r\n <Share mailLink={mailLink} copyUrl={getUrl()} feedbackObject={stedfestings} />\r\n </div>\r\n \r\n <div className=\"result-list\">\r\n {stedfestings.slice(offset - offsetStep, offset).map((stedfesting, i) => (\r\n <SearchresultItem key={stedfesting.id + i} stedfesting={stedfesting} closeSidepanel={props.closeSidePanel} />\r\n ))}\r\n </div>\r\n \r\n <div className={classes.footer}>\r\n <NavigateSearchResult\r\n offset={offset}\r\n offsetStep={offsetStep}\r\n setOffset={(offset: number) => setOffset(offset)}\r\n listLength={listLength}\r\n />\r\n <div className=\"footer-buttons\">\r\n {!isSpecialSearch && \r\n <SecondaryButton onClick={closeResultList}>\r\n {l('searchresultList.showFilter')}\r\n </SecondaryButton>\r\n }\r\n {mobileScreen && (\r\n <PrimaryButton onClick={props.closeSidePanel}>\r\n {l('searchresultList.showMap')}\r\n </PrimaryButton>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import {createStyles, makeStyles, Theme} from '@material-ui/core';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {OpenSearchresultlist} from '../../store/sidePanel/action';\r\nimport {MenuBar} from '../menubar/menubar';\r\nimport {Searchfilter} from '../searchfilter/searchfilter';\r\nimport SearchresultList from '../searchresultList/searchresultList';\r\nimport './sidepanel.scss';\r\nimport {useLanguage} from '../../i18n';\r\nimport {PrimaryButton, SecondaryButton} from '../themeButtton/themeButton';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\r\nimport {ErrorBoundary} from '../errorBoundary/errorBoundary';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\n\r\n\r\ntype OwnProps = {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n onToggleBtn: (state: boolean) => void;\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n sidepanelWrapper: {\r\n borderRight: `1px solid ${theme.palette.primary.main}`,\r\n backgroundColor: theme.palette.common.white,\r\n },\r\n buttonToggle: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n '&:focus': {\r\n outline: `2px solid ${theme.palette.primary.main}`,\r\n outlineOffset: '2px',\r\n },\r\n },\r\n })\r\n);\r\n\r\nfunction Sidepanel(props: OwnProps): JSX.Element {\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const resultCount: number = useSelector((state: ApplicationState) => state.map.stedfesting.length);\r\n const sidepanel = props.isOpen\r\n ? classnames(classes.sidepanelWrapper, 'sidepanel_wrapper sidepanel_open')\r\n : classnames(classes.sidepanelWrapper, 'sidepanel_wrapper sidepanel_closed');\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n const resultListOpen = useSelector((state: ApplicationState) => state.sidePanelFilter.menuState.open);\r\n const openSearchresultList = useActionCreator(OpenSearchresultlist);\r\n const buttonToggleOpen = classnames(classes.buttonToggle, 'btnToggleSidepanel btnOpenSidepanel');\r\n const buttonToggleClosed = classnames(classes.buttonToggle, 'btnToggleSidepanel btnCloseSidepanel');\r\n const ariaLabelButton = props.isOpen ? l('uu.closePanel') : l('uu.openPanel');\r\n const searchfilterOpen = props.isOpen && !resultListOpen;\r\n const showDetachedToggleButton = !mobileScreen || !props.isOpen;\r\n\r\n const btnIcon = props.isOpen ? (\r\n <ArrowBackIosIcon titleAccess={`${l('uu.closePanel')} ${l('uu.icon')}`}/>\r\n ) : (\r\n <ArrowForwardIosIcon titleAccess={`${l('uu.openPanel')} ${l('uu.icon')}`}/>\r\n );\r\n return (\r\n <>\r\n <div className={sidepanel}>\r\n <ErrorBoundary>\r\n {props.isOpen && (\r\n <>\r\n <MenuBar />\r\n {searchfilterOpen ? (\r\n <div className=\"sidepanel-filter-content\">\r\n {!showDetachedToggleButton && (\r\n <button\r\n className={props.isOpen ? buttonToggleClosed : buttonToggleOpen}\r\n onClick={() => props.onToggleBtn(!props.isOpen)}\r\n aria-label={ariaLabelButton}\r\n >\r\n {btnIcon}\r\n </button>\r\n )}\r\n <Searchfilter />\r\n <div className=\"sidepanel_btngroup\" id=\"sidepanel_btngroup\">\r\n {resultCount > 0 && (\r\n <SecondaryButton onClick={() => openSearchresultList()}>\r\n {l('sidepanel.resultList')}\r\n </SecondaryButton>\r\n )}\r\n {mobileScreen && (\r\n <PrimaryButton onClick={props.onClose}>\r\n {l('sidepanel.resultMap')}\r\n </PrimaryButton>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <SearchresultList closeSidePanel={props.onClose} />\r\n )}\r\n </>\r\n )}\r\n </ErrorBoundary>\r\n </div>\r\n {showDetachedToggleButton && (\r\n <button\r\n className={props.isOpen ? buttonToggleClosed : buttonToggleOpen}\r\n onClick={() => props.onToggleBtn(!props.isOpen)}\r\n aria-label={ariaLabelButton}>\r\n {btnIcon}\r\n </button>\r\n )}\r\n </>\r\n );\r\n}\r\n\r\nexport default Sidepanel;\r\n","import React, {ReactElement} from 'react';\r\nimport Modal from '@material-ui/core/Modal';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport {useLanguage} from '../../i18n';\r\nimport './accessibilityModal.scss';\r\nimport { IconButton } from '../themeButtton/themeButton';\r\n\r\ntype ModalProps = {\r\n open: boolean;\r\n handleClose: () => void;\r\n}\r\n\r\nexport default function AccessibilityModal(props: ModalProps) {\r\n const l = useLanguage();\r\n return (\r\n <Modal\r\n aria-labelledby=\"modal-title\"\r\n aria-describedby=\"modal-description\"\r\n open={props.open}\r\n onClose={props.handleClose}\r\n >\r\n <div className=\"accessibility-modal\">\r\n <div className=\"modal-title\">\r\n <h2 id=\"modal-title\">{l('accessibility.label')}</h2>\r\n <IconButton onClick={() => props.handleClose()} aria-label={l('uu.close')} accessKey={'0'}>\r\n <CloseIcon color=\"primary\" titleAccess={l('uu.close')} />\r\n </IconButton>\r\n </div>\r\n <AccessibilityModalContent />\r\n </div>\r\n </Modal>\r\n );\r\n}\r\n\r\nexport function AccessibilityModalContent(): ReactElement {\r\n const l = useLanguage();\r\n return (\r\n <div className='accessibility-modal-content'>\r\n <h3>{l('accessibility.shortcuts')}</h3>\r\n <p>\r\n {l('accessibility.shortcuts.p1')}\r\n </p>\r\n <h3>{l('accessibility.command')}</h3>\r\n <p>\r\n {l('accessibility.command.p1')}\r\n </p>\r\n\r\n <div className=\"browsers\">\r\n <h4>Windows</h4>\r\n <p>Chrome: <kbd>ALT</kbd> + <kbd>{`<${l('accessibility.shortcut')}>`}</kbd></p>\r\n <p>Edge: <kbd>ALT</kbd> + <kbd>{`<${l('accessibility.shortcut')}>`}</kbd></p>\r\n <p>Firefox: <kbd>ALT</kbd> + <kbd>SHIFT</kbd> + <kbd>{`<${l('accessibility.shortcut')}>`}</kbd></p>\r\n </div>\r\n\r\n <div className=\"browsers\">\r\n <h4>Mac</h4>\r\n <p>Chrome: <kbd>Control</kbd> + <kbd>ALT</kbd> + <kbd>{`<${l('accessibility.shortcut')}>`}</kbd></p>\r\n <p>Safari: <kbd>Control</kbd> + <kbd>ALT</kbd> + <kbd>{`<${l('accessibility.shortcut')}>`}</kbd></p>\r\n <p>Firefox: <kbd>Control</kbd> + <kbd>ALT</kbd> + <kbd>{`<${l('accessibility.shortcut')}>`}</kbd></p>\r\n </div>\r\n <ul>\r\n <li>{`1 - ${l('accessibility.homepage')}`}</li>\r\n {/*<li>2 - </li>*/}\r\n <li>{`3 - ${l('menu')}`}</li>\r\n <li>{`4 - ${l('accessibility.search')}`}</li>\r\n <li>{`5 - ${l('menu.about')} (${l('accessibility.fromMenu')})`}</li>\r\n {/*<li>6 - </li>*/}\r\n <li>{`7 - ${l('menu.contact')} (${l('accessibility.fromMenu')})`}</li>\r\n {/*<li>8 - </li>*/}\r\n {/*<li>9 - </li>*/}\r\n <li>{`0 - ${l('accessibility.info')}`}</li>\r\n </ul>\r\n </div>\r\n );\r\n}\r\n","import React, {ReactElement, useState} from 'react';\r\nimport {IconButton} from '../themeButtton/themeButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport './systemMessage.scss';\r\nimport ReportProblemOutlinedIcon from '@material-ui/icons/ReportProblemOutlined';\r\nimport classnames from 'classnames';\r\nimport {useLanguage} from '../../i18n';\r\n\r\n\r\nexport enum MessageType {\r\n InfoMessage = 1,\r\n ErrorMessage = 2,\r\n WarningMessage = 3,\r\n LoadingErrorMessage = 4,\r\n}\r\n\r\n\r\ntype SystemMessageProps = {\r\n openSidepanel: boolean;\r\n messageType: MessageType;\r\n title?: string;\r\n message: string;\r\n}\r\n\r\nexport function SystemMessage(props: SystemMessageProps): ReactElement {\r\n const l = useLanguage();\r\n const [showMessage, setShowMessage] = useState<boolean>(true);\r\n const panelOpenClass = props.openSidepanel ? 'open' : 'closed';\r\n const messageStylingClass = classnames('message', panelOpenClass, props.messageType && MessageType[props.messageType].toLowerCase());\r\n\r\n const closeMessage = (): void => {\r\n setShowMessage(false);\r\n };\r\n\r\n function SystemMessageIkon(): ReactElement {\r\n if (props.messageType === MessageType.LoadingErrorMessage || props.messageType === MessageType.ErrorMessage || props.messageType === MessageType.WarningMessage) {\r\n return <ReportProblemOutlinedIcon className='info-icon'/>;\r\n }\r\n return <InfoIcon className='info-icon'/>;\r\n }\r\n\r\n return (\r\n <>\r\n {showMessage && <div className={messageStylingClass}>\r\n <h3>{props.title}</h3>\r\n <div className='message-content'>\r\n <SystemMessageIkon/>\r\n <div className={'message-text'}>\r\n {props.message}\r\n </div>\r\n <IconButton className='close-icon' aria-label={l('uu.close')} onClick={() => closeMessage()}>\r\n <CloseIcon/>\r\n </IconButton>\r\n </div>\r\n </div>\r\n }\r\n </>\r\n );\r\n}\r\n\r\n","import {useEffect, useState} from 'react';\r\n\r\nexport type systemvarsel = {\r\n overskrift: string;\r\n beskrivelse: string;\r\n forfatter: string;\r\n systemvarselType: number;\r\n}\r\n\r\nexport const useSystemvarsel = () => {\r\n const [currentSystemvarsel, setCurrentSystemvarsel] = useState<systemvarsel>();\r\n useEffect(() => {\r\n getSystemvarsel().then(res => {\r\n setCurrentSystemvarsel(res);\r\n });\r\n }, []);\r\n \r\n return currentSystemvarsel;\r\n};\r\n\r\nexport async function getSystemvarsel(): Promise<systemvarsel> {\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n const req: RequestInit = {\r\n method: 'GET',\r\n headers: headers\r\n };\r\n return fetch('/api/systemvarsel', req)\r\n .then(res => {\r\n if (res.ok)\r\n return res.json();\r\n else\r\n return Promise.reject(res.statusText);\r\n });\r\n}\r\n","import {MessageType, SystemMessage} from '../systemMessage/systemMessage';\r\nimport React, {ReactElement} from 'react';\r\nimport {useSystemvarsel} from '../../services/systemvarselService';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {useLanguage} from '../../i18n';\r\n\r\ntype SystemMessageBannerProps = {\r\n sidePanelIsOpen: boolean;\r\n};\r\n\r\nexport const SystemMessageBanner = (props: SystemMessageBannerProps): ReactElement => {\r\n const l = useLanguage();\r\n const kartlagFeiler = useSelector((state: ApplicationState) => state.map.errorLoadingKartlag);\r\n const systemvarsel = useSystemvarsel();\r\n \r\n return (\r\n <>\r\n {systemvarsel && <SystemMessage openSidepanel={props.sidePanelIsOpen}\r\n messageType={systemvarsel.systemvarselType}\r\n message={systemvarsel.beskrivelse}\r\n title={systemvarsel.overskrift}/>}\r\n\r\n {kartlagFeiler && <SystemMessage openSidepanel={props.sidePanelIsOpen}\r\n messageType={MessageType.LoadingErrorMessage}\r\n message={l('systemvarsel.tileLoadError')}/>}\r\n </>\r\n );\r\n};","import React, {useEffect, useState} from 'react';\r\nimport {connect, useSelector} from 'react-redux';\r\nimport {InitSearch} from '../../src/index';\r\nimport Loader from '../components/loader/loader';\r\nimport {MainMap} from '../components/map/map';\r\nimport Searchbar from '../components/searchbar/searchbar';\r\nimport Sidepanel from '../components/sidepanel/sidepanel';\r\nimport {ApplicationState} from '../store';\r\nimport {UpdateUrl} from '../store/searchfilter/action';\r\nimport './main.scss';\r\nimport {HoppTilHovedinnhold} from '../components/themeButtton/themeButton';\r\nimport {MenuButton} from '../components/menubutton/menubutton';\r\nimport {ErrorBoundary} from '../components/errorBoundary/errorBoundary';\r\nimport AccessibilityModal from '../components/accessibilityModal/accessibilityModal';\r\nimport {useMobileBreakpointInnsyn} from '../hooks/breakpoint';\r\nimport {SystemMessageBanner} from '../components/SystemMessageBanner/systemMessageBanner';\r\n\r\ntype StateProps = {\r\n isLoading: boolean;\r\n isInitialized: boolean;\r\n};\r\n\r\ntype Props = StateProps;\r\n\r\nexport function _Home(props: Props): JSX.Element {\r\n const [openModal, setOpenModal] = useState(false);\r\n const searchfilter = useSelector((state: ApplicationState) => state.searchFilter.searchFilter);\r\n const [openSidepanel, setOpenSidepanel] = React.useState(true);\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n\r\n useEffect(() => {\r\n if (props.isInitialized) {\r\n UpdateUrl(searchfilter);\r\n } else {\r\n InitSearch();\r\n }\r\n }, []);\r\n\r\n return (\r\n <ErrorBoundary>\r\n <div className=\"content\">\r\n <HoppTilHovedinnhold mainContentId={\"carnivoreFilter\"} />\r\n {!props.isInitialized || props.isLoading ? <Loader /> : null}\r\n {!mobileScreen &&\r\n <div className={openSidepanel ? 'search-n-menu--offset' : 'search-n-menu'}>\r\n <div className={openSidepanel ? 'searchBar_wrapper_offset' : 'searchBar_wrapper'}>\r\n <Searchbar />\r\n </div>\r\n </div>\r\n }\r\n {!mobileScreen && <MenuButton />}\r\n <Sidepanel\r\n isOpen={openSidepanel}\r\n onClose={() => setOpenSidepanel(false)}\r\n onToggleBtn={(state: boolean) => setOpenSidepanel(state)}\r\n />\r\n <SystemMessageBanner sidePanelIsOpen={openSidepanel}/>\r\n <MainMap/>\r\n <button type=\"button\" onClick={() => setOpenModal(true)} accessKey=\"0\" className=\"accessibility-button\" aria-label=\"Show accessibility information\" />\r\n <AccessibilityModal open={openModal} handleClose={() => setOpenModal(false)}/>\r\n </div>\r\n </ErrorBoundary>\r\n );\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState): StateProps => {\r\n return {\r\n isInitialized: state.settings.isInitialized,\r\n isLoading: state.settings.isLoading,\r\n };\r\n};\r\n\r\nexport const Home = connect(mapStateToProps, null)(_Home);\r\n","import React, {ReactElement} from 'react';\r\nimport {ExternalLink} from '../../components/externalLInk/externalLink';\r\nimport {useLanguage} from '../../i18n';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {Language} from '../../constants/language';\r\n\r\nconst norskURL = 'https://uustatus.no/nb/erklaringer/publisert/4dda6a97-983d-4bf5-95b0-61b8178a168b';\r\n\r\n\r\nexport function AccesibilityContentNO(): ReactElement {\r\n const l = useLanguage();\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n return (\r\n <div className=\"accessibility-content\">\r\n <header>\r\n <h2>{l('accessibility.contentNOTitle')}</h2>\r\n </header>\r\n {language === Language.SV && <p>Läs pÃ¥ <ExternalLink href={norskURL}>uustatus.no</ExternalLink> (endast pÃ¥ norska) om hur Rovbase.no uppfyller den norska lagen om tillgänglighet till digital offentlig service.</p>}\r\n {language === Language.NO && <p>Les pÃ¥ <ExternalLink href={norskURL}>uustatus.no</ExternalLink> hvordan rovbase.no oppfyller de norske kravene til universell utforming i IKT-løsninger.</p>}\r\n {language === Language.EN && <p>On <ExternalLink href={norskURL}>uustatus.no</ExternalLink> (in norwegian only), you can read about how rovbase.no complies with the Norwegian law on web accessibility.</p>}\r\n </div>\r\n );\r\n}","import React, {ReactElement} from 'react';\r\nimport {ExternalLink} from '../../components/externalLInk/externalLink';\r\nimport {useLanguage} from '../../i18n';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {Language} from '../../constants/language';\r\n\r\nconst svenskURL = 'https://www.naturvardsverket.se/om-oss/om-webbplatsen/tillganglighet/tillganglighet-for-rovbase.se/';\r\n\r\nexport function AccesibilityContentSE(): ReactElement {\r\n const l = useLanguage();\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n return (\r\n <div className=\"accessibility-content\">\r\n <header>\r\n <h2>{l('accessibility.contentSETitle')}</h2>\r\n </header>\r\n {language === Language.SV && <p>Läs pÃ¥ <ExternalLink href={svenskURL}>NaturvÃ¥rdsverkets hemsida</ExternalLink> om hur Rovbase.se uppfyller den svenska lagen om tillgänglighet till digital offentlig service.</p>}\r\n {language === Language.NO && <p>Les pÃ¥ <ExternalLink href={svenskURL}>NaturvÃ¥rdsverkets hjemmeside</ExternalLink> (kun pÃ¥ svensk) hvordan rovbase.se oppfyller de svenske kravene til universell utforming i IKT-løsninger.</p>}\r\n {language === Language.EN && <p>On <ExternalLink href={svenskURL}>The Swedish Environmental Protection Agency's webpage</ExternalLink> (in swedish only), you can read about how rovbase.se complies with the Swedish law on web accessibility.</p>}\r\n </div>\r\n );\r\n}","import {useLanguage} from '../../i18n';\r\nimport React from 'react';\r\nimport {ErrorBoundary} from '../../components/errorBoundary/errorBoundary';\r\nimport StaticPageFrame from '../../components/staticPageFrame/staticPageFrame';\r\nimport {AccessibilityModalContent} from '../../components/accessibilityModal/accessibilityModal';\r\nimport {AccesibilityContentNO} from './accessibiltyContent-no';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {AccesibilityContentSE} from './accessibiltyContent-se';\r\nimport {Site} from '../../store/settings/types';\r\nimport {HoppTilHovedinnhold} from \"../../components/themeButtton/themeButton\";\r\n\r\nexport function Accessibility(): JSX.Element {\r\n const l = useLanguage();\r\n const site = useSelector((state: ApplicationState) => state.settings.site);\r\n return (\r\n <ErrorBoundary>\r\n <StaticPageFrame>\r\n <HoppTilHovedinnhold mainContentId={\"mainContent\"} />\r\n <div className=\"accessibility\" id={\"mainContent\"}>\r\n {site === Site.SE && <AccesibilityContentSE />}\r\n {site === Site.NO && <AccesibilityContentNO />}\r\n <section>\r\n <h2>{l('accessibility.tips')}</h2>\r\n <AccessibilityModalContent />\r\n </section> \r\n </div>\r\n </StaticPageFrame>\r\n </ErrorBoundary>\r\n );\r\n}\r\n","import {MenuItem, Select, Theme} from '@material-ui/core';\r\nimport {createStyles, makeStyles} from '@material-ui/styles';\r\nimport React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {useLanguage} from '../../i18n';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {setLanguage} from '../../store/settings/actions';\r\nimport {isLang, Language} from '../../constants/language';\r\nimport './languageSelector.scss';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n select: {\r\n color: theme.palette.primary.main,\r\n },\r\n })\r\n);\r\n\r\nexport function LanguageSelector(): JSX.Element {\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n const updateLanguage = useActionCreator(setLanguage);\r\n const changeHandler = (event: React.ChangeEvent<HTMLSelectElement>): void => {\r\n const id = event.target.value;\r\n if (isLang(id)) updateLanguage(id);\r\n };\r\n\r\n return (\r\n <div className=\"language-selector\">\r\n <label htmlFor={'languageSelector'}>\r\n {l('languageSelect.language')}\r\n </label>\r\n <Select className={classes.select} value={language} id={'languageSelector'} onChange={changeHandler}>\r\n <MenuItem value={Language.NO}>Norsk</MenuItem>\r\n <MenuItem value={Language.SV}>Svenska</MenuItem>\r\n <MenuItem value={Language.EN}>English</MenuItem>\r\n </Select>\r\n </div>\r\n );\r\n}\r\n","import { ReportKeys } from '../constants/reportKeys';\r\nimport {models} from 'powerbi-client';\r\nimport {useMobileBreakpointLandscapeInnsyn, useMobileBreakpointPortraitInnsyn} from \"../hooks/breakpoint\";\r\n\r\nexport type ReportsResponse = {\r\n embedToken: EmbedToken,\r\n reports: EmbedReport[]\r\n}\r\n\r\ntype EmbedReport = {\r\n reportId: string;\r\n reportName: string;\r\n embedUrl: string;\r\n}\r\n\r\ntype EmbedToken = {\r\n token: string;\r\n tokenId: string;\r\n tokenExpiry: string;\r\n}\r\n\r\nexport async function getReportId(reportKey:string) : Promise<string | undefined> {\r\n const req = createRequest();\r\n const response = await fetch(`/api/report/id/${reportKey}`, req);\r\n if (response.ok) {\r\n return await response.json() as string;\r\n }\r\n}\r\n\r\nlet cachedReportStatus : Record<ReportKeys, boolean> | undefined = undefined;\r\n\r\nexport async function checkReportStatus(reportKey:ReportKeys) : Promise<boolean | undefined> {\r\n if(cachedReportStatus !== undefined){\r\n return Promise.resolve(cachedReportStatus[reportKey]);\r\n }\r\n \r\n const req = createRequest();\r\n const response = await fetch('/api/report/status/', req);\r\n if (response.ok) {\r\n cachedReportStatus = await response.json() as typeof cachedReportStatus;\r\n return cachedReportStatus[reportKey];\r\n }\r\n}\r\n\r\nexport async function getReports() : Promise<ReportsResponse | undefined> {\r\n const req = createRequest();\r\n const response = await fetch('/api/reports', req);\r\n if (response.ok) {\r\n return await response.json() as ReportsResponse;\r\n }\r\n}\r\n\r\nfunction createRequest(): object {\r\n const headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n return {\r\n method: 'GET',\r\n headers: headers\r\n };\r\n}\r\n\r\nexport function useLayout() : models.LayoutType {\r\n const mobilePortrait = useMobileBreakpointPortraitInnsyn();\r\n const mobileLandscape = useMobileBreakpointLandscapeInnsyn();\r\n \r\n if(mobilePortrait || mobileLandscape){\r\n // vi benytter ikke eget landscape layout for mobil\r\n return models.LayoutType.MobilePortrait;\r\n } else {\r\n return models.LayoutType.Master;\r\n }\r\n}\r\n","import {useEffect, useState} from 'react';\r\nimport {checkReportStatus} from '../services/reportService';\r\n\r\nexport function useDodeRovdyrRapport() : boolean {\r\n const [toggleReportDodeRovdyr, setToggleReportDodeRovdyr] = useState<boolean>(false); \r\n \r\n useEffect(() => {\r\n async function fetchReportStatus():Promise<void> {\r\n const status = await checkReportStatus('doderovdyr');\r\n setToggleReportDodeRovdyr(status ?? false);\r\n }\r\n fetchReportStatus();\r\n }, []);\r\n \r\n return toggleReportDodeRovdyr;\r\n}\r\n\r\nexport function useRovviltskadeRapport() : boolean{\r\n\r\n const [toggleReportRovviltskade, setToggleReportRovviltskade] = useState<boolean>(false);\r\n useEffect(() => {\r\n async function fetchReportStatus():Promise<void> {\r\n const status = await checkReportStatus('rovviltskade');\r\n setToggleReportRovviltskade(status ?? false);\r\n }\r\n fetchReportStatus();\r\n }, []);\r\n\r\n return toggleReportRovviltskade;\r\n}","import {Drawer, Theme} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport {createStyles, makeStyles} from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport React, {Fragment, useEffect, useState} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {NavLink} from 'react-router-dom';\r\nimport {mdirInfo, naturvardsInfo, stripPhoneNumber} from '../../constants/contactInfo';\r\nimport {useLanguage} from '../../i18n';\r\nimport {ApplicationState, useActionCreator} from '../../store';\r\nimport {closeMenu} from '../../store/menu/action';\r\nimport {Site} from '../../store/settings/types';\r\nimport {LanguageSelector} from '../languageSelector/languageSelector';\r\nimport {Logo} from '../logo/logo';\r\nimport './menu.scss';\r\nimport {IconButton} from '../themeButtton/themeButton';\r\nimport {ExternalLink} from '../externalLInk/externalLink';\r\nimport {useDodeRovdyrRapport, useRovviltskadeRapport} from '../../hooks/featureToggles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n menuContent: {\r\n '& a': {\r\n color: theme.palette.primary.main,\r\n },\r\n '& button': {\r\n color: theme.palette.primary.main,\r\n },\r\n },\r\n menuColors: {\r\n backgroundColor: theme.palette.secondary.main,\r\n borderColor: theme.palette.secondary.dark,\r\n }\r\n })\r\n);\r\n\r\nexport function Menu(): JSX.Element {\r\n const l = useLanguage();\r\n const [openRovdyr, setOpenRovdyr] = useState<boolean>(false);\r\n const open = useSelector((state: ApplicationState) => state.menu.open);\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n const site = useSelector((state: ApplicationState) => state.settings.site);\r\n const close = useActionCreator(closeMenu);\r\n const showReportDodeRovdyr = useDodeRovdyrRapport();\r\n const showReportRovviltskade = useRovviltskadeRapport();\r\n const classes = useStyles({});\r\n const menuFooterClass = classnames('menu-footer', classes.menuColors);\r\n const expandClass = classnames('expand-more', { openRovdyr: openRovdyr });\r\n const menuClass = classnames(classes.menuContent, 'menu-container');\r\n const menuTitleContainerClass = classnames(classes.menuColors, 'menu-title-container');\r\n const languageContainerClass = classnames(classes.menuColors, 'language-container');\r\n\r\n return (\r\n <Drawer anchor=\"right\" open={open} onClose={close}>\r\n <div className={menuClass}>\r\n <div className=\"menu-content\">\r\n <div className={menuTitleContainerClass}>\r\n <h2 className=\"menu-title\">{l('menu')}</h2>\r\n <IconButton onClick={close} aria-label={l('uu.close')} className=\"close-menu\">\r\n <CloseIcon color=\"primary\" titleAccess={`${l('uu.close')} ${l('menu').toLowerCase()}`} />\r\n </IconButton>\r\n </div>\r\n <div className={languageContainerClass}>\r\n <LanguageSelector />\r\n </div>\r\n \r\n {/* Main site navigation */}\r\n <nav>\r\n <div className=\"navigation\">\r\n <ul>\r\n <li>\r\n <NavLink to=\"/\" activeClassName=\"selected\" exact={true} onClick={close}\r\n accessKey=\"1\">\r\n {l('menu.search')}\r\n </NavLink>\r\n </li>\r\n\r\n {showReportDodeRovdyr && (\r\n <li>\r\n <NavLink to=\"/rapport/doderovdyr\" activeClassName=\"selected\" onClick={close} >\r\n {l('menu.reportDodeRovdyr')}\r\n </NavLink>\r\n </li>)}\r\n {showReportRovviltskade && (\r\n <li>\r\n <NavLink to=\"/rapport/rovviltskade\" activeClassName=\"selected\" onClick={close} >\r\n {l('menu.reportRovviltskade')}\r\n </NavLink>\r\n </li>)}\r\n\r\n <li>\r\n <NavLink to=\"/erstatning/sau\" onClick={close} activeClassName=\"selected\">\r\n {l('menu.refundSheep')}\r\n </NavLink>\r\n </li>\r\n <li>\r\n <NavLink to=\"/erstatning/rein\" onClick={close} activeClassName=\"selected\">\r\n {l('menu.refundReindeer')}\r\n </NavLink>\r\n </li>\r\n\r\n {site === Site.NO && (\r\n <Fragment>\r\n <li>\r\n <button\r\n onClick={() => setOpenRovdyr(!openRovdyr)}\r\n aria-expanded={openRovdyr}\r\n >\r\n {l('menu.facts')}\r\n <ExpandMoreIcon\r\n aria-hidden={true}\r\n className={expandClass}\r\n titleAccess={l('uu.expand')}\r\n />\r\n </button>\r\n {openRovdyr && (\r\n <ul className=\"rovdyrfakta\">\r\n <li>\r\n <ExternalLink\r\n href={'https://rovdata.no/Ulv.aspx'}>{l('carnivore.wolf')}</ExternalLink>\r\n </li>\r\n <li>\r\n <ExternalLink\r\n href={'https://rovdata.no/Gaupe.aspx'}>{l('carnivore.lynx')}</ExternalLink>\r\n </li>\r\n <li>\r\n <ExternalLink\r\n href={'https://rovdata.no/Jerv.aspx'}>{l('carnivore.wolverine')}</ExternalLink>\r\n </li>\r\n <li>\r\n <ExternalLink\r\n href={'https://rovdata.no/Brunbjørn.aspx'}>{l('carnivore.bear')}</ExternalLink>\r\n </li>\r\n <li>\r\n <ExternalLink\r\n href={'https://rovdata.no/Kongeørn.aspx'}>{l('carnivore.goldenEagle')}</ExternalLink>\r\n </li>\r\n </ul>\r\n )}\r\n </li>\r\n </Fragment>\r\n )}\r\n\r\n <li>\r\n <NavLink to=\"/om\" activeClassName=\"selected\" onClick={close} accessKey=\"5\">\r\n {l('menu.about')}\r\n </NavLink>\r\n </li>\r\n\r\n <li>\r\n <NavLink to=\"/kontakt\" activeClassName=\"selected\" onClick={close} accessKey=\"7\">\r\n {l('menu.contact')}\r\n </NavLink>\r\n </li>\r\n <li>\r\n <ExternalLink\r\n href={'https://www.miljodirektoratet.no/personvernerklaring/'}>{l('menu.privacyPolicy')}</ExternalLink>\r\n </li>\r\n <li>\r\n <NavLink to=\"/tilgjengelighet\" activeClassName=\"selected\" onClick={close}\r\n accessKey=\"0\">\r\n {l('menu.accessibilityStatement')}\r\n </NavLink>\r\n </li>\r\n </ul>\r\n </div>\r\n </nav>\r\n </div>\r\n\r\n {/* Footer with contact information*/}\r\n <div className={menuFooterClass}>\r\n <div className=\"contactinfo-container\">\r\n <Logo site={Site.NO} language={language} width={60} alt={l('contact.MDIR')} />\r\n <div className=\"contactinfo-text\">\r\n <div>Miljødirektoratet</div>\r\n <div>\r\n <label>{l('menu.email')}: </label>\r\n <a href={`mailto:${mdirInfo.mail}`}>{mdirInfo.mail}</a>\r\n </div>\r\n <div>\r\n <label>{l('menu.phone')}: </label>\r\n <a href={`tel:${stripPhoneNumber(mdirInfo.phone)}`}>{mdirInfo.phone}</a>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"contactinfo-container\">\r\n <Logo site={Site.SE} language={language} width={60} alt={l('contact.Naturvardsverket')} />\r\n <div className=\"contactinfo-text\">\r\n <div>NaturvÃ¥rdsverket</div>\r\n <div>\r\n <label>{l('menu.email')}: </label>\r\n <a href={`mailto:${naturvardsInfo.mail}`}>{naturvardsInfo.mail}</a>\r\n </div>\r\n <div>\r\n <label>{l('menu.phone')}: </label>\r\n <a href={`tel:${stripPhoneNumber(naturvardsInfo.phone)}`}>{naturvardsInfo.phone}</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </Drawer>\r\n );\r\n}\r\n\r\n","import React from 'react';\r\nimport StaticPageFrame from '../components/staticPageFrame/staticPageFrame';\r\nimport { mdirInfo, naturvardsInfo, stripPhoneNumber } from '../constants/contactInfo';\r\nimport { useLanguage } from '../i18n';\r\nimport { ErrorBoundary } from '../components/errorBoundary/errorBoundary';\r\nimport {ExternalLink} from '../components/externalLInk/externalLink';\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from '../components/expansionPanel/expansionPanel';\r\nimport {HoppTilHovedinnhold} from \"../components/themeButtton/themeButton\";\r\n\r\nexport function ContactMiljodir(): JSX.Element {\r\n const l = useLanguage();\r\n return (\r\n <div className=\"contactinfo__text\">\r\n <div className=\"contactinfo__name\">Miljødirektoratet</div>\r\n <div className=\"contactinfo__visitAddress\">\r\n <label>{l('contact.visitAddress')}: </label>\r\n <span>{mdirInfo.visitAdress}</span>\r\n </div>\r\n <div className=\"contactinfo__mailAddress\">\r\n <label>{l('contact.postAddress')}: </label>\r\n <span>{mdirInfo.postAdress}</span>\r\n </div>\r\n <div className=\"contactinfo__email\">\r\n <label>{l('menu.email')}: </label>\r\n <a href={`mailto:${mdirInfo.mail}`}>{mdirInfo.mail}</a>\r\n </div>\r\n <div className=\"contactinfo__phone\">\r\n <label>{l('menu.phone')}: </label>\r\n <a href={`tel:${stripPhoneNumber(mdirInfo.phone)}`}>{mdirInfo.phone}</a>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function ContactNaturvard(): JSX.Element {\r\n const l = useLanguage();\r\n return (\r\n <div className=\"contactinfo__text\">\r\n <div className=\"contactinfo__name\">NaturvÃ¥rdsverket</div>\r\n <div className=\"contactinfo__visitAddress\">\r\n <label>{l('contact.visitAddress')} Stockholm: </label>\r\n <span>{naturvardsInfo.visitAdress[0]}</span>\r\n </div>\r\n <div className=\"contactinfo__visitAddress\">\r\n <label>{l('contact.visitAddress')} Östersund: </label>\r\n <span>{naturvardsInfo.visitAdress[1]}</span>\r\n </div>\r\n <div className=\"contactinfo__mailAddress\">\r\n <label>{l('contact.postAddress')}: </label>\r\n {naturvardsInfo.postAdress}\r\n </div>\r\n <div className=\"contactinfo__email\">\r\n <label>{l('menu.email')}: </label>\r\n <a href={`mailto:${naturvardsInfo.mail}`}>{naturvardsInfo.mail}</a>\r\n </div>\r\n <div className=\"contactinfo__phone\">\r\n <label>{l('menu.phone')}: </label>\r\n <a href={`tel:${stripPhoneNumber(naturvardsInfo.phone)}`}>{naturvardsInfo.phone}</a>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function Contact(): JSX.Element {\r\n const l = useLanguage();\r\n return (\r\n <ErrorBoundary>\r\n <StaticPageFrame>\r\n <HoppTilHovedinnhold mainContentId={\"mainContent\"} />\r\n <div className={'contact-page'} id={\"mainContent\"}>\r\n <h2>{l('menu.contact')}</h2>\r\n <ExpansionPanel theme=\"dark\">\r\n <ExpansionPanelTitle theme=\"dark\">{l('contact.panel1.header')}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n {`${l('contact.panel1')} `}\r\n <ExternalLink href={'https://www.miljodirektoratet.no/ansvarsomrader/naturoppsyn/'}>Statens naturoppsyns rovviltkontakter</ExternalLink>\r\n {` (${l('country.norway')}) ${l('contact.or')} `}\r\n <ExternalLink href={'https://www.lansstyrelsen.se/'}>länsstyrelsen</ExternalLink> {`(${l('country.sweden')}).`}\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n <ExpansionPanel theme=\"dark\">\r\n <ExpansionPanelTitle theme=\"dark\">{l('contact.panel2.header')}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n {l('contact.panel2')}\r\n <ExternalLink href={'https://www.statsforvalteren.no'}>Statsforvalteren</ExternalLink>\r\n {` ${l('contact.or')} `}\r\n <ExternalLink href={'https://www.landbruksdirektoratet.no/no/reindriften/for-siidaandeler/melding-om-reindrift'}>Reindriftsforvaltningen</ExternalLink>\r\n {` (${l('country.norway')}) ${l('contact.or')} `}\r\n <ExternalLink href={'https://www.lansstyrelsen.se/'}>länsstyrelsen</ExternalLink>\r\n {` (${l('country.sweden')}).`}\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n <ExpansionPanel theme=\"dark\">\r\n <ExpansionPanelTitle theme=\"dark\">{l('contact.panel3.header')}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n {`${l('contact.panel3-1')} `}\r\n <ExternalLink href={'https://www.miljodirektoratet.no/ansvarsomrader/arter-naturtyper/vilt/rovvilt/'}>{l('contact.atMDIR')}</ExternalLink>.\r\n {` ${l('contact.panel3-2')} `}\r\n <ExternalLink href={'https://www.naturvardsverket.se/amnesomraden/jakt-och-vilt/viltforvaltning/rovdjursforvaltning/'}>{l('contact.atNaturvardsverket')}</ExternalLink>.\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n <p>\r\n {l('contact.p3-2')} <ExternalLink href={'https://www.miljodirektoratet.no'}>{l('contact.MDIR')}</ExternalLink>\r\n {` ${l('contact.or')} `}\r\n <ExternalLink href={'http://www.naturvardsverket.se/'}>{l('contact.Naturvardsverket')}</ExternalLink>\r\n </p>\r\n <div className=\"contactinfo_contactPage\">\r\n <ContactMiljodir />\r\n <ContactNaturvard />\r\n </div>\r\n </div>\r\n </StaticPageFrame>\r\n </ErrorBoundary>\r\n );\r\n}\r\n","export enum RefundAnimal {\r\n Sheep = 1,\r\n Reindeer = 2\r\n}\r\n","import {RefundSearchFilter} from '../store/refund/types';\r\nimport {appInsight} from \"../applicationInsights\";\r\n\r\nexport default {\r\n async getStatisticData() {\r\n const req = createRequest();\r\n const response = await fetch('/api/statistics/lists', req);\r\n if (response.ok) {\r\n return await response.json();\r\n }\r\n },\r\n async getStatisticResultSheep(search: RefundSearchFilter) {\r\n const req = createSearchRequest(search);\r\n const response = await fetch('/api/statistics/sheep', req);\r\n if (response.ok) {\r\n appInsight?.trackEvent({name: 'SHEEP_STAT', properties: {County: search.County, Municipality: search.Municipality }});\r\n return await response.json();\r\n }\r\n },\r\n async getStatisticResultReindeer(search: RefundSearchFilter) {\r\n const req = createSearchRequest(search);\r\n const response = await fetch('/api/statistics/reindeer', req);\r\n if (response.ok) {\r\n appInsight?.trackEvent({name: 'REINDEER_STAT', properties: {Reinbeiteomrade: search.Reinbeiteomrade, Reinbeitedistrikt: search.Reinbeitedistrikt }});\r\n return await response.json();\r\n }\r\n }\r\n};\r\n\r\nfunction createSearchRequest(search: RefundSearchFilter): object {\r\n let headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n return {\r\n method: 'POST',\r\n headers: headers,\r\n body: JSON.stringify(search)\r\n };\r\n}\r\n\r\nfunction createRequest(): object {\r\n let headers = new Headers({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n return {\r\n method: 'GET',\r\n headers: headers\r\n };\r\n}\r\n","import {Action, AnyAction, Dispatch} from 'redux';\r\nimport { ThunkAction } from 'redux-thunk';\r\nimport { ApplicationState } from '..';\r\nimport statisticService from '../../services/statisticService';\r\nimport {\r\n isLoadingAction,\r\n RECEIVE_REFUNDLISTDATA,\r\n RECEIVE_REFUNDSEARCHRESULTSHEEP,\r\n RefundDataListdata,\r\n RefundFetchActionTypes,\r\n REQUEST_REFUNDLISTDATA,\r\n SET_ISFETCHING,\r\n SheepStatistics,\r\n UPDATE_LOCATION,\r\n UPDATE_FROMYEAR,\r\n UPDATE_TOYEAR,\r\n ReindeerStatistics,\r\n RECEIVE_REFUNDSEARCHRESULTREINDEER,\r\n UPDATE_LOCATIONREINDEER, NumberListItem, UPDATE_TOYEAR_REIN, UPDATE_FROMYEAR_REIN,\r\n} from './types';\r\nimport {ReindeerLocation} from \"../../model/area/reindeerLocation\";\r\n\r\nexport function updateLocation(result: any): RefundFetchActionTypes {\r\n return {\r\n type: UPDATE_LOCATION,\r\n location: result,\r\n };\r\n}\r\n\r\nexport function updateLocationReindeer(result: ReindeerLocation): RefundFetchActionTypes {\r\n return {\r\n type: UPDATE_LOCATIONREINDEER,\r\n location: result,\r\n };\r\n}\r\n\r\nexport function updateFromYear(result: NumberListItem): AnyAction {\r\n return {\r\n type: UPDATE_FROMYEAR,\r\n fromYear: result,\r\n };\r\n}\r\n\r\nexport function updateToYear(result: NumberListItem): AnyAction {\r\n return {\r\n type: UPDATE_TOYEAR,\r\n toYear: result,\r\n };\r\n}\r\nexport function updateFromYearRein(result: NumberListItem): AnyAction {\r\n return {\r\n type: UPDATE_FROMYEAR_REIN,\r\n fromYearRein: result,\r\n };\r\n}\r\nexport function updateToYearRein(result: NumberListItem): AnyAction {\r\n return {\r\n type: UPDATE_TOYEAR_REIN,\r\n toYearRein: result,\r\n };\r\n}\r\nexport function requestResults(): RefundFetchActionTypes {\r\n return {\r\n type: REQUEST_REFUNDLISTDATA,\r\n };\r\n}\r\n\r\nexport function receiveResults(result: RefundDataListdata): RefundFetchActionTypes {\r\n return {\r\n type: RECEIVE_REFUNDLISTDATA,\r\n result: result,\r\n };\r\n}\r\n\r\nexport function receiveSearchResultSheep(result: SheepStatistics): RefundFetchActionTypes {\r\n return {\r\n type: RECEIVE_REFUNDSEARCHRESULTSHEEP,\r\n result: result,\r\n };\r\n}\r\n\r\nexport function receiveSearchResultReindeer(result: ReindeerStatistics): RefundFetchActionTypes {\r\n return {\r\n type: RECEIVE_REFUNDSEARCHRESULTREINDEER,\r\n result: result,\r\n };\r\n}\r\n\r\nexport function setIsFetching(isFetching: boolean): isLoadingAction {\r\n return {\r\n type: SET_ISFETCHING,\r\n isFetching,\r\n };\r\n}\r\n\r\nexport function fetchSearchResultSheep(): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: Dispatch, getState): Promise<any> {\r\n dispatch(requestResults()); // isFetching = true;\r\n const { refundFilter } = getState().refund;\r\n const refundSearchfilter = {\r\n ...refundFilter,\r\n FromYear: refundFilter.FromYear && refundFilter.FromYear.value,\r\n ToYear: refundFilter.ToYear && refundFilter.ToYear.value,\r\n };\r\n const data = await statisticService.getStatisticResultSheep(refundSearchfilter);\r\n dispatch(receiveSearchResultSheep(data));\r\n };\r\n}\r\n\r\nexport function fetchSearchResultReindeer(): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: Dispatch, getState): Promise<any> {\r\n dispatch(requestResults()); // isFetching = true;\r\n const { refundFilter } = getState().refund;\r\n const refundSearchfilter = {\r\n ...refundFilter,\r\n FromYear: refundFilter.FromYearRein && refundFilter.FromYearRein.value,\r\n ToYear: refundFilter.ToYearRein && refundFilter.ToYearRein.value,\r\n };\r\n const data = await statisticService.getStatisticResultReindeer(refundSearchfilter);\r\n \r\n data && dispatch(receiveSearchResultReindeer(data));\r\n };\r\n}\r\n\r\nexport function fetchRefundData(): ThunkAction<void, ApplicationState, null, Action<string>> {\r\n return async function(dispatch: Dispatch): Promise<any> {\r\n dispatch(requestResults()); // isFetching = true;\r\n const data = await statisticService.getStatisticData();\r\n return dispatch(receiveResults(data));\r\n };\r\n}\r\n\r\n","import { Paper, useTheme } from '@material-ui/core';\r\nimport React from 'react';\r\nimport Select, {GroupTypeBase} from 'react-select';\r\nimport { MenuProps } from 'react-select/src/components/Menu';\r\nimport { useLanguage } from '../../i18n';\r\nimport { NumberListItem } from '../../store/refund/types';\r\nimport './dropdownSelector.scss';\r\n\r\ntype Props = {\r\n selectedValue: NumberListItem;\r\n disabledValue?: number;\r\n disabledAbove?: boolean;\r\n onChange: (year: NumberListItem) => void;\r\n selectionList: NumberListItem[];\r\n header?: string;\r\n};\r\n\r\nfunction Menu(props: MenuProps<NumberListItem, false, GroupTypeBase<NumberListItem>>): JSX.Element {\r\n return (\r\n <Paper square className=\"select-year-menu\" {...props.innerProps}>\r\n {props.children}\r\n </Paper>\r\n );\r\n}\r\n\r\nconst components = {\r\n Menu,\r\n IndicatorSeparator: () => null,\r\n};\r\n\r\nexport default function DropdownSelector(props: Props): JSX.Element {\r\n const theme = useTheme();\r\n const l = useLanguage();\r\n const colourStyles = {\r\n control: styles => ({ ...styles, backgroundColor: 'white' }),\r\n option: (styles, { isDisabled, isFocused, isSelected }) => {\r\n const color = theme.palette.secondary.dark;\r\n return {\r\n ...styles,\r\n backgroundColor: isDisabled\r\n ? null\r\n : isSelected\r\n ? theme.palette.secondary.main\r\n : isFocused\r\n ? color\r\n : null,\r\n color: isDisabled ? '#ccc' : isSelected,\r\n cursor: isDisabled ? 'not-allowed' : 'default',\r\n fontWeight: isSelected ? 'bold' : 'normal',\r\n\r\n ':active': {\r\n ...styles[':active'],\r\n backgroundColor: !isDisabled && (isSelected ? theme.palette.secondary.main : color),\r\n },\r\n };\r\n },\r\n };\r\n const ariaLabel = props.header ? props.header : 'select';\r\n const isDisabled = (value: NumberListItem): boolean => {\r\n return props.disabledValue && props.disabledAbove\r\n ? value.value > props.disabledValue\r\n : value.value < props.disabledValue;\r\n };\r\n const handleChange = (value: NumberListItem): void => {\r\n const selected = props.selectionList.find(x => x.value === value.value);\r\n props.onChange(selected);\r\n };\r\n\r\n return (\r\n <label>\r\n <span className=\"select-year-label\">{props.header}</span>\r\n <Select\r\n className=\"select-year\"\r\n value={props.selectedValue}\r\n isOptionDisabled={isDisabled}\r\n isClearable={false}\r\n isSearchable={true}\r\n onChange={handleChange}\r\n name=\"year\"\r\n options={props.selectionList}\r\n aria-label={ariaLabel}\r\n // placeholder={'Ã¥r'}\r\n styles={colourStyles}\r\n components={components}\r\n noOptionsMessage={() => l('searchableSelect.noOptionsMessage')}\r\n />\r\n </label>\r\n );\r\n}\r\n","import React from 'react';\r\nimport DropdownSelector from '../dropdownSelector/dropdownSelector';\r\nimport { NumberListItem } from '../../store/refund/types';\r\nimport { useSelector } from 'react-redux';\r\nimport { ApplicationState, useActionCreator } from '../../store';\r\nimport {updateFromYear, updateFromYearRein, updateToYear, updateToYearRein} from '../../store/refund/action';\r\nimport { RefundAnimal } from '../../constants/refundAnimal';\r\n\r\nimport isNil from 'ramda/es/isNil';\r\nimport './yearSelector.scss';\r\nimport { useLanguage } from '../../i18n';\r\n\r\ntype Props = {\r\n animal: RefundAnimal;\r\n};\r\n\r\nexport default function YearSelector(props: Props): JSX.Element {\r\n const l = useLanguage();\r\n const isSheep = props.animal === RefundAnimal.Sheep;\r\n const listData = useSelector((state: ApplicationState) => state.refund.listData);\r\n const fromYear = useSelector((state: ApplicationState) => state.refund.refundFilter.FromYear);\r\n const toYear = useSelector((state: ApplicationState) => state.refund.refundFilter.ToYear);\r\n const fromYearRein = useSelector((state: ApplicationState) => state.refund.refundFilter.FromYearRein);\r\n const toYearRein = useSelector((state: ApplicationState) => state.refund.refundFilter.ToYearRein);\r\n const setFromYearFilter = useActionCreator(updateFromYear);\r\n const setToYearFilter = useActionCreator(updateToYear);\r\n const setFromYearReinFilter = useActionCreator(updateFromYearRein);\r\n const setToYearReinFilter = useActionCreator(updateToYearRein);\r\n const yearsList = isSheep ? listData.sauerstatningÃ…r : listData.reinerstatningÃ…r;\r\n\r\n function onFromYearChange(year: NumberListItem): void {\r\n isSheep ? setFromYearFilter(year) : setFromYearReinFilter(year);\r\n }\r\n function onToYearChange(year: NumberListItem): void {\r\n isSheep ? setToYearFilter(year) : setToYearReinFilter(year);\r\n }\r\n\r\n return (\r\n <div className=\"year-selector-wrapper\">\r\n <DropdownSelector\r\n selectedValue={isSheep ? fromYear : fromYearRein}\r\n disabledValue={isNil(toYear) ? undefined : ( isSheep ? toYear.value : toYearRein.value )}\r\n disabledAbove={true}\r\n onChange={onFromYearChange}\r\n selectionList={yearsList}\r\n header={l('compensation.from')}\r\n />\r\n <DropdownSelector\r\n selectedValue={isSheep ? toYear : toYearRein}\r\n disabledValue={isNil(fromYear) || isNil(fromYearRein) ? undefined : ( isSheep ? fromYear.value : fromYearRein.value )}\r\n onChange={onToYearChange}\r\n selectionList={yearsList}\r\n header={l('compensation.to')}\r\n />\r\n </div>\r\n );\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport {AreaSearchTypes} from '../../constants/areasearchTypes';\r\nimport {RefundAnimal} from '../../constants/refundAnimal';\r\nimport {useLanguage} from '../../i18n';\r\nimport {useActionCreator} from '../../store';\r\nimport {updateLocation, updateLocationReindeer} from '../../store/refund/action';\r\nimport AreaSearchableSelect from '../searchableSelect/areaSearchableSelect';\r\nimport YearSelector from '../yearSelector/yearSelector';\r\nimport './compensationSelector.scss';\r\nimport {Area} from '../../model/area/area';\r\nimport {ReindeerLocation} from '../../model/area/reindeerLocation';\r\n\r\ntype OwnProps = {\r\n animal: RefundAnimal;\r\n location: Area[] | ReindeerLocation[];\r\n locationPlaceholder: string;\r\n areaSearchType: AreaSearchTypes;\r\n onLocationChange: (location: Area | ReindeerLocation | {}) => void;\r\n};\r\n\r\nexport default function CompensationSelector(props: OwnProps): JSX.Element {\r\n const l = useLanguage();\r\n const updateSheepLocation = useActionCreator(updateLocation);\r\n const updateReindeerLocation = useActionCreator(updateLocationReindeer);\r\n const searchLocation = props.location;\r\n const [locationValue, setLocationValue] = useState<Area[] | ReindeerLocation[]>(searchLocation);\r\n const season =\r\n props.animal === RefundAnimal.Sheep\r\n ? l('compensation.sheepSeason').toUpperCase()\r\n : l('compensation.reindeerSeason').toUpperCase();\r\n \r\n useEffect(() => {\r\n setLocationValue(searchLocation);\r\n }, [props.animal]);\r\n\r\n const onSelectedLocationChange = (selectedOption: any, action: any): void => {\r\n switch (action.action) {\r\n case 'select-option':\r\n if (props.animal === RefundAnimal.Sheep) {\r\n updateSheepLocation(selectedOption);\r\n props.onLocationChange([selectedOption]);\r\n }\r\n else {\r\n updateReindeerLocation(selectedOption);\r\n props.onLocationChange([selectedOption]);\r\n }\r\n setLocationValue([selectedOption]);\r\n break;\r\n case 'remove-value':\r\n setLocationValue([]);\r\n break;\r\n case 'clear':\r\n setLocationValue([]);\r\n break;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"compensation-selector-content\">\r\n <div className=\"location-search\" id=\"locationSearchField\">\r\n <label id=\"locationSearchLabel\">{props.locationPlaceholder}</label>\r\n <AreaSearchableSelect\r\n aria-labelledby=\"locationSearchLabel\"\r\n areas={locationValue}\r\n onChange={onSelectedLocationChange}\r\n placeholder={props.locationPlaceholder}\r\n noOptionsMessage={l('searchableSelect.noOptionsMessage')}\r\n filterMenu={false}\r\n isMultiSelect={false}\r\n type={props.animal === RefundAnimal.Sheep ? AreaSearchTypes.norway : AreaSearchTypes.reindeer}\r\n />\r\n </div>\r\n <div>\r\n <div>{season}</div>\r\n <YearSelector animal={props.animal}/>\r\n </div>\r\n <p className=\"compensation-help-autosearch\">{l('compensation.messageAutosearch')}</p>\r\n </div>\r\n );\r\n}\r\n","import React, {Fragment} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {Bar, BarChart, CartesianGrid, ComposedChart, LabelList, Legend, Line, ResponsiveContainer, Tooltip, XAxis, YAxis,} from 'recharts';\r\nimport {RefundAnimal} from '../../constants/refundAnimal';\r\nimport {sheepCompensationData} from '../../constants/statistics';\r\nimport {ApplicationState} from '../../store';\r\nimport './statisticalInfoBox.scss';\r\nimport {useTheme} from '@material-ui/core';\r\nimport {alpha, Theme} from '@material-ui/core/styles';\r\nimport {createStyles, makeStyles} from '@material-ui/styles';\r\nimport {useLanguage} from '../../i18n';\r\nimport BarChartIcon from '@material-ui/icons/BarChart';\r\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\r\nimport ShowChartIcon from '@material-ui/icons/ShowChart';\r\nimport StopIcon from '@material-ui/icons/Stop';\r\nimport DonutLargeIcon from '@material-ui/icons/DonutLarge';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\n\r\ntype OwnProps = {\r\n animal: RefundAnimal;\r\n header: string;\r\n period: boolean;\r\n fromYear?: number;\r\n toYear?: number;\r\n sheepCompensationData?: sheepCompensationData;\r\n reindeerCompensationData?: object[];\r\n};\r\n\r\ntype Props = OwnProps;\r\n\r\n// function HiddenLabel(props: any): JSX.Element {\r\n// const { x, y, width, height, value } = props;\r\n// const label = `${value}`;\r\n// const labelWidth = label.length;\r\n// const theme = useTheme();\r\n// return (\r\n// <g>\r\n// <text\r\n// x={x}\r\n// y={y}\r\n// //fill={theme.palette.primary.dark}\r\n// //textAnchor=\"middle\"\r\n// //dominantBaseline=\"middle\"\r\n// aria-label={value}\r\n// >\r\n// {' hei'}\r\n// </text>\r\n// {/* ) : (\r\n// <text\r\n// x={x + width - 4 * labelWidth}\r\n// y={y + height / 2}\r\n// fill={theme.palette.common.white}\r\n// textAnchor=\"middle\"\r\n// dominantBaseline=\"middle\"\r\n// >\r\n// {label}\r\n// </text>\r\n// )} */}\r\n// </g>\r\n// );\r\n// }\r\n\r\nfunction RenderLabel(props: any): JSX.Element {\r\n const { x, y, width, height, value } = props;\r\n const label = `${value.toLocaleString()} kr`;\r\n const labelWidth = label.length;\r\n const outside = 7 * labelWidth > width;\r\n const theme = useTheme();\r\n return (\r\n <g aria-hidden={true}>\r\n {' '}\r\n {outside ? (\r\n <text\r\n x={x + width + 4 * labelWidth}\r\n y={y + height / 2}\r\n fill={theme.palette.primary.dark}\r\n textAnchor=\"middle\"\r\n dominantBaseline=\"middle\"\r\n >\r\n {label}\r\n </text>\r\n ) : (\r\n <text\r\n x={x + width - 4 * labelWidth}\r\n y={y + height / 2}\r\n fill={theme.palette.common.white}\r\n textAnchor=\"middle\"\r\n dominantBaseline=\"middle\"\r\n >\r\n {label}\r\n </text>\r\n )}\r\n </g>\r\n );\r\n}\r\n\r\ntype LegendProps = {\r\n type: string;\r\n color: string;\r\n};\r\n\r\nfunction LegendIcon(props: LegendProps): JSX.Element {\r\n return (\r\n <div style={{ color: props.color }}>\r\n {props.type === 'square' && <BarChartIcon />}\r\n {props.type === 'circle' && <FiberManualRecordIcon />}\r\n {props.type === 'line' && <ShowChartIcon />}\r\n {props.type === 'rect' && <StopIcon />}\r\n {props.type === 'star' && <DonutLargeIcon />}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CustomizedLegendBarChart(props: any): JSX.Element {\r\n const { payload } = props;\r\n\r\n return (\r\n <ul className=\"legend-list\" aria-hidden={true}>\r\n {payload.map((entry, index) => (\r\n <li className=\"legend-list-item\" key={`item-${index}`}>\r\n <LegendIcon type={entry.type} color={entry.color} />\r\n <span>{entry.value}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n}\r\n\r\nfunction CompensationGraphYAxizTick(props: any): JSX.Element {\r\n const { x, y, payload } = props;\r\n return (\r\n <g aria-hidden={true}>\r\n <text x={x} y={y} dy={5} textAnchor=\"end\" fill=\"#33333\">\r\n {payload.value.length > 16 ? `${payload.value.slice(0, 15)}...` : payload.value}\r\n </text>\r\n </g>\r\n );\r\n}\r\n\r\nfunction CompensationGraphYAxizTickMobile(props: any): JSX.Element {\r\n const { x, y, payload } = props;\r\n return (\r\n <g aria-hidden={true}>\r\n <text x={x} y={y} dy={5} textAnchor=\"end\" fill=\"#33333\">\r\n {payload.value.length > 5 ? `${payload.value.slice(0, 5)}...` : payload.value}\r\n </text>\r\n </g>\r\n );\r\n}\r\n\r\nfunction CompensationGraphXAxizTick(props: any): JSX.Element {\r\n const { x, y, payload } = props;\r\n\r\n return (\r\n <g transform={`translate(${x},${y})`} aria-hidden={true}>\r\n <text x={0} y={0} dy={16} textAnchor=\"middle\" fill=\"#333333\">\r\n {parseInt(payload.value).toLocaleString()}\r\n </text>\r\n </g>\r\n );\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n tooltipWrapper: {\r\n backgroundColor: theme.palette.common.white,\r\n border: `1px solid ${theme.palette.primary.light}`,\r\n padding: '4px 6px 4px 10px',\r\n lineHeight: '0.7',\r\n minWidth: '160px',\r\n },\r\n tooltipLabel: {\r\n fontWeight: 'bold',\r\n },\r\n tooltipRow: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n gridTemplateColumns: '150px 1fr',\r\n },\r\n tooltipRowNOK: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n span: {\r\n paddingRight: '10px',\r\n },\r\n })\r\n);\r\n\r\nfunction CustomTooltip(props: any): JSX.Element {\r\n const classes = useStyles({});\r\n const { active } = props;\r\n if (active) {\r\n const { payload, label } = props;\r\n return (\r\n <div className={classes.tooltipWrapper}>\r\n <p className={classes.tooltipLabel}>{`${label}`}</p>\r\n {payload.map((row, i) => (\r\n <p className={classes.tooltipRow} key={i}>\r\n <span className={classes.span}>{`${row.name} `}</span>\r\n <span>{row.value.toLocaleString()}</span>\r\n </p>\r\n ))}\r\n </div>\r\n );\r\n }\r\n return null;\r\n}\r\n\r\nfunction CustomNOKTooltip(props: any): JSX.Element {\r\n const classes = useStyles({});\r\n const { active } = props;\r\n if (active) {\r\n const { payload, label, animal } = props;\r\n return (\r\n <div className={classes.tooltipWrapper}>\r\n <p className={classes.tooltipLabel} title={'test'}>{`${label}`}</p>\r\n {payload &&\r\n payload.map((row, i) => (\r\n <p className={classes.tooltipRowNOK} key={i}>\r\n <span className={classes.span}>{`${row.name} `}</span>\r\n <br />\r\n <span>{`${row.value.toLocaleString()} kr`} </span>\r\n </p>\r\n ))}\r\n </div>\r\n );\r\n }\r\n return null;\r\n}\r\n\r\nexport default function StatisticalInfoBox(props: Props): JSX.Element {\r\n const l = useLanguage();\r\n const sheepData = useSelector((state: ApplicationState) =>\r\n state.refund.sheepStatistics.sheepCompensationArea\r\n .filter(obj => obj.area !== 'Totalt')\r\n .sort((a, b) => a.area.localeCompare(b.area))\r\n );\r\n const reindeerData = useSelector((state: ApplicationState) =>\r\n state.refund.reindeerStatistics.reindeerCompensationArea\r\n .filter(obj => obj.area !== 'Totalt')\r\n .sort((a, b) => a.area.localeCompare(b.area))\r\n );\r\n const apiData = props.animal === RefundAnimal.Sheep ? sheepData : reindeerData;\r\n const theme = useTheme();\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n const boxWidth = '100%';\r\n const boxHeight = apiData.length * 30 + 90;\r\n const YtickWidth = mobileScreen ? 50 : 140;\r\n \r\n return (\r\n <div>\r\n <h3>{props.header} </h3>\r\n <div className=\"statisticalInfoBox\">\r\n <div className=\"firstInfoBox\">\r\n {props.animal === RefundAnimal.Sheep ? (\r\n <Fragment>\r\n <div className=\"header\">{l('refund.sheepCompensationGraphTitle')}</div>\r\n\r\n <ResponsiveContainer width={boxWidth} height={boxHeight}>\r\n {/* */}\r\n <ComposedChart\r\n data={sheepData}\r\n margin={{ left: 30, right: 30 }}\r\n layout=\"vertical\"\r\n aria-label={l('refund.graphicalImage') + l('refund.sheepCompensationGraphTitle')}\r\n >\r\n <CartesianGrid\r\n horizontal={false}\r\n strokeDasharray=\"3 3\"\r\n fill=\"white\"\r\n aria-hidden={true}\r\n />\r\n <XAxis\r\n type=\"number\"\r\n height={50}\r\n tickLine={false}\r\n tick={CompensationGraphXAxizTick}\r\n aria-hidden={true}\r\n />\r\n <YAxis\r\n dataKey={'area'}\r\n type=\"category\"\r\n width={YtickWidth}\r\n tickLine={false}\r\n tick={\r\n mobileScreen ? CompensationGraphYAxizTickMobile : CompensationGraphYAxizTick\r\n }\r\n tickMargin={10}\r\n aria-hidden={true}\r\n />\r\n <Tooltip isAnimationActive={false} content={<CustomTooltip />} />\r\n <Legend\r\n payload={[\r\n {\r\n value: l('refund.normalLoss'),\r\n type: 'square',\r\n id: '1',\r\n color: theme.palette.primary.light,\r\n },\r\n {\r\n value: l('refund.totalCompensated'),\r\n type: 'square',\r\n id: '2',\r\n color: theme.palette.primary.dark,\r\n },\r\n { value: l('refund.totalLoss'), type: 'circle', id: '3', color: '#86660E' },\r\n ]}\r\n aria-hidden={true}\r\n content={<CustomizedLegendBarChart />}\r\n />\r\n <Bar\r\n stackId=\"a\"\r\n dataKey={'normalLossTotal'}\r\n name={l('refund.normalLoss')}\r\n fill={theme.palette.primary.light}\r\n maxBarSize={30}\r\n isAnimationActive={false}\r\n />\r\n <Bar\r\n stackId=\"a\"\r\n dataKey={'compensatedTotal'}\r\n name={l('refund.totalCompensated')}\r\n fill={theme.palette.primary.dark}\r\n maxBarSize={30}\r\n isAnimationActive={false}\r\n />\r\n <Line\r\n type=\"linear\"\r\n dataKey=\"totalLossTotal\"\r\n name={l('refund.totalLoss')}\r\n stroke={alpha(theme.palette.common.black, 0)}\r\n fill=\"#86660E\"\r\n isAnimationActive={false}\r\n />\r\n </ComposedChart>\r\n </ResponsiveContainer>\r\n </Fragment>\r\n ) : (\r\n <Fragment>\r\n <div className=\"header\">{l('refund.reindeerCompensationGraphTitle')}</div>\r\n <ResponsiveContainer width={boxWidth} height={boxHeight}>\r\n <ComposedChart\r\n data={apiData}\r\n margin={{ left: 30, right: 30 }}\r\n layout=\"vertical\"\r\n aria-label={l('refund.graphicalImage') + l('refund.reindeerCompensationGraphTitle')}\r\n >\r\n <CartesianGrid\r\n horizontal={false}\r\n strokeDasharray=\"3 3\"\r\n fill=\"white\"\r\n aria-hidden={true}\r\n />\r\n <XAxis\r\n type=\"number\"\r\n height={50}\r\n tickLine={false}\r\n tick={CompensationGraphXAxizTick}\r\n aria-hidden={true}\r\n />\r\n <YAxis\r\n dataKey={'area'}\r\n type=\"category\"\r\n width={YtickWidth}\r\n tickLine={false}\r\n tick={\r\n mobileScreen ? CompensationGraphYAxizTickMobile : CompensationGraphYAxizTick\r\n }\r\n tickMargin={10}\r\n aria-hidden={true}\r\n />\r\n <Tooltip isAnimationActive={false} content={<CustomTooltip />} aria-hidden={true} />\r\n <Legend\r\n payload={[\r\n {\r\n value: l('refund.totalCompensated'),\r\n type: 'square',\r\n id: '1',\r\n color: theme.palette.primary.dark,\r\n },\r\n {\r\n value: l('refund.appliedLoss'),\r\n type: 'square',\r\n id: '2',\r\n color: theme.palette.primary.main,\r\n },\r\n\r\n {\r\n value: l('refund.totalLoss'),\r\n type: 'square',\r\n id: '3',\r\n color: theme.palette.primary.light,\r\n },\r\n ]}\r\n content={<CustomizedLegendBarChart />}\r\n />\r\n {/* <Area type=\"monotone\" dataKey=\"amt\" stroke=\"#f2f2f2\" fill=\"#f2f2f2\" /> */}\r\n <Bar\r\n stackId=\"b\"\r\n dataKey={'compensatedTotal'}\r\n name={l('refund.totalCompensated')}\r\n fill={theme.palette.primary.dark}\r\n legendType=\"square\"\r\n maxBarSize={40}\r\n isAnimationActive={false}\r\n />\r\n <Bar\r\n stackId=\"a\"\r\n dataKey={'appliedLossTotal'}\r\n name={l('refund.appliedLoss')}\r\n fill={theme.palette.primary.main}\r\n legendType=\"square\"\r\n maxBarSize={40}\r\n isAnimationActive={false}\r\n />\r\n <Bar\r\n stackId=\"c\"\r\n dataKey={'totalLossTotal'}\r\n name={l('refund.totalLoss')}\r\n fill={theme.palette.primary.light}\r\n legendType=\"square\"\r\n maxBarSize={40}\r\n isAnimationActive={false}\r\n />\r\n </ComposedChart>\r\n </ResponsiveContainer>\r\n </Fragment>\r\n )}\r\n </div>\r\n <div className=\"secondInfobox\">\r\n <div className=\"header\">{l('refund.compensationAmountGraphTitle')}</div>\r\n <ResponsiveContainer width={boxWidth} height={boxHeight}>\r\n <BarChart\r\n margin={{ left: 30, right: 50 }}\r\n data={apiData}\r\n layout=\"vertical\"\r\n maxBarSize={400}\r\n aria-label={l('refund.graphicalImage') + l('refund.compensationAmountGraphTitle')}\r\n >\r\n <CartesianGrid horizontal={false} strokeDasharray=\"3 3\" fill=\"white\" aria-hidden={true} />\r\n <XAxis type=\"number\" height={50} tickLine={false} tick={CompensationGraphXAxizTick} />\r\n <YAxis\r\n dataKey=\"area\"\r\n type=\"category\"\r\n width={YtickWidth}\r\n // height={50}\r\n tick={mobileScreen ? CompensationGraphYAxizTickMobile : CompensationGraphYAxizTick}\r\n tickLine={false}\r\n tickMargin={10}\r\n />\r\n <Tooltip isAnimationActive={false} content={<CustomNOKTooltip />} />\r\n <Legend\r\n payload={[\r\n {\r\n value: l('refund.compensationAmount'),\r\n type: 'square',\r\n id: '1',\r\n color: theme.palette.primary.main,\r\n },\r\n ]}\r\n content={<CustomizedLegendBarChart />}\r\n />\r\n <Bar\r\n dataKey={'compensationAmount'}\r\n name={l('refund.compensationAmount')}\r\n fill={theme.palette.primary.main}\r\n legendType=\"square\"\r\n maxBarSize={30}\r\n isAnimationActive={false}\r\n >\r\n <LabelList dataKey={'compensationAmount'} content={<RenderLabel />} />\r\n </Bar>\r\n </BarChart>\r\n </ResponsiveContainer>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n} from '@material-ui/core';\r\nimport React, { Fragment } from 'react';\r\nimport { DamageCause } from '../../constants/damageCause';\r\nimport { sheepCompensationDamageCause } from '../../constants/statistics';\r\nimport { useLanguage } from '../../i18n';\r\nimport { getStringFromEnum } from '../tooltip/tooltip.util';\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from '../expansionPanel/expansionPanel';\r\nimport './damageCauseTable.scss';\r\n\r\ntype Props = {\r\n apiData: sheepCompensationDamageCause[];\r\n};\r\n\r\nexport default function DamageCauseTableSmall(props: Props): JSX.Element {\r\n const l = useLanguage();\r\n return (\r\n <Fragment>\r\n {props.apiData.map((row, key) => (\r\n <ExpansionPanel key={key} theme=\"dark\">\r\n <ExpansionPanelTitle theme=\"dark\">\r\n {row.artID === 'Totalt'\r\n ? 'Totalt'\r\n : l(`carnivore.${getStringFromEnum(DamageCause, row.artID)}`)}\r\n </ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <div>\r\n <Table size=\"small\" className=\"damage-cause-table-small\">\r\n <TableBody>\r\n <TableRow>\r\n <TableCell>\r\n {l('refund.compensatedSheep')}\r\n </TableCell>\r\n <TableCell align=\"right\" >\r\n {row.compensatedSheep.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n {l('refund.compensatedLamb')}\r\n </TableCell>\r\n <TableCell align=\"right\" >\r\n {row.compensatedLamb.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n {l('refund.compensatedTotal')}\r\n </TableCell>\r\n <TableCell align=\"right\" >\r\n {row.compensatedTotal.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n {l('refund.compensatedPercent')}\r\n </TableCell>\r\n <TableCell align=\"right\" >\r\n {row.percent} %\r\n </TableCell>\r\n </TableRow>\r\n </TableBody>\r\n </Table>\r\n </div>\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n ))}\r\n </Fragment>\r\n );\r\n}\r\n","import { Table, TableBody, TableCell, TableHead, TableRow, Theme } from '@material-ui/core/';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Cell, Legend, Pie, PieChart, ResponsiveContainer } from 'recharts';\r\nimport { DamageCause } from '../../constants/damageCause';\r\nimport { useLanguage } from '../../i18n';\r\nimport { getColorFromDamageCauseId } from '../../map/styles';\r\nimport { ApplicationState } from '../../store';\r\nimport { CustomizedLegendBarChart } from '../statisticalInfoBox/statisticalInfoBox';\r\nimport { getStringFromEnum } from '../tooltip/tooltip.util';\r\nimport './damageCauseTable.scss';\r\nimport DamageCauseTableSmall from './damageCauseTableSmall';\r\nimport {reindeerCompensationDamageCause, sheepCompensationDamageCause} from '../../constants/statistics';\r\nimport {useMobileBreakpointInnsyn} from '../../hooks/breakpoint';\r\nimport { Payload } from 'recharts/types/component/DefaultLegendContent';\r\n\r\ntype PieProps = {\r\n data: (sheepCompensationDamageCause | reindeerCompensationDamageCause)[];\r\n};\r\n\r\nfunction customPieLabel(props: any): JSX.Element {\r\n const RADIAN = Math.PI / 180;\r\n const { cx, cy, midAngle, innerRadius, outerRadius, percent } = props;\r\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\r\n const x = cx + 1.6 * radius * Math.cos(-midAngle * RADIAN); //\r\n const y = cy + 1.6 * radius * Math.sin(-midAngle * RADIAN); //\r\n return (\r\n <text x={x} y={y} fill=\"#333\" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline=\"central\">\r\n {percent < 0.5 ? null : `${percent.toFixed(1)}%`}\r\n </text>\r\n );\r\n}\r\n\r\nfunction getLegendPayLoad(id: string, value: string): Payload {\r\n const load: Payload = {\r\n value: value,\r\n type: 'circle',\r\n id: id,\r\n color: getColorFromDamageCauseId(id),\r\n };\r\n return load;\r\n}\r\n\r\nexport function DamageCausePieChart(props: PieProps): JSX.Element {\r\n const l = useLanguage();\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n const boxWidth = mobileScreen ? '100%' : 400;\r\n const outerRadius = mobileScreen ? 90 : 100;\r\n const innerRadius = mobileScreen ? 50 : 60;\r\n const notEmptyData = props.data?.reduce((sum: number, row) => sum + (row?.compensatedTotal ?? 0), 0) !== 0;\r\n return (\r\n <>\r\n {notEmptyData && \r\n <ResponsiveContainer width={boxWidth} height={400}>\r\n <PieChart aria-hidden={true} margin={{ bottom: 20 }}>\r\n <Pie\r\n data={props.data}\r\n dataKey=\"percent\"\r\n outerRadius={outerRadius}\r\n innerRadius={innerRadius}\r\n labelLine={false}\r\n isAnimationActive={false}\r\n label={customPieLabel}\r\n aria-hidden={true}\r\n >\r\n {props.data.map((row, key) => (\r\n <Cell key={key} fill={getColorFromDamageCauseId(row.artID)} aria-hidden={true} />\r\n ))}\r\n </Pie>\r\n {/* <Tooltip payload={pieChartData.map(row => getTooltipPayLoad(row.artID, row.percent))} active={true} separator=\"% \" /> */}\r\n <Legend\r\n verticalAlign=\"bottom\"\r\n payload={props.data.map(row =>\r\n getLegendPayLoad(row.artID, l(`carnivore.${getStringFromEnum(DamageCause, row.artID)}`))\r\n )}\r\n content={<CustomizedLegendBarChart />}\r\n />\r\n </PieChart>\r\n </ResponsiveContainer>\r\n}\r\n</>\r\n );\r\n}\r\n\r\nexport default function DamageCauseTableSheep(): JSX.Element {\r\n const damageCauseData = useSelector((state: ApplicationState) => state.refund.sheepStatistics.damageCauseList);\r\n const pieChartData = damageCauseData.filter(row => row.artID !== 'Totalt');\r\n const l = useLanguage();\r\n const mobileScreen = useMobileBreakpointInnsyn();\r\n\r\n return (\r\n <div className=\"damage-cause\">\r\n <h3>{l('refund.compensationCarnivoreTitle')}</h3>\r\n <div className=\"damage-cause-table-and-chart\">\r\n {mobileScreen ? (\r\n <DamageCauseTableSmall apiData={damageCauseData} />\r\n ) : (\r\n <Table size=\"small\" className=\"damage-cause-table\">\r\n <TableHead>\r\n <TableRow>\r\n <TableCell >{l('refund.species')}</TableCell>\r\n <TableCell >{l('refund.sheep')}</TableCell>\r\n <TableCell >{l('refund.lamb')}</TableCell>\r\n <TableCell >{l('refund.compensatedTotal')}</TableCell>\r\n <TableCell >{l('refund.compensatedPercent')}</TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {damageCauseData.map(row => (\r\n <TableRow key={row.artID} hover={true}>\r\n <TableCell scope=\"row\">\r\n {row.artID === 'Totalt'\r\n ? 'Totalt'\r\n : l(`carnivore.${getStringFromEnum(DamageCause, row.artID)}`)}\r\n </TableCell>\r\n <TableCell>{row.compensatedSheep.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedLamb.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedTotal.toLocaleString()}</TableCell>\r\n <TableCell>{row.percent.toFixed(1)} %</TableCell>\r\n </TableRow>\r\n ))}\r\n </TableBody>\r\n </Table>\r\n )}\r\n <div className=\"damage-cause-pie-chart\">\r\n <DamageCausePieChart data={pieChartData} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport React, { Fragment } from 'react';\r\nimport { DamageCause } from '../../constants/damageCause';\r\nimport { reindeerCompensationDamageCause } from '../../constants/statistics';\r\nimport { useLanguage } from '../../i18n';\r\nimport { getStringFromEnum } from '../tooltip/tooltip.util';\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from '../expansionPanel/expansionPanel';\r\n\r\ntype Props = {\r\n apiData: reindeerCompensationDamageCause[];\r\n};\r\n\r\nexport default function DamageCauseTableReindeerSmall(props: Props): JSX.Element {\r\n const l = useLanguage();\r\n return (\r\n <Fragment>\r\n {props.apiData.map((row, key) => (\r\n <ExpansionPanel key={key} theme=\"dark\">\r\n <ExpansionPanelTitle theme=\"dark\">\r\n {row.artID === 'Totalt'\r\n ? 'Totalt'\r\n : l(`carnivore.${getStringFromEnum(DamageCause, row.artID)}`)}\r\n </ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <div>\r\n <div>\r\n <Table size=\"small\" className=\"damage-cause-table-small\">\r\n <TableBody>\r\n <TableRow>\r\n <TableCell>\r\n Antall kalv erstattet\r\n </TableCell>\r\n <TableCell align=\"right\">\r\n {row.compensatedCalf.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n Antall okserein erstattet\r\n </TableCell>\r\n <TableCell align=\"right\">\r\n {row.compensatedBull.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n Antall simlerein erstattet\r\n </TableCell>\r\n <TableCell align=\"right\">\r\n {row.compensatedDoe.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n Antall kjørerein erstattet\r\n </TableCell>\r\n <TableCell align=\"right\">\r\n {row.compensatedDriving.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n Totalt antall erstattet\r\n </TableCell>\r\n <TableCell align=\"right\">\r\n {row.compensatedTotal.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell>\r\n Artens andel av totalt tap\r\n </TableCell>\r\n <TableCell align=\"right\">\r\n {row.percent} %\r\n </TableCell>\r\n </TableRow>\r\n </TableBody>\r\n </Table>\r\n </div>\r\n </div>\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n ))}\r\n </Fragment>\r\n );\r\n}\r\n","import { Table, TableBody, TableCell, TableHead, TableRow } from '@material-ui/core/';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { DamageCause } from '../../constants/damageCause';\r\nimport { useLanguage } from '../../i18n';\r\nimport { ApplicationState } from '../../store';\r\nimport {DamageCausePieChart} from '../damageCauseTable/damageCauseTable';\r\nimport '../damageCauseTable/damageCauseTable.scss';\r\nimport { getStringFromEnum } from '../tooltip/tooltip.util';\r\nimport DamageCauseTableReindeerSmall from './damageCauseTableReindeerSmall';\r\nimport {useTabletBreakpointInnsyn} from '../../hooks/breakpoint';\r\n\r\nexport default function DamageCauseTableReindeer(): JSX.Element {\r\n const damageCauseData = useSelector((state: ApplicationState) => state.refund.reindeerStatistics.damageCauseList);\r\n const pieChartData = damageCauseData.filter(row => row.artID !== 'Totalt');\r\n const l = useLanguage();\r\n const mediumScreen = useTabletBreakpointInnsyn();\r\n\r\n return (\r\n <div className=\"damage-cause\">\r\n <h3>{l('refund.compensationCarnivoreTitle')}</h3>\r\n <div className=\"damage-cause-table-and-chart\">\r\n {mediumScreen ? (\r\n <DamageCauseTableReindeerSmall apiData={damageCauseData} />\r\n ) : (\r\n <Table size=\"small\" className=\"damage-cause-table\">\r\n <TableHead>\r\n <TableRow>\r\n <TableCell>{l('refund.species')}</TableCell>\r\n <TableCell>{l('refund.calf')}</TableCell>\r\n <TableCell>{l('refund.bull')}</TableCell>\r\n <TableCell>{l('refund.doe')}</TableCell>\r\n <TableCell>{l('refund.driving')}</TableCell>\r\n <TableCell>{l('refund.compensatedTotal')}</TableCell>\r\n <TableCell>{l('refund.compensatedPercent')}</TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {damageCauseData.map(row => (\r\n <TableRow key={row.artID} hover={true}>\r\n <TableCell scope=\"row\">\r\n {row.artID === 'Totalt'\r\n ? 'Totalt'\r\n : l(`carnivore.${getStringFromEnum(DamageCause, row.artID)}`)}\r\n </TableCell>\r\n <TableCell>{row.compensatedCalf.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedBull.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedDoe.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedDriving.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedTotal.toLocaleString()}</TableCell>\r\n <TableCell>{row.percent.toFixed(1)} %</TableCell>\r\n </TableRow>\r\n ))}\r\n </TableBody>\r\n </Table>\r\n )}\r\n <div className=\"damage-cause-pie-chart\">\r\n <DamageCausePieChart data={pieChartData} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Theme,\r\n} from '@material-ui/core/';\r\nimport {createStyles, makeStyles} from '@material-ui/styles';\r\nimport React, {Fragment} from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {alpha} from '@material-ui/core/styles';\r\nimport {useLanguage} from '../../i18n';\r\nimport '../statisticalTable/statisticalTable.scss';\r\nimport {useDesktopBreakpointInnsyn} from '../../hooks/breakpoint';\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from '../expansionPanel/expansionPanel';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n marginTop: '12px',\r\n maxWidth: '1308px',\r\n backgroundColor: theme.palette.background.paper,\r\n \r\n '& th': {\r\n fontSize: '16px',\r\n fontWeight: 'bold',\r\n padding: '6px 8px 6px 8px',\r\n },\r\n '& th:first-of-type': {\r\n textAlign: 'left',\r\n },\r\n\r\n '& td': {\r\n border: 0,\r\n fontSize: '16px',\r\n textAlign: 'right',\r\n padding: '8px 16px',\r\n },\r\n '& td:first-of-type': {\r\n textAlign: 'left',\r\n },\r\n\r\n '& tbody tr:nth-of-type(2n + 1)': {\r\n backgroundColor: alpha(theme.palette.grey[200], 0.5),\r\n },\r\n },\r\n alternateColumn: {\r\n // backgroundColor: alpha(theme.palette.grey[400], 0.2),\r\n },\r\n alternateColumn2: {\r\n backgroundColor: alpha(theme.palette.grey[400], 0.2),\r\n },\r\n head: {\r\n border: `1px solid ${theme.palette.grey[300]}`,\r\n },\r\n expandableTitle: {\r\n backgroundColor: '#D0E3E2',\r\n color: '#4C6E6E',\r\n },\r\n gapCell: {\r\n minWidth: 52,\r\n maxWidth: 52,\r\n },\r\n areaColumn: {\r\n minWidth: '175px',\r\n maxWidth: '255px',\r\n },\r\n applicationColumn: {\r\n minWidth: '75px',\r\n maxWidth: '85px',\r\n \r\n },\r\n compensationColumn: {\r\n minWidth: '130px',\r\n maxWidth: '130px',\r\n },\r\n alignCenter: {\r\n textAlign: 'center', \r\n },\r\n alignRight: {\r\n textAlign: 'right',\r\n }\r\n })\r\n);\r\n\r\nexport default function StatisticalTableReindeer(): JSX.Element {\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const apiData = useSelector((state: ApplicationState) =>\r\n state.refund.reindeerStatistics.reindeerCompensationArea.filter(row => row.year === 'ALLE')\r\n );\r\n const total = apiData.filter(obj => obj.area === 'Totalt');\r\n const sorted = apiData\r\n .filter(obj => obj.area !== 'Totalt')\r\n .sort((a, b) => a.area.localeCompare(b.area));\r\n const largeScreen = useDesktopBreakpointInnsyn();\r\n return (\r\n <div className={'statistics-table-wrapper'} id=\"statistics-table\">\r\n {largeScreen ? (\r\n <Fragment>\r\n <Table className={classes.root}>\r\n <TableHead className={classes.head}>\r\n <TableRow>\r\n <TableCell className={classes.areaColumn}>{l('refund.area')}</TableCell>\r\n <TableCell className={`${classes.applicationColumn} ${classes.alignCenter}`}>{l('refund.numberOfApplications')}</TableCell>\r\n <TableCell className={`${classes.compensationColumn} ${classes.alignCenter}`}>{l('refund.compensationAmount')}</TableCell>\r\n <TableCell colSpan={3} align={'center'}>{l('refund.totalLoss')}</TableCell>\r\n <TableCell colSpan={3} align={'center'} >{l('refund.appliedLoss')}</TableCell>\r\n <TableCell colSpan={4} className={classes.alignCenter}>{l('refund.compensated')}</TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell className={classes.gapCell} />\r\n <TableCell />\r\n <TableCell />\r\n <TableCell className={classes.alignRight}>{l('refund.calf')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.bull')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.doe')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.calf')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.bull')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.doe')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.calf')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.bull')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.doe')}</TableCell>\r\n <TableCell className={classes.alignRight}>{l('refund.driving')}</TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {sorted.map(row => (\r\n <TableRow key={row.area} hover={true}>\r\n <TableCell scope=\"row\" className={classes.areaColumn}>{row.area}</TableCell>\r\n <TableCell className={`${classes.applicationColumn} ${classes.alternateColumn2}`}>{row.applications.toLocaleString()}</TableCell>\r\n <TableCell className={`${classes.compensationColumn} ${classes.alternateColumn2}`}>{row.compensationAmount.toLocaleString()} kr</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.totalLossCalf.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.totalLossBull.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.totalLossDoe.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn2}>{row.appliedLossCalf.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn2}>{row.appliedLossBull.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn2}>{row.appliedLossDoe.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedCalf.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedBull.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedDoe.toLocaleString()}</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedDriving.toLocaleString()}</TableCell>\r\n </TableRow>\r\n ))}\r\n {sorted.length > 1\r\n ? total.map(row => (\r\n <TableRow key={row.area} hover={true}>\r\n <TableCell scope=\"row\" className={classes.areaColumn}>{row.area}</TableCell>\r\n <TableCell className={`${classes.applicationColumn} ${classes.alternateColumn2}`}>{row.applications.toLocaleString()}</TableCell>\r\n <TableCell className={`${classes.compensationColumn} ${classes.alternateColumn2}`}>{row.compensationAmount.toLocaleString()} kr</TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.totalLossCalf.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.totalLossBull.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.totalLossDoe.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn2}>{row.appliedLossCalf.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn2}>{row.appliedLossBull.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn2}>{row.appliedLossDoe.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedCalf.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedBull.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedDoe.toLocaleString()} </TableCell>\r\n <TableCell className={classes.alternateColumn}>{row.compensatedDriving.toLocaleString()} </TableCell>\r\n </TableRow>\r\n ))\r\n : null}\r\n </TableBody>\r\n </Table>\r\n </Fragment>\r\n ) : (\r\n apiData\r\n .filter(row => row.year === 'ALLE')\r\n .map((row, key) => (\r\n <ExpansionPanel key={key} theme=\"dark\">\r\n <ExpansionPanelTitle theme=\"dark\">\r\n {row.area}\r\n </ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <div>\r\n <div>\r\n <b>{l('refund.numberOfApplications')}: </b> {row.applications.toLocaleString()}\r\n </div>\r\n <div>\r\n <b>{l('refund.compensationAmount')}: </b>{' '}\r\n {row.compensationAmount.toLocaleString()} kr\r\n </div>\r\n\r\n <div>\r\n <Table size=\"small\" className={classes.root}>\r\n <TableHead className={classes.head}>\r\n <TableRow>\r\n <TableCell className=\"small-table-reindeer-left-column\"/>\r\n <TableCell>\r\n {l('refund.totalLoss')}\r\n </TableCell>\r\n <TableCell\r\n >\r\n {l('refund.appliedLoss')}\r\n </TableCell>\r\n <TableCell\r\n >\r\n {l('refund.totalCompensated')}\r\n </TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n <TableRow hover={true}> \r\n <TableCell className=\"small-table-reindeer-left-column\">{l('refund.calf')}</TableCell>\r\n <TableCell>{row.totalLossCalf.toLocaleString()}</TableCell>\r\n <TableCell>{row.appliedLossCalf.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedCalf.toLocaleString()}</TableCell>\r\n </TableRow>\r\n <TableRow hover={true}>\r\n <TableCell className=\"small-table-reindeer-left-column\">{l('refund.bull')}</TableCell>\r\n <TableCell>{row.totalLossBull.toLocaleString()}</TableCell>\r\n <TableCell>{row.appliedLossBull.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedBull.toLocaleString()}</TableCell>\r\n </TableRow>\r\n <TableRow hover={true}>\r\n <TableCell className=\"small-table-reindeer-left-column\">{l('refund.doe')}</TableCell>\r\n <TableCell>{row.totalLossDoe.toLocaleString()}</TableCell>\r\n <TableCell>{row.appliedLossDoe.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedDoe.toLocaleString()}</TableCell>\r\n </TableRow>\r\n <TableRow hover={true}>\r\n <TableCell className=\"small-table-reindeer-left-column\">{l('refund.driving')}</TableCell>\r\n <TableCell>-</TableCell>\r\n <TableCell>-</TableCell>\r\n <TableCell>{row.compensatedDriving.toLocaleString()}</TableCell>\r\n </TableRow> \r\n </TableBody>\r\n </Table>\r\n </div>\r\n </div>\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n ))\r\n )}\r\n </div>\r\n );\r\n}\r\n","// import React from 'react';\r\n// import './yearperiodpicker.css';\r\n// import Select from '@material-ui/core/Select';\r\n// import MenuItem from '@material-ui/core/MenuItem';\r\n// import { createStyles, Theme, useTheme } from '@material-ui/core';\r\n// import { makeStyles } from '@material-ui/styles';\r\nimport { NumberListItem } from '../../store/refund/types';\r\n\r\n// type Props = {\r\n// fromYear: NumberListItem;\r\n// toYear: NumberListItem;\r\n// onFromChange: (value: number, label: string) => void;\r\n// onToChange: (value: number, label: string) => void;\r\n// yearsList: NumberListItem[];\r\n// };\r\n\r\nexport function createLabel(fromYear: NumberListItem, toYear: NumberListItem): string {\r\n if (!fromYear) {\r\n if (!toYear) {\r\n return '';\r\n }\r\n return toYear.label;\r\n }\r\n if (!toYear) {\r\n return fromYear.label;\r\n }\r\n if (fromYear.value === toYear.value) {\r\n return fromYear.label;\r\n } else {\r\n return `${fromYear.label} - ${toYear.label}`;\r\n }\r\n}\r\n// const useStyles = makeStyles((theme: Theme) =>\r\n// createStyles({\r\n// root: {\r\n// width: '50px',\r\n// border: `0.2px solid ${theme.palette.background.paper}`,\r\n// },\r\n// dropdownStyle: {\r\n// maxHeight: 200,\r\n// },\r\n// })\r\n// );\r\n\r\n// export default function Yearperiodpicker(props: Props): JSX.Element {\r\n// const classes = useStyles({});\r\n\r\n// function handleFromYearChange(event: React.ChangeEvent<{ name?: string; value: number }>): void {\r\n// if (event.target.value <= props.toYear.value) {\r\n// const { label } = props.yearsList.find(x => x.value === event.target.value);\r\n// props.onFromChange(event.target.value, label);\r\n// }\r\n// }\r\n// function handleToYearChange(event: React.ChangeEvent<{ name?: string; value: number }>): void {\r\n// if (event.target.value >= props.fromYear.value) {\r\n// const { label } = props.yearsList.find(x => x.value === event.target.value);\r\n// props.onToChange(event.target.value, label);\r\n// }\r\n// }\r\n// const label = createLabel(props.fromYear, props.toYear);\r\n\r\n// return (\r\n// <div>\r\n// {/* <Inputbase value={label}> */}\r\n// <Select\r\n// native\r\n// classes={{ root: classes.root }}\r\n// MenuProps={{ classes: { paper: classes.dropdownStyle } }}\r\n// value={props.fromYear.value}\r\n// onChange={handleFromYearChange}\r\n// >\r\n// {props.yearsList !== undefined\r\n// ? props.yearsList.map((opt, i) => (\r\n// <MenuItem key={i} value={opt.value} disabled={opt.value > props.toYear.value}>\r\n// {' '}\r\n// {opt.label}{' '}\r\n// </MenuItem>\r\n// ))\r\n// : null}\r\n// </Select>\r\n// {/* </Inputbase> */}\r\n\r\n// {/* <Select classes={{ root: classes.root }} MenuProps={{ classes: { paper: classes.dropdownStyle } }} value={props.toYear.value} onChange={handleToYearChange}>\r\n// {props.yearsList !== undefined\r\n// ? props.yearsList.map((opt, i) => (\r\n// <MenuItem key={i} value={opt.value} disabled={opt.value < props.fromYear.value}>\r\n// {' '}\r\n// {opt.label}{' '}\r\n// </MenuItem>\r\n// ))\r\n// : null}\r\n// </Select> */}\r\n// </div>\r\n// );\r\n// }\r\n","import {isEmpty} from 'ramda';\r\nimport * as React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport CompensationSelector from '../components/compensationSelector/compensationSelector';\r\nimport DamageCauseTableReindeer from '../components/damageCauseTableReindeer/damageCauseTableReindeer';\r\nimport {LoadingSpinner} from '../components/loader/loader';\r\nimport StatisticalInfoBox from '../components/statisticalInfoBox/statisticalInfoBox';\r\nimport StatisticalInfoYears from '../components/statisticalInfoYears/statisticalInfoYears';\r\nimport StatisticalTableReindeer from '../components/statisticalTableReindeer/statisticalTableReindeer';\r\nimport {createLabel} from '../components/yearpicker/yearperiodpicker';\r\nimport {RefundAnimal} from '../constants/refundAnimal';\r\nimport {ReindeerLocationType} from '../constants/reindeerLocationType';\r\nimport {useLanguage} from '../i18n';\r\nimport {ApplicationState, useActionCreator} from '../store';\r\nimport {fetchRefundData, fetchSearchResultReindeer} from '../store/refund/action';\r\nimport {AreaSearchTypes} from '../constants/areasearchTypes';\r\nimport StaticPageFrame from '../components/staticPageFrame/staticPageFrame';\r\nimport {ErrorBoundary} from '../components/errorBoundary/errorBoundary';\r\nimport {Suspense} from 'react';\r\nimport {ReindeerLocation} from '../model/area/reindeerLocation';\r\nimport {HoppTilHovedinnhold} from \"../components/themeButtton/themeButton\";\r\nimport {NumberListItem} from \"../store/refund/types\";\r\n\r\nexport function toYearReindeer(year: number): NumberListItem {\r\n return { value: year, label: `${year.toString()}/${(year + 1).toString()}` };\r\n}\r\n\r\nexport function RefundReindeer(): JSX.Element {\r\n const animal = RefundAnimal.Reindeer;\r\n const getListData = useActionCreator(fetchRefundData);\r\n const getDataReindeer = useActionCreator(fetchSearchResultReindeer);\r\n const isFetching = useSelector((state: ApplicationState) => state.refund.isFetching);\r\n const filter = useSelector((state: ApplicationState) => state.refund.refundFilter);\r\n const l = useLanguage();\r\n const [location, setLocation] = React.useState<ReindeerLocation[]>([\r\n { value: '1', label: l('refund.reindeerAllAreas'), locationType: ReindeerLocationType.Country },\r\n ]);\r\n const header = createHeader();\r\n const fromYear = filter.FromYear && filter.FromYearRein;\r\n const toYear = filter.ToYear && filter.ToYearRein;\r\n const locationPlaceholder = l('refund.reindeerAreaDistrict');\r\n const areaSearchType: AreaSearchTypes = AreaSearchTypes.reindeer;\r\n const multipleYears = fromYear && fromYear.value !== toYear.value;\r\n \r\n React.useEffect(() => {\r\n getListData();\r\n }, []);\r\n \r\n React.useEffect(() => {\r\n getDataReindeer();\r\n }, [filter, animal]);\r\n\r\n function createHeader(): string {\r\n let year = createLabel(filter.FromYearRein, filter.ToYearRein);\r\n let locationString = isEmpty(location) || location[0].label === l('country.norway')\r\n ? l('refund.reindeerAllAreas')\r\n : location[0].label;\r\n return `${locationString} ${year}`;\r\n }\r\n \r\n return (\r\n <StaticPageFrame>\r\n <HoppTilHovedinnhold mainContentId={\"locationSearchField\"} />\r\n <h2>\r\n {l('compensation.header')}\r\n {l('refund.reindeer').toLowerCase()}\r\n </h2>\r\n \r\n <Suspense fallback={<div>Loading...</div>}>\r\n <CompensationSelector\r\n animal={animal}\r\n location={location}\r\n onLocationChange={setLocation}\r\n locationPlaceholder={locationPlaceholder}\r\n areaSearchType={areaSearchType}\r\n />\r\n </Suspense>\r\n\r\n {/* Grafer */}\r\n {isFetching ? (\r\n <div className=\"compensation-loader\">\r\n <LoadingSpinner />\r\n </div>\r\n ) : (\r\n <ErrorBoundary>\r\n <StatisticalInfoBox animal={animal} header={header} period={isEmpty(fromYear) && isEmpty(toYear)} />\r\n {multipleYears && (\r\n <StatisticalInfoYears fromYear={fromYear.label} toYear={toYear.label} animal={animal} />\r\n )}\r\n <StatisticalTableReindeer />\r\n <DamageCauseTableReindeer />\r\n </ErrorBoundary>\r\n )}\r\n </StaticPageFrame>\r\n );\r\n}\r\n","import React from 'react';\r\nimport {\r\n ComposedChart,\r\n CartesianGrid,\r\n XAxis,\r\n YAxis,\r\n Area,\r\n Line,\r\n Legend,\r\n Tooltip,\r\n AreaChart,\r\n ResponsiveContainer,\r\n} from 'recharts';\r\nimport { RefundAnimal } from '../../constants/refundAnimal';\r\nimport { useTheme, createStyles, Theme } from '@material-ui/core';\r\nimport { toYearReindeer } from '../../pages/refundReindeer';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport {alpha} from '@material-ui/core/styles';\r\nimport { useLanguage } from '../../i18n';\r\nimport { CustomizedLegendBarChart } from '../statisticalInfoBox/statisticalInfoBox';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n tooltipWrapper: {\r\n backgroundColor: alpha(theme.palette.common.white, 0.95),\r\n padding: '4px 6px 4px 10px',\r\n lineHeight: '0.7',\r\n minWidth: '150px',\r\n border: `1px solid ${theme.palette.grey[100]}`,\r\n },\r\n tooltipLabel: {\r\n fontWeight: 'bold',\r\n },\r\n tooltipRow: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n gridTemplateColumns: '150px 1fr',\r\n },\r\n tooltipRowNOK: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n span: {\r\n paddingRight: '10px',\r\n },\r\n })\r\n);\r\n\r\nfunction amountYAxizTick(props: any): JSX.Element {\r\n const { x, y, payload } = props;\r\n return (\r\n <g aria-hidden={true}>\r\n <text x={x} y={y} dy={5} textAnchor=\"end\" fill=\"#33333\">\r\n {payload.value.toLocaleString()}\r\n </text>\r\n </g>\r\n );\r\n}\r\n\r\nfunction amountNOKYAxizTick(props: any): JSX.Element {\r\n const { x, y, payload } = props;\r\n return (\r\n <g aria-hidden={true}>\r\n <text x={x} y={y} dy={5} textAnchor=\"end\" fill=\"#33333\">\r\n {payload.value.toLocaleString()} kr\r\n </text>\r\n </g>\r\n );\r\n}\r\n\r\nfunction yearXAxizTick(props: any): JSX.Element {\r\n const { x, y, payload } = props;\r\n\r\n return (\r\n <g transform={`translate(${x},${y})`} aria-hidden={true}>\r\n <text x={0} y={0} dy={16} textAnchor=\"end\" fill=\"#333333\" transform=\"rotate(-35)\">\r\n {toYearReindeer(parseInt(payload.value)).label}\r\n </text>\r\n </g>\r\n );\r\n}\r\n\r\nfunction TooltipNOK(props: any): JSX.Element {\r\n const classes = useStyles({});\r\n const { active } = props;\r\n if (active) {\r\n const { payload, label, animal } = props;\r\n return (\r\n <div className={classes.tooltipWrapper}>\r\n {animal === RefundAnimal.Sheep ? (\r\n <p className={classes.tooltipLabel}>{`${label}`}</p>\r\n ) : (\r\n <p className={classes.tooltipLabel}>{`${toYearReindeer(parseInt(label)).label}`}</p>\r\n )}\r\n\r\n {payload.map((row, i) => (\r\n <p className={classes.tooltipRowNOK} key={i}>\r\n <span className={classes.span}>{`${row.name} `}</span>\r\n <br />\r\n <span>{`${row.value.toLocaleString()} kr`} </span>\r\n </p>\r\n ))}\r\n </div>\r\n );\r\n }\r\n return null;\r\n}\r\n\r\nexport function TooltipYears(props: any): JSX.Element {\r\n const classes = useStyles({});\r\n const { active } = props;\r\n if (active) {\r\n const { payload, label, animal } = props;\r\n return (\r\n <div className={classes.tooltipWrapper}>\r\n {animal === RefundAnimal.Sheep ? (\r\n <p className={classes.tooltipLabel}>{`${label}`}</p>\r\n ) : (\r\n <p className={classes.tooltipLabel}>{`${toYearReindeer(parseInt(label)).label}`}</p>\r\n )}\r\n\r\n {payload &&\r\n payload.map((row, i) => (\r\n <p className={classes.tooltipRow} key={i}>\r\n <span className={classes.span}>{`${row.name} `}</span>\r\n <br />\r\n <span>{`${row.value.toLocaleString()}`} </span>\r\n </p>\r\n ))}\r\n </div>\r\n );\r\n }\r\n return null;\r\n}\r\n\r\ntype ChartProps = {\r\n apiData: any;\r\n width: number | string;\r\n height: number;\r\n};\r\n\r\nexport function SheepCompensationChart(props: ChartProps): JSX.Element {\r\n const l = useLanguage();\r\n const theme = useTheme();\r\n return (\r\n <ResponsiveContainer width={props.width} height={props.height}>\r\n <ComposedChart\r\n data={props.apiData}\r\n margin={{ top: 10, right: 30, left: 0, bottom: 0 }}\r\n aria-label={l('refund.graphicalImage')}\r\n >\r\n <CartesianGrid vertical={false} strokeDasharray=\"3 3\" fill=\"white\" aria-hidden={true} />\r\n <XAxis dataKey={'year'} height={50} tickLine={false} aria-hidden={true} />\r\n <YAxis\r\n type=\"number\"\r\n interval=\"preserveStart\"\r\n minTickGap={10}\r\n tickLine={false}\r\n tick={amountYAxizTick}\r\n width={100}\r\n aria-hidden={true}\r\n />\r\n <Area\r\n stackId=\"a\"\r\n dataKey={'normalLossTotal'}\r\n stroke={theme.palette.primary.light}\r\n fill={theme.palette.primary.light}\r\n fillOpacity=\"1\"\r\n legendType=\"square\"\r\n name={l('refund.normalLoss')}\r\n isAnimationActive={false}\r\n />\r\n <Area\r\n stackId=\"a\"\r\n dataKey={'compensatedTotal'}\r\n stroke={theme.palette.primary.main}\r\n fill={theme.palette.primary.main}\r\n legendType=\"square\"\r\n fillOpacity=\"0.9\"\r\n name={l('refund.totalCompensated')}\r\n isAnimationActive={false}\r\n />\r\n <Line\r\n type=\"monotone\"\r\n dataKey={'totalLossTotal'}\r\n stroke=\"#86660E\"\r\n fill=\"#86660E\"\r\n name={l('refund.totalLoss')}\r\n isAnimationActive={false}\r\n />\r\n\r\n <Tooltip content={<TooltipYears animal={RefundAnimal.Sheep} />} />\r\n\r\n <Legend\r\n payload={[\r\n {\r\n value: l('refund.normalLoss'),\r\n type: 'rect',\r\n id: '1',\r\n color: theme.palette.primary.light,\r\n },\r\n {\r\n value: l('refund.totalCompensated'),\r\n type: 'rect',\r\n id: '2',\r\n color: theme.palette.primary.main,\r\n },\r\n {\r\n value: l('refund.totalLoss'),\r\n type: 'line',\r\n id: '3',\r\n color: '#86660E',\r\n },\r\n ]}\r\n content={<CustomizedLegendBarChart />}\r\n />\r\n </ComposedChart>\r\n </ResponsiveContainer>\r\n );\r\n}\r\n\r\nexport function ReindeerCompensationChart(props: ChartProps): JSX.Element {\r\n const l = useLanguage();\r\n const theme = useTheme();\r\n return (\r\n <ResponsiveContainer width={props.width} height={props.height}>\r\n <ComposedChart\r\n data={props.apiData}\r\n margin={{ top: 10, right: 30, left: 0, bottom: 0 }}\r\n aria-label={l('refund.graphicalImage')}\r\n >\r\n <CartesianGrid vertical={false} strokeDasharray=\"3 3\" fill=\"white\" aria-hidden={true} />\r\n <XAxis dataKey={'year'} height={80} tick={yearXAxizTick} />\r\n <YAxis type=\"number\" interval=\"preserveStart\" minTickGap={10} tickLine={false} tick={amountYAxizTick} />\r\n <Area\r\n stackId=\"a\"\r\n dataKey={'totalLossTotal'}\r\n stroke={theme.palette.primary.light}\r\n fill={theme.palette.primary.light}\r\n fillOpacity=\"0.7\"\r\n legendType=\"square\"\r\n name={l('refund.totalLoss')}\r\n isAnimationActive={false}\r\n />\r\n <Area\r\n stackId=\"c\"\r\n dataKey={'appliedLossTotal'}\r\n stroke={theme.palette.primary.main}\r\n fill={theme.palette.primary.main}\r\n fillOpacity=\"0.7\"\r\n legendType=\"square\"\r\n name={l('refund.appliedLoss')}\r\n isAnimationActive={false}\r\n />\r\n <Area\r\n stackId=\"b\"\r\n dataKey={'compensatedTotal'}\r\n stroke={theme.palette.primary.dark}\r\n fill={theme.palette.primary.dark}\r\n legendType=\"square\"\r\n fillOpacity=\"0.7\"\r\n name={l('refund.totalCompensated')}\r\n isAnimationActive={false}\r\n />\r\n <Tooltip content={<TooltipYears animal={RefundAnimal.Reindeer} />} />\r\n\r\n <Legend\r\n payload={[\r\n {\r\n value: l('refund.totalCompensated'),\r\n type: 'rect',\r\n id: '1',\r\n color: theme.palette.primary.dark,\r\n },\r\n {\r\n value: l('refund.appliedLoss'),\r\n type: 'rect',\r\n id: '2',\r\n color: theme.palette.primary.main,\r\n },\r\n {\r\n value: l('refund.totalLoss'),\r\n type: 'rect',\r\n id: '3',\r\n color: theme.palette.primary.light,\r\n },\r\n ]}\r\n content={<CustomizedLegendBarChart />}\r\n />\r\n </ComposedChart>\r\n </ResponsiveContainer>\r\n );\r\n}\r\n\r\ntype OwnProps = {\r\n header: string;\r\n animal: RefundAnimal;\r\n};\r\n\r\ntype CompensationAmountProps = ChartProps & OwnProps;\r\n\r\nexport function CompensationAmountChart(props: CompensationAmountProps): JSX.Element {\r\n const l = useLanguage();\r\n const theme = useTheme();\r\n return (\r\n <>\r\n <div className=\"header\">{props.header}</div>\r\n <ResponsiveContainer width={props.width} height={props.height}>\r\n <AreaChart\r\n data={props.apiData}\r\n margin={{ top: 10, right: 30, left: 0, bottom: 0 }}\r\n aria-label={`${l('refund.graphicalImage')} ${props.header}`}\r\n >\r\n <CartesianGrid vertical={false} strokeDasharray=\"3 3\" fill=\"white\" aria-hidden={true} />\r\n {props.animal === RefundAnimal.Reindeer ? (\r\n <XAxis\r\n dataKey={'year'}\r\n padding={{ left: 30, right: 30 }}\r\n tick={yearXAxizTick}\r\n height={80}\r\n aria-hidden={true}\r\n />\r\n ) : (\r\n <XAxis\r\n dataKey={'year'}\r\n padding={{ left: 30, right: 30 }}\r\n height={40}\r\n tickLine={false}\r\n aria-hidden={true}\r\n />\r\n )}\r\n\r\n <YAxis width={100} tick={amountNOKYAxizTick} tickLine={false} aria-hidden={true} />\r\n <Area\r\n dataKey={'compensationAmount'}\r\n stroke={theme.palette.primary.main}\r\n fill={theme.palette.primary.main}\r\n fillOpacity=\"1\"\r\n legendType=\"square\"\r\n name={l('refund.compensationAmount')}\r\n isAnimationActive={false}\r\n />\r\n <Legend\r\n payload={[\r\n {\r\n value: l('refund.compensationAmount'),\r\n type: 'rect',\r\n id: '1',\r\n color: theme.palette.primary.main,\r\n },\r\n ]}\r\n content={<CustomizedLegendBarChart />}\r\n />\r\n <Tooltip content={<TooltipNOK animal={props.animal} />} />\r\n </AreaChart>\r\n </ResponsiveContainer>\r\n </>\r\n );\r\n}\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { RefundAnimal } from '../../constants/refundAnimal';\r\nimport { ApplicationState } from '../../store';\r\nimport './statisticalInfoYears.scss';\r\nimport {\r\n CompensationAmountChart,\r\n ReindeerCompensationChart,\r\n SheepCompensationChart,\r\n} from './statisticalInfoYears.util';\r\nimport { useLanguage } from '../../i18n';\r\n\r\ntype InfoProps = {\r\n fromYear: string;\r\n toYear: string;\r\n animal: RefundAnimal;\r\n};\r\n\r\nexport default function StatisticalInfoYears(props: InfoProps): JSX.Element {\r\n const l = useLanguage();\r\n const sheepData = useSelector((state: ApplicationState) =>\r\n state.refund.sheepStatistics.sheepCompensationArea.filter(\r\n obj => obj.area === 'Totalt' && obj.year !== 'ALLE' && obj.year !== ''\r\n )\r\n );\r\n const reindeerData = useSelector((state: ApplicationState) =>\r\n state.refund.reindeerStatistics.reindeerCompensationArea.filter(\r\n obj => obj.area === 'Totalt' && obj.year !== 'ALLE' && obj.year !== ''\r\n )\r\n );\r\n const apiData = props.animal === RefundAnimal.Sheep ? sheepData : reindeerData;\r\n const windowWidth = window.innerWidth;\r\n const boxHeight = windowWidth > 600 ? 400 : 400;\r\n const boxWidth = '100%';\r\n const refundHeader =\r\n props.animal === RefundAnimal.Sheep\r\n ? `${l('refund.sheepCompensation')} ${props.fromYear} - ${props.toYear}`\r\n : `${l('refund.reindeerCompensation')} ${props.fromYear} - ${props.toYear}`;\r\n const compensationHeader = `${l('refund.compensationAmount')} ${props.fromYear} - ${props.toYear}`;\r\n\r\n return (\r\n <div className=\"yearsInfoWrapper\">\r\n <div className=\"first-area-chart\">\r\n <div className=\"header\">{refundHeader}</div>\r\n {props.animal === RefundAnimal.Sheep ? (\r\n <SheepCompensationChart width={boxWidth} height={boxHeight} apiData={sheepData} />\r\n ) : (\r\n <ReindeerCompensationChart width={boxWidth} height={boxHeight} apiData={reindeerData} />\r\n )}\r\n </div>\r\n <div className=\"second-area-chart\">\r\n <CompensationAmountChart\r\n apiData={apiData}\r\n width={boxWidth}\r\n height={boxHeight}\r\n header={compensationHeader}\r\n animal={props.animal}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Theme,\r\n} from '@material-ui/core/';\r\nimport {ExpansionPanel, ExpansionPanelContent, ExpansionPanelTitle} from '../expansionPanel/expansionPanel';\r\nimport { createStyles, makeStyles } from '@material-ui/styles';\r\nimport classnames from 'classnames';\r\nimport React, { Fragment } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { ApplicationState } from '../../store';\r\nimport './statisticalTable.scss';\r\nimport {alpha, fade} from '@material-ui/core/styles';\r\nimport { useLanguage } from '../../i18n';\r\nimport {useTabletBreakpointInnsyn} from '../../hooks/breakpoint';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n maxWidth: '840px',\r\n backgroundColor: theme.palette.background.paper,\r\n\r\n '& th': {\r\n fontWeight: 'bold',\r\n padding: '12px',\r\n fontSize: '16px',\r\n textAlign: 'right',\r\n },\r\n '& th:first-of-type': {\r\n paddingLeft: '16px',\r\n textAlign: 'left',\r\n },\r\n '& th:last-of-type': {\r\n paddingRight: '16px',\r\n },\r\n\r\n '& td': {\r\n border: 0,\r\n fontSize: '16px',\r\n textAlign: 'right',\r\n padding: '6px 16px 6px 12px',\r\n },\r\n '& td:first-of-type': {\r\n paddingLeft: '16px',\r\n textAlign: 'left',\r\n },\r\n '& td:last-of-type': {\r\n paddingRight: '16px',\r\n },\r\n\r\n '& > tbody > tr:nth-of-type(2n + 1)': {\r\n backgroundColor: alpha(theme.palette.grey[200], 0.5),\r\n },\r\n },\r\n wrapper: {\r\n margin: '100px auto',\r\n width: '100%',\r\n },\r\n head: {\r\n border: `1px solid ${theme.palette.grey[300]}`,\r\n },\r\n underTableFirstRow: {\r\n borderBottom: `1px solid ${theme.palette.grey[300]}`,\r\n backgroundColor: 'none',\r\n },\r\n underTableText: {\r\n fontWeight: 'bold',\r\n },\r\n underTable: {\r\n borderBottom: 0,\r\n },\r\n })\r\n);\r\n\r\nexport default function StatisticalTableSheep(): JSX.Element {\r\n const l = useLanguage();\r\n const classes = useStyles({});\r\n const apiData = useSelector((state: ApplicationState) =>\r\n state.refund.sheepStatistics.sheepCompensationArea.filter(row => row.year === 'ALLE')\r\n );\r\n const total = apiData.filter(obj => obj.area === 'Totalt');\r\n const sorted = apiData\r\n .filter(obj => obj.area !== 'Totalt')\r\n .sort((a, b) => a.area.localeCompare(b.area))\r\n .concat(total);\r\n const underTableHeadClass = classnames(classes.underTableText, classes.underTable);\r\n const tabletScreen = useTabletBreakpointInnsyn();\r\n return (\r\n <div className={'statistics-table-wrapper'} id=\"statistics-table\">\r\n {tabletScreen &&\r\n apiData\r\n .filter(row => row.year === 'ALLE')\r\n .map((row, key) => (\r\n <ExpansionPanel theme=\"dark\" key={key}>\r\n <ExpansionPanelTitle theme=\"dark\">{row.area}</ExpansionPanelTitle>\r\n <ExpansionPanelContent>\r\n <div>\r\n <div style={{ padding: '5px 0px 5px 0px' }}>\r\n <b>{l('refund.numberOfApplications')}: </b> {row.applications.toLocaleString()}\r\n </div>\r\n <div style={{ padding: '5px 0px 5px 0px' }}>\r\n <b>{l('refund.compensationAmount')}: </b>{' '}\r\n {row.compensationAmount.toLocaleString()} kr\r\n </div>\r\n\r\n <div>\r\n <Table size=\"small\" className={classes.root}>\r\n <TableHead className={classes.head}>\r\n <TableRow>\r\n <TableCell className=\"small-table-sheep-left-column\"\r\n />\r\n <TableCell\r\n style={{\r\n minWidth: 70,\r\n maxWidth: 120,\r\n }}\r\n >\r\n {l('refund.totalLoss')}\r\n </TableCell>\r\n <TableCell\r\n style={{\r\n minWidth: 90,\r\n maxWidth: 120,\r\n }}\r\n >\r\n {l('refund.normalLoss')}\r\n </TableCell>\r\n <TableCell\r\n style={{\r\n minWidth: 80,\r\n maxWidth: 100,\r\n }}\r\n >\r\n {l('refund.compensated')}\r\n </TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n <TableRow hover={true}>\r\n <TableCell\r\n className=\"small-table-sheep-left-column\"\r\n >\r\n {l('carnivoreDamage.sheep')}\r\n </TableCell>\r\n <TableCell>{row.totalLossSheep.toLocaleString()}</TableCell>\r\n <TableCell>{row.normalLossSheep.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedSheep.toLocaleString()}</TableCell>\r\n </TableRow>\r\n <TableRow hover={true}>\r\n <TableCell\r\n className=\"small-table-sheep-left-column\"\r\n >\r\n {l('refund.lamb')}\r\n </TableCell>\r\n <TableCell>{row.totalLossLamb.toLocaleString()}</TableCell>\r\n <TableCell>{row.normalLossLamb.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensatedLamb.toLocaleString()}</TableCell>\r\n </TableRow>\r\n </TableBody>\r\n </Table>\r\n </div>\r\n </div>\r\n </ExpansionPanelContent>\r\n </ExpansionPanel>\r\n )\r\n )\r\n }\r\n \r\n {!tabletScreen && (\r\n <Fragment>\r\n <Table className={classes.root}>\r\n <TableHead className={classes.head}>\r\n <TableRow>\r\n <TableCell>{l('refund.area')}</TableCell>\r\n <TableCell>{l('refund.numberOfApplications')}</TableCell>\r\n <TableCell>{l('refund.compensationAmount')}</TableCell>\r\n <TableCell style={{\r\n minWidth: 52,\r\n maxWidth: 52,\r\n }} />\r\n <TableCell>{l('refund.totalLoss')}</TableCell>\r\n <TableCell>{l('refund.normalLoss')}</TableCell>\r\n <TableCell>{l('refund.compensated')}</TableCell>\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {sorted.map(row => (\r\n <TableRow key={row.area} hover={true}>\r\n <TableCell scope=\"row\">{row.area}</TableCell>\r\n <TableCell>{row.applications.toLocaleString()}</TableCell>\r\n <TableCell>{row.compensationAmount.toLocaleString()} kr</TableCell>\r\n <TableCell colSpan={4} padding=\"none\">\r\n <Table>\r\n <TableBody>\r\n <TableRow className={classes.underTableFirstRow}>\r\n <TableCell padding=\"none\" className={classes.underTableText}>\r\n {l('refund.sheep')}\r\n </TableCell>\r\n <TableCell style={{ minWidth: 100, maxWidth: 100 }}>\r\n {row.totalLossSheep.toLocaleString()}\r\n </TableCell>\r\n <TableCell style={{ minWidth: 100, maxWidth: 100 }}>\r\n {row.normalLossSheep.toLocaleString()}\r\n </TableCell>\r\n <TableCell style={{ minWidth: 80, maxWidth: 100 }}>\r\n {row.compensatedSheep.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n <TableRow>\r\n <TableCell padding=\"none\" className={underTableHeadClass}>\r\n {l('refund.lamb')}\r\n </TableCell>\r\n <TableCell className={classes.underTable} align=\"right\">\r\n {row.totalLossLamb.toLocaleString()}\r\n </TableCell>\r\n <TableCell className={classes.underTable} align=\"right\">\r\n {row.normalLossLamb.toLocaleString()}\r\n </TableCell>\r\n <TableCell className={classes.underTable} align=\"right\">\r\n {row.compensatedLamb.toLocaleString()}\r\n </TableCell>\r\n </TableRow>\r\n </TableBody>\r\n </Table>\r\n </TableCell>\r\n </TableRow>\r\n ))}\r\n </TableBody>\r\n </Table>\r\n </Fragment>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import {isEmpty} from 'ramda';\r\nimport * as React from 'react';\r\nimport {useSelector} from 'react-redux';\r\nimport CompensationSelector from '../components/compensationSelector/compensationSelector';\r\nimport DamageCauseTableSheep from '../components/damageCauseTable/damageCauseTable';\r\nimport {LoadingSpinner} from '../components/loader/loader';\r\nimport StatisticalInfoBox from '../components/statisticalInfoBox/statisticalInfoBox';\r\nimport StatisticalInfoYears from '../components/statisticalInfoYears/statisticalInfoYears';\r\nimport StatisticalTableSheep from '../components/statisticalTable/statisticalTableSheep';\r\nimport {createLabel} from '../components/yearpicker/yearperiodpicker';\r\nimport {RefundAnimal} from '../constants/refundAnimal';\r\nimport {useLanguage} from '../i18n';\r\nimport {ApplicationState, useActionCreator} from '../store';\r\nimport {fetchRefundData, fetchSearchResultSheep} from '../store/refund/action';\r\nimport {AreaSearchTypes} from '../constants/areasearchTypes';\r\nimport StaticPageFrame from '../components/staticPageFrame/staticPageFrame';\r\nimport {ErrorBoundary} from '../components/errorBoundary/errorBoundary';\r\nimport {Suspense} from 'react';\r\nimport {LocationType} from '../constants/locationType';\r\nimport {Area} from '../model/area/area';\r\nimport {Country} from '../constants/country';\r\nimport {HoppTilHovedinnhold} from \"../components/themeButtton/themeButton\";\r\nimport {NumberListItem} from \"../store/refund/types\";\r\n\r\nfunction toYearSheep(year: number): NumberListItem {\r\n return { value: year, label: year.toString() };\r\n}\r\n\r\nexport function RefundSheep(): JSX.Element {\r\n const animal = RefundAnimal.Sheep;\r\n const getListData = useActionCreator(fetchRefundData);\r\n const getDataSheep = useActionCreator(fetchSearchResultSheep);\r\n const isFetching = useSelector((state: ApplicationState) => state.refund.isFetching);\r\n const filter = useSelector((state: ApplicationState) => state.refund.refundFilter);\r\n const l = useLanguage();\r\n const [location, setLocation] = React.useState<Area[]>([\r\n { value: '1', label: l('country.norway'), locationType: LocationType.Country, countryID: Country.Norway },\r\n ]);\r\n const header = createHeader();\r\n const fromYear = filter.FromYear;\r\n const toYear = filter.ToYear;\r\n const locationPlaceholder = l('searchableSelect.locationSearchInputPlaceholder');\r\n const areaSearchType: AreaSearchTypes = AreaSearchTypes.norway;\r\n const multipleYears = fromYear && fromYear.value !== toYear.value;\r\n \r\n React.useEffect(() => {\r\n getListData();\r\n }, []);\r\n \r\n React.useEffect(() => {\r\n getDataSheep();\r\n }, [filter, animal]);\r\n\r\n function createHeader(): string {\r\n let year = fromYear\r\n ? createLabel(fromYear, toYear)\r\n : '';\r\n let locationString = isEmpty(location) ? l('country.norway') : location[0].label;\r\n return `${locationString} ${year}`;\r\n }\r\n \r\n return (\r\n <StaticPageFrame>\r\n <HoppTilHovedinnhold mainContentId={\"locationSearchField\"} />\r\n <h2>\r\n {l('compensation.header')}\r\n {l('carnivoreDamage.sheep').toLowerCase()}\r\n </h2>\r\n \r\n <Suspense fallback={<div>Loading...</div>}>\r\n <CompensationSelector\r\n animal={animal}\r\n location={location}\r\n onLocationChange={setLocation}\r\n locationPlaceholder={locationPlaceholder}\r\n areaSearchType={areaSearchType}\r\n />\r\n </Suspense>\r\n\r\n {/* Grafer */}\r\n {isFetching ? (\r\n <div className=\"compensation-loader\">\r\n <LoadingSpinner />\r\n </div>\r\n ) : (\r\n <ErrorBoundary>\r\n <StatisticalInfoBox animal={animal} header={header} period={isEmpty(fromYear) && isEmpty(toYear)} />\r\n {multipleYears && (\r\n <StatisticalInfoYears fromYear={fromYear.label} toYear={toYear.label} animal={animal} />\r\n )}\r\n <StatisticalTableSheep />\r\n <DamageCauseTableSheep />\r\n </ErrorBoundary>\r\n )}\r\n </StaticPageFrame>\r\n );\r\n}\r\n","import {Language} from './language';\r\n\r\nexport enum Culture {\r\n NO = 'nb-NO',\r\n SV = 'sv-SE',\r\n EN = 'en-US',\r\n}\r\n\r\nexport function getCulture(language: Language): Culture {\r\n switch (language) {\r\n case Language.NO:\r\n return Culture.NO;\r\n case Language.SV:\r\n return Culture.SV;\r\n case Language.EN:\r\n return Culture.EN;\r\n default:\r\n return Culture.NO;\r\n }\r\n}","import {Language} from './language';\r\n\r\nexport enum LanguageCode {\r\n NB = 'nb',\r\n SV = 'sv',\r\n EN = 'en',\r\n}\r\n\r\nexport function getLanguageCode(language: Language): LanguageCode {\r\n switch (language) {\r\n case Language.NO:\r\n return LanguageCode.NB;\r\n case Language.SV:\r\n return LanguageCode.SV;\r\n case Language.EN:\r\n return LanguageCode.EN;\r\n default:\r\n return LanguageCode.NB;\r\n }\r\n}","import React, {useEffect, useState} from 'react';\r\nimport StaticPageFrame from '../staticPageFrame/staticPageFrame';\r\nimport {ErrorBoundary} from '../errorBoundary/errorBoundary';\r\nimport {HoppTilHovedinnhold, SecondaryButton} from '../themeButtton/themeButton';\r\nimport './reportpage.scss';\r\nimport {getReportId, getReports, ReportsResponse, useLayout} from '../../services/reportService';\r\nimport {PowerBIEmbed} from 'powerbi-client-react';\r\nimport {Embed, models, Report} from 'powerbi-client';\r\nimport {LoadingSpinner} from '../loader/loader';\r\nimport {useSelector} from 'react-redux';\r\nimport {ApplicationState} from '../../store';\r\nimport {Language} from '../../constants/language';\r\nimport {Culture, getCulture} from '../../constants/culture';\r\nimport {getLanguageCode} from '../../constants/languageCode';\r\nimport {Site} from '../../store/settings/types';\r\nimport {ReportKeys} from '../../constants/reportKeys';\r\nimport FullscreenIcon from '@material-ui/icons/Fullscreen';\r\nimport {useLanguage} from '../../i18n';\r\nimport classnames from 'classnames';\r\n\r\nconst getSiteparam = (site: Site) : string => site === Site.SE ? 'se' : 'no';\r\n\r\nconst createCultureFilter = (culture:Culture): models.IBasicFilter => {\r\n return {\r\n $schema: 'https://powerbi.com/product/schema#basic',\r\n target: {\r\n table: 'Languages',\r\n column: 'DefaultCulture'\r\n },\r\n operator: 'In',\r\n values: [culture],\r\n filterType: models.FilterType.Basic,\r\n requireSingleSelection: true\r\n };\r\n};\r\n\r\nconst createSiteFilter = (site:Site): models.IBasicFilter => {\r\n return {\r\n $schema: 'https://powerbi.com/product/schema#basic',\r\n target: {\r\n table: 'UserSelection',\r\n column: 'domain'\r\n },\r\n operator: 'In',\r\n values: [getSiteparam(site)],\r\n filterType: models.FilterType.Basic,\r\n requireSingleSelection: true\r\n };\r\n};\r\n\r\nfunction createConfig(reportId: string, embedInfo: ReportsResponse, language:Language, layout: models.LayoutType): models.IReportEmbedConfiguration {\r\n const report = embedInfo.reports.find(r => r.reportId === reportId);\r\n const culture = getCulture(language);\r\n const languageCode = getLanguageCode(language);\r\n\r\n return {\r\n type: 'report',\r\n id: report.reportId,\r\n embedUrl: report.embedUrl,\r\n accessToken: embedInfo.embedToken.token,\r\n tokenType: models.TokenType.Embed,\r\n settings: {\r\n localeSettings: {\r\n formatLocale: culture,\r\n language: languageCode\r\n },\r\n panes: {\r\n filters: {\r\n expanded: false,\r\n visible: false\r\n },\r\n pageNavigation: {\r\n visible: false\r\n }\r\n },\r\n layoutType: layout\r\n }\r\n };\r\n}\r\n\r\nexport function Reportpage(props:ReportpageProps): JSX.Element {\r\n const [config, setConfig] = useState<models.IReportEmbedConfiguration>();\r\n const [reportInstance, setReportInstance] = useState<Report>();\r\n const language = useSelector((state: ApplicationState) => state.settings.language);\r\n const site = useSelector((state: ApplicationState) => state.settings.site);\r\n const layout = useLayout();\r\n const usingMobileLayout = layout === models.LayoutType.MobilePortrait || layout === models.LayoutType.MobileLandscape;\r\n const staticPageFrameClass = classnames({'compact-mobile': usingMobileLayout});\r\n const powerBiCssClasses = classnames('report-component', {\r\n 'mobileLayout': usingMobileLayout\r\n });\r\n const l = useLanguage();\r\n const {fullscreenEnabled} = document;\r\n const showFullscreenButton = false; // fullscreenEnabled;\r\n \r\n useEffect(() => {\r\n Promise\r\n .allSettled([getReportId(props.reportKey), getReports()])\r\n .then(([id, res]) => {\r\n if (res.status === 'fulfilled' && id.status === 'fulfilled') {\r\n const reportId = id.value;\r\n const embedInfo = res.value;\r\n const config = createConfig(reportId, embedInfo, language, layout);\r\n setConfig(config);\r\n }\r\n });\r\n }, [props.reportKey, language, site, layout]);\r\n \r\n const embeddedComponentHandler = (embedObject: Embed) : void => {\r\n const theReport = embedObject as Report;\r\n \r\n theReport.on('loaded', async () => {\r\n const filters = [createCultureFilter(getCulture(language)), createSiteFilter(site)];\r\n await theReport.updateFilters(models.FiltersOperations.Replace, filters);\r\n });\r\n\r\n theReport.on('pageChanged', async () => {\r\n const filters = [createCultureFilter(getCulture(language)), createSiteFilter(site)];\r\n await theReport.updateFilters(models.FiltersOperations.Replace, filters);\r\n });\r\n \r\n setReportInstance(theReport);\r\n };\r\n \r\n const fullScreenHandler = ():void => {\r\n if(fullscreenEnabled && reportInstance){\r\n reportInstance.fullscreen();\r\n }\r\n };\r\n \r\n return (\r\n <ErrorBoundary>\r\n <StaticPageFrame className={staticPageFrameClass}>\r\n <HoppTilHovedinnhold mainContentId={'mainContent'}/>\r\n <div className={'report-page'} id={'mainContent'}>\r\n <h2>{props.reportName}</h2>\r\n {props.reportDescription && <p>{props.reportDescription}</p>}\r\n {config \r\n ? <div className=\"report-container\">\r\n {showFullscreenButton && <SecondaryButton className=\"fullscreen-button\" onClick={fullScreenHandler}>\r\n <FullscreenIcon className=\"fullscreen-icon\" aria-hidden={true}/>\r\n {l('report.fullscreen')}\r\n </SecondaryButton>}\r\n <PowerBIEmbed embedConfig={config}\r\n cssClassName={powerBiCssClasses}\r\n getEmbeddedComponent={embeddedComponentHandler}\r\n />\r\n {usingMobileLayout && <a href={'#rovbaseApp'} className=\"goto-top\" >{l('report.toTopOfPage')}</a>}\r\n </div>\r\n : <LoadingSpinner/>}\r\n </div>\r\n </StaticPageFrame>\r\n </ErrorBoundary>\r\n );\r\n}\r\n\r\ntype ReportpageProps = {\r\n reportKey: ReportKeys;\r\n reportName: string;\r\n reportDescription?: string;\r\n};","import React, { useEffect, useState } from 'react';\r\nimport { Reportpage } from '../../components/reportpage/reportpage';\r\nimport { useLanguage } from '../../i18n';\r\nimport {useDodeRovdyrRapport} from '../../hooks/featureToggles';\r\nexport function ReportDodeRovdyr(): JSX.Element {\r\n const l = useLanguage();\r\n const showReportDodeRovdyr = useDodeRovdyrRapport();\r\n\r\n if (!showReportDodeRovdyr) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Reportpage reportKey={'doderovdyr'} reportName={l('menu.reportDodeRovdyr')} reportDescription={l('deadCarnivore.report.description')} />\r\n );\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { Reportpage } from '../../components/reportpage/reportpage';\r\nimport { useLanguage } from '../../i18n';\r\nimport {useRovviltskadeRapport} from '../../hooks/featureToggles';\r\nexport function ReportRovviltskade(): JSX.Element {\r\n const l = useLanguage();\r\n const showReportRovviltskade = useRovviltskadeRapport();\r\n\r\n if (!showReportRovviltskade) {\r\n return null;\r\n }\r\n\r\n return (\r\n <Reportpage reportKey={'rovviltskade'} reportName={l('menu.reportRovviltskade')} reportDescription={l('rovviltskade.report.description')} />\r\n );\r\n}","import * as React from 'react';\r\nimport { Provider, useSelector } from 'react-redux';\r\nimport { Store } from 'redux';\r\nimport { About } from '../../pages/about/about';\r\nimport { Home } from '../../pages/home';\r\nimport { Accessibility } from '../../pages/accessibility/accessibility';\r\nimport { BrowserRouter as Router, Route, withRouter, Switch } from 'react-router-dom';\r\nimport { ThemeProvider } from '@material-ui/styles';\r\nimport theme from '../../styles/materialTheme';\r\nimport themeSvensk from '../../styles/materialThemeSvensk';\r\nimport './root.scss';\r\nimport { Menu } from '../menu/menu';\r\nimport Loader from '../loader/loader';\r\nimport { ApplicationState } from '../../store';\r\nimport { Site } from '../../store/settings/types';\r\nimport { withAITracking } from '@microsoft/applicationinsights-react-js';\r\nimport { createBrowserHistory } from 'history';\r\nimport { Contact } from '../../pages/contact';\r\nimport { Redirect } from 'react-router';\r\nimport { ErrorBoundary } from '../errorBoundary/errorBoundary';\r\nimport { reactPlugin, appInsight} from '../../applicationInsights';\r\nimport {RefundSheep} from '../../pages/refundSheep';\r\nimport {RefundReindeer} from '../../pages/refundReindeer';\r\nimport {useEffect} from 'react';\r\nimport {ReportDodeRovdyr} from '../../pages/report/reportdoderovdyr';\r\nimport {ReportRovviltskade} from '../../pages/report/reportrovviltskade';\r\nexport const history = createBrowserHistory();\r\n\r\ntype RootProps = {\r\n store: Store;\r\n};\r\n\r\nfunction Root(): JSX.Element {\r\n const site = useSelector((state: ApplicationState) => state.settings.site);\r\n const themeCurrent = site === Site.SE ? themeSvensk : theme;\r\n const colorTheme = site === Site.SE ? 'nv' : 'md';\r\n document.documentElement.lang = useSelector((state: ApplicationState) => state.settings.language);\r\n\r\n useEffect(() => {\r\n document.documentElement.setAttribute(\r\n 'data-color-theme',\r\n colorTheme\r\n );\r\n }, [colorTheme]);\r\n\r\n \r\n return (\r\n <Router>\r\n <ThemeProvider theme={themeCurrent}>\r\n <Menu />\r\n <Switch>\r\n <Route path={'/'} exact={true} component={withRouter(Home)} />\r\n <Route path={'/test'} exact={true} component={withRouter(Loader)} />\r\n <Route path={'/filter'} component={withRouter(Home)} />\r\n <Route path={'/individ'} component={withRouter(Home)} />\r\n <Route path={'/search'} component={withRouter(Home)} />\r\n <Route path={'/rapport/doderovdyr'} component={withRouter(ReportDodeRovdyr)} />\r\n <Route path={'/rapport/rovviltskade'} component={withRouter(ReportRovviltskade)} />\r\n <Route path={'/erstatning/sau'} component={withRouter(RefundSheep)} />\r\n <Route path={'/erstatning/rein'} component={withRouter(RefundReindeer)} />\r\n <Route path={'/om'} component={withRouter(About)} />\r\n <Route path={'/kontakt'} component={withRouter(Contact)} />\r\n <Route path={'/tilgjengelighet'} component={withRouter(Accessibility)} />\r\n <Redirect from={'/*'} to=\"/\" />\r\n </Switch>\r\n </ThemeProvider>\r\n </Router>\r\n );\r\n}\r\n\r\nfunction _Root({ store }: RootProps): JSX.Element {\r\n return (\r\n <Provider store={store}>\r\n <ErrorBoundary>\r\n <Root />\r\n </ErrorBoundary>\r\n </Provider>\r\n );\r\n}\r\n\r\nconst rootExport = appInsight ? withAITracking(reactPlugin, _Root, null, 'contentWrapper') : _Root;\r\n\r\n// @ts-ignore\r\nexport default rootExport;\r\n\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Root from './components/root/root';\r\nimport { store } from './store';\r\nimport {UpdateSearchFilter, SetSearchinput, loadFeaturesFromSearchfilter} from './store/searchfilter/action';\r\nimport { setIsInitialized } from './store/settings/actions';\r\nimport { Filter } from './store/searchfilter/types';\r\nimport { initialSearchFilters } from './store/searchfilter/reducer';\r\nimport { defaultTo} from 'ramda';\r\nimport { suggestionSearch } from './components/searchbar/suggestionService';\r\n\r\nfunction StringArrayToNumberArray(array: string): number[] {\r\n if (array.length > 0) {\r\n return array.split(',').map(Number);\r\n }\r\n return [];\r\n}\r\n\r\nconst stringToBoolean = (value: string): boolean => {\r\n return value === 'true';\r\n};\r\n\r\nconst { language } = store.getState().settings;\r\nconst searchParams = new URLSearchParams(window.location.search);\r\nlet searchfilter: Filter = initialSearchFilters;\r\nif (window.location.pathname === '/filter') {\r\n searchfilter = {\r\n Carnivore:\r\n searchParams.get('Carnivore') !== null\r\n ? StringArrayToNumberArray(searchParams.get('Carnivore'))\r\n : initialSearchFilters.Carnivore,\r\n CarnivoreDamage:\r\n searchParams.get('CarnivoreDamage') !== null\r\n ? StringArrayToNumberArray(searchParams.get('CarnivoreDamage'))\r\n : initialSearchFilters.CarnivoreDamage,\r\n Evaluation:\r\n searchParams.get('Evaluation') !== null\r\n ? StringArrayToNumberArray(searchParams.get('Evaluation'))\r\n : initialSearchFilters.Evaluation,\r\n Observation:\r\n searchParams.get('Observation') !== null\r\n ? StringArrayToNumberArray(searchParams.get('Observation'))\r\n : initialSearchFilters.Observation,\r\n Offspring:\r\n searchParams.get('Offspring') !== null\r\n ? stringToBoolean(searchParams.get('Offspring'))\r\n : initialSearchFilters.Offspring,\r\n FromDate:\r\n searchParams.get('FromDate') !== null\r\n ? decodeURIComponent(searchParams.get('FromDate'))\r\n : initialSearchFilters.FromDate,\r\n ToDate:\r\n searchParams.get('ToDate') !== null\r\n ? decodeURIComponent(searchParams.get('ToDate'))\r\n : initialSearchFilters.ToDate,\r\n Country: defaultTo(initialSearchFilters.Country, searchParams.get('Country')?.split(',')),\r\n Region: defaultTo(initialSearchFilters.Region, searchParams.get('Region')?.split(',')),\r\n County: defaultTo(initialSearchFilters.County, searchParams.get('County')?.split(',')),\r\n Municipality: defaultTo(initialSearchFilters.Municipality, searchParams.get('Municipality')?.split(',')),\r\n IndividualNameOrID: defaultTo(initialSearchFilters.IndividualNameOrID)(searchParams.get('IndividualNameOrID')),\r\n Barcode: defaultTo(initialSearchFilters.Barcode)(searchParams.get('Barcode')?.split(',')),\r\n Rovdjursforum:\r\n searchParams.get('Rovdjursforum') !== null\r\n ? Boolean(searchParams.get('Rovdjursforum'))\r\n : initialSearchFilters.Rovdjursforum,\r\n ID: defaultTo(initialSearchFilters.ID)(searchParams.get('ID')?.split(',')),\r\n };\r\n store.dispatch(UpdateSearchFilter(searchfilter));\r\n}\r\nif (window.location.pathname === '/individ') {\r\n searchfilter = {\r\n ...searchfilter,\r\n IndividualNameOrID: defaultTo(initialSearchFilters.IndividualNameOrID)(searchParams.get('IndividualNameOrID')),\r\n };\r\n suggestionSearch(searchfilter.IndividualNameOrID)\r\n .then(res => {\r\n if (res.length === 1) {\r\n store.dispatch(SetSearchinput(`${res[0].id} ${res[0].tekst} `));\r\n } else {\r\n store.dispatch(SetSearchinput(searchfilter.IndividualNameOrID));\r\n }\r\n });\r\n store.dispatch(UpdateSearchFilter(searchfilter));\r\n}\r\n\r\nif (window.location.pathname === '/search') {\r\n searchfilter = {\r\n ...searchfilter,\r\n Barcode: defaultTo(initialSearchFilters.Barcode)(searchParams.get('T')?.split(',')),\r\n ID: defaultTo(initialSearchFilters.ID)(searchParams.get('T')?.split(',')),\r\n };\r\n store.dispatch(UpdateSearchFilter(searchfilter));\r\n store.dispatch(SetSearchinput(searchfilter.Barcode.join(',')));\r\n}\r\n\r\n// Initielt søk her for Ã¥ slippe dobbel initiel rendring\r\nexport async function InitSearch(): Promise<void> {\r\n await loadFeaturesFromSearchfilter(store.dispatch, searchfilter, language)\r\n .then(() => store.dispatch(setIsInitialized(true)));\r\n}\r\n\r\n/* eslint-disable no-undef */\r\nReactDOM.render(\r\n <Root store={store} />,\r\n document.getElementById('rovbaseApp')\r\n);\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkinnsynspa\"] = self[\"webpackChunkinnsynspa\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [121], () => (__webpack_require__(44254)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","i18n","templates","get","langId","id","stringId","concat","console","warn","getTemplate","input","replace","RegExp","i","a","slice","length","undefined","useLanguage","lang","language","useSelector","state","settings","shallowEqual","curry","useLanguageTemplate","connect","appState","getTest","props","textId","L","ExternalLink","l","React","href","target","rel","title","children","OpenInNewIcon","role","className","titleAccess","AboutContentSE","Link","to","AboutContentNO","aboutRovbaseData","Fragment","NavigateNextIcon","carnivoreObserved","toLocaleString","carnivoreDamageSheep","carnivoreDamageReindeer","carnivoreDead","dnaSamples","NavLink","activeClassName","accessKey","AboutContentEN","Language","isLang","toUpperCase","LayerType","AccessMethod","LayerGroup","isLayer","obj","Array","isArray","urls","type","isVisible","layer","options","visible","values","all","layers","group","BG","WMTS","access","NONE","params","LAYERS","TILED","FORMAT","VERSION","TILEMATRIXSET","PROJECTION","attribution","zIndex","MAPP","tileUrl","WMS","BAAT","TRANSPARENT","maxResolution","VECTOR","DatePreset","isLast7days","today","fromDate","toDate","isSameDay","subDays","isLastMonth","isThisYear","subYears","isBeforeOrSameDate","date","dateToCompare","isAfterOrSameDate","subtractDays","amount","dateToISOString","currentDatePreset","LastSevenDays","LastMonth","ThisYear","isValidDate","dateString","isNaN","Date","parse","dateIsBetween","checkDate","minDate","maxDate","btnHandler","fn","_len","arguments","args","_key","e","preventDefault","apply","transparentEffect","formatISO","representation","dateFormatString","pipe","encodeURIComponent","SV","EN","formatDateStringToLocaleString","format","wkt","WKT","toFeature","simplefeature","Feature","geometry","readGeometry","Datatype","stedfesting","feature","set","fromFeature","toLookupVal","s","datatype","isStedfesting","Object","includes","isDNA","DNA","isRovviltskade","Rovviltskade","isRovviltobservasjon","Rovviltobservasjon","isDodeRovdyr","DodeRovdyr","s1","s2","SET_TOOLTIP","CLEAR_TOOLTIP","setTooltip","ClearTooltip","MapActionType","initMapListeners","onMapAction","ADD_FEATURES","subscribe","stedfestings","pointSource","addFeatures","map","CLEAR_FEATURES","clear","ADD_LAYERS","layerArray","olMap","getLayers","getArray","filter","createLayer","isResolvedBaseLayer","some","forEach","addLayer","isPromiseOfLayer","then","setTileLoadeError","osmlayer","TileLayer","source","OSM","TOGGLE_LAYER","visibleLayers","olLayers","VectorLayer","setVisible","getVisible","ZOOM_TO_FEATURE","featureCoord","getFeatures","find","f","getGeometry","getCoordinates","getView","cancelAnimations","animate","zoom","center","ZOOM_TO_FEATURE_MOBILE","extent","boundingExtent","fit","padding","duration","maxZoom","ZOOM_TO_FEATURES","features","coordinates","getCenter","ZOOM_TO_FEATURES_MOBILE","MapProjection","defs","EPSG_32633","EPSG_3006","EPSG_4326","EPSG_25833","Carnivore","mainCarnivoreArray","Wolf","Bear","Lynx","Wolverine","otherCarnivoresArray","Eagle","UnknownProtected","allCarnivoreArray","CarnivoreDamage","defaultCarnivoreDamageFilter","Sheep","Reindeer","Dog","Goat","Cattle","Observations","defaultObservationsFilter","DeadCarnivores","VisualObservation","Footprint","UnanalysedDna","AnalysedDna","dnaObservations","Site","SET_LANGUAGE","SET_ISLOADING","SET_SITE","SET_ISINITIALIZED","createTheme","typography","fontFamily","button","textTransform","palette","primary","main","light","dark","contrastText","secondary","common","white","black","background","default","paper","grey","warning","text","disabled","stroke","selectedCluster","action","active","bear","focus","wolf","lynx","wolverine","raccoonDog","goldenEagle","unknownProtected","dna","border","symbol","unselected","color","overrides","spacing","_objectSpread","theme","svgCache","Evaluation","defaultEvaluationFilter","Documented","AssessedSure","Unsure","DamageCause","CarnivoreObserved","ICON_DIR_ROOT","getSvgStyleUrl","baseUrl","selected","getColorFromFeature","key","isLoaded","Promise","isLoading","changed","promise","fetch","res","svgLoadedHandler","url","fallbackStyle","Style","image","Circle","fill","Fill","radius","Text","isCluster","clusterText","clustersize","scale","offsetX","offsetY","getIconStyle","iconPath","observations","observasjoner","dir","parseInt","vurderingID","ErroneousReport","observationType","getIconPathRovviltobservasjon","str","damageType","skadetypeID","either","isNil","isEmpty","getIconPathRovviltskade","prøvestatusID","getIconPath","selectedIconStroke","store","getState","site","SE","themeSE","Icon","src","Stroke","width","getClusterStyle","alpha","clusterSize","Math","min","toSvg","DOMParser","parseFromString","artsID","skadeÃ¥rsakID","Unknown","getColorFromCarnivoreObservedId","artsIDAnalyse","getColorFromCarnivoreId","getColorFromDamageCauseId","createUrl","svg","XMLSerializer","serializeToString","btoa","setAttribute","from","getElementsByClassName","element","setInvertedColor","setColor","port$","Subject","debug","value","log","filterType","val","mapDispatch","next","VectorSource","clusterSource","Cluster","distance","pointLayer","style","defaultIfNil","defaultTo","selectedStedfesting","hovered","hoveredStedfesting","array","_toConsumableArray","marked","Map","cFeatures","v","has","getProperties","selectedClusterStroke","getSelectedClusterStyle","_feature$get","_slicedToArray","getImage","setRadius","getRadius","getFill","_feature$get3","getSelectedStyle","select","Select","hitTolerance","proj4","register","utm33","getProjection","setExtent","addProjection","view","View","projection","minZoom","interactions","InteractionDefaults","altShiftDragRotate","pinchRotate","controls","useSelect","setSelectedStedfestings","useActionCreator","selectStedfesting","setTooltipStedfesting","useEffect","select$","fromEventPattern","handler","on","un","selectHandler","event","selectedFeatures","unclustered","clusteredFeature","push","unsubscribe","addInteraction","useClusterSize","zoomHandler","getZoom","getSource","getDistance","setDistance","window","REQUEST_GKTOKEN","INIT_LAYERS","TOGGLE_LAYER_GROUP","SET_STEDFESTING","SELECT_STEDFESTING","HOVER_STEDFESTING","CLEAR_SELECTED","KARTLAGFEILER","toLayerCollection","fromPairs","toggleLayerGroup","layerGroup","hoverStedfesting","clearSelected","proxyToken","json","addGktToken","token","match","BaseLayer","_layer$options","defaultMaxRes","Number","MAX_SAFE_INTEGER","TileWMS","crossOrigin","preload","Infinity","minResolution","setTileLoadFunction","createMapProxyTileLoader","createLayerWms","_x","_createLayerWmts","createLayerWmts","strategy","bbox","setLoader","extentGeom","fromExtent","writeGeometry","queryString","stringify","method","ok","Error","statusText","addFeature","addToSource","parseAndAdd","catch","error","removeLoadedExtent","VectorLayerLoader","vectorLayer","createLayerVector","createAuthHeaders","headers","Authorization","tileToken","_asyncToGenerator","_regeneratorRuntime","_callee2","capabilitiesParser","capabilities","tile","_context2","prev","WMTSCapabilities","sent","reject","read","optionsFromCapabilities","matrixSet","setUrl","abrupt","t0","stop","success","errorSuccessBuffered","merge","mapTo","bufferTime","replayError","ReplaySubject","dispatch","kartlagnavn","loadImage","_x2","_x3","_loadImage","_callee3","uri","blob","_context3","resolve","reader","FileReader","addEventListener","result","readAsDataURL","tokenPromise","_ref","_callee","imageTile","_context","_x4","_x5","initialState","errorLoadingKartlag","mapLayers","localStorage","storedLayers","JSON","setToken","withBaat","config","addTokenToConfig","withoutBaat","withBaatToken","layerMap","MenuActionType","open","LocationType","UPDATE_LOCATION","UPDATE_LOCATIONREINDEER","UPDATE_FROMYEAR","UPDATE_TOYEAR","UPDATE_FROMYEAR_REIN","UPDATE_TOYEAR_REIN","REQUEST_REFUNDLISTDATA","RECEIVE_REFUNDLISTDATA","RECEIVE_REFUNDSEARCHRESULTSHEEP","RECEIVE_REFUNDSEARCHRESULTREINDEER","ReindeerLocationType","initState","refundFilter","ToYear","FromYear","ToYearRein","FromYearRein","Region","County","Municipality","Reinbeiteomrade","Reinbeitedistrikt","sheepStatistics","sheepCompensationArea","damageCauseList","reindeerStatistics","reindeerCompensationArea","isFetching","listData","reinbeitedistrikt","reinbeiteomrÃ¥der","reinerstatningÃ…r","sauerstatningÃ…r","SET_RIGHTPANEL_CONTENT","RightPanelContent","component","UPDATE","UPDATE_PARTIAL","ADD_FILTERLISTELEMENT","REMOVE_FILTERLISTELEMENT","ADD_LOCATIONLISTELEMENT","REMOVE_LOCATIONLISTELEMENT","CLEAR_LOCATIONLISTELEMENTS","UPDATE_FILTERELEMENT","UPDATE_BOTH_DATES","SELECT_ALL_IN_LIST","DESELECT_ALL_IN_LIST","SET_SEARCHINPUT","initialSearchFilters","Observation","Offspring","FromDate","ToDate","Country","IndividualNameOrID","Barcode","Rovdjursforum","ID","searchFilter","searchinput","setLanguage","setIsLoading","isSwedish","test","location","origin","NO","isInitialized","setSite","OPEN","CLOSE","SET_INDIVID","REMOVE_INDIVID","individ","menuState","reducers","combineReducers","searchFilterPartial","_defineProperty","filterArrayName","item","fieldName","payload","arrayName","Accept","err","layersArray","toPairs","_ref2","_ref3","name","layerCollection","_ref4","hasGroup","groups","identity","layersInGroup","changedLayers","newState","visibleLayerIds","rightPanel","None","sidePanelFilter","menu","TOGGLE","tooltip","refund","locationType","fromYear","toYear","fromYearRein","toYearRein","sauÃ…r","reinÃ…r","newestYearRein","head","newestYearSau","label","tekst","erstatningSauOmradeListe","area","omrÃ¥de","split","year","beitesesong","applications","antallSøknaderTotalt","normalLossSheep","beregnetNormaltapSau","normalLossLamb","beregnetNormaltapLam","normalLossTotal","beregnetNormaltapTotalt","compensatedSheep","erstattetSau","compensatedLamb","erstattetLam","compensatedTotal","erstattetTotalt","totalLossSheep","totaltTapSau","totalLossLamb","totaltTapLam","totalLossTotal","totaltTapTotalt","compensationAmount","erstatningsbelopTotalt","mapToSheepCompensationList","erstatningSauSkadevolderListe","artID","antallErstattetSau","antallErstattetLam","antallErstattetTotalt","percent","prosent","mapToDamageCauseListSheep","erstatningReinOmrÃ¥deListe","antallSøknader","compensatedCalf","erstattetKalv","compensatedBull","erstattetOkserein","compensatedDoe","erstattetSimlerein","compensatedDriving","erstattetKjørerein","appliedLossCalf","omsøktTapKalv","appliedLossBull","omsøktTapOkserein","appliedLossDoe","omsøktTapSimlerein","appliedLossTotal","omsøktTapTotalt","totalLossCalf","totaltTapKalv","totalLossBull","totaltTapOkserein","totalLossDoe","totaltTapSimlerein","erstatningsbeløp","mapToReindeerCompensationList","erstatningReinSkadevolderListe","antallErstattetKalv","antallErstattetOkserein","antallErstattetSimlerein","antallErstattetKjørerein","mapToDamageCauseListReindeer","createStore","composeWithDevTools","applyMiddleware","thunk","useDispatch","observeProp","propPath","Observable","observer","observe","startWith","path","pairwise","last","setItem","keys","useStyles","makeStyles","createStyles","primaryButton","backgroundColor","minHeight","outline","outlineOffset","visibility","secondaryButton","linkButton","textDecoration","borderRadius","cursor","inlineLinkButton","iconFocus","height","skipContent","position","left","top","margin","fontSize","animation","dateButton","dateButtonSelected","fontWeight","PrimaryButton","classes","buttonClass","classnames","_extends","SecondaryButton","InlineLinkButton","linkButtonClass","LinkButton","IconButton","iconButtonClass","HoppTilHovedinnhold","mainContentId","tabIndex","SkipFilters","PresetButton","dateButtonClass","dateButtonSelectedClass","presetButtonClass","reactPlugins","appInsights","confAiEnabled","ReactPlugin","ApplicationInsights","connectionString","confAiConnectionString","loggingLevelConsole","extensions","extensionConfig","identifier","history","loadAppInsights","reactPlugin","appInsight","ErrorBoundary","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","call","hasError","errorInfo","_createClass","_error","trackException","exception","this","whiteSpace","message","onClick","Component","getLogoVersion","file","mdirLogo","ifNotNil","LogoMdirText","alt","Logo","closeMenu","menuButton","MenuButton","toggleMenu","menuButtonMobile","Hidden","smUp","MenuIcon","xsDown","Watermark","combinedClassName","WatermarkMapLayer","useMobileBreakpointInnsyn","useMediaQuery","useTabletBreakpointInnsyn","assign","bind","n","t","r","hasOwnProperty","xmlns","viewBox","d","fillRule","strokeWidth","transform","Julehilsen","_useState","useState","_useState2","snowfall","setSnowfall","useMemo","SantaHat","menuBar","logoLink","siteName","rovbaseLink","MenuBar","menuBarClass","siteNameClass","mobileScreen","logoWidth","exact","mdirInfo","visitAdress","postAdress","mail","phone","naturvardsInfo","stripPhoneNumber","Footer","contactInfo","root","StaticPageFrame","classNameContainer","About","setAboutRovbaseData","Headers","response","omRovbaseData","spinner","borderTop","spinnerWrapper","right","Loader","LoadingSpinner","loadingClass","setRightPanelContent","_path","_path2","Layers","activate","LayerSelector","deactivate","ZoomIn","setZoom","ZoomOut","boxShadow","toggleSwitch","transition","ToggleSwitch","toggleSwitchClasses","checked","onChange","htmlFor","clipRule","Tooltip","tooltipForLabel","_ref$bubbleDirection","bubbleDirection","onEsc","onOutsideClick","document","removeEventListener","bobleClasses","TooltipInfoCircle","_path3","_path4","_g","_defs","useLSStyles","imageButton","layerChecked","imageSwitch","switchButtonWrapper","display","maxWidth","layerCollectionNotEmpty","titleClass","mobile","getLayerGroup","ids","drawerPosition","toggleLayers","reinbeitedistriktLayer","beitelagsLayer","samebyLayer","Drawer","anchor","onClose","closeDrawer","CloseIcon","LayerGroupWrapper","MapLayerImageButton","imgsrc","MapLayerImageSwitch","checkedClass","imageButtonClass","imageSwitchClass","clipPath","_style","_circle","xmlSpace","enableBackground","cx","cy","_circle2","SampleStatus","aborts","abortAll","abort","postSearch","search","abortController","AbortController","signal","OpenSearchresultlist","CloseSearchresultlist","SetIndivid","RemoveIndivid","UpdateSearchFilter","ToggleFilterListElement","ToggleLocationListElement","actionType","UpdateFilterElement","UpdateBothDates","SelectAllInList","SetSearchinput","createSearch","languageCode","body","LanguageCode","SearchFilter","getIndividualSearchUrl","searchText","T","arrayFormat","UpdateUrl","pathname","trim","filterToUrl","searchAction","loadFeaturesFromSearchfilter","_loadFeaturesFromSearchfilter","_callee10","stedfestinger","sortedStedfestinger","_context10","sort","b","dato","localeCompare","reverse","innerWidth","trackEvent","properties","individual","barcode","hits","UpdateOffspringElementAndSearch","_x6","UpdateSearchFilterAndSearch","_x7","ToggleFilterListElementOgSok","_callee4","_context4","_x8","ToggleLocationListElementAndSearch","idString","_ref5","_callee5","filterName","_context5","_x9","UpdateDateFilter","field","_ref6","_callee6","_context6","_x10","UpdateBothDatesAndSearch","_ref7","_callee7","_context7","_x11","SelectAllAndSearch","_ref8","_callee8","_context8","_x12","DeSelectAllAndSearch","_ref9","_callee9","_context9","_x13","formatIndividString","individID","individnavn","wktString","getStedfestingUrl","getUrl","getCoordinateType","navigator","clipboard","writeText","camelCase","word","index","toLowerCase","getStringFromEnum","enumType","getStringFromEnumNumber","isNullOrEmpty","notNullOrEmpty","kommaseparert","join","stedfestingTitle","Functional","art","dnaHeader","perpetrator","intetkjonnPhrase","toString","dodeRovdyrHeader","observation","rovviltobservasjonHeader","descriptionText","rovviltskadeHeader","useStyle","searchItem","borderColor","getColor","funnsted","SearchresultItem","setSelectedStedfesting","setHoverStedfesting","resultItemClass","closeSidepanel","zoomToFeature","onPointerEnter","onPointerLeave","IconComponent","searchresultItemTitle","kommune","MapToolIcon","RovviltobservasjonComponent","RovviltskadeComponent","Dead","DNAComponent","analysedSample","Dna","Faeces","TerritorialMarking","Reproduction","TreeMarkings","HairOrFeather","Bed","Digging","tool","MapToolbar","MapTool","toolClass","control","onActivate","ariaLabel","shareLinkWrapper","mailIcon","icon","feedbackMessage","copyToClipboard","el","createElement","appendChild","getSelection","rangeCount","getRangeAt","execCommand","removeChild","removeAllRanges","addRange","Share","feedback","setFeedback","copyLinkWrapper","mailLinkWrapper","timer","setTimeout","clearTimeout","feedbackObject","copyUrl","LinkIcon","mailLink","MailOutlineIcon","CheckIcon","SampleType","DnaTooltipDescription","analysed","lt","NotFunctional","useAnalysed","intro","prøvetypeID","artsIDPrøve","useIntro","IndividLink","BarcodeLink","strekkode","ControlType","RovviltobservasjonTooltipDescription","kontrollstatusID","controlType","evaluation","useObservations","postText","IncidentArea","DamageState","CarnivoreDamageInspectedBy","RovviltskadeTooltipDescription","damageState","tilstandID","inspectedBy","undersoktAvID","object","documentation","incidentArea","skadestedID","useArea","causeOfDeathType","Gender","OutcomeDeadCarnivore","weightNotNullIsh","weight","getWeight","rovdyr","helvekt","slaktevekt","DodeRovdyrTooltipDescription","dodeRovdyr","causeOfDeath","theAnimal","bakgrunnArsakID","bakgrunnArsak","utfall","utfallID","causeOfDeathWithOutcome","LicenseHunting","QuotaHunting","DamageControl","DefenceOfAnimal","SnoMission","SelfDefence","outcome","causeOfDeathIntetkjonn","CollisionRoad","CollisionRail","erIntetkjonn","ShotDamageConfirmed","deathCausePhrase","useCauseOfDeath","_getWeight","alder","ageSuffix","alderFastsattNINA","alderFastsattSVA","age","sex","kjønnID","useDocumentation","yngling","TooltipDescription","_state$tooltip$stedfe","borderBottom","StedfestingInfo","stedfestingIDClass","stedfestingCoordinateClass","toFixed","TooltipHeaderInfo","_props$stedfesting","sted","titleBanner","TooltipTitle","selectedStedfestings","individSearchText","findIndex","equals","individSearch","cluster","clusterOrIndividual","theCarnivoreString","individualCarnivoreType","individTitleText","setSearchParameter","setSearchinput","handleIndividSearch","TooltipHeader","isIndividSearch","NavigateTooltip","useRef","tooltipClass","mailSubject","ref","getAttributionString","strings","uniq","Attribution","attributions","clusterNavigation","tooltipBody","ClusterNavigation","clusterNavigationClass","showPreviousButton","showNextButton","ArrowIosIcon","TooltipSize","Small","OnTitleClick","Large","MobileTooltip","tooltipSize","setTooltipSize","tooltipBodyClass","MainMap","tooltipStedfesting","mapRef","sub$","sub","current","setTarget","useMap","layerSelectorOpen","setLayerSelectorOpen","suggestionSearch","trimmedText","encodedText","searchbar","textOverflow","opacity","iconButton","breakpoints","up","SearchbarInput","setSearchText","showSuggestions","setShowSuggestions","searchbarClass","onSearch","SearchIcon","InputBase","placeholder","placeholderText","onKeyDown","keyCode","onFocus","inputTextTruncated","substring","setSuggestions","inputProps","clearSearch","ClearIcon","suggestions","suggestion","handleSuggestionClick","Searchbar","clearTooltip","clearSelectedStedfestings","closeSearchresultList","clearIndivid","handleSearch","replaceAll","CheckboxWrapper","checkboxID","Checkmark","ExpansionField","expanded","onChangeExpanded","setOpen","_useState3","_useState4","overflow","setOverflow","expansionPanelOpen","clickHandler","ExpansionFieldTitle","RemoveIcon","AddIcon","ExpansionFieldContent","FilterLists","mainCarnivore","otherCarnivore","carnivoreDamages","canBeDisabled","GroupedFilterLists","searchFilterState","filterList","header","list","groupState","stateArrayName","registrationEvaluation","CarnivoreFilter","_FilterLists","carnivoreFilter","toggleCarnivoreElements","handleToggle","obj1","obj2","carnivore","DateFilter","updateBothDates","updateDate","updateFilter","ButtonList","isFromDateInvalid","isToDateInvalid","btn","setDatePreset","MdInput","size","max","errorText","isBefore","isAfter","outerWrapperClass","newFromDate","newToDate","containsAll","mainArray","subArray","every","searchFilterToAreaSearchFilter","pick","locationIDsNotInAreaObjects","areas","ExpansionPanel","expansionPanelClass","defaultProps","ExpansionPanelTitle","ExpandMoreIcon","ExpansionPanelContent","CheckboxList","selectAll","deselectAll","toggleElement","checkboxList","listItem","disable","disableBoxes","RegistrationsFilter","keyOpen","setKeyOpen","_GroupedFilterLists","offspringFilter","showObservationFilter","toggleOffspring","InfoIcon","AreaSearchTypes","getAllAreas","req","countryID","Norway","Sweden","Finland","getNorwayAreas","norwegianAreas","getReindeerAreas","getAreasFromID","areafilter","AreaFilter","areaSearch","rootMobile","flexGrow","minWidth","underline","valueContainer","flexWrap","flex","alignItems","singleValue","chip","noOptionsMessage","marginTop","divider","inputComponent","inputRef","_objectWithoutProperties","_excluded","components","Control","innerProps","innerRef","_props$selectProps","selectProps","TextFieldProps","TextField","fullWidth","InputProps","Menu","Paper","square","Option","MenuItem","isFocused","isSelected","MultiValue","Chip","onDelete","removeProps","deleteIcon","CancelIcon","NoOptionsMessage","Typography","SingleValue","ValueContainer","AreaSearchableSelect","useTheme","inputText","setInputText","searchWrapperClass","iconClass","activeTimerId","setActiveTimerId","selectStyles","base","font","AsyncSelect","isClearable","styles","inputId","isMulti","isMultiSelect","classNamePrefix","cacheOptions","defaultOptions","inputValue","onInputChange","loadOptions","areaService","norway","reindeer","maxMenuHeight","GeographyFilter","locationToggle","_React$useState","_React$useState2","setAreas","_React$useState3","_React$useState4","locationText","setLocationText","createLocationTitle","defaultString","places","o","createLocationString","selectedOption","option","removedValue","filterMenu","EvaluationFilter","evaluationFilterNeeded","useLoadingDots","setState","count","setCount","interval","setInterval","repeat","clearInterval","helpMessage","Searchfilter","resultCount","carnivoreSelected","loadingDots","helpMessageClass","sidepanel","closeIcon","footer","navigateButton","NavigateSearchResult","listLength","offsetStep","offset","setOffset","OriginIndividual","_getIndividualData","ResultTitle","closeResultList","LoadingTitle","NavigateBeforeIcon","SpecialSearchTitle","barcodes","setIndivid","isRovbaseIDSearch","haveIndivid","genderString","kjonnID","originString","opprinnelseID","searchType","individDescription","individualType","individOpprinnelse","individRevir","fodtRevir","revir","individTitle","idBarcodeTitle","element1","element2","specialSearchTitle","getIndividualData","SearchresultList","headerClass","isSpecialSearch","numberOfFirstItemShown","numberOfLastItemShown","currentUrl","resultTitle","loadingTitle","closeSidePanel","sidepanelWrapper","borderRight","buttonToggle","isOpen","resultListOpen","openSearchresultList","buttonToggleOpen","buttonToggleClosed","ariaLabelButton","searchfilterOpen","showDetachedToggleButton","btnIcon","ArrowBackIosIcon","ArrowForwardIosIcon","onToggleBtn","AccessibilityModal","Modal","handleClose","AccessibilityModalContent","MessageType","SystemMessage","showMessage","setShowMessage","panelOpenClass","openSidepanel","messageStylingClass","messageType","SystemMessageIkon","LoadingErrorMessage","ErrorMessage","WarningMessage","ReportProblemOutlinedIcon","useSystemvarsel","currentSystemvarsel","setCurrentSystemvarsel","_getSystemvarsel","getSystemvarsel","SystemMessageBanner","kartlagFeiler","systemvarsel","sidePanelIsOpen","systemvarselType","beskrivelse","overskrift","Home","openModal","setOpenModal","searchfilter","setOpenSidepanel","InitSearch","Sidepanel","norskURL","AccesibilityContentNO","svenskURL","AccesibilityContentSE","Accessibility","LanguageSelector","updateLanguage","getReportId","_getReportId","reportKey","createRequest","cachedReportStatus","checkReportStatus","_checkReportStatus","getReports","_getReports","useDodeRovdyrRapport","toggleReportDodeRovdyr","setToggleReportDodeRovdyr","_fetchReportStatus","status","fetchReportStatus","useRovviltskadeRapport","toggleReportRovviltskade","setToggleReportRovviltskade","_fetchReportStatus2","menuContent","menuColors","openRovdyr","setOpenRovdyr","close","showReportDodeRovdyr","showReportRovviltskade","menuFooterClass","expandClass","menuClass","menuTitleContainerClass","languageContainerClass","ContactMiljodir","ContactNaturvard","Contact","RefundAnimal","getStatisticData","getStatisticResultSheep","createSearchRequest","getStatisticResultReindeer","updateLocation","updateLocationReindeer","updateFromYear","updateToYear","updateFromYearRein","updateToYearRein","requestResults","fetchSearchResultSheep","refundSearchfilter","data","statisticService","fetchSearchResultReindeer","fetchRefundData","IndicatorSeparator","DropdownSelector","colourStyles","isDisabled","selectedValue","isOptionDisabled","disabledValue","disabledAbove","isSearchable","selectionList","x","YearSelector","isSheep","animal","setFromYearFilter","setToYearFilter","setFromYearReinFilter","setToYearReinFilter","yearsList","CompensationSelector","updateSheepLocation","updateReindeerLocation","searchLocation","locationValue","setLocationValue","season","locationPlaceholder","onLocationChange","RenderLabel","y","labelWidth","outside","textAnchor","dominantBaseline","LegendIcon","BarChartIcon","FiberManualRecordIcon","ShowChartIcon","StopIcon","DonutLargeIcon","CustomizedLegendBarChart","entry","CompensationGraphYAxizTick","dy","CompensationGraphYAxizTickMobile","CompensationGraphXAxizTick","tooltipWrapper","lineHeight","tooltipLabel","tooltipRow","justifyContent","gridTemplateColumns","tooltipRowNOK","flexDirection","span","paddingRight","CustomTooltip","row","CustomNOKTooltip","StatisticalInfoBox","sheepData","reindeerData","apiData","boxWidth","boxHeight","YtickWidth","ResponsiveContainer","ComposedChart","layout","CartesianGrid","horizontal","strokeDasharray","XAxis","tickLine","tick","YAxis","dataKey","tickMargin","isAnimationActive","content","Legend","Bar","stackId","maxBarSize","Line","legendType","BarChart","LabelList","DamageCauseTableSmall","Table","TableBody","TableRow","TableCell","align","customPieLabel","RADIAN","PI","midAngle","innerRadius","outerRadius","cos","sin","DamageCausePieChart","_props$data","notEmptyData","reduce","sum","_row$compensatedTotal","PieChart","bottom","Pie","labelLine","Cell","verticalAlign","DamageCauseTableSheep","damageCauseData","pieChartData","TableHead","hover","scope","DamageCauseTableReindeerSmall","DamageCauseTableReindeer","mediumScreen","textAlign","alternateColumn","alternateColumn2","expandableTitle","gapCell","areaColumn","applicationColumn","compensationColumn","alignCenter","alignRight","StatisticalTableReindeer","total","sorted","largeScreen","colSpan","createLabel","toYearReindeer","RefundReindeer","locationString","getListData","getDataReindeer","setLocation","areaSearchType","multipleYears","Suspense","fallback","period","StatisticalInfoYears","amountYAxizTick","amountNOKYAxizTick","yearXAxizTick","TooltipNOK","TooltipYears","SheepCompensationChart","vertical","minTickGap","Area","fillOpacity","ReindeerCompensationChart","CompensationAmountChart","AreaChart","refundHeader","compensationHeader","paddingLeft","wrapper","underTableFirstRow","underTableText","underTable","StatisticalTableSheep","underTableHeadClass","tabletScreen","RefundSheep","getDataSheep","Culture","getCulture","getSiteparam","createCultureFilter","culture","$schema","table","column","operator","models","FilterType","Basic","requireSingleSelection","createSiteFilter","Reportpage","mobilePortrait","mobileLandscape","setConfig","setReportInstance","noSsr","LayoutType","MobilePortrait","Master","usingMobileLayout","MobileLandscape","staticPageFrameClass","powerBiCssClasses","fullscreenEnabled","allSettled","reportId","embedInfo","report","reports","NB","getLanguageCode","embedUrl","accessToken","embedToken","tokenType","TokenType","Embed","localeSettings","formatLocale","panes","filters","pageNavigation","layoutType","createConfig","reportName","reportDescription","PowerBIEmbed","embedConfig","cssClassName","getEmbeddedComponent","embedObject","theReport","updateFilters","FiltersOperations","Replace","ReportDodeRovdyr","ReportRovviltskade","createBrowserHistory","Root","themeCurrent","themeSvensk","colorTheme","documentElement","Router","ThemeProvider","Switch","Route","withRouter","Redirect","_Root","Provider","withAITracking","StringArrayToNumberArray","_searchParams$get","_searchParams$get2","_searchParams$get3","_searchParams$get4","_searchParams$get5","_searchParams$get6","_searchParams$get7","_searchParams$get8","searchParams","URLSearchParams","_InitSearch","decodeURIComponent","Boolean","ReactDOM","getElementById","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","fulfilled","j","splice","getter","__esModule","getPrototypeOf","mode","ns","create","def","indexOf","getOwnPropertyNames","definition","defineProperty","enumerable","g","globalThis","Function","prop","prototype","Symbol","toStringTag","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}