{"version":3,"sources":["logo.svg","features/articles/articlesSlice.js","features/countrySwitcher/countrySlice.js","config/locales/en.js","features/countrySwitcher/CountryDropdownMenu.js","config/locales/ar.js","config/locales/no.js","config/locales/ukr.js","config/locales/li.js","config/i18n.js","config/locales/fr.js","config/locales/ti.js","config/locales/ua.js","config/locales/so.js","config/locales/fa.js","config/locales/pl.js","config/locales/es.js","i18n.js","features/language/languageSlice.js","features/language/LanguageDropdownMenu.js","features/LanguageAndCountryDropdowns.js","app/Header.js","app/UsefulLink.js","app/Loading.js","app/Article.js","config/sections.js","app/ArticleListView.js","app/ArticleHandler.js","app/UsefulLinkList.js","features/countrySwitcher/CountrySwitcher.js","app/Download.js","app/Intro.js","app/SectionsBubble.js","app/Main.js","app/Footer.js","config/locations.js","features/countrySwitcher/CountryBubble.js","app/CountrySelectorPage.js","app/About.js","App.js","features/counter/counterSlice.js","app/store.js","serviceWorker.js","index.js"],"names":["module","exports","articleSlice","createSlice","name","initialState","loading","countries","articles","destinations","languages","sections","usefullinks","reducers","appendDestinations","state","payload","setCountries","action","appendArticles","setArticles","setLanguages","setSections","setUsefulLinks","setLoading","actions","server","undefined","getArticlesAsync","locale","country","dispatch","console","log","opts","endpoint","SocketConstructor","ws","reconnectInterval","simpleDDP","on","fetchCountries","then","fetchDestinations","Promise","all","fetchArticles","fetchLanguages","fetchUsefulLinks","a","subscribe","languageAbbr","restart","data","collection","filter","l","fetch","countryIdentifier","ready","i","length","groupId","_","groupBy","article","section","getLanguages","getSections","getCountries","getUsefulLinks","getAbout","about","find","s","getContact","contact","countrySlice","title","logo","locationId","setCountry","topicIdentifier","getCountry","getSelectedCountry","strings","React","forwardRef","ref","children","onClick","href","e","preventDefault","className","translation","APP_NAME","USEFUL_LINKS","SELECT_YOUR_COUNTRY","CHANGE_COUNTRY_TITLE","CHANGE_COUNTRY_DESCRIPTION","CONTINUE","CANCEL","DASHBOARD","ASYLUM_PROCEDURE","HOUSING_AND_SOCIAL","EDUCATION_AND_WORK","HEALTH","FAMILY_IMMIGRATION","PSYCHOSOCIAL_SUPPORT","PROCEDURE_STEP","LOCATIONS","NEWS","POINT_IT","TRANSPORT","FIRST_AID","TRANSLATE","ABOUT","TRACING","CONTACT","FAQ","DISCLAIMER","MISC","DOWNLOAD_APP","DOWNLOAD_APP_DESCRIPTION","INTRO_TEXT","FOOTER_ABOUT","FOOTER_CONTACT","FOOTER_DESCRIPTION","FEATURES_TITLE","FEATURES","BANNER","NORWEGIAN","UKRAINA","ENGLISH","LANGUAGE","CATEGORY","DISCRIMINATION","RACISM","SOCIAL_GROUPS","SPECIAL_SITUATIONS","HATE_SPEECH","en","ar","fr","ti","ua","no","ukr","uk","so","fa","li","pl","es","lt","talandeWebMapping","i18n","use","initReactI18next","init","resources","lng","fallbackLng","keySeparator","interpolation","escapeValue","lang","navigator","language","changeLanguage","languageSlice","setLanguage","getLanguage","getSelectedLanguage","LanguageDropdownItem","useHistory","useSelector","selectedLanguage","useDispatch","useTranslation","t","map","abbr","classNames","NavDropdown","Item","onChangeLanguage","LanguageAndCountryDropdownItems","Header","useState","languageBdo","setLanguageBdo","languageName","setLanguageName","useEffect","bdo","style","paddingBottom","Navbar","variant","bg","Container","to","Image","src","ReachDeck","panel","toggleBar","alignRight","id","UsefulLink","link","Card","width","url","Body","Title","Text","Row","Col","md","lg","image","fluid","thumbnail","description","Loading","Spinner","animation","role","Article","useRouteMatch","params","slug","selectedCountry","isLoading","languageDirection","setLanguageDirection","setArticle","c","urlSlug","toLowerCase","articleBdo","dir","__html","body","display","justifyContent","flexDirection","usefullinkIds","listStyle","sectionType","images","type","inDashboard","ArticleListView","key","ArticleHandler","route","setSection","setIsArticlesList","displayListView","setDisplayListView","hasArticles","UsefulLinkList","links","Download","xs","sm","alt","Intro","getSection","x","SectionsBubble","useParams","sec","startAt","sections2","Object","keys","sort","y","OverlayTrigger","overlay","Tooltip","Main","Footer","locations","Helse","CountryBubble","changeSelectedCountry","CountrySelectorPage","About","dangerouslySetInnerHTML","App","talandeWebLanguage","setTalandeWebLanguage","path","counterSlice","value","increment","decrement","incrementByAmount","customizedMiddleware","getDefaultMiddleware","serializableCheck","configureStore","reducer","countryReducer","articleReducer","languageReducer","middleware","Boolean","window","location","hostname","match","ReactDOM","render","StrictMode","store","document","getElementById","serviceWorker","registration","unregister"],"mappings":"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","file":"static/js/main.523590e2.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo.8dad8028.svg\";","import { createSlice } from '@reduxjs/toolkit';\r\nimport simpleDDP from 'simpleddp'; // ES6\r\nimport ws from 'isomorphic-ws';\r\nimport _ from 'lodash';\r\n\r\n\r\n\r\n\r\nexport const articleSlice = createSlice({\r\n name: 'articles',\r\n initialState: {\r\n loading: true,\r\n countries: [],\r\n articles: [],\r\n destinations: [],\r\n languages: [],\r\n sections: [],\r\n usefullinks: []\r\n },\r\n reducers: {\r\n appendDestinations: (state, payload) => {\r\n state.destinations = [...state.destinations, payload];\r\n },\r\n setCountries: (state, action) => {\r\n state.countries = action.payload;\r\n },\r\n appendArticles: (state, action) => {\r\n state.articles = [...state.articles, ...action.payload];\r\n },\r\n setArticles: (state, payload) => {\r\n state.articles = payload.payload;\r\n },\r\n setLanguages: (state, action) => {\r\n state.languages = action.payload;\r\n },\r\n setSections: (state, action) => {\r\n state.sections = action.payload;\r\n },\r\n setUsefulLinks: (state, action) => {\r\n state.usefullinks = action.payload;\r\n },\r\n setLoading: (state, action) => {\r\n state.loading = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const { setArticles, appendArticles, appendDestinations, setCountries, setLanguages, setSections, setUsefulLinks, setLoading } = articleSlice.actions\r\n\r\n\r\nlet server = undefined;\r\nexport const getArticlesAsync = (locale, country) => dispatch => {\r\n dispatch(setLoading(true));\r\nconsole.log(locale, country, \"refetching\");\r\n //if (server === undefined) {\r\n let opts = {\r\n endpoint: 'wss://ff-production-eu-west.azurewebsites.net/websocket',\r\n SocketConstructor: ws,\r\n reconnectInterval: 5000,\r\n };\r\n server = new simpleDDP(opts);\r\n server.on(\"connected\", function() {\r\n fetchCountries(server, dispatch, locale).then((countries) => {\r\n fetchDestinations(server, countries, dispatch, locale, country).then((destinations) => {\r\n Promise.all([\r\n fetchArticles(server, destinations, dispatch, locale, country),\r\n fetchLanguages(server, dispatch),\r\n fetchUsefulLinks(server, dispatch, locale, destinations)\r\n ]).then(() => {\r\n console.log(\"done refetching\")\r\n dispatch(setLoading(false));\r\n })\r\n });\r\n });\r\n });\r\n /*} else {\r\n fetchCountries(server, dispatch, locale).then((countries) => {\r\n fetchDestinations(server, countries, dispatch, locale, country).then((destinations) => {\r\n Promise.all([\r\n fetchArticles(server, destinations, dispatch, locale, country),\r\n fetchLanguages(server, dispatch),\r\n fetchUsefulLinks(server, dispatch, locale, destinations)\r\n ]).then(() => {\r\n dispatch(setLoading(false));\r\n })\r\n });\r\n });\r\n }*/\r\n};\r\n\r\n\r\nasync function fetchCountries(server, dispatch, locale) {\r\n var countries = server.subscribe(\"countries\", { languageAbbr: locale });\r\n await countries.restart();\r\n const data = server.collection(\"countries\").filter(l => l.languageAbbr === locale).fetch();\r\n dispatch(setCountries(data));\r\n\r\n return data;\r\n}\r\n\r\nasync function fetchDestinations(server, countries, dispatch, locale, country) {\r\n await server.subscribe(\"destinations\", { languageAbbr: locale, countryIdentifier: country }).ready();\r\n\r\n const data = server.collection(\"destinations\").fetch();\r\n dispatch(appendDestinations(data));\r\n return data;\r\n}\r\n\r\nasync function fetchArticles(server, destinations, dispatch, locale) {\r\n for (let i = 0; i < destinations.length; i++) {\r\n const groupId = destinations[i].groupId;\r\n\r\n await server.subscribe(\"articles\", {languageAbbr: locale, groupId: groupId }).ready();\r\n }\r\n\r\n const data = server.collection(\"articles\").fetch();\r\n const sections = _.groupBy(data, article => article.section);\r\n\r\n dispatch(setSections(sections));\r\n dispatch(setArticles(data));\r\n}\r\n\r\nasync function fetchLanguages(server, dispatch) {\r\n await server.subscribe(\"languages\").ready();\r\n const data = server.collection(\"languages\").fetch();\r\n\r\n dispatch(setLanguages(data));\r\n}\r\n\r\nasync function fetchUsefulLinks(server, dispatch, locale, destinations) {\r\n for (let i = 0; i < destinations.length; i++) {\r\n const groupId = destinations[i].groupId;\r\n\r\n await server.subscribe(\"usefullinks\", {languageAbbr: locale, groupId: groupId }).ready();\r\n }\r\n\r\n const data = server.collection(\"usefullinks\").fetch();\r\n\r\n dispatch(setUsefulLinks(data));\r\n}\r\n\r\nexport const getLanguages = state => state.articles.languages;\r\nexport const getSections = state => state.articles.sections;\r\nexport const getArticles = state => state.articles.articles;\r\nexport const getCountries = state => state.articles.countries;\r\nexport const getUsefulLinks = state => state.articles.usefullinks;\r\nexport const getAbout = state => {\r\n const about = state.articles.articles.find(s => s.section === \"about\");\r\n if (about) {\r\n return about;\r\n }\r\n else return {\r\n \"id\": \"Z8Ab6zApb8Pqa5M4Q\",\r\n \"languageAbbr\": \"en\",\r\n \"section\": \"about\",\r\n \"title\": \"About Finn Fram\",\r\n \"body\": \"

Finn Fram helps you navigate the Norwegian society and find information about Norwegian rules,  your rights and where you can get help.

This includes several links to websites, manuals and relevant information which is important for all migrants and refugees, both those arriving to Norway, applying for asylum or are settled.  

  

The app was first developed by the Netherlands Red Cross. Hordaland Red Cross is very grateful for the opportunity to use their platform to establish a Norwegian version of the app.  

Disclaimer about the information in Finn Fram 

You probably have a number of questions and Finn Fram will try to answer your questions as thoroughly as possible and with up-to-date information. Although we do our best to keep the information we share updated and correct, we cannot guarantee that it is always the most recent. 

  

You will find links to websites that are not managed by the Red Cross in Finn Fram. We have no control over the form, content or availability of these pages. 

The fact that a link is included does not necessarily mean that it is considered a recommendation or that we support its content. 

  

The Red Cross is not involved in the asylum seeking procedure. 

\",\r\n \"groupId\": \"FL3Kbrs7aabrJ7LZ9\",\r\n \"topicIdentifier\": \"2ZXBPcGcgeAm2FsYt\",\r\n \"order\": 0,\r\n \"createdAt\": \"2022-10-12T14:26:30.271Z\",\r\n \"createdBy\": \"7yXF8WT9LszXKgasR\",\r\n \"updatedAt\": \"2023-03-01T15:02:00.841Z\"\r\n };\r\n}\r\nexport const getContact = state => {\r\n const contact = state.articles.articles.find(s => s.section === \"contact\");\r\n if (contact) {\r\n return contact;\r\n }\r\n return {\r\n \"id\": \"AsuM6rFrEwBDQFbLB\",\r\n \"languageAbbr\": \"en\",\r\n \"section\": \"contact\",\r\n \"title\": \"Contact us\",\r\n \"body\": \"

It is important to point out that the Red Cross\\ndoes not take part in asylum processes. The Red Cross cannot help you or give\\nyou advice about your application or asylum process.

\\n\\n

 

\\n\\n

If you have questions, suggestions or ideas about\\nthe content of this app, you can contact us at Hordaland Red Cross:

\\n\\n

Telephone: 05003 (+47 22 05 40 00)

\\n\\n

Email: dk.hordaland@redcross.no 

\",\r\n \"groupId\": \"FL3Kbrs7aabrJ7LZ9\",\r\n \"topicIdentifier\": \"3Ednhxp7z8wGREfNZ\",\r\n \"order\": 0,\r\n \"createdAt\": \"2022-10-13T12:51:43.212Z\",\r\n \"createdBy\": \"DJyNDB4Eq6yR6GvSo\",\r\n \"updatedAt\": \"2022-10-14T11:19:14.969Z\"\r\n };\r\n}\r\nexport default articleSlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\n\r\nexport const countrySlice = createSlice({\r\n name: 'country',\r\n initialState: {\r\n country: 'country',\r\n title: 'title',\r\n logo: 'logo',\r\n locationId: 'locationId'\r\n },\r\n reducers: {\r\n setCountry: (state, action) => {\r\n state.country = action.payload?.topicIdentifier;\r\n state.logo = action.payload?.logo;\r\n state.title = action.payload?.title;\r\n state.locationId = action.payload?.locationId;\r\n },\r\n }\r\n});\r\n\r\nexport const { setCountry } = countrySlice.actions;\r\nexport const getCountry = state => state.country.country;\r\nexport const getSelectedCountry = state => state.country;\r\nexport default countrySlice.reducer;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Useful links',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'Continue',\r\n CANCEL: 'Cancel',\r\n DASHBOARD: 'Dashboard',\r\n ASYLUM_PROCEDURE: 'Asylum procedure',\r\n HOUSING_AND_SOCIAL: 'Work and welfare',\r\n EDUCATION_AND_WORK: 'Education and school',\r\n HEALTH: 'Health',\r\n FAMILY_IMMIGRATION: 'Family reunification',\r\n PSYCHOSOCIAL_SUPPORT: 'Psychosocial support',\r\n PROCEDURE_STEP: 'My rights',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'News',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Transport',\r\n FIRST_AID: 'First aid',\r\n TRANSLATE: 'Interpretation services',\r\n ABOUT: 'About',\r\n TRACING: 'Tracing',\r\n CONTACT: 'Contact',\r\n FAQ: 'Report',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'Corona',\r\n DOWNLOAD_APP: 'Download the app!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Our app is available on both Apple and Android phones. Download now to get started!',\r\n INTRO_TEXT: 'Finn Fram helps you navigate the Norwegian society and find information about Norwegian rules, your rights and where you can get help.',\r\n FOOTER_ABOUT: 'About Finn fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'Language',\r\n CATEGORY: 'Category',\r\n DISCRIMINATION: 'Discrimination',\r\n RACISM: 'Racism',\r\n SOCIAL_GROUPS: 'Social groups',\r\n SPECIAL_SITUATIONS: 'Special situations',\r\n HATE_SPEECH: 'Hate speech',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {\r\n getCountries\r\n} from '../articles/articlesSlice';\r\nimport { Dropdown, Image, NavDropdown } from 'react-bootstrap';\r\nimport './CountryDropdownMenu.css';\r\nimport { getSelectedCountry, setCountry } from './countrySlice';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst colors = {\r\n white: '#ffffff',\r\n black: '#000000',\r\n lightGrey: '#fef1f1',\r\n pinkishGrey: '#e1e0e0',\r\n warmGrey: '#737373',\r\n oceanBlue: '#82d4ef',\r\n cerulean: '#008ac5',\r\n darkCerulean: '#005d94',\r\n silver: '#c8c7cc',\r\n fireRed: '#fb0007',\r\n}\r\n\r\nconst styles = {\r\n\r\n width: 30,\r\n height: 30,\r\n borderRadius: 15,\r\n marginLeft: 5,\r\n borderColor: colors.white,\r\n backgroundColor: colors.pinkishGrey,\r\n borderWidth: 2,\r\n overflow: 'hidden',\r\n\r\n};\r\n\r\nconst CustomToggle = React.forwardRef(({ children, onClick }, ref) => (\r\n {\r\n e.preventDefault();\r\n onClick(e);\r\n }}\r\n className=\"custom-toggle\"\r\n >\r\n {children}\r\n \r\n ));\r\n\r\nexport const CountryDropdownMenu = () => {\r\n const history = useHistory();\r\n const countries = useSelector(getCountries);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n const dispatch = useDispatch();\r\n\r\n const isSelectedCountry = id => id === selectedCountry.country;\r\n\r\n const changeSelectedCountry = c => {\r\n dispatch(setCountry(c));\r\n history.push(\"/sections\");\r\n }\r\n\r\n return (\r\n <>\r\n {countries.map(c => (\r\n \r\n changeSelectedCountry(c)}>{c.title}\r\n \r\n ))}\r\n \r\n\r\n );\r\n};\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'روابط مفيدة',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'متابعة',\r\n CANCEL: 'إلغاء',\r\n DASHBOARD: 'لوحة التحكم',\r\n ASYLUM_PROCEDURE: 'اللجوء',\r\n HOUSING_AND_SOCIAL: 'العمل والرعاية الاجتماعية',\r\n EDUCATION_AND_WORK: 'التعليم والمدارس',\r\n HEALTH: 'صحة',\r\n FAMILY_IMMIGRATION: 'لم شمل األسرة',\r\n PSYCHOSOCIAL_SUPPORT: 'الدعم النفسي والاجتماعي',\r\n PROCEDURE_STEP: 'حقوقي',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'الأخبار',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'وسائل النقل',\r\n FIRST_AID: 'الإسعافات الأولية',\r\n TRANSLATE: 'خدمات الترجمة الفورية',\r\n TRACING: 'خدمة البحث عن المفقودين',\r\n CONTACT: 'اتصل بنا',\r\n FAQ: 'الإبلاغ',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'فيروس كورونا',\r\n DOWNLOAD_APP: 'نزِّل التطبيق!',\r\n DOWNLOAD_APP_DESCRIPTION: 'تطبيقنا متوفر لكل من هواتف Apple وAndroid. نزِّل الآن للبدء!',\r\n INTRO_TEXT: 'يساعدك Finn Fram على استكشاف المجتمع النرويجي والاطلاع على معلومات عن القوانين النرويجية وحقوقك والأماكن التي يمكنها مساعدتك.',\r\n FOOTER_ABOUT: 'نبذة عن Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: \"Download the app to\",\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'اللغة',\r\n CATEGORY: 'الموضوع',\r\n ABOUT: 'نبذة',\r\n DISCRIMINATION: 'التمييز',\r\n RACISM: 'العنصرية',\r\n SOCIAL_GROUPS: 'فئات المجتمع',\r\n SPECIAL_SITUATIONS: 'الحالات الخاصة',\r\n HATE_SPEECH: 'خطاب الكراهية',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Nyttige linker',\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'Fortsett',\r\n CANCEL: 'Avbryt',\r\n DASHBOARD: 'Dashbord',\r\n ASYLUM_PROCEDURE: 'Å søke asyl',\r\n HOUSING_AND_SOCIAL: 'Arbeid og Velferd',\r\n EDUCATION_AND_WORK: 'Utdanning og skole',\r\n HEALTH: 'Helse',\r\n FAMILY_IMMIGRATION: 'Familiegjenforening',\r\n PSYCHOSOCIAL_SUPPORT: 'Psykososial førstehjelp',\r\n PROCEDURE_STEP: 'Mine rettigheter',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'Nyheter',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Transport',\r\n FIRST_AID: 'Førstehjelp',\r\n TRANSLATE: 'Om tolketjenesten',\r\n ABOUT: 'Om',\r\n TRACING: 'Oppsporing',\r\n CONTACT: 'Kontak oss',\r\n FAQ: 'Rapporter',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'Korona',\r\n DOWNLOAD_APP: 'Last ned appen!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Appen er tilgjengelig på både Apple og Android telefoner. Last ned nå for å komme i gang!',\r\n INTRO_TEXT: 'Finn Fram hjelper deg å navigere i det norske samfunnet og finne frem til informasjon om norske regler, dine rettigheter og hvor du kan få hjelp.',\r\n FOOTER_ABOUT: 'Om Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'English (Engelsk)',\r\n LANGUAGE: 'Språk',\r\n CATEGORY: 'Tema',\r\n DISCRIMINATION: 'Diskriminering',\r\n RACISM: 'Rasisme',\r\n SOCIAL_GROUPS: 'Sosiale grupper',\r\n SPECIAL_SITUATIONS: 'Spesielle situasjoner',\r\n HATE_SPEECH: 'Hatefulle ytringer',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Корисні посилання',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'Продовжити',\r\n CANCEL: 'Зупинити',\r\n DASHBOARD: 'Панель приладів',\r\n ASYLUM_PROCEDURE: 'Подати заяву щодо отримання притулку',\r\n HOUSING_AND_SOCIAL: 'Робота і соціальне забезпечення',\r\n EDUCATION_AND_WORK: 'Освіта і школа',\r\n HEALTH: \"здоров'я\",\r\n FAMILY_IMMIGRATION: \"Возз'єднання сім'ї\",\r\n PSYCHOSOCIAL_SUPPORT: 'Перша психосоціальна допомога',\r\n PROCEDURE_STEP: 'Мої права',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'Новини',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Транспорт',\r\n FIRST_AID: 'Перша медична допомога',\r\n TRANSLATE: 'Про службу перекладу',\r\n ABOUT: 'Про додаток',\r\n TRACING: 'Відстеження',\r\n CONTACT: \"Зв'яжіться з нами\",\r\n FAQ: 'Інформування',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'коронавірус',\r\n DOWNLOAD_APP: 'Завантажити додаток!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Програма доступна на телефонах Apple та Android. Завантажте зараз, щоб розпочати!',\r\n INTRO_TEXT: 'Finn Fram допоже вам зорієнтуватися в норвезькому суспільстві та знайти інформацію щодо норвезьких правил, ваших прав та місць, де ви можете отримати допомогу.',\r\n FOOTER_ABOUT: 'Про Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'English (Engelsk)',\r\n LANGUAGE: 'Мова',\r\n CATEGORY: 'Тема',\r\n DISCRIMINATION: 'Дискримінація',\r\n RACISM: 'Расизм',\r\n SOCIAL_GROUPS: 'Соціальні групи',\r\n SPECIAL_SITUATIONS: 'Спеціальні ситуації',\r\n HATE_SPEECH: 'Ненависть',\r\n\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Naudingos nuorodos',\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'Tęsti',\r\n CANCEL: 'Atšaukti',\r\n DASHBOARD: 'Ataskaitų sritis',\r\n ASYLUM_PROCEDURE: 'Asylum procedure',\r\n HOUSING_AND_SOCIAL: 'Darbas ir socialinė gerovė',\r\n EDUCATION_AND_WORK: 'Švietimas ir mokykla',\r\n HEALTH: 'Sveikata',\r\n FAMILY_IMMIGRATION: 'Family reunification',\r\n PSYCHOSOCIAL_SUPPORT: 'Psichosocialinė parama',\r\n PROCEDURE_STEP: 'Mano teisės',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'Naujienos',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Transportas',\r\n FIRST_AID: 'Pirmoji pagalba',\r\n TRANSLATE: 'Vertimo žodžiu paslaugos',\r\n ABOUT: 'Apie',\r\n TRACING: 'Šeimos ryšių atkūrimas',\r\n CONTACT: 'Susisiekti',\r\n FAQ: 'Pranešimų teikimas',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'Koronavirusas',\r\n DOWNLOAD_APP: 'Atsisiųskite programėlę!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Mūsų programėlė prieinama tiek Apple, tiek Android telefonuose. Atsisiųskite dabar ir pradėkite!',\r\n INTRO_TEXT: 'Finn Fram jums padeda orientuotis Norvegijos visuomenėje ir rasti informacijos apie Norvegijos įstatymus, savo teises ir kur galite gauti pagalbos.',\r\n FOOTER_ABOUT: 'Apie Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'kalba',\r\n CATEGORY: 'Tema',\r\nDISCRIMINATION: 'Diskriminacija',\r\nRACISM: 'Rasizmas',\r\nSOCIAL_GROUPS: 'Socialinės grupės',\r\nSPECIAL_SITUATIONS: 'Specialios situacijos',\r\nHATE_SPEECH: 'Neapykantos kalba',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","import en from './locales/en';\r\nimport ar from './locales/ar';\r\nimport fr from './locales/fr';\r\nimport ti from './locales/ti';\r\nimport no from './locales/no';\r\nimport ua from './locales/ua';\r\nimport ukr from './locales/ukr';\r\nimport so from \"./locales/so\";\r\nimport fa from \"./locales/fa\";\r\nimport li from \"./locales/li\";\r\nimport pl from \"./locales/pl\";\r\nimport es from \"./locales/es\";\r\n\r\n\r\nexport default {\r\n en: en,\r\n ar: ar,\r\n fr: fr,\r\n ti: ti,\r\n ua: ua,\r\n no: no,\r\n ukr: ukr,\r\n uk: ukr,\r\n so: so,\r\n fa: fa,\r\n li: li,\r\n pl: pl,\r\n es: es,\r\n lt: li,\r\n};\r\n\r\nexport const languageMap = {\r\n 'ar': 'ar',\r\n 'ar-AE': 'ar',\r\n 'ar-BH': 'ar',\r\n 'ar-DZ': 'ar',\r\n 'ar-EG': 'ar',\r\n 'ar-IQ': 'ar',\r\n 'ar-JO': 'ar',\r\n 'ar-KW': 'ar',\r\n 'ar-LB': 'ar',\r\n 'ar-LY': 'ar',\r\n 'ar-MA': 'ar',\r\n 'ar-OM': 'ar',\r\n 'ar-QA': 'ar',\r\n 'ar-SA': 'ar',\r\n 'ar-SY': 'ar',\r\n 'ar-TN': 'ar',\r\n 'ar-YE': 'ar',\r\n 'en': 'en',\r\n 'en-AU': 'en',\r\n 'en-BZ': 'en',\r\n 'en-CA': 'en',\r\n 'en-CB': 'en',\r\n 'en-GB': 'en',\r\n 'en-IE': 'en',\r\n 'en-JM': 'en',\r\n 'en-NZ': 'en',\r\n 'en-PH': 'en',\r\n 'en-TT': 'en',\r\n 'en-US': 'en',\r\n 'en-ZA': 'en',\r\n 'en-ZW': 'en',\r\n 'es': 'es',\r\n 'es-AR': 'es',\r\n 'es-BO': 'es',\r\n 'es-CL': 'es',\r\n 'es-CO': 'es',\r\n 'es-CR': 'es',\r\n 'es-DO': 'es',\r\n 'es-EC': 'es',\r\n 'es-ES': 'es',\r\n 'es-GT': 'es',\r\n 'es-HN': 'es',\r\n 'es-MX': 'es',\r\n 'es-NI': 'es',\r\n 'es-PA': 'es',\r\n 'es-PE': 'es',\r\n 'es-PR': 'es',\r\n 'es-PY': 'es',\r\n 'es-SV': 'es',\r\n 'es-UY': 'es',\r\n 'es-VE': 'es',\r\n 'fa': 'fa',\r\n 'fa-IR': 'fa',\r\n 'lt': 'li', // må endres\r\n 'lt-LT': 'li',\r\n 'nb': 'no',\r\n 'nb-NO': 'no',\r\n 'nn-NO': 'no',\r\n 'pl': 'pl', // polsk\r\n 'pl-PL': 'pl',\r\n 'uk': 'ukr',\r\n 'uk-UA': 'ukr',\r\n 'so': 'so',\r\n 'ti': 'ti'\r\n};\r\n\r\n\r\nexport const talandeWebMapping = {\r\n \"en\": \"en-gb\",\r\n \"no\": \"no-no\",\r\n \"ar\": \"ar\",\r\n \"pl\": \"pl-pl\",\r\n \"ukr\": \"uk\",\r\n \"es\": \"es-es\",\r\n};","const strings = {\r\n translation: {\r\n APP_NAME: 'Refugee Buddy',\r\n USEFUL_LINKS: 'Liens utiles',\r\n SELECT_YOUR_COUNTRY: 'Sélectionnez votre destination',\r\n CHANGE_COUNTRY_TITLE: 'Changer de pays de destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'Si vous changez de pays de destination, les données de l’app seront réinitialisées. Voulez-vous continuer?',\r\n CONTINUE: 'Continuer',\r\n CANCEL: 'Annuler',\r\n DASHBOARD: 'Dashboard',\r\n USEFUL_LINKS: 'Liens utiles',\r\n \r\n ASYLUM_PROCEDURE: 'Procédure d’asile',\r\n HOUSING_AND_SOCIAL: 'Logement et social',\r\n EDUCATION_AND_WORK: 'Éducation et travail',\r\n HEALTH: 'Santé',\r\n FAMILY_IMMIGRATION: 'Immigration familiale',\r\n PSYCHOSOCIAL_SUPPORT: 'Soutien psychosocial',\r\n PROCEDURE_STEP: 'Et aprés ?',\r\n LOCATIONS: 'Emplacements',\r\n NEWS: 'Actualités',\r\n POINT_IT: 'Pointez-le',\r\n TRANSPORT: 'Transport',\r\n FIRST_AID: 'Premiers Secours',\r\n TRANSLATE: 'Traduire',\r\n ABOUT: 'A propos',\r\n TRACING: 'Traçage',\r\n CONTACT: 'Contact',\r\n FAQ: 'FAQ',\r\n DISCLAIMER: 'Démenti',\r\n MISC: 'Corona',\r\n PROCEDURE_STEP: 'Combien de temps devez-vous rester à l’endroit où vous êtes actuellement ? Où irez-vous après? Combien de temps faut-il pour les procédures?',\r\n NORWEGIAN: 'Norsk',\r\n UKRAINA: 'Українська',\r\n ENGLISH: 'English',\r\n DISCRIMINATION: 'Discrimination',\r\n RACISM: 'Racisme',\r\n SOCIAL_GROUPS: 'Groupes sociaux',\r\n SPECIAL_SITUATIONS: 'Situations spéciales',\r\n HATE_SPEECH: 'Discours de haine',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'ጠቓሚ ሊንክታት',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'ቀጽል',\r\n CANCEL: 'ደምስስ',\r\n DASHBOARD: 'ሰሌዳ ዳሽቦርድ',\r\n ASYLUM_PROCEDURE: 'ዑቕባ',\r\n HOUSING_AND_SOCIAL: 'ስራሕን ድሕነትን',\r\n EDUCATION_AND_WORK: 'ትምህርትን ቤት ትምህርትን',\r\n HEALTH: ' ጥዕና',\r\n FAMILY_IMMIGRATION: 'ምጥርናፍ ስድራቤት',\r\n PSYCHOSOCIAL_SUPPORT: 'ስነ-ኣእምሮኣዊ ማሕበራዊ ደገፍ',\r\n PROCEDURE_STEP: 'መሰላተይ',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'ዜና',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'መጓዓዝያ',\r\n FIRST_AID: 'ቀዳማይ ረድኤት',\r\n TRANSLATE: 'ኣገልግሎት ትርጕም',\r\n ABOUT: 'ብዛዕባ',\r\n TRACING: 'ኣገልግሎት ምድላይ',\r\n CONTACT: 'መወከሲ',\r\n FAQ: 'ጸብጻብ ምሃብ',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'ኮሮና ቫይረስ',\r\n DOWNLOAD_APP: 'ነቲ ኣፕሊኬሽን ኣውርዶ!',\r\n DOWNLOAD_APP_DESCRIPTION: 'ናህና ኣፕሊኬሽንና ኣብ ተሌፎናት ኣፕልን ኣንድሮይድን ይርከብ እዩ ። ሕጂ ምእንቲ ኽትጅምር ኣውርድ!',\r\n INTRO_TEXT: 'ፊን ፍራም ንማሕበረሰብ ኖርወይ ንኽትድህስሶን ብተወሳኺ ድማ ብዛዕባ ሕግታት ኖርወይ መሰላትካን ከምኡውን ሓገዝ ኣበይ ክትረክብ ከም እትኽእል ሓበሬታ ንኽትረክብን ይሕግዘካ።',\r\n FOOTER_ABOUT: 'ብዛዕባ ሕርሻ ፊን',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'ቋንቋ',\r\n CATEGORY: 'ፍረ ነገር',\r\n DISCRIMINATION: 'ኣድልዎ',\r\n RACISM: 'ዓሌትነት',\r\n SOCIAL_GROUPS: 'ማሕበራዊ ጉጅለታት',\r\n SPECIAL_SITUATIONS: 'ፍሉያት ኩነታት',\r\n HATE_SPEECH: 'ናይ ጽልኢ ዘረባ',\r\n\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Корисні посилання',\r\n\r\n SELECT_YOUR_COUNTRY: 'Виберіть',\r\n CHANGE_COUNTRY_TITLE: 'Змінити країну призначення',\r\n CHANGE_COUNTRY_DESCRIPTION: 'Змінюючи країну призначення, дані додатка будуть скинуті. Бажаєте продовжити?',\r\n CONTINUE: 'Продовжити',\r\n CANCEL: 'Скасувати',\r\n DASHBOARD: 'Панель',\r\n USEFUL_LINKS: 'Корисні посилання',\r\n ASYLUM_PROCEDURE: 'Процедура утримання',\r\n HOUSING_AND_SOCIAL: 'Житло та соціальні послуги',\r\n EDUCATION_AND_WORK: 'Освіта та робота',\r\n HEALTH: 'Здоров\\'я',\r\n FAMILY_IMMIGRATION: 'Сімейне утримання',\r\n PSYCHOSOCIAL_SUPPORT: 'Психосоціальна підтримка',\r\n PROCEDURE_STEP: 'Що далі?',\r\n LOCATIONS: 'Місця',\r\n NEWS: 'Новини',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Транспорт',\r\n FIRST_AID: 'Перша допомога',\r\n TRANSLATE: 'Переклад',\r\n ABOUT: 'Про додаток',\r\n TRACING: 'Трасування',\r\n CONTACT: 'Контакти',\r\n FAQ: 'FAQ',\r\n DISCLAIMER: 'Відмова від відповідальності',\r\n MISC: 'Корона',\r\n PROCEDURE_STEP: 'Яку тривалість ви знаходитесь на місці, де ви зараз? Де ви піде далі? Яка тривалість процедури?',\r\n DOWNLOAD_APP: 'Завантажте додаток!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Наш додаток доступний для смартфонів Apple та Android. Завантажте зараз, щоб почати!',\r\n INTRO_TEXT: 'Finn Fram допоможе вам орієнтуватися в норвезькому суспільстві та знайти інформацію про норвезькі правила, ваші права та де ви можете отримати допомогу.',\r\n FOOTER_ABOUT: 'Про Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: 'Finn Fram',\r\n FEATURES_TITLE: 'Дізнайтеся про інформацію в додатку',\r\n FEATURES: 'Завантажте додаток, щоб ',\r\n NORWEGIAN: 'Норвезька',\r\n UKRAINA: 'Українська',\r\n ENGLISH: 'Англійська',\r\n LANGUAGE: 'Мова',\r\n CATEGORY: 'Категорія',\r\n ABOUT: 'Про додаток',\r\n DISCRIMINATION: 'дискримінація',\r\n RACISM: 'расизм',\r\n SOCIAL_GROUPS: 'Соціальні групи',\r\n SPECIAL_SITUATIONS: 'Особливі ситуації',\r\n HATE_SPEECH: 'мова ворожнечі',\r\n }\r\n };\r\n\r\n export default strings;\r\n \r\n\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Lifaaqyada muhiimka ah',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'Sii wad',\r\n CANCEL: 'Jooji',\r\n DASHBOARD: 'Goobta Maamulka',\r\n ASYLUM_PROCEDURE: 'Magangalyada',\r\n HOUSING_AND_SOCIAL: 'Shaqada iyo daryeelka',\r\n EDUCATION_AND_WORK: 'Waxbarashadda & dugsiga',\r\n HEALTH: 'Caafimaadka',\r\n FAMILY_IMMIGRATION: 'Mideynta qoysaska',\r\n PSYCHOSOCIAL_SUPPORT: 'Taageerada dhaqanka iyo bulshadda',\r\n PROCEDURE_STEP: 'Xuquuqdayda',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'Wararka',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Gaadiidka',\r\n FIRST_AID: 'Gargaarka Degdega ah',\r\n TRANSLATE: 'Adeegyada turjumaada',\r\n ABOUT: 'Ku saabsan',\r\n TRACING: 'Adeegga baafinta',\r\n CONTACT: 'Xidhiidhka',\r\n FAQ: 'Ka warbixinta',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'Korona fayraska',\r\n DOWNLOAD_APP: 'Soo deji aabka!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Abkayga waxaa lagu heli karaa labbadaba telefoonada Apple iyo Android. Soo deji hadda si aad u bilowdo!',\r\n INTRO_TEXT: 'Finn Fram waxay kaa caawisaa dhex marka bulshadda Norway iyo helida macluumaadka ku saabsan sharciyada Norway, xuquuqdaada iyo halka aad caawimo ka heli karto.',\r\n FOOTER_ABOUT: 'Ku saabsan Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'Luuqadda',\r\n CATEGORY: 'Mowduuca',\r\n DISCRIMINATION: 'Takoorka',\r\n RACISM: 'Cunsuriyada',\r\n SOCIAL_GROUPS: 'Kooxaha bulshada',\r\n SPECIAL_SITUATIONS: 'Xaaladaha gaarka ah',\r\n HATE_SPEECH: 'Hadalka nacaybka',\r\n\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'پیوندهای مفید',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'ادامه',\r\n CANCEL: 'لغو',\r\n DASHBOARD: 'داشبورد',\r\n ASYLUM_PROCEDURE: 'پناهندگی',\r\n HOUSING_AND_SOCIAL: 'کار و رفاه',\r\n EDUCATION_AND_WORK: 'آموزش و مدرسه',\r\n HEALTH: 'سلامت',\r\n FAMILY_IMMIGRATION: 'انوادە الحاق مجدد با',\r\n PSYCHOSOCIAL_SUPPORT: 'حمایت روانی-اجتماعی',\r\n PROCEDURE_STEP: 'حقوق من',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'اخبار',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'حمل‌ونقل',\r\n FIRST_AID: 'کمک‌های اولیه',\r\n TRANSLATE: 'خدمات ترجمه',\r\n ABOUT: 'درباره',\r\n TRACING: 'ردیابی',\r\n CONTACT: 'تماس',\r\n FAQ: 'گزارش دادن',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'ویروس کرونا',\r\n DOWNLOAD_APP: 'برنامه را دانلود کنید!',\r\n DOWNLOAD_APP_DESCRIPTION: 'برنامه ما در هر دو گوشی Apple و Android دردسترس است. برای شروع، همین‌حالا دانلود کنید!',\r\n INTRO_TEXT: 'Finn Fram به شما کمک می‌کند تا در جامعه نروژ پیمایش کنید و اطلاعاتی درمورد قوانین نروژ، حقوق خود و جاهایی‌که می‌توانید کمک دریافت کنید بیابید.',\r\n FOOTER_ABOUT: 'درباره Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'زبان',\r\n CATEGORY: 'موضوع',\r\n DISCRIMINATION: 'تبعیض',\r\n RACISM: 'نژادپرستی',\r\n SOCIAL_GROUPS: 'گروه‌های اجتماعی',\r\n SPECIAL_SITUATIONS: 'موقعیت‌های خاص',\r\n HATE_SPEECH: 'سخنان مشوق عداوت و تنفر',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Przydatne linki',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'Kontynuuj',\r\n CANCEL: 'Anuluj',\r\n DASHBOARD: 'Pulpit',\r\n ASYLUM_PROCEDURE: 'Asylum procedure',\r\n HOUSING_AND_SOCIAL: 'Praca i opieka społeczna',\r\n EDUCATION_AND_WORK: 'Szkoła i edukacja',\r\n HEALTH: 'Zdrowie',\r\n FAMILY_IMMIGRATION: 'Family reunification',\r\n PSYCHOSOCIAL_SUPPORT: 'Wsparcie psychospołeczne',\r\n PROCEDURE_STEP: 'Moje prawa',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'Wiadomości',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Transport',\r\n FIRST_AID: 'Pierwsza pomoc',\r\n TRANSLATE: 'Usługi tłumaczeń',\r\n ABOUT: 'Informacje',\r\n TRACING: 'Biuro Informacji i Poszukiwań',\r\n CONTACT: 'Kontakt',\r\n FAQ: 'Zgłaszanie nieprawidłowości',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'Koronawirus',\r\n DOWNLOAD_APP: 'Pobierz aplikację!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Aplikacja jest dostępna w wersji na Androida i telefony Apple. Pobierz już teraz, aby rozpocząć!',\r\n INTRO_TEXT: 'Finn Fram pomaga osobom przybywającym do Norwegii odnaleźć się w społeczeństwie i zapewnia informacje na temat norweskich przepisów, przysługujących praw oraz miejsc, w których można uzyskać pomoc.',\r\n FOOTER_ABOUT: 'O Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'Język',\r\n CATEGORY: 'Motyw',\r\nDISCRIMINATION: 'Dyskryminacja',\r\nRACISM: 'Rasizm',\r\nSOCIAL_GROUPS: 'Grupy społeczne',\r\nSPECIAL_SITUATIONS: 'Sytuacje szczególne',\r\nHATE_SPEECH: 'Mowa nienawiści',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","const strings = {\r\n translation: {\r\n APP_NAME: 'Finn Fram',\r\n USEFUL_LINKS: 'Enlaces útiles',\r\n\r\n SELECT_YOUR_COUNTRY: 'Select your destination',\r\n CHANGE_COUNTRY_TITLE: 'Change country destination',\r\n CHANGE_COUNTRY_DESCRIPTION: 'By changing the country destination the app data will be reset. Would you like to continue?',\r\n CONTINUE: 'Continuar',\r\n CANCEL: 'Cancelar',\r\n DASHBOARD: 'Panel principal',\r\n ASYLUM_PROCEDURE: 'Asylum procedure',\r\n HOUSING_AND_SOCIAL: 'Trabajo y bienestar',\r\n EDUCATION_AND_WORK: 'Educación y escolarización',\r\n HEALTH: 'Salud',\r\n FAMILY_IMMIGRATION: 'Family reunification',\r\n PSYCHOSOCIAL_SUPPORT: 'Apoyo psicosocial',\r\n PROCEDURE_STEP: 'Mis derechos',\r\n LOCATIONS: 'Locations',\r\n NEWS: 'Noticias',\r\n POINT_IT: 'Point it',\r\n TRANSPORT: 'Transporte',\r\n FIRST_AID: 'Primeros auxilios',\r\n TRANSLATE: 'Servicios de interpretación',\r\n TRACING: 'Servicio de búsqueda',\r\n CONTACT: 'Contacto',\r\n FAQ: 'Denuncias',\r\n DISCLAIMER: 'Disclaimer',\r\n MISC: 'Coronavirus',\r\n DOWNLOAD_APP: '¡Descargue la app!',\r\n DOWNLOAD_APP_DESCRIPTION: 'Nuestra app está disponible en teléfonos Apple y Android. ¡Descárgala ahora para empezar!',\r\n INTRO_TEXT: 'Finn Fram le ayuda a navegar por la sociedad noruega y encontrar información sobre las normas noruegas, sus derechos y dónde puede obtener ayuda.',\r\n FOOTER_ABOUT: 'Acerca de Finn Fram',\r\n FOOTER_CONTACT: '',\r\n FOOTER_DESCRIPTION: '',\r\n FEATURES_TITLE: 'Discover the information within the app',\r\n FEATURES: 'Download the app to',\r\n BANNER: 'en.mp4',\r\n NORWEGIAN: 'Norsk (Norwegian)',\r\n UKRAINA: 'українська (Ukrainsk)',\r\n ENGLISH: 'Engelsk (English)',\r\n LANGUAGE: 'Idioma',\r\n CATEGORY: 'Tema',\r\n ABOUT: 'Acerca de',\r\n DISCRIMINATION: 'Discriminación',\r\n RACISM: 'Racismo',\r\n SOCIAL_GROUPS: 'Grupos sociales',\r\n SPECIAL_SITUATIONS: 'Situaciones especiales',\r\n HATE_SPEECH: 'Incitación al odio',\r\n }\r\n};\r\n\r\nexport default strings;\r\n","import i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport resources from './config/i18n';\r\n\r\ni18n\r\n .use(initReactI18next) // passes i18n down to react-i18next\r\n .init({\r\n resources,\r\n lng: \"en\",\r\n fallbackLng: \"en\",\r\n keySeparator: false, \r\n interpolation: {\r\n escapeValue: false\r\n }\r\n });\r\n\r\n export default i18n;","import { createSlice } from '@reduxjs/toolkit';\r\nimport {languageMap} from \"../../config/i18n\";\r\nimport i18n from \"../../i18n\";\r\n\r\nlet lang = languageMap[navigator.language];\r\nif (lang === undefined) {\r\n lang = 'en';\r\n}\r\ni18n.changeLanguage(lang);\r\n\r\nexport const languageSlice = createSlice({\r\n name: 'language',\r\n initialState: {\r\n language: lang\r\n },\r\n reducers: {\r\n setLanguage: (state, action) => {\r\n state.language = action.payload;\r\n i18n.changeLanguage(action.payload);\r\n }\r\n }\r\n});\r\n\r\nexport const { setLanguage } = languageSlice.actions;\r\nexport const getLanguage = state => { return state.language.language }\r\nexport const getSelectedLanguage = state => { return state.language.language }\r\nexport default languageSlice.reducer;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { setLanguage, getLanguage } from './languageSlice';\r\nimport { getLanguages } from '../articles/articlesSlice';\r\n// Change to Dropdown.css ^\r\nimport { Dropdown, Image, NavDropdown } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Link, useHistory } from 'react-router-dom';\r\n\r\n\r\nexport function LanguageDropdownItem() {\r\n const history = useHistory();\r\n const languages = useSelector(getLanguages);\r\n const selectedLanguage = useSelector(getLanguage);\r\n const dispatch = useDispatch();\r\n const { t, i18n } = useTranslation();\r\n\r\n const isSelectedLanguage = abbr => selectedLanguage === abbr;\r\n const onChangeLanguage = abbr => {\r\n dispatch(setLanguage(abbr));\r\n };\r\n const getLanguageName = abbr => {\r\n const l = languages.find(l => l.abbr === abbr);\r\n if (l !== undefined) {\r\n return l.title;\r\n }\r\n return 'English';\r\n };\r\n\r\n return (\r\n <>\r\n {languages.map((l, i) => {\r\n const classNames = isSelectedLanguage(l.abbr) ? 'dd-links active' : 'dd-links';\r\n return (\r\n onChangeLanguage(l.abbr)}>\r\n {l.title}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { NavDropdown } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {CountryDropdownMenu} from \"./countrySwitcher/CountryDropdownMenu\";\r\nimport {LanguageDropdownItem} from \"./language/LanguageDropdownMenu\";\r\n\r\n\r\n\r\n\r\nexport const LanguageAndCountryDropdownItems = () => {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n\r\n \r\n\r\n );\r\n};\r\n","import React, {useEffect, useState} from 'react';\r\nimport { Navbar, NavDropdown, Row, Container, Col, Image, Nav } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Link } from 'react-router-dom';\r\nimport './Header.css';\r\nimport { LanguageAndCountryDropdownItems } from '../features/LanguageAndCountryDropdowns';\r\nimport {useSelector} from \"react-redux\";\r\nimport {getSelectedLanguage} from \"../features/language/languageSlice\";\r\nimport {getLanguages} from \"../features/articles/articlesSlice\";\r\n\r\n/*global ReachDeck */\r\n/*eslint no-undef: \"error\"*/\r\nexport const Header = () => {\r\n const { t, i18n } = useTranslation();\r\n const languages = useSelector(getLanguages);\r\n const selectedLanguage = useSelector(getSelectedLanguage);\r\n const [languageBdo, setLanguageBdo] = useState('ltr');\r\n const [languageName, setLanguageName] = useState('');\r\n\r\n useEffect(() => {\r\n const language = languages.find(l => l.abbr == selectedLanguage);\r\n if (language?.bdo !== undefined && language?.bdo !== null) {\r\n setLanguageBdo(language.bdo);\r\n }\r\n if (language?.title !== undefined && language?.title !== null) {\r\n setLanguageName(language.title)\r\n }\r\n console.log(language);\r\n }, [languages, selectedLanguage, setLanguageName])\r\n\r\n console.log(selectedLanguage)\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ReachDeck.panel.toggleBar()}/>\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n};\r\n","import React from 'react';\r\nimport { Card, Image, Container, Row, Col } from 'react-bootstrap';\r\n\r\nexport const UsefulLink = ({ link }) => {\r\n return (\r\n \r\n \r\n \r\n {link.title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {link.description} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}","import React from 'react';\r\nimport { Container, Spinner } from 'react-bootstrap';\r\nimport { useSelector } from 'react-redux';\r\n\r\nexport const Loading = ({ children }) => {\r\n const isLoading = useSelector(state => state.articles.loading);\r\n\r\n if (isLoading) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return children;\r\n};\r\n","import React, {useEffect, useState} from 'react';\r\nimport {getArticles, getArticlesAsync, getCountries, getLanguages} from '../features/articles/articlesSlice';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Redirect, useRouteMatch } from 'react-router-dom';\r\nimport urlSlug from 'url-slug';\r\nimport { Image, Container } from 'react-bootstrap';\r\nimport { UsefulLink } from './UsefulLink';\r\nimport { findByLabelText } from '@testing-library/react';\r\nimport './Article.css';\r\nimport { getSelectedCountry, setCountry } from '../features/countrySwitcher/countrySlice';\r\nimport { setLanguage, getSelectedLanguage } from '../features/language/languageSlice';\r\nimport { Loading } from './Loading';\r\nimport * as LanguageDetect from 'languagedetect';\r\n\r\nexport const Article = () => {\r\n const route = useRouteMatch();\r\n const { country, slug } = route.params;\r\n\r\n const languages = useSelector(getLanguages);\r\n const selectedLanguage = useSelector(getSelectedLanguage);\r\n const countries = useSelector(getCountries);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n const isLoading = useSelector(state => state.articles.loading);\r\n const articles = useSelector(state => state.articles.articles);\r\n const usefullinks = useSelector(state => state.articles.usefullinks);\r\n const [languageDirection, setLanguageDirection] = useState('ltr');\r\n const [article, setArticle] = useState(undefined);\r\n\r\n const dispatch = useDispatch();\r\n\r\n\r\n useEffect(() => {\r\n console.log(country, selectedCountry)\r\n\r\n const c = countries.find(i => urlSlug(i.locationId.toLowerCase()) === country.toLowerCase());\r\n\r\n dispatch(setCountry(c));\r\n\r\n }, [countries, selectedCountry, countries]);\r\n\r\n useEffect(() => {\r\n console.log(articles);\r\n const a = articles.find(a => urlSlug(a.topicIdentifier.toLowerCase()) === slug.toLowerCase());\r\n console.log(a);\r\n if (a === undefined || a === null) {\r\n return;\r\n }\r\n\r\n const articleBdo = languages.find(l => l.abbr === a.languageAbbr)?.bdo;\r\n if (articleBdo) {\r\n setLanguageDirection(articleBdo);\r\n }\r\n\r\n setArticle(a);\r\n\r\n }, [languages, languageDirection, setLanguageDirection, articles, slug]);\r\n\r\n if (isLoading) {\r\n return \r\n }\r\n\r\n /*if (article === undefined && article == null) {\r\n return \r\n }*/\r\n\r\n if (!article) {\r\n return

Not found

\r\n }\r\n\r\n const getUsefulLinks = article => {\r\n if (article.usefullinkIds === undefined) {\r\n return;\r\n }\r\n\r\n return article.usefullinkIds.map(id => {\r\n const link = usefullinks.find(l => l.id === id);\r\n\r\n if (link === undefined) {\r\n return;\r\n }\r\n\r\n return
\r\n });\r\n }\r\n\r\n return (\r\n \r\n

{article.title}

\r\n {article.image && }\r\n
\r\n
{getUsefulLinks(article)}
\r\n \r\n\r\n );\r\n}\r\n","export const listStyle = {\r\n DEFAULT: 0,\r\n NUMBERED: 1,\r\n };\r\n\r\nexport const sectionType = {\r\n ASYLUM_PROCEDURE: 'asylum-procedure',\r\n HOUSING_AND_SOCIAL: 'housing-and-social',\r\n EDUCATION_AND_WORK: 'education-and-work',\r\n HEALTH: 'health',\r\n FAMILY_IMMIGRATION: 'family-immigration',\r\n PSYCHOSOCIAL_SUPPORT: 'psychosocial-support',\r\n PROCEDURE_STEP: 'procedure-step',\r\n NEWS: 'news',\r\n POINT_IT: 'point-it',\r\n TRANSPORT: 'transport',\r\n FIRST_AID: 'first-aid',\r\n TRANSLATE: 'translate',\r\n COUNTRY_INFO: 'country-info',\r\n TRACING: 'tracing',\r\n FAQ: 'faq',\r\n DISCLAIMER: 'disclaimer',\r\n CONTACT: 'contact',\r\n ABOUT: 'about',\r\n ONBOARDING: 'onboarding',\r\n MISC: 'misc',\r\n DISCRIMINATION: 'discrimination',\r\n RACISM: 'racism',\r\n SOCIAL_GROUPS: 'social-groups',\r\n SPECIAL_SITUATIONS: 'special-situations',\r\n HATE_SPEECH: 'hate-speech',\r\n};\r\n\r\nexport const images = {\r\n LOGO: 'assets/logo.png',\r\n CLOSE: 'assets/close.png',\r\n ARROW_SMALL: 'assets/glyphArrowSmall.png',\r\n TAB_BAR: {\r\n DASHBOARD: 'assets/tabs/dashboard.png',\r\n FAQ: 'assets/tabs/faq.png',\r\n USEFUL_LINKS: 'assets/tabs/usefulLinks.png',\r\n CONTACT: 'assets/tabs/contact.png',\r\n ABOUT: 'assets/tabs/about.png',\r\n },\r\n SECTION: {\r\n ASYLUM_PROCEDURE: '/assets/images/icons/Asyl.png',\r\n HOUSING_AND_SOCIAL: '/assets/images/icons/Bolig.png',\r\n EDUCATION_AND_WORK: '/assets/images/icons/Utdanning.png',\r\n HEALTH: '/assets/images/icons/Helse.png',\r\n FAMILY_IMMIGRATION: '/assets/images/icons/Gjenforening.png',\r\n PSYCHOSOCIAL_SUPPORT: '/assets/images/icons/Psykhelse.png',\r\n PROCEDURE_STEP: '/assets/images/icons/Språk3.png',\r\n LOCATIONS: '/assets/images/icons/Lokasjon.png',\r\n NEWS: '/assets/images/icons/Nyheter.png',\r\n POINT_IT: '/assets/images/icons/Helse3.png',\r\n TRANSPORT: '/assets/images/icons/Transport.png',\r\n FIRST_AID: '/assets/images/icons/Forstehjelp.png',\r\n TRANSLATE: '/assets/images/icons/Sprak.png',\r\n ABOUT: '/assets/images/icons/Språk2.png',\r\n TRACING: '/assets/images/icons/Oppsporing.png',\r\n MISC: '/assets/images/icons/Helse3.png',\r\n DISCRIMINATION: '/assets/images/icons/Diskriminering.png',\r\n RACISM: '/assets/images/icons/rasisme.png',\r\n SOCIAL_GROUPS: '/assets/images/icons/sosialegrupper.png',\r\n SPECIAL_SITUATIONS: '/assets/images/icons/spesiellesituasjoner.png',\r\n HATE_SPEECH: '/assets/images/icons/hatefulleytringer.png',\r\n }\r\n };\r\n\r\nexport const sections = [\r\n {\r\n type: sectionType.ASYLUM_PROCEDURE,\r\n title: 'ASYLUM_PROCEDURE',\r\n image: images.SECTION.ASYLUM_PROCEDURE,\r\n listStyle: listStyle.NUMBERED,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.HOUSING_AND_SOCIAL,\r\n title: 'HOUSING_AND_SOCIAL',\r\n image: images.SECTION.HOUSING_AND_SOCIAL,\r\n listStyle: listStyle.NUMBERED,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.EDUCATION_AND_WORK,\r\n title: 'EDUCATION_AND_WORK',\r\n image: images.SECTION.EDUCATION_AND_WORK,\r\n listStyle: listStyle.NUMBERED,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.HEALTH,\r\n title: 'HEALTH',\r\n image: images.SECTION.HEALTH,\r\n listStyle: listStyle.NUMBERED,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.FAMILY_IMMIGRATION,\r\n title: 'FAMILY_IMMIGRATION',\r\n image: images.SECTION.FAMILY_IMMIGRATION,\r\n listStyle: listStyle.NUMBERED,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.PSYCHOSOCIAL_SUPPORT,\r\n title: 'PSYCHOSOCIAL_SUPPORT',\r\n image: images.SECTION.PSYCHOSOCIAL_SUPPORT,\r\n listStyle: listStyle.NUMBERED,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.PROCEDURE_STEP,\r\n title: 'PROCEDURE_STEP',\r\n description: 'SECTION.DESCRIPTION.PROCEDURE_STEP',\r\n image: images.SECTION.PROCEDURE_STEP,\r\n listStyle: listStyle.NUMBERED,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.NEWS,\r\n title: 'NEWS',\r\n image: images.SECTION.NEWS,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.POINT_IT,\r\n title: 'POINT_IT',\r\n image: images.SECTION.POINT_IT,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.TRANSPORT,\r\n title: 'TRANSPORT',\r\n image: images.SECTION.TRANSPORT,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.FIRST_AID,\r\n title: 'FIRST_AID',\r\n image: images.SECTION.FIRST_AID,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.TRANSLATE,\r\n title: 'TRANSLATE',\r\n image: images.SECTION.TRANSLATE,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.COUNTRY_INFO,\r\n title: 'ABOUT',\r\n image: images.SECTION.ABOUT,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.TRACING,\r\n title: 'TRACING',\r\n image: images.SECTION.TRACING,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: true,\r\n },\r\n {\r\n type: sectionType.FAQ,\r\n title: 'FAQ',\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.CONTACT,\r\n title: 'CONTACT',\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.ABOUT,\r\n title: 'ABOUT',\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.DISCLAIMER,\r\n title: 'DISCLAIMER',\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.ONBOARDING,\r\n title: 'onboarding',\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.MISC,\r\n title: 'MISC',\r\n image: images.SECTION.MISC,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.DISCRIMINATION,\r\n title: 'DISCRIMINATION',\r\n image: images.SECTION.DISCRIMINATION,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.RACISM,\r\n title: 'RACISM',\r\n image: images.SECTION.RACISM,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.SOCIAL_GROUPS,\r\n title: 'SOCIAL_GROUPS',\r\n image: images.SECTION.SOCIAL_GROUPS,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.SPECIAL_SITUATIONS,\r\n title: 'SPECIAL_SITUATIONS',\r\n image: images.SECTION.SPECIAL_SITUATIONS,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n {\r\n type: sectionType.HATE_SPEECH,\r\n title: 'HATE_SPEECH',\r\n image: images.SECTION.HATE_SPEECH,\r\n listStyle: listStyle.DEFAULT,\r\n inDashboard: false,\r\n },\r\n ];\r\n","import React from 'react';\r\nimport urlSlug from 'url-slug';\r\nimport { Link, withRouter, useHistory } from 'react-router-dom';\r\nimport { sections } from '../config/sections';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Image, Container, Row, Col } from 'react-bootstrap';\r\nimport { useSelector } from 'react-redux';\r\nimport { getSelectedCountry } from '../features/countrySwitcher/countrySlice';\r\nimport './ArticleListView.css';\r\nimport * as LanguageDetect from 'languagedetect';\r\n\r\nexport const ArticleListView = ({ name, articles }) => {\r\n const { t } = useTranslation();\r\n const history = useHistory();\r\n\r\n\r\n const key = sections.find(s => s.type == name);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n\r\n const generateArticle = (article) => {\r\n if (article.body === undefined) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n\r\n
\r\n\r\n {article.title}\r\n
\r\n
\r\n );\r\n}\r\n return (\r\n \r\n

{t(key.title)}

\r\n {articles.map(generateArticle)}\r\n
\r\n )\r\n}\r\n","import React, {useEffect, useState} from 'react';\r\nimport { Article } from './Article';\r\nimport { ArticleListView } from './ArticleListView';\r\nimport { useRouteMatch, Redirect } from 'react-router-dom';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {getCountries, getSections} from '../features/articles/articlesSlice';\r\nimport urlSlug from 'url-slug';\r\nimport {getSelectedCountry, setCountry} from '../features/countrySwitcher/countrySlice';\r\nimport {Loading} from \"./Loading\";\r\n\r\nexport const ArticleHandler = () => {\r\n const route = useRouteMatch();\r\n const countries = useSelector(getCountries);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n const sections = useSelector(getSections);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const isLoading = useSelector(state => state.articles.loading);\r\n const [section, setSection] = useState(undefined);\r\n const [isArticleList, setIsArticlesList] = useState(undefined);\r\n const [displayListView, setDisplayListView] = useState(undefined);\r\n console.log(route);\r\n\r\n let { name = \"misc\" } = route.params;\r\n const { slug } = route.params;\r\n\r\n\r\n\r\n useEffect(() => {\r\n const c = countries.find(i => urlSlug(i.locationId.toLowerCase()) === slug.toLowerCase());\r\n if (c !== undefined || c !== null) {\r\n console.log(\"DISPATCHING\")\r\n dispatch(setCountry(c));\r\n }\r\n\r\n console.log(slug);\r\n console.log(countries);\r\n }, [countries, selectedCountry, countries]);\r\n\r\n useEffect(() => {\r\n if (sections[name] !== undefined && sections[name] !== null) {\r\n const section = sections[name];\r\n const hasArticles = section !== undefined && section.length > 0 || false;\r\n\r\n setSection(section);\r\n setIsArticlesList(hasArticles)\r\n console.log(section);\r\n setDisplayListView(section.length > 1 || false);\r\n }\r\n console.log(sections);\r\n }, [sections, setSection, setIsArticlesList])\r\n\r\n if (isLoading) return \r\n\r\n if (displayListView) {\r\n return
\r\n }\r\n\r\n if (section !== undefined) {\r\n const article = section[0];\r\n return \r\n }\r\n\r\n return (
);\r\n}\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { getUsefulLinks } from '../features/articles/articlesSlice';\r\nimport { UsefulLink } from './UsefulLink';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport const UsefulLinkList = () => {\r\n const { t } = useTranslation();\r\n const links = useSelector(getUsefulLinks);\r\n\r\n return (\r\n \r\n \r\n \r\n

{t('USEFUL_LINKS')}

\r\n \r\n
\r\n \r\n {links.map(l => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n
\r\n )\r\n}","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {\r\n getCountries\r\n} from '../articles/articlesSlice';\r\nimport { Dropdown, Image, NavDropdown } from 'react-bootstrap';\r\nimport './CountrySwitcher.css';\r\nimport { getSelectedCountry, setCountry } from './countrySlice';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst colors = {\r\n white: '#ffffff',\r\n black: '#000000',\r\n lightGrey: '#fef1f1',\r\n pinkishGrey: '#e1e0e0',\r\n warmGrey: '#737373',\r\n oceanBlue: '#82d4ef',\r\n cerulean: '#008ac5',\r\n darkCerulean: '#005d94',\r\n silver: '#c8c7cc',\r\n fireRed: '#fb0007',\r\n}\r\n\r\nconst styles = {\r\n\r\n width: 30,\r\n height: 30,\r\n borderRadius: 15,\r\n marginLeft: 5,\r\n borderColor: colors.white,\r\n backgroundColor: colors.pinkishGrey,\r\n borderWidth: 2,\r\n overflow: 'hidden',\r\n\r\n};\r\n\r\nconst CustomToggle = React.forwardRef(({ children, onClick }, ref) => (\r\n {\r\n e.preventDefault();\r\n onClick(e);\r\n }}\r\n className=\"custom-toggle\"\r\n >\r\n {children}\r\n \r\n ));\r\n\r\nexport const CountrySwitcher = () => {\r\n const history = useHistory();\r\n const countries = useSelector(getCountries);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n const dispatch = useDispatch();\r\n\r\n const isSelectedCountry = id => id === selectedCountry.country;\r\n\r\n const changeSelectedCountry = c => {\r\n dispatch(setCountry(c));\r\n history.push(\"/sections\");\r\n }\r\n\r\n return (\r\n <>\r\n {countries.map(c => (\r\n \r\n changeSelectedCountry(c)}>{c.title}\r\n \r\n ))}\r\n \r\n\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nimport './Download.css';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport const Download = () => {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{t('DOWNLOAD_APP')}

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n Get it on App Store\r\n \r\n \r\n Get it on Google Play\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n )\r\n}\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport './Intro.css';\r\n\r\nexport const Intro = () => {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n

{t('INTRO_TEXT')}

\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import './SectionBubble.css';\r\nimport React, { useEffect } from 'react';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {getCountries, getSections} from '../features/articles/articlesSlice';\r\nimport { Image, Container, Row, Col, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport {Link, useParams} from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { sections } from '../config/sections';\r\nimport './SectionBubble.css';\r\nimport {getSelectedCountry, setCountry} from \"../features/countrySwitcher/countrySlice\";\r\nimport urlSlug from \"url-slug\";\r\n\r\nconst getSection = (type) => {\r\n return sections.find(x => x.type === type);\r\n}\r\n\r\n\r\nexport const sectionColors = [\r\n '#fef1f1',\r\n];\r\n\r\n\r\nexport const SectionsBubble = () => {\r\n const sections = useSelector(getSections);\r\n const countries = useSelector(getCountries);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n const dispatch = useDispatch();\r\n\r\n const { t, i18n } = useTranslation();\r\n\r\n const params = useParams();\r\n\r\n useEffect(() => {\r\n dispatch(setCountry(countries.find(l => urlSlug(l.locationId) === params.slug)));\r\n }, [params, countries]);\r\n\r\n\r\n let sections2 = Object.keys(sections).sort().sort(function(x,y){ return x == 'misc' ? -1 : y == 'misc' ? 1 : 0; }).filter(x => {\r\n var section = getSection(x);\r\n return section.image !== undefined;\r\n });\r\n\r\n const multipleRows = sections2.length > 9;\r\n\r\n const getSectionLine = (sec, startAt) => {\r\n if (startAt === undefined) {\r\n startAt = 0;\r\n }\r\n return (\r\n <>\r\n {sec.map((section, i) => {\r\n var s = getSection(section);\r\n\r\n\r\n if (s !== undefined && s.image !== undefined) {\r\n return (\r\n \r\n \r\n {t(s.title)}\r\n \r\n }>\r\n
\r\n
\r\n \r\n {t(s.title)}\r\n \r\n
\r\n
\r\n {t(s.title)}\r\n
\r\n
\r\n \r\n \r\n );\r\n }\r\n\r\n })}\r\n \r\n\r\n );}\r\n\r\n return (\r\n \r\n
{getSectionLine(sections2)}
\r\n
\r\n )\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { useTranslation } from \"react-i18next\"\r\nimport { CountrySwitcher } from '../features/countrySwitcher/CountrySwitcher';\r\nimport { Language } from '../features/language/Language';\r\nimport { Container, Row, Col, Nav, } from 'react-bootstrap';\r\nimport { Download } from './Download';\r\nimport { Sections } from './Sections';\r\nimport { Loading } from './Loading';\r\nimport { Link } from 'react-router-dom';\r\nimport { Features } from './Features';\r\nimport { useSelector } from 'react-redux';\r\nimport { getSelectedLanguage } from '../features/language/languageSlice';\r\nimport { getSelectedCountry } from '../features/countrySwitcher/countrySlice';\r\nimport { Intro } from './Intro';\r\nimport { SectionsBubble } from './SectionsBubble';\r\nimport { useParams } from \"react-router-dom\";\r\nimport {getArticlesAsync} from \"../features/articles/articlesSlice\";\r\n\r\nexport const Main = (route) => {\r\n const { t } = useTranslation();\r\n\r\n const selectedLanguage = useSelector(getSelectedLanguage);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n useEffect(() => {\r\n console.log(\"YO2\", selectedLanguage, selectedCountry)\r\n //getArticlesAsync(selectedLanguage, selectedCountry));\r\n }, [selectedLanguage, selectedCountry])\r\n let banner = t('BANNER');\r\nuseEffect(() => {\r\n\r\n})\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Image, Container, Row, Col } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport '../App.css';\r\nimport './Footer.css';\r\n\r\n\r\nexport const Footer = () => {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n\r\n\r\n 🏳 {t('FOOTER_ABOUT')}\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","const images = {\r\n LOCATION_IDENTIFIERS: {\r\n \"Ny i Norge\": 'assets/images/icons/Lokasjon.png',\r\n \"Helse\": 'assets/images/icons/Helse.png',\r\n \"Ukrainere i Norge\": 'assets/images/icons/Ukraina.png',\r\n \"My rights\": 'assets/images/icons/MineRettigheter.png',\r\n }\r\n}\r\n\r\nexport const locations = [\r\n {\r\n locationId: \"Ny i Norge\",\r\n image: images.LOCATION_IDENTIFIERS[\"Ny i Norge\"]\r\n },\r\n {\r\n locationId: \"Ukrainere i Norge\",\r\n image: images.LOCATION_IDENTIFIERS[\"Ukrainere i Norge\"]\r\n },\r\n {\r\n locationId: \"Helse\",\r\n image: images.LOCATION_IDENTIFIERS.Helse\r\n },\r\n {\r\n locationId: \"My rights\",\r\n image: images.LOCATION_IDENTIFIERS[\"My rights\"]\r\n }\r\n]\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {\r\n getCountries\r\n} from '../articles/articlesSlice';\r\nimport { setCountry } from './countrySlice';\r\nimport { Image, Container, Row, Col, OverlayTrigger, Tooltip } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport './CountryBubble.css';\r\nimport PHimage from '../../logo.svg';\r\nimport {locations} from \"../../config/locations\";\r\nimport urlSlug from \"url-slug\";\r\n\r\nexport function CountryBubble() {\r\n const { t, i18n } = useTranslation();\r\n const history = useHistory();\r\n const countries = useSelector(getCountries);\r\n const dispatch = useDispatch();\r\n const changeSelectedCountry = c => {\r\n dispatch(setCountry(c));\r\n //history.push(\"/sections\");\r\n };\r\n\r\n const getCountryLine = () => {\r\n return (\r\n <>\r\n {countries.map((c) => {\r\n const image = locations.find(l => l.locationId.toLowerCase() === c.locationId.toLowerCase());\r\n\r\n let className = \"bubble-img\";\r\n if (c.locationId.toLowerCase() === \"ukrainere i norge\") {\r\n className += \" ukr\";\r\n }\r\n\r\n return (\r\n \r\n \r\n {t(c.title)}\r\n \r\n }>\r\n
\r\n
\r\n changeSelectedCountry(c)}>\r\n {t(c.title)}\r\n \r\n
\r\n
\r\n changeSelectedCountry(c)} className=\"section-text\">{t(c.title)}\r\n
\r\n
\r\n \r\n \r\n )\r\n })}\r\n \r\n );\r\n }\r\n\r\n\r\n\r\n return (\r\n \r\n
{getCountryLine()}
\r\n
\r\n )\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport { useTranslation } from \"react-i18next\"\r\nimport { CountrySwitcher } from '../features/countrySwitcher/CountrySwitcher';\r\nimport { Language } from '../features/language/Language';\r\nimport { Container, Row, Col, Nav, } from 'react-bootstrap';\r\nimport { Download } from './Download';\r\nimport { Sections } from './Sections';\r\nimport { Loading } from './Loading';\r\nimport { Link } from 'react-router-dom';\r\nimport { Features } from './Features';\r\nimport { useSelector } from 'react-redux';\r\nimport { getSelectedLanguage } from '../features/language/languageSlice';\r\nimport { getSelectedCountry } from '../features/countrySwitcher/countrySlice';\r\nimport { Intro } from './Intro';\r\nimport { SectionsBubble } from './SectionsBubble';\r\nimport { Country } from '../features/countrySwitcher/Country';\r\nimport { CountryBubble } from '../features/countrySwitcher/CountryBubble';\r\n\r\nexport const CountrySelectorPage = () => {\r\n const { t } = useTranslation();\r\n\r\n const selectedLanguage = useSelector(getSelectedLanguage);\r\n const selectedCountry = useSelector(getSelectedCountry);\r\n\r\n let banner = t('BANNER');\r\n useEffect(() => {\r\n\r\n })\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}","import '../App.css';\r\nimport React, { useState, useEffect } from 'react';\r\nimport {Container, Row, Col, Image} from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {getAbout, getContact} from \"../features/articles/articlesSlice\";\r\nimport {useSelector} from \"react-redux\";\r\nimport {Loading} from \"./Loading\";\r\nimport {UsefulLink} from \"./UsefulLink\";\r\nimport LanguageDetect from \"languagedetect\";\r\n\r\nexport const About = () => {\r\n const { t } = useTranslation();\r\n let about = useSelector(getAbout);\r\n let contact = useSelector(getContact);\r\n\r\n const usefullinks = useSelector(state => state.articles.usefullinks);\r\n const isLoading = useSelector(state => state.articles.loading);\r\n\r\n if (isLoading) {\r\n return ;\r\n }\r\n\r\n const getUsefulLinks = article => {\r\n if (article.usefullinkIds === undefined) {\r\n return;\r\n }\r\n\r\n return article.usefullinkIds.map(id => {\r\n const link = usefullinks.find(l => l.id === id);\r\n\r\n if (link === undefined) {\r\n return;\r\n }\r\n\r\n return
\r\n });\r\n }\r\n return (\r\n <>\r\n \r\n {about !== undefined && (\r\n \r\n \r\n

{about.title}

\r\n {about.image && }\r\n
\r\n
{getUsefulLinks(about)}
\r\n \r\n \r\n )}\r\n {contact !== undefined && (\r\n \r\n \r\n

{contact.title}

\r\n {contact.image && }\r\n
\r\n
{getUsefulLinks(contact)}
\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n","import React, {useEffect, useState} from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {\r\n getArticlesAsync, getCountries, getLanguages\r\n} from './features/articles/articlesSlice';\r\nimport './App.css';\r\nimport { Header } from './app/Header';\r\nimport { Article } from './app/Article';\r\nimport { getSelectedLanguage } from './features/language/languageSlice';\r\nimport { ArticleHandler } from './app/ArticleHandler';\r\nimport {\r\n BrowserRouter as Router,\r\n Switch,\r\n Route,\r\n Link\r\n} from 'react-router-dom';\r\nimport {getCountry, getSelectedCountry} from './features/countrySwitcher/countrySlice';\r\nimport './i18n';\r\nimport { UsefulLinkList } from './app/UsefulLinkList';\r\nimport { Main } from './app/Main';\r\nimport { LanguageSelectorPage } from './app/LanguageSelectorPage';\r\nimport { Footer } from './app/Footer';\r\nimport { Loading } from './app/Loading';\r\nimport { HeaderForLanguageSelectorPage } from './app/HeaderForLanguageSelectorPage';\r\nimport { CountrySelectorPage } from './app/CountrySelectorPage';\r\nimport { About } from './app/About';\r\nimport { talandeWebMapping } from './config/i18n';\r\n\r\nfunction App() {\r\n const dispatch = useDispatch();\r\n\r\n const selectedLanguage = useSelector(getSelectedLanguage)\r\n const selectedCountry = useSelector(getCountry);\r\n const languages = useSelector(getLanguages);\r\n const [languageDirection, setLanguageDirection] = useState('ltr');\r\n const [talandeWebLanguage, setTalandeWebLanguage] = useState(\"en-gb\");\r\n\r\n useEffect(() => {\r\n if (selectedLanguage !== undefined && selectedCountry !== undefined && selectedLanguage !== null && selectedCountry !== null) {\r\n dispatch(getArticlesAsync(selectedLanguage, selectedCountry));\r\n }\r\n }, [selectedLanguage, selectedCountry])\r\n\r\n useEffect(() => {\r\n setLanguageDirection(languages.find(l => l.abbr === selectedLanguage)?.bdo);\r\n setTalandeWebLanguage(talandeWebMapping[selectedLanguage] || selectedLanguage);\r\n }, [languages, languageDirection, setLanguageDirection]);\r\n\r\n return (\r\n \r\n {/* */}\r\n
\r\n \r\n \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n <>\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n