{"version":3,"sources":["assets/map.png","assets/menu-button.svg","assets/close-button.svg","assets/arrow_right.svg","assets/play-button.svg","app/Routing/TopAnimatedSwitch.js","app/Routing/FadeAnimatedSwitch.js","app/Routing/ScrollToTop.js","app/constants.js","app/Helpers/tokenGenerator.js","app/Services/LocaleService.js","app/Abstract/PubSub.js","app/Hoc/withLocale.js","app/Components/Buttons/Button.js","app/Components/Layout/Header.js","app/Containers/Navigation/Header.js","app/Components/Layout/Page.js","app/Containers/Page.js","app/Components/LargeTitle.js","app/Components/Buttons/ArrowButton.js","app/Components/Html.js","app/Containers/Intro.js","state/sv_se/index.js","state/en_us/index.js","app/Services/ContentService.js","app/Services/ArtworkService.js","app/Components/ImageMap.js","app/Components/Banner.js","app/Containers/Artworks.js","app/Services/PageService.js","app/Components/Menu/Menu.js","app/Components/Menu/MenuItem.js","app/Containers/Menu.js","app/Components/Artwork/Artists.js","app/Components/Attachment/AttachmentImage.js","app/Components/Attachment/AttachmentYoutube.js","app/Components/Attachment/Attachment.js","app/Containers/Artwork.js","app/Containers/Article.js","app/Containers/NotFound.js","app/App.js","serviceWorker.js","translations/en_us.js","translations/index.js","translations/sv_se.js","index.js"],"names":["module","exports","mapStyles","styles","zIndex","opacity","top","transformTop","bounceTransition","atEnter","atLeave","atActive","AnimatedSwitch","children","props","className","withRouter","history","useEffect","unlisten","listen","window","scrollTo","constants","PUBLIC_BASE_URL","process","PAGE_THEME_PRIMARY","PAGE_THEME_SECONDARY","NOT_FOUND_404_PATH","LANGUAGE_SWEDISH","LANGUAGE_ENGLISH","ATTACHMENT_TYPE_IMAGE","ATTACHMENT_TYPE_YOUTUBE","LOCALE_CHANGE_EVENT","IMAGE_MAP_SHAPE_POLYGON","ICON_MENU","ICON_CLOSE","LANGUAGES","ICONS","LANGUAGE_DEFAULT","LANGUAGE_FALLBACK","tokenGenerator","randomString","Math","random","toString","substr","localeServiceInstance","locale","translations","translator","addTranslation","setFallbackLocale","getCurrentLocale","setCurrentLocale","this","publish","topics","topic","callback","token","push","func","args","setTimeout","subscribers","length","m","i","j","splice","withLocale","WrappedComponent","useState","localeService","currentLocale","listenerToken","subscribe","event","unsubscribe","changeLocale","newLocale","Button","title","icon","onClick","classNames","iconImage","iconType","require","getIcon","join","ev","preventDefault","src","alt","Header","showClose","onClose","showMenu","onMenu","onLanguageChange","currentLanguage","_","goBack","Page","header","showFooter","theme","LargeTitle","subtitle","ArrowButton","Html","dangerouslySetInnerHTML","__html","match","params","state","pages","pageAboutArtists","pageAboutArtwork","pageAboutCreativeProcess","pageAboutCrossroads","pageArtAndPlay","artworks","ContentService","sv_se","en_us","ArtWorkService","slug","getState","find","artwork","map","coords","ImageMap","id","imageUrl","imageAlt","areas","mapImage","useRef","imageLoaded","setImageLoaded","height","width","naturalDimensions","setNaturalDimensions","actualDimensions","setActualDimensions","mapName","heightScaleRatio","widthScaleRatio","updateDimensions","current","naturalHeight","naturalWidth","offsetHeight","offsetWidth","onResize","addEventListener","removeEventListener","ref","useMap","hidefocus","onLoad","name","area","key","shape","scaleWidth","scaleHeight","pos","scaledPos","round","href","Banner","message","artworkService","ArtworkService","backgroundImage","getArtworks","PageService","page","menu_label","Menu","MenuItem","menuItems","getPageNavigation","item","to","Artists","artists","isMultipleArtists","Array","content","Image","url","Youtube","youtubeId","isPlaying","setIsPlaying","role","aria-label","style","frameBorder","allow","allowFullScreen","Attachment","attachment","caption","references","type","reference","getPageBySlug","attachments","image","about_object","article","console","log","lang","split","TopAnimatedSwitch","exact","path","component","Intro","FadeAnimatedSwitch","Artworks","Artwork","Article","NotFound","Boolean","location","hostname","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","error"],"mappings":"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","file":"static/js/main.be1b044e.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/map.fc50e574.png\";","module.exports = __webpack_public_path__ + \"static/media/menu-button.4b270f8b.svg\";","module.exports = __webpack_public_path__ + \"static/media/close-button.ec255f85.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow_right.8ebb7fd0.svg\";","module.exports = __webpack_public_path__ + \"static/media/play-button.5e3f1217.svg\";","import React from 'react';\nimport { AnimatedSwitch as RRTAnimatedSwitch } from 'react-router-transition';\n\nfunction mapStyles(styles) {\n return {\n zIndex: styles.zIndex,\n opacity: styles.opacity,\n top: `${styles.transformTop}%`,\n };\n}\n\nconst bounceTransition = {\n atEnter: {\n opacity: 1,\n transformTop: -100,\n zIndex: 3\n },\n atLeave: {\n opacity: 0,\n transformTop: 100,\n zIndex: 1\n },\n atActive: {\n opacity: 1,\n transformTop: 0,\n zIndex: 2\n\n }\n};\n\nconst AnimatedSwitch = ({children, ...props}) => {\n return (\n \n {children}\n \n );\n};\n\nexport default AnimatedSwitch;","import React from 'react';\nimport { AnimatedSwitch as RRTAnimatedSwitch } from 'react-router-transition';\n\nconst AnimatedSwitch = ({children, ...props}) => {\n return (\n \n {children}\n \n );\n};\n\nexport default AnimatedSwitch;","import { useEffect } from 'react';\nimport { withRouter } from 'react-router-dom';\n\nconst ScrollToTop = ({ history }) => {\n useEffect(() => {\n const unlisten = history.listen(() => {\n window.scrollTo(0, 0);\n });\n\n return () => {\n unlisten();\n };\n }, []);\n\n return (null);\n};\n\nexport default withRouter(ScrollToTop);\n","const constants = {\n PUBLIC_BASE_URL: process.env.PUBLIC_URL,\n\n PAGE_THEME_PRIMARY: 'page--primary',\n PAGE_THEME_SECONDARY: 'page--secondary',\n\n NOT_FOUND_404_PATH: '/404-not-found',\n\n LANGUAGE_SWEDISH: 'sv_se',\n LANGUAGE_ENGLISH: 'en_us',\n\n ATTACHMENT_TYPE_IMAGE: 'image',\n ATTACHMENT_TYPE_YOUTUBE: 'youtube',\n\n LOCALE_CHANGE_EVENT: 'LOCALE_CHANGE_EVENT',\n IMAGE_MAP_SHAPE_POLYGON: 'poly',\n ICON_MENU: 'icon-menu',\n ICON_CLOSE: 'icon-close'\n};\n\nconstants.LANGUAGES = [\n constants.LANGUAGE_ENGLISH,\n constants.LANGUAGE_SWEDISH\n]; \n\nconstants.ICONS = [\n constants.ICON_MENU,\n constants.ICON_CLOSE\n]; \n\nconstants.LANGUAGE_DEFAULT = constants.LANGUAGE_SWEDISH;\nconstants.LANGUAGE_FALLBACK = constants.LANGUAGE_SWEDISH;\n\nexport default constants;\n","export default function tokenGenerator() {\n const randomString = () => (Math.random().toString(36).substr(2, 9));\n\n return randomString() + randomString();\n}\n","\nimport {translator} from 'simple-dict-translator';\nimport PubSub from '../Abstract/PubSub';\nimport constants from '../constants';\n\nclass LocaleService extends PubSub {\n addTranslation(locale, translations) {\n translator.addTranslation(locale, translations);\n }\n\n setFallbackLocale(locale) {\n translator.setFallbackLocale(locale);\n }\n\n getCurrentLocale() {\n return translator.getCurrentLocale();\n }\n\n setCurrentLocale(locale) {\n translator.setCurrentLocale(locale);\n \n this.publish(\n constants.LOCALE_CHANGE_EVENT,\n {locale}\n );\n }\n}\n\nconst localeServiceInstance = new LocaleService();\n\nexport default localeServiceInstance;\n","import tokenGenerator from '../Helpers/tokenGenerator';\n\nclass PubSub {\n constructor() {\n this.topics = [];\n }\n\n\n subscribe(topic, callback) {\n if (!this.topics[topic]) {\n this.topics[topic] = [];\n }\n\n const token = tokenGenerator();\n\n this.topics[topic].push({\n token: token,\n func: callback\n });\n\n return token;\n }\n\n publish(topic, args) {\n if (!this.topics[topic]) {\n return false;\n }\n\n setTimeout(() => {\n const subscribers = this.topics[topic];\n let length = subscribers ? subscribers.length : 0;\n\n while (length--) {\n subscribers[length].func(topic, args);\n }\n },0);\n\n return true;\n }\n\n unsubscribe(token) {\n for (const m in this.topics) {\n if (this.topics[m]) {\n for (let i = 0, j = this.topics[m].length; i < j; i++) {\n if (this.topics[m][i].token === token) {\n this.topics[m].splice(i, 1);\n return token;\n }\n }\n }\n }\n\n return false;\n }\n}\n\nexport default PubSub;\n","import React, {useState, useEffect} from 'react';\nimport constants from '../constants';\nimport localeService from '../Services/LocaleService';\n\n// This function takes a component...\nfunction withLocale(WrappedComponent) {\n return (props) => {\n const [currentLocale, setCurrentLocale] = useState(localeService.getCurrentLocale());\n\n useEffect(() => {\n const listenerToken = localeService.subscribe(\n constants.LOCALE_CHANGE_EVENT, \n (event, args) => {\n setCurrentLocale(args.locale);\n }\n );\n\n return () => {\n localeService.unsubscribe(listenerToken);\n };\n }, []);\n\n return (\n {\n localeService.setCurrentLocale(newLocale);\n }}\n {...props}\n />\n );\n };\n}\n\nexport default withLocale;","import React from 'react';\nimport constants from '../../constants';\n\nfunction getIcon(iconType) {\n let icon = '';\n\n switch (iconType) {\n case constants.ICON_MENU:\n icon = require('../../../assets/menu-button.svg');\n break;\n case constants.ICON_CLOSE:\n default:\n icon = require('../../../assets/close-button.svg');\n break;\n }\n\n return icon;\n}\n\nconst Button = ({\n className,\n title,\n icon = false,\n onClick = () => {},\n ...props\n}) => {\n const classNames = ['button'];\n let iconImage = null;\n\n if (className) {\n classNames.push(className);\n }\n \n if (icon) {\n classNames.push('button--icon');\n classNames.push('button--icon--' + icon);\n iconImage = getIcon(icon);\n }\n\n return (\n {\n ev.preventDefault();\n onClick();\n }}\n {...props}\n >\n {!icon && (\n {title}\n )}\n {!!icon && (\n {title}\n )}\n \n );\n};\n\nexport default Button;\n","import React from 'react';\nimport constants from '../../constants';\nimport {translate as _} from 'simple-dict-translator';\nimport Button from '../Buttons/Button';\n\nconst Header = ({\n className,\n showClose,\n onClose = () => {},\n showMenu,\n onMenu = () => {},\n onLanguageChange = () => {},\n currentLanguage = constants.LANGUAGE_DEFAULT,\n ...props\n}) => {\n const classNames = ['header'];\n\n if (className) {\n classNames.push(className);\n }\n\n return (\n
\n
\n {\n onLanguageChange(constants.LANGUAGE_SWEDISH);\n }}\n />\n /\n {\n onLanguageChange(constants.LANGUAGE_ENGLISH);\n }}\n />\n
\n
\n {showClose && (\n
\n
\n );\n};\n\nexport default Header;","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport withLocale from '../../Hoc/withLocale';\n\nimport constants from '../../constants';\nimport HeaderView from '../../Components/Layout/Header';\n\nconst Header = ({history, showClose, showMenu, changeLocale = () => {}, currentLocale = constants.LANGUAGE_DEFAULT}) => {\n return (\n {\n history.push('/menu');\n }}\n showClose={showClose}\n onClose={() => {\n const canGoBack = (history.length > 1);\n if (canGoBack) {\n history.goBack();\n } else {\n history.push('/');\n }\n }}\n currentLanguage={currentLocale}\n onLanguageChange={(locale) => {\n changeLocale(locale);\n }}\n />\n );\n};\n\nexport default withLocale(withRouter(Header));\n","import React from 'react';\nimport constants from '../../constants';\nimport {translate as _} from 'simple-dict-translator';\n\nconst Page = ({children, header, showFooter = true, theme = constants.PAGE_THEME_PRIMARY, className, ...props}) => {\n const classNames = ['page'];\n if (theme) {\n classNames.push(theme);\n }\n if (className) {\n classNames.push(className);\n }\n\n return (\n
\n
\n {header}\n
\n
\n {children}\n {!!showFooter && (\n
\n )}\n
\n
\n );\n};\n\nexport default Page;","import React from 'react';\nimport { withRouter } from 'react-router-dom';\n\nimport Header from './Navigation/Header';\nimport PageLayout from '../Components/Layout/Page';\n\nconst Page = ({\n children,\n showMenu = true,\n showClose = false,\n ...props\n}) => {\n const header = (\n
\n );\n\n return (\n \n {children}\n \n );\n};\n\nexport default withRouter(Page);\n","import React from 'react';\n\nconst LargeTitle = ({\n title = '',\n subtitle = '',\n className = '',\n ...props\n}) => {\n const classNames = ['large-title'];\n\n if (className) {\n classNames.push(className);\n }\n\n return (\n
\n

{title}

\n {!!subtitle && (\n

{subtitle}

\n )}\n
\n );\n}\n\nexport default LargeTitle;","import React from 'react';\n\nimport {translate as _} from 'simple-dict-translator';\n\nconst ArrowButton = ({className, title, icon, onClick = () => {}, children, ...props}) => {\n const classNames = ['arrow-button'];\n\n if (className) {\n classNames.push(className);\n }\n\n return (\n {\n ev.preventDefault();\n onClick();\n }}\n {...props}\n >\n {title}\n {_('right_arrow')}\n \n );\n};\n\nexport default ArrowButton;\n","import React from 'react';\n\nconst Html = ({className, children, ...props}) => {\n const classNames = ['html'];\n \n if (className) {\n classNames.push(className);\n }\n\n return (\n
\n
\n
\n );\n};\n\nexport default Html;","import React from 'react';\nimport { withRouter } from 'react-router-dom';\nimport {translate as _} from 'simple-dict-translator';\n\nimport Page from './Page';\nimport LargeTitle from '../Components/LargeTitle';\nimport ArrowButton from '../Components/Buttons/ArrowButton';\nimport Html from '../Components/Html';\n\n\nconst Intro = ({match: { params }, history}) => {\n return (\n \n
\n \n
\n {_('intro_content')}\n
\n
\n {\n history.push('/artwork/start');\n }}\n />\n
\n
\n \n );\n};\n\nexport default withRouter(Intro);\n","import pageAboutArtists from './pages/about-artists.json';\nimport pageAboutArtwork from './pages/about-artwork.json';\nimport pageAboutCreativeProcess from './pages/about-creative-process.json';\nimport pageAboutCrossroads from './pages/about-crossroads.json';\nimport pageArtAndPlay from './pages/art-and-play.json';\nimport pageQuestionsAndContact from './pages/questions-and-contact.json';\n\nimport artwork1 from './artworks/1.json';\nimport artwork2 from './artworks/2.json';\nimport artwork3 from './artworks/3.json';\nimport artwork4 from './artworks/4.json';\nimport artwork5 from './artworks/5.json';\nimport artwork6 from './artworks/6.json';\nimport artwork7 from './artworks/7.json';\nimport artwork8 from './artworks/8.json';\nimport artwork9 from './artworks/9.json';\nimport artwork10 from './artworks/10.json';\nimport artwork11 from './artworks/11.json';\nimport artwork12 from './artworks/12.json';\nimport artwork13 from './artworks/13.json';\nimport artwork14 from './artworks/14.json';\nimport artwork15 from './artworks/15.json';\nimport artwork16 from './artworks/16.json';\nimport artwork17 from './artworks/17.json';\nimport artwork18 from './artworks/18.json';\nimport artwork19 from './artworks/19.json';\nimport artwork20 from './artworks/20.json';\nimport artwork21 from './artworks/21.json';\nimport artwork22 from './artworks/22.json';\nimport artwork23 from './artworks/23.json';\n\nconst state = {\n pages: [\n pageAboutArtists,\n pageAboutArtwork,\n pageAboutCreativeProcess,\n pageAboutCrossroads,\n pageArtAndPlay\n ],\n artworks: [\n artwork1,\n artwork2,\n artwork3,\n artwork4,\n artwork5,\n artwork6,\n artwork7,\n artwork8,\n artwork9,\n artwork10,\n artwork11,\n artwork12,\n artwork13,\n artwork14,\n artwork15,\n artwork16,\n artwork17,\n artwork18,\n artwork19,\n artwork20,\n artwork21,\n artwork22,\n artwork23\n ],\n};\n\nexport default state;","import pageAboutArtists from './pages/about-artists.json';\nimport pageAboutArtwork from './pages/about-artwork.json';\nimport pageAboutCreativeProcess from './pages/about-creative-process.json';\nimport pageAboutCrossroads from './pages/about-crossroads.json';\nimport pageArtAndPlay from './pages/art-and-play.json';\nimport pageQuestionsAndContact from './pages/questions-and-contact.json';\n\nimport artwork1 from './artworks/1.json';\nimport artwork2 from './artworks/2.json';\nimport artwork3 from './artworks/3.json';\nimport artwork4 from './artworks/4.json';\nimport artwork5 from './artworks/5.json';\nimport artwork6 from './artworks/6.json';\nimport artwork7 from './artworks/7.json';\nimport artwork8 from './artworks/8.json';\nimport artwork9 from './artworks/9.json';\nimport artwork10 from './artworks/10.json';\nimport artwork11 from './artworks/11.json';\nimport artwork12 from './artworks/12.json';\nimport artwork13 from './artworks/13.json';\nimport artwork14 from './artworks/14.json';\nimport artwork15 from './artworks/15.json';\nimport artwork16 from './artworks/16.json';\nimport artwork17 from './artworks/17.json';\nimport artwork18 from './artworks/18.json';\nimport artwork19 from './artworks/19.json';\nimport artwork20 from './artworks/20.json';\nimport artwork21 from './artworks/21.json';\nimport artwork22 from './artworks/22.json';\nimport artwork23 from './artworks/23.json';\n\nconst state = {\n pages: [\n pageAboutArtists,\n pageAboutArtwork,\n pageAboutCreativeProcess,\n pageAboutCrossroads,\n pageArtAndPlay\n ],\n artworks: [\n artwork1,\n artwork2,\n artwork3,\n artwork4,\n artwork5,\n artwork6,\n artwork7,\n artwork8,\n artwork9,\n artwork10,\n artwork11,\n artwork12,\n artwork13,\n artwork14,\n artwork15,\n artwork16,\n artwork17,\n artwork18,\n artwork19,\n artwork20,\n artwork21,\n artwork22,\n artwork23\n ],\n};\n\nexport default state;","import {translator} from 'simple-dict-translator';\n\nimport sv_se from '../../state/sv_se';\nimport en_us from '../../state/en_us';\nimport constants from '../constants';\n\nclass ContentService {\n getState() {\n const currentLocale = translator.getCurrentLocale();\n \n if (currentLocale === constants.LANGUAGE_SWEDISH) {\n return sv_se;\n }\n if (currentLocale === constants.LANGUAGE_ENGLISH) {\n return en_us;\n }\n\n }\n}\n\nexport default ContentService;\n","import ContentService from './ContentService';\n\nclass ArtWorkService extends ContentService {\n getPageBySlug(slug) {\n const match = this.getState().artworks.find(artwork => (artwork.slug === slug));\n\n return match;\n }\n\n getArtworks() {\n const artworks = this.getState().artworks.map(artwork => {\n return {\n slug: artwork.slug,\n title: artwork.slug,\n coords: artwork.coords\n };\n });\n\n return artworks;\n }\n}\n\nexport default ArtWorkService;\n","import React, {useRef, useEffect, useState} from 'react';\n\nfunction coordsToString(coords, scaleWidth, scaleHeight) {\n return coords.map((pos, i) => {\n let scaledPos = pos;\n\n if (i % 2) {\n scaledPos = pos * scaleHeight;\n } else {\n scaledPos = pos * scaleWidth;\n }\n \n return Math.round(scaledPos);\n }).join(',');\n}\n\nconst ImageMap = ({\n id, // A unique id for the image-map\n className, // Optional className\n imageUrl, // The url of the background image\n imageAlt = '', // Alt for the background image\n areas = [], // Array of area maps, [{ key: '', alt: '', shape: 'poly', coords: [[0,0],[0,2],[2,2][2,0]] }]\n\n ...props\n}) => {\n const mapImage = useRef(null);\n const [imageLoaded, setImageLoaded] = useState(false);\n const [naturalDimensions, setNaturalDimensions] = useState({height: 1, width: 1});\n const [actualDimensions, setActualDimensions] = useState({height: 1, width: 1});\n\n const classNames = ['image-map'];\n const mapName = `image-map-${id}`;\n\n const heightScaleRatio = actualDimensions.height / naturalDimensions.height;\n const widthScaleRatio = actualDimensions.width / naturalDimensions.width;\n\n if (className) {\n classNames.push(className);\n }\n\n const updateDimensions = () => {\n if (mapImage.current) {\n setNaturalDimensions({\n height: mapImage.current.naturalHeight,\n width: mapImage.current.naturalWidth\n });\n setActualDimensions({\n height: mapImage.current.offsetHeight,\n width: mapImage.current.offsetWidth\n });\n }\n };\n\n useEffect(() => {\n updateDimensions();\n }, [mapImage, imageLoaded]);\n\n useEffect(() => {\n const onResize = () => {\n updateDimensions();\n };\n\n window.addEventListener('resize', onResize);\n \n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n\n return (\n
\n {\n setImageLoaded(true);\n }}\n />\n \n {areas.map(area => {\n return (\n {\n ev.preventDefault();\n area.onClick();\n }}\n >\n );\n })}\n \n\n
\n );\n};\n\nexport default ImageMap;","import React from 'react';\n\nconst Banner = ({\n className,\n message,\n onClick = () => {},\n ...props\n}) => {\n const classNames = ['banner'];\n if (className) {\n classNames.push(className);\n }\n return (\n {\n onClick();\n }}\n {...props}\n >\n {message}\n
\n );\n\n};\n\nexport default Banner;","import React from 'react';\nimport { withRouter } from 'react-router-dom';\n\nimport backgroundImage from '../../assets/map.png';\nimport constants from '../constants';\nimport ArtworkService from '../Services/ArtworkService';\nimport Page from './Page';\nimport LargeTitle from '../Components/LargeTitle';\nimport ImageMap from '../Components/ImageMap';\nimport Banner from '../Components/Banner';\nimport tokenGenerator from '../Helpers/tokenGenerator';\nimport {translate as _} from 'simple-dict-translator';\n\nconst Start = ({match: { params }, history}) => {\n const artworkService = new ArtworkService();\n\n return (\n \n \n {\n return {\n ...artwork,\n key: artwork.slug,\n alt: artwork.title,\n shape: constants.IMAGE_MAP_SHAPE_POLYGON,\n onClick: () => {\n history.push('/artwork/' + artwork.slug);\n }\n };\n })}\n />\n \n \n );\n};\n\nexport default withRouter(Start);\n","import ContentService from './ContentService';\n\nclass PageService extends ContentService {\n getPageBySlug(slug) {\n const match = this.getState().pages.find(page => (page.slug === slug));\n\n return match;\n }\n\n getPageNavigation() {\n const pages = this.getState().pages.map(page => {\n return {\n slug: page.slug,\n title: page.menu_label\n };\n });\n\n return pages;\n }\n}\n\nexport default PageService;\n","import React from 'react';\n\nconst Menu = ({children, className, ...props}) => {\n const classNames = ['menu'];\n\n if (className) {\n classNames.push(className);\n }\n\n return (\n
    \n {children}\n
\n );\n};\n\nexport default Menu;","import React from 'react';\n\nconst MenuItem = ({children, className, ...props}) => {\n const classNames = ['menu-item heading heading--medium heading--normal'];\n\n if (className) {\n classNames.push(className);\n }\n\n return (\n
  • \n {children}\n
  • \n );\n};\n\nexport default MenuItem;\n","import React from 'react';\nimport { withRouter, Link } from 'react-router-dom';\n\nimport Page from './Page';\nimport PageService from '../Services/PageService';\n\nimport constants from '../constants';\n\nimport MenuView from '../Components/Menu/Menu';\nimport MenuItem from '../Components/Menu/MenuItem';\n\nconst Menu = ({match: { params }, history}) => {\n const pageService = new PageService();\n const menuItems = pageService.getPageNavigation();\n\n return (\n \n \n {menuItems.map(item => (\n \n {item.title}\n \n ))}\n \n \n );\n};\n\nexport default withRouter(Menu);\n","import React from 'react';\nimport {translate as _} from 'simple-dict-translator';\n\nconst Artists = ({className, artists = '', ...props}) => {\n const classNames = ['artists'];\n const isMultipleArtists = artists instanceof Array;\n const content = isMultipleArtists ? artists.join(_('artists_and')) : artists;\n\n if (className) {\n classNames.push(className);\n }\n\n return (\n \n {isMultipleArtists ? _('by_artists') : _('by_artist')} {content}\n \n );\n};\n\nexport default Artists;\n","import React from 'react';\n\nconst Image = ({className, url = '', alt = '', ...props}) => {\n const classNames = ['attachment-image'];\n \n if (className) {\n classNames.push(className);\n }\n\n return (\n
    \n {''}\n
    \n );\n};\n\nexport default Image;\n","import React, {useState} from 'react';\nimport {translate as _} from 'simple-dict-translator';\n\nconst Youtube = ({className, youtubeId = '', title = '', ...props}) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const classNames = ['attachment-youtube'];\n\n if (className) {\n classNames.push(className);\n }\n\n return (\n
    \n {!isPlaying && (\n {\n setIsPlaying(true);\n }}\n style={{\n backgroundImage: `url(https://img.youtube.com/vi/${youtubeId}/hqdefault.jpg)`\n }}\n >\n \n
    \n )}\n {isPlaying && (\n \n )}\n \n );\n};\n\nexport default Youtube;\n","import React from 'react';\nimport {translate as _} from 'simple-dict-translator';\nimport constants from '../../constants';\nimport Image from './AttachmentImage';\nimport Youtube from './AttachmentYoutube';\nimport Html from '../Html';\n\nconst Attachment = ({className, attachment = {}, ...props}) => {\n const classNames = ['attachment'];\n const {\n caption,\n references = [],\n type\n } = attachment;\n\n if (className) {\n classNames.push(className);\n }\n\n let content = '';\n\n switch (type) {\n case constants.ATTACHMENT_TYPE_IMAGE:\n content = (\n {''}\n );\n break;\n case constants.ATTACHMENT_TYPE_YOUTUBE:\n content = (\n \n );\n break;\n default:\n content = '';\n break;\n }\n\n return (\n \n {content}\n {!!caption && (\n {caption}\n )}\n {!!references.length && (\n
    \n {_('references')} \n
      \n {references.map(reference => {\n return (\n
    • \n {!!reference.url && ({reference.name})}\n {!reference.url && ({reference.name})}\n
    • \n );\n })}\n
    \n
    \n )}\n \n );\n};\n\nexport default Attachment;\n","import React from 'react';\nimport { withRouter, Redirect } from 'react-router-dom';\n\nimport { translate as _ } from 'simple-dict-translator';\n\nimport Page from './Page';\nimport LargeTitle from '../Components/LargeTitle';\nimport ArtWorkService from '../Services/ArtworkService';\nimport constants from '../constants';\nimport Artists from '../Components/Artwork/Artists';\nimport Html from '../Components/Html';\nimport Attachment from '../Components/Attachment/Attachment';\n\nconst Artwork = ({match: { params }, history}) => {\n const artworkService = new ArtWorkService();\n const artwork = artworkService.getPageBySlug(params.slug);\n const hasAttachments = artwork.attachments && artwork.attachments.length !== 0;\n\n if (!artwork) {\n return ();\n }\n\n return (\n \n \n\n {!!artwork.image.url && (\n {artwork.image.alt}\n )}\n {!!artwork.artists && (\n \n )}\n\n
    \n {artwork.content}\n
    \n\n {!!artwork.about_object && (\n {artwork.about_object}\n )}\n
    \n {artwork.attachments.map((attachment, i) => (\n \n ))}\n
    \n\n \n );\n};\n\nexport default withRouter(Artwork);\n","import React from 'react';\nimport { withRouter, Redirect } from 'react-router-dom';\n\nimport Page from './Page';\nimport Html from '../Components/Html';\nimport PageService from '../Services/PageService';\nimport constants from '../constants';\nimport Attachment from '../Components/Attachment/Attachment';\n\nconst Article = ({match: { params }, history}) => {\n const pageService = new PageService();\n const article = pageService.getPageBySlug(params.slug);\n\n if (!article) {\n return ();\n }\n\n return (\n \n

    {article.title}

    \n\n {article.content}\n\n {!!article.attachments && !!article.attachments.length && (\n
    \n {article.attachments.map((attachment, i) => (\n \n ))}\n
    \n )}\n \n );\n};\n\nexport default withRouter(Article);\n","import React from 'react';\nimport { withRouter } from 'react-router-dom';\n\nimport Page from './Page';\n\nconst NotFound = ({match: { params }, history}) => {\n return (\n \n 404 - Page not found\n \n );\n};\n\nexport default withRouter(NotFound);\n","import React, {Fragment} from 'react';\nimport {\n MemoryRouter as Router,\n Route\n} from 'react-router-dom';\n\nimport TopAnimatedSwitch from './Routing/TopAnimatedSwitch';\nimport FadeAnimatedSwitch from './Routing/FadeAnimatedSwitch';\nimport ScrollToTop from './Routing/ScrollToTop';\nimport constants from './constants';\nimport Intro from './Containers/Intro';\nimport Artworks from './Containers/Artworks';\nimport Menu from './Containers/Menu';\nimport Artwork from './Containers/Artwork';\nimport Article from './Containers/Article';\nimport NotFound from './Containers/NotFound';\nimport withLocale from './Hoc/withLocale';\n\nconst App = (props) => {\n console.log(props);\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n );\n}\n\nexport default withLocale(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","const en_us = {\n 'language_swe_shortname': 'SVE',\n 'language_en_shortname': 'ENG',\n 'menu': 'Menu',\n 'to_the_artwork': 'To the artwork',\n 'main_title': 'MATRIX',\n 'main_subtitle': 'By Ea ten Kate, Jonathan Josefsson and Valeria Montti Colque for the Musem of World Culture',\n 'intro_title': 'MATRIX',\n 'intro_subtitle': 'By Ea ten Kate, Jonathan Josefsson and Valeria Montti Colque for the Musem of World Culture',\n 'intro_content': 'Welcome to Matrix, a groundbreaking work of art on the ground!',\n 'banner_message': 'Click on the figures to find out more',\n 'artists_and': ' and ',\n 'by_artists': 'Artists:',\n 'by_artist': 'Artist:',\n 'about_figure': 'About the figure',\n 'about_objects': 'About the objects',\n 'references': 'Reference-id:',\n 'play_video': 'Play the video',\n 'play': 'Play',\n 'right_arrow': 'Right facing arrow',\n};\n\nexport default en_us;\n","import en_us from './en_us';\nimport sv_se from './sv_se';\n\nexport default {\n en_us,\n sv_se,\n}","const sv_se = {\n 'language_swe_shortname': 'SVE',\n 'language_en_shortname': 'ENG',\n 'menu': 'Meny',\n 'to_the_artwork': 'Till verket',\n 'main_title': 'MATRIX',\n 'main_subtitle': 'Av Ea ten Kate, Jonathan Josefsson och Valeria Montti Colque för Världskulturmuseet',\n 'intro_title': 'MATRIX',\n 'intro_subtitle': 'Av Ea ten Kate, Jonathan Josefsson och Valeria Montti Colque för Världskulturmuseet',\n 'intro_content': 'Välkommen till Matrix! Ett konstnärligt samarbetsprojekt där konstnärerna tillsammans utgått ifrån museets samlingar och teman. Här kan du upptäcka konstverket och läsa mer om berättelserna bakom. Välkommen till Matrix, ett konstverk på marken!',\n 'banner_message': 'Klicka på figurerna för att få veta mer',\n 'artists_and': ' och ',\n 'by_artists': 'Konstnärer:',\n 'by_artist': 'Konstnär:',\n 'about_figure': 'Om figuren',\n 'about_objects': 'Om föremålen',\n 'references': 'Referens-id:',\n 'play_video': 'Spela upp video',\n 'play': 'Spela',\n 'right_arrow': 'Pil mot höger',\n};\n\nexport default sv_se;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './sass/main.scss';\nimport App from './app/App';\nimport constants from './app/constants';\nimport localeService from './app/Services/LocaleService';\nimport * as serviceWorker from './serviceWorker';\nimport translations from './translations';\n\nlocaleService.addTranslation(constants.LANGUAGE_ENGLISH, translations[constants.LANGUAGE_ENGLISH]);\nlocaleService.addTranslation(constants.LANGUAGE_SWEDISH, translations[constants.LANGUAGE_SWEDISH]);\n\nlocaleService.setCurrentLocale(constants.LANGUAGE_DEFAULT);\nlocaleService.setFallbackLocale(constants.LANGUAGE_FALLBACK);\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}