{"version":3,"sources":["forms/ColorButton.js","util/TextUtil.js","../lib/swipe-js-iso/swipe.js","util/DetectLocale.js","util/L10n.js","cards/scrambledword/DragDropTouch.js","util/AppHelmet.js","util/AltText.js","components/DefaultImage.js","util/ImageResizerUrl.js","util/CanonicalUrl.js","util/SlugifyUtil.js","util/EntryUrl.js","cards/ImageCardContent.js","cards/ImageCard.js","data/ViewReader.js","data/ViewReaderWithHeadRequest.js","teaserlayout/AdaptiveGridItem.js","teaserlayout/CardBox.js","teaserlayout/FillBox.js","teaserlayout/Columns.js","components/WifiGridItem.js","components/PageTitleItem.js","carousel/CarouselImageCardContent.js","carousel/CarouselImageItem.js","carousel/CarouselBannerCardContent.js","carousel/CarouselBannerItem.js","cards/BannerCardContent.js","carousel/CarouselManager.js","react-swipe/ReactSwipe.js","a11y/InvisibleImg.js","carousel/CarouselIndicators.js","carousel/Carousel.js","carousel/ImageSlider.js","teaserlayout/SliderBuilder.js","teaserlayout/SectionSliderBuilder.js","teaserlayout/BannerSliderBuilder.js","teaserlayout/FullBuilder.js","teaserlayout/SmallBuilder.js","teaserlayout/BannerBuilder.js","teaserlayout/SectionTitle.js","teaserlayout/SectionBuilder.js","util/PageHelmet.js","util/CookieAccess.js","cards/survey/Survey.js","cards/SurveyCard.js","cards/DpaLinkItem.js","teaserlayout/DpaHeadlinesSectionBuilder.js","TeaserPage.js","entry/EntryPageMessage.js","video/HLSSource.js","video/QualityButton.js","video/VideoPlayer.js","cards/VideoCardContent.js","cards/VideoCard.js","audio/AudioPlayer.js","cards/AudioCardContent.js","cards/AudioCard.js","cards/YoutubeCardContent.js","cards/YoutubeCard.js","carousel/CarouselVideoItem.js","cards/TextCard.js","cards/QuoteCard.js","cards/scrambledword/ScrambledBox.js","cards/scrambledword/ScrambledDraggable.js","cards/scrambledword/ScrambledSource.js","cards/scrambledword/ScrambledDroppable.js","cards/scrambledword/ScrambledTarget.js","cards/scrambledword/Observable.js","cards/scrambledword/SolvedButton.js","cards/scrambledword/ScrambledWord.js","cards/ScrambledWordCard.js","cards/InfosCardItem.js","cards/PressReleaseItem.js","cards/InfosCard.js","cards/AccordionItem.js","cards/AccordionCard.js","forms/CompetitionCardDurationBox.js","forms/CompetitionCardExpiredBox.js","cards/CompetitionCard.js","data/ActionReader.js","forms/ImagePreview.js","forms/ActionCardDurationBox.js","images/event_upcoming.svg","images/info.svg","forms/ActionCardNotOpenBox.js","forms/AudioRecorderController.js","cards/ActionCardContent.js","cards/ActionCard.js","cards/DeeplinkButton.js","data/DealReader.js","cards/DealExpiredBox.js","data/DealWriter.js","cards/DealButtonContent.js","cards/DealButton.js","share/ShareFacebookButton.js","util/TwitterX.js","share/ShareTwitterButton.js","share/ShareWhatsappButton.js","share/ShareEmailButton.js","share/ShareClipboardButton.js","share/ShareCard.js","entrylayout/Columns.js","entrylayout/SliderBuilder.js","entrylayout/MediaSliderBuilder.js","entrylayout/FullBuilder.js","entrylayout/SectionTitle.js","util/DangerouslySetHtmlContent.js","cards/externalcontent/ExternalContent.js","cards/ExternalContentCard.js","EntryPage.js","AboutUsPage.js","archive/SearchButton.js","archive/Header.js","util/DateUtil.js","archive/DateSelect.js","archive/SearchInput.js","archive/GridItem.js","data/ArchiveReader.js","ArchivePage.js","ImprintPage.js","DataprotectionPage.js","A11yPage.js","SettingsPage.js","page/OptInResultPage.js","components/VoucherErrorCodes.js","components/VoucherInfo.js","forms/VoucherPasswordDialog.js","page/VoucherResultPage.js","WifiBoxAppChannel.js","PageContent.js","components/TopTabBar.js","images/logo.svg","components/TopAppBar.js","components/BottomTabBar.js","components/Footer.js","components/CookieConsentBanner.js","images/logo_white.svg","MainMenu.js","GlobalAnimation.js","page/SurveyResultPage.js","Main.js","preview/DatePickerSetup.js","App.js","serviceWorker.js","index.js","util/MaybeLink.js"],"names":["ColorButton","this","props","classes","content","url","onClick","inverted","disabled","target","undefined","startsWith","rel","variant","fullWidth","href","root","buttonInverted","button","label","PureComponent","_ColorButton","color","backgroundColor","makeStyles","theme","borderRadius","border","boxShadow","fontWeight","fontSize","textTransform","letterSpacing","transition","filter","paddingBottom","useStylesByProps","useStyles","TextUtil","div","document","createElement","innerHTML","textContent","trim","factory","container","options","noop","offloadFn","fn","setTimeout","browser","window","addEventListener","DocumentTouch","temp","i","style","slides","slidePos","width","length","element","children","interval","isScrolling","index","parseInt","startSlide","speed","widthOfSiblingSlidePreview","continuous","delay","fixedWidth","auto","start","delta","events","handleEvent","event","type","move","end","transitionEnd","setup","stopPropagation","touches","x","pageX","y","pageY","time","Date","scale","disableScroll","Math","abs","preventDefault","stop","translate","circle","swiping","duration","isValidSlide","Number","isPastBounds","direction","callback","removeEventListener","getAttribute","begin","call","onresize","slide","to","prev","next","getPos","getNumSlides","kill","left","pos","Array","round","getBoundingClientRect","offsetWidth","setAttribute","visibility","slideSpeed","natural_direction","diff","from","timer","setInterval","timeElap","clearInterval","floor","animate","dist","webkitTransitionDuration","MozTransitionDuration","msTransitionDuration","OTransitionDuration","transitionDuration","webkitTransform","msTransform","MozTransform","OTransform","clearTimeout","module","exports","Swipe","DetectLocale","userLocales","getUserLocales","lang","locales","defaultLanguageCode","langCodes","Set","languageCodes","langCode","substring","toLowerCase","has","userLang","navigator","languages","userLanguage","language","e","L10n","params","l10n","getUserLanguage","l10n_en","l10n_de","replace","console","warn","template","result","key","RegExp","val","replaceAll","DragDropTouch","DragDropTouch_1","DataTransfer","_dropEffect","_effectAllowed","_data","Object","defineProperty","prototype","get","set","value","enumerable","configurable","keys","clearData","getData","setData","setDragImage","img","offsetX","offsetY","ddt","_instance","_imgCustom","_imgOffset","_lastClick","supportsPassive","d","ts","_touchstart","bind","tm","_touchmove","te","_touchend","opt","passive","capture","getInstance","_this","_shouldHandle","now","_DBLCLICK","_dispatchEvent","cancelable","_reset","src","_closestDraggable","_dragSource","_ptDown","_getPoint","_lastTouch","_img","_CTXMENU","_ISPRESSHOLDMODE","_pressHoldInterval","_isDragEnabled","_PRESSHOLDAWAIT","_shouldCancelPressHoldMove","_shouldHandleMove","_shouldHandlePressHoldMove","_getTarget","_shouldStartDragging","_createImage","_lastTarget","_moveImage","_isDropZone","_destroyImage","indexOf","defaultPrevented","_getDelta","_PRESSHOLDMARGIN","_THRESHOLD","_PRESSHOLDTHRESHOLD","_dataTransfer","page","clientX","clientY","p","pt","el","elementFromPoint","getComputedStyle","pointerEvents","parentElement","cloneNode","_copyStyle","top","rc","opacity","_OPACITY","toString","body","appendChild","removeChild","requestAnimationFrame","s","position","zIndex","_copyProps","dst","_rmvAtts","forEach","att","removeAttribute","HTMLCanvasElement","cSrc","cDst","height","getContext","drawImage","cs","evt","createEvent","t","initEvent","which","buttons","_kbdProps","_ptProps","dataTransfer","dispatchEvent","hasAttribute","draggable","split","AppHelmet","documentTitle","darkMode","colorScheme","Helmet","name","defaultProps","AltText","text","add","last","match","DefaultImage","imageType","inlineImage","canvas","context","fillStyle","fillRect","toDataURL","ImageResizerUrl","deviceSize","pattern","config","api_base","matches","getOptimizedWidth","quality","_getOptimizedQuality","orgWidth","optimalWidth","orgHeight","optimalHeight","CanonicalUrl","path","location","protocol","host","SlugifyUtil","base","title","slugged","_slugify","string","decomposed","normalize","cleaned","code","charCodeAt","charAt","EntryUrl","entry","id","slugify","getPath","cardMediaStyle","cardMediaTextOnly","display","padding","ImageCardContent","data","mediaWidth","mediaHeight","getOptimizedHeight","newMediaURL","getResizeURL","mediaURL","getWH","state","handleObserved","_handleObserved","replaceUrl","_replaceUrl","querySelector","rootMargin","observer","IntersectionObserver","setFocusHandler","setBlurHandler","manager","addItem","imageElement","observe","disconnect","entries","intersectionRatio","unobserve","setState","onFocus","onBlur","parentEntry","link","externalLink","pathname","back","search","append","subheader","header","FgfChannel","postMessage","onFocusVisible","textOnly","textHeadComponent","textOnlyHeadLevelIncrement","checkedExternalLink","cardMedia","className","Typography","component","textSubheader","textHeader","textText","CardMedia","image","alt","altText","ref","MaybeLink","_onClickImageCard","linkUrl","tabIndex","prototypes","PropTypes","object","isRequired","func","bool","number","withRouter","card","transform","focusedCard","outline","textOnlyCard","cardContent","ImageCard","focused","Card","elevation","CardContent","getViewData","viewName","onDataReceived","port","token","date","a","headers","withCredentials","datePath","langPath","entry_path","dpa_path","axios","transformResponse","response","status","lastModified","JSON","parse","Error","headViewData","head","catch","error","smallSmall1","breakpoints","up","marginTop","smallBanner1","smallBanner2","smallFiller1","bannerSmall0","marginBottom","bannerSmall1","fourBanner1","fourBanner2","fourBanner3","threeBanner1","threeBanner2","twoBanner1","AdaptiveGridItem","itemNo","keyValue","Grid","item","xs","_AdaptiveGridItem","CardBox","boxCount","reset","items","push","isSmall","bottom","isBanner","determineAndAdjustVariant","box","justify","alignItems","spacing","FillBox","_FillBox","Columns","arraySingle","arrayDouble","currentLeft","cardBox","fillBoxCount","slider","finishCardBox","addToBoth","finishRow","section","addToSingle","addSmallToCardBox","addBannerToCardBox","itemSingle","itemDouble","addToDouble","canAddSmall","finish","addSmall","canAddBanner","addBanner","isEmpty","row","flexDirection","icon","subtitle","textDecoration","WifiGridItem","externalTracking","_onClickWifiBox","wifiConfig","loginPageUrl","Box","aria-label","L","_WifiGridItem","trackEvent","useMatomo","category","action","textAlign","PageTitleItem","level","locale","getPreferredLocale","dateValue","previewToken","previewDate","dateString","toLocaleDateString","weekday","month","day","dateTime","toISOString","_PageTitleItem","CarouselImageCardContent","imageLoaded","tabIndexEnabled","duplicate","sliderItem","onImageLoaded","_onImageLoaded","loadImage","_loadImage","setTabIndex","_setTabIndex","Image","crossOrigin","onload","imageDataUrl","enabled","float","transitionProperty","CarouselImageItem","_CarouselImageItem","CarouselBannerCardContent","getBanner","bannerToBig","bgUrl","CarouselBannerItem","_CarouselBannerItem","BannerCardContent","CarouselManager","players","handler","focusHandler","blurHandler","pause","ReactSwipe","swipe","containerEl","swipeOptions","prevProps","childCount","isEqual","wrapper","React","Children","map","child","childStyle","cloneElement","Component","overflow","InvisibleImg","indicatorBox","indicatorCircles","verticalAlign","justifyContent","paddingTop","indicatorTextBox","indicatorText","inactiveButton","inactive","cursor","activeButton","active","arrowButton","marginLeft","marginRight","arrow","CarouselIndicators","count","onSelect","onNext","onPrev","isMediaSlider","indicatorsGridElement","indicators","classNameButton","IconButton","size","navigatePrevAltText","navigateNextAltText","_CarouselIndicators","cardFullscreen","Carousel","_onSelect","_onNext","_onPrev","onChange","_onChange","swipeHandle","Config","carouselTransitionSpeedMillis","getActive","mgr","change","autoPlay","fullscreenVideo","duplicates","classNameCard","cardContentStyle","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","carouselAutplayIntervalMillis","cardElevation","hdl","_Carousel","fixedWith","entryPage","ImageSlider","cards","maxElements","slice","_ImageSlider","reduce","useMediaQuery","SliderBuilder","SectionSliderBuilder","BannerSliderBuilder","FullBuilder","grids","cardno","single","double","SmallBuilder","buildItems","rows","gridSpacing","BannerBuilder","title_white","SectionTitle","white","_SectionTitle","SectionBuilder","isColorTopic","titleGrids","singleTitle","doubleTitle","PageHelmet","metaDescription","canonicalUrl","ogTitle","ogDescription","ogImage","ogLocale","ogType","ogUrl","ogArticlePublishedTime","ogArticleExpirationTime","noIndex","descriptionEm","canonicalEm","ogTitleEm","property","ogDescriptionEm","ogImageEm","ogLocaleEm","ogTypeEm","ogUrlEm","ogArticlePublishedTimeEm","ogArticleExpirationTimeEm","twTitleEm","twDescriptionEm","twUrlEm","twImageEm","noIndexEm","CookieAccess","cookies","cookie","encodeURIComponent","password","passwordCookieName","toUTCString","regexp","surveyId","endDateStr","expireDate","tmpDate","getTime","getCookieName","some","parts","Survey","question","answer_1","answer_2","answer_3","answer_4","onFontSizeChanged","isResult","endDate","keyPrefix","useState","setTarget","setSize","useLayoutEffect","useResizeObserver","contentRect","useSize","zoom","setZoom","zoom_w","outerWidth","innerWidth","zoom_h","outerHeight","innerHeight","useZoom","selectedAnswer","setSelectedAnswer","hasSurveyCookie","isEnded","setResult","result1","setResult1","result2","setResult2","result3","setResult3","result4","setResult4","resultText","setResultText","showErrorDlg","setShowErrorDlg","useEffect","getSurveyInfo","fontUnit","backgroundStyle","aspectRatio","myStyle","renderAnswer","selected","answer","answerStyle","flexGrow","paddingLeft","paddingRight","borderColor","borderWidth","borderStyle","fontFamily","answerStyle1","inner","rightRadius","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","answers","isEmptyText","lineHeight","setSurveyInfo","count1","count2","count3","count4","isInteger","toFixed","useCache","sessionStorage","getItem","survey_info_path","setItem","getAnswer","setParticipated","survey_id","setSurveyCookie","submitAnswer","entry_id","answer1","answer2","answer3","answer4","survey_path","post","json","errormessage","handleClose","ButtonBase","Dialog","open","onClose","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogContentText","DialogActions","Button","autoFocus","SurveyCard","onAcceptCookie","deleteMatomoCookie","deleteAllSurveyCookies","newSize","thiss","blurStyle","cookieDiv","cookieDiv2","cookieText","hasConsent","background","pushInstruction","acceptTrackingConsent","assign","minWidth","divider","DpaLinkItem","log","ListItem","disableGutters","ListItemIcon","ListItemText","Divider","_DpaLinkItem","DpaHeadlinesSectionBuilder","dpaData","styleParent","stylePadding","dpaEntry","Paper","Section","postions","TeaserPage","historyState","dpaLastModified","Symbol","iterator","routing","_onDataReceived","onDpaDataReceived","_onDpaDataReceived","scrollTo","load","appServerPort","history","buildHeader","renderContent","twoColumnLayout","sections","buildSections","extraPadding","firstSection","columns","buildPositions","getDouble","getSingle","showWifiLogin","updateUserLang","buildMetaData","description","levelTitle","searchable","wifiElement","tabsMeta","found","kacheln","kachel","teaser","positions","sliderMaxElements","sectionSliderMaxElements","addFull","buildFull","addSlider","buildSlider","buildSmall","buildBanner","addSection","buildColorTopic","buildSection","addSectionSlider","buildSectionSlider","buildBannerSlider","bgurl","teaserType","levelIncrement","maxCards","survey","getSurvey","onStartpage","external_link","cardsMgr","buildSliderCards","build","sectionTitle","resizedBgUrl","buildBannerSliderCards","entity","buildCards","toUpperCase","useTheme","isLandscape","isWideScreen","teaserWidescreenMinWidth","trackPageView","EntryPageLoading","message","md","HLSSource","_setupHls","levels","videoQuality","_load","getLevels","_getLevels","setMaxWidth","_setMaxWidth","hls","Hls","autoStartLoad","maxMaxBufferLength","video","isSupported","on","Events","MANIFEST_PARSED","loadSource","attachMedia","_initHls","startLoad","maxWidth","selectedLevel","selectedWidth","autoLevelCapping","destroy","settingsIcon","menuItem","borderTop","selectedMenuItem","menuPaper","menuList","QualityButton","qualityCallback","visible","buttonClassName","popupId","popupState","menuItems","lvl","MenuItem","close","Fragment","bindTrigger","Menu","paper","list","anchorOrigin","vertical","horizontal","transformOrigin","bindMenu","_QualityButton","controlbar","VideoPlayer","hasStarted","resetting","isFullscreen","_pause","setQuality","_setQuality","handleStateChg","_handleStateChg","addPlayer","player","subscribeToStateChange","source","videoQualityCallback","prevState","_fgf_player","trackVideoStart","fullscreenVideoCallback","preview","playsInline","poster","order","isVideoChild","_VideoPlayer","VideoCardContent","getUrl","previewMediaURL","_VideoCardContent","VideoCard","_VideoCard","audio","buttonBase","Audioplayer","onPlay","trackAudioStart","controls","controlsList","preload","_Audioplayer","AudioCardContent","_AudioCardContent","AudioCard","_AudioCard","YoutubeCardContent","youtubeId","iframe","frameborder","allowfullscreen","allow","_YoutubeCardContent","YoutubeCard","_YoutubeCard","getAspectRatio","useStylesByAspectRatio","CarouselVideoItem","_CarouselVideoItem","fontStyle","margin","TextCard","__html","dangerouslySetInnerHTML","_TextCard","quoteCard","quote","authorDiv","author","role","QuoteCard","quoteText","author_role","_QuoteCard","ScrambledBox","ScrambledDraggable","character","onDropped","observable","onDrag","onDragStart","getIsSolved","classList","stringify","clearDroppedPosition","onDragEnd","remove","dropped","getDroppedPosition","ScrambledSource","cWidth","charVisibleAt","setCharVisibleAt","restoreIndex","setRestorIndex","myText","onRestore","isCopy","visibleAt","renderSquare","minHeight","isSource","subscribe","unsubscribe","squares","flexWrap","ScrambledDroppable","showAt","expected","allowDrop","onDrop","notify","newData","setDropPosition","_","onDragOver","ScrambledTarget","renderSpace","renderLine","strLines","currentLine","words","word","concat","lines","strLine","line","j","c","setResultLength","Observable","observers","droppedPosition","results","complete","correctSolution","completeCallback","isSolved","fill","isComplete","isCorrectSolution","SolvedButton","_SolvedButton","ScrambledWord","scrambledWord","info","messageCorrect","messageWrong","buttonColor","buttonStyle","buttonText","showAnimation","setComplete","setMessage","setCompleteCallback","msg","getCorrectSolution","lottieJson","setIsSolved","infoText","align","space","scrambledWordCard","ScrambledWordCard","stopAnimation","shaked","solved","_ScrambledWordCard","InfosCardItem","_InfosCardItem","accordion","accordionSummary","expandIcon","accordionDetailsRoot","accordionDetailsLogo","accordionDetailsLogoImage","maxHeight","accordionDetailsAttrDate","accordionDetailsAttrHead","accordionDetailsAttrName","accordionDetailsSubheader","accordionDetailsHeader","accordionDetailsText","hyphens","accordionDetailsCopyrightStars","accordionDetailsCopyright","PressReleaseItem","pressRelease","logoURL","senderDate","textfeld","senderSign","copyright","senderDateStr","year","senderHead","logoElem","attrDateElem","attrHeadElem","attrNameElem","subheaderElem","headerElem","copyrightElem","Accordion","AccordionSummary","aria-controls","AccordionDetails","_PressReleaseItem","infosCard","InfosCard","pressReleases","pressReleaseItems","List","disablePadding","label1","url1","url1Type","label2","url2","url2Type","label3","url3","url3Type","label4","url4","url4Type","label5","url5","url5Type","_InfosCard","AccordionItem","_AccordionItem","AccordionCard","accordionItems","akkordeon1","akkordeon1text","akkordeon2","akkordeon2text","akkordeon3","akkordeon3text","akkordeon4","akkordeon4text","akkordeon5","akkordeon5text","_AccordionCard","innerBox","CompetitionCardDurationBox","showDates","startDate","labelDuration","labelFrom","labelTo","_formatDate","_CompetitionCardDurationBox","CompetitionCardExpiredBox","_CompetitionCardExpiredBox","CompetitionCardForm","lazy","competitionCard","formFallback","CompetitionCard","_competitionEnded","lockLayout","entryId","requestEmail","email","requiredEmail","requestPhone","phone","requiredPhone","requestFreetext","freetext","requiredFreetext","showEnddate","_competitionOpen","fallback","freetextLabel","agbLabel","competition_id","competition_title","_CompetitionCard","getInfo","minCallTime","action_path","actionId","voucher","imageGrid","imageGridItem","imageDiv","iconButton","right","checkbutton","ImagePreview","images","imageMessages","onDeleteImage","isVideoUpload","imageElements","buttonElement","submitted","sm","filename","textElements","imageMessage","_ImagePreview","_path","ActionCardDurationBox","_ActionCardDurationBox","_extends","arguments","hasOwnProperty","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgEventUpcoming","_ref","svgRef","titleId","xmlns","ForwardRef","svgIcon","ActionCardNotOpenBox","ended","_ActionCardNotOpenBox","SvgInfo","AudioRecorderController","resetCallback","ActionCardForm","ImageSelectButton","AudioRecorder","actionCard","imageSelector","mainTitle","actionRandom","infoTextSvgIcon","infoTextIconGridItem","infoTextBody","ActionCardContent","audioUrl","setTip1RequiredMessage","_setTip1RequiredMessage","setTip2RequiredMessage","_setTip2RequiredMessage","storageImage","_storageImages","setImageMessage","_setImageMessage","storeAddImages","storeDeleteImage","storeMarkSubmitted","setAudioUrl","_setAudioUrl","audioRecorderController","files","fetch","then","r","blob","currentLength","addLength","siht","storeAddImagesRest","storeAddImageMessage","storeClearImageMessages","uploadmedium","file","storeAddImagesRejected","isAudioUpload","reader","FileReader","onloadedmetadata","URL","revokeObjectURL","storeAddImage","createObjectURL","readAsDataURL","afterStateUpdate","clear","del","newImages","countSubmitted","tip1msg","tip2msg","recheckMaxCalls","isActionOpen","isActionEnded","imageSelectLabel","uploadbuttonText","formTitle","formComponent","requestName","requiredName","requestAddress","address","requiredAddress","cb1Requested","cb1Title","cb1","cb1Required","cb2Requested","cb2Title","cb2","cb2Required","cb3Requested","cb3Title","cb3","cb3Required","cb4Requested","cb4Title","cb4","cb4Required","tip1","tip2","requestImageUpload","imageupload","requiredImageUpload","showParticipationTimespan","tippspielHeader","tippspielDaten","tippRequired","_buildTeam","flex","_buildTipInput","setValue","errorMsg","TextField","textField","InputProps","inputProps","multiline","tippspielElement","tippspielTeam1MediaURL","tippspielTeam1Name","tippspielTeam2MediaURL","tippspielTeam2Name","infoTextElement","wrap","zeroMinWidth","titleElement","audioText","audioDescriptionText","audioDescription","audioWhileText","audioWhile","audioAfterText","audioAfter","uploadbuttonColor","uploadbuttonStyle","firstnameRequested","firstnameRequired","lastnameRequested","lastnameRequired","streetRequested","streetRequired","streetnrRequested","streetnrRequired","zipRequested","zipRequired","cityRequested","cityRequired","extraRequested","extraRequired","emailRequested","emailRequired","phoneRequested","phoneRequired","freetextRequested","freetextRequired","cb1LinkText","cb1LinkUrl","cb2LinkText","cb2LinkUrl","cb3LinkText","cb3LinkUrl","cb4LinkText","cb4LinkUrl","action_id","setImageUploadMessage","markSubmitted","autoresponse","popupTitle","popupText","_ActionCardContent","ActionCard","maxCallsChecked","maxCallsAvailable","maxCallsFailed","waitingForToken","randomGeneratorCalled","onTockenDataReceived","reload","onRandomStartClicked","_onRandomStartClicked","maxCalls","getActionInfo","countLeft","actionEnded","getTokenInfo","publish_from","publish_till","actionOpen","randomGeneratorActivate","randomGeneratorTextOver","randomGeneratorButtonText","randomGeneratorButtonColor","randomGeneratorButtonStyle","msgRandom","randomGeneratorTextWon","randomGeneratorTextLost","_ActionCard","DeeplinkButton","_DeeplinkButton","entrId","dealId","deal_path","DealExpiredBox","_DealExpiredBox","actionName","onResponseReceived","onResponseFailed","DealButtonContent","trackDealClicked","handleDealIncrement","incrementDealCounter","deal_id","emailText","subject","getOnClickHandler","dealStarted","dealEnded","_DealButtonContent","dealButton","fallbackDiv","DealButton","getDealInfo","_DealButton","facebookIcon","ShareFacebookButton","trackShare","_ShareFacebookButton","createSvgIcon","twitterIcon","ShareTwitterButton","TwitterX","_ShareTwitterButton","whatsappIcon","ShareWhatsappButton","_ShareWhatsappButton","mailIcon","ShareEmailButton","_ShareEmailButton","linkIcon","ShareClipboardButton","copied","closeSnackbar","reason","clipboard","writeText","textArea","focus","select","execCommand","Snackbar","autoHideDuration","Alert","severity","_ShareClipboardButton","ShareCard","_ShareCard","MediaSliderBuilder","headline","titleWithIcon","showMediaIcon","require","useRef","DangerouslySetHtmlContent","html","allowRerender","rest","divRef","isFirstRender","current","Boolean","slotHtml","createRange","createContextualFragment","ExternalContent","extType","dpaEM24LiveCenter","dpaEM24Ergebnisse","dpaEM24Spielplan","dpaOlympia24LiveCenter","dpaOlympia24Medaillenspiegel","dpaOlympia24Bildergalerie","ExternalContentCard","EntryPage","extendedId","layoutLocked","_lockLayout","locked","descriptionText","topSliderMaxElements","mediaSliderMaxElements","topSlider","mediaSlider","buildTopSlider","mediaSliderAdded","pressReleasesAdded","buildVideo","buildAudio","buildYoutube","buildText","buildQuote","buildExternalContent","buildScrambledWord","buildSurvey","buildDeeplinkButton","buildInfos","buildAccordion","buildCompetition","buildAction","buildDeal","buildMediaSliderTitle","buildMediaSlider","share","buildShare","TopSliderBuilder","titleText","sliderTitle","buildTitle","clickURL","entryWidescreenMinWidth","AboutUsPage","teaserData","extractEntry","buildAcc","SearchButton","iconElement","goBack","Link","Header","pageTitleItem","searchButton","DateUtil","getTimezoneOffset","substr","n","nowIso","formControl","borderBottom","menuItemSelected","itemContent","alignContent","iconSpacer","DateSelect","dates","today","daysAgo","ThemeProvider","createMuiTheme","overrides","MuiListItem","MuiOutlinedInput","notchedOutline","input","FormControl","Select","_DateSelect","SearchInput","onInputChange","_onInputChange","newValue","ariaLabel","submitLabel","onSubmit","InputBase","placeholder","_SearchInput","GridItem","prefix","getKey","getArchiveData","term","searchPath","ArchivePage","selectedDate","selectedTerm","selectedData","onSelectedDateChanged","_onSelectedDateChanged","onSearchSubmit","_onSearchSubmit","getArchiveDataDate","getArchiveDataSearch","instance","newState","column","buildColumn","inputElement","h2","marginBlockStart","marginBlockEnd","h3","pb","ImprintPage","pageHelmet","_ImprintPage","h4","ul","rightsList","rightsItem","table","borderCollapse","tableHeaderRow","tableRow","tableHeader","tableData","tableDataText","buttonLabel","DataprotectionPage","clearConsent","h4Inset","pInset","A11yPage","_A11yPage","CustomSwitch","withStyles","switchBase","checked","track","Switch","SettingsPage","setTextOnly","FormControlLabel","control","_SettingsPage","OptInResultPage","success","_OptInResultPage","VoucherErrorCodes","pn","pwarn","VoucherInfo","voucherEndDate","countMax","voucherLeft","voucherUsed","toLocaleTimeString","hour","minute","errorLabel","getLabel","errorMessage","_VoucherInfo","VoucherPasswordDialog","onCancel","onConfirm","inputLabel","cancel","confirm","autoComplete","onKeyDown","_VoucherPasswordDialog","pok","statsButtonColor","voucherButtonColor","VoucherResultPage","submitDisabled","passwordDialogOpen","passwordValue","infoData","usedData","submitInfo","_submitInfo","handleInfo","_handleInfo","submitUsed","_submitUsed","handleUsed","_handleUsed","cancelPasswordDialog","_cancelPasswordDialog","confirmInfoPasswordDialog","_confirmInfoPasswordDialog","confirmUsedPasswordDialog","_confirmUsedPasswordDialog","updatePasswordValue","_updatePasswordValue","_disableSumbit","getPasswordCookie","sith","_obtainInfo","getVoucherInfo","setPasswordCookie","_obtainUsed","setVoucherUsed","deletePasswordCookie","passwordDialog","_VoucherResultPage","useParams","documentTitleLabel","isShowWifiBox","_fgf_channel","_showBox","__showWifiBox","_callbacks","showWifiBox","__hideWifiBox","hideWifiBox","useStylesWebApp","down","useStylesEmbedded","palette","default","PageContent","wifiBoxInfo","listener","_showWifiBox","_hideWifiBox","splice","removeListener","appEmbedded","classesEmbedded","Container","containerMaxWidth","exact","render","_PageContent","tabBorderDiv","TopTabBar","always","activeConfig","conf","_didUpdateOrMount","valueByPath","Tabs","indicatorColor","createTabs","tabs","Tab","menuButton","loginButton","placeboButton","logo","stickToTop","TopAppBar","onLoginButtonClick","onMenuButtonClick","scrollableTabs","edge","loginButtonItem","backLink","backArrowAltText","menuAltText","homeLink","AppBar","Toolbar","stickToBottom","BottomTabBar","RestoreIcon","FavoriteIcon","LocationOnIcon","BottomNavigation","showLabels","createActions","actions","Icon","BottomNavigationAction","footer","flexBasis","langButton","Footer","snackbarRoot","snackbarAnchor","alertRoot","alertFilled","CookieConsentBanner","rejectTrackingConsent","anchorOriginBottomCenter","hasMatomoCookie","filledInfo","AlertTitle","_CookieConsentBanner","labelLight","labelSmall","iconLight","listItemIconClass","MainMenu","anchor","onOpen","closeAltText","SwipeableDrawer","createMenuItems","ArchiveRoundedIcon","iconClass","PeopleAltIcon","labelClass","SettingsIcon","labelFontClass","listItemIcon","primary","GlobalAnimation","onStop","animationData","loopAnimation","lottieData","loop","grid","lottieEntry","play","onComplete","SurveyResultPage","onSaveTile","_onSaveTile","k","html2canvas","getElementById","download","click","previewForm","footerWrapper","backgroundAttachment","prefersDarkMode","matchMedia","themeConfig","values","sd","lg","xl","main","contrastText","secondary","light","typography","join","MuiTypography","variantMapping","h6","MuiCardContent","MuiDivider","MuiContainer","maxWidthSm","MuiListItemText","MuiTabs","indicator","MuiTab","textColorInherit","appBarThemeConfig","previewDevicesMap","Map","previewConfig","devices","device","Main","spaceAt","URLSearchParams","showDrawer","previewWidth","defaultDevice","previewHeight","previewDevice","_showDrawer","hideDrawer","_hideDrawer","toggleDarkMode","_toggleDarkMode","_setTextOnly","updatePreviewDate","_updatePreviewDate","updatePreviewDevice","_updatePreviewDevice","_updateUserLang","updateVideoQuality","_updateVideoQuality","updateFullscreenVideo","_updateFullscreenVideo","startAnimation","_startAnimation","_stopAnimation","show","_toggleDrawer","newMode","switchDarkmode","newPreviewDate","newPreviewDevice","newUserLang","userLangEvent","newVideoQuality","newFullscreenVideo","renderFramed","renderMain","getFullYear","pad","getMonth","getDate","getHours","getMinutes","iframeSrc","getIsoDateString","previewDeviceOptions","previewContainerMaxWidth","showTodayButton","todayLabel","okLabel","cancelLabel","format","invalidDateMessage","minDateMessage","maxDateMessage","maxDate","autoOk","ampm","InputLabel","shrink","htmlFor","NativeSelect","animation","appBarTheme","ga","MainContent","portString","portNumber","isLanguageSupported","enableLinkTracking","newLang","showLogin","_Main","setTheme","mode","updatedTheme","useDarkMode","newThemeConfig","isTablet","DatePickerSetup","utils","LocalizedUtils","localeDe","DateFnsUtils","App","createInstance","urlBase","matomoUrlBase","siteId","matomoSiteId","configurations","requireConsent","heartBeat","seconds","MatomoProvider","isLocalhost","hostname","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","ReactDOM","StrictMode","process","origin","contentType","ready","unregister","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.c48c48ba.chunk.js","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Button from '@material-ui/core/Button';\n\nconst useStylesByProps = (props) => {\n const color = props.color || '#ffffff';\n const backgroundColor = props.backgroundColor || '#66991A';\n\n return makeStyles((theme) => ({\n button: {\n borderRadius: 6,\n color: color,\n backgroundColor: backgroundColor,\n border: '2px solid ' + backgroundColor,\n boxShadow: '0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)',\n fontWeight: 900,\n fontSize: 19,\n textTransform: 'none',\n letterSpacing: 0.5,\n transition: '0.2s ease',\n '&:hover': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n '&:active': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n '&:focus': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n },\n buttonInverted: {\n borderRadius: 6,\n color: backgroundColor,\n backgroundColor: color,\n border: '2px solid ' + backgroundColor,\n boxShadow: '0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)',\n fontWeight: 900,\n fontSize: 19,\n textTransform: 'none',\n letterSpacing: 0.5,\n transition: '0.2s ease',\n '&:hover': {\n color: color,\n backgroundColor: backgroundColor,\n },\n '&:active': {\n color: color,\n backgroundColor: backgroundColor,\n },\n '&:focus': {\n color: color,\n backgroundColor: backgroundColor,\n },\n },\n label: {\n paddingBottom: '0.2em',\n },\n }));\n};\n\nclass ColorButton extends PureComponent {\n render() {\n const { classes, content, url, onClick, inverted, disabled,\n } = this.props;\n let target = url ? '_blank' : undefined;\n if(url && url.startsWith(\"/\")) {\n target = '_self';\n }\n const rel = url ? 'noopener noreferrer' : undefined;\n return (\n \n {content}\n \n );\n }\n}\n\nColorButton.propTypes = {\n content: PropTypes.string.isRequired,\n url: PropTypes.string,\n onClick: PropTypes.func,\n color: PropTypes.string,\n backgroundColor: PropTypes.string,\n inverted: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nexport default function _ColorButton(props) {\n const useStyles = useStylesByProps(props);\n const classes = useStyles();\n return ;\n}\n","export default class TextUtil {\n static isEmptyText(content) {\n if (content) {\n const div = document.createElement('div');\n div.innerHTML = content;\n return '' === div.textContent.trim();\n } else {\n return true;\n }\n }\n}\n","/*\n * Swipe 2.0.0\n * Brad Birdsall\n * https://github.com/thebird/Swipe\n * Copyright 2013-2015, MIT License\n *\n */\n\n(function(root, factory) {\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = factory();\n } else {\n root.Swipe = factory();\n }\n})(this, function() {\n 'use strict';\n\n return function Swipe(container, options) {\n // utilities\n var noop = function() {}; // simple no operation function\n var offloadFn = function(fn) {\n setTimeout(fn || noop, 0);\n }; // offload a functions execution\n\n // check browser capabilities\n var browser = {\n addEventListener: !!window.addEventListener,\n touch:\n 'ontouchstart' in window ||\n (window.DocumentTouch && document instanceof window.DocumentTouch),\n transitions: (function(temp) {\n var props = [\n 'transitionProperty',\n 'WebkitTransition',\n 'MozTransition',\n 'OTransition',\n 'msTransition'\n ];\n for (var i in props)\n if (temp.style[props[i]] !== undefined) return true;\n return false;\n })(document.createElement('swipe'))\n };\n\n // quit if no root element\n if (!container) return;\n var element = container.children[0];\n var slides, slidePos, width, length;\n options = options || {};\n var index = parseInt(options.startSlide, 10) || 0;\n var speed = options.speed || 300;\n var widthOfSiblingSlidePreview =\n parseInt(options.widthOfSiblingSlidePreview, 10) || 0;\n var continuous = (options.continuous =\n options.continuous !== undefined ? options.continuous : true);\n var fixedWidth = options.fixedWidth || 0;\n\n function setup() {\n // cache slides\n slides = element.children;\n length = slides.length;\n\n // set continuous to false if only one slide\n continuous = slides.length < 2 ? false : options.continuous;\n\n // create an array to store current positions of each slide\n slidePos = new Array(slides.length);\n\n // determine width of each slide\n width = Math.round(\n container.getBoundingClientRect().width || container.offsetWidth\n ) -\n widthOfSiblingSlidePreview * 2;\n\n element.style.width = slides.length * width + 'px';\n\n // stack elements\n var pos = slides.length;\n while (pos--) {\n var slide = slides[pos];\n\n slide.style.width = width + 'px';\n slide.setAttribute('data-index', pos);\n\n if (browser.transitions) {\n slide.style.left = pos * -width + widthOfSiblingSlidePreview + 'px';\n move(pos, index > pos ? -width : index < pos ? width : 0, 0);\n }\n }\n\n // reposition elements before and after index\n if (continuous && browser.transitions) {\n move(circle(index - 1), -width, 0);\n move(circle(index + 1), width, 0);\n }\n\n if (!browser.transitions)\n element.style.left = index * -width + widthOfSiblingSlidePreview + 'px';\n\n container.style.visibility = 'visible';\n }\n\n function prev() {\n if (continuous) slide(index - 1);\n else if (index) slide(index - 1);\n }\n\n function next() {\n if (continuous) slide(index + 1);\n else if (index < slides.length - 1) slide(index + 1);\n }\n\n function circle(index) {\n // a simple positive modulo using slides.length\n return (slides.length + (index % slides.length)) % slides.length;\n }\n\n function slide(to, slideSpeed) {\n // do nothing if already on requested slide\n if (index == to) return;\n\n if (browser.transitions) {\n var direction = Math.abs(index - to) / (index - to); // 1: backward, -1: forward\n\n // get the actual position of the slide\n if (continuous) {\n var natural_direction = direction;\n direction = -slidePos[circle(to)] / width;\n\n // if going forward but to < index, use to = slides.length + to\n // if going backward but to > index, use to = -slides.length + to\n if (direction !== natural_direction)\n to = -direction * slides.length + to;\n }\n\n var diff = Math.abs(index - to) - 1;\n\n // move all the slides between index and to in the right direction\n while (diff--)\n move(\n circle((to > index ? to : index) - diff - 1),\n width * direction,\n 0\n );\n\n to = circle(to);\n\n move(index, width * direction, slideSpeed || speed);\n move(to, 0, slideSpeed || speed);\n\n if (continuous) move(circle(to - direction), -(width * direction), 0); // we need to get the next in place\n } else {\n to = circle(to);\n animate(index * -width, to * -width, slideSpeed || speed);\n //no fallback for a circular continuous if the browser does not accept transitions\n }\n\n index = to;\n offloadFn(options.callback && options.callback(index, slides[index]));\n }\n\n function move(index, dist, speed) {\n translate(index, dist, speed);\n slidePos[index] = dist;\n }\n\n function translate(index, dist, speed) {\n var slide = slides[index];\n var style = slide && slide.style;\n\n if (!style) return;\n\n style.webkitTransitionDuration = style.MozTransitionDuration = style.msTransitionDuration = style.OTransitionDuration = style.transitionDuration =\n speed + 'ms';\n\n style.webkitTransform = 'translate(' + dist + 'px,0)' + 'translateZ(0)';\n style.msTransform = style.MozTransform = style.OTransform =\n 'translateX(' + dist + 'px)';\n }\n\n function animate(from, to, speed) {\n // if not an animation, just reposition\n if (!speed) {\n element.style.left = to + 'px';\n return;\n }\n\n var start = +new Date();\n\n var timer = setInterval(function() {\n var timeElap = +new Date() - start;\n\n if (timeElap > speed) {\n element.style.left = to + 'px';\n\n if (delay) begin();\n\n options.transitionEnd &&\n options.transitionEnd.call(event, index, slides[index]);\n\n clearInterval(timer);\n return;\n }\n\n element.style.left =\n (to - from) * (Math.floor((timeElap / speed) * 100) / 100) +\n from +\n 'px';\n }, 4);\n }\n\n // setup auto slideshow\n var delay = options.auto || 0;\n var interval;\n\n function begin() {\n clearTimeout(interval);\n interval = setTimeout(next, delay);\n }\n\n function stop() {\n delay = options.auto || 0;\n clearTimeout(interval);\n }\n\n // setup initial vars\n var start = {};\n var delta = {};\n var isScrolling;\n\n // setup event capturing\n var events = {\n handleEvent: function(event) {\n switch (event.type) {\n case 'touchstart':\n this.start(event);\n break;\n case 'touchmove':\n this.move(event);\n break;\n case 'touchend':\n offloadFn(this.end(event));\n break;\n case 'webkitTransitionEnd':\n case 'msTransitionEnd':\n case 'oTransitionEnd':\n case 'otransitionend':\n case 'transitionend':\n offloadFn(this.transitionEnd(event));\n break;\n case 'resize':\n offloadFn(setup);\n break;\n }\n\n if (options.stopPropagation) event.stopPropagation();\n },\n start: function(event) {\n var touches = event.touches[0];\n\n // measure start values\n start = {\n // get initial touch coords\n x: touches.pageX,\n y: touches.pageY,\n\n // store time to determine touch duration\n time: +new Date()\n };\n\n // used for testing first move event\n isScrolling = undefined;\n\n // reset delta and end measurements\n delta = {};\n\n // attach touchmove and touchend listeners\n element.addEventListener('touchmove', this, false);\n element.addEventListener('touchend', this, false);\n },\n move: function(event) {\n // ensure swiping with one touch and not pinching\n if (event.touches.length > 1 || (event.scale && event.scale !== 1))\n return;\n\n if (options.disableScroll) return;\n\n var touches = event.touches[0];\n\n // measure change in x and y\n delta = {\n x: touches.pageX - start.x,\n y: touches.pageY - start.y\n };\n\n // determine if scrolling test has run - one time test\n if (typeof isScrolling == 'undefined') {\n isScrolling = !!(\n isScrolling || Math.abs(delta.x) < Math.abs(delta.y)\n );\n }\n\n // if user is not trying to scroll vertically\n if (!isScrolling) {\n // prevent native scrolling\n event.preventDefault();\n\n // stop slideshow\n stop();\n\n // increase resistance if first or last slide\n if (continuous) {\n // we don't add resistance at the end\n\n translate(\n circle(index - 1),\n delta.x + slidePos[circle(index - 1)],\n 0\n );\n translate(index, delta.x + slidePos[index], 0);\n translate(\n circle(index + 1),\n delta.x + slidePos[circle(index + 1)],\n 0\n );\n } else {\n delta.x =\n delta.x /\n ((!index && delta.x > 0) || // if first slide and sliding left\n (index == slides.length - 1 && // or if last slide and sliding right\n delta.x < 0) // and if sliding at all\n ? Math.abs(delta.x) / width + 1 // determine resistance level\n : 1); // no resistance if false\n\n // translate 1:1\n translate(index - 1, delta.x + slidePos[index - 1], 0);\n translate(index, delta.x + slidePos[index], 0);\n translate(index + 1, delta.x + slidePos[index + 1], 0);\n }\n options.swiping && options.swiping(-delta.x / width);\n }\n },\n end: function(event) {\n // measure duration\n var duration = +new Date() - start.time;\n\n // determine if slide attempt triggers next/prev slide\n var isValidSlide =\n (Number(duration) < 250 && // if slide duration is less than 250ms\n Math.abs(delta.x) > 20) || // and if slide amt is greater than 20px\n Math.abs(delta.x) > width / 2; // or if slide amt is greater than half the width\n\n // determine if slide attempt is past start and end\n var isPastBounds =\n (!index && delta.x > 0) || // if first slide and slide amt is greater than 0\n (index == slides.length - 1 && delta.x < 0); // or if last slide and slide amt is less than 0\n\n if (continuous) isPastBounds = false;\n\n // determine direction of swipe (true:right, false:left)\n var direction = delta.x < 0;\n\n // if not scrolling vertically\n if (!isScrolling) {\n if (isValidSlide && !isPastBounds) {\n if (direction) {\n if (continuous) {\n // we need to get the next in this direction in place\n\n move(circle(index - 1), -width, 0);\n move(circle(index + 2), width, 0);\n } else {\n move(index - 1, -width, 0);\n }\n\n move(index, slidePos[index] - width, speed);\n move(\n circle(index + 1),\n slidePos[circle(index + 1)] - width,\n speed\n );\n index = circle(index + 1);\n } else {\n if (continuous) {\n // we need to get the next in this direction in place\n\n move(circle(index + 1), width, 0);\n move(circle(index - 2), -width, 0);\n } else {\n move(index + 1, width, 0);\n }\n\n move(index, slidePos[index] + width, speed);\n move(\n circle(index - 1),\n slidePos[circle(index - 1)] + width,\n speed\n );\n index = circle(index - 1);\n }\n\n options.callback && options.callback(index, slides[index]);\n } else {\n if (continuous) {\n move(circle(index - 1), -width, speed);\n move(index, 0, speed);\n move(circle(index + 1), width, speed);\n } else {\n move(index - 1, -width, speed);\n move(index, 0, speed);\n move(index + 1, width, speed);\n }\n }\n }\n\n // kill touchmove and touchend event listeners until touchstart called again\n element.removeEventListener('touchmove', events, false);\n element.removeEventListener('touchend', events, false);\n element.removeEventListener('touchforcechange', function() {}, false);\n },\n transitionEnd: function(event) {\n if (parseInt(event.target.getAttribute('data-index'), 10) == index) {\n if (delay) begin();\n\n options.transitionEnd &&\n options.transitionEnd.call(event, index, slides[index]);\n }\n }\n };\n\n // trigger setup\n setup();\n\n // start auto slideshow if applicable\n if (delay) begin();\n\n // add event listeners\n if (browser.addEventListener) {\n // set touchstart event on element\n if (browser.touch) {\n element.addEventListener('touchstart', events, false);\n element.addEventListener('touchforcechange', function() {}, false);\n }\n\n if (browser.transitions) {\n element.addEventListener('webkitTransitionEnd', events, false);\n element.addEventListener('msTransitionEnd', events, false);\n element.addEventListener('oTransitionEnd', events, false);\n element.addEventListener('otransitionend', events, false);\n element.addEventListener('transitionend', events, false);\n }\n\n // set resize event on window\n window.addEventListener('resize', events, false);\n } else {\n window.onresize = function() {\n setup();\n }; // to play nice with old IE\n }\n\n // expose the Swipe API\n return {\n setup: function() {\n setup();\n },\n slide: function(to, speed) {\n // cancel slideshow\n stop();\n\n slide(to, speed);\n },\n prev: function() {\n // cancel slideshow\n stop();\n\n prev();\n },\n next: function() {\n // cancel slideshow\n stop();\n\n next();\n },\n stop: function() {\n // cancel slideshow\n stop();\n },\n getPos: function() {\n // return current index position\n return index;\n },\n getNumSlides: function() {\n // return total number of slides\n return length;\n },\n kill: function() {\n // cancel slideshow\n stop();\n\n // reset element\n element.style.width = '';\n element.style.left = '';\n\n // reset slides\n var pos = slides.length;\n while (pos--) {\n var slide = slides[pos];\n slide.style.width = '';\n slide.style.left = '';\n\n if (browser.transitions) translate(pos, 0, 0);\n }\n\n // removed event listeners\n if (browser.addEventListener) {\n // remove current event listeners\n element.removeEventListener('touchstart', events, false);\n element.removeEventListener('webkitTransitionEnd', events, false);\n element.removeEventListener('msTransitionEnd', events, false);\n element.removeEventListener('oTransitionEnd', events, false);\n element.removeEventListener('otransitionend', events, false);\n element.removeEventListener('transitionend', events, false);\n window.removeEventListener('resize', events, false);\n } else {\n window.onresize = null;\n }\n }\n };\n };\n});\n","import locales from '../config/locales.json';\n\nexport default class DetectLocale {\n static getUserLanguage() {\n const userLocales = DetectLocale.getUserLocales();\n let lang = locales.defaultLanguageCode;\n if (userLocales) {\n const langCodes = new Set(locales.languageCodes);\n for (let i = 0; i < userLocales.length; i++) {\n const langCode = userLocales[i].substring(0, 2).toLowerCase();\n if (langCodes.has(langCode)) {\n lang = langCode;\n break;\n }\n }\n }\n return lang;\n }\n\n static isLanguageSupported(userLang) {\n const langCodes = new Set(locales.languageCodes);\n return langCodes.has(userLang);\n }\n\n static getUserLocales() {\n let userLocales = null;\n\n if (navigator) {\n try {\n if (navigator.languages && navigator.languages.length) {\n // preferred languages.\n userLocales = navigator.languages;\n } else if (navigator.userLanguage) {\n // IE\n userLocales = [navigator.userLanguage];\n } else {\n // the browser language\n userLocales = [navigator.language];\n }\n } catch (e) {\n userLocales = null;\n }\n }\n\n return userLocales;\n }\n\n static getPreferredLocale() {\n const locales = DetectLocale.getUserLocales();\n if (locales)\n return locales[0];\n else\n return null;\n }\n}\n","import DetectLocale from './DetectLocale';\nimport l10n_de from '../l10n/de.json';\nimport l10n_en from '../l10n/en.json';\n\nexport default class L10n {\n static t(label, userLang, params) {\n const lang = userLang ? userLang : DetectLocale.getUserLanguage();\n const l10n = lang === 'en' ? l10n_en : l10n_de;\n\n if (label in l10n) {\n return L10n.replace(l10n[label], params);\n } else {\n console.warn('l10n label ' + label + ' not defined');\n return label\n }\n }\n\n static replace(template, params) {\n let result = template;\n for (let element in params) {\n const key = new RegExp('{\\\\s*' + element + '\\\\s*}', 'g');\n const val = params[element];\n result = result.replaceAll(key, val);\n }\n return result.replaceAll(/{[^{}]*}/g, '');\n }\n}\n","var DragDropTouch;\n(function (DragDropTouch_1) {\n 'use strict';\n /**\n * Object used to hold the data that is being dragged during drag and drop operations.\n *\n * It may hold one or more data items of different types. For more information about\n * drag and drop operations and data transfer objects, see\n * HTML Drag and Drop API.\n *\n * This object is created automatically by the @see:DragDropTouch singleton and is\n * accessible through the @see:dataTransfer property of all drag events.\n */\n var DataTransfer = (function () {\n function DataTransfer() {\n this._dropEffect = 'move';\n this._effectAllowed = 'all';\n this._data = {};\n }\n Object.defineProperty(DataTransfer.prototype, 'dropEffect', {\n /**\n * Gets or sets the type of drag-and-drop operation currently selected.\n * The value must be 'none', 'copy', 'link', or 'move'.\n */\n get: function () {\n return this._dropEffect;\n },\n set: function (value) {\n this._dropEffect = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, 'effectAllowed', {\n /**\n * Gets or sets the types of operations that are possible.\n * Must be one of 'none', 'copy', 'copyLink', 'copyMove', 'link',\n * 'linkMove', 'move', 'all' or 'uninitialized'.\n */\n get: function () {\n return this._effectAllowed;\n },\n set: function (value) {\n this._effectAllowed = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataTransfer.prototype, 'types', {\n /**\n * Gets an array of strings giving the formats that were set in the @see:dragstart event.\n */\n get: function () {\n return Object.keys(this._data);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Removes the data associated with a given type.\n *\n * The type argument is optional. If the type is empty or not specified, the data\n * associated with all types is removed. If data for the specified type does not exist,\n * or the data transfer contains no data, this method will have no effect.\n *\n * @param type Type of data to remove.\n */\n DataTransfer.prototype.clearData = function (type) {\n if (type != null) {\n delete this._data[type];\n }\n else {\n this._data = null;\n }\n };\n /**\n * Retrieves the data for a given type, or an empty string if data for that type does\n * not exist or the data transfer contains no data.\n *\n * @param type Type of data to retrieve.\n */\n DataTransfer.prototype.getData = function (type) {\n return this._data[type] || '';\n };\n /**\n * Set the data for a given type.\n *\n * For a list of recommended drag types, please see\n * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Recommended_Drag_Types.\n *\n * @param type Type of data to add.\n * @param value Data to add.\n */\n DataTransfer.prototype.setData = function (type, value) {\n this._data[type] = value;\n };\n /**\n * Set the image to be used for dragging if a custom one is desired.\n *\n * @param img An image element to use as the drag feedback image.\n * @param offsetX The horizontal offset within the image.\n * @param offsetY The vertical offset within the image.\n */\n DataTransfer.prototype.setDragImage = function (img, offsetX, offsetY) {\n var ddt = DragDropTouch._instance;\n ddt._imgCustom = img;\n ddt._imgOffset = { x: offsetX, y: offsetY };\n };\n return DataTransfer;\n }());\n DragDropTouch_1.DataTransfer = DataTransfer;\n /**\n * Defines a class that adds support for touch-based HTML5 drag/drop operations.\n *\n * The @see:DragDropTouch class listens to touch events and raises the\n * appropriate HTML5 drag/drop events as if the events had been caused\n * by mouse actions.\n *\n * The purpose of this class is to enable using existing, standard HTML5\n * drag/drop code on mobile devices running IOS or Android.\n *\n * To use, include the DragDropTouch.js file on the page. The class will\n * automatically start monitoring touch events and will raise the HTML5\n * drag drop events (dragstart, dragenter, dragleave, drop, dragend) which\n * should be handled by the application.\n *\n * For details and examples on HTML drag and drop, see\n * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Drag_operations.\n */\n var DragDropTouch = (function () {\n /**\n * Initializes the single instance of the @see:DragDropTouch class.\n */\n function DragDropTouch() {\n this._lastClick = 0;\n // enforce singleton pattern\n if (DragDropTouch._instance) {\n throw 'DragDropTouch instance already created.';\n }\n // detect passive event support\n // https://github.com/Modernizr/Modernizr/issues/1894\n var supportsPassive = false;\n document.addEventListener('test', function () { }, {\n get passive() {\n supportsPassive = true;\n return true;\n }\n });\n // listen to touch events\n if ('ontouchstart' in document) {\n var d = document, ts = this._touchstart.bind(this), tm = this._touchmove.bind(this), te = this._touchend.bind(this), opt = supportsPassive ? { passive: false, capture: false } : false;\n d.addEventListener('touchstart', ts, opt);\n d.addEventListener('touchmove', tm, opt);\n d.addEventListener('touchend', te);\n d.addEventListener('touchcancel', te);\n }\n }\n /**\n * Gets a reference to the @see:DragDropTouch singleton.\n */\n DragDropTouch.getInstance = function () {\n return DragDropTouch._instance;\n };\n // ** event handlers\n DragDropTouch.prototype._touchstart = function (e) {\n var _this = this;\n if (this._shouldHandle(e)) {\n // raise double-click and prevent zooming\n if (Date.now() - this._lastClick < DragDropTouch._DBLCLICK) {\n if (this._dispatchEvent(e, 'dblclick', e.target)) {\n if (e.cancelable) {\n e.preventDefault();\n }\n this._reset();\n return;\n }\n }\n // clear all variables\n this._reset();\n // get nearest draggable element\n var src = this._closestDraggable(e.target);\n if (src) {\n // give caller a chance to handle the hover/move events\n if (!this._dispatchEvent(e, 'mousemove', e.target) &&\n !this._dispatchEvent(e, 'mousedown', e.target)) {\n // get ready to start dragging\n this._dragSource = src;\n this._ptDown = this._getPoint(e);\n this._lastTouch = e;\n if (e.cancelable) {\n e.preventDefault();\n }\n // show context menu if the user hasn't started dragging after a while\n setTimeout(function () {\n if (_this._dragSource == src && _this._img == null) {\n if (_this._dispatchEvent(e, 'contextmenu', src)) {\n _this._reset();\n }\n }\n }, DragDropTouch._CTXMENU);\n if (DragDropTouch._ISPRESSHOLDMODE) {\n this._pressHoldInterval = setTimeout(function () {\n _this._isDragEnabled = true;\n _this._touchmove(e);\n }, DragDropTouch._PRESSHOLDAWAIT);\n }\n }\n }\n }\n };\n DragDropTouch.prototype._touchmove = function (e) {\n if (this._shouldCancelPressHoldMove(e)) {\n this._reset();\n return;\n }\n if (this._shouldHandleMove(e) || this._shouldHandlePressHoldMove(e)) {\n // see if target wants to handle move\n var target = this._getTarget(e);\n if (this._dispatchEvent(e, 'mousemove', target)) {\n this._lastTouch = e;\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n // start dragging\n if (this._dragSource && !this._img && this._shouldStartDragging(e)) {\n this._dispatchEvent(e, 'dragstart', this._dragSource);\n this._createImage(e);\n this._dispatchEvent(e, 'dragenter', target);\n }\n // continue dragging\n if (this._img) {\n this._lastTouch = e;\n if (e.cancelable) {\n e.preventDefault(); // prevent scrolling\n }\n if (target != this._lastTarget) {\n this._dispatchEvent(this._lastTouch, 'dragleave', this._lastTarget);\n this._dispatchEvent(e, 'dragenter', target);\n this._lastTarget = target;\n }\n this._moveImage(e);\n this._isDropZone = this._dispatchEvent(e, 'dragover', target);\n }\n }\n };\n DragDropTouch.prototype._touchend = function (e) {\n if (this._shouldHandle(e)) {\n // see if target wants to handle up\n if (this._dispatchEvent(this._lastTouch, 'mouseup', e.target)) {\n if (e.cancelable) {\n e.preventDefault();\n }\n return;\n }\n // user clicked the element but didn't drag, so clear the source and simulate a click\n if (!this._img) {\n this._dragSource = null;\n this._dispatchEvent(this._lastTouch, 'click', e.target);\n this._lastClick = Date.now();\n }\n // finish dragging\n this._destroyImage();\n if (this._dragSource) {\n if (e.type.indexOf('cancel') < 0 && this._isDropZone) {\n this._dispatchEvent(this._lastTouch, 'drop', this._lastTarget);\n }\n this._dispatchEvent(this._lastTouch, 'dragend', this._dragSource);\n this._reset();\n }\n }\n };\n // ** utilities\n // ignore events that have been handled or that involve more than one touch\n DragDropTouch.prototype._shouldHandle = function (e) {\n return e &&\n !e.defaultPrevented &&\n e.touches && e.touches.length < 2;\n };\n\n // use regular condition outside of press & hold mode\n DragDropTouch.prototype._shouldHandleMove = function (e) {\n return !DragDropTouch._ISPRESSHOLDMODE && this._shouldHandle(e);\n };\n\n // allow to handle moves that involve many touches for press & hold\n DragDropTouch.prototype._shouldHandlePressHoldMove = function (e) {\n return DragDropTouch._ISPRESSHOLDMODE &&\n this._isDragEnabled && e && e.touches && e.touches.length;\n };\n\n // reset data if user drags without pressing & holding\n DragDropTouch.prototype._shouldCancelPressHoldMove = function (e) {\n return DragDropTouch._ISPRESSHOLDMODE && !this._isDragEnabled &&\n this._getDelta(e) > DragDropTouch._PRESSHOLDMARGIN;\n };\n\n // start dragging when specified delta is detected\n DragDropTouch.prototype._shouldStartDragging = function (e) {\n var delta = this._getDelta(e);\n return delta > DragDropTouch._THRESHOLD ||\n (DragDropTouch._ISPRESSHOLDMODE && delta >= DragDropTouch._PRESSHOLDTHRESHOLD);\n }\n\n // clear all members\n DragDropTouch.prototype._reset = function () {\n this._destroyImage();\n this._dragSource = null;\n this._lastTouch = null;\n this._lastTarget = null;\n this._ptDown = null;\n this._isDragEnabled = false;\n this._isDropZone = false;\n this._dataTransfer = new DataTransfer();\n clearInterval(this._pressHoldInterval);\n };\n // get point for a touch event\n DragDropTouch.prototype._getPoint = function (e, page) {\n if (e && e.touches) {\n e = e.touches[0];\n }\n return { x: page ? e.pageX : e.clientX, y: page ? e.pageY : e.clientY };\n };\n // get distance between the current touch event and the first one\n DragDropTouch.prototype._getDelta = function (e) {\n if (DragDropTouch._ISPRESSHOLDMODE && !this._ptDown) { return 0; }\n var p = this._getPoint(e);\n return Math.abs(p.x - this._ptDown.x) + Math.abs(p.y - this._ptDown.y);\n };\n // get the element at a given touch event\n DragDropTouch.prototype._getTarget = function (e) {\n var pt = this._getPoint(e), el = document.elementFromPoint(pt.x, pt.y);\n while (el && getComputedStyle(el).pointerEvents == 'none') {\n el = el.parentElement;\n }\n return el;\n };\n // create drag image from source element\n DragDropTouch.prototype._createImage = function (e) {\n // just in case...\n if (this._img) {\n this._destroyImage();\n }\n // create drag image from custom element or drag source\n var src = this._imgCustom || this._dragSource;\n this._img = src.cloneNode(true);\n this._copyStyle(src, this._img);\n this._img.style.top = this._img.style.left = '-9999px';\n // if creating from drag source, apply offset and opacity\n if (!this._imgCustom) {\n var rc = src.getBoundingClientRect(), pt = this._getPoint(e);\n this._imgOffset = { x: pt.x - rc.left, y: pt.y - rc.top };\n this._img.style.opacity = DragDropTouch._OPACITY.toString();\n }\n // add image to document\n this._moveImage(e);\n document.body.appendChild(this._img);\n };\n // dispose of drag image element\n DragDropTouch.prototype._destroyImage = function () {\n if (this._img && this._img.parentElement) {\n this._img.parentElement.removeChild(this._img);\n }\n this._img = null;\n this._imgCustom = null;\n };\n // move the drag image element\n DragDropTouch.prototype._moveImage = function (e) {\n var _this = this;\n requestAnimationFrame(function () {\n if (_this._img) {\n var pt = _this._getPoint(e, true), s = _this._img.style;\n s.position = 'absolute';\n s.pointerEvents = 'none';\n s.zIndex = '999999';\n s.left = Math.round(pt.x - _this._imgOffset.x) + 'px';\n s.top = Math.round(pt.y - _this._imgOffset.y) + 'px';\n }\n });\n };\n // copy properties from an object to another\n DragDropTouch.prototype._copyProps = function (dst, src, props) {\n for (var i = 0; i < props.length; i++) {\n var p = props[i];\n dst[p] = src[p];\n }\n };\n DragDropTouch.prototype._copyStyle = function (src, dst) {\n // remove potentially troublesome attributes\n DragDropTouch._rmvAtts.forEach(function (att) {\n dst.removeAttribute(att);\n });\n // copy canvas content\n if (src instanceof HTMLCanvasElement) {\n var cSrc = src, cDst = dst;\n cDst.width = cSrc.width;\n cDst.height = cSrc.height;\n cDst.getContext('2d').drawImage(cSrc, 0, 0);\n }\n // copy style (without transitions)\n var cs = getComputedStyle(src);\n for (var i = 0; i < cs.length; i++) {\n var key = cs[i];\n if (key.indexOf('transition') < 0) {\n dst.style[key] = cs[key];\n }\n }\n dst.style.pointerEvents = 'none';\n // and repeat for all children\n for (var i = 0; i < src.children.length; i++) {\n this._copyStyle(src.children[i], dst.children[i]);\n }\n };\n DragDropTouch.prototype._dispatchEvent = function (e, type, target) {\n if (e && target) {\n var evt = document.createEvent('Event'), t = e.touches ? e.touches[0] : e;\n evt.initEvent(type, true, true);\n evt.button = 0;\n evt.which = evt.buttons = 1;\n this._copyProps(evt, e, DragDropTouch._kbdProps);\n this._copyProps(evt, t, DragDropTouch._ptProps);\n evt.dataTransfer = this._dataTransfer;\n target.dispatchEvent(evt);\n return evt.defaultPrevented;\n }\n return false;\n };\n // gets an element's closest draggable ancestor\n DragDropTouch.prototype._closestDraggable = function (e) {\n for (; e; e = e.parentElement) {\n if (e.hasAttribute('draggable') && e.draggable) {\n return e;\n }\n }\n return null;\n };\n return DragDropTouch;\n }());\n /*private*/ DragDropTouch._instance = new DragDropTouch(); // singleton\n // constants\n DragDropTouch._THRESHOLD = 5; // pixels to move before drag starts\n DragDropTouch._OPACITY = 0.5; // drag image opacity\n DragDropTouch._DBLCLICK = 500; // max ms between clicks in a double click\n DragDropTouch._CTXMENU = 900; // ms to hold before raising 'contextmenu' event\n DragDropTouch._ISPRESSHOLDMODE = false; // decides of press & hold mode presence\n DragDropTouch._PRESSHOLDAWAIT = 400; // ms to wait before press & hold is detected\n DragDropTouch._PRESSHOLDMARGIN = 25; // pixels that finger might shiver while pressing\n DragDropTouch._PRESSHOLDTHRESHOLD = 0; // pixels to move before drag starts\n // copy styles/attributes from drag source to drag image element\n DragDropTouch._rmvAtts = 'id,class,style,draggable'.split(',');\n // synthesize and dispatch an event\n // returns true if the event has been handled (e.preventDefault == true)\n DragDropTouch._kbdProps = 'altKey,ctrlKey,metaKey,shiftKey'.split(',');\n DragDropTouch._ptProps = 'pageX,pageY,clientX,clientY,screenX,screenY'.split(',');\n DragDropTouch_1.DragDropTouch = DragDropTouch;\n})(DragDropTouch || (DragDropTouch = {}));\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport Helmet from 'react-helmet';\nimport DetectLocale from './DetectLocale';\n\n// TODO: Use of this component causes warning UNSAFE_componentWillMount.\n// Should fix this, maybe not a purecomponent?\nexport default class AppHelmet extends PureComponent {\n render() {\n const { documentTitle, userLang, darkMode } = this.props;\n const lang = userLang ? userLang : DetectLocale.getUserLanguage();\n const colorScheme = darkMode ? 'dark' : 'light';\n return (\n \n \n {documentTitle}\n \n \n );\n }\n}\n\nAppHelmet.propTypes = {\n documentTitle: PropTypes.string,\n userLang: PropTypes.string,\n darkMode: PropTypes.bool,\n};\n\nAppHelmet.defaultProps = {\n documentTitle: 'documentTitle',\n}\n","export default class AltText {\n constructor() {\n this.text = '';\n }\n\n append(add) {\n if (add && add.length > 0) {\n this.text = (this.text.length > 0 ? this.text + ' ' : '') + add;\n let last = add.substring(add.length - 1);\n if (last.match(/^[\"”'’]$/g)) {\n last = add.substring(add.length - 2, add.length - 1);\n }\n if (last.match(/^[^.:!?,;]$/g)) {\n this.text += '.';\n }\n }\n }\n\n toString() {\n return this.text;\n }\n}\n","export default class DefaultImage {\n static get(imageType) {\n const inlineImage = 'data:image/jpeg;base64,';\n const imageData720x540 = inlineImage +\n 'iVBORw0KGgoAAAANSUhEUgAAAtAAAAIcAQMAAADlswsQAAAABGdBTUEAALGPC/xh' +\n 'BQAAAAFzUkdCAK7OHOkAAAADUExURdDQ0C0YHyEAAABGSURBVHja7cExAQAAAMKg' +\n '9U9tDB+gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAADgY7/0AAEUT5NEAAAAAElFTkSuQmCC';\n const imageData720x114 = inlineImage +\n 'iVBORw0KGgoAAAANSUhEUgAAAtAAAAByAQMAAABA0nQTAAAABGdBTUEAALGPC/xh' +\n 'BQAAAAFzUkdCAK7OHOkAAAADUExURdDQ0C0YHyEAAAAhSURBVGje7cExAQAAAMKg' +\n '9U9tB2+gAAAAAAAAAAAAAB4DKIYAAZfGE+MAAAAASUVORK5CYII=';\n return ('banner' === imageType ? imageData720x114 : imageData720x540);\n }\n\n static getBanner() {\n const inlineImage = 'data:image/png;base64,';\n return inlineImage +\n 'iVBORw0KGgoAAAANSUhEUgAABQAAAAPAAQMAAABQEkY6AAAABlBMVEVHcEzQ0NAV' +\n 'SKaqAAAAAXRSTlMAQObYZgAAAQ9JREFUeNrtzjERAAAIAKHvX1pbeA6QgAIAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAACgmucEBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF' +\n 'BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF' +\n 'BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF' +\n 'BY8tbEbJFJXeJugAAAAASUVORK5CYII=';\n }\n\n static getWH(imageType, width, height) {\n if (width && height) {\n if (width * 3 === height * 4) {\n return this.get('nobanner');\n } else if (width * 55 === height * 347) {\n return this.get('banner');\n }\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext('2d');\n context.fillStyle = '#d0d0d0';\n context.fillRect(0, 0, canvas.width, canvas.height);\n return canvas.toDataURL('image/png');\n } else {\n return this.get(imageType);\n }\n }\n}\n","import config from '../config/api.json';\n\nexport default class ImageResizerUrl {\n static getResizeURL(url, imageType, deviceSize) {\n const pattern =\n '^(' + config.api_base + '/wp-content/uploads/.*/)([^/]+)$';\n const matches = url.match(pattern);\n if (!matches) {\n return url;\n }\n\n const width = this.getOptimizedWidth(imageType, deviceSize);\n const quality = this._getOptimizedQuality(imageType, deviceSize);\n return matches[1] + 'resize/' + width + '/' + quality + '/' +\n matches[2];\n }\n\n static getOptimizedWidth(imageType, deviceSize, orgWidth) {\n const optimalWidth = 'small' === imageType ? 640 : 1280;\n if (orgWidth && orgWidth < optimalWidth) {\n return orgWidth;\n } else {\n return optimalWidth;\n }\n }\n\n static getOptimizedHeight(imageType, deviceSize, orgWidth, orgHeight) {\n const optimalWidth = 'small' === imageType ? 640 : 1280;\n const optimalHeight = 'small' === imageType ? 480 : 960;\n if (orgWidth && orgHeight) {\n if (orgWidth < optimalWidth) {\n return orgHeight;\n } else {\n return Math.round(orgHeight * optimalWidth / orgWidth);\n }\n } else {\n return optimalHeight;\n }\n }\n\n static _getOptimizedQuality(imageType, deviceSize) {\n let quality = 90;\n if ('tablet' === deviceSize) {\n quality = 80;\n } else if ('smartphone' === deviceSize) {\n quality = 70;\n }\n return quality;\n }\n}\n","export default class CanonicalUrl {\n static get(path) {\n let { protocol, host } = window.location;\n if (host === 'fahrgastfernsehen.online' ||\n host === 'www.fahrgastfernsehen.online') {\n host = 'www.fahrgastfernsehen.city';\n }\n if (!path) {\n path = \"/\";\n }\n return protocol + '//' + host + path;\n }\n}\n","export default class SlugifyUtil {\n static slugify(base, title) {\n if (!base || base === '') {\n base = '/';\n }\n const slugged = this._slugify(title);\n return slugged === '' ? base : base + '-' + slugged;\n }\n\n static _slugify(string) {\n if (!string) {\n return '';\n }\n const punctuation = string.toLowerCase().replaceAll(\n /[\\u0020-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e]/g,\n '-');\n const umlauteEszett = punctuation.replaceAll(\n /\\u00e4/g, 'ae').replaceAll(\n /\\u00f6/g, 'oe').replaceAll(\n /\\u00fc/g, 'ue').replaceAll(\n /\\u00df/g, 'ss');\n const decomposed = umlauteEszett.normalize('NFD');\n let cleaned = '';\n for (let i = 0; i < decomposed.length; i++) {\n const code = decomposed.charCodeAt(i);\n if (code >= 32 && code < 127) {\n cleaned += decomposed.charAt(i);\n }\n }\n return cleaned.replaceAll(\n /--+/g, '-').replace(\n /^-/, '').replace(\n /-$/, '');\n }\n}\n","import CanonicalUrl from './CanonicalUrl';\nimport SlugifyUtil from './SlugifyUtil';\n\nexport default class EntryUrl {\n static getPath(entry) {\n const { id, title } = entry;\n return SlugifyUtil.slugify('/beitrag/' + id, title);\n }\n\n static getUrl(entry) {\n return CanonicalUrl.get(this.getPath(entry));\n }\n}\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport MaybeLink from '../util/MaybeLink';\nimport AltText from '../util/AltText';\nimport DefaultImage from '../components/DefaultImage';\nimport ImageResizerUrl from '../util/ImageResizerUrl';\nimport EntryUrl from '../util/EntryUrl';\n\nconst useStyles = makeStyles((theme) => ({\n cardMediaStyle: {\n height: 'auto',\n backgroundColor: '#d0d0d0',\n },\n cardMediaTextOnly: {\n display: 'block',\n padding: 8,\n color: '#000000',\n backgroundColor: '#ffffff',\n },\n}));\n\nclass ImageCardContent extends PureComponent {\n constructor(props) {\n super(props);\n const { mediaWidth, mediaHeight, } = props.data;\n const width = mediaWidth && mediaHeight ?\n ImageResizerUrl.getOptimizedWidth(props.imageType, props.deviceSize,\n mediaWidth) :\n null;\n const height = mediaWidth && mediaHeight ?\n ImageResizerUrl.getOptimizedHeight(props.imageType,\n props.deviceSize, mediaWidth, mediaHeight) :\n null;\n const newMediaURL = ImageResizerUrl.getResizeURL(props.data.mediaURL,\n props.imageType, props.deviceSize);\n const mediaURL =\n DefaultImage.getWH(props.imageType, width, height);\n this.state = {\n width: width,\n height: height,\n newMediaURL: newMediaURL,\n mediaURL: mediaURL,\n };\n\n // Lazy loading with IntersectionObserver.\n this.handleObserved = this._handleObserved.bind(this);\n this.replaceUrl = this._replaceUrl.bind(this);\n if ('IntersectionObserver' in window) {\n const options = {\n root: document.querySelector('#scrollArea'),\n rootMargin: '0px',\n }\n this.observer = new IntersectionObserver(this.handleObserved,\n options);\n }\n this.setFocusHandler = this.setFocusHandler.bind(this);\n this.setBlurHandler = this.setBlurHandler.bind(this);\n }\n\n componentDidMount() {\n const { manager } = this.props;\n if (manager) {\n manager.addItem(this, 0);\n }\n if (this.imageElement) {\n if (this.observer) {\n this.observer.observe(this.imageElement);\n } else {\n this.replaceUrl();\n }\n }\n }\n\n componentDidUpdate() {\n const { manager } = this.props;\n if (manager) {\n manager.addItem(this, 0);\n }\n }\n\n componentWillUnmount() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n _handleObserved(entries, observer) {\n for (let entry of entries) {\n if (entry.intersectionRatio > 0.0) {\n this.replaceUrl();\n observer.unobserve(this.imageElement);\n }\n }\n }\n\n _replaceUrl() {\n this.setState({ mediaURL: this.state.newMediaURL, });\n }\n\n setFocusHandler(onFocus) {\n this.setState({ onFocus });\n }\n\n setBlurHandler(onBlur) {\n this.setState({ onBlur });\n }\n\n linkUrl() {\n let url = null;\n const { parentEntry, location, link, externalLink, } = this.props;\n if (parentEntry) {\n let pathname;\n if(externalLink && externalLink.startsWith(\"level://\")) {\n pathname = location.pathname;\n if(pathname === \"/\") {\n pathname = \"/heute\"\n }\n pathname = pathname + externalLink.substring(8);\n } else {\n pathname = EntryUrl.getPath(parentEntry);\n }\n const state = {\n data: parentEntry,\n back: location.pathname,\n }\n url = {\n pathname: pathname,\n search: location.search,\n state: state,\n }\n } else if (link) {\n url = link;\n }\n return url;\n }\n\n altText() {\n const { data, } = this.props;\n const text = new AltText();\n text.append(data.subheader);\n text.append(data.header);\n text.append(data.text);\n return text.toString();\n }\n\n textSubheader() {\n const { data } = this.props;\n if (data.header && data.header.trim() !== '') {\n return data.subheader;\n } else {\n return '';\n }\n }\n\n textHeader() {\n const { data, parentEntry } = this.props;\n if (data.header && data.header.trim() !== '') {\n return data.header;\n } else if (data.subheader && data.subheader.trim() !== '') {\n return data.subheader;\n } else if (parentEntry && parentEntry.title) {\n return parentEntry.title;\n } else {\n return '';\n }\n }\n\n textText() {\n const { data } = this.props;\n return data.text;\n }\n\n _onClickImageCard() {\n if (window.FgfChannel) {\n const { parentEntry } = this.props;\n window.FgfChannel.postMessage(\"onPathChanged:/beitrag/\" +\n parentEntry.id);\n }\n }\n\n render() {\n let {\n classes, externalLink, onFocusVisible, onFocus, onBlur, manager,\n textOnly, textOnlyHeadLevelIncrement,\n } = this.props;\n const textHeadComponent = 'h' + (2 + textOnlyHeadLevelIncrement);\n if (manager) {\n onFocusVisible = this.state.onFocus;\n onBlur = this.state.onBlur;\n }\n const cardMedia = textOnly ?\n
\n \n {this.textSubheader()}\n \n \n {this.textHeader()}\n \n \n {this.textText()}\n \n
:\n { this.imageElement = element; }}\n />;\n let checkedExternalLink;\n if(externalLink && !externalLink.startsWith(\"level://\")) {\n checkedExternalLink = externalLink;\n }\n return (\n \n {cardMedia}\n \n );\n }\n}\n\nImageCardContent.prototypes = {\n data: PropTypes.object.isRequired,\n parentEntry: PropTypes.object,\n link: PropTypes.string,\n externalLink: PropTypes.string,\n imageType: PropTypes.string,\n deviceSize: PropTypes.string,\n onFocusVisible: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n manager: PropTypes.object,\n textOnly: PropTypes.bool,\n textOnlyHeadLevelIncrement: PropTypes.number,\n};\n\nImageCardContent.defaultProps = {\n imageType: 'big',\n textOnlyHeadLevelIncrement: 0,\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return ;\n});\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\nimport ImageCardContent from './ImageCardContent';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n borderRadius: 8,\n transform: 'translateZ(0)',\n },\n focusedCard: {\n borderRadius: 8,\n transform: 'translateZ(0)',\n outline: '6px solid #888888',\n },\n textOnlyCard: {\n borderRadius: 0,\n transform: 'translateZ(0)',\n outline: '1px solid #888888',\n },\n cardContent: {\n padding: 0,\n },\n}));\n\nclass ImageCard extends PureComponent {\n constructor(props) {\n super(props);\n const focused = false;\n this.state = { focused };\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n onFocus() {\n const focused = true;\n this.setState({ focused });\n }\n\n onBlur() {\n const focused = false;\n this.setState({ focused });\n }\n\n render() {\n const {\n classes, data, parentEntry, link, externalLink, imageType,\n deviceSize, textOnly,textOnlyHeadLevelIncrement,\n } = this.props;\n const { focused } = this.state;\n return (\n \n \n \n \n \n );\n }\n}\n\nImageCard.propTypes = {\n data: PropTypes.object.isRequired,\n parentEntry: PropTypes.object,\n link: PropTypes.string,\n externalLink: PropTypes.string,\n imageType: PropTypes.string,\n deviceSize: PropTypes.string,\n textOnly: PropTypes.bool,\n textOnlyHeadLevelIncrement: PropTypes.number,\n}\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return ;\n});\n","import axios from 'axios';\n\nimport config from '../config/api.json';\n\nexport default async function getViewData(viewName, lang, onDataReceived, port,\n token, date) {\n const headers = token ? { 'X-WP-Nonce': token, } : {};\n const withCredentials = !!token;\n const datePath = date && token ? '/' + date : '';\n const langPath = lang ? '/' + lang : '';\n let url = config.api_base + config.entry_path + viewName +\n langPath + datePath;\n if(viewName === \"dpaposts\") {\n url = config.api_base + config.dpa_path;\n }\n if (port && port !== 0) {\n if(viewName === \"dpaposts\"){\n url = \"http://127.0.0.1:\" + port + \"/api\" + config.dpa_path;\n } else {\n url = \"http://127.0.0.1:\" + port + \"/api\" + config.entry_path + viewName;\n }\n //console.log(url);\n }\n const response = await axios.get(url, {\n headers: headers,\n withCredentials: withCredentials,\n transformResponse: [(data) => {\n return data\n }],\n });\n if (response && 200 === response.status && response.data) {\n const lastModified = response.headers['last-modified'];\n onDataReceived(JSON.parse(response.data), lastModified);\n } else {\n throw new Error('request failed', response);\n }\n}\n","import axios from 'axios';\n\nimport config from '../config/api.json';\nimport getViewData from \"./ViewReader\";\n\nexport default async function headViewData(viewName, lang, onDataReceived, port,\n token, date, lastModified) {\n const headers = token ? { 'X-WP-Nonce': token, } : {};\n const withCredentials = !!token;\n const datePath = date && token ? '/' + date : '';\n const langPath = lang ? '/' + lang : '';\n let url = config.api_base + config.entry_path + viewName +\n langPath + datePath;\n if(viewName === \"dpaposts\") {\n url = config.api_base + config.dpa_path;\n }\n if (port && port !== 0) {\n if(viewName === \"dpaposts\"){\n url = \"http://127.0.0.1:\" + port + \"/api\" + config.dpa_path;\n } else {\n url = \"http://127.0.0.1:\" + port + \"/api\" + config.entry_path + viewName;\n }\n //console.log(url);\n }\n const response = await axios.head(url, {\n headers: headers,\n withCredentials: withCredentials,\n });\n if (response && 200 === response.status ) {\n const lastModifiedHeader = response.headers['last-modified'];\n if(lastModifiedHeader !== lastModified) {\n getViewData(viewName, lang, onDataReceived,\n port, token,\n date).catch((error) => {\n //console.log(error)\n });\n }\n\n\n }\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Grid from \"@material-ui/core/Grid\";\n\nconst useStyles = makeStyles((theme) => ({\n smallSmall1: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -4,\n },\n },\n smallBanner1: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -5.88,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.47,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -1.33,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 2.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 7.31,\n },\n },\n smallBanner2: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -5.88,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.47,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -1.33,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 2.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 7.31,\n },\n },\n smallFiller1: {\n [theme.breakpoints.up('sm')]: {\n marginTop: 42.87,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: 53.28,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: 76.67,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 107.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 140.81,\n },\n },\n bannerSmall0: {\n [theme.breakpoints.up('sm')]: {\n marginBottom: -5.88,\n },\n [theme.breakpoints.up('sd')]: {\n marginBottom: -4.47,\n },\n [theme.breakpoints.up('md')]: {\n marginBottom: -1.33,\n },\n [theme.breakpoints.up('lg')]: {\n marginBottom: 2.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginBottom: 7.31,\n },\n },\n bannerSmall1: {\n [theme.breakpoints.up('sm')]: {\n marginBottom: -5.88,\n },\n [theme.breakpoints.up('sd')]: {\n marginBottom: -4.47,\n },\n [theme.breakpoints.up('md')]: {\n marginBottom: -1.33,\n },\n [theme.breakpoints.up('lg')]: {\n marginBottom: 2.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginBottom: 7.31,\n },\n },\n fourBanner1: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -6.51,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.63,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -0.44,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 5.16,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 11.08,\n },\n },\n fourBanner2: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -6.51,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.63,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -0.44,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 5.16,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 11.08,\n },\n },\n fourBanner3: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -6.51,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.63,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -0.44,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 5.16,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 11.08,\n },\n },\n threeBanner1: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -5.88,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.47,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -1.33,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 2.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 7.31,\n },\n },\n threeBanner2: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -5.88,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.47,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -1.33,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 2.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 7.31,\n },\n },\n twoBanner1: {\n [theme.breakpoints.up('sm')]: {\n marginTop: -5.88,\n },\n [theme.breakpoints.up('sd')]: {\n marginTop: -4.47,\n },\n [theme.breakpoints.up('md')]: {\n marginTop: -1.33,\n },\n [theme.breakpoints.up('lg')]: {\n marginTop: 2.87,\n },\n [theme.breakpoints.up('xl')]: {\n marginTop: 7.31,\n },\n },\n}));\n\nclass AdaptiveGridItem extends PureComponent {\n\n render() {\n const { children, classes, variant, itemNo, keyValue, } = this.props;\n return (\n \n {children}\n \n );\n }\n}\n\nAdaptiveGridItem.prototypes = {\n variant: PropTypes.string.isRequired,\n itemNo: PropTypes.number.isRequired,\n keyValue: PropTypes.string,\n};\n\nexport default function _AdaptiveGridItem(props) {\n const classes = useStyles();\n return ;\n}\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport AdaptiveGridItem from './AdaptiveGridItem';\n\nexport default class CardBox {\n constructor() {\n this.boxCount = 0;\n this.reset();\n }\n\n addSmall(item) {\n if (this.top.items.length === 0) {\n this.top.items.push(item);\n this.top.isSmall = true;\n } else if (this.bottom.items.length === 0) {\n this.bottom.items.push(item);\n this.bottom.isSmall = true;\n } else {\n // console.error('bad call to addSmall, call finish first');\n }\n }\n\n addBanner(item) {\n if (this.top.items.length === 0) {\n this.top.items.push(item);\n this.top.isBanner = true;\n } else if (this.top.isBanner && this.top.items.length < 2) {\n this.top.items.push(item);\n } else if (this.bottom.items.length === 0) {\n this.bottom.items.push(item);\n this.bottom.isBanner = true;\n } else if (this.bottom.isBanner && this.bottom.items.length < 2) {\n this.bottom.items.push(item);\n } else {\n // console.error('bad call to addBanner, call finish first');\n }\n }\n\n canAddSmall() {\n return (this.top.items.length === 0 || this.bottom.items.length === 0);\n }\n\n canAddBanner() {\n return (this.top.items.length === 0 ||\n (this.top.isBanner && this.top.items.length < 2) ||\n this.bottom.items.length === 0 ||\n (this.bottom.isBanner && this.bottom.items.length < 2));\n }\n\n isEmpty() {\n return (this.top.items.length === 0);\n }\n\n finish() {\n if (this.top.items.length === 0) {\n return null;\n } else {\n const variant = this.determineAndAdjustVariant();\n let items = [];\n let itemNo = 0;\n for (let item of this.top.items) {\n items.push(\n \n {item}\n \n );\n itemNo++;\n }\n for (let item of this.bottom.items) {\n items.push(\n \n {item}\n \n );\n itemNo++;\n }\n const box =\n \n \n {items}\n \n ;\n this.boxCount++;\n this.reset();\n return box;\n }\n }\n\n // end of interface.\n\n reset() {\n this.top = {\n items: [],\n isSmall: false,\n isBanner: false,\n };\n this.bottom = {\n items: [],\n isSmall: false,\n isBanner: false,\n };\n }\n\n determineAndAdjustVariant() {\n if (this.top.isSmall) {\n if (this.bottom.isSmall) {\n return 'smallSmall';\n } else if (this.bottom.isBanner) {\n return 'smallBanner';\n } else {\n return 'smallFiller';\n }\n } else if (this.top.isBanner) {\n if (this.bottom.isSmall) {\n return 'bannerSmall';\n } else if (this.bottom.isBanner) {\n if (this.bottom.items.length === 2) {\n return 'fourBanner';\n } else {\n return 'threeBanner';\n }\n } else {\n return 'twoBanner';\n }\n }\n\n // console.error('failed to determine variant');\n return 'unknown';\n }\n}\n","import React, { PureComponent } from 'react';\n\nimport Grid from \"@material-ui/core/Grid\";\n\nclass FillBox extends PureComponent {\n render() {\n return (\n \n );\n }\n}\n\nexport default function _FillBox(props) {\n return \n}\n","import React from \"react\";\n\nimport CardBox from './CardBox';\nimport FillBox from './FillBox';\n\nexport default class Columns {\n constructor() {\n this.arraySingle = [];\n this.arrayDouble = [];\n this.currentLeft = true;\n this.cardBox = new CardBox();\n this.fillBoxCount = 0;\n }\n\n addSlider(slider) {\n this.finishCardBox();\n this.addToBoth(slider[0], slider[1]);\n this.currentLeft = !this.currentLeft;\n }\n\n addSectionSlider(slider) {\n this.finishRow();\n this.addToBoth(slider[0], slider[1]);\n this.currentLeft = !this.currentLeft;\n }\n\n addSection(section) {\n const title = section[0];\n const items = section[1];\n this.finishRow();\n this.addToBoth(title[0], title[1]);\n for (let item of items) {\n this.addToBoth(item[0], item[1]);\n this.currentLeft = !this.currentLeft;\n }\n }\n\n addFull(items) {\n this.finishCardBox()\n for (let item of items) {\n this.addToBoth(item[0], item[1]);\n this.currentLeft = !this.currentLeft;\n }\n }\n\n addSmall(items) {\n for (let item of items) {\n this.addToSingle(item[0]);\n this.addSmallToCardBox(item[1]);\n }\n }\n\n addBanner(items) {\n for (let item of items) {\n this.addToSingle(item[0]);\n this.addBannerToCardBox(item[1]);\n }\n }\n\n finish() {\n this.finishCardBox();\n }\n\n getSingle() {\n return this.arraySingle;\n }\n\n getDouble() {\n return this.arrayDouble;\n }\n\n // end of interface.\n\n\n addToBoth(itemSingle, itemDouble) {\n this.addToSingle(itemSingle);\n this.addToDouble(itemDouble);\n }\n\n addToSingle(item) {\n this.arraySingle.push(item);\n }\n\n addToDouble(item) {\n this.arrayDouble.push(item);\n }\n\n addSmallToCardBox(item) {\n if (!this.cardBox.canAddSmall()) {\n this.addToDouble(this.cardBox.finish());\n this.currentLeft = !this.currentLeft;\n }\n this.cardBox.addSmall(item);\n }\n\n addBannerToCardBox(item) {\n if (!this.cardBox.canAddBanner()) {\n this.addToDouble(this.cardBox.finish());\n this.currentLeft = !this.currentLeft;\n }\n this.cardBox.addBanner(item);\n }\n\n finishRow() {\n this.finishCardBox();\n if (!this.currentLeft) {\n this.addToDouble();\n this.currentLeft = true;\n this.fillBoxCount++;\n }\n }\n\n finishCardBox() {\n if (!this.cardBox.isEmpty()) {\n this.addToDouble(this.cardBox.finish());\n this.currentLeft = !this.currentLeft;\n }\n }\n}\n\n","import React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Box from '@material-ui/core/Box';\nimport WifiIcon from '@material-ui/icons/Wifi';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport L from \"../util/L10n\";\nimport MaybeLink from \"../util/MaybeLink\";\nimport wifiConfig from '../config/wifi.json';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n },\n cardContent: {\n padding: '0px',\n // TODO: padding bottom overridden twice (!)\n // by MuiCardContent-root:last-child\n backgroundColor: '#66991a',\n },\n row: {\n display: 'flex',\n flexDirection: 'row',\n },\n icon: {\n fontSize: '2.8rem',\n color: '#ffffff',\n fontWeight: 'bold',\n padding: '12px 10px 6px',\n },\n text: {\n padding: '6px 10px',\n },\n title: {\n color: '#ffffff',\n fontWeight: 'bold',\n },\n subtitle: {\n color: '#ffffff',\n },\n link: {\n textDecoration: 'none',\n display: 'block',\n '&:focus-visible': {\n outline: '6px solid #888888',\n borderRadius: 6,\n },\n },\n}));\n\nclass WifiGridItem extends PureComponent {\n _onClickWifiBox() {\n if (window.FgfChannel) {\n window.FgfChannel.postMessage(\"onWifiBoxClicked:\");\n }\n }\n\n render() {\n const { classes, externalTracking, } = this.props;\n const userLang = undefined;\n return (\n \n \n \n \n
\n \n \n \n \n \n {L.t('wifiGridItemTitle_text',\n userLang)}\n \n \n {L.t('wifiGridItemSubtitle_text',\n userLang)}\n \n \n
\n
\n
\n \n
\n );\n }\n}\n\nWifiGridItem.propTypes = {\n userLang: PropTypes.string,\n};\n\nexport default function _WifiGridItem(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const _onClickWeb = () => {\n trackEvent({\n category: 'wifi',\n action: 'click',\n name: 'banner',\n });\n return true;\n };\n return ;\n}\n","import React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Box from '@material-ui/core/Box';\n\nimport L from '../util/L10n';\nimport DetectLocale from '../util/DetectLocale';\n\nconst useStyles = makeStyles((theme) => ({\n date: {\n fontWeight: 500,\n textTransform: 'uppercase',\n color: '#828282',\n fontSize: '0.9rem',\n },\n lang: {\n fontWeight: 500,\n textTransform: 'uppercase',\n textAlign: 'right',\n color: '#828282',\n fontSize: '0.9rem',\n },\n title: {\n fontWeight: 500,\n letterSpacing: '-1px',\n },\n}));\n\nclass PageTitleItem extends PureComponent {\n render() {\n // TODO Verify browsers do not choke on options. See\n // https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString#Browser_compatibility\n const { classes, name, userLang, level, } = this.props;\n const locale = userLang ? userLang : DetectLocale.getPreferredLocale();\n const dateOptions =\n { weekday: 'long', month: 'long', day: 'numeric', };\n let dateValue = new Date();\n const { previewToken, previewDate, } = this.props;\n if (previewToken && previewDate) {\n dateValue = new Date(previewDate);\n }\n const dateString = dateValue.toLocaleDateString(locale, dateOptions);\n const dateTime = dateValue.toISOString().substring(0, 10);\n return (\n \n \n \n \n \n \n {level ? level : L.t(name + 'TeaserPageTitle', userLang)}\n \n \n \n );\n }\n}\n\nPageTitleItem.propTypes = {\n name: PropTypes.string,\n level: PropTypes.string,\n previewToken: PropTypes.string,\n previewDate: PropTypes.string,\n userLang: PropTypes.string,\n updateUserLang: PropTypes.func,\n};\n\nexport default function _PageTitleItem(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CardMedia from '@material-ui/core/CardMedia';\n\nimport MaybeLink from '../util/MaybeLink';\nimport AltText from '../util/AltText';\nimport DefaultImage from '../components/DefaultImage';\nimport ImageResizerUrl from '../util/ImageResizerUrl';\nimport EntryUrl from '../util/EntryUrl';\nimport L from '../util/L10n';\n\nconst useStyles = makeStyles((theme) => ({\n cardMediaStyle: {\n height: 'auto',\n },\n}));\n\nclass CarouselImageCardContent extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n newMediaURL: ImageResizerUrl.getResizeURL(props.data.mediaURL,\n props.imageType, props.deviceSize),\n mediaURL: DefaultImage.get(props.imageType),\n imageLoaded: false,\n tabIndexEnabled: !props.duplicate && props.sliderItem === 0,\n }\n this.onImageLoaded = this._onImageLoaded.bind(this);\n this.loadImage = this._loadImage.bind(this);\n this.setTabIndex = this._setTabIndex.bind(this);\n this.setFocusHandler = this.setFocusHandler.bind(this);\n this.setBlurHandler = this.setBlurHandler.bind(this);\n }\n\n componentDidMount() {\n const { manager, sliderItem, } = this.props;\n if (manager) {\n manager.addItem(this, sliderItem);\n }\n if (sliderItem === 0 || sliderItem === 1) {\n this.loadImage();\n }\n }\n\n componentDidUpdate() {\n const { manager, sliderItem, } = this.props;\n if (manager) {\n manager.addItem(this, sliderItem);\n }\n if (sliderItem === 0 || sliderItem === 1) {\n this.loadImage();\n }\n }\n\n _loadImage() {\n if (!this.state.imageLoaded) {\n const { mediaWidth, mediaHeight, } = this.props.data;\n if (mediaWidth && mediaHeight &&\n mediaWidth * 3 === mediaHeight * 4) {\n this.setState({\n mediaURL: this.state.newMediaURL,\n imageLoaded: true,\n });\n } else {\n this.image = new Image();\n this.image.crossOrigin = 'anonymous';\n this.image.onload = this.onImageLoaded;\n this.image.src = this.state.newMediaURL;\n }\n }\n }\n\n _onImageLoaded() {\n const canvas = document.createElement('canvas');\n canvas.width = 1280;\n canvas.height = 960;\n const context = canvas.getContext('2d');\n context.fillStyle = '#000000';\n context.fillRect(0, 0, canvas.width, canvas.height);\n let width = canvas.width;\n let height = canvas.height;\n let x = 0;\n let y = 0;\n if (this.image.width * 3 < this.image.height * 4) {\n width = this.image.width * canvas.height / this.image.height;\n x = (canvas.width - width) / 2;\n } else if (this.image.width * 3 > this.image.height * 4) {\n height = this.image.height * canvas.width / this.image.width;\n y = (canvas.height - height) / 2;\n }\n context.drawImage(this.image, x, y, width, height);\n const imageDataUrl = canvas.toDataURL('image/png');\n this.setState({ mediaURL: imageDataUrl, imageLoaded: true, });\n }\n\n _setTabIndex(enabled) {\n this.setState({ tabIndexEnabled: enabled });\n }\n\n setFocusHandler(onFocus) {\n this.setState({ onFocus });\n }\n\n setBlurHandler(onBlur) {\n this.setState({ onBlur });\n }\n\n linkUrl() {\n let url = null;\n\n const { parentEntry, location, link, externalLink} = this.props;\n\n if (parentEntry) {\n let pathname;\n if(externalLink && externalLink.startsWith(\"level://\")) {\n pathname = location.pathname;\n if(pathname === \"/\") {\n pathname = \"/heute\"\n }\n pathname = pathname + externalLink.substring(8);\n } else {\n pathname = EntryUrl.getPath(parentEntry);\n }\n\n const state = {\n data: parentEntry,\n back: location.pathname,\n }\n url = {\n pathname: pathname,\n search: location.search,\n state: state,\n }\n } else if (link) {\n url = link;\n }\n return url;\n }\n\n altText() {\n const { data, sliderItem } = this.props;\n const text = new AltText();\n\n //TODO: Hier fehlt die userLang, replace undefined!!\n const number = '' + (sliderItem + 1);\n text.append(L.t('sliderElementIntro', undefined, { number }));\n text.append(data.subheader);\n text.append(data.header);\n text.append(data.text);\n return text.toString();\n }\n\n _onClickImageCard() {\n if (window.FgfChannel) {\n const { parentEntry } = this.props;\n window.FgfChannel.postMessage(\"onPathChanged:/beitrag/\" + parentEntry.id);\n }\n }\n\n render() {\n const { classes, externalLink } = this.props;\n const { mediaURL, tabIndexEnabled } = this.state;\n const tabIndex = tabIndexEnabled ? 0 : -1;\n const { onFocus, onBlur } = this.state;\n let checkedExternalLink;\n if(externalLink && !externalLink.startsWith(\"level://\")) {\n checkedExternalLink = externalLink;\n }\n return (\n \n \n \n );\n }\n}\n\nCarouselImageCardContent.prototypes = {\n data: PropTypes.object.isRequired,\n parentEntry: PropTypes.object,\n link: PropTypes.string,\n externalLink: PropTypes.string,\n imageType: PropTypes.string,\n deviceSize: PropTypes.string,\n manager: PropTypes.object,\n sliderItem: PropTypes.number,\n duplicate: PropTypes.bool,\n};\n\nCarouselImageCardContent.defaultProps = {\n imageType: 'big',\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return \n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport CarouselImageCardContent from './CarouselImageCardContent';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n float: 'left',\n position: 'relative',\n transitionProperty: 'transform',\n },\n}));\n\nclass CarouselImageItem extends PureComponent {\n render() {\n const {\n classes, data, parentEntry, link, externalLink, imageType,\n deviceSize, manager, sliderItem, duplicate,\n } = this.props;\n return (\n
\n \n
\n );\n }\n}\n\nCarouselImageItem.prototypes = {\n data: PropTypes.object.isRequired,\n parentEntry: PropTypes.object,\n link: PropTypes.string,\n externalLink: PropTypes.string,\n imageType: PropTypes.string,\n deviceSize: PropTypes.string,\n manager: PropTypes.object,\n sliderItem: PropTypes.number,\n duplicate: PropTypes.bool,\n};\n\nexport default function _CarouselImageItem(props) {\n const classes = useStyles();\n return \n}\n\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CardMedia from '@material-ui/core/CardMedia';\n\nimport MaybeLink from '../util/MaybeLink';\nimport AltText from '../util/AltText';\nimport DefaultImage from '../components/DefaultImage';\nimport ImageResizerUrl from '../util/ImageResizerUrl';\nimport EntryUrl from '../util/EntryUrl';\nimport L from '../util/L10n';\n\nconst useStyles = makeStyles((theme) => ({\n cardMediaStyle: {\n height: 'auto',\n },\n}));\n\nclass CarouselBannerCardContent extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n newMediaURL: ImageResizerUrl.getResizeURL(props.data.mediaURL,\n props.imageType, props.deviceSize),\n mediaURL: DefaultImage.getBanner(),\n imageLoaded: false,\n tabIndexEnabled: !props.duplicate && props.sliderItem === 0,\n }\n this.onImageLoaded = this._onImageLoaded.bind(this);\n this.loadImage = this._loadImage.bind(this);\n this.setTabIndex = this._setTabIndex.bind(this);\n this.setFocusHandler = this.setFocusHandler.bind(this);\n this.setBlurHandler = this.setBlurHandler.bind(this);\n }\n\n componentDidMount() {\n const { manager, sliderItem, } = this.props;\n if (manager) {\n manager.addItem(this, sliderItem);\n }\n if (sliderItem === 0 || sliderItem === 1) {\n this.loadImage();\n }\n }\n\n componentDidUpdate() {\n const { manager, sliderItem, } = this.props;\n if (manager) {\n manager.addItem(this, sliderItem);\n }\n if (sliderItem === 0 || sliderItem === 1) {\n this.loadImage();\n }\n }\n\n _loadImage() {\n if (!this.state.imageLoaded) {\n this.image = new Image();\n this.image.crossOrigin = 'anonymous';\n this.image.onload = this.onImageLoaded;\n this.image.src = this.state.newMediaURL;\n }\n }\n\n _onImageLoaded() {\n const imageDataUrl = this.bannerToBig(this.image);\n this.setState({ mediaURL: imageDataUrl, imageLoaded: true });\n }\n\n bannerToBig(image) {\n const canvas = document.createElement('canvas');\n canvas.width = 1280;\n canvas.height = 960;\n const context = canvas.getContext('2d');\n const width = canvas.width;\n const height = image.height * canvas.width / image.width;\n const x = 0;\n const y = canvas.height - height;\n context.drawImage(image, x, y, width, height);\n return canvas.toDataURL('image/png');\n }\n\n\n _setTabIndex(enabled) {\n this.setState({ tabIndexEnabled: enabled });\n }\n\n setFocusHandler(onFocus) {\n this.setState({ onFocus });\n }\n\n setBlurHandler(onBlur) {\n this.setState({ onBlur });\n }\n\n linkUrl() {\n let url = null;\n const { parentEntry, location, link, externalLink} = this.props;\n if (parentEntry) {\n let pathname;\n if(externalLink && externalLink.startsWith(\"level://\")) {\n pathname = location.pathname;\n if(pathname === \"/\") {\n pathname = \"/heute\"\n }\n pathname = pathname + externalLink.substring(8);\n } else {\n pathname = EntryUrl.getPath(parentEntry);\n }\n const state = {\n data: parentEntry,\n back: location.pathname,\n }\n url = {\n pathname: pathname,\n search: location.search,\n state: state,\n }\n } else if (link) {\n url = link;\n }\n return url;\n }\n\n altText() {\n const { data, sliderItem } = this.props;\n const text = new AltText();\n\n //TODO: Hier fehlt die userLang, replace undefined!!\n const number = '' + (sliderItem + 1);\n text.append(L.t('sliderElementIntro', undefined, { number }));\n text.append(data.subheader);\n text.append(data.header);\n text.append(data.text);\n return text.toString();\n }\n\n _onClickImageCard() {\n if (window.FgfChannel) {\n const { parentEntry } = this.props;\n window.FgfChannel.postMessage(\"onPathChanged:/beitrag/\" + parentEntry.id);\n }\n }\n\n render() {\n const { classes, externalLink } = this.props;\n const { mediaURL, tabIndexEnabled } = this.state;\n const tabIndex = tabIndexEnabled ? 0 : -1;\n const { onFocus, onBlur } = this.state;\n let checkedExternalLink;\n if(externalLink && !externalLink.startsWith(\"level://\")) {\n checkedExternalLink = externalLink;\n }\n return (\n \n \n \n );\n }\n}\n\nCarouselBannerCardContent.prototypes = {\n data: PropTypes.object.isRequired,\n parentEntry: PropTypes.object,\n link: PropTypes.string,\n externalLink: PropTypes.string,\n bgUrl: PropTypes.string,\n deviceSize: PropTypes.string,\n manager: PropTypes.object,\n sliderItem: PropTypes.number,\n duplicate: PropTypes.bool,\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return \n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport CarouselBannerCardContent from './CarouselBannerCardContent';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n float: 'left',\n position: 'relative',\n transitionProperty: 'transform',\n },\n}));\n\nclass CarouselBannerItem extends PureComponent {\n render() {\n const {\n classes, data, parentEntry, link, externalLink, bgUrl,\n deviceSize, manager, sliderItem, duplicate,\n } = this.props;\n return (\n
\n \n
\n );\n }\n}\n\nCarouselBannerItem.prototypes = {\n data: PropTypes.object.isRequired,\n parentEntry: PropTypes.object,\n link: PropTypes.string,\n externalLink: PropTypes.string,\n bgUrl: PropTypes.string,\n deviceSize: PropTypes.string,\n manager: PropTypes.object,\n sliderItem: PropTypes.number,\n duplicate: PropTypes.bool,\n};\n\nexport default function _CarouselBannerItem(props) {\n const classes = useStyles();\n return \n}\n\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport CardMedia from '@material-ui/core/CardMedia';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport MaybeLink from '../util/MaybeLink';\nimport AltText from '../util/AltText';\nimport DefaultImage from '../components/DefaultImage';\nimport ImageResizerUrl from '../util/ImageResizerUrl';\nimport EntryUrl from '../util/EntryUrl';\n\nconst useStyles = makeStyles((theme) => ({\n cardMediaStyle: {\n height: 'auto',\n },\n cardMediaTextOnly: {\n display: 'block',\n padding: 8,\n color: '#000000',\n backgroundColor: '#ffffff',\n },\n}));\n\nclass BannerCardContent extends PureComponent {\n constructor(props) {\n super(props);\n const newMediaURL = ImageResizerUrl.getResizeURL(props.data.mediaURL,\n 'banner', props.deviceSize);\n const mediaURL = DefaultImage.getBanner();\n this.state = {\n newMediaURL,\n mediaURL,\n };\n // Lazy loading with IntersectionObserver.\n this.handleObserved = this._handleObserved.bind(this);\n this.replaceUrl = this._replaceUrl.bind(this);\n if ('IntersectionObserver' in window) {\n const options = {\n root: document.querySelector('#scrollArea'),\n rootMargin: '0px',\n }\n this.observer = new IntersectionObserver(this.handleObserved,\n options);\n }\n this.setFocusHandler = this.setFocusHandler.bind(this);\n this.setBlurHandler = this.setBlurHandler.bind(this);\n this.onImageLoaded = this.onImageLoaded.bind(this);\n }\n\n onImageLoaded() {\n const imageDataUrl = this.bannerToBig(this.image);\n this.setState({ mediaURL: imageDataUrl });\n }\n\n bannerToBig(image) {\n const canvas = document.createElement('canvas');\n canvas.width = 1280;\n canvas.height = 960;\n const context = canvas.getContext('2d');\n const width = canvas.width;\n const height = image.height * canvas.width / image.width;\n const x = 0;\n const y = canvas.height - height;\n context.drawImage(image, x, y, width, height);\n return canvas.toDataURL('image/png');\n }\n\n componentDidMount() {\n const { manager } = this.props;\n if (manager) {\n manager.addItem(this, 0);\n }\n if (this.imageElement) {\n if (this.observer) {\n this.observer.observe(this.imageElement);\n } else {\n this.replaceUrl();\n }\n }\n }\n\n componentDidUpdate() {\n const { manager } = this.props;\n if (manager) {\n manager.addItem(this, 0);\n }\n }\n\n componentWillUnmount() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n _handleObserved(entries, observer) {\n for (let entry of entries) {\n if (entry.intersectionRatio > 0.0) {\n this.replaceUrl();\n observer.unobserve(this.imageElement);\n }\n }\n }\n\n _replaceUrl() {\n this.image = new Image();\n this.image.crossOrigin = 'anonymous';\n this.image.onload = this.onImageLoaded;\n this.image.src = this.state.newMediaURL;\n // this.setState({ mediaURL: this.state.newMediaURL, });\n }\n\n setFocusHandler(onFocus) {\n this.setState({ onFocus });\n }\n\n setBlurHandler(onBlur) {\n this.setState({ onBlur });\n }\n\n linkUrl() {\n let url = null;\n const { parentEntry, location, link, externalLink} = this.props;\n if (parentEntry) {\n let pathname;\n if(externalLink && externalLink.startsWith(\"level://\")) {\n pathname = location.pathname;\n if(pathname === \"/\") {\n pathname = \"/heute\"\n }\n pathname = pathname + externalLink.substring(8);\n } else {\n pathname = EntryUrl.getPath(parentEntry);\n } const state = {\n data: parentEntry,\n back: location.pathname,\n }\n url = {\n pathname: pathname,\n search: location.search,\n state: state,\n }\n } else if (link) {\n url = link;\n }\n return url;\n }\n\n altText() {\n const { data, } = this.props;\n const text = new AltText();\n text.append(data.subheader);\n text.append(data.header);\n text.append(data.text);\n return text.toString();\n }\n\n textSubheader() {\n const { data } = this.props;\n if (data.header && data.header.trim() !== '') {\n return data.subheader;\n } else {\n return '';\n }\n }\n\n textHeader() {\n const { data, parentEntry } = this.props;\n if (data.header && data.header.trim() !== '') {\n return data.header;\n } else if (data.subheader && data.subheader.trim() !== '') {\n return data.subheader;\n } else if (parentEntry && parentEntry.title) {\n return parentEntry.title;\n } else {\n return '';\n }\n }\n\n textText() {\n const { data } = this.props;\n return data.text;\n }\n\n _onClickImageCard() {\n if (window.FgfChannel) {\n const { parentEntry } = this.props;\n window.FgfChannel.postMessage(\"onPathChanged:/beitrag/\" +\n parentEntry.id);\n }\n }\n\n render() {\n let {\n classes, externalLink, onFocusVisible, onFocus, onBlur, manager,\n textOnly, textOnlyHeadLevelIncrement,\n } = this.props;\n const textHeadComponent = 'h' + (2 + textOnlyHeadLevelIncrement);\n if (manager) {\n onFocusVisible = this.state.onFocus;\n onBlur = this.state.onBlur;\n }\n const cardMedia = textOnly ?\n
\n \n {this.textSubheader()}\n \n \n {this.textHeader()}\n \n \n {this.textText()}\n \n
:\n { this.imageElement = element; }}\n />;\n\n let checkedExternalLink;\n if(externalLink && !externalLink.startsWith(\"level://\")) {\n checkedExternalLink = externalLink;\n\n }\n return (\n \n {cardMedia}\n \n );\n }\n}\n\nBannerCardContent.prototypes = {\n data: PropTypes.object.isRequired,\n parentEntry: PropTypes.object,\n link: PropTypes.string,\n externalLink: PropTypes.string,\n deviceSize: PropTypes.string,\n onFocusVisible: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n manager: PropTypes.object,\n textOnly: PropTypes.bool,\n textOnlyHeadLevelIncrement: PropTypes.number,\n};\n\nBannerCardContent.defaultProps = {\n imageType: 'big',\n textOnlyHeadLevelIncrement: 0,\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return ;\n});\n","export default class CarouselManager {\n constructor() {\n this.items = [];\n this.players = [];\n }\n\n setFocusHandler(handler) {\n this.focusHandler = handler;\n }\n\n setBlurHandler(handler) {\n this.blurHandler = handler;\n }\n\n addItem(item, pos) {\n if (!this.items[pos]) {\n this.items[pos] = item;\n if (this.focusHandler && item.setFocusHandler) {\n item.setFocusHandler(this.focusHandler);\n }\n if (this.blurHandler && item.setBlurHandler) {\n item.setBlurHandler(this.blurHandler);\n }\n }\n }\n\n addPlayer(item) {\n this.players.push(item);\n }\n\n clear() {\n this.items = [];\n this.players = [];\n }\n\n change(pos) {\n for (let i = 0; i < this.items.length; i += 1) {\n const item = this.items[i];\n if (item && item.setTabIndex) {\n item.setTabIndex(i === pos);\n }\n }\n for (let i = pos; i < pos + 2; i += 1) {\n const item = this.items[i];\n if (item && item.loadImage) {\n item.loadImage();\n }\n }\n for (let item of this.players) {\n if (item && item.pause) {\n item.pause();\n }\n }\n }\n}\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport Swipe from 'swipe-js-iso';\nimport isEqual from 'lodash.isequal';\n\nclass ReactSwipe extends Component {\n static propTypes = {\n swipeOptions: PropTypes.shape({\n startSlide: PropTypes.number,\n speed: PropTypes.number,\n auto: PropTypes.number,\n continuous: PropTypes.bool,\n disableScroll: PropTypes.bool,\n stopPropagation: PropTypes.bool,\n swiping: PropTypes.func,\n callback: PropTypes.func,\n transitionEnd: PropTypes.func\n }),\n style: PropTypes.shape({\n container: PropTypes.object,\n wrapper: PropTypes.object,\n child: PropTypes.object\n }),\n id: PropTypes.string,\n className: PropTypes.string,\n childCount: PropTypes.number\n };\n\n static defaultProps = {\n swipeOptions: {},\n style: {\n container: {\n overflow: 'hidden',\n visibility: 'hidden',\n position: 'relative'\n },\n wrapper: {\n overflow: 'hidden',\n position: 'relative'\n },\n child: {\n float: 'left',\n width: '100%',\n position: 'relative',\n transitionProperty: 'transform'\n }\n },\n className: '',\n childCount: 0\n };\n\n componentDidMount() {\n this.swipe = Swipe(this.containerEl, this.props.swipeOptions);\n }\n\n componentDidUpdate(prevProps) {\n const { childCount, swipeOptions } = this.props;\n const shouldUpdateSwipeInstance =\n prevProps.childCount !== childCount ||\n !isEqual(prevProps.swipeOptions, swipeOptions);\n\n if (shouldUpdateSwipeInstance) {\n this.swipe.kill();\n this.swipe = Swipe(this.containerEl, this.props.swipeOptions);\n }\n }\n\n componentWillUnmount() {\n this.swipe.kill();\n this.swipe = void 0;\n }\n\n next() {\n this.swipe.next();\n }\n\n prev() {\n this.swipe.prev();\n }\n\n slide(...args) {\n this.swipe.slide(...args);\n }\n\n getPos() {\n return this.swipe.getPos();\n }\n\n getNumSlides() {\n return this.swipe.getNumSlides();\n }\n\n render() {\n const { id, className, style, children } = this.props;\n\n return (\n (this.containerEl = el)}\n className={`react-swipe-container ${className}`}\n style={style.container}\n >\n
\n {React.Children.map(children, child => {\n if (!child) {\n return null;\n }\n\n const childStyle = child.props.style\n ? { ...style.child, ...child.props.style }\n : style.child;\n\n return React.cloneElement(child, { style: childStyle });\n })}\n
\n \n );\n }\n}\n\nexport default ReactSwipe;\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nexport default class InvisibleImg extends PureComponent {\n render() {\n const { alt } = this.props;\n const src = 'data:image/svg+xml,' +\n '%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%3E%3C/svg%3E';\n return (\n \n );\n }\n}\n\nInvisibleImg.prototypes = {\n alt: PropTypes.string.isRequired,\n};\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Grid from '@material-ui/core/Grid';\nimport IconButton from '@material-ui/core/IconButton';\nimport FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport L from '../util/L10n';\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n indicatorBox: {\n },\n indicatorCircles: {\n verticalAlign: 'middle',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: '5px',\n },\n indicatorTextBox: {\n },\n indicatorText: {\n paddingTop: 4,\n },\n inactiveButton: {\n padding: '5px',\n },\n inactive: {\n fontSize: '1.0rem',\n fontWeight: 500,\n color: '#afafaf',\n cursor: \"pointer\",\n },\n activeButton: {\n padding: '5px',\n },\n active: {\n fontSize: '1.0rem',\n fontWeight: 500,\n color: '#1aa7cc',\n cursor: \"pointer\",\n },\n arrowButton: {\n padding: '0px',\n paddingTop: '5px',\n marginLeft: '-6px',\n marginRight: '-6px',\n },\n arrow: {\n fontSize: '24px',\n fontWeight: 500,\n color: '#afafaf',\n cursor: \"pointer\",\n },\n}));\n\nclass CarouselIndicators extends PureComponent {\n render() {\n const {\n classes, count, active, onSelect, onNext, onPrev, userLang,\n isMediaSlider,\n } = this.props;\n if (count > 0) {\n let indicatorsGridElement;\n if (isMediaSlider) {\n const number = '' + (active + 1);\n const text = L.t('mediaSliderOf', userLang, { number, count });\n indicatorsGridElement =\n \n \n {text}\n \n ;\n } else {\n const indicators = [];\n for (let i = 0; i < count; i++) {\n const classNameButton = i === active ?\n classes.activeButton : classes.inactiveButton;\n const className = i === active ?\n classes.active : classes.inactive;\n const number = '' + (i + 1);\n const altText = L.t(\n i === active ? 'sliderSelectedButton_ariaLabel' :\n 'sliderSelectButton_ariaLabel',\n userLang, { number, count }\n );\n const item =\n { onSelect(i) }}\n >\n \n \n ;\n indicators.push(item);\n }\n indicatorsGridElement =\n \n {indicators}\n ;\n }\n const navigatePrevAltText = L.t('sliderPrevButton_ariaLabel',\n userLang);\n const navigateNextAltText = L.t('sliderNextButton_ariaLabel',\n userLang);\n return (\n \n \n { onPrev() }}\n >\n \n \n \n \n {indicatorsGridElement}\n \n { onNext() }}\n >\n \n \n \n \n
\n );\n } else {\n return null;\n }\n }\n}\n\nCarouselIndicators.prototypes = {\n count: PropTypes.number,\n active: PropTypes.number,\n onSelect: PropTypes.func,\n onNext: PropTypes.func,\n onPrev: PropTypes.func,\n userLang: PropTypes.string,\n isMediaSlider: PropTypes.bool,\n};\n\nCarouselIndicators.defaultProps = {\n isMediaSlider: false,\n};\n\nexport default function _CarouselIndicators(props) {\n const classes = useStyles();\n return \n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\nimport ReactSwipe from '../react-swipe/ReactSwipe';\n\nimport { makeStyles, } from \"@material-ui/core/styles\";\nimport Box from '@material-ui/core/Box';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\nimport CarouselIndicators from './CarouselIndicators';\nimport Config from '../config/ui_settings.json';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n },\n focusedCard: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n outline: '6px solid #888888',\n },\n cardFullscreen: {\n borderRadius: '8px',\n },\n cardContent: {\n padding: 0,\n },\n}));\n\nclass Carousel extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n active: 0,\n focused: false,\n };\n this.onSelect = this._onSelect.bind(this);\n this.onNext = this._onNext.bind(this);\n this.onPrev = this._onPrev.bind(this);\n this.onChange = this._onChange.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n props.manager.setFocusHandler(this.onFocus);\n props.manager.setBlurHandler(this.onBlur);\n }\n\n componentDidMount() {\n if (this.swipeHandle) {\n this.swipeHandle.swipe.setup();\n }\n }\n\n componentDidUpdate() {\n if (this.swipeHandle) {\n this.swipeHandle.swipe.setup();\n }\n }\n\n _onSelect(index) {\n if (this.swipeHandle && (index !== this.state.active)) {\n this.swipeHandle.slide(index,\n Config.carouselTransitionSpeedMillis);\n this.setState({ active: this.getActive(), })\n }\n }\n\n _onNext() {\n if (this.swipeHandle) {\n this.swipeHandle.next();\n this.setState({ active: this.getActive(), })\n }\n }\n\n _onPrev() {\n if (this.swipeHandle) {\n this.swipeHandle.prev();\n this.setState({ active: this.getActive(), })\n }\n }\n\n _onChange() {\n if (this.swipeHandle) {\n const mgr = this.props.manager;\n const pos = this.getActive();\n if (pos !== this.state.active) {\n if (mgr) {\n mgr.change(pos);\n }\n this.setState({ active: pos, })\n }\n }\n }\n\n onFocus() {\n const focused = true;\n this.setState({ focused });\n }\n\n onBlur() {\n const focused = false;\n this.setState({ focused });\n }\n\n getActive() {\n let pos = 0;\n if (this.swipeHandle) {\n pos = this.swipeHandle.getPos();\n const length = this.props.children.length;\n if (pos >= length) {\n pos -= length;\n }\n }\n return pos;\n }\n\n render() {\n const {\n classes, children, autoPlay, userLang, fullscreenVideo,\n duplicates, isMediaSlider, bgUrl,\n } = this.props;\n const { focused } = this.state;\n const classNameCard = fullscreenVideo ?\n classes.cardFullscreen :\n (focused ? classes.focusedCard : classes.card);\n const cardContentStyle = bgUrl ?\n {\n backgroundImage: 'url(' + bgUrl + ')',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n } : null;\n if (children.length > 1) {\n const swipeOptions = {\n continuous: true,\n callback: this.onChange,\n speed: Config.carouselTransitionSpeedMillis,\n auto: autoPlay ? Config.carouselAutplayIntervalMillis : undefined,\n };\n const indicators =\n ;\n return (\n \n \n \n (this.swipeHandle = hdl)}\n >\n {children}\n {children.length === 2 ? duplicates : null}\n \n \n \n {indicators}\n \n );\n } else if (children.length === 1) {\n return (\n \n \n \n {children[0]}\n \n \n \n );\n } else {\n return null;\n }\n }\n}\n\nCarousel.prototypes = {\n autoPlay: PropTypes.bool,\n fixedWith: PropTypes.number,\n entryPage: PropTypes.bool,\n userLang: PropTypes.string,\n manager: PropTypes.object,\n fullscreenVideo: PropTypes.bool,\n isMediaSlider: PropTypes.bool,\n bgUrl: PropTypes.string,\n};\n\nCarousel.defaultProps = {\n entryPage: false,\n isMediaSlider: false,\n}\n\nexport default function _Carousel(props) {\n const classes = useStyles();\n return \n}\n","import PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport Carousel from './Carousel';\n\nconst useStyles = makeStyles((theme) => ({\n}));\n\nclass ImageSlider extends PureComponent {\n render() {\n const {\n cards, autoPlay, entryPage, userLang, manager, keyValue,\n fullscreenVideo, duplicates, maxElements, isMediaSlider, bgUrl,\n } = this.props;\n if (cards.length >= 1) {\n return (\n \n {cards.slice(0, maxElements)}\n \n );\n } else {\n return null;\n }\n }\n}\n\nImageSlider.propTypes = {\n classes: PropTypes.object,\n cards: PropTypes.array.isRequired,\n autoPlay: PropTypes.bool,\n entryPage: PropTypes.bool,\n userLang: PropTypes.string,\n manager: PropTypes.object,\n keyValue: PropTypes.string,\n fullscreenVideo: PropTypes.bool,\n maxElements: PropTypes.number,\n isMediaSlider: PropTypes.bool,\n bgUrl: PropTypes.string,\n}\n\nImageSlider.defaultProps = {\n maxElements: 6,\n isMediaSlider: false,\n}\n\nexport default function _ImageSlider(props) {\n const classes = useStyles();\n const reduce = useMediaQuery('@media (prefers-reduced-motion: reduce)');\n const autoPlay = !!props.autoPlay && !reduce;\n return ;\n}\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport ImageSlider from '../carousel/ImageSlider';\n\nexport default class SliderBuilder {\n static build(cards, pos, userLang, manager, duplicates, maxElements) {\n const single =\n \n \n ;\n const double =\n \n \n ;\n return [single, double];\n }\n}\n","import React, { Fragment } from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport ImageSlider from '../carousel/ImageSlider';\n\nexport default class SectionSliderBuilder {\n static build(cards, pos, userLang, manager, title, duplicates, maxElements) {\n const single =\n \n \n {title}\n \n \n \n \n ;\n const double =\n \n \n {title}\n \n \n \n \n ;\n return [single, double];\n }\n}\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport ImageSlider from '../carousel/ImageSlider';\n\nexport default class BannerSliderBuilder {\n static build(cards, pos, userLang, manager, duplicates, maxElements,\n bgUrl) {\n const single =\n \n \n ;\n const double =\n \n \n ;\n return [single, double];\n }\n}\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nexport default class FullBuilder {\n static build(cards, pos, userLang) {\n let grids = [];\n let cardno = 0;\n for (let card of cards) {\n const single =\n \n {card}\n ;\n const double =\n \n {card}\n ;\n grids.push([single, double])\n cardno++;\n }\n return grids;\n }\n}\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport Config from '../config/ui_settings.json';\n\nexport default class SmallBuilder {\n static build(cards, pos, userLang) {\n const grids = this.buildItems(cards, pos, userLang);\n let rows = [];\n for (let i = 0; i < grids.length; i += 2) {\n const single =\n \n \n {grids[i]}\n {i + 1 < grids.length ? grids[i + 1] : null}\n \n ;\n const double =\n \n {grids[i]}\n {i + 1 < grids.length ? grids[i + 1] : null}\n \n rows.push([single, double]);\n }\n return rows;\n }\n\n static buildItems(cards, pos, userLang) {\n let grids = [];\n let cardno = 0;\n for (let card of cards) {\n grids.push(\n (\n {card}\n )\n )\n cardno++;\n }\n return grids;\n }\n}\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nexport default class BannerBuilder {\n static build(cards, pos, userLang) {\n let grids = [];\n let cardno = 0;\n for (let card of cards) {\n const single =\n \n {card}\n ;\n grids.push([single, card]);\n cardno++;\n }\n return grids;\n }\n}\n","import React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Typography from \"@material-ui/core/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n paddingTop: 10,\n fontWeight: 500,\n letterSpacing: 0,\n },\n title_white: {\n paddingTop: 0,\n fontWeight: 500,\n letterSpacing: 0,\n color: \"white\",\n\n },\n}));\n\n\n\nclass SectionTitle extends PureComponent {\n render() {\n const { title, classes, white} = this.props;\n if (title) {\n return (\n \n {title}\n \n );\n } else {\n return null;\n }\n }\n}\n\nSectionTitle.propTypes = {\n title: PropTypes.string,\n white: PropTypes.bool,\n};\n\nexport default function _SectionTitle(props) {\n const classes = useStyles();\n return ;\n}\n\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nexport default class SectionBuilder {\n static build(cards, pos, title, userLang, isColorTopic) {\n let titleGrids;\n let grids = [];\n let cardno = 0;\n let style = {};\n if (isColorTopic) {\n\n style = {\n paddingTop: 12,\n paddingBottom: 4\n }\n }\n\n let singleTitle =\n \n {title}\n ;\n let doubleTitle =\n \n {title}\n ;\n if(title == null) {\n singleTitle = null;\n doubleTitle = null;\n }\n titleGrids = [singleTitle, doubleTitle];\n for (let card of cards) {\n const single =\n \n {card}\n ;\n const double =\n \n {card}\n ;\n grids.push([single, double])\n cardno++;\n }\n return [titleGrids, grids];\n }\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport Helmet from 'react-helmet';\n\nexport default class PageHelmet extends PureComponent {\n render() {\n const {\n documentTitle, metaDescription, canonicalUrl, ogTitle,\n ogDescription, ogImage, ogLocale, ogType, ogUrl,\n ogArticlePublishedTime, ogArticleExpirationTime, noIndex,\n } = this.props;\n const descriptionEm = metaDescription ?\n : null;\n const canonicalEm = canonicalUrl ?\n : null;\n const ogTitleEm = ogTitle ?\n : null;\n const ogDescriptionEm = ogDescription ?\n : null;\n const ogImageEm = ogImage ?\n : null;\n const ogLocaleEm = ogLocale ?\n : null;\n const ogTypeEm = ogType ?\n : null;\n const ogUrlEm = ogUrl ?\n : null;\n const ogArticlePublishedTimeEm = ogArticlePublishedTime ?\n : null;\n const ogArticleExpirationTimeEm = ogArticleExpirationTime ?\n : null;\n const twTitleEm = ogTitle ?\n : null;\n const twDescriptionEm = ogDescription ?\n : null;\n const twUrlEm = ogUrl ?\n : null;\n const twImageEm = ogImage ?\n : null;\n const noIndexEm = noIndex ? : null;\n return (\n \n {documentTitle}\n {descriptionEm}\n {canonicalEm}\n {ogTitleEm}\n {ogDescriptionEm}\n {ogImageEm}\n {ogLocaleEm}\n {ogTypeEm}\n {ogArticlePublishedTimeEm}\n {ogArticleExpirationTimeEm}\n {ogUrlEm}\n \n {twTitleEm}\n {twDescriptionEm}\n {twUrlEm}\n {twImageEm}\n {noIndexEm}\n \n );\n }\n}\n\nPageHelmet.propTypes = {\n documentTitle: PropTypes.string.isRequired,\n metaDescription: PropTypes.string,\n canonicalUrl: PropTypes.string,\n ogTitle: PropTypes.string,\n ogDescription: PropTypes.string,\n ogImage: PropTypes.string,\n ogLocale: PropTypes.string,\n ogType: PropTypes.string,\n ogArticlePublishedTime: PropTypes.string,\n ogArticleExpirationTime: PropTypes.string,\n ogUrl: PropTypes.string,\n noIndex: PropTypes.bool,\n};\n","export default class CookieAccess {\n static hasMatomoCookie() {\n const cookies = document.cookie;\n return !!cookies.match(/(^|;)\\s*mtm_consent\\s*=\\s*([^;]+)/) ||\n !!cookies.match(/(^|;)\\s*mtm_consent_removed\\s*=\\s*([^;]+)/);\n }\n\n static hasConsent() {\n const cookies = document.cookie;\n return !!cookies.match(/(^|;)\\s*mtm_consent\\s*=\\s*([^;]+)/);\n }\n\n static deleteMatomoCookie() {\n document.cookie = 'mtm_consent_removed=; ' +\n 'expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'\n }\n\n static passwordCookieName(key) {\n return 'fgf_voucher_' + encodeURIComponent(key);\n }\n\n static setPasswordCookie(key, password) {\n const date = new Date(Date.now() + 86400000);\n document.cookie = this.passwordCookieName(key) + '=' +\n encodeURIComponent(password) + '; expires=' + date.toUTCString() +\n '; path=/;';\n }\n\n static deletePasswordCookie(key) {\n document.cookie = this.passwordCookieName(key) + '=; ' +\n 'expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'\n }\n\n static getPasswordCookie(key) {\n const cookies = document.cookie;\n const name = this.passwordCookieName(key);\n const regexp = '(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)';\n const result = cookies.match(new RegExp(regexp));\n if (result) {\n return result[2];\n } else {\n return null;\n }\n }\n\n static getCookieName(surveyId) {\n return \"survey:\" + surveyId;\n }\n\n static setSurveyCookie(surveyId, endDateStr) {\n let expireDate = new Date(Date.now() + 24 * 60 * 60 * 1000);\n if (endDateStr) {\n let tmpDate = new Date(endDateStr.replace(' ', 'T'));\n if (tmpDate.getTime() !== 0) {\n expireDate = tmpDate;\n }\n\n }\n document.cookie = CookieAccess.getCookieName(surveyId) + '=true;expires=' + expireDate.toUTCString() +\n '; path=/;';\n }\n\n static hasSurveyCookie(surveyId) {\n return document.cookie.split(\";\").some((item) => item.trim().startsWith(CookieAccess.getCookieName(surveyId) + \"=\"))\n }\n\n static deleteAllSurveyCookies() {\n return document.cookie.split(\";\").forEach(function (item) {\n if (item.trim().startsWith(\"survey:\")) {\n let parts = item.split(\"=\");\n if (parts.length > 0) {\n document.cookie = parts[0] + '=; ' +\n 'expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'\n }\n }\n });\n\n }\n\n\n}\n","import React, {useState} from \"react\";\n//import L from \"../util/L10n\";\nimport useResizeObserver from '@react-hook/resize-observer'\nimport TextUtil from \"../../util/TextUtil\";\nimport ButtonBase from \"@material-ui/core/ButtonBase\";\nimport \"./styles.css\";\nimport config from \"../../config/api.json\";\nimport axios from \"axios\";\nimport CookieAccess from \"../../util/CookieAccess\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Button from \"@material-ui/core/Button\";\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\n\nfunction useSize(target) {\n const [size, setSize] = React.useState();\n\n React.useLayoutEffect(() => {\n target && setSize(target.getBoundingClientRect());\n }, [target]);\n\n // Where the magic happens\n useResizeObserver(target, (entry) => setSize(entry.contentRect));\n return size;\n}\n\nfunction useZoom(target) {\n const [zoom, setZoom] = React.useState(1);\n\n React.useLayoutEffect(() => {\n if (target) {\n let zoom_w = ((window.outerWidth)\n / window.innerWidth);\n let zoom_h = ((window.outerHeight)\n / window.innerHeight);\n setZoom(zoom_w > zoom_h ? zoom_h : zoom_w);\n }\n }, [target]);\n\n // Where the magic happens\n useResizeObserver(target, (entry) => {\n let zoom_w = ((window.outerWidth)\n / window.innerWidth);\n let zoom_h = ((window.outerHeight)\n / window.innerHeight);\n setZoom(zoom_w > zoom_h ? zoom_h : zoom_w)\n })\n return zoom;\n}\n\nfunction isEnded(endDateStr) {\n if (!endDateStr) return false;\n let endDate = new Date(endDateStr.replace(' ', 'T'));\n if (endDate.getTime() === 0) {\n return false;\n }\n return new Date().getTime() > endDate.getTime();\n}\n\n\nexport default function Survey({\n /*classes,\n userLang,*/\n parentEntry,\n location,\n surveyId,\n question,\n answer_1,\n answer_2,\n answer_3,\n answer_4,\n color,\n onFontSizeChanged,\n isResult,\n endDate,\n }) {\n\n const keyPrefix = \"fahrgastfernsehen/city/survey/\";\n\n const [target, setTarget] = React.useState();\n const size = useSize(target);\n const zoom = useZoom(target);\n const [selectedAnswer, setSelectedAnswer] = useState(null);\n const [result, setResult] = useState(isResult || CookieAccess.hasSurveyCookie(surveyId) || isEnded(endDate));\n const [result1, setResult1] = useState(null);\n const [result2, setResult2] = useState(null);\n const [result3, setResult3] = useState(null);\n const [result4, setResult4] = useState(null);\n const [resultText, setResultText] = useState('Nicht repräsentatives Stimmungsbild.');\n const [showErrorDlg, setShowErrorDlg] = useState(false);\n\n\n React.useEffect(() => {\n if (result) {\n getSurveyInfo(true);\n }\n }, [result])\n\n\n let height = 0;\n let fontSize = 1;\n let fontUnit = \"px\";\n if (size) {\n height = size.height;\n //console.log(\"height: \", height);\n /*if(height < 120) {\n fontSize = height * 0.030 ;\n } else if(height < 124) {\n fontSize = height * 0.034 ;\n } else if(height < 138) {\n fontSize = height * 0.038 ;\n } else*/\n if (height < 220) {\n fontSize = height * 0.042 - (148 / (height) * 0.1);\n //console.log(\"height < 186: \", fontSize)\n\n\n } else if (height < 300) {\n fontSize = height * 0.055;\n } else if (height < 427) {\n fontSize = height * 0.055;\n } else {\n fontSize = height * 0.065 * zoom;\n }\n //fontSize = height * 0.06 * height/260 ;//((height-80) / 7) * 0.55;\n }\n if (onFontSizeChanged) {\n onFontSizeChanged(fontSize);\n }\n\n\n let backgroundStyle = {\n backgroundImage:\n 'url(' + process.env.PUBLIC_URL + '/images/background_survey.png)',\n backgroundSize: 'cover',\n backgroundColor: color,\n aspectRatio: '4/3',\n overflow: 'hidden',\n }\n\n\n let myStyle = {\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n color: 'rgb(255, 255, 255)',\n fontSize: fontSize,\n aspectRatio: '4/3',\n display: 'flex',\n flexDirection: 'column'\n };\n\n\n function renderAnswer(id, text, selected, result) {\n\n let answerStyle = {\n position: \"relative\",\n flexGrow: 1,\n paddingTop: 3 / zoom,\n paddingBottom: 3 / zoom,\n paddingLeft: 16 / zoom,\n paddingRight: 16 / zoom,\n fontSize: '' + fontSize + fontUnit,\n color: 'rgb(255, 255, 255)',\n borderRadius: 8 / zoom,\n borderColor: selected ? 'rgb(255, 255, 255)' : \"transparent\",\n borderWidth: 1,\n borderStyle: 'solid',\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n width: 'auto',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n fontFamily: 'DinforPBR'\n\n\n };\n\n let answerStyle1 = {\n position: \"relative\",\n flexGrow: 1,\n paddingTop: 0,\n paddingBottom: 1 / zoom,\n paddingLeft: 16 / zoom,\n paddingRight: 16 / zoom,\n fontSize: '' + fontSize + fontUnit,\n color: 'rgb(255, 255, 255)',\n borderRadius: 8 / zoom,\n borderColor: selected ? 'rgb(255, 255, 255)' : \"transparent\",\n borderWidth: 1,\n borderStyle: 'solid',\n //backgroundColor: 'rgb(88, 136, 73)',\n width: 'auto',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n height: '100%',\n fontFamily: 'DinforPBR',\n };\n\n\n let answer;\n if (result) {\n let rightRadius = 0;\n if (result > 98) {\n rightRadius = 8;\n }\n let inner;\n if (result) {\n inner =
\n
{text}
\n
{result + \"\\u2009%\"}
\n
\n\n } else {\n inner =
text
;\n }\n answer =\n
\n
\n
\n\n
\n {inner}\n
\n\n\n
\n } else {\n answer =
\n
\n {text}\n
\n
\n }\n\n return (\n
\n {answer}\n
\n )\n ;\n }\n\n\n let answers = []\n if (!TextUtil.isEmptyText(answer_1)) answers.push(renderAnswer(1, answer_1, selectedAnswer === answer_1 && !result, result1))\n if (!TextUtil.isEmptyText(answer_2)) answers.push(renderAnswer(2, answer_2, selectedAnswer === answer_2 && !result, result2))\n if (!TextUtil.isEmptyText(answer_3)) answers.push(renderAnswer(3, answer_3, selectedAnswer === answer_3 && !result, result3))\n if (!TextUtil.isEmptyText(answer_4)) answers.push(renderAnswer(4, answer_4, selectedAnswer === answer_4 && !result, result4))\n\n let title =\n
\n {question}\n
;\n\n function setSurveyInfo(data) {\n let result = JSON.parse(data);\n let count1 = 0;\n let count2 = 0;\n let count3 = 0;\n let count4 = 0;\n\n if (result['answer1'] && Number.isInteger(result['answer1'])) count1 = result['answer1'];\n if (result['answer2'] && Number.isInteger(result['answer2'])) count2 = result['answer2'];\n if (result['answer3'] && Number.isInteger(result['answer3'])) count3 = result['answer3'];\n if (result['answer4'] && Number.isInteger(result['answer4'])) count4 = result['answer4'];\n\n let count = count1 + count2 + count3 + count4;\n\n setResult(true);\n setResult1((count1 / count * 100).toFixed(1));\n setResult2((count2 / count * 100).toFixed(1));\n setResult3((count3 / count * 100).toFixed(1));\n setResult4((count4 / count * 100).toFixed(1));\n if (count > 500) {\n setResultText('Nicht repräsentatives Stimmungsbild, ' + count + ' Teilnehmner.');\n } else {\n setResultText('Nicht repräsentatives Stimmungsbild.');\n }\n }\n\n async function getSurveyInfo(useCache) {\n const key = keyPrefix + '/' + parentEntry.id + surveyId;\n if (useCache) {\n let data = sessionStorage.getItem(key);\n if (!isResult && data != null) {\n setSurveyInfo(data);\n return;\n }\n }\n const url = config.api_base + config.survey_info_path + '/' + parentEntry.id + '/' + surveyId;\n const response = await axios.get(url, {\n transformResponse: [(data) => {\n return data\n }],\n });\n if (response && 200 === response.status && response.data) {\n setSurveyInfo(response.data);\n sessionStorage.setItem(key, response.data);\n }\n\n }\n\n function getAnswer(answer) {\n if (!TextUtil.isEmptyText(answer) && selectedAnswer === answer) return true;\n return null;\n }\n\n function setParticipated(survey_id) {\n CookieAccess.setSurveyCookie(survey_id, endDate);\n }\n\n\n async function submitAnswer() {\n const survey_id = '' + surveyId;\n const entry_id = '' + parentEntry.id;\n const answer1 = getAnswer(answer_1);\n const answer2 = getAnswer(answer_2);\n const answer3 = getAnswer(answer_3);\n const answer4 = getAnswer(answer_4);\n const data = {survey_id, entry_id, answer1, answer2, answer3, answer4};\n const url = config.api_base + config.survey_path;\n const response = await axios.post(url, data, {\n transformResponse: [(data) => data],\n });\n if (response && 200 === response.status && response.data) {\n let json = JSON.parse(response.data);\n if (json && json.state === \"success\") {\n setParticipated(survey_id);\n return true;\n } else {\n if (json && json.state === \"error\" && json.errormessage === \"ENDED ALREADY\") {\n setShowErrorDlg(true);\n return true;\n }\n }\n }\n return false;\n }\n\n async function getResult() {\n if (await submitAnswer()) {\n await getSurveyInfo(false)\n }\n }\n\n\n let button;\n if (result) {\n button =
\n
{resultText}
\n
\n\n } else if (selectedAnswer) {\n button = \n
\n abstimmen\n
\n
\n } else {\n button =
\n
\n abstimmen\n
\n
\n\n }\n\n function handleClose() {\n setShowErrorDlg(false);\n }\n\n\n return (\n
\n \n \n Umfrage beendet\n \n \n \n An der Umfrage kann nicht mehr teilgenommen werden.\n \n \n \n \n \n \n
\n {title}\n
\n {answers}\n
\n
\n {button}\n
\n
\n
\n );\n}\n","import React, {PureComponent} from 'react';\nimport PropTypes from \"prop-types\";\n\nimport {makeStyles} from \"@material-ui/core/styles\";\n\nimport Survey from \"./survey/Survey\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport {withRouter} from \"react-router-dom\";\nimport {useMatomo} from \"@datapunt/matomo-tracker-react\";\nimport CookieAccess from \"../util/CookieAccess\";\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n borderRadius: 8,\n transform: 'translateZ(0)',\n },\n focusedCard: {\n borderRadius: 8,\n transform: 'translateZ(0)',\n outline: '6px solid #888888',\n },\n textOnlyCard: {\n borderRadius: 0,\n transform: 'translateZ(0)',\n outline: '1px solid #888888',\n },\n cardContent: {\n padding: 0,\n },\n}));\n\nclass SurveyCard extends PureComponent {\n constructor(props) {\n super(props);\n const focused = false;\n const fontSize = 16;\n this.state = { focused, fontSize };\n this.onFocus = this.onFocus.bind(this);\n this.onFontSizeChanged = this.onFontSizeChanged.bind(this);\n this.onAcceptCookie = this.onAcceptCookie.bind(this);\n this.isEnded = this.isEnded.bind(this);\n }\n\n onAcceptCookie() {\n //pushInstruction('forgetConsentGiven');\n CookieAccess.deleteMatomoCookie();\n CookieAccess.deleteAllSurveyCookies();\n //window.location.assign(window.location.pathname + window.location.search);\n this.setState({ });\n }\n\n onFocus() {\n const focused = true;\n this.setState({ focused });\n }\n\n onFontSizeChanged(newSize) {\n const fontSize = newSize;\n const thiss = this;\n setTimeout(function(){thiss.setState({ fontSize });},1);\n\n }\n\n isEnded() {\n const {data,} = this.props;\n if(!data.endDate) return false;\n let endDate = new Date(data.endDate.replace(' ', 'T'));\n if (endDate.getTime() === 0) {\n return false;\n }\n return new Date().getTime() > endDate.getTime();\n }\n\n\n render() {\n const {\n classes, data, userLang, textOnly,\n } = this.props;\n const { focused, fontSize } = this.state;\n\n let blurStyle = {};\n let cookieDiv =
;\n let cookieDiv2 =
;\n let cookieText =
\n if(!this.isEnded() && !CookieAccess.hasConsent()) {\n blurStyle = {filter: \"blur(2px)\"};\n cookieDiv =
;\n cookieDiv2 =
;\n cookieText =
\n

Um an unseren Umfragen teilnehmen zu können, erlaube der Website, Cookies zu speichern. Wir nutzen\n Cookies, um Mehrfachabstimmungen zu vermeiden. Die Entscheidung kannst Du jederzeit unter\n “Datenschutz” zurücksetzen.

\n

Cookies erlauben

\n
\n }\n return (\n \n
\n\n \n \n \n\n \n {cookieDiv2}\n\n
\n {cookieDiv}\n {cookieText}\n \n );\n }\n\n}\n\nSurveyCard.propTypes = {\n data: PropTypes.object.isRequired,\n parentEntry:PropTypes.object,\n userLang: PropTypes.string,\n};\n\n\nexport default withRouter((props) => {\n const classes = useStyles();\n const { pushInstruction } = useMatomo();\n const acceptTrackingConsent = () => {\n pushInstruction('rememberConsentGiven'); // , 9480);\n window.location.assign(window.location.pathname +\n window.location.search);\n };\n return ;\n});\n\n","import React, { Fragment, PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport CallMadeIcon from '@material-ui/icons/CallMade';\nimport PictureAsPdfIcon from '@material-ui/icons/PictureAsPdf';\nimport Divider from '@material-ui/core/Divider';\n\nimport L from '../util/L10n';\nimport InvisibleImg from '../a11y/InvisibleImg';\nimport MaybeLink from '../util/MaybeLink';\nimport TextUtil from '../util/TextUtil';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n padding: 0,\n marginTop: 16,\n marginBottom: 16,\n },\n icon: {\n minWidth: 32,\n color: '#249dc5',\n },\n text: {\n fontWeight: 500,\n fontSize: 14,\n color: '#249dc5',\n '&:hover': {\n textDecoration: 'underline',\n },\n marginTop: 0,\n },\n link: {\n '&:focus-visible': {\n outline: '2px solid #888888',\n borderRadius: 6,\n },\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n}));\n\nclass DpaLinkItem extends PureComponent {\n render() {\n const { classes, title, userLang } = this.props;\n const icon = ;\n const url = \"https://www.spiegel.de\";\n console.log(\"--------\", title);\n if (TextUtil.isEmptyText(title)) {\n return null;\n } else {\n return (\n \n \n \n \n {icon}\n \n \n \n {title}\n \n \n \n \n \n );\n }\n }\n}\n\nDpaLinkItem.propTypes = {\n title: PropTypes.string,\n userLang: PropTypes.string,\n};\n\nexport default function _DpaLinkItem(props) {\n const classes = useStyles();\n return ;\n}\n","import React from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\nimport Divider from \"@material-ui/core/Divider\";\nimport DpaLinkItem from \"../cards/DpaLinkItem\";\nimport Paper from \"@material-ui/core/Paper\";\n\nexport default class DpaHeadlinesSectionBuilder {\n static build(pos, title, dpaData) {\n let titleGrids;\n let grids = [];\n let cardno = 0;\n let style = {};\n\n\n let singleTitle =\n \n {title}\n ;\n let doubleTitle =\n \n {title}\n ;\n if (title == null) {\n singleTitle = null;\n doubleTitle = null;\n }\n titleGrids = [singleTitle, doubleTitle];\n console.log(\"--------------\", dpaData)\n\n let styleParent = {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n height: \"100%\",\n alignItems: \"center\"\n }\n let stylePadding = {\n paddingTop: 0,\n paddingBottom: 8,\n\n }\n\n for (let dpaEntry of dpaData) {\n if (cardno > 5) break;\n var card = ;\n if (cardno === 0) {\n card = ;\n }\n\n const single = cardno > 2 ? null :\n \n
\n
\n {card}\n
\n \n
\n ;\n const double1 =\n \n \n
\n
\n {card}\n
\n \n
\n
\n ;\n\n let text = dpaEntry.title;\n if (cardno === 0) {\n text = \"adekfjasd jdadsjöf s asdf asö kadsöf jiasdp4rijgn aädf aäa aä aäf af adekfjasd jdadsjöf s asdf asö kadsöf jiasdp4rijgn aädf aäa aä aäf af \";\n }\n const double = \n
\n
{card}
\n \n\n
\n \n grids.push([single, double]);\n\n\n cardno++;\n }\n\n return [titleGrids, grids];\n }\n}\n","import React, {Fragment, PureComponent} from \"react\";\nimport {withRouter} from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from '@material-ui/core/Box';\nimport Grid from \"@material-ui/core/Grid\";\nimport {makeStyles, useTheme} from \"@material-ui/core/styles\";\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport {useMatomo} from '@datapunt/matomo-tracker-react';\n\nimport ImageCard from \"./cards/ImageCard\";\nimport getViewData from \"./data/ViewReader\";\nimport headViewData from \"./data/ViewReaderWithHeadRequest\";\nimport L from \"./util/L10n\";\nimport Columns from './teaserlayout/Columns';\nimport WifiGridItem from './components/WifiGridItem';\nimport PageTitleItem from './components/PageTitleItem';\nimport CarouselImageItem from './carousel/CarouselImageItem';\nimport CarouselBannerItem from './carousel/CarouselBannerItem';\nimport ImageCardContent from './cards/ImageCardContent';\nimport BannerCardContent from './cards/BannerCardContent';\nimport CarouselManager from './carousel/CarouselManager';\nimport SliderBuilder from './teaserlayout/SliderBuilder';\nimport SectionSliderBuilder from './teaserlayout/SectionSliderBuilder';\nimport BannerSliderBuilder from \"./teaserlayout/BannerSliderBuilder\";\nimport FullBuilder from './teaserlayout/FullBuilder';\nimport SmallBuilder from './teaserlayout/SmallBuilder';\nimport BannerBuilder from './teaserlayout/BannerBuilder';\nimport SectionTitle from './teaserlayout/SectionTitle';\nimport SectionBuilder from \"./teaserlayout/SectionBuilder\";\nimport PageHelmet from './util/PageHelmet';\nimport ImageResizerUrl from './util/ImageResizerUrl';\n\nimport Config from './config/ui_settings.json';\nimport CanonicalUrl from \"./util/CanonicalUrl\";\nimport SurveyCard from \"./cards/SurveyCard\";\nimport DpaHeadlinesSectionBuilder from \"./teaserlayout/DpaHeadlinesSectionBuilder\";\n\nconst useStyles = makeStyles((theme) => ({}));\n\nclass Section {\n color = null;\n title = null;\n postions = [];\n\n}\n\nclass TeaserPage extends PureComponent {\n constructor(props) {\n super(props);\n const historyState = props.location.state || {};\n const {lastModified, dpaLastModified} = historyState;\n let {data, dpaData} = historyState;\n if (data && !(typeof data[Symbol.iterator] === 'function')) {\n data = null;\n }\n if (dpaData && !(typeof dpaData[Symbol.iterator] === 'function')) {\n dpaData = null;\n }\n let level;\n if (props.routing) {\n level = props.routing.match.params.level;\n }\n\n this.state = {\n level: level,\n error: null,\n data: data || null,\n dpaData: dpaData || null,\n lastModified: lastModified || null,\n dpaLastModified: dpaLastModified || null,\n userLang: props.userLang,\n };\n this.onDataReceived = this._onDataReceived.bind(this);\n this.onDpaDataReceived = this._onDpaDataReceived.bind(this);\n }\n\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n this.load();\n }\n\n componentDidUpdate() {\n if (this.state.userLang !== this.props.userLang) {\n this.setState({userLang: this.props.userLang,});\n this.load();\n }\n }\n\n load() {\n const {\n name, appServerPort, previewToken, previewDate,\n } = this.props;\n const {level, data, dpaData, lastModified, dpaLastModified} = this.state;\n const lang = 'de';\n let path = name;\n if (level) {\n path = level;\n }\n if (!data) {\n getViewData(path, lang, this.onDataReceived,\n appServerPort, previewToken,\n previewDate).catch((error) => {\n //console.log(error)\n this.setState({error: error})\n });\n } else {\n headViewData(path, lang, this.onDataReceived,\n appServerPort, previewToken,\n previewDate, lastModified).catch((error) => {\n //console.log(error)\n this.setState({error: error})\n });\n }\n /*\n if (!dpaData) {\n getViewData(\"dpaposts\", lang, this.onDpaDataReceived,\n appServerPort, previewToken,\n previewDate).catch((error) => {\n //console.log(error)\n this.setState({error: error})\n });\n } else {\n headViewData(\"dpaposts\", lang, this.onDpaDataReceived,\n appServerPort, previewToken,\n previewDate, dpaLastModified).catch((error) => {\n //console.log(error)\n this.setState({error: error})\n });\n }\n */\n\n }\n\n _onDataReceived(data, lastModified) {\n const {history, location} = this.props;\n const state = location.state || {};\n state.data = data;\n state.lastModified = lastModified;\n history.replace({state});\n this.setState({data: data, lastModified: lastModified, error: null})\n }\n\n _onDpaDataReceived(dpaData, dpaLastModified) {\n const {history, location} = this.props;\n const state = location.state || {};\n state.dpaData = dpaData;\n state.dpaLastModified = dpaLastModified;\n history.replace({state});\n this.setState({dpaData: dpaData, dpaLastModified: dpaLastModified, error: null})\n }\n\n render() {\n const {userLang,} = this.props;\n if (this.state.error) {\n return (\n \n {this.buildHeader()}\n \n \n \n {L.t('msgTeaserPageFailed', userLang)}\n \n \n \n \n );\n } else if (this.state.data) {\n return (\n
\n {this.renderContent()}\n
\n\n );\n } else {\n return (\n \n {this.buildHeader()}\n \n \n \n {L.t('msgTeaserPageLoading', userLang)}\n \n \n \n \n );\n }\n }\n\n renderContent() {\n const {twoColumnLayout, textOnly} = this.props;\n let result = [];\n let sections = this.buildSections(this.state.data);\n result.push((\n \n {this.buildHeader()}\n \n ));\n\n let extraPadding = 16;\n let firstSection = true;\n for (let section of sections) {\n const columns = this.buildPositions(section.postions);\n let style\n\n if (section.color == null) {\n if (section.title != null && section.title.trim().length > 0) {\n style = {\n backgroundColor: \"transparent\",\n paddingLeft: extraPadding,\n paddingRight: extraPadding,\n paddingBottom: 0,\n paddingTop: firstSection ? 8 : 0,\n marginLeft: -8 - extraPadding,\n marginRight: -8 -extraPadding,\n width: \"calc(100% + \"+ (16 + 2 * extraPadding) + \"px)\",\n };\n } else {\n style = {\n backgroundColor: \"transparent\",\n paddingLeft: extraPadding,\n paddingRight: extraPadding,\n paddingTop: firstSection ? 12 : 0,\n marginLeft: -8 - extraPadding,\n marginRight: -8 - extraPadding,\n width: \"calc(100% + \"+ (16 + 2 * extraPadding) + \"px)\",\n };\n }\n\n\n } else {\n if (section.title != null && section.title.trim().length > 0) {\n style = {\n backgroundColor: section.color,\n paddingLeft: extraPadding,\n paddingRight: extraPadding,\n paddingBottom: extraPadding,\n borderRadius: twoColumnLayout ? extraPadding : 0,\n marginTop: 8 + extraPadding,\n marginBottom: 8 + extraPadding,\n marginLeft: -8 - extraPadding,\n marginRight: -8 - extraPadding,\n width: \"calc(100% + \"+ (16 + 2 * extraPadding) + \"px)\",\n };\n } else {\n style = {\n backgroundColor: section.color,\n padding: extraPadding,\n borderRadius: twoColumnLayout ? extraPadding : 0,\n marginTop: 8 + extraPadding,\n marginBottom: 8 + extraPadding,\n marginLeft: -8 - extraPadding,\n marginRight: -8 - extraPadding,\n width: \"calc(100% + \"+ (16 + 2 * extraPadding) + \"px)\",\n };\n }\n\n }\n result.push((\n \n {(twoColumnLayout && !textOnly) ? columns.getDouble() : columns.getSingle()}\n \n ));\n firstSection = false;\n }\n return result;\n\n }\n\n buildHeader() {\n const {\n showWifiLogin, name, previewToken, previewDate,\n userLang, updateUserLang, documentTitle,\n } = this.props;\n const {\n description, canonicalUrl, ogImage, ogLocale, ogType, levelTitle, searchable,\n } = this.buildMetaData();\n const wifiElement = showWifiLogin ?\n : null;\n\n\n return (\n \n \n {wifiElement}\n \n \n );\n }\n\n buildMetaData() {\n const {name, userLang} = this.props;\n const {level} = this.state;\n let description = L.t(name + 'TeaserPageDescription', userLang);\n const paths = {\n 'start': '/',\n 'line': '/linie',\n 'events': '/vorschau',\n 'prizes': '/aktion',\n 'deals': '/deal',\n };\n let canonicalUrl;\n let levelTitle;\n let searchable = true;\n if (name === \"level\" && this.props.routing) {\n canonicalUrl = this.props.routing.location.pathname;\n if (level && this.props.tabsMeta && this.props.tabsMeta[level]) {\n levelTitle = this.props.tabsMeta[level].title;\n description = this.props.tabsMeta[level].description;\n searchable = this.props.tabsMeta[level].searchable;\n }\n } else {\n canonicalUrl = CanonicalUrl.get(paths[name]);\n }\n let ogImage = undefined;\n if (this.state.data) {\n let found = false;\n for (let position of this.state.data) {\n if (position.entries) {\n for (let entry of position.entries) {\n for (let kachel of entry.kacheln) {\n if (!found && \"uestra/altkachel\" === kachel.type &&\n 'big' === kachel.teaser && kachel.mediaURL) {\n ogImage = kachel.mediaURL;\n found = true;\n }\n }\n }\n }\n }\n }\n // TODO The content locale is fixed to German, therefore, the locale\n // if fixed here, too.\n const ogLocale = 'de_DE';\n const ogType = 'website';\n return {description, canonicalUrl, ogImage, ogLocale, ogType, levelTitle, searchable};\n }\n\n buildSections(positions) {\n let sections = [];\n let section = new Section();\n for (let position of positions) {\n if (\"colortopic\" === position.type) {\n if (section.postions.length > 1) {\n sections.push(section);\n } else if(section.postions.length === 1 && section.color == null) {\n section.title = null;\n sections.push(section);\n }\n section = new Section();\n section.color = position.color;\n section.title = position.title;\n section.postions.push(position);\n } else if (\"dpaheadlines\" === position.type) {\n if (section.postions.length > 1) {\n sections.push(section);\n section = new Section();\n }\n section.title = position.title;\n section.postions.push(position);\n sections.push(section);\n section = new Section();\n } else {\n section.postions.push(position);\n }\n }\n if (section.postions.length > 1) {\n sections.push(section);\n } else if(section.postions.length === 1 && section.color == null) {\n section.title = null;\n sections.push(section);\n\n }\n return sections;\n }\n\n buildPositions(positions) {\n const {\n textOnly, sliderMaxElements, sectionSliderMaxElements,\n } = this.props;\n const columns = new Columns();\n let pos = 0;\n for (let position of positions) {\n if (position.type) {\n if (\"slider\" === position.type && position.entries) {\n if (textOnly) {\n columns.addFull(this.buildFull(position.entries,\n pos, 'big', sliderMaxElements));\n } else {\n columns.addSlider(this.buildSlider(position.entries,\n pos, sliderMaxElements));\n }\n } else if (\"full\" === position.type && position.entries) {\n columns.addFull(this.buildFull(position.entries,\n pos, 'big', 0));\n } else if (\"small\" === position.type && position.entries) {\n if (textOnly) {\n columns.addFull(this.buildFull(position.entries,\n pos, 'big', 0));\n } else {\n columns.addSmall(this.buildSmall(position.entries,\n pos), position.entries.length);\n }\n } else if (\"banner\" === position.type && position.entries) {\n if (textOnly) {\n columns.addFull(this.buildFull(position.entries,\n pos, 'big', 0));\n } else {\n columns.addBanner(this.buildBanner(position.entries,\n pos, 'banner'));\n }\n } else if (\"colortopic\" === position.type) {\n columns.addSection(this.buildColorTopic(\n pos, position.title, position.color));\n } else if (\"rubrik\" === position.type && position.entries) {\n columns.addSection(this.buildSection(position.entries,\n pos, position.title, 0));\n } else if (false && \"dpaheadlines\" === position.type && this.state.dpaData) {\n columns.addSection(this.buildDpaHeadlinesSection(\n pos, position.title, this.state.dpaData));\n } else if (\"rublikslider\" === position.type &&\n position.entries) {\n if (textOnly) {\n columns.addSection(this.buildSection(position.entries,\n pos, position.title, sectionSliderMaxElements));\n } else {\n columns.addSectionSlider(this.buildSectionSlider(\n position.entries, pos, position.title,\n sectionSliderMaxElements));\n }\n } else if (position.type === \"bslider\" && position.entries) {\n if (textOnly) {\n columns.addFull(this.buildFull(position.entries,\n pos, 'big', sliderMaxElements));\n } else {\n columns.addSlider(this.buildBannerSlider(\n position.entries, pos, sliderMaxElements,\n position.bgurl\n ));\n }\n } else {\n // console.warn('Unhandled position type', position.type,\n // 'with', (position.entries ? position.entries.length :\n // 'no'), 'entries');\n // console.warn('pos', pos);\n // console.warn('position', position);\n }\n }\n pos++;\n }\n columns.finish();\n return columns;\n }\n\n getSurvey(entry) {\n for (let kachel of entry.kacheln) {\n if (\"uestra/survey\" === kachel.type) {\n return kachel\n }\n }\n return null;\n }\n\n buildCards(entries, pos, teaserType, levelIncrement, maxCards) {\n const {userLang, deviceSize, textOnly} = this.props;\n let cards = [];\n if (maxCards === 0) {\n for (let entry of entries) {\n let survey = this.getSurvey(entry);\n if (survey && survey.onStartpage) {\n cards.push();\n return cards;\n }\n }\n }\n\n\n let cardno = 0;\n for (let entry of entries) {\n const externalLink = entry.external_link;\n let found = false;\n for (let kachel of entry.kacheln) {\n if (!found && \"uestra/altkachel\" === kachel.type &&\n teaserType && teaserType === kachel.teaser &&\n kachel.mediaURL &&\n (maxCards === 0 || cardno < maxCards)) {\n found = true;\n cards.push(\n \n );\n cardno++;\n }\n }\n }\n return cards;\n }\n\n buildSlider(entries, pos, maxElements) {\n const cardsMgr = this.buildSliderCards(entries, pos, 'big');\n return SliderBuilder.build(cardsMgr[0], pos, this.props.userLang,\n cardsMgr[1], cardsMgr[2], maxElements);\n }\n\n buildSectionSlider(entries, pos, title, maxElements) {\n const sectionTitle = ;\n const cardsMgr = this.buildSliderCards(entries, pos, 'big');\n return SectionSliderBuilder.build(cardsMgr[0], pos, this.props.userLang,\n cardsMgr[1], sectionTitle, cardsMgr[2], maxElements);\n }\n\n buildBannerSlider(entries, pos, maxElements, bgUrl) {\n const {deviceSize} = this.props;\n const resizedBgUrl = bgUrl ?\n ImageResizerUrl.getResizeURL(bgUrl, 'big', deviceSize) : null;\n const cardsMgr = this.buildBannerSliderCards(entries, pos,\n resizedBgUrl);\n return BannerSliderBuilder.build(cardsMgr[0], pos, this.props.userLang,\n cardsMgr[1], cardsMgr[2], maxElements, resizedBgUrl);\n }\n\n buildSliderCards(entries, pos, teaserType) {\n const {userLang, deviceSize,} = this.props;\n let kacheln = [];\n for (let entry of entries) {\n const externalLink = entry.external_link;\n let found = false;\n for (let kachel of entry.kacheln) {\n if (!found && \"uestra/altkachel\" === kachel.type &&\n teaserType && teaserType === kachel.teaser &&\n kachel.mediaURL) {\n found = true;\n const entity = {\n data: kachel,\n parentEntry: entry,\n externalLink: externalLink,\n }\n kacheln.push(entity);\n }\n }\n }\n const cards = [];\n const mgr = new CarouselManager();\n const duplicates = [];\n let cardno = 0;\n if (kacheln.length === 1) {\n const kachel = kacheln[0];\n cards.push(\n \n );\n } else {\n for (let kachel of kacheln) {\n cards.push(\n \n );\n duplicates.push(\n \n );\n cardno++;\n }\n }\n return [cards, mgr, duplicates.slice(0, 2)];\n }\n\n buildBannerSliderCards(entries, pos, bgUrl) {\n const {userLang, deviceSize,} = this.props;\n let kacheln = [];\n for (let entry of entries) {\n const externalLink = entry.external_link;\n let found = false;\n for (let kachel of entry.kacheln) {\n if (!found && \"uestra/altkachel\" === kachel.type &&\n kachel.teaser === 'banner' &&\n kachel.mediaURL) {\n found = true;\n const entity = {\n data: kachel,\n parentEntry: entry,\n externalLink: externalLink,\n }\n kacheln.push(entity);\n }\n }\n }\n const cards = [];\n const mgr = new CarouselManager();\n const duplicates = [];\n let cardno = 0;\n if (kacheln.length === 1) {\n const kachel = kacheln[0];\n cards.push(\n \n );\n } else {\n for (let kachel of kacheln) {\n cards.push(\n \n );\n duplicates.push(\n \n );\n cardno++;\n }\n }\n return [cards, mgr, duplicates.slice(0, 2)];\n\n }\n\n buildFull(entries, pos, teaserType, maxCards) {\n const {userLang} = this.props;\n const cards = this.buildCards(entries, pos, teaserType, 0, maxCards);\n return FullBuilder.build(cards, pos, userLang);\n }\n\n buildSmall(entries, pos) {\n const {userLang} = this.props;\n const cards = this.buildCards(entries, pos, 'small', 0, 0);\n return SmallBuilder.build(cards, pos, userLang);\n }\n\n buildBanner(entries, pos, teaserType) {\n const {userLang} = this.props;\n const cards = this.buildCards(entries, pos, teaserType, 0, 0);\n return BannerBuilder.build(cards, pos, userLang);\n }\n\n buildSection(entries, pos, title, maxCards) {\n const { userLang } = this.props;\n const sectionTitle = ;\n const cards = this.buildCards(entries, pos, 'big', 1, maxCards);\n return SectionBuilder.build(cards, pos, sectionTitle, userLang);\n }\n\n buildDpaHeadlinesSection(pos, title, dpaData) {\n const { userLang } = this.props;\n if(!title) title = \"Dpa Schlagzeilen\";\n const sectionTitle = ;\n return DpaHeadlinesSectionBuilder.build(pos, sectionTitle, dpaData);\n }\n\n buildColorTopic(pos, title, color) {\n const {userLang} = this.props;\n let white = true;\n if (color === \"#e0e0e0\" || !color) {\n white = false;\n }\n let sectionTitle = null;\n if (title != null && title.length > 0) {\n sectionTitle = ;\n }\n\n return SectionBuilder.build([], pos, sectionTitle, userLang, true);\n }\n}\n\nTeaserPage.propTypes = {\n classes: PropTypes.object,\n name: PropTypes.string.isRequired,\n twoColumnLayout: PropTypes.bool,\n showWifiLogin: PropTypes.bool,\n appServerPort: PropTypes.number,\n previewToken: PropTypes.string,\n previewDate: PropTypes.string,\n userLang: PropTypes.string,\n updateUserLang: PropTypes.func,\n deviceSize: PropTypes.string,\n documentTitle: PropTypes.string,\n textOnly: PropTypes.bool,\n sliderMaxElements: PropTypes.number,\n sectionSliderMaxElements: PropTypes.number,\n routing: PropTypes.object,\n tabsMeta: PropTypes.object,\n}\n\nTeaserPage.defaultProps = {\n sliderMaxElements: 10,\n sectionSliderMaxElements: 10,\n}\n\nexport default withRouter((props) => {\n const classes = useStyles();\n const theme = useTheme();\n const isLandscape = useMediaQuery('@media (orientation: landscape)');\n const isWideScreen =\n useMediaQuery(theme.breakpoints.up(Config.teaserWidescreenMinWidth));\n const twoColumnLayout = isLandscape || isWideScreen;\n let documentTitle = L.t(props.name + 'TeaserPageTitle', props.userLang) +\n ' - ' + L.t('appTitle', props.userLang);\n var level;\n if (props.routing) {\n level = props.routing.match.params.level;\n }\n if (level && props.tabsMeta && props.tabsMeta[level]) {\n documentTitle = props.tabsMeta[level].title +\n ' - ' + L.t('appTitle', props.userLang)\n }\n const {trackPageView,} = useMatomo();\n React.useEffect(() => {\n trackPageView({documentTitle,});\n }, [trackPageView, documentTitle]);\n return ;\n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Typography from '@material-ui/core/Typography';\nimport Box from '@material-ui/core/Box';\nimport Grid from '@material-ui/core/Grid';\n\nimport Config from '../config/ui_settings.json';\n\nexport default class EntryPageLoading extends PureComponent {\n render() {\n const { message } = this.props;\n return (\n \n \n \n \n {message}\n \n \n \n \n );\n }\n}\n\nEntryPageLoading.propTypes = {\n message: PropTypes.string,\n};\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport Hls from 'hls.js';\n\nexport default class HLSSource extends PureComponent {\n constructor(props, context) {\n super(props, context);\n this._setupHls();\n this.levels = null;\n this.videoQuality = props.videoQuality;\n this.load = this._load.bind(this);\n this.getLevels = this._getLevels.bind(this);\n this.setMaxWidth = this._setMaxWidth.bind(this);\n }\n\n _setupHls() {\n const config = {\n autoStartLoad: false,\n maxMaxBufferLength: 10, // This defaults to 10 minutes, rendering level selection after start virtually useless.\n //capLevelToPlayerSize: true, // Cap to player size, would result in bad quality\n //startLevel: 1, // select start level, but level will increase automatically unless captoplayer eg. enabled.\n }\n this.hls = new Hls(config);\n }\n\n _initHls() {\n const { src, video, videoQuality, } = this.props;\n if (Hls.isSupported()) {\n this.hls.on(Hls.Events.MANIFEST_PARSED, () => {\n this.levels = this.hls.levels;\n this.setMaxWidth(videoQuality);\n });\n this.hls.loadSource(src);\n this.hls.attachMedia(video);\n video.addEventListener('play', this.load);\n }\n }\n\n componentDidMount() {\n this._initHls();\n }\n\n reset() {\n this._setupHls();\n this._initHls();\n }\n\n componentDidUpdate() {\n const { videoQuality, } = this.props;\n if (this.videoQuality !== videoQuality) {\n this.setMaxWidth(videoQuality);\n this.videoQuality = videoQuality;\n }\n }\n\n _load() {\n if (this.hls)\n this.hls.startLoad();\n }\n\n _getLevels() {\n return this.levels;\n }\n\n _setMaxWidth(maxWidth) {\n if (this.levels && this.levels.length > 0) {\n const levels = this.hls.levels\n let selectedLevel = 0;\n let selectedWidth = levels[0].width;\n for (let i = 1; i < levels.length; i++) {\n if (maxWidth >= levels[i].width &&\n selectedWidth < levels[i].width) {\n selectedLevel = i;\n selectedWidth = levels[i].width;\n }\n }\n this.hls.autoLevelCapping = selectedLevel;\n }\n }\n\n componentWillUnmount() {\n if (this.hls) {\n this.hls.destroy();\n }\n }\n\n render() {\n const { src, type, } = this.props;\n return (\n \n );\n }\n}\n\nHLSSource.propTypes = {\n src: PropTypes.string,\n type: PropTypes.string,\n videoQuality: PropTypes.number,\n};\n\nHLSSource.defaultProps = {\n type: 'application/x-mpegURL',\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nimport PopupState, { bindTrigger, bindMenu, } from 'material-ui-popup-state'\n\nconst useStyles = makeStyles((theme) => ({\n settingsIcon: {\n fontSize: 'medium',\n },\n menuItem: {\n fontFamily: 'DinforPBR',\n fontWeight: 500,\n fontSize: 14,\n color: 'rgba(255,255,255,0.6)',\n height: 48,\n opacity: 0.72,\n borderTop: '1px solid rgba(255,255,255,0.32)',\n '&:hover': {\n color: '#ffffff',\n },\n '&:focus-visible': {\n color: '#ffe900',\n },\n },\n selectedMenuItem: {\n fontFamily: 'DinforPBR',\n fontWeight: 500,\n fontSize: 14,\n borderTop: '1px solid rgba(255,255,255,0.32)',\n color: '#ffffff',\n height: 48,\n opacity: 0.72,\n '&:focus-visible': {\n color: '#ffe900',\n },\n },\n menuPaper: {\n borderRadius: 4,\n backgroundColor: 'rgba(0,0,0,0.72)',\n border: '1px solid rgba(255,255,255,0.32)',\n },\n menuList: {\n padding: 0,\n },\n button: {\n filter: 'brightness(70%)',\n '&:hover': {\n filter: 'brightness(100%)',\n },\n '&:focus': {\n filter: 'brightness(100%)',\n },\n },\n}));\n\nclass QualityButton extends PureComponent {\n render() {\n const {\n classes, levels, videoQuality, qualityCallback, visible,\n } = this.props;\n const buttonClassName = 'video-react-button video-react-control ' +\n classes.button;\n if (!visible) {\n return null;\n }\n return (\n \n {(popupState) => {\n const menuItems = levels.map((lvl) => {\n return (\n {\n qualityCallback(lvl.width);\n popupState.close();\n }}\n >{lvl.label}\n );\n });\n return (\n \n \n \n \n \n {menuItems}\n \n \n );\n }}\n \n );\n }\n}\n\nQualityButton.propTypes = {\n levels: PropTypes.array.isRequired,\n videoQuality: PropTypes.number,\n qualityCallback: PropTypes.func.isRequired,\n visible: PropTypes.bool,\n};\n\nexport default function _QualityButton(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport '../../node_modules/video-react/dist/video-react.css';\nimport { Player, BigPlayButton, ControlBar } from 'video-react';\n\nimport HLSSource from './HLSSource';\nimport QualityButton from './QualityButton';\nimport L from \"../util/L10n\";\n\nconst useStyles = makeStyles((theme) => ({\n controlbar: {\n fontFamily: 'DinforPBR',\n },\n}));\n\nclass VideoPlayer extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n levels: [\n { label: L.t('videoPlayerLQ', props.userLang), width: 640, },\n { label: L.t('videoPlayerMQ', props.userLang), width: 960, },\n { label: L.t('videoPlayerHQ', props.userLang), width: 1280, },\n ],\n hasStarted: false,\n resetting: false,\n isFullscreen: false,\n };\n this.pause = this._pause.bind(this);\n this.setQuality = this._setQuality.bind(this);\n this.handleStateChg = this._handleStateChg.bind(this);\n this.reset = this._reset.bind(this);\n }\n\n componentDidMount() {\n const { manager, } = this.props;\n if (manager) {\n manager.addPlayer(this);\n }\n if (this.player) {\n this.player.subscribeToStateChange(this.handleStateChg);\n }\n }\n\n componentDidUpdate() {\n const { manager, } = this.props;\n if (manager) {\n manager.addPlayer(this);\n }\n }\n\n _pause() {\n if (this.player) {\n this.player.pause();\n }\n }\n\n _setQuality(width) {\n if (this.source) {\n this.source.setMaxWidth(width);\n }\n this.props.videoQualityCallback(width);\n }\n\n _handleStateChg(state, prevState) {\n if (state && state.hasStarted) {\n if (!this.state.hasStarted && !this.state.resetting) {\n this.setState({ hasStarted: true, });\n if (window._fgf_player) {\n if (this !== window._fgf_player) {\n window._fgf_player.reset();\n window._fgf_player = this;\n }\n } else {\n window._fgf_player = this;\n }\n this.props.trackVideoStart();\n }\n }\n if (state && !state.hasStarted) {\n if (this.state.resetting) {\n this.setState({ hasStarted: false, resetting: false, });\n }\n }\n if (state && state.isFullscreen !== this.state.isFullscreen) {\n this.props.fullscreenVideoCallback(state.isFullscreen);\n this.setState({ isFullscreen: state.isFullscreen, });\n }\n }\n\n _reset() {\n this.setState({ resetting: true, });\n if (this.player) {\n this.player.pause();\n }\n if (this.source) {\n this.source.reset();\n }\n if (this.player) {\n this.player.load();\n }\n }\n\n componentWillUnmount() {\n if (this === window._fgf_player) {\n window._fgf_player = null;\n }\n }\n\n render() {\n const {\n classes, url, preview, aspectRatio, videoQuality, playsInline,\n } = this.props;\n // TODO Handle altText.\n return (\n {\n this.player = player;\n }}\n >\n \n \n \n \n {\n this.source = src;\n }}\n />\n \n );\n }\n}\n\nVideoPlayer.propTypes = {\n url: PropTypes.string,\n preview: PropTypes.string,\n altText: PropTypes.string,\n aspectRatio: PropTypes.string,\n manager: PropTypes.object,\n sliderItem: PropTypes.number,\n videoQuality: PropTypes.number,\n videoQualityCallback: PropTypes.func,\n fullscreenVideoCallback: PropTypes.func,\n playsInline: PropTypes.bool,\n trackVideoStart: PropTypes.func.isRequired,\n userLang: PropTypes.string,\n};\n\nVideoPlayer.defaultProps = {\n aspectRatio: '4:3',\n};\n\nexport default function _VideoPlayer(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const _onVideoStart = () => {\n trackEvent({\n category: 'video',\n action: 'play',\n name: props.url,\n });\n return true;\n };\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport VideoPlayer from '../video/VideoPlayer';\nimport AltText from '../util/AltText';\n\nclass VideoCardContent extends PureComponent {\n getUrl(data) {\n if (data && data.mediaURL) {\n return data.mediaURL + '-high.m3u8';\n } else {\n return null;\n }\n }\n\n altText(data) {\n const text = new AltText();\n text.append(data.subheader);\n text.append(data.header);\n text.append(data.text);\n return text.toString();\n }\n\n render() {\n const {\n data, manager, sliderItem, videoQuality, videoQualityCallback,\n fullscreenVideoCallback, playsInline, userLang,\n } = this.props;\n const url = this.getUrl(data);\n const preview = data.previewMediaURL;\n const altText = this.altText(data);\n if (url) {\n return (\n \n );\n } else {\n return null;\n }\n }\n}\n\nVideoCardContent.prototypes = {\n data: PropTypes.object.isRequired,\n manager: PropTypes.object,\n sliderItem: PropTypes.number,\n videoQuality: PropTypes.number,\n videoQualityCallback: PropTypes.func,\n fullscreenVideoCallback: PropTypes.func,\n playsInline: PropTypes.bool,\n userLang: PropTypes.string,\n};\n\nexport default function _VideoCardContent(props) {\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\nimport VideoCardContent from './VideoCardContent';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n },\n cardFullscreen: {\n borderRadius: '8px',\n },\n cardContent: {\n padding: 0,\n backgroundColor: '#000000',\n },\n}));\n\nclass VideoCard extends PureComponent {\n render() {\n const {\n classes, data, videoQuality, videoQualityCallback,\n fullscreenVideo, fullscreenVideoCallback, userLang,\n } = this.props;\n return (\n \n \n \n \n \n );\n }\n}\n\nVideoCard.propTypes = {\n data: PropTypes.object.isRequired,\n videoQuality: PropTypes.number,\n videoQualityCallback: PropTypes.func,\n fullscreenVideo: PropTypes.bool,\n fullscreenVideoCallback: PropTypes.func,\n userLang: PropTypes.string,\n};\n\nexport default function _VideoCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport ButtonBase from '@material-ui/core/ButtonBase';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nconst useStyles = makeStyles((theme) => ({\n audio: {\n width: '100%',\n display: 'block',\n '&::-webkit-media-controls': {\n backgroundColor: '#ffffff',\n },\n '&::-webkit-media-controls-panel': {\n backgroundColor: '#ffffff',\n },\n },\n buttonBase: {\n display: 'block',\n },\n}));\n\nclass Audioplayer extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n hasStarted: false,\n }\n this.onPlay = this.onPlay.bind(this);\n }\n\n onPlay() {\n const { trackAudioStart } = this.props;\n const { hasStarted } = this.state;\n if (!hasStarted) {\n this.setState({ hasStarted: true });\n trackAudioStart();\n }\n }\n\n render() {\n const { url, altText, classes, onFocus, onBlur } = this.props;\n return (\n \n \n {altText}\n \n \n );\n }\n}\n\nAudioplayer.prototypes = {\n url: PropTypes.string,\n altText: PropTypes.string,\n userLang: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n trackAudioStart: PropTypes.func.isRequired,\n // manager: PropTypes.object,\n // sliderItem: PropTypes.number,\n};\n\nexport default function _Audioplayer(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const _onAudioStart = () => {\n trackEvent({\n category: 'audio',\n action: 'play',\n name: props.url,\n });\n return true;\n };\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport AudioPlayer from '../audio/AudioPlayer';\nimport AltText from '../util/AltText';\n\nclass AudioCardContent extends PureComponent {\n altText(data) {\n const text = new AltText();\n text.append(data.subheader);\n text.append(data.header);\n text.append(data.text);\n return text.toString();\n }\n\n render() {\n const { data, userLang, onFocus, onBlur } = this.props;\n const url = data && data.mediaURL;\n const altText = this.altText(data);\n if (url) {\n return (\n \n );\n } else {\n return null;\n }\n }\n}\n\nAudioCardContent.prototypes = {\n data: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n // manager: PropTypes.object,\n // sliderItem: PropTypes.number,\n};\n\nexport default function _AudioCardContent(props) {\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\nimport AudioCardContent from './AudioCardContent';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n },\n focusedCard: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n outline: '6px solid #888888',\n },\n cardContent: {\n padding: 0,\n backgroundColor: '#000000',\n },\n}));\n\nclass AudioCard extends PureComponent {\n constructor(props) {\n super(props);\n const focused = false;\n this.state = { focused };\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n onFocus() {\n const focused = true;\n this.setState({ focused });\n }\n\n onBlur() {\n const focused = false;\n this.setState({ focused });\n }\n\n render() {\n const { classes, data, userLang } = this.props;\n const { focused } = this.state;\n return (\n \n \n \n \n \n );\n }\n}\n\nAudioCard.propTypes = {\n data: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n};\n\nexport default function _AudioCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport Iframe from 'react-iframe';\n\nconst useStylesByAspectRatio = (aspectRatio) => {\n return makeStyles((theme) => ({\n iframe: {\n width: '100%',\n aspectRatio,\n border: 0,\n },\n }))\n};\n\nclass YoutubeCardContent extends PureComponent {\n render() {\n const { data, classes } = this.props;\n const { youtubeId } = data;\n const allow = 'accelerometer; autoplay; clipboard-write; ' +\n 'encrypted-media; gyroscope; picture-in-picture; web-share';\n if (youtubeId) {\n const src = 'https://www.youtube-nocookie.com/embed/' + youtubeId +\n '?modestbranding=1&rel=0';\n return (\n \n );\n } else {\n return null;\n }\n }\n}\n\nYoutubeCardContent.prototypes = {\n data: PropTypes.object.isRequired,\n aspectRatio: PropTypes.string.isRequired,\n};\n\nexport default function _YoutubeCardContent(props) {\n const useStyles = useStylesByAspectRatio(props.aspectRatio);\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\nimport YoutubeCardContent from './YoutubeCardContent';\n\nconst useStylesByAspectRatio = (aspectRatio) => {\n return makeStyles((theme) => ({\n card: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n },\n cardFullscreen: {\n borderRadius: '8px',\n },\n cardContent: {\n padding: 0,\n aspectRatio,\n overflow: 'hidden',\n width: '100%',\n backgroundColor: '#ffffff',\n },\n }))\n};\n\nclass YoutubeCard extends PureComponent {\n render() {\n const { classes, data, aspectRatio } = this.props;\n return (\n \n \n \n \n \n );\n }\n}\n\nYoutubeCard.propTypes = {\n data: PropTypes.object.isRequired,\n aspectRatio: PropTypes.string.isRequired,\n};\n\nfunction getAspectRatio(props) {\n const arRegex = /^\\d+\\s*\\/\\s*\\d+$/;\n if (props && props.data && props.data.aspectRatio &&\n props.data.aspectRatio.trim().match(arRegex)) {\n return props.data.aspectRatio.trim();\n } else {\n return '16 / 9';\n }\n}\n\nexport default function _YoutubeCard(props) {\n const aspectRatio = getAspectRatio(props);\n const useStyles = useStylesByAspectRatio(aspectRatio);\n const classes = useStyles();\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport VideoCardContent from '../cards/VideoCardContent';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n float: 'left',\n position: 'relative',\n transitionProperty: 'transform',\n backgroundColor: '#000000',\n },\n}));\n\nclass CarouselVideoItem extends PureComponent {\n render() {\n const {\n classes, data, manager, sliderItem,\n videoQuality, videoQualityCallback,\n fullscreenVideo, fullscreenVideoCallback,\n duplicate, userLang,\n } = this.props;\n return (\n
\n \n
\n );\n }\n}\n\nCarouselVideoItem.propTypes = {\n data: PropTypes.object.isRequired,\n manager: PropTypes.object,\n sliderItem: PropTypes.number,\n videoQuality: PropTypes.number,\n videoQualityCallback: PropTypes.func,\n fullscreenVideo: PropTypes.bool,\n fullscreenVideoCallback: PropTypes.func,\n duplicate: PropTypes.bool,\n userLang: PropTypes.string,\n};\n\nexport default function _CarouselVideoItem(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport './TextCard.css';\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\n\nconst useStyles = makeStyles((theme) => ({\n text: {\n '& strong': {\n fontWeight: 500,\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& s': {\n textDecoration: 'line-through',\n },\n '& u': {\n textDecoration: 'underline',\n },\n '& sup': {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n '& sub': {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n '& p': {\n margin: 0,\n },\n },\n}));\n\nclass TextCard extends PureComponent {\n render() {\n const { classes, data, } = this.props;\n const text = { __html: data.content, };\n return (\n \n );\n }\n}\n\nTextCard.propTypes = {\n data: PropTypes.object.isRequired,\n};\n\nexport default function _TextCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from '@material-ui/core/Divider';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\n\nimport L from \"../util/L10n\";\nimport TextUtil from '../util/TextUtil';\n\nconst useStyles = makeStyles((theme) => ({\n quoteCard: {},\n title: {\n color: '#000000',\n marginBottom: 6,\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 16,\n },\n card: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n padding: 20,\n backgroundColor: '#f3f1f3',\n },\n cardContent: {},\n quote: {\n '& strong': {\n fontWeight: 500,\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& s': {\n textDecoration: 'line-through',\n },\n '& u': {\n textDecoration: 'underline',\n },\n '& sup': {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n '& sub': {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n '& p': {\n margin: 0,\n },\n },\n authorDiv: {\n margin: '20px 0 0',\n },\n author: {\n fontWeight: 500,\n fontSize: 16,\n color: '#000000',\n },\n role: {\n fontWeight: 400,\n fontSize: 16,\n color: 'rgba(0, 0, 0, 0.54)',\n },\n}));\n\nclass QuoteCard extends PureComponent {\n render() {\n const { classes, data, userLang, } = this.props;\n const title = TextUtil.isEmptyText(data.title) ?\n L.t('quotationTitle', userLang) : data.title;\n const quoteText = { __html: data.quote, };\n const authorDiv = TextUtil.isEmptyText(data.author) &&\n TextUtil.isEmptyText(data.author_role) ? null :\n
\n \n {data.author}\n \n \n {data.author_role}\n \n
;\n return (\n
\n\n \n {title}\n \n\n \n \n \n \n {authorDiv}\n \n \n
\n );\n }\n}\n\nQuoteCard.propTypes = {\n data: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n};\n\nexport default function _QuoteCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React from 'react'\n\nexport default function ScrambledBox({children}) {\n\n return (\n \n {children}\n
\n )\n}","import React from 'react'\nimport './styles.css';\n\nexport default function ScrambledDraggable({width, character, position, onDropped, observable}) {\n\n function onDrag(event) {\n event.preventDefault();\n /*setState({\n //draggedTask: todo\n });*/\n }\n\n function onDragStart(event) {\n if(observable.getIsSolved()) return;\n let element = event.target;\n element.classList.add('hide');\n event.dataTransfer.setData(\"json\", JSON.stringify({character: character, position: position}));\n observable.clearDroppedPosition();\n }\n\n function onDragEnd(event) {\n if(observable.getIsSolved()) return;\n let element = event.target;\n element.classList.remove('hide');\n let dropped = observable.getDroppedPosition() === position;\n\n if (onDropped) onDropped(position, dropped);\n observable.clearDroppedPosition();\n }\n\n var paddingTop = width / 12;\n if(width < 30) {\n paddingTop = width / 9;\n }\n\n return (\n onDrag(event)}\n onDragStart={(event) => onDragStart(event)}\n onDragEnd={(event) => onDragEnd(event)}\n >\n \n {character}\n
\n
\n )\n}","import React, {useLayoutEffect, useState} from 'react'\nimport ScrambledBox from \"./ScrambledBox\";\nimport ScrambledDraggable from \"./ScrambledDraggable\";\n\n\nexport default function ScrambledSource({cWidth, text, observable}) {\n\n const [charVisibleAt, setCharVisibleAt] = useState([]);\n const [restoreIndex, setRestorIndex] = useState(null);\n const myText = text.replace(/\\s/g, \"\");\n\n useLayoutEffect(() => {\n observable.subscribe(onRestore)\n const visibleAt = [];\n for (let i = 0; i < myText.length; i++) {\n visibleAt.push(true);\n }\n setCharVisibleAt(visibleAt);\n return () => {\n observable.unsubscribe(onRestore)\n }\n }, [myText.length, observable]);\n\n\n function onRestore(index) {\n setRestorIndex(index)\n }\n\n function onDropped(index, isCopy) {\n const visibleAt = [];\n for (let i = 0; i < myText.length; i++) {\n if (isCopy) {\n visibleAt.push(index === i ? false : charVisibleAt[i]);\n continue;\n }\n visibleAt.push(charVisibleAt[i]);\n }\n setCharVisibleAt(visibleAt);\n }\n\n function renderSquare(i, size, character, visible) {\n if (visible) {\n return (\n
\n \n \n \n
\n )\n } else {\n return (\n
\n \n \n
\n )\n }\n }\n\n if (restoreIndex !== null) {\n const visibleAt = [];\n for (let i = 0; i < myText.length; i++) {\n visibleAt.push(restoreIndex === i ? true : charVisibleAt[i]);\n }\n setRestorIndex(null);\n setCharVisibleAt(visibleAt);\n }\n\n const squares = []\n const size = cWidth / 8 - 1;\n\n if (charVisibleAt.length !== 0) {\n for (let i = 0; i < myText.length; i++) {\n squares.push(renderSquare(i, size - 8 -2, myText.charAt(i), charVisibleAt[i]))\n }\n }\n\n\n return (\n
\n
\n \n {squares}\n
\n
\n
\n )\n}\n","import React, {useState} from 'react'\nimport './styles.css';\nimport ScrambledDraggable from \"./ScrambledDraggable\";\n\nexport default function ScrambledDroppable({width, showAt, observable, expected, index}) {\n\n\n const [data, setData] = useState(null);\n\n function allowDrop(event) {\n event.preventDefault();\n }\n\n function onDrop(event) {\n event.preventDefault();\n if(data !== null) {\n observable.notify(data.position);\n }\n try {\n const newData = JSON.parse(event.dataTransfer.getData(\"json\"));\n setData(newData);\n if (newData) {\n observable.setDropPosition(newData.position);\n observable.setResult(index, newData.character === expected);\n }\n }catch(_){}\n }\n\n function onDropped(position, isCopy) {\n if(observable.getIsSolved()) return;\n\n setData(null);\n observable.setResult(index, null);\n if (!isCopy && data !== null) {\n if(showAt) showAt(data.position);\n }\n }\n\n const style = {\n width: '100%',\n height: '100%',\n backgroundColor: 'rgb(235, 235, 235)',\n borderRadius: '20%',\n borderColor: 'rgb(220, 220, 220)',\n }\n\n if (data) {\n return (\n allowDrop(event)}\n onDrop={(event) => onDrop(event)}\n >\n \n
\n )\n } else {\n return (\n allowDrop(event)}\n onDrop={(event) => onDrop(event)}\n >\n \n )\n }\n}","import React from 'react'\nimport ScrambledBox from \"./ScrambledBox\";\nimport ScrambledDroppable from \"./ScrambledDroppable\";\n\n\nexport default function ScrambledTarget({cWidth, text, observable}) {\n\n\n function renderSquare(i, size, character, index) {\n\n return (\n
\n \n \n \n
\n )\n }\n\n function renderSpace(i, size) {\n return (\n
\n\n
\n )\n\n }\n\n function renderLine(i, squares) {\n\n return (\n
\n
\n \n {squares}\n
\n
\n \n );\n }\n\n function showAt(position) {\n if (observable) observable.notify(position)\n }\n\n const size = cWidth / 8 - 1;\n\n\n const strLines = []\n let currentLine = \"\"\n\n const words = text.split(' ');\n for (let i = 0; i < words.length; i++) {\n let word = words[i];\n\n while (word.length > 8) {\n if (currentLine.length > 0) {\n strLines.push(currentLine);\n currentLine = \"\";\n }\n strLines.push(word.substring(0, 8));\n word = word.substring(8);\n }\n if (currentLine.length === 0) {\n currentLine = word;\n } else if (word.length + currentLine.length <= 7) {\n currentLine = currentLine.concat(' ', word);\n } else {\n strLines.push(currentLine);\n currentLine = word;\n }\n }\n if (currentLine.length !== 0) {\n strLines.push(currentLine);\n }\n\n let lines = []\n let index = 0;\n for (let i = 0; i < strLines.length; i++) {\n const strLine = strLines[i];\n let line = [];\n for (let j = 0; j < strLine.length; j++) {\n const c = strLine[j];\n if (c === ' ') {\n line.push(renderSpace(j, size - 8))\n } else {\n line.push(renderSquare(j, size - 8 - 2, c, index));\n index++\n }\n }\n lines.push(renderLine(i, line));\n }\n observable.setResultLength(index);\n\n\n return (\n
\n
\n {lines}\n
\n
\n )\n}","export default class Observable {\n constructor() {\n this.observers = [];\n this.droppedPosition = null;\n this.results = [];\n this.complete = false;\n this.correctSolution = false;\n this.completeCallback = null;\n this.isSolved = false;\n }\n\n setIsSolved(value) {\n this.isSolved = value;\n }\n\n getIsSolved() {\n return this.isSolved;\n }\n\n setDropPosition(position) {\n this.droppedPosition = position;\n }\n\n getDroppedPosition() {\n return this.droppedPosition;\n }\n\n clearDroppedPosition() {\n this.droppedPosition = null;\n }\n\n setResultLength(length) {\n if(this.results.length === 0) {\n this.results = Array(length).fill(null);\n }\n }\n\n setResult(index, result) {\n\n if(this.results.length === 0) return;\n this.results[index] = result;\n\n let isComplete = true;\n let isCorrectSolution = true;\n\n for(let i = 0; i < this.results.length; i++) {\n isComplete = isComplete && this.results[i] !== null;\n isCorrectSolution = isCorrectSolution && this.results[i] === true;\n }\n this.correctSolution = isCorrectSolution;\n if(isComplete !== this.complete) {\n this.complete = isComplete;\n if(this.completeCallback !== null) {\n this.completeCallback(this.complete);\n }\n }\n }\n\n setCompleteCallback(callback) {\n this.completeCallback = callback;\n }\n\n getCorrectSolution() {\n return this.correctSolution;\n }\n\n subscribe(func) {\n this.observers.push(func);\n }\n\n unsubscribe(func) {\n this.observers = this.observers.filter((observer) => observer !== func);\n }\n\n notify(data) {\n this.observers.forEach((observer) => observer(data));\n }\n}\n\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Button from '@material-ui/core/Button';\n\nconst useStylesByProps = (props) => {\n const color = props.color || '#ffffff';\n const backgroundColor = props.backgroundColor || '#338C15';\n\n return makeStyles((theme) => ({\n button: {\n borderRadius: 6,\n color: color,\n backgroundColor: backgroundColor,\n border: '2px solid ' + backgroundColor,\n boxShadow: '0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)',\n fontWeight: 900,\n fontSize: 19,\n textTransform: 'none',\n letterSpacing: 0.5,\n transition: '0.2s ease',\n '&:hover': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n '&:active': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n '&:focus': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n },\n buttonInverted: {\n borderRadius: 6,\n color: backgroundColor,\n backgroundColor: color,\n border: '2px solid ' + backgroundColor,\n boxShadow: '0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)',\n fontWeight: 900,\n fontSize: 19,\n textTransform: 'none',\n letterSpacing: 0.5,\n transition: '0.2s ease',\n '&:hover': {\n color: color,\n backgroundColor: backgroundColor,\n },\n '&:active': {\n color: color,\n backgroundColor: backgroundColor,\n },\n '&:focus': {\n color: color,\n backgroundColor: backgroundColor,\n },\n },\n label: {\n paddingBottom: '0.2em',\n },\n }));\n};\n\n\nclass SolvedButton extends PureComponent {\n render() {\n const { classes, content, onClick, inverted, disabled } = this.props;\n let variant = inverted ? 'outlined' : 'contained'\n let myStyle = {};\n if(disabled) {\n variant = 'contained';\n myStyle = {\n borderColor: 'rgba(0, 0, 0, 0.1)',\n color: 'rgb(255, 255, 255)',\n backgroundColor: 'rgb(204, 204, 204)',\n };\n }\n return (\n \n
\n {content}\n
\n \n );\n }\n}\n\nSolvedButton.propTypes = {\n content: PropTypes.string.isRequired,\n onClick: PropTypes.func,\n color: PropTypes.string,\n backgroundColor: PropTypes.string,\n inverted: PropTypes.bool,\n disabled: PropTypes.bool,\n};\n\nexport default function _SolvedButton(props) {\n const useStyles = useStylesByProps(props);\n const classes = useStyles();\n return ;\n}\n","import React from \"react\";\nimport ScrambledSource from \"./ScrambledSource\";\nimport ScrambledTarget from \"./ScrambledTarget\";\n//import L from \"../util/L10n\";\nimport useResizeObserver from '@react-hook/resize-observer'\n\nimport Observable from \"./Observable\";\n\nimport './DragDropTouch.js';\nimport lottieJson from \"./scrambeld_result.json\";\nimport SolvedButton from \"./SolvedButton\";\nimport Typography from \"@material-ui/core/Typography\";\n\nfunction useSize(target) {\n const [size, setSize] = React.useState();\n\n React.useLayoutEffect(() => {\n target && setSize(target.getBoundingClientRect());\n }, [target]);\n\n // Where the magic happens\n useResizeObserver(target, (entry) => setSize(entry.contentRect));\n return size;\n}\n\n\nexport default function ScrambledWord({\n classes,\n userLang,\n scrambledWord,\n word,\n info,\n messageCorrect,\n messageWrong,\n buttonColor,\n buttonStyle,\n buttonText,\n showAnimation,\n }) {\n\n const [target, setTarget] = React.useState();\n const [observable, setObservable] = React.useState(new Observable());\n const [complete, setComplete] = React.useState(false);\n const size = useSize(target);\n const [message, setMessage] = React.useState(null);\n\n\n\n React.useEffect(() => {\n function onCompleteChanged(isComplete) {\n setComplete(isComplete);\n if(!isComplete) {\n setMessage(null);\n }\n }\n\n observable.setCompleteCallback(onCompleteChanged)\n return () => {\n observable.setCompleteCallback(null);\n }\n }, [observable]);\n\n function onButtonClick() {\n if (observable.getCorrectSolution()) {\n showAnimation(lottieJson, false);\n setMessage(messageCorrect);\n observable.setIsSolved(true);\n } else {\n setMessage(messageWrong);\n }\n }\n\n\n let width = 0;\n if (size) {\n width = size.width;\n }\n\n let msg = null;\n let button =
\n
;\n let source = ;\n let infoText =
{info}\n
;\n let space = null;\n\n if (message !== null) {\n msg =
\n \n {message}\n \n
;\n if (observable.getCorrectSolution()) {\n button = null;\n source = null;\n infoText = null;\n space =
\n\n }\n }\n\n return (\n
\n {infoText}\n {source}\n {space}\n \n {msg}\n {button}\n
\n );\n}\n","import React, {PureComponent} from 'react';\nimport PropTypes from \"prop-types\";\n\nimport {makeStyles} from \"@material-ui/core/styles\";\n\nimport ScrambledWord from \"./scrambledword/ScrambledWord\";\n\nconst useStyles = makeStyles((theme) => ({\n scrambledWordCard: {},\n title: {\n color: '#000000',\n marginBottom: 6,\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 16,\n },\n card: {\n borderRadius: '8px',\n transform: 'translateZ(0)',\n padding: 20,\n backgroundColor: '#f3f1f3',\n },\n cardContent: {},\n quote: {\n '& strong': {\n fontWeight: 500,\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& s': {\n textDecoration: 'line-through',\n },\n '& u': {\n textDecoration: 'underline',\n },\n '& sup': {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n '& sub': {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n '& p': {\n margin: 0,\n },\n },\n\n\n}));\n\nclass ScrambledWordCard extends PureComponent {\n render() {\n const {classes, data, userLang, showAnimation, stopAnimation} = this.props;\n\n return (\n
\n\n \n \n
\n );\n }\n}\n\nScrambledWordCard.propTypes = {\n data: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n showAnimation: PropTypes.func.isRequired,\n stopAnimation: PropTypes.func.isRequired,\n\n};\n\nexport default function _ScrambledWordCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { Fragment, PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport CallMadeIcon from '@material-ui/icons/CallMade';\nimport PictureAsPdfIcon from '@material-ui/icons/PictureAsPdf';\nimport Divider from '@material-ui/core/Divider';\n\nimport L from '../util/L10n';\nimport InvisibleImg from '../a11y/InvisibleImg';\nimport MaybeLink from '../util/MaybeLink';\nimport TextUtil from '../util/TextUtil';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n padding: 0,\n marginTop: 16,\n marginBottom: 16,\n },\n icon: {\n minWidth: 32,\n color: '#249dc5',\n },\n text: {\n fontWeight: 500,\n fontSize: 14,\n color: '#249dc5',\n '&:hover': {\n textDecoration: 'underline',\n },\n marginTop: 0,\n },\n link: {\n '&:focus-visible': {\n outline: '2px solid #888888',\n borderRadius: 6,\n },\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n}));\n\nclass InfosCardItem extends PureComponent {\n render() {\n const { classes, title, url, type, userLang } = this.props;\n const icon = 'pdf' === type ?\n :\n ;\n const alt = 'pdf' === type ?\n L.t('infosPdfItem', userLang) : L.t('infosOtherItem', userLang);\n if (TextUtil.isEmptyText(title)) {\n return null;\n } else {\n return (\n \n \n \n \n {icon}\n \n \n \n {title}\n \n \n \n \n \n );\n }\n }\n}\n\nInfosCardItem.propTypes = {\n title: PropTypes.string,\n url: PropTypes.string,\n type: PropTypes.string,\n userLang: PropTypes.string,\n};\n\nexport default function _InfosCardItem(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { Fragment, PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\nimport DetectLocale from '../util/DetectLocale';\n\n\n// We rely on TextCard.css being imported by TextCard.js for\n// some extra styles.\n\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport DescriptionOutlinedIcon from '@material-ui/icons/DescriptionOutlined';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport Typography from \"@material-ui/core/Typography\";\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Divider from '@material-ui/core/Divider';\n\nimport L from '../util/L10n';\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n padding: 0,\n marginBottom: 8,\n },\n icon: {\n minWidth: 32,\n color: '#249dc5',\n paddingTop: 2,\n },\n text: {\n fontWeight: 500,\n // fontSize: '1rem',\n color: '#249dc5',\n // '&:hover': {\n // textDecoration: 'underline',\n // },\n marginTop: 0,\n },\n accordion: {\n width: '100%',\n backgroundColor: 'transparent',\n },\n accordionSummary: {\n padding: 0,\n },\n expandIcon: {\n color: '#249dc5',\n },\n accordionDetailsRoot: {\n padding: '8px 0 16px',\n display: 'flex',\n flexDirection: 'column',\n },\n accordionDetailsLogo: {\n margin: '8px 0',\n textAlign: 'right',\n },\n accordionDetailsLogoImage: {\n maxWidth: '50%',\n maxHeight: 64,\n },\n accordionDetailsAttrDate: {\n color: '#707070',\n },\n accordionDetailsAttrHead: {\n color: '#707070',\n },\n accordionDetailsAttrName: {\n color: '#707070',\n },\n accordionDetailsSubheader: {\n margin: '16px 0 -8px',\n },\n accordionDetailsHeader: {\n fontWeight: 500,\n margin: '8px 0 16px',\n },\n accordionDetailsText: {\n width: '100%',\n hyphens: 'auto',\n '& strong': {\n fontWeight: 500,\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& s': {\n textDecoration: 'line-through',\n },\n '& u': {\n textDecoration: 'underline',\n },\n '& sup': {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n '& sub': {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n '& p': {\n margin: '6px 0',\n },\n },\n accordionDetailsCopyrightStars: {\n color: '#707070',\n margin: '22px 0 0',\n textAlign: 'center',\n letterSpacing: '0.5rem',\n },\n accordionDetailsCopyright: {\n color: '#707070',\n margin: '12px 0 8px',\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n}));\n\nclass PressReleaseItem extends PureComponent {\n render() {\n const { pressRelease, index, classes, userLang } = this.props;\n const {\n title, logoURL, senderDate, textfeld, senderSign, subheader, header,\n text, copyright,\n } = pressRelease;\n let senderDateStr = null;\n if (senderDate) {\n const locale = userLang ? userLang :\n DetectLocale.getPreferredLocale();\n const dateOptions =\n { month: 'long', day: 'numeric', year: 'numeric' };\n const dateValue = new Date(senderDate);\n senderDateStr = dateValue.toLocaleDateString(locale, dateOptions);\n }\n const senderHead = textfeld;\n const textContent = { __html: text };\n const alt = L.t('infosPressReleaseItem', userLang);\n const expandIcon =\n ;\n const logoElem = logoURL ?\n \n \n : null;\n const attrDateElem = senderDateStr ?\n \n {senderDateStr}\n : null;\n const attrHeadElem = senderSign && senderHead ?\n \n {senderHead}\n : null;\n const attrNameElem = senderSign ?\n \n {senderSign}\n : null;\n const subheaderElem = subheader ?\n \n {subheader}\n : null;\n const headerElem = header ?\n \n {header}\n : null;\n const copyrightElem = copyright ?\n \n \n ***\n \n \n {copyright}\n \n : null;\n return (\n \n \n \n \n \n \n \n \n \n {title}\n \n \n \n {logoElem}\n {attrDateElem}\n {attrHeadElem}\n {attrNameElem}\n {subheaderElem}\n {headerElem}\n \n {copyrightElem}\n \n \n \n \n \n );\n\n\n }\n}\n\nPressReleaseItem.propTypes = {\n pressRelease: PropTypes.object.isRequired,\n index: PropTypes.number.isRequired,\n userLang: PropTypes.string,\n};\n\nexport default function _PressReleaseItem(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from '@material-ui/core/Divider';\nimport List from '@material-ui/core/List';\n\nimport InfosCardItem from './InfosCardItem';\nimport L from \"../util/L10n\";\nimport TextUtil from '../util/TextUtil';\nimport PressReleaseItem from './PressReleaseItem';\n\nconst useStyles = makeStyles((theme) => ({\n infosCard: {},\n title: {\n color: '#000000',\n marginBottom: 3,\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n list: {\n marginBottom: 6,\n },\n}));\n\nclass InfosCard extends PureComponent {\n render() {\n const { classes, data, userLang, pressReleases } = this.props;\n const pressReleaseItems = pressReleases ?\n pressReleases.map((item, index) =>\n \n ) : null;\n const title = TextUtil.isEmptyText(data.title) ?\n L.t('infosTitle', userLang) : data.title;\n return (\n
\n \n {title}\n \n \n \n {pressReleaseItems}\n \n \n \n \n \n \n
\n );\n }\n}\n\nInfosCard.propTypes = {\n data: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n pressReleases: PropTypes.array,\n};\n\nexport default function _InfosCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React, {Fragment, PureComponent} from 'react';\nimport PropTypes from \"prop-types\";\n\n\n// We rely on TextCard.css being imported by TextCard.js for\n// some extra styles.\nimport {makeStyles} from \"@material-ui/core/styles\";\n\nimport ListItem from '@material-ui/core/ListItem';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport Typography from \"@material-ui/core/Typography\";\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Divider from '@material-ui/core/Divider';\n\nimport L from '../util/L10n';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n padding: 0,\n marginBottom: 8,\n },\n icon: {\n minWidth: 32,\n color: '#249dc5',\n paddingTop: 2,\n },\n text: {\n fontWeight: 500,\n // fontSize: '1rem',\n color: '#249dc5',\n // '&:hover': {\n // textDecoration: 'underline',\n // },\n marginTop: 0,\n },\n accordion: {\n width: '100%',\n backgroundColor: 'transparent',\n },\n accordionSummary: {\n padding: 0,\n },\n expandIcon: {\n color: '#249dc5',\n },\n accordionDetailsRoot: {\n padding: '0 0 16px',\n display: 'flex',\n flexDirection: 'column',\n },\n accordionDetailsLogo: {\n margin: '8px 0',\n textAlign: 'right',\n },\n accordionDetailsLogoImage: {\n maxWidth: '50%',\n maxHeight: 64,\n },\n accordionDetailsAttrDate: {\n color: '#707070',\n },\n accordionDetailsAttrHead: {\n color: '#707070',\n },\n accordionDetailsAttrName: {\n color: '#707070',\n },\n accordionDetailsSubheader: {\n margin: '16px 0 -8px',\n },\n accordionDetailsHeader: {\n fontWeight: 500,\n margin: '8px 0 16px',\n },\n accordionDetailsText: {\n width: '100%',\n hyphens: 'auto',\n '& strong': {\n fontWeight: 500,\n },\n '& em': {\n fontStyle: 'italic',\n },\n '& s': {\n textDecoration: 'line-through',\n },\n '& u': {\n textDecoration: 'underline',\n },\n '& sup': {\n verticalAlign: 'super',\n fontSize: 'smaller',\n },\n '& sub': {\n verticalAlign: 'sub',\n fontSize: 'smaller',\n },\n '& p': {\n margin: '6px 0',\n },\n },\n accordionDetailsCopyrightStars: {\n color: '#707070',\n margin: '22px 0 0',\n textAlign: 'center',\n letterSpacing: '0.5rem',\n },\n accordionDetailsCopyright: {\n color: '#707070',\n margin: '12px 0 8px',\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n}));\n\nclass AccordionItem extends PureComponent {\n render() {\n const {head, content, index, classes, userLang} = this.props;\n\n\n const textContent = {__html: content};\n const alt = L.t('infosAccordionItem', userLang);\n const expandIcon =\n ;\n\n\n return (\n \n \n \n \n\n \n {head}\n \n \n \n \n \n \n \n \n \n );\n\n\n }\n}\n\nAccordionItem.propTypes = {\n head: PropTypes.string.isRequired,\n content: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n userLang: PropTypes.string,\n};\n\nexport default function _AccordionItem(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from '@material-ui/core/Divider';\nimport List from '@material-ui/core/List';\n\nimport TextUtil from '../util/TextUtil';\nimport AccordionItem from './AccordionItem';\n\nconst useStyles = makeStyles((theme) => ({\n infosCard: {},\n title: {\n color: '#000000',\n marginBottom: 3,\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n list: {\n marginBottom: 6,\n },\n}));\n\nclass AccordionCard extends PureComponent {\n addItem(accordionItems, head, content, userLang, index) {\n if(!TextUtil.isEmptyText(head) && !TextUtil.isEmptyText(content)) {\n accordionItems.push(\n );\n index++;\n }\n return index;\n }\n\n render() {\n const { classes, data, userLang, } = this.props;\n let accordionItems = [];\n let index = 0;\n this.addItem(accordionItems, data.akkordeon1, data.akkordeon1text, userLang, index);\n this.addItem(accordionItems, data.akkordeon2, data.akkordeon2text, userLang, index);\n this.addItem(accordionItems, data.akkordeon3, data.akkordeon3text, userLang, index);\n this.addItem(accordionItems, data.akkordeon4, data.akkordeon4text, userLang, index);\n this.addItem(accordionItems, data.akkordeon5, data.akkordeon5text, userLang, index);\n\n const title = TextUtil.isEmptyText(data.title) ?\n \"\" : data.title.toUpperCase();\n return (\n
\n \n {title}\n \n \n \n {accordionItems}\n \n
\n );\n }\n}\n\nAccordionCard.propTypes = {\n data: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n pressReleases: PropTypes.array,\n};\n\nexport default function _AccordionCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\nimport DateRangeIcon from '@material-ui/icons/DateRange';\n\nimport DetectLocale from '../util/DetectLocale';\n\nconst useStyles = makeStyles((theme) => ({\n box: {\n display: 'flex',\n width: '100%',\n marginBottom: '12px',\n },\n innerBox: {\n display: 'flex',\n width: '100%',\n height: '48px',\n border: 'solid #000000 2px',\n borderRadius: '4px',\n },\n icon: {\n color: '#000000',\n padding: '12px 16px',\n },\n text: {\n color: '#000000',\n fontSize: '14px',\n fontWeight: 500,\n textAlign: 'left',\n padding: '12px 0px',\n },\n}));\n\nclass CompetitionCardDurationBox extends PureComponent {\n _formatDate(date) {\n const { userLang, } = this.props;\n const locale = userLang ? userLang : DetectLocale.getPreferredLocale();\n const dateOptions =\n { year: 'numeric', month: '2-digit', day: '2-digit', };\n return date.toLocaleDateString(locale, dateOptions);\n }\n\n render() {\n const { classes, showDates, startDate, endDate,\n labelDuration, labelFrom, labelTo, } = this.props;\n if (showDates && (startDate || endDate)) {\n let text = '';\n if (startDate && endDate) {\n text = labelDuration + this._formatDate(startDate) +\n ' - ' + this._formatDate(endDate);\n } else if (startDate) {\n text = labelFrom + this._formatDate(startDate);\n } else {\n text = labelTo + this._formatDate(endDate);\n }\n return (\n \n
\n
\n \n
\n\n \n {text}\n \n
\n
\n );\n } else {\n return null;\n }\n }\n}\n\nCompetitionCardDurationBox.propTypes = {\n showDates: PropTypes.bool,\n startDate: PropTypes.object,\n endDate: PropTypes.object,\n labelDuration: PropTypes.string.isRequired,\n labelFrom: PropTypes.string.isRequired,\n labelTo: PropTypes.string.isRequired,\n userLang: PropTypes.string,\n};\n\nexport default function _CompetitionCardDurationBox(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from \"@material-ui/core/Typography\";\nimport EventBusyIcon from '@material-ui/icons/EventBusy';\n\nconst useStyles = makeStyles((theme) => ({\n box: {\n display: 'flex',\n color: '#616161',\n backgroundColor: '#ededed',\n borderRadius: '4px',\n width: '100%',\n height: '48px',\n fontSize: '14px',\n fontWeight: 'bold',\n },\n card: {\n color: '#616161',\n backgroundColor: '#ededed',\n borderRadius: 4,\n width: '100%',\n minHeight: 48,\n },\n cardContent: {\n display: 'flex',\n },\n icon: {\n padding: '12px 16px 0',\n },\n text: {\n fontSize: '14px',\n fontWeight: 500,\n textAlign: 'left',\n padding: '11px 4px 10px 0',\n },\n}));\n\nclass CompetitionCardExpiredBox extends PureComponent {\n render() {\n const { classes, text, } = this.props;\n return (\n \n \n
\n \n
\n \n {text}\n \n
\n
\n );\n }\n}\n\nCompetitionCardExpiredBox.propTypes = {\n text: PropTypes.string.isRequired,\n};\n\nexport default function _CompetitionCardExpiredBox(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent, lazy, Suspense, } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from '@material-ui/core/Divider';\n\nimport L from \"../util/L10n\";\nimport TextUtil from '../util/TextUtil';\nimport CompetitionCardDurationBox from '../forms/CompetitionCardDurationBox';\nimport CompetitionCardExpiredBox from '../forms/CompetitionCardExpiredBox';\nconst CompetitionCardForm = lazy(() => import('../forms/CompetitionCardForm'));\n\nconst useStyles = makeStyles((theme) => ({\n competitionCard: {\n\n },\n title: {\n color: '#000000',\n marginBottom: 3,\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n formFallback: {\n width: '100%',\n height: '48px',\n textAlign: 'center',\n },\n}));\n\nclass CompetitionCard extends PureComponent {\n _competitionEnded(end) {\n const now = new Date();\n return !!end && now > end;\n }\n\n _competitionOpen(start, end) {\n const now = new Date();\n if (this._competitionEnded(end)) {\n return false;\n }\n return !start || now >= start;\n }\n\n render() {\n const { classes, data, userLang, lockLayout, entryId, } = this.props;\n const title = TextUtil.isEmptyText(data.title) ?\n L.t('competitionTitle', userLang) : data.title;\n const requestEmail = 'optional' === data.email ||\n 'mandatory' === data.email;\n const requiredEmail = 'mandatory' === data.email;\n const requestPhone = 'optional' === data.phone ||\n 'mandatory' === data.phone;\n const requiredPhone = 'mandatory' === data.phone;\n const requestFreetext = 'optional' === data.freetext ||\n 'mandatory' === data.freetext;\n const requiredFreetext = 'mandatory' === data.freetext;\n\n const startDate = data.startDate ? new Date(data.startDate) : null;\n const endDate = data.endDate ? new Date(data.endDate) : null;\n const showDates = !!data.showEnddate && (!!startDate || !!endDate);\n if (this._competitionOpen(startDate, endDate)) {\n return (\n
\n \n \n {title}\n \n \n\n ...
\n }>\n \n \n \n );\n } else {\n const text = L.t(this._competitionEnded(endDate) ?\n 'competitionDurationEnded' : 'competitionDurationNotStarted',\n userLang);\n return (\n
\n \n
\n );\n }\n }\n}\n\nCompetitionCard.propTypes = {\n data: PropTypes.object.isRequired,\n entryId: PropTypes.number.isRequired,\n userLang: PropTypes.string,\n lockLayout: PropTypes.func,\n};\n\nexport default function _CompetitionCard(props) {\n const classes = useStyles();\n return ;\n}\n","import axios from 'axios';\n\nimport config from '../config/api.json';\n\nasync function getInfo(path, onDataReceived, minCallTime) {\n const url = config.api_base + config.action_path + path;\n let start = Date.now();\n const response = await axios.get(url, {\n transformResponse: [(data) => {\n return data\n }],\n });\n if (response && 200 === response.status && response.data) {\n let duration = Date.now() - start;\n if (minCallTime && duration < minCallTime) {\n setTimeout(() =>{onDataReceived(JSON.parse(response.data));}, minCallTime - duration);\n } else {\n onDataReceived(JSON.parse(response.data));\n }\n } else {\n throw new Error('request failed', response);\n }\n}\n\nexport async function getTokenInfo(entryId, actionId, onDataReceived) {\n const path = 'token/' + entryId + '/' + actionId;\n await getInfo(path, onDataReceived, 1000);\n}\n\nexport async function getActionInfo(entryId, actionId, onDataReceived) {\n const path = 'info/' + entryId + '/' + actionId;\n await getInfo(path, onDataReceived);\n}\n\nexport async function getVoucherInfo(entryId, actionId, password,\n onDataReceived) {\n const path = 'extinfo/' + entryId + '/' + actionId + '/' + password;\n await getInfo(path, onDataReceived);\n}\n\nexport async function setVoucherUsed(entryId, actionId, voucher, password,\n onDataReceived) {\n const path = 'qrcode/' + entryId + '/' + actionId + '/' + password +\n '/' + voucher;\n await getInfo(path, onDataReceived);\n}\n","import React, { PureComponent, Fragment } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from '@material-ui/core/Grid';\nimport IconButton from '@material-ui/core/IconButton';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport CheckCircleOutlineIcon from '@material-ui/icons/CheckCircleOutline';\n\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n imageGrid: {\n marginTop: 12,\n marginBottom: 12,\n },\n imageGridItem: {\n },\n imageDiv: {\n position: 'relative',\n },\n image: {\n display: 'block',\n maxWidth: '100%',\n },\n iconButton: {\n position: 'absolute',\n top: -6,\n right: -6,\n },\n checkbutton: {\n position: 'absolute',\n top: 6,\n right: 6,\n },\n icon: {\n fontSize: 36,\n borderRadius: 16,\n color: '#ffffff',\n backgroundColor: 'rgba(0,0,0,0.15)',\n },\n text: {\n color: '#f44336',\n marginTop: 12,\n marginBottom: 12,\n },\n}));\n\nclass ImagePreview extends PureComponent {\n render() {\n const { images, imageMessages, classes, onDeleteImage, isVideoUpload } = this.props;\n const imageElements = [];\n for (let index = 0; index < images.length; index += 1) {\n const image = images[index];\n const buttonElement = image.submitted ?\n
\n \n
:\n {\n onDeleteImage(index);\n }}\n >\n \n \n \n ;\n if(isVideoUpload) {\n imageElements.push(\n \n
\n \n \n \n {buttonElement}\n
\n \n );\n } else {\n imageElements.push(\n \n
\n \n {buttonElement}\n
\n \n );\n\n }\n }\n const imageElement = imageElements.length > 0 ?\n \n {imageElements}\n : null;\n const textElements = [];\n for (let imageMessage of imageMessages) {\n textElements.push(\n \n {imageMessage}\n \n );\n }\n return (\n \n {imageElement}\n {textElements}\n \n );\n }\n}\n\nImagePreview.propTypes = {\n images: PropTypes.arrayOf(PropTypes.object).isRequired,\n imageMessages: PropTypes.arrayOf(PropTypes.string).isRequired,\n onDeleteImage: PropTypes.func.isRequired,\n isVideoUpload: PropTypes.bool,\n};\n\nexport default function _ImagePreview(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\nimport DateRangeIcon from '@material-ui/icons/DateRange';\n\nimport DetectLocale from '../util/DetectLocale';\n\nconst useStyles = makeStyles((theme) => ({\n box: {\n display: 'flex',\n width: '100%',\n marginBottom: '12px',\n },\n innerBox: {\n display: 'flex',\n width: '100%',\n height: '48px',\n border: 'solid #000000 2px',\n borderRadius: '4px',\n },\n icon: {\n color: '#000000',\n padding: '12px 16px',\n },\n text: {\n color: '#000000',\n fontSize: '14px',\n fontWeight: 500,\n textAlign: 'left',\n padding: '12px 0px',\n },\n}));\n\nclass ActionCardDurationBox extends PureComponent {\n _formatDate(date) {\n const { userLang, } = this.props;\n const locale = userLang ? userLang : DetectLocale.getPreferredLocale();\n const dateOptions =\n { year: 'numeric', month: '2-digit', day: '2-digit', };\n return date.toLocaleDateString(locale, dateOptions);\n }\n\n render() {\n const { classes, showDates, startDate, endDate,\n labelDuration, labelFrom, labelTo, } = this.props;\n if (showDates && (startDate || endDate)) {\n let text = '';\n if (startDate && endDate) {\n text = labelDuration + this._formatDate(startDate) +\n ' - ' + this._formatDate(endDate);\n } else if (startDate) {\n text = labelFrom + this._formatDate(startDate);\n } else {\n text = labelTo + this._formatDate(endDate);\n }\n return (\n \n
\n
\n \n
\n\n \n {text}\n \n
\n
\n );\n } else {\n return null;\n }\n }\n}\n\nActionCardDurationBox.propTypes = {\n showDates: PropTypes.bool,\n startDate: PropTypes.object,\n endDate: PropTypes.object,\n labelDuration: PropTypes.string.isRequired,\n labelFrom: PropTypes.string.isRequired,\n labelTo: PropTypes.string.isRequired,\n userLang: PropTypes.string,\n};\n\nexport default function _ActionCardDurationBox(props) {\n const classes = useStyles();\n return ;\n}\n","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEventUpcoming(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: 24,\n width: 24,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.2 22.2v-2.275h3.725V10H5.075v3.85H2.8V6.075q0-.95.663-1.613.662-.662 1.612-.662H6v-2h2.15v2h7.7v-2H18v2h.925q.95 0 1.613.662.662.663.662 1.613v13.85q0 .95-.662 1.613-.663.662-1.613.662Zm-7.2 2-1.6-1.6 2.45-2.45h-8v-2.3h8L6.4 15.4 8 13.8l5.2 5.2Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEventUpcoming);\nexport default __webpack_public_path__ + \"static/media/event_upcoming.b31605c4.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInfo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n height: 48,\n width: 48,\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5 34.15h3.3V22h-3.3ZM24 18.5q.8 0 1.325-.525.525-.525.525-1.275 0-.8-.525-1.35T24 14.8q-.8 0-1.325.55-.525.55-.525 1.35 0 .75.525 1.275.525.525 1.325.525Zm0 25.8q-4.2 0-7.9-1.6t-6.45-4.35Q6.9 35.6 5.3 31.9 3.7 28.2 3.7 24q0-4.25 1.6-7.95t4.35-6.425Q12.4 6.9 16.1 5.3T24 3.7q4.25 0 7.95 1.6t6.425 4.325Q41.1 12.35 42.7 16.05q1.6 3.7 1.6 7.95 0 4.2-1.6 7.9t-4.325 6.45Q35.65 41.1 31.95 42.7q-3.7 1.6-7.95 1.6Zm.05-3.4q7 0 11.925-4.95Q40.9 31 40.9 23.95q0-7-4.925-11.925Q31.05 7.1 24 7.1q-7 0-11.95 4.925Q7.1 16.95 7.1 24q0 7 4.95 11.95 4.95 4.95 12 4.95ZM24 24Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInfo);\nexport default __webpack_public_path__ + \"static/media/info.499a9f45.svg\";\nexport { ForwardRef as ReactComponent };","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from \"@material-ui/core/Typography\";\nimport EventBusyIcon from '@material-ui/icons/EventBusy';\n\nimport { ReactComponent as EventUpcoming } from '../images/event_upcoming.svg';\n\nconst useStyles = makeStyles((theme) => ({\n box: {\n display: 'flex',\n color: '#616161',\n backgroundColor: '#ededed',\n borderRadius: '4px',\n width: '100%',\n height: '48px',\n fontSize: '14px',\n fontWeight: 'bold',\n },\n card: {\n color: '#616161',\n backgroundColor: '#ededed',\n borderRadius: 4,\n width: '100%',\n minHeight: 48,\n },\n cardContent: {\n display: 'flex',\n },\n icon: {\n padding: '12px 16px 0',\n },\n svgIcon: {\n padding: '12px 16px 0',\n },\n text: {\n fontSize: '14px',\n fontWeight: 500,\n textAlign: 'left',\n padding: '11px 4px 10px 0',\n },\n}));\n\nclass ActionCardNotOpenBox extends PureComponent {\n render() {\n const { classes, text, ended } = this.props;\n const icon = ended ?\n :\n ;\n return (\n \n \n
\n {icon}\n
\n \n {text}\n \n
\n
\n );\n }\n}\n\nActionCardNotOpenBox.propTypes = {\n text: PropTypes.string.isRequired,\n ended: PropTypes.bool,\n};\n\nexport default function _ActionCardNotOpenBox(props) {\n const classes = useStyles();\n return ;\n}\n","export default class AudioRecorderController {\n constructor() {\n this.resetCallback = null;\n }\n\n reset() {\n if(this.resetCallback) {\n this.resetCallback();\n }\n }\n\n setResetCallback(callback) {\n this.resetCallback = callback;\n }\n}","import React, {Fragment, lazy, PureComponent, Suspense} from 'react';\nimport PropTypes from \"prop-types\";\n\nimport {makeStyles} from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from '@material-ui/core/Divider';\nimport Grid from '@material-ui/core/Grid';\n\nimport L from \"../util/L10n\";\nimport TextUtil from '../util/TextUtil';\nimport ImagePreview from '../forms/ImagePreview';\nimport ActionCardDurationBox from '../forms/ActionCardDurationBox';\nimport ActionCardNotOpenBox from '../forms/ActionCardNotOpenBox';\nimport {ReactComponent as Info} from '../images/info.svg';\nimport AudioRecorderController from '../forms/AudioRecorderController';\nimport TextField from \"@material-ui/core/TextField\";\n\nconst ActionCardForm = lazy(() => import('../forms/ActionCardForm'));\nconst ImageSelectButton = lazy(() => import('../forms/ImageSelectButton'));\nconst AudioRecorder = lazy(() => import('../forms/AudioRecorder'));\n\nconst useStyles = makeStyles((theme) => ({\n actionCard: {},\n imageSelector: {\n margin: '12px 0',\n },\n mainTitle: {\n color: '#000000',\n marginBottom: 3,\n fontSize: 16,\n },\n title: {\n color: '#000000',\n marginBottom: 3,\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n formFallback: {\n width: '100%',\n height: '48px',\n textAlign: 'center',\n },\n actionRandom: {\n width: '100%',\n height: '48px',\n textAlign: 'start',\n },\n infoText: {\n margin: '24px 0',\n },\n infoTextSvgIcon: {},\n infoTextIconGridItem: {\n marginLeft: -12,\n },\n infoTextBody: {\n textAlign: 'justify',\n hyphens: 'auto',\n },\n}));\n\nconst maxImages = 5;\n\nclass ActionCardContent extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n images: [],\n imageMessages: [],\n image: null,\n imageMessage: null,\n audioUrl: null,\n };\n this.setTip1RequiredMessage = this._setTip1RequiredMessage.bind(this);\n this.setTip2RequiredMessage = this._setTip2RequiredMessage.bind(this);\n this.storageImage = this._storageImages.bind(this);\n this.setImageMessage = this._setImageMessage.bind(this);\n this.storeAddImages = this.storeAddImages.bind(this);\n this.storeDeleteImage = this.storeDeleteImage.bind(this);\n this.storeMarkSubmitted = this.storeMarkSubmitted.bind(this);\n this.setAudioUrl = this._setAudioUrl.bind(this);\n this.audioRecorderController = new AudioRecorderController();\n }\n\n async _setAudioUrl(url) {\n if (url !== null) {\n const files = [];\n let blob = await fetch(url).then(r => r.blob());\n files.push(blob);\n this.storeAddImages(files, 1);\n\n } else {\n const images = [];\n this.setState({images});\n }\n }\n\n _storageImages(evt) {\n const files = Array.from(evt.target.files);\n if (files.length > 0) {\n const currentLength = this.state.images.length;\n const addLength = files.length < maxImages - currentLength ?\n files.length : maxImages - currentLength;\n const siht = this;\n const storeAddImagesRest = () => {\n siht.storeAddImages(files, addLength);\n };\n if (files.length > addLength) {\n this.storeAddImageMessage('actionImageTooManyImages',\n {}, storeAddImagesRest, true);\n } else {\n this.storeClearImageMessages(storeAddImagesRest);\n }\n }\n evt.target.value = ''\n }\n\n isVideoUpload() {\n const {data,} = this.props;\n return data.uploadmedium === \"video\";\n }\n\n isAudioUpload() {\n const {data,} = this.props;\n return data.uploadmedium === \"audio\";\n }\n\n storeAddImages(files, length) {\n if (files.length > 0 && length > 0) {\n const file = files[0];\n const params = {filename: file.name};\n const siht = this;\n const storeAddImagesRest = () => {\n siht.storeAddImages(files.slice(1), length - 1);\n };\n const storeAddImagesRejected = () => {\n siht.storeAddImages(files.slice(1), length);\n };\n if (this.isVideoUpload()) {\n if (file.size && file.size > 50 * 1024 * 1024) {\n this.storeAddImageMessage('actionVideoTooLarge',\n params, storeAddImagesRejected);\n return;\n }\n if (file.type && file.type.indexOf('video/mp4') !== 0 &&\n file.type.indexOf('video/quicktime') !== 0 &&\n file.type.indexOf('video/webm') !== 0 &&\n file.type.indexOf('video/3gp') !== 0 &&\n file.type.indexOf('video/3gpp') !== 0 &&\n file.type.indexOf('video/x-matroska') !== 0\n ) {\n this.storeAddImageMessage('actionVideoWrongType',\n params, storeAddImagesRejected);\n return;\n }\n } else if (this.isAudioUpload()) {\n } else {\n if (file.size && file.size > 10 * 1024 * 1024) {\n this.storeAddImageMessage('actionImageTooLarge',\n params, storeAddImagesRejected);\n return;\n }\n if (file.type && file.type.indexOf('image/png') !== 0\n && file.type.indexOf('image/jpeg') !== 0) {\n this.storeAddImageMessage('actionImageWrongType',\n params, storeAddImagesRejected);\n return;\n }\n }\n const reader = new FileReader();\n reader.onload = (data) => {\n const image = data.target.result;\n const {images} = siht.state;\n let duplicate = false;\n for (let img of images) {\n if (img.data === image) {\n duplicate = true;\n break;\n }\n }\n if (image) {\n if (this.isVideoUpload()) {\n if (image.indexOf('data:video/mp4;base64,') !== 0 &&\n image.indexOf('data:video/quicktime;base64,') !== 0 &&\n image.indexOf('data:video/webm;base64,') !== 0 &&\n image.indexOf('data:video/3gp;base64,') !== 0 &&\n image.indexOf('data:video/3gpp;base64,') !== 0 &&\n image.indexOf('data:video/x-matroska;base64,') !== 0\n ) {\n siht.storeAddImageMessage('actionVideoWrongType',\n params, storeAddImagesRejected);\n } else if (image.length > 50 * 1024 * 1024 * 4 / 3) {\n siht.storeAddImageMessage('actionVideoTooLarge',\n params, storeAddImagesRejected);\n } else {\n const video = document.createElement('video');\n video.preload = 'metadata';\n video.onloadedmetadata = function () {\n window.URL.revokeObjectURL(video.src);\n if (video.duration > 60) {\n siht.storeAddImageMessage('actionVideoTooLong',\n params, storeAddImagesRejected);\n return;\n }\n images.length = 0;\n siht.storeAddImage(image, params, storeAddImagesRest);\n }\n video.src = URL.createObjectURL(file);\n }\n } else if (this.isAudioUpload()) {\n if (image.indexOf('data:audio/') !== 0) {\n siht.storeAddImageMessage('actionImageWrongType',\n params, storeAddImagesRejected);\n } else {\n siht.storeAddImage(image, params, storeAddImagesRest);\n }\n } else {\n if (image.indexOf('data:image/png;base64,') !== 0 &&\n image.indexOf('data:image/jpeg;base64,') !== 0) {\n siht.storeAddImageMessage('actionImageWrongType',\n params, storeAddImagesRejected);\n } else if (image.length > 10 * 1024 * 1024 * 4 / 3) {\n siht.storeAddImageMessage('actionImageTooLarge',\n params, storeAddImagesRejected);\n } else if (duplicate) {\n siht.storeAddImageMessage('actionImageDuplicate',\n params, storeAddImagesRejected);\n } else {\n siht.storeAddImage(image, params, storeAddImagesRest);\n }\n }\n }\n }\n reader.readAsDataURL(file);\n }\n }\n\n storeAddImage(data, params, afterStateUpdate) {\n const images = [];\n images.push(...this.state.images);\n images.push({data, ...params});\n this.setState({images}, afterStateUpdate);\n }\n\n storeAddImageMessage(msg, params, afterStateUpdate, clear) {\n const {userLang} = this.props;\n const text = L.t(msg, userLang, params);\n const imageMessages = [];\n if (!clear) {\n imageMessages.push(...this.state.imageMessages);\n }\n imageMessages.push(text);\n this.setState({imageMessages}, afterStateUpdate);\n }\n\n storeAddDebuagMessage(text, afterStateUpdate, clear) {\n const imageMessages = [];\n if (!clear) {\n imageMessages.push(...this.state.imageMessages);\n }\n imageMessages.push(text);\n this.setState({imageMessages}, afterStateUpdate);\n }\n\n storeDeleteImage(del) {\n const {images} = this.state;\n const imageMessages = [];\n const newImages = [];\n for (let index = 0; index < del; index += 1) {\n newImages.push(images[index]);\n }\n for (let index = del + 1; index < images.length; index += 1) {\n newImages.push(images[index]);\n }\n this.setState({images: newImages, imageMessages});\n }\n\n storeMarkSubmitted(submitted) {\n if (submitted && submitted.length > 0) {\n const {userLang} = this.props;\n const {images} = this.state;\n const newImages = [];\n const imageMessages = [];\n let countSubmitted = 0;\n for (let index = 0; index < images.length; index += 1) {\n const image = images[index];\n image.submitted = submitted[index];\n if (submitted[index]) {\n countSubmitted += 1;\n }\n newImages.push(image);\n }\n if (countSubmitted > 0 && countSubmitted < images.length) {\n const text = L.t('actionImagesPartiallyTransmitted', userLang);\n imageMessages.push(text);\n }\n this.setState({images: newImages, imageMessages});\n }\n }\n\n storeClearImageMessages(afterStateUpdate) {\n const imageMessages = [];\n this.setState({imageMessages}, afterStateUpdate);\n }\n\n _storageImage(evt) {\n if (evt.target.files.length > 0) {\n const reader = new FileReader();\n reader.onload = (data) => {\n const image = data.target.result;\n const imageMessage = null;\n if (image) {\n if (image.indexOf('data:image/png;base64,') !== 0 &&\n image.indexOf('data:image/jpeg;base64,') !== 0) {\n this.setImageMessage('actionImageWrongType');\n } else if (image.length > 13981014) {\n this.setImageMessage('actionImageTooLarge');\n } else {\n this.setState({image, imageMessage});\n }\n }\n };\n reader.readAsDataURL(evt.target.files[0]);\n }\n }\n\n _setTip1RequiredMessage(msg) {\n this.setState({tip1msg: msg});\n }\n\n _setTip2RequiredMessage(msg) {\n this.setState({tip2msg: msg});\n }\n\n _setImageMessage(msg) {\n const {userLang} = this.props;\n const images = [];\n const imageMessages = [];\n if (msg) {\n let text = L.t(msg, userLang);\n if (msg === 'actionImageEmpty') {\n if (this.isVideoUpload()) {\n text = L.t('actionVideoEmpty', userLang);\n } else if (this.isAudioUpload()) {\n text = L.t('actionAudioEmpty', userLang);\n }\n }\n imageMessages.push(text);\n\n }\n this.setState({images, imageMessages});\n }\n\n\n render() {\n const {\n classes,\n data,\n userLang,\n lockLayout,\n entry,\n token,\n recheckMaxCalls,\n isActionOpen,\n isActionEnded,\n startDate,\n endDate,\n } = this.props;\n let imageSelectLabel = TextUtil.isEmptyText(data.uploadbuttonText) ?\n L.t('actionUploadButtonLabel', userLang) : data.uploadbuttonText;\n const title = TextUtil.isEmptyText(data.title) ? null : data.title;\n const formTitle = L.t('actionTitle', userLang);\n const formComponent = TextUtil.isEmptyText(data.title) ? 'h2' : 'h3';\n const requestName = 'optional' === data.name ||\n 'mandatory' === data.name;\n const requiredName = 'mandatory' === data.name;\n const requestAddress = 'optional' === data.address ||\n 'mandatory' === data.address;\n const requiredAddress = 'mandatory' === data.address;\n const requestEmail = 'optional' === data.email ||\n 'mandatory' === data.email;\n const requiredEmail = 'mandatory' === data.email;\n const requestPhone = 'optional' === data.phone ||\n 'mandatory' === data.phone;\n const requiredPhone = 'mandatory' === data.phone;\n const requestFreetext = 'optional' === data.freetext ||\n 'mandatory' === data.freetext;\n const requiredFreetext = 'mandatory' === data.freetext;\n const cb1Requested = !TextUtil.isEmptyText(data.cb1Title) &&\n ('optional' === data.cb1 || 'mandatory' === data.cb1);\n const cb1Required = !TextUtil.isEmptyText(data.cb1Title) &&\n 'mandatory' === data.cb1;\n const cb2Requested = !TextUtil.isEmptyText(data.cb2Title) &&\n ('optional' === data.cb2 || 'mandatory' === data.cb2);\n const cb2Required = !TextUtil.isEmptyText(data.cb2Title) &&\n 'mandatory' === data.cb2;\n const cb3Requested = !TextUtil.isEmptyText(data.cb3Title) &&\n ('optional' === data.cb3 || 'mandatory' === data.cb3);\n const cb3Required = !TextUtil.isEmptyText(data.cb3Title) &&\n 'mandatory' === data.cb3;\n const cb4Requested = !TextUtil.isEmptyText(data.cb4Title) &&\n ('optional' === data.cb4 || 'mandatory' === data.cb4);\n const cb4Required = !TextUtil.isEmptyText(data.cb4Title) &&\n 'mandatory' === data.cb4;\n\n const {tip1, tip2, tip1msg, tip2msg} = this.state;\n\n\n const {images, imageMessages} = this.state;\n const requestImageUpload = 'optional' === data.imageupload ||\n 'mandatory' === data.imageupload;\n const requiredImageUpload = 'mandatory' === data.imageupload;\n if (requiredImageUpload) {\n imageSelectLabel += '*';\n }\n const showDates = data.showParticipationTimespan;\n\n const entryId = entry.id;\n const infoText = TextUtil.isEmptyText(data.infoText) ?\n null : data.infoText;\n const tippspielHeader = TextUtil.isEmptyText(data.tippspielHeader) ?\n null : data.tippspielHeader;\n const tippspielDaten = TextUtil.isEmptyText(data.tippspielDaten) ?\n null : data.tippspielDaten;\n\n const tippRequired = tippspielHeader && tippspielDaten;\n\n function _buildTeam(mediaURL, name) {\n return
\n
\n
\n
{name}
\n
\n
\n }\n\n\n function _buildTipInput(value, setValue, errorMsg) {\n\n return
\n {\n let value = event.target.value;\n if(value < 100) {\n setValue(event.target.value);\n }\n }}\n value={value}\n />\n
\n\n }\n\n console.log(\"tippRequired: \", tippRequired)\n const tippspielElement = tippRequired ?\n < div style={{paddingBottom: 16}}>\n \n {tippspielHeader.toUpperCase()}\n \n \n
\n {tippspielDaten}\n
\n
\n {_buildTeam(data.tippspielTeam1MediaURL, data.tippspielTeam1Name)}\n
\n {_buildTipInput(\n tip1,\n (value)=>{this.setState({tip1: value, tip1msg:null});},\n tip1msg)}\n
\n \n
:
\n \n\n
\n {_buildTipInput(\n tip2,\n (value)=>{this.setState({tip2: value,tip2msg: null});},\n tip2msg)}\n
\n {_buildTeam(data.tippspielTeam2MediaURL, data.tippspielTeam2Name)}\n
\n : null;\n\n\n const infoTextElement = infoText ?\n
\n \n \n \n \n \n \n {infoText}\n \n \n \n
: null;\n const titleElement = title ?\n \n \n {title}\n \n \n : null;\n const imageSelector = this.isAudioUpload() ?\n
\n ...
\n }> \n :\n (requestImageUpload ?\n
\n ...
\n }>\n = maxImages}\n isVideoUpload={this.isVideoUpload()}\n />\n \n \n : null);\n if (isActionOpen) {\n return (\n
\n \n {tippspielElement}\n {titleElement}\n {imageSelector}\n {infoTextElement}\n \n {formTitle}\n \n \n\n ...
\n }>\n \n \n \n );\n } else {\n const ended = isActionEnded;\n const text = L.t(ended ?\n 'actionDurationEnded' : 'actionDurationNotStarted',\n userLang);\n return (\n
\n \n
\n );\n }\n }\n}\n\nActionCardContent.propTypes = {\n data: PropTypes.object.isRequired,\n entry: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n lockLayout: PropTypes.func,\n token: PropTypes.string,\n isActionOpen: PropTypes.bool,\n isActionEnded: PropTypes.bool,\n startDate: PropTypes.object,\n endDate: PropTypes.object,\n recheckMaxCalls: PropTypes.func,\n};\n\nexport default function _ActionCardContent(props) {\n const classes = useStyles();\n return ;\n}\n","import React, {PureComponent} from 'react';\nimport PropTypes from \"prop-types\";\n\nimport {makeStyles} from \"@material-ui/core/styles\";\n\nimport L from \"../util/L10n\";\nimport {getActionInfo, getTokenInfo} from '../data/ActionReader';\nimport ActionCardContent from './ActionCardContent';\nimport ActionCardNotOpenBox from '../forms/ActionCardNotOpenBox';\nimport lottieJson from './random.json'\nimport SolvedButton from \"./scrambledword/SolvedButton\";\nimport Typography from \"@material-ui/core/Typography\";\n\n\nconst useStyles = makeStyles((theme) => ({\n actionCard: {},\n formFallback: {\n width: '100%',\n height: '48px',\n textAlign: 'center',\n },\n}));\n\nclass ActionCard extends PureComponent {\n randomGeneratorCalled;\n\n constructor(props) {\n super(props);\n this.state = {\n maxCallsChecked: false,\n maxCallsAvailable: false,\n maxCallsFailed: false,\n token: null,\n waitingForToken: true,\n };\n this.randomGeneratorCalled = false;\n\n this.onDataReceived = this.onDataReceived.bind(this);\n this.onTockenDataReceived = this.onTockenDataReceived.bind(this);\n this.reload = this.reload.bind(this);\n this.onRandomStartClicked = this._onRandomStartClicked.bind(this);\n }\n\n componentDidMount() {\n this.load();\n }\n\n load() {\n const {data, entry} = this.props;\n if (!!data.maxCalls) {\n getActionInfo(entry.id, data.id, this.onDataReceived)\n .catch((error) => {\n this.setState({maxCallsFailed: true});\n });\n } else {\n this.setState({\n maxCallsChecked: true, maxCallsAvailable: true,\n });\n }\n }\n\n onDataReceived(data) {\n if (data && data.state && data.state === 'success') {\n if (data.info && 'countLeft' in data.info) {\n const countLeft = parseInt(data.info.countLeft);\n this.setState({\n maxCallsChecked: true,\n maxCallsAvailable: countLeft > 0,\n });\n } else {\n this.setState({\n maxCallsChecked: true,\n maxCallsAvailable: true,\n });\n }\n } else {\n this.setState({maxCallsFailed: true});\n }\n }\n\n onTockenDataReceived(data) {\n const {stopAnimation} = this.props;\n stopAnimation();\n if (data && data.state && data.state === 'success') {\n this.setState({\n token: data.token,\n waitingForToken: false,\n });\n } else {\n if (data.errormessage && data.errormessage === 'NO TOKEN') {\n this.setState({\n token: null,\n waitingForToken: false,\n });\n } else {\n this.setState({\n maxCallsFailed: true,\n waitingForToken: false,\n });\n }\n }\n }\n\n reload() {\n const {data} = this.props;\n if (!!data.maxCalls) {\n const siht = this;\n this.setState({\n maxCallsChecked: false,\n maxCallsAvailable: false,\n maxCallsFailed: false,\n }, () => {\n setTimeout(() => {\n siht.load();\n }, 20);\n });\n }\n }\n\n actionEnded(end) {\n const now = new Date();\n return !!end && now > end;\n }\n\n actionOpen(start, end) {\n const now = new Date();\n return !this.actionEnded(end) && (!start || now >= start);\n }\n\n _onRandomStartClicked() {\n const {data, entry, showAnimation} = this.props;\n this.randomGeneratorCalled = true;\n showAnimation(lottieJson, true);\n getTokenInfo(entry.id, data.id, this.onTockenDataReceived)\n .catch((error) => {\n this.setState({maxCallsFailed: true});\n });\n }\n\n render() {\n const {classes, data, entry, userLang, lockLayout} = this.props;\n const {\n maxCallsChecked, maxCallsAvailable, maxCallsFailed, token,\n } = this.state;\n\n const startDate = data.startDate ? new Date(data.startDate) :\n (entry.publish_from ?\n new Date(entry.publish_from.replace(' ', 'T')) : null);\n const endDate = data.endDate ? new Date(data.endDate) :\n (entry.publish_till ?\n new Date(entry.publish_till.replace(' ', 'T')) : null);\n const isActionOpen = this.actionOpen(startDate, endDate);\n const isActionEnded = this.actionEnded(endDate);\n\n if (maxCallsChecked && maxCallsAvailable) {\n if (data.randomGeneratorActivate) {\n if (isActionEnded) {\n return
\n \n
\n }\n if (!this.randomGeneratorCalled) {\n return \n\n\n }\n if (token) {\n let msgRandom = \n {data.randomGeneratorTextWon ? data.randomGeneratorTextWon : L.t('actionRandomHit', userLang)}\n ;\n return (\n
\n {msgRandom}\n
\n\n \n
\n );\n } else {\n let text;\n if (maxCallsFailed) {\n text = L.t('actionMaxCallsFailed', userLang);\n } else {\n text = data.randomGeneratorTextLost ?\n data.randomGeneratorTextLost : L.t('actionRandomLost', userLang);\n }\n return \n {text}\n ;\n }\n }\n\n return (\n \n );\n } else if (maxCallsChecked) {\n return (\n
\n \n
\n );\n } else if (maxCallsFailed) {\n return (\n
\n {L.t('actionMaxCallsFailed', userLang)}\n
\n );\n } else {\n return (\n
...
\n );\n }\n }\n}\n\nActionCard.propTypes = {\n classes: PropTypes.object.isRequired,\n data:\n PropTypes.object.isRequired,\n entry:\n PropTypes.object.isRequired,\n userLang:\n PropTypes.string,\n lockLayout:\n PropTypes.func,\n showAnimation:\n PropTypes.func.isRequired,\n stopAnimation:\n PropTypes.func.isRequired,\n};\n\nexport default function _ActionCard(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport ColorButton from '../forms/ColorButton';\n\nconst useStyles = makeStyles((theme) => ({\n}));\n\nclass DeeplinkButton extends PureComponent {\n render() {\n const { data, } = this.props;\n return (\n \n );\n }\n}\n\nDeeplinkButton.propTypes = {\n data: PropTypes.object.isRequired,\n};\n\nexport default function _DeeplinkButton(props) {\n const classes = useStyles();\n return ;\n}\n","import axios from 'axios';\n\nimport config from '../config/api.json';\n\nexport default async function getDealInfo(entrId, dealId, onDataReceived) {\n const url = config.api_base + config.deal_path +\n 'info/' + entrId + '/' + dealId;\n const response = await axios.get(url, {\n transformResponse: [(data) => {\n return data\n }],\n });\n if (response && 200 === response.status && response.data) {\n onDataReceived(JSON.parse(response.data));\n } else {\n throw new Error('request failed', response);\n }\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport Typography from \"@material-ui/core/Typography\";\nimport EventBusyIcon from '@material-ui/icons/EventBusy';\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n color: '#616161',\n backgroundColor: '#ffffff',\n borderRadius: '4px',\n width: '100%',\n height: '48px',\n },\n cardContent: {\n display: 'flex',\n },\n icon: {\n padding: '12px 16px',\n },\n text: {\n fontSize: '14px',\n fontWeight: 500,\n textAlign: 'left',\n padding: '12px 0px',\n },\n}));\n\nclass DealExpiredBox extends PureComponent {\n render() {\n const { classes, text } = this.props;\n return (\n \n \n
\n \n
\n \n {text}\n \n
\n
\n );\n }\n}\n\nDealExpiredBox.propTypes = {\n text: PropTypes.string.isRequired,\n};\n\nexport default function _DealExpiredBox(props) {\n const classes = useStyles();\n return ;\n}\n","import axios from 'axios';\n\nimport config from '../config/api.json';\n\nexport default async function incrementDealCounter(actionName, data,\n onResponseReceived, onResponseFailed) {\n\n const url = config.api_base + config.deal_path + actionName;\n const response = await axios.post(url, data, {\n transformResponse: [(data) => data],\n });\n if (response && 200 === response.status && response.data) {\n try {\n const result = JSON.parse(response.data);\n if ('success' === result.state) {\n onResponseReceived();\n } else if (result.state === 'finished') {\n onResponseFailed('deal finished');\n } else {\n onResponseFailed(result.errormessage);\n }\n } catch (error) {\n onResponseFailed('JSON parse error');\n }\n } else {\n onResponseFailed('request failed');\n }\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport DealExpiredBox from './DealExpiredBox';\nimport ColorButton from '../forms/ColorButton';\nimport L from \"../util/L10n\";\nimport incrementDealCounter from '../data/DealWriter';\n\nclass DealButtonContent extends PureComponent {\n dealStarted() {\n const { data } = this.props;\n const { startDate } = data;\n if (startDate) {\n const now = new Date();\n const start = new Date(startDate);\n return start <= now;\n } else {\n return true;\n }\n }\n\n dealEnded() {\n const { data } = this.props;\n const { endDate } = data;\n if (endDate) {\n const now = new Date();\n const end = new Date(endDate);\n return end <= now;\n } else {\n return false;\n }\n }\n\n getOnClickHandler() {\n const { data, entry, trackDealClicked, recheckMaxCalls } = this.props;\n if (!!data.maxCalls) {\n return (() => {\n trackDealClicked();\n const deal_id = '' + data.id;\n const entry_id = '' + entry.id;\n const submission = { deal_id, entry_id };\n const handleDealIncrement = () => {\n recheckMaxCalls();\n };\n incrementDealCounter('save', submission,\n handleDealIncrement, handleDealIncrement);\n });\n } else {\n return trackDealClicked;\n }\n }\n\n render() {\n const { data, userLang } = this.props;\n const {\n id, buttonText, buttonColor, buttonStyle, email, emailText, subject,\n } = data;\n const onClick = this.getOnClickHandler();\n if (id && buttonText && email) {\n if (!this.dealStarted() || this.dealEnded()) {\n const text = L.t(this.dealEnded() ?\n 'dealDurationEnded' : 'dealDurationNotStarted', userLang);\n return (\n \n );\n } else {\n let url = 'mailto:' + encodeURIComponent(email);\n let headers = '';\n if (subject) {\n headers += 'subject=' + encodeURIComponent(subject);\n }\n if (emailText) {\n headers += (headers ? '&' : '') + 'body=' +\n encodeURIComponent(emailText);\n }\n if (headers) {\n url += '?' + headers;\n }\n return (\n \n );\n }\n } else {\n return null;\n }\n }\n}\n\nDealButtonContent.propTypes = {\n data: PropTypes.object.isRequired,\n entry: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n trackDealClicked: PropTypes.func.isRequired,\n recheckMaxCalls: PropTypes.func,\n};\n\nexport default function _DealButtonContent(props) {\n const { trackEvent } = useMatomo();\n const name = props.data && props.data.id;\n const dealClicked = () => {\n trackEvent({\n category: 'deal',\n action: 'click',\n name,\n });\n return true;\n };\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\n\nimport getDealInfo from '../data/DealReader';\nimport DealExpiredBox from './DealExpiredBox';\nimport DealButtonContent from './DealButtonContent';\nimport L from \"../util/L10n\";\n\nconst useStyles = makeStyles((theme) => ({\n dealButton: {\n },\n fallbackDiv: {\n width: '100%',\n height: '48px',\n textAlign: 'center',\n },\n}));\n\nclass DealButton extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n maxCallsChecked: false,\n maxCallsAvailable: false,\n maxCallsFailed: false,\n };\n this.onDataReceived = this.onDataReceived.bind(this);\n this.reload = this.reload.bind(this);\n }\n\n componentDidMount() {\n this.load();\n }\n\n load() {\n const { data, entry } = this.props;\n if (!!data.maxCalls) {\n getDealInfo(entry.id, data.id, this.onDataReceived)\n .catch((error) => {\n this.setState({ maxCallsFailed: true });\n });\n } else {\n this.setState({\n maxCallsChecked: true, maxCallsAvailable: true,\n });\n }\n }\n\n onDataReceived(data) {\n if (data && data.state && data.state === 'success') {\n this.setState({\n maxCallsChecked: true,\n maxCallsAvailable: true,\n });\n } else if (data && data.state && data.state === 'finished') {\n this.setState({\n maxCallsChecked: true,\n maxCallsAvailable: false,\n });\n } else {\n this.setState({ maxCallsFailed: true });\n }\n }\n\n reload() {\n const { data } = this.props;\n if (!!data.maxCalls) {\n const siht = this;\n this.setState({\n maxCallsChecked: false,\n maxCallsAvailable: false,\n maxCallsFailed: false,\n }, () => {\n setTimeout(() => {\n siht.load();\n }, 20);\n });\n }\n }\n\n render() {\n const { classes, userLang, data, entry } = this.props;\n const {\n maxCallsChecked, maxCallsAvailable, maxCallsFailed,\n } = this.state;\n if (maxCallsChecked && maxCallsAvailable) {\n return (\n \n );\n } else if (maxCallsChecked) {\n return (\n \n );\n } else if (maxCallsFailed) {\n return (\n
\n {L.t('dealMaxCallsFailed', userLang)}\n
\n );\n } else {\n return (\n
...
\n );\n }\n }\n}\n\nDealButton.propTypes = {\n classes: PropTypes.object.isRequired,\n data: PropTypes.object.isRequired,\n entry: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n};\n\nexport default function _DealButton(props) {\n const classes = useStyles();\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport IconButton from '@material-ui/core/IconButton';\nimport FacebookIcon from '@material-ui/icons/Facebook';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport L from \"../util/L10n\";\nimport EntryUrl from '../util/EntryUrl';\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n padding: 0,\n marginLeft: -10,\n },\n facebookIcon: {\n fontSize: 48,\n color: '#5d7dae',\n borderRadius: 8,\n padding: 4,\n },\n}));\n\nclass ShareFacebookButton extends PureComponent {\n render() {\n const { classes, userLang, entry, trackShare } = this.props;\n const url = EntryUrl.getUrl(entry);\n const href = 'https://www.facebook.com/sharer/sharer.php?u=' +\n encodeURIComponent(url);\n const altText = L.t('shareFacebookAlt', userLang);\n return (\n {\n trackShare(url);\n }}\n >\n \n \n \n );\n }\n}\n\nShareFacebookButton.propTypes = {\n classes: PropTypes.object,\n entry: PropTypes.object,\n trackShare: PropTypes.func,\n userLang: PropTypes.string,\n};\n\nexport default function _ShareFacebookButton(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const onShare = (url) => {\n trackEvent({\n category: 'share',\n action: 'facebook',\n name: url,\n });\n return true;\n };\n return (\n \n );\n}\n","import * as React from \"react\";\nimport {createSvgIcon} from \"@material-ui/core/utils\";\n\nexport default createSvgIcon(, 'TwitterX');\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport IconButton from '@material-ui/core/IconButton';\nimport TwitterIcon from '@material-ui/icons/Twitter';\nimport TwitterXIcon from '../util/TwitterX';\n\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport L from \"../util/L10n\";\nimport EntryUrl from '../util/EntryUrl';\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n padding: 0,\n marginLeft: -10,\n },\n twitterIcon: {\n fontSize: 40,\n transform: 'scale(0.643)',\n color: '#ffffff',\n backgroundColor: '#000000',\n borderRadius: 8,\n padding: 8,\n },\n}));\n\nclass ShareTwitterButton extends PureComponent {\n render() {\n const { classes, userLang, entry, trackShare } = this.props;\n const url = EntryUrl.getUrl(entry);\n const params = { url };\n const text = L.t('shareTwitterText', userLang, params);\n const href = 'https://twitter.com/intent/tweet?text=' +\n encodeURIComponent(text) + '&url=' + encodeURIComponent(url);\n const altText = L.t('shareTwitterAlt', userLang);\n return (\n {\n trackShare(url);\n }}\n >\n \n \n \n );\n }\n}\n\nShareTwitterButton.propTypes = {\n classes: PropTypes.object,\n entry: PropTypes.object,\n trackShare: PropTypes.func,\n userLang: PropTypes.string,\n};\n\nexport default function _ShareTwitterButton(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const onShare = (url) => {\n trackEvent({\n category: 'share',\n action: 'twitter',\n name: url,\n });\n return true;\n };\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport IconButton from '@material-ui/core/IconButton';\nimport WhatsAppIcon from '@material-ui/icons/WhatsApp';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport L from \"../util/L10n\";\nimport EntryUrl from '../util/EntryUrl';\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n padding: 0,\n marginLeft: -10,\n },\n whatsappIcon: {\n fontSize: 48,\n transform: 'scale(0.643)',\n color: '#ffffff',\n backgroundColor: '#25de66',\n borderRadius: 8,\n padding: 4,\n },\n}));\n\nclass ShareWhatsappButton extends PureComponent {\n render() {\n const { classes, userLang, entry, trackShare } = this.props;\n const url = EntryUrl.getUrl(entry);\n const params = { url };\n const text = L.t('shareWhatsappText', userLang, params);\n const href = 'https://wa.me/?text=' + encodeURIComponent(text);\n const altText = L.t('shareWhatsappAlt', userLang);\n return (\n {\n trackShare(url);\n }}\n >\n \n \n \n );\n }\n}\n\nShareWhatsappButton.propTypes = {\n classes: PropTypes.object,\n entry: PropTypes.object,\n trackShare: PropTypes.func,\n userLang: PropTypes.string,\n};\n\nexport default function _ShareWhatsappButton(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const onShare = (url) => {\n trackEvent({\n category: 'share',\n action: 'whatsapp',\n name: url,\n });\n return true;\n };\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport IconButton from '@material-ui/core/IconButton';\nimport MailIcon from '@material-ui/icons/Mail';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport L from \"../util/L10n\";\nimport EntryUrl from '../util/EntryUrl';\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n padding: 0,\n marginLeft: -10,\n },\n mailIcon: {\n fontSize: 48,\n transform: 'scale(0.643)',\n color: '#ffffff',\n backgroundColor: '#9d9d9d',\n borderRadius: 8,\n padding: 4,\n },\n}));\n\nclass ShareEmailButton extends PureComponent {\n render() {\n const { classes, userLang, entry, trackShare } = this.props;\n const { title } = entry;\n const url = EntryUrl.getUrl(entry);\n const params = { title, url };\n const subject = L.t('shareEmailSubject', userLang, params);\n const body = L.t('shareEmailBody', userLang, params);\n const href = 'mailto:?subject=' + encodeURIComponent(subject) +\n '&body=' + encodeURIComponent(body);\n const altText = L.t('shareEmailAlt', userLang);\n return (\n {\n trackShare(url);\n }}\n >\n \n \n \n );\n }\n}\n\nShareEmailButton.propTypes = {\n classes: PropTypes.object,\n entry: PropTypes.object,\n trackShare: PropTypes.func,\n userLang: PropTypes.string,\n};\n\nexport default function _ShareEmailButton(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const onShare = (url) => {\n trackEvent({\n category: 'share',\n action: 'email',\n name: url,\n });\n return true;\n };\n return (\n \n );\n}\n","import React, { PureComponent, Fragment } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport IconButton from '@material-ui/core/IconButton';\nimport LinkIcon from '@material-ui/icons/Link';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport Alert from '@material-ui/lab/Alert';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport L from \"../util/L10n\";\nimport EntryUrl from '../util/EntryUrl';\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n iconButton: {\n padding: 0,\n marginLeft: -10,\n },\n linkIcon: {\n fontSize: 48,\n transform: 'scale(0.643)',\n color: '#ffffff',\n backgroundColor: '#9d9d9d',\n borderRadius: 8,\n padding: 4,\n },\n}));\n\nclass ShareClipboardButton extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n copied: false,\n };\n this.closeSnackbar = this.closeSnackbar.bind(this);\n }\n\n closeSnackbar(evt, reason) {\n if (reason === 'clickaway') {\n return;\n }\n this.setState({ copied: false });\n }\n\n render() {\n const { classes, userLang, entry, trackShare } = this.props;\n const { copied } = this.state;\n const url = EntryUrl.getUrl(entry);\n const altText = L.t('shareClipboardAlt', userLang);\n const onClick = () => {\n if (navigator.clipboard) {\n navigator.clipboard.writeText(url).then(() => {\n this.setState({ copied: true });\n trackShare(url);\n })\n } else {\n const textArea = document.createElement('textarea');\n textArea.value = url;\n textArea.style.top = 0;\n textArea.style.left = 0;\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n try {\n if (document.execCommand('copy')) {\n this.setState({ copied: true });\n trackShare(url);\n }\n } catch (e) {\n // uable to copy, ignore.\n }\n document.body.removeChild(textArea);\n }\n };\n return (\n \n \n \n \n \n \n \n {L.t('shareClipboardSuccess', userLang)}\n \n \n \n );\n }\n}\n\nShareClipboardButton.propTypes = {\n classes: PropTypes.object,\n entry: PropTypes.object,\n trackShare: PropTypes.func,\n userLang: PropTypes.string,\n};\n\nexport default function _ShareClipboardButton(props) {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const onShare = (url) => {\n trackEvent({\n category: 'share',\n action: 'clipboard',\n name: url,\n });\n return true;\n };\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Divider from '@material-ui/core/Divider';\n\nimport ShareFacebookButton from './ShareFacebookButton';\nimport ShareTwitterButton from './ShareTwitterButton';\nimport ShareWhatsappButton from './ShareWhatsappButton';\nimport ShareEmailButton from './ShareEmailButton';\nimport ShareClipboardButton from './ShareClipboardButton';\nimport L from \"../util/L10n\";\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n color: '#000000',\n marginBottom: 3,\n },\n divider: {\n height: 2,\n backgroundColor: '#f3f1f3',\n marginBottom: 8,\n },\n}));\n\nclass ShareCard extends PureComponent {\n render() {\n const { classes, userLang, entry } = this.props;\n const title = L.t('shareTitle', userLang);\n return (\n
\n \n {title}\n \n \n \n \n \n \n \n
\n );\n }\n}\n\nShareCard.propTypes = {\n userLang: PropTypes.string,\n entry: PropTypes.object,\n};\n\nexport default function _ShareCard(props) {\n const classes = useStyles();\n return ;\n}\n","export default class Columns {\n constructor() {\n this.arraySingle = [];\n this.arrayDouble = [];\n }\n\n addSlider(slider) {\n this.addToBoth(slider[0], slider[1]);\n }\n\n addFull(item) {\n this.addToBoth(item[0], item[1]);\n }\n\n finish() {\n }\n\n getSingle() {\n return this.arraySingle;\n }\n\n getDouble() {\n return this.arrayDouble;\n }\n\n // end of interface.\n\n\n addToBoth(itemSingle, itemDouble) {\n this.addToSingle(itemSingle);\n this.addToDouble(itemDouble);\n }\n\n addToSingle(item) {\n this.arraySingle.push(item);\n }\n\n addToDouble(item) {\n this.arrayDouble.push(item);\n }\n}\n","import React, { Fragment } from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport ImageSlider from '../carousel/ImageSlider';\n\nexport default class SliderBuilder {\n static build(cards, pos, userLang, manager, fullscreenVideo, duplicates,\n maxElements) {\n const single =\n \n \n ;\n const double =\n \n \n \n \n \n \n ;\n return [single, double];\n }\n}\n","import React, { Fragment } from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport ImageSlider from '../carousel/ImageSlider';\n\nexport default class MediaSliderBuilder {\n static build(cards, pos, userLang, manager, title, fullscreenVideo,\n duplicates, maxElements) {\n const single =\n \n \n {title}\n \n \n \n \n ;\n const double =\n \n \n \n {title}\n \n \n \n \n \n \n \n ;\n return [single, double];\n }\n\n static buildTitle(pos, title) {\n const single =\n \n \n {title}\n \n ;\n const double =\n \n \n \n {title}\n \n \n ;\n return [single, double];\n }\n}\n","import React, { Fragment } from \"react\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nexport default class FullBuilder {\n static build(card, pos) {\n const single =\n \n {card}\n ;\n const double =\n \n \n \n {card}\n \n \n ;\n return [single, double];\n }\n}\n","import React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Typography from \"@material-ui/core/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Icon from '@material-ui/core/Icon';\nimport InsertPhotoIcon from '@material-ui/icons/InsertPhoto';\n\nconst useStyles = makeStyles((theme) => ({\n headline: {\n margin: 0,\n paddingTop: 24,\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'flex-start',\n },\n title: {\n color: '#000000',\n paddingTop: 24,\n },\n titleWithIcon: {\n color: '#000000',\n },\n icon: {\n minWidth: 28,\n color: '#000000',\n },\n}));\n\nclass SectionTitle extends PureComponent {\n render() {\n const { title, showMediaIcon, classes, } = this.props;\n if (title) {\n if (showMediaIcon) {\n return (\n

\n \n \n \n \n {title}\n \n

\n );\n } else {\n return (\n \n {title}\n \n );\n }\n } else {\n return null;\n }\n }\n}\n\nSectionTitle.propTypes = {\n title: PropTypes.string,\n showMediaIcon: PropTypes.bool,\n};\n\nexport default function _SectionTitle(props) {\n const classes = useStyles();\n return ;\n}\n","'use client'\n\nconst { createElement, useEffect, useRef } = require('react')\n\nexport default function DangerouslySetHtmlContent({\n html,\n dangerouslySetInnerHTML,\n allowRerender,\n ...rest\n }) {\n // We remove 'dangerouslySetInnerHTML' from props passed to the div\n const divRef = useRef(null)\n const isFirstRender = useRef(true)\n\n useEffect(() => {\n if (!html || !divRef.current) throw new Error(\"html prop can't be null\")\n if (!isFirstRender.current) return\n isFirstRender.current = Boolean(allowRerender)\n\n const slotHtml = document.createRange().createContextualFragment(html) // Create a 'tiny' document and parse the html string\n divRef.current.innerHTML = '' // Clear the container\n divRef.current.appendChild(slotHtml) // Append the new content\n }, [html, divRef])\n\n return createElement('div', { ...rest, ref: divRef })\n}\n\n","import React from \"react\";\n//import L from \"../util/L10n\";\nimport useResizeObserver from '@react-hook/resize-observer'\nimport DangerouslySetHtmlContent from '../../util/DangerouslySetHtmlContent'\n\nfunction useSize(target) {\n const [size, setSize] = React.useState();\n\n React.useLayoutEffect(() => {\n target && setSize(target.getBoundingClientRect());\n }, [target]);\n\n // Where the magic happens\n useResizeObserver(target, (entry) => setSize(entry.contentRect));\n return size;\n}\n\n\nexport default function ExternalContent({\n extType, display\n /*classes,\n userLang,*/\n\n }) {\n\n const [target, setTarget] = React.useState();\n\n\n let myStyle = {\n\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column'\n };\n\n let html = \"
Hallo \" + extType + \"
\";\n\n let dpaEM24LiveCenter = `\n
\n
\n
\n
\n
\n
\n \n `;\n if (display) {\n dpaEM24LiveCenter = dpaEM24LiveCenter + `\n \n `;\n }\n\n let dpaEM24Ergebnisse = `\n
\n
\n
\n
\n
\n
\n \n `;\n if (display) {\n dpaEM24Ergebnisse = dpaEM24Ergebnisse + `\n \n `;\n }\n\n let dpaEM24Spielplan = `\n
\n
\n
\n
\n
\n
\n \n \n `;\n\n\n if (display) {\n dpaEM24Spielplan = dpaEM24Spielplan + `\n \n `;\n }\n\n\n // Start Olympia24\n let dpaOlympia24LiveCenter = `\n
\n
\n
\n
\n
\n
\n \n `;\n if (display) {\n dpaOlympia24LiveCenter = dpaOlympia24LiveCenter + `\n \n `;\n }\n //--\n let dpaOlympia24Medaillenspiegel = `\n
\n
\n
\n
\n
\n
\n \n `;\n if (display) {\n dpaOlympia24Medaillenspiegel = dpaOlympia24Medaillenspiegel + `\n \n `;\n }\n //--\n let dpaOlympia24Bildergalerie = `\n
\n
\n
\n
\n
\n
\n \n `;\n if (display) {\n dpaOlympia24Bildergalerie = dpaOlympia24Bildergalerie + `\n \n `;\n }\n\n // End Olympia24\n\n\n if (extType === 1) {\n html = dpaEM24LiveCenter;\n } else if (extType === 2) {\n html = dpaEM24Ergebnisse;\n } else if (extType === 3) {\n html = dpaEM24Spielplan;\n } else if (extType === 4) {\n html = dpaOlympia24LiveCenter;\n } else if (extType === 5) {\n html = dpaOlympia24Medaillenspiegel;\n } else if (extType === 6) {\n html = dpaOlympia24Bildergalerie;\n }\n return (\n
\n \n
\n );\n}\n","import React, {PureComponent} from 'react';\nimport PropTypes from \"prop-types\";\n\nimport {makeStyles} from \"@material-ui/core/styles\";\n\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport {withRouter} from \"react-router-dom\";\nimport ExternalContent from \"./externalcontent/ExternalContent\";\n\nconst useStyles = makeStyles((theme) => ({\n card: {\n borderRadius: 8,\n transform: 'translateZ(0)',\n },\n focusedCard: {\n borderRadius: 8,\n transform: 'translateZ(0)',\n outline: '6px solid #888888',\n },\n textOnlyCard: {\n borderRadius: 0,\n transform: 'translateZ(0)',\n outline: '1px solid #888888',\n },\n cardContent: {\n padding: 0,\n },\n}));\n\nclass ExternalContentCard extends PureComponent {\n constructor(props) {\n super(props);\n const focused = false;\n this.state = { focused };\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n onFocus() {\n const focused = true;\n this.setState({ focused });\n }\n\n onBlur() {\n const focused = false;\n this.setState({ focused });\n }\n\n render() {\n const {\n classes, data, userLang, textOnly,\n } = this.props;\n const {focused} = this.state;\n if (data.display) {\n return (\n \n \n \n \n \n \n );\n } else {\n return (\n \n \n \n \n );\n }\n }\n\n}\n\nExternalContentCard.propTypes = {\n data: PropTypes.object,\n parentEntry:PropTypes.object,\n userLang: PropTypes.string,\n};\n\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return ;\n});\n\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Grid from '@material-ui/core/Grid';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react';\n\nimport getViewData from './data/ViewReader';\nimport EntryPageMessage from './entry/EntryPageMessage';\nimport ImageCard from './cards/ImageCard';\nimport CarouselImageItem from './carousel/CarouselImageItem';\nimport ImageCardContent from './cards/ImageCardContent';\nimport VideoCard from './cards/VideoCard';\nimport VideoCardContent from './cards/VideoCardContent';\nimport AudioCard from './cards/AudioCard';\nimport YoutubeCard from './cards/YoutubeCard';\nimport CarouselVideoItem from './carousel/CarouselVideoItem';\nimport TextCard from './cards/TextCard';\nimport QuoteCard from './cards/QuoteCard';\nimport ScrambledWordCard from './cards/ScrambledWordCard';\nimport SurveyCard from './cards/SurveyCard';\nimport InfosCard from './cards/InfosCard';\nimport AccordionCard from './cards/AccordionCard';\nimport CompetitionCard from './cards/CompetitionCard';\nimport ActionCard from './cards/ActionCard';\nimport DeeplinkButton from './cards/DeeplinkButton';\nimport DealButton from './cards/DealButton';\nimport ShareCard from './share/ShareCard';\nimport CarouselManager from './carousel/CarouselManager';\nimport Config from './config/ui_settings.json';\nimport L from './util/L10n';\nimport Columns from './entrylayout/Columns';\nimport TopSliderBuilder from './entrylayout/SliderBuilder';\nimport MediaSliderBuilder from './entrylayout/MediaSliderBuilder';\nimport FullBuilder from './entrylayout/FullBuilder';\nimport SectionTitle from './entrylayout/SectionTitle';\nimport TextUtil from './util/TextUtil';\nimport PageHelmet from './util/PageHelmet';\nimport EntryUrl from './util/EntryUrl';\nimport AltText from './util/AltText';\nimport headViewData from \"./data/ViewReaderWithHeadRequest\";\nimport ExternalContentCard from \"./cards/ExternalContentCard\";\n\nconst useStyles = makeStyles({\n});\n\nclass EntryPage extends PureComponent {\n constructor(props) {\n super(props);\n const historyState = props.location.state || {};\n let data = null;\n let lastModified = null;\n if (historyState.data) {\n data = historyState.data;\n lastModified = historyState.lastModified;\n }\n const extendedId = props.routing.match.params.id;\n const id = extendedId ? extendedId.split('-')[0] : '';\n this.state = {\n id: id,\n data: data,\n lastModified: lastModified || null,\n error: null,\n twoColumnLayout: props.twoColumnLayout,\n layoutLocked: false,\n }\n this.onDataReceived = this._onDataReceived.bind(this);\n this.lockLayout = this._lockLayout.bind(this);\n }\n\n componentDidMount() {\n if (window.FgfChannel && this.props.routing) {\n window.FgfChannel.postMessage(\"onPathChanged:\" + this.props.routing.location.pathname);\n }\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n this.load();\n }\n\n componentDidUpdate() {\n if (!this.state.layoutLocked) {\n const { twoColumnLayout, } = this.props;\n if (twoColumnLayout !== this.state.twoColumnLayout) {\n this.setState({ twoColumnLayout, });\n }\n }\n }\n\n _lockLayout(locked) {\n if (!!locked !== this.state.layoutLocked) {\n this.setState({ layoutLocked: locked, });\n }\n }\n\n load() {\n const { appServerPort, previewToken, previewDate } = this.props;\n const { data, lastModified } = this.state;\n if (!data) {\n getViewData(this.state.id, null, this.onDataReceived,\n appServerPort, previewToken).catch((error) => {\n // console.warn('EntryPage.load', error);\n this.setState({ error: error, });\n })\n } else {\n headViewData(this.state.id, null, this.onDataReceived,\n appServerPort, previewToken,\n previewDate, lastModified).catch((error) => {\n //console.log(error)\n this.setState({ error: error });\n });\n }\n }\n\n _onDataReceived(data, lastModified) {\n const { history, location } = this.props;\n const state = location.state || {};\n state.data = data;\n state.lastModified = lastModified;\n history.replace({ state });\n this.setState({ data: data, lastModified: lastModified, error: null })\n }\n\n\n render() {\n const { userLang } = this.props;\n if (this.state.error) {\n return (\n \n );\n } else if (this.state.data) {\n const {\n documentTitle, description, canonicalUrl, ogImage, ogLocale,\n ogType, ogArticlePublishedTime, ogArticleExpirationTime,\n } = this.buildMetaData();\n return (\n \n \n {this.renderContent()}\n \n );\n } else {\n return (\n \n );\n }\n }\n\n renderContent() {\n const { textOnly } = this.props;\n const { twoColumnLayout, data } = this.state;\n const columns = this.buildPositions(data);\n if (twoColumnLayout && !textOnly) {\n return columns.getDouble();\n } else {\n return columns.getSingle();\n }\n }\n\n buildMetaData() {\n const { userLang } = this.props;\n let documentTitle = L.t('appTitle', userLang);\n const {\n title, kacheln, publish_from, publish_till,\n } = this.state.data;\n if (title) {\n documentTitle = title + ' - ' + documentTitle;\n }\n const descriptionText = new AltText();\n const canonicalUrl = EntryUrl.getUrl(this.state.data);\n let ogImage = undefined;\n for (let kachel of kacheln) {\n if (!ogImage && \"uestra/altkachel\" === kachel.type &&\n 'big' === kachel.teaser && kachel.mediaURL) {\n ogImage = kachel.mediaURL;\n descriptionText.append(kachel.subheader);\n descriptionText.append(kachel.header);\n descriptionText.append(kachel.text);\n }\n }\n const description = descriptionText.toString();\n // TODO The content locale is fixed to German, therefore, the locale\n // if fixed here, too.\n const ogLocale = 'de_DE';\n const ogType = 'article';\n const ogArticlePublishedTime = publish_from;\n const ogArticleExpirationTime = publish_till;\n return ({\n documentTitle, description, canonicalUrl, ogImage, ogLocale,\n ogType, ogArticlePublishedTime, ogArticleExpirationTime,\n });\n }\n\n buildPositions(entry) {\n const {\n textOnly, topSliderMaxElements, mediaSliderMaxElements,\n } = this.props;\n const columns = new Columns();\n let pos = 0;\n let positions = [];\n let topSlider = [];\n let mediaSlider = [];\n let pressReleases = [];\n for (let kachel of entry.kacheln) {\n if (kachel.teaser) {\n continue;\n }\n if (('uestra/altkachel' === kachel.type ||\n 'uestra/videokachel' === kachel.type ||\n 'uestra/audiokachel' === kachel.type) &&\n kachel.mediaURL) {\n if (kachel.slider) {\n topSlider.push(kachel);\n } else if (kachel.mediaSlider) {\n mediaSlider.push(kachel);\n } else {\n positions.push(kachel);\n }\n } else if ('uestra/text' === kachel.type &&\n !TextUtil.isEmptyText(kachel.content)) {\n positions.push(kachel);\n } else if ('uestra/quote' === kachel.type &&\n !TextUtil.isEmptyText(kachel.quote)) {\n positions.push(kachel);\n } else if ('uestra/external' === kachel.type &&\n !TextUtil.isEmptyText(kachel.extType)) {\n positions.push(kachel);\n } else if ('uestra/shakeword' === kachel.type &&\n !TextUtil.isEmptyText(kachel.shaked) &&\n !TextUtil.isEmptyText(kachel.solved)) {\n positions.push(kachel);\n } else if ('uestra/survey' === kachel.type &&\n !TextUtil.isEmptyText(kachel.question) &&\n !TextUtil.isEmptyText(kachel.answer1) &&\n !TextUtil.isEmptyText(kachel.answer2)) {\n positions.push(kachel);\n } else if ('uestra/deeplinkbutton' === kachel.type &&\n !TextUtil.isEmptyText(kachel.url) &&\n !TextUtil.isEmptyText(kachel.title)) {\n positions.push(kachel);\n } else if ('uestra/infos' === kachel.type &&\n !TextUtil.isEmptyText(kachel.label1) &&\n !TextUtil.isEmptyText(kachel.url1)) {\n positions.push(kachel);\n } else if ('uestra/competition' === kachel.type &&\n !TextUtil.isEmptyText(kachel.id)) {\n positions.push(kachel);\n } else if ('uestra/action' === kachel.type &&\n !TextUtil.isEmptyText(kachel.id)) {\n positions.push(kachel);\n } else if ('uestra/deal' === kachel.type &&\n !TextUtil.isEmptyText(kachel.id) &&\n !TextUtil.isEmptyText(kachel.buttonText) &&\n !TextUtil.isEmptyText(kachel.email)) {\n positions.push(kachel);\n } else if ('uestra/mediaslider' === kachel.type) {\n positions.push(kachel);\n } else if ('uestra/pressrelease' === kachel.type &&\n !TextUtil.isEmptyText(kachel.title) &&\n !TextUtil.isEmptyText(kachel.text)) {\n pressReleases.push(kachel);\n } else if ('uestra/youtube' === kachel.type &&\n !TextUtil.isEmptyText(kachel.youtubeId)) {\n positions.push(kachel);\n } else if ('uestra/akkordeon' === kachel.type) {\n positions.push(kachel);\n } else {\n // console.warn('Unhandled tile type', kachel.type);\n }\n }\n if (topSlider.length > 0) {\n if (textOnly) {\n let cardno = 0;\n for (let kachel of topSlider) {\n if (topSliderMaxElements === 0 ||\n cardno < topSliderMaxElements) {\n columns.addFull(this.buildFull(kachel, pos));\n cardno += 1;\n pos += 1;\n }\n }\n } else {\n columns.addSlider(this.buildTopSlider(topSlider, pos,\n topSliderMaxElements));\n pos += 1;\n }\n }\n let mediaSliderAdded = false;\n let pressReleasesAdded = false;\n for (let position of positions) {\n console.log(position.type);\n if ('uestra/altkachel' === position.type) {\n columns.addFull(this.buildFull(position, pos));\n } else if ('uestra/videokachel' === position.type) {\n columns.addFull(this.buildVideo(position, pos));\n } else if ('uestra/audiokachel' === position.type) {\n columns.addFull(this.buildAudio(position, pos));\n } else if ('uestra/youtube' === position.type) {\n columns.addFull(this.buildYoutube(position, pos));\n } else if ('uestra/text' === position.type) {\n columns.addFull(this.buildText(position, pos));\n } else if ('uestra/quote' === position.type) {\n columns.addFull(this.buildQuote(position, pos));\n } else if ('uestra/external' === position.type) {\n columns.addFull(this.buildExternalContent(position, pos));\n } else if ('uestra/shakeword' === position.type) {\n columns.addFull(this.buildScrambledWord(position, pos));\n } else if ('uestra/survey' === position.type) {\n columns.addFull(this.buildSurvey(position, pos));\n } else if ('uestra/deeplinkbutton' === position.type) {\n columns.addFull(this.buildDeeplinkButton(position, pos));\n } else if ('uestra/infos' === position.type) {\n if (pressReleasesAdded || pressReleases.length === 0) {\n columns.addFull(this.buildInfos(position, pos, null));\n } else {\n columns.addFull(this.buildInfos(position, pos,\n pressReleases));\n pressReleasesAdded = true;\n }\n } else if ('uestra/akkordeon' === position.type) {\n console.log('uestra/akkordeon', position);\n columns.addFull(this.buildAccordion(position, pos));\n } else if ('uestra/competition' === position.type) {\n columns.addFull(this.buildCompetition(position, pos, entry.id));\n } else if ('uestra/action' === position.type) {\n columns.addFull(this.buildAction(position, pos, entry));\n } else if ('uestra/deal' === position.type) {\n columns.addFull(this.buildDeal(position, pos, entry));\n } else if ('uestra/mediaslider' === position.type\n && !mediaSliderAdded && mediaSlider.length > 0) {\n if (textOnly) {\n columns.addSlider(this.buildMediaSliderTitle(pos,\n position.title));\n let cardno = 0;\n for (let kachel of mediaSlider) {\n if (mediaSliderMaxElements === 0 ||\n cardno < mediaSliderMaxElements) {\n columns.addFull(this.buildFull(kachel, pos));\n cardno += 1;\n pos += 1;\n }\n }\n } else {\n columns.addSlider(this.buildMediaSlider(mediaSlider, pos,\n position.title, mediaSliderMaxElements));\n }\n mediaSliderAdded = true;\n }\n pos += 1;\n }\n if (!mediaSliderAdded && mediaSlider.length > 0) {\n if (textOnly) {\n columns.addSlider(this.buildMediaSliderTitle(pos, ''));\n let cardno = 0;\n for (let kachel of mediaSlider) {\n if (mediaSliderMaxElements === 0 ||\n cardno < mediaSliderMaxElements) {\n columns.addFull(this.buildFull(kachel, pos));\n cardno += 1;\n pos += 1;\n }\n }\n } else {\n columns.addSlider(this.buildMediaSlider(mediaSlider, pos, '',\n mediaSliderMaxElements));\n pos += 1;\n }\n }\n if (!pressReleasesAdded && pressReleases.length > 0) {\n columns.addFull(this.buildInfos({}, pos, pressReleases));\n pos += 1;\n }\n if (entry.share) {\n columns.addFull(this.buildShare(entry, pos));\n pos += 1;\n }\n columns.finish();\n return columns;\n }\n\n buildTopSlider(entries, pos, maxElements) {\n const { userLang, fullscreenVideo, } = this.props;\n const cardsMgr = this.buildSliderCards(entries, pos);\n return TopSliderBuilder.build(cardsMgr[0], pos, userLang,\n cardsMgr[1], fullscreenVideo, cardsMgr[2], maxElements);\n }\n\n buildMediaSlider(entries, pos, title, maxElements) {\n const { userLang, fullscreenVideo, } = this.props;\n const titleText = TextUtil.isEmptyText(title) ?\n L.t('mediaSliderTitle', userLang) : title;\n const sliderTitle =\n ;\n const cardsMgr = this.buildSliderCards(entries, pos);\n return MediaSliderBuilder.build(cardsMgr[0], pos, this.props.userLang,\n cardsMgr[1], sliderTitle, fullscreenVideo, cardsMgr[2],\n maxElements);\n }\n\n buildMediaSliderTitle(pos, title) {\n const { userLang } = this.props;\n const titleText = TextUtil.isEmptyText(title) ?\n L.t('mediaSliderTitle', userLang) : title;\n const sliderTitle =\n ;\n return MediaSliderBuilder.buildTitle(pos, sliderTitle);\n }\n\n buildSliderCards(kacheln, pos) {\n const {\n videoQuality, videoQualityCallback, deviceSize,\n fullscreenVideo, fullscreenVideoCallback, userLang,\n } = this.props;\n let cards = [];\n const mgr = new CarouselManager();\n const duplicates = [];\n let cardno = 0;\n if (kacheln.length === 1) {\n const kachel = kacheln[0];\n if ('uestra/altkachel' === kachel.type) {\n cards.push(\n \n );\n } else if ('uestra/videokachel' === kachel.type) {\n cards.push(\n \n );\n } else {\n // console.warn('Unhandled tile type in slider', kachel.type);\n }\n } else {\n for (let kachel of kacheln) {\n if ('uestra/altkachel' === kachel.type) {\n cards.push(\n \n );\n duplicates.push(\n \n );\n } else if ('uestra/videokachel' === kachel.type) {\n cards.push(\n \n );\n duplicates.push(\n \n );\n } else {\n // console.warn('Unhandled tile type in slider', kachel.type);\n }\n cardno++;\n }\n }\n return [cards, mgr, duplicates.slice(0, 2)];\n }\n\n buildFull(kachel, pos) {\n const { deviceSize, textOnly } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildText(kachel, pos) {\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildScrambledWord(kachel, pos) {\n const { userLang,showAnimation, stopAnimation } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildExternalContent(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildSurvey(kachel, pos) {\n const { userLang } = this.props;\n const {data} = this.state;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildQuote(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildDeeplinkButton(kachel, pos) {\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildAccordion(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildInfos(kachel, pos, pressReleases) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildShare(entry, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildCompetition(kachel, pos, entryId) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildAction(kachel, pos, entry) {\n const { userLang, showAnimation, stopAnimation } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildDeal(kachel, pos, entry) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildVideo(kachel, pos) {\n const {\n videoQuality, videoQualityCallback,\n fullscreenVideo, fullscreenVideoCallback, userLang,\n } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildAudio(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildYoutube(kachel, pos) {\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n}\n\nEntryPage.propTypes = {\n routing: PropTypes.object.isRequired,\n appServerPort: PropTypes.number,\n previewToken: PropTypes.string,\n previewDate: PropTypes.string,\n userLang: PropTypes.string,\n videoQuality: PropTypes.number,\n videoQualityCallback: PropTypes.func,\n deviceSize: PropTypes.string,\n fullscreenVideo: PropTypes.bool,\n fullscreenVideoCallback: PropTypes.func,\n textOnly: PropTypes.bool,\n topSliderMaxElements: PropTypes.number,\n mediaSliderMaxElements: PropTypes.number,\n twoColumnLayout: PropTypes.bool,\n showAnimation: PropTypes.func.isRequired,\n stopAnimation: PropTypes.func.isRequired,\n};\n\nEntryPage.defaultProps = {\n topSliderMaxElements: 10,\n mediaSliderMaxElements: 20,\n}\n\nexport default withRouter((props) => {\n const classes = useStyles();\n const theme = useTheme();\n const isLandscape = useMediaQuery('@media (orientation: landscape)');\n const isWideScreen =\n useMediaQuery(theme.breakpoints.up(Config.entryWidescreenMinWidth));\n const twoColumnLayout = isLandscape || isWideScreen;\n let documentTitle = L.t('appTitle', props.userLang);\n if (props.routing.location.state) {\n const data = props.routing.location.state.data;\n if (data && data.title) {\n documentTitle = data.title + ' - ' + documentTitle;\n }\n }\n const { trackPageView, } = useMatomo();\n React.useEffect(() => {\n trackPageView({ documentTitle, });\n }, [trackPageView, documentTitle]);\n return (\n \n );\n});\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Grid from '@material-ui/core/Grid';\n\nimport getViewData from './data/ViewReader';\nimport EntryPageMessage from './entry/EntryPageMessage';\nimport ImageCard from './cards/ImageCard';\nimport CarouselImageItem from './carousel/CarouselImageItem';\nimport ImageCardContent from './cards/ImageCardContent';\nimport VideoCard from './cards/VideoCard';\nimport VideoCardContent from './cards/VideoCardContent';\nimport AudioCard from './cards/AudioCard';\nimport CarouselVideoItem from './carousel/CarouselVideoItem';\nimport TextCard from './cards/TextCard';\nimport QuoteCard from './cards/QuoteCard';\nimport InfosCard from './cards/InfosCard';\nimport AccordionCard from './cards/AccordionCard';\nimport CompetitionCard from './cards/CompetitionCard';\nimport ActionCard from './cards/ActionCard';\nimport DeeplinkButton from './cards/DeeplinkButton';\nimport DealButton from './cards/DealButton';\nimport CarouselManager from './carousel/CarouselManager';\nimport Config from './config/ui_settings.json';\nimport L from './util/L10n';\nimport Columns from './entrylayout/Columns';\nimport TopSliderBuilder from './entrylayout/SliderBuilder';\nimport MediaSliderBuilder from './entrylayout/MediaSliderBuilder';\nimport FullBuilder from './entrylayout/FullBuilder';\nimport SectionTitle from './entrylayout/SectionTitle';\nimport TextUtil from './util/TextUtil';\nimport PageHelmet from './util/PageHelmet';\nimport AltText from './util/AltText';\nimport CanonicalUrl from './util/CanonicalUrl';\n\nconst useStyles = makeStyles({\n});\n\nclass AboutUsPage extends PureComponent {\n constructor(props) {\n super(props);\n const historyState = props.location.state || {};\n const { data } = historyState;\n this.state = {\n error: null,\n data: data || null,\n twoColumnLayout: props.twoColumnLayout,\n layoutLocked: false,\n };\n this.onDataReceived = this.onDataReceived.bind(this);\n }\n\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n this.load();\n }\n\n componentDidUpdate() {\n if (!this.state.layoutLocked) {\n const { twoColumnLayout } = this.props;\n if (twoColumnLayout !== this.state.twoColumnLayout) {\n this.setState({ twoColumnLayout });\n }\n }\n }\n\n load() {\n const name = 'about';\n const lang = 'de';\n const { appServerPort, previewToken, previewDate } = this.props;\n const { data } = this.state;\n if (!data) {\n getViewData(name, lang, this.onDataReceived, appServerPort,\n previewToken, previewDate).catch((error) => {\n this.setState({ error });\n });\n }\n }\n\n onDataReceived(teaserData) {\n if (teaserData) {\n const data = this.extractEntry(teaserData);\n if (data) {\n const { history, location } = this.props;\n const state = location.state || {};\n state.data = data;\n history.replace({ state });\n this.setState({ data });\n } else {\n const error = 'no entry available';\n this.setState({ error });\n }\n }\n }\n\n extractEntry(positions) {\n for (let position of positions) {\n if (position.type && position.entries &&\n position.entries.length > 0) {\n return position.entries[0];\n }\n }\n return null;\n }\n\n render() {\n const { userLang } = this.props;\n const { data, error } = this.state;\n if (error) {\n return (\n \n );\n } else if (data) {\n const {\n documentTitle, description, canonicalUrl, ogImage, ogLocale,\n ogType, ogArticlePublishedTime, ogArticleExpirationTime,\n } = this.buildMetaData();\n return (\n \n \n {this.renderContent()}\n \n\n );\n } else {\n return (\n \n );\n }\n }\n\n renderContent() {\n const { textOnly } = this.props;\n const { twoColumnLayout, data } = this.state;\n const columns = this.buildPositions(data);\n if (twoColumnLayout && !textOnly) {\n return columns.getDouble();\n } else {\n return columns.getSingle();\n }\n }\n\n buildMetaData() {\n const { userLang } = this.props;\n let documentTitle = L.t('appTitle', userLang);\n const {\n title, kacheln, publish_from, publish_till,\n } = this.state.data;\n if (title) {\n documentTitle = title + ' - ' + documentTitle;\n }\n const descriptionText = new AltText();\n const canonicalUrl = CanonicalUrl.get('/ueber-uns');\n let ogImage = undefined;\n for (let kachel of kacheln) {\n if (!ogImage && 'uestra/altkachel' === kachel.type &&\n 'big' === kachel.teaser && kachel.mediaURL) {\n ogImage = kachel.mediaURL;\n descriptionText.append(kachel.subheader);\n descriptionText.append(kachel.header);\n descriptionText.append(kachel.text);\n }\n }\n const description = descriptionText.toString();\n // TODO The content locale is fixed to German, therefore, the locale\n // if fixed here, too.\n const ogLocale = 'de_DE';\n const ogType = 'article';\n const ogArticlePublishedTime = publish_from;\n const ogArticleExpirationTime = publish_till;\n return ({\n documentTitle, description, canonicalUrl, ogImage, ogLocale,\n ogType, ogArticlePublishedTime, ogArticleExpirationTime,\n });\n }\n\n buildPositions(entry) {\n const {\n textOnly, topSliderMaxElements, mediaSliderMaxElements,\n } = this.props;\n const columns = new Columns();\n let pos = 0;\n let positions = [];\n let topSlider = [];\n let mediaSlider = [];\n for (let kachel of entry.kacheln) {\n if (kachel.teaser) {\n continue;\n }\n if (('uestra/altkachel' === kachel.type ||\n 'uestra/videokachel' === kachel.type ||\n 'uestra/audiokachel' === kachel.type) &&\n kachel.mediaURL) {\n if (kachel.slider) {\n topSlider.push(kachel);\n } else if (kachel.mediaSlider) {\n mediaSlider.push(kachel);\n } else {\n positions.push(kachel);\n }\n } else if ('uestra/text' === kachel.type &&\n !TextUtil.isEmptyText(kachel.content)) {\n positions.push(kachel);\n } else if ('uestra/quote' === kachel.type &&\n !TextUtil.isEmptyText(kachel.quote)) {\n positions.push(kachel);\n } else if ('uestra/deeplinkbutton' === kachel.type &&\n !TextUtil.isEmptyText(kachel.url) &&\n !TextUtil.isEmptyText(kachel.title)) {\n positions.push(kachel);\n } else if ('uestra/infos' === kachel.type &&\n !TextUtil.isEmptyText(kachel.label1) &&\n !TextUtil.isEmptyText(kachel.url1)) {\n positions.push(kachel);\n } else if ('uestra/competition' === kachel.type &&\n !TextUtil.isEmptyText(kachel.id)) {\n positions.push(kachel);\n } else if ('uestra/action' === kachel.type &&\n !TextUtil.isEmptyText(kachel.id)) {\n positions.push(kachel);\n } else if ('uestra/deal' === kachel.type &&\n !TextUtil.isEmptyText(kachel.id) &&\n !TextUtil.isEmptyText(kachel.buttonText) &&\n !TextUtil.isEmptyText(kachel.email)) {\n positions.push(kachel);\n } else if ('uestra/mediaslider' === kachel.type) {\n positions.push(kachel);\n } else {\n // console.warn('Unhandled tile type', kachel.type);\n }\n }\n if (topSlider.length > 0) {\n if (textOnly) {\n let cardno = 0;\n for (let kachel of topSlider) {\n if (topSliderMaxElements === 0 ||\n cardno < topSliderMaxElements) {\n columns.addFull(this.buildFull(kachel, pos));\n cardno += 1;\n pos += 1;\n }\n }\n } else {\n columns.addSlider(this.buildTopSlider(topSlider, pos,\n topSliderMaxElements));\n pos += 1;\n }\n }\n let mediaSliderAdded = false;\n for (let position of positions) {\n if ('uestra/altkachel' === position.type) {\n columns.addFull(this.buildFull(position, pos));\n } else if ('uestra/videokachel' === position.type) {\n columns.addFull(this.buildVideo(position, pos));\n } else if ('uestra/audiokachel' === position.type) {\n columns.addFull(this.buildAudio(position, pos));\n } else if ('uestra/text' === position.type) {\n columns.addFull(this.buildText(position, pos));\n } else if ('uestra/quote' === position.type) {\n columns.addFull(this.buildQuote(position, pos));\n } else if ('uestra/deeplinkbutton' === position.type) {\n columns.addFull(this.buildDeeplinkButton(position, pos));\n } else if ('uestra/infos' === position.type) {\n columns.addFull(this.buildInfos(position, pos));\n } else if ('uestra/akkordeon' === position.type) {\n columns.addFull(this.buildAcc(position, pos));\n } else if ('uestra/competition' === position.type) {\n columns.addFull(this.buildCompetition(position, pos, entry.id));\n } else if ('uestra/action' === position.type) {\n columns.addFull(this.buildAction(position, pos, entry));\n } else if ('uestra/deal' === position.type) {\n columns.addFull(this.buildDeal(position, pos, entry));\n } else if ('uestra/mediaslider' === position.type\n && !mediaSliderAdded && mediaSlider.length > 0) {\n if (textOnly) {\n columns.addSlider(this.buildMediaSliderTitle(pos,\n position.title));\n let cardno = 0;\n for (let kachel of mediaSlider) {\n if (mediaSliderMaxElements === 0 ||\n cardno < mediaSliderMaxElements) {\n columns.addFull(this.buildFull(kachel, pos));\n cardno += 1;\n pos += 1;\n }\n }\n } else {\n columns.addSlider(this.buildMediaSlider(mediaSlider, pos,\n position.title, mediaSliderMaxElements));\n }\n mediaSliderAdded = true;\n }\n pos++;\n }\n if (!mediaSliderAdded && mediaSlider.length > 0) {\n if (textOnly) {\n columns.addSlider(this.buildMediaSliderTitle(pos, ''));\n let cardno = 0;\n for (let kachel of mediaSlider) {\n if (mediaSliderMaxElements === 0 ||\n cardno < mediaSliderMaxElements) {\n columns.addFull(this.buildFull(kachel, pos));\n cardno += 1;\n pos += 1;\n }\n }\n } else {\n columns.addSlider(this.buildMediaSlider(mediaSlider, pos, '',\n mediaSliderMaxElements));\n pos++;\n }\n }\n columns.finish();\n return columns;\n }\n\n buildTopSlider(entries, pos, maxElements) {\n const { userLang, fullscreenVideo, } = this.props;\n const cardsMgr = this.buildSliderCards(entries, pos);\n return TopSliderBuilder.build(cardsMgr[0], pos, userLang,\n cardsMgr[1], fullscreenVideo, cardsMgr[2], maxElements);\n }\n\n buildMediaSlider(entries, pos, title, maxElements) {\n const { userLang, fullscreenVideo, } = this.props;\n const titleText = TextUtil.isEmptyText(title) ?\n L.t('mediaSliderTitle', userLang) : title;\n const sliderTitle =\n ;\n const cardsMgr = this.buildSliderCards(entries, pos);\n return MediaSliderBuilder.build(cardsMgr[0], pos, this.props.userLang,\n cardsMgr[1], sliderTitle, fullscreenVideo, cardsMgr[2],\n maxElements);\n }\n\n buildMediaSliderTitle(pos, title) {\n const { userLang } = this.props;\n const titleText = TextUtil.isEmptyText(title) ?\n L.t('mediaSliderTitle', userLang) : title;\n const sliderTitle =\n ;\n return MediaSliderBuilder.buildTitle(pos, sliderTitle);\n }\n\n buildSliderCards(kacheln, pos) {\n const {\n videoQuality, videoQualityCallback, deviceSize,\n fullscreenVideo, fullscreenVideoCallback, userLang,\n } = this.props;\n let cards = [];\n const mgr = new CarouselManager();\n const duplicates = [];\n let cardno = 0;\n if (kacheln.length === 1) {\n const kachel = kacheln[0];\n if ('uestra/altkachel' === kachel.type) {\n cards.push(\n \n );\n } else if ('uestra/videokachel' === kachel.type) {\n cards.push(\n \n );\n } else {\n // console.warn('Unhandled tile type in slider', kachel.type);\n }\n } else {\n for (let kachel of kacheln) {\n if ('uestra/altkachel' === kachel.type) {\n cards.push(\n \n );\n duplicates.push(\n \n );\n } else if ('uestra/videokachel' === kachel.type) {\n cards.push(\n \n );\n duplicates.push(\n \n );\n } else {\n // console.warn('Unhandled tile type in slider', kachel.type);\n }\n cardno++;\n }\n }\n return [cards, mgr, duplicates.slice(0, 2)];\n }\n\n buildFull(kachel, pos) {\n const { deviceSize, textOnly } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildText(kachel, pos) {\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildQuote(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildDeeplinkButton(kachel, pos) {\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildInfos(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildAccordion(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildCompetition(kachel, pos, entryId) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildAction(kachel, pos, entry) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildDeal(kachel, pos, entry) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildVideo(kachel, pos) {\n const {\n videoQuality, videoQualityCallback,\n fullscreenVideo, fullscreenVideoCallback, userLang,\n } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n\n buildAudio(kachel, pos) {\n const { userLang } = this.props;\n const card =\n ;\n return FullBuilder.build(card, pos);\n }\n}\n\nAboutUsPage.propTypes = {\n appServerPort: PropTypes.number,\n previewToken: PropTypes.string,\n previewDate: PropTypes.string,\n userLang: PropTypes.string,\n deviceSize: PropTypes.string,\n fullscreenVideo: PropTypes.bool,\n fullscreenVideoCallback: PropTypes.func,\n textOnly: PropTypes.bool,\n topSliderMaxElements: PropTypes.number,\n mediaSliderMaxElements: PropTypes.number,\n twoColumnLayout: PropTypes.bool,\n};\n\nAboutUsPage.defaultProps = {\n topSliderMaxElements: 10,\n mediaSliderMaxElements: 20,\n}\n\nexport default withRouter((props) => {\n const classes = useStyles();\n const theme = useTheme();\n const isLandscape = useMediaQuery('@media (orientation: landscape)');\n const isWideScreen =\n useMediaQuery(theme.breakpoints.up(Config.entryWidescreenMinWidth));\n const twoColumnLayout = isLandscape || isWideScreen;\n return (\n \n );\n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\nimport { withRouter, Link } from 'react-router-dom';\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Button from '@material-ui/core/Button';\nimport SearchIcon from '@material-ui/icons/Search';\nimport ArchiveRoundedIcon from '@material-ui/icons/ArchiveRounded';\n\nconst color = '#ffffff';\nconst backgroundColor = '#28a8ca';\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n borderRadius: 6,\n color: color,\n backgroundColor: backgroundColor,\n border: '2px solid ' + backgroundColor,\n boxShadow: '0px 6px 7px -4px rgba(0,0,0,0.2), 0px 11px 15px 1px rgba(0,0,0,0.14), 0px 4px 20px 3px rgba(0,0,0,0.12)',\n textTransform: 'none',\n letterSpacing: 0.5,\n transition: '0.2s ease',\n '&:hover': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n '&:active': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n '&:focus': {\n backgroundColor: backgroundColor,\n filter: 'brightness(120%)',\n },\n },\n label: {\n justifyContent: 'left',\n paddingBottom: '0.2em',\n },\n icon: {\n paddingRight: 16,\n paddingTop: 4,\n },\n}));\n\n\nclass SearchButton extends PureComponent {\n render() {\n const { classes, content, to, icon, location, history } = this.props;\n const iconElement = icon === 'search' ?\n :\n ;\n let Component = undefined;\n let link = undefined;\n let onClick = undefined;\n if (icon === 'archive' && location.state && location.state.back) {\n onClick = () => { history.goBack(); };\n } else {\n const state = {\n back: location.pathname,\n }\n Component = Link;\n link = {\n pathname: to,\n search: location.search,\n state,\n }\n }\n return (\n \n {iconElement}\n {content}\n \n );\n }\n}\n\nSearchButton.propTypes = {\n classes: PropTypes.object.isRequired,\n content: PropTypes.string.isRequired,\n to: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n location: PropTypes.object.isRequired,\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return ;\n});\n","import React, { PureComponent, Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nimport PageTitleItem from '../components/PageTitleItem';\nimport SearchButton from './SearchButton';\nimport L from \"../util/L10n\";\n\nexport default class Header extends PureComponent {\n render() {\n const { name, userLang, twoColumnLayout } = this.props;\n const pageTitleItem =\n ;\n const searchButton = name === 'archive' ?\n :\n ;\n const single =\n \n {pageTitleItem}\n \n {searchButton}\n \n ;\n const double =\n \n {pageTitleItem}\n \n \n {searchButton}\n \n \n ;\n return twoColumnLayout ? double : single;\n }\n}\n\nHeader.propTypes = {\n name: PropTypes.string.isRequired,\n twoColumnLayout: PropTypes.bool,\n userLang: PropTypes.string,\n}\n","import DetectLocale from './DetectLocale';\n\nexport default class DateUtil {\n static today() {\n const date = new Date();\n const now = Date.now() - 60000 * date.getTimezoneOffset();\n return new Date(now).toISOString().substr(0, 10);\n }\n\n static daysAgo(n, userLang) {\n const locale = userLang ? userLang : DetectLocale.getPreferredLocale();\n const dateOptions =\n { year: 'numeric', month: '2-digit', day: '2-digit', };\n const date = new Date();\n const now = Date.now() - 86400000 * n;\n const nowIso = now - 60000 * date.getTimezoneOffset();\n const label = new Date(now).toLocaleDateString(locale, dateOptions);\n const value = new Date(nowIso).toISOString().substr(0, 10);\n return { label, value };\n }\n}\n","import React, { PureComponent } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport {\n makeStyles, createMuiTheme, ThemeProvider,\n} from \"@material-ui/core/styles\";\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport Box from '@material-ui/core/Box';\nimport DateRangeRoundedIcon from '@material-ui/icons/DateRangeRounded';\n\nimport DateUtil from '../util/DateUtil';\nimport L from '../util/L10n';\n\nconst useStyles = makeStyles((theme) => ({\n select: {\n fontFamily: 'DinforPBR',\n borderRadius: 6,\n },\n formControl: {\n width: '100%',\n },\n box: {\n borderRadius: 6,\n backgroundColor: '#ffffff',\n },\n menuItem: {\n color: '#9d9d9d',\n backgroundColor: '#ffffff',\n borderBottom: '1px solid #d8d8d8',\n '&:last-child': {\n borderBottom: 'none',\n },\n height: 48,\n },\n menuItemSelected: {\n color: '#000000',\n },\n itemContent: {\n display: 'flex',\n flexDirection: 'row',\n alignContent: 'center',\n fontSize: 14,\n fontWeight: 500,\n },\n icon: {\n marginLeft: 4,\n marginRight: 16,\n },\n iconSpacer: {\n width: 44,\n },\n}));\n\nclass DateSelect extends PureComponent {\n render() {\n const { classes, onChange, date, userLang } = this.props;\n const dates = [];\n const today = DateUtil.daysAgo(0, userLang);\n dates.push({\n value: today.value,\n label: L.t('archiveDateTodayText', userLang),\n });\n for (let i = 1; i < 30; i++) {\n dates.push(DateUtil.daysAgo(i, userLang))\n }\n const options = dates.map((x, index) => {\n let itemContent =\n
\n
\n \n
;\n //if (x.value === date) {\n if (index === 0) {\n itemContent =\n
\n \n \n
;\n }\n return (\n \n {itemContent}\n \n );\n });\n return (\n createMuiTheme({\n ...theme,\n overrides: {\n MuiListItem: {\n root: {\n '&$selected': {\n backgroundColor: '#ffffff',\n },\n },\n },\n MuiOutlinedInput: {\n notchedOutline: {\n border: 'none',\n },\n input: {\n padding: '10px 14px',\n },\n },\n },\n //.MuiOutlinedInput-input-649\n })}\n >\n \n \n \n {options}\n \n \n \n \n );\n }\n}\n\nDateSelect.propTypes = {\n classes: PropTypes.object.isRequired,\n userLang: PropTypes.string,\n onChange: PropTypes.func.isRequired,\n date: PropTypes.string.isRequired,\n}\n\nexport default function _DateSelect(props) {\n const classes = useStyles();\n\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Paper from '@material-ui/core/Paper';\nimport InputBase from '@material-ui/core/InputBase';\nimport IconButton from '@material-ui/core/IconButton';\nimport SearchIcon from '@material-ui/icons/Search';\n\nimport InvisibleImg from '../a11y/InvisibleImg';\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n borderRadius: 6,\n display: 'flex',\n alignItems: 'center',\n width: '100 %',\n },\n input: {\n marginLeft: theme.spacing(1),\n flex: 1,\n },\n iconButton: {\n padding: 10,\n },\n\n}));\n\nclass SearchInput extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n value: props.value || '',\n };\n this.onInputChange = this._onInputChange.bind(this);\n }\n\n _onInputChange(event) {\n const { value } = this.state;\n const newValue = event.target.value;\n if (value !== newValue) {\n this.setState({ value: newValue });\n }\n }\n\n render() {\n const {\n classes, label, ariaLabel, submitLabel, onSubmit, lockLayout,\n } = this.props;\n const { value } = this.state;\n const onFocus = () => {\n lockLayout(true);\n };\n return (\n {\n event.preventDefault();\n onSubmit(value);\n }}\n >\n \n {\n onSubmit(value);\n }}\n >\n \n \n \n\n \n );\n }\n}\n\nSearchInput.propTypes = {\n classes: PropTypes.object.isRequired,\n label: PropTypes.string.isRequired,\n ariaLabel: PropTypes.string.isRequired,\n submitLabel: PropTypes.string.isRequired,\n onSubmit: PropTypes.func.isRequired,\n value: PropTypes.string,\n lockLayout: PropTypes.func,\n};\n\nexport default function _SearchInput(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent, Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Grid from \"@material-ui/core/Grid\";\n\nexport default class GridItem extends PureComponent {\n getKey(prefix) {\n const { keyValue } = this.props;\n return keyValue ? prefix + keyValue : undefined;\n }\n\n render() {\n const { children, twoColumnLayout } = this.props;\n const single =\n \n {children}\n ;\n const double =\n \n \n \n {children}\n \n \n \n return twoColumnLayout ? double : single;\n }\n}\n\nGridItem.propTypes = {\n keyValue: PropTypes.string,\n twoColumnLayout: PropTypes.bool,\n}\n","import axios from 'axios';\n\nimport config from '../config/api.json';\n\nexport async function getArchiveDataDate(date, lang, onDataReceived) {\n const datePath = date === 'all' ? '/all' : '/d/' + (date ? date : '');\n const url = config.api_base + config.entry_path + 'archive/' +\n lang + datePath;\n getArchiveData(url, onDataReceived);\n}\n\nexport async function getArchiveDataSearch(term, lang, onDataReceived) {\n const searchPath = '/s/' + encodeURIComponent(term);\n const url = config.api_base + config.entry_path + 'archive/' +\n lang + searchPath;\n getArchiveData(url, onDataReceived);\n}\n\nasync function getArchiveData(url, onDataReceived) {\n const response = await axios.get(url, {\n transformResponse: [(data) => {\n return data\n }],\n });\n if (response && 200 === response.status && response.data) {\n console.log(url)\n console.log(response.data)\n onDataReceived(JSON.parse(response.data));\n } else {\n throw new Error('request failed', response);\n }\n}\n","import React, { PureComponent, Fragment } from \"react\";\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport Grid from \"@material-ui/core/Grid\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Box from '@material-ui/core/Box';\n\nimport ImageCard from './cards/ImageCard';\nimport Header from './archive/Header';\nimport DateSelect from './archive/DateSelect';\nimport SearchInput from './archive/SearchInput';\nimport GridItem from \"./archive/GridItem\";\nimport { getArchiveDataDate, getArchiveDataSearch } from \"./data/ArchiveReader\";\nimport L from \"./util/L10n\";\nimport DateUtil from './util/DateUtil';\nimport Config from './config/ui_settings.json';\nimport PageHelmet from './util/PageHelmet';\nimport CanonicalUrl from \"./util/CanonicalUrl\";\n\nconst useStyles = makeStyles((theme) => ({\n}));\n\nclass ArchivePage extends PureComponent {\n constructor(props) {\n super(props);\n const historyState = props.location.state || {};\n const { selectedDate, selectedTerm, selectedData } = historyState;\n const date = selectedDate || DateUtil.today();\n const term = selectedTerm || '';\n const data = selectedData || null;\n this.state = {\n error: null,\n data,\n userLang: props.userLang,\n date,\n term,\n twoColumnLayout: props.twoColumnLayout,\n layoutLocked: false,\n };\n this.onDataReceived = this._onDataReceived.bind(this);\n this.onSelectedDateChanged = this._onSelectedDateChanged.bind(this);\n this.onSearchSubmit = this._onSearchSubmit.bind(this);\n this.lockLayout = this._lockLayout.bind(this);\n }\n\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n this.load();\n }\n\n componentDidUpdate() {\n if (this.state.userLang !== this.props.userLang) {\n this.setState({ userLang: this.props.userLang, });\n this.load();\n }\n if (!this.state.layoutLocked) {\n const { twoColumnLayout } = this.props;\n if (twoColumnLayout !== this.state.twoColumnLayout) {\n this.setState({ twoColumnLayout });\n }\n }\n }\n\n _lockLayout(locked) {\n if (!!locked !== this.state.layoutLocked) {\n this.setState({ layoutLocked: locked, });\n }\n }\n\n load() {\n const { name } = this.props;\n const { data, date, term } = this.state;\n const lang = 'de';\n if (!data) {\n if (name === 'archive') {\n getArchiveDataDate(date, lang, this.onDataReceived\n ).catch((error) => {\n this.setState({ error: error })\n });\n } else if (name === 'archivesearch') {\n if (term && term.trim().length > 0) {\n getArchiveDataSearch(term, lang, this.onDataReceived\n ).catch((error) => {\n this.setState({ error: error })\n });\n }\n }\n }\n }\n\n _onDataReceived(data) {\n const { history, location } = this.props;\n const state = location.state || {};\n state.selectedData = data;\n history.replace({ state });\n this.setState({ data: data, error: null })\n }\n\n _onSelectedDateChanged(event) {\n const date = event.target.value;\n const instance = this;\n const { history, location } = this.props;\n const state = location.state || {};\n state.selectedDate = date;\n history.replace({ state });\n this.setState({ date, data: undefined }, () => {\n instance.load();\n });\n }\n\n _onSearchSubmit(term) {\n const instance = this;\n const { history, location } = this.props;\n const state = location.state || {};\n state.selectedTerm = term;\n history.replace({ state });\n const newState = term && term.trim().length > 0 ?\n { term, data: undefined } : { term };\n this.setState(newState, () => {\n instance.load();\n })\n }\n\n renderContent(data) {\n const { name, userLang, deviceSize } = this.props;\n const { twoColumnLayout } = this.state;\n const column = name === 'archive' ? [] :\n [\n \n \n {L.t('archiveSearchResutltsText', userLang)}\n \n \n ];\n let pos = 0;\n let count = 0;\n for (let key of Object.keys(data)) {\n const cards = this.buildCards(data[key], pos, userLang, deviceSize);\n this.buildColumn(column, cards, twoColumnLayout);\n count += cards.length;\n pos++;\n }\n if (count === 0) {\n const text = name === 'archive' ? 'archiveDateNoResultsText' :\n 'archiveSearchNoResutltsText';\n column.push(\n \n \n \n {L.t(text, userLang)}\n \n \n \n );\n }\n return column;\n }\n\n buildCards(entries, pos, userLang, deviceSize) {\n let cards = [];\n let cardno = 0;\n for (let entry of entries) {\n const externalLink = entry.external_link;\n let found = false;\n for (let kachel of entry.kacheln) {\n if (!found && \"uestra/altkachel\" === kachel.type &&\n 'big' === kachel.teaser && kachel.mediaURL) {\n found = true;\n cards.push(\n \n );\n cardno++;\n }\n }\n }\n return cards;\n }\n\n buildColumn(column, cards, twoColumnLayout) {\n for (let card of cards) {\n column.push(\n \n {card}\n \n );\n }\n }\n\n buildMetaData() {\n const { name, description } = this.props;\n const canonicalUrl = CanonicalUrl.get(name === 'archive' ?\n '/archiv' : '/archivsuche');\n const ogLocale = 'de_DE';\n const ogType = 'website';\n return { description, canonicalUrl, ogLocale, ogType };\n }\n\n render() {\n const { name, userLang, documentTitle } = this.props;\n const { twoColumnLayout } = this.state;\n const { error, data, date, term } = this.state;\n const header =\n ;\n const inputElement = name === 'archive' ?\n \n \n :\n \n \n ;\n let content = name === 'archive' || (term && term.trim().length > 0) ?\n \n \n \n {L.t('msgTeaserPageLoading', userLang)}\n \n \n : null;\n if (error) {\n content =\n \n \n \n {L.t('msgTeaserPageFailed', userLang)}\n \n \n ;\n } else if (data) {\n content = this.renderContent(data);\n }\n const {\n description, canonicalUrl, ogLocale, ogType,\n } = this.buildMetaData();\n return (\n \n \n \n {header}\n {inputElement}\n {content}\n \n \n );\n }\n}\n\nArchivePage.propTypes = {\n classes: PropTypes.object,\n name: PropTypes.string.isRequired,\n twoColumnLayout: PropTypes.bool,\n userLang: PropTypes.string,\n documentTitle: PropTypes.string,\n description: PropTypes.string,\n deviceSize: PropTypes.string,\n}\n\nexport default withRouter((props) => {\n const classes = useStyles();\n const theme = useTheme();\n const isLandscape = useMediaQuery('@media (orientation: landscape)');\n const isWideScreen =\n useMediaQuery(theme.breakpoints.up(Config.teaserWidescreenMinWidth));\n const label = props.name === 'archive' ?\n 'archiveTeaserPage' : 'archivesearchTeaserPage';\n const documentTitle = L.t(label + 'Title', props.userLang) + ' - ' +\n L.t('appTitle', props.userLang);\n const description = L.t(label + 'Description', props.userLang);\n const twoColumnLayout = isLandscape || isWideScreen;\n\n return ;\n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react';\n\nimport L from './util/L10n';\nimport PageHelmet from './util/PageHelmet';\nimport CanonicalUrl from './util/CanonicalUrl';\n\nconst useStyles = makeStyles({\n h2: {\n marginBlockStart: '0.83em',\n marginBlockEnd: '0.83em',\n },\n h3: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n },\n p: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'left',\n hyphens: 'auto',\n },\n pb: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n },\n});\n\nclass ImprintPage extends PureComponent {\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n }\n\n buildMetaData() {\n const canonicalUrl = CanonicalUrl.get('/impressum');\n const ogLocale = 'de_DE';\n const ogType = 'website';\n return { canonicalUrl, ogLocale, ogType };\n }\n\n render() {\n const { classes, userLang, documentTitle, } = this.props;\n const {\n description, canonicalUrl, ogLocale, ogType,\n } = this.buildMetaData();\n const pageHelmet =\n ;\n return (\n \n {pageHelmet}\n \n {L.t('imprintPageTitle', userLang)}\n \n \n Fahrgastmedien Hannover GmbH
\n Goethestraße 13a
\n 30169 Hannover

\n Telefon: 0511 36699-99
\n Telefax: 0511 36699-98
\n E-Mail: info@fahrgastfernsehen.city\n
\n \n Vertreten durch die Geschäftsführer:\n \n \n René Schweimler, Bernd Hoedtke
\n Goethestraße 13a
\n 30169 Hannover

\n Registergericht: Amtsgericht Hannover
\n Registernummer: HRB 219796

\n Umsatzsteuer-Identifikationsnummer: DE 329876966\n
\n \n Verantwortlichkeit für journalistisch-redaktionelle Inhalte i.S.d. § 18 Abs. 1 MStV:\n \n \n René Schweimler
\n Goethestraße 13a
\n 30169 Hannover

\n Telefon: 0511 36699-99
\n Telefax: 0511 36699-98
\n E-Mail: redaktion@fahrgastfernsehen.city\n
\n
\n );\n }\n}\n\nImprintPage.propTypes = {\n userLang: PropTypes.string,\n documentTitle: PropTypes.string,\n};\n\nexport default function _ImprintPage(props) {\n const classes = useStyles();\n const documentTitle = L.t('imprintPageTitle', props.userLang) + ' - ' +\n L.t('appTitle', props.userLang);\n const { trackPageView, } = useMatomo();\n React.useEffect(() => {\n trackPageView({ documentTitle, });\n }, [trackPageView, documentTitle]);\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport { withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from '@material-ui/core/Button';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react';\n\nimport L from './util/L10n';\nimport DetectLocale from './util/DetectLocale';\nimport CookieAccess from './util/CookieAccess';\nimport PageHelmet from './util/PageHelmet';\nimport CanonicalUrl from './util/CanonicalUrl';\n\nconst useStyles = makeStyles({\n h2: {\n marginBlockStart: '0.83em',\n marginBlockEnd: '0.83em',\n },\n h3: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n },\n h4: {\n marginBlockStart: '1em',\n },\n p: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n },\n ul: {\n textAlign: 'left',\n hyphens: 'auto',\n },\n address: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n fontWeight: 500,\n textAlign: 'center',\n },\n email: {\n fontWeight: 500,\n },\n rightsList: {\n paddingLeft: '4em',\n textAlign: 'justify',\n hyphens: 'auto',\n },\n rightsItem: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n },\n table: {\n border: 'solid 1px black',\n borderCollapse: 'collapse',\n },\n tableHeaderRow: {\n\n },\n tableRow: {\n\n },\n tableHeader: {\n border: 'solid 1px black',\n textAlign: 'center',\n padding: '0 6px',\n },\n tableData: {\n border: 'solid 1px black',\n textAlign: 'center',\n padding: '0 6px',\n },\n tableDataText: {\n border: 'solid 1px black',\n textAlign: 'left',\n padding: '0 6px',\n },\n button: {\n\n },\n buttonLabel: {\n\n },\n});\n\nclass DataprotectionPage extends PureComponent {\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n }\n\n buildMetaData() {\n const canonicalUrl = CanonicalUrl.get('/datenschutz');\n const ogLocale = 'de_DE';\n const ogType = 'website';\n return { canonicalUrl, ogLocale, ogType };\n }\n\n render() {\n const { classes, userLang, documentTitle, clearConsent } = this.props;\n // eslint-disable-next-line\n const lang = userLang ? userLang : DetectLocale.getUserLanguage();\n const {\n description, canonicalUrl, ogLocale, ogType,\n } = this.buildMetaData();\n const pageHelmet =\n ;\n return (\n \n {pageHelmet}\n \n Datenschutzerklärung\n \n \n Für die Datenverarbeitung verantwortlich\n \n \n Für die Datenverarbeitung in Bezug auf diese Website (nachfolgend: die Webseite) sind wir, die
\n Fahrgastmedien Hannover GmbH, Goethestraße 13 a, 30169 Hannover, info@fahrgastfernsehen.city
\n Vertreten durch die Geschäftsführer:
\n Bernd Hoedtke, René Schweimler
\n Goethestraße 13a
\n 30169 Hannover
\n Registergericht: Amtsgericht Hannover
\n Registernummer: HRB 219796
\n Umsatzsteuer-Identifikationsnummer: DE 329876966
\n datenschutzrechtlich verantwortlich.\n
\n \n Daten, die wir automatisch verarbeiten\n \n \n Sie können unsere Webseite besuchen, ohne dabei viele personenbezogene Daten preiszugeben. Wir verarbeiten aber jedes Mal, wenn Sie unsere Seite besichern, automatisch einige Daten, die Ihr Browser an unseren Server übermittelt (z.B. die IP-Adresse, abgerufene Inhalte, Datum und Uhrzeit des Abrufs, Browsertyp, Version und Betriebssystem und ggf. die zuvor besuchte Seite). Die Daten benötigen wir unter anderem, um eine richtige Darstellung der Webseite, sowie die Stabilität und Sicherheit derselben zu gewährleisten. Mit diesen Daten können wir Nutzer jedoch nicht direkt identifizieren.\n \n \n Daten, die uns freiwillig übermittelt werden\n \n \n Darüber hinaus werden einige persönliche Angaben erst erhoben, wenn Sie an besonderen Aktionen teilnehmen oder Sie freiwillig mit uns Kontakt aufnehmen.\n \n \n Personenbezogene Daten werden etwa verarbeitet, wenn folgende Aktionen ausgeführt werden:\n \n \n
  • Teilnahme an Gewinnspielen
  • \n
  • Teilnahme an Mitmach-Aktionen
  • \n
  • Teilnahme an Deals
  • \n
  • Kontaktaufnahme per E-Mail
  • \n
    \n \n Wenn Sie uns aus oben genannten Gründen personenbezogene Daten zur Verfügung stellen, nutzen wir diese zur Abwicklung der Anfragen, Gewinnspiele, Aktionen und Deals. Wir nutzen die Daten auf Basis Ihrer Einwilligung (Art. 6 Abs. 1 Buchst. a DSGVO) und unserem berechtigten Interesse daran, Daten die uns von Ihnen zu diesen Zwecken übermittelt werden, in diesem Zusammenhang nutzen zu können (Art. 6 Abs. 1 Buchst. f DSGVO).\n \n \n Außerdem nutzen wir Daten in pseudonymisierter Form zur statistischen Auswertung und Analyse der Leistung unseres Angebotes, wenn Sie dieser Verarbeitung zustimmen (Art. 6 Abs. 1 Buchst. a DSGVO). Mit solchen Nutzungsdaten können wir zum Beispiel feststellen, wie viele Nutzer gleichzeitig auf die Webseite zugreifen, welche Funktionen sie nutzen und welche Bereiche und Funktionen unserer Webseite besonders beliebt sind. Da die Daten pseudonymisiert verarbeitet werden, können unter normalen Umständen keine Rückschlüsse auf eine identifizierbare Person gezogen werden. Für diese Zwecke setzen wir Cookies ein.\n \n \n Wir arbeiten teilweise mit Partnern zusammen, die in unserem Auftrag Daten für uns verarbeiten (Auftragsverarbeiter). Diese Partner verarbeiten diese Daten innerhalb der Europäischen Union.\n \n \n Rechte der Nutzer\n \n \n Gerne informieren wir Sie kostenfrei über die bei uns zu Ihnen gespeicherten Daten und löschen oder berichtigen diese, wenn Sie die dies wünschen und keine gesetzlichen Aufbewahrungspflichten einer Löschung entgegenstehen. Sie können der Datenverarbeitung durch uns grundsätzlich widersprechen. Sie können sich mit ihren Anliegen jederzeit bei uns melden. Im Folgenden informieren wir ganz genau über alle Rechte.\n \n \n Wir stellen selbstverständlich sicher, dass Sie alle Rechte wirksam nutzen können.\n \n \n Sollten Sie der Meinung sein, dass ihre Daten unzulässig verarbeitet wurden, können sie sich selbstverständlich auch bei der zuständigen Aufsichtsbehörde beschweren.\n \n \n 1. Allgemeine Informationen zur Datenverarbeitung\n \n \n 1.1 Wichtige Begriffe\n \n \n „Personenbezogene Daten“ sind alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung (z.B. Cookie) oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.\n \n \n „Verarbeitung“ ist jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführte Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Dieser Begriff umfasst praktisch die meisten Fälle, in denen Daten irgendwie verwendet werden.\n \n \n „Verantwortlicher“ ist die natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten entscheidet.\n \n \n 1.2 Zusammenarbeit mit Auftragsverarbeitern und Dritten\n \n \n Sofern wir im Rahmen unserer Datenverarbeitung anderen Personen und Unternehmen Daten offenbaren, sie an diese übermitteln oder ihnen auf eine andere Art und Weise Zugriffsmöglichkeiten einräumen, geschieht dies nur auf Grundlage einer gesetzlichen Erlaubnis. Wenn wir Daten etwa an einen Versanddienstleister übertragen, dient dies der Abwicklung des Vertragsverhältnisses. Eine Datenübermittlung kann auch erfolgen, wenn hierzu eingewilligt wurde (Art. 6 Abs. 1 Buchst. a DSGVO), eine rechtliche Verpflichtung eine Übertragung vorsieht (Art. 6 Abs. 1 Buchst. c DSGVO) oder wir uns auf unsere berechtigten Interessen berufen können (Art. 6 Abs. 1 Buchst. f DSGVO).\n \n \n Teilweise bedienen wir uns anderer Unternehmen als Auftragsverarbeiter. Hierzu schließen wir „Auftragsverarbeitungsvereinbarungen“ auf Grundlage des Art. 28 DSGVO ab.\n \n \n 1.3 Löschung von Daten\n \n \n Wir löschen oder schränken die Verarbeitung von personenbezogene Daten nach Maßgabe der Art. 17 und 18 DSGVO ein. Gespeicherte Daten werden im Allgemeinen gelöscht, wenn sie für ihre Zweckbestimmung nicht mehr gebraucht werden, es sei denn, der Löschung stehen gesetzliche Aufbewahrungspflichten entgegen. Wir schränken die Datenverarbeitung ein, wenn die Daten nicht gelöscht werden können, weil sie etwa für andere und gesetzliche zulässige Zwecke genutzt werden sollen. D. h. die Daten werden gesperrt und nicht für andere Zwecke verarbeitet. Das gilt z. B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen.\n \n \n In Deutschland erfolgt die Aufbewahrung insbesondere für 6 Jahre gemäß § 257 Abs. 1 HGB (Handelsbücher, Inventare, Eröffnungsbilanzen, Jahresabschlüsse, Handelsbriefe, Buchungsbelege, etc.) sowie für 10 Jahre gemäß § 147 Abs. 1 AO (Bücher, Aufzeichnungen, Lageberichte, Buchungsbelege, Handels- und Geschäftsbriefe, Für Besteuerung relevante Unterlagen, etc.).\n \n \n Soweit in unseren Datenschutzbestimmungen ausdrücklich mitgeteilt wird, wann Daten gelöscht werden, gilt selbstverständlich diese konkrete Aussage zum Löschungszeitpunkt.\n \n \n 1.4 Datensicherheit\n \n \n Alle Datentransfers zwischen Endgeräten und unseren Servern oder den Servern unserer Dienstleister erfolgt verschlüsselt. Wir nutzen dafür marktübliche Verschlüsselungstechniken, damit Datentransfers sicher sind. Wir folgen ferner dem Prinzip der Datensparsamkeit und versuchen nur personenbezogene Daten zu erfassen und zu speichern, die wir für die Erbringung unserer Leistungen brauchen.\n \n \n 2. Technisch notwendige Datenverarbeitung\n \n \n Im Rahmen der Erbringung unserer Leistungen kommt es zu technisch notwendiger Datenverarbeitung hierunter fallen z.B. Server Logs, Firewall Logs, etc. zum Beispiel bei unserem Hosting Partner hotsplots GmbH. Im Rahmen dieser Logs werden grundlegende Verbindungsdaten gespeichert wie z.B.:\n \n \n
  • Zeitpunkt des Zugriffs
  • \n
  • IP-Adresse des Endgeräts
  • \n
  • Angefragte Ressource
  • \n
  • Übertragene Datenmenge
  • \n
  • Browser, Browsertyp und Version
  • \n
  • Betriebssystem
  • \n
  • Ggfs. zuvor besuchte Seiten
  • \n
    \n \n 3. Hosting (hotsplots GmbH)\n \n \n Wir nutzen für das Hosting der Webseite die Dienstleitungen der hotsplots GmbH, Rotherstraße 22, 10245 Berlin. Dieses Unternehmen stellt uns Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste, Sicherheitsleistungen sowie technische Wartungsleistungen zur Verfügung. Die hotsplots GmbH verarbeitet in unserem Auftrag Bestandsdaten, Kontaktdaten, Inhaltsdaten, Vertragsdaten, Nutzungsdaten, Meta- und Kommunikationsdaten unserer Nutzer und Interessenten. Dies geschieht auf Grundlage unserer berechtigten Interessen an einer effizienten und sicheren Zurverfügungstellung unserer Webseite gem. Art. 6 Abs. 1 Buchst. f DSGVO i.V.m. Art. 28 DSGVO (Auftragsverarbeitungsvertrag). Wir haben vertraglich festgelegt, dass unsere Daten ausschließlich auf Servern in der Europäischen Union verarbeitet werden.\n \n \n 4. Kommunikation\n \n \n Wenn Nutzer mit uns per E-Mail direkt Kontakt aufnehmen oder sich zu anderen Themen an uns wenden, verarbeiten wir die dabei übermittelten Informationen. Dies geschieht auf Grundlage unserer berechtigten Interessen (Art. 6 Abs. 1 Buchst. f DSGVO) daran, auf an uns gerichtete Kommunikation angemessen reagieren zu können. Die Daten der Nutzer werden gelöscht, sobald die jeweilige Anfrage erledigt ist und wenn keine gesetzlichen Aufbewahrungspflichten bestehen, die eine weitere Verarbeitung erforderlich machen.\n \n \n 5. Teilnahme an Gewinnspielen\n \n \n Über die Webseite ist die Teilnahme an unterschiedlichen Gewinnspielen möglich. Um an diesen Gewinnspielen teilzunehmen, ist es erforderlich, dass Vor- und Nachname, Telefonnummer sowie eine E-Mail-Adresse angegeben werden. Wenn die Art des Gewinnspiels dies erforderlich macht, werden im Einzelfall weitere Daten für die Teilnahme abgefragt. Wir verarbeiten diese Daten auf Basis Ihrer Einwilligung (Art. 6 Abs. 1 Buchst. a DSGVO) und auf Grundlage unseres berechtigten Interesses (Art. 6 Abs. 1 Buchst. f DSGVO). Unser Interesse besteht darin, die Gewinnspiele transparent durchführen und die Gewinner angemessen benachrichtigen zu können. Diese Daten werden gelöscht, wenn das Gewinnspiel durchgeführt ist und keine gesetzlichen Aufbewahrungspflichten eine fortgesetzte Verarbeitung dieser Daten erforderlich machen.\n \n \n 6. Teilnahme an Mitmach-Aktionen\n \n \n Über die Webseite ist auch eine Teilnahme an verschiedenen Mitmach-Aktionen möglich. Für die Teilnahme ist es ist erforderlich, dass Vor- und Nachname, Telefonnummer sowie eine E-Mail-Adresse angegeben werden. Wenn die Art der Mitmach-Aktion dies erforderlich macht, werden im Einzelfall weitere Daten für die Teilnahme abgefragt. Wir verarbeiten diese Daten auf Basis Ihrer Einwilligung (Art. 6 Abs. 1 Buchst. a DSGVO). Diese Daten werden gelöscht, wenn die Mitmach-Aktion durchgeführt ist und keine gesetzlichen Aufbewahrungspflichten eine fortgesetzte Verarbeitung dieser Daten erforderlich machen.\n \n \n 7. Analyse mit Hilfe von Auftragsverarbeiter Matomo\n \n \n Wir verwenden Matomo, ein Analysetool der InnoCraft Inc., 7 Waterloo Quay PO625, 6140 Wellington, New Zealand.\n \n \n Matomo verwendet sog. „1st-Party-Cookies“ die direkt auf unserer Webseite gesetzt sind und deren Informationen direkt an unsere Server übertragen werden. Nähere Details zu diesen Cookies finden Sie unter: https://matomo.org/faq/general/faq_146/.\n \n \n Wenn Sie der Nutzung von Cookies zustimmen, werden folgende Cookies gesetzt:\n \n \n \n \n Cookie-Name\n Speicherdauer\n Cookie-Zweck\n \n \n \n \n _pk_id\n 13 Monate\n Von Matomo vergebene eindeutige Identifikationsnummer, zwecks Erkennung wiederkehrender Besucher der Website.\n \n \n _pk_ses\n 30 Minuten\n Von Matomo gesetzter Cookie. Dient zur Erkennung, ob der Nutzer länger die Seite verlassen hat.\n \n \n mtm_consent\n unbegrenzt\n Speichert Ihre Einwilligung zum Tracking.\n \n \n mtm_consent_removed\n unbegrenzt\n Speichert Ihre Ablehnung des Trackings.\n \n \n
    \n \n Zweck der Datenverarbeitung ist die statistische Auswertung und Analyse der Leistung unserer Webangebotes und wie Besucher unsere Webseite nutzen. Dies erfolgt in pseudonymisierter Form. Der Einsatz von Matomo ermöglicht uns also die Webseitenoptimierung.\n \n \n Alle Cookies die Informationen über die Nutzung der Webseite enthalten, werden nach spätestens 13 Monaten automatisch gelöscht.\n \n \n Wir setzen dieses Analysewerkzeug auf Grundlage unserer berechtigten Interessen an einer effizienten und effektiven Optimierung unserer Webseite ein, Art. 6 Abs. 1 lit. f) DSGVO und auf Basis Ihrer Einwilligung (Art. 6 Abs. 1 Buchst. a DSGVO). Sie können dieser Datenverarbeitung jederzeit widersprechen, indem Sie auf den nachfolgenden Button klicken. Dadurch werden alle gespeicherten Cookies gelöscht. Im Anschluss erhalten Sie wieder die Möglichkeit, der Verwendung von Cookies zuzustimmen oder diese abzulehnen.\n \n \n Cookie-Entscheidung zurücksetzen\n \n \n Hier können Sie Ihre Entscheidung bezüglich der Verwendung von Cookies zurücksetzen. Dadurch werden alle gespeicherten Cookies gelöscht. Im Anschluss erhalten Sie wieder die Möglichkeit, der Verwendung von Cookies zuzustimmen oder diese abzulehnen.\n \n {\n clearConsent();\n }}\n >\n Cookie-Entscheidung zurücksetzen\n \n \n Weitere Hinweise zum Datenschutz bei Matomo finden Sie unter https://matomo.org/privacy-policy.\n \n\n \n 8. Cookie bei Teilnahme an Umfragen\n \n \n Über die Webseite ist auch eine Teilnahme an verschiedenen Umfragen möglich. Um zu verhindern, dass Teilnehmer mehrfach an einer Umfrage teilnehmen, setzt die Webseite nach Ihrer Zustimmung ein Cookie, in dem gespeichert wird, dass Sie schon einmal an der Umfrage teilgenommen haben. Wir verarbeiten diese Daten auf Basis Ihrer Einwilligung (Art. 6 Abs. 1 Buchst. a DSGVO). Dieses Cookie wird gelöscht, einen Tag nachdem die Umfrage beendet ist.\n\n \n \n Cookie-Entscheidung zurücksetzen\n \n \n Hier können Sie Ihre Entscheidung bezüglich der Verwendung von Cookies zurücksetzen. Dadurch werden alle gespeicherten Cookies gelöscht. Im Anschluss erhalten Sie wieder die Möglichkeit, der Verwendung von Cookies zuzustimmen oder diese abzulehnen.\n \n {\n clearConsent();\n }}\n >\n Cookie-Entscheidung zurücksetzen\n \n\n \n 9. Widerspruchsrecht\n \n \n Nutzer können der Verarbeitung ihrer personenbezogenen Daten jederzeit entsprechend den gesetzlichen Vorgaben widersprechen. Der Widerspruch kann insbesondere gegen die Verarbeitung für Zwecke der Direktwerbung erfolgen. Soweit wir in diesen Datenschutzbestimmungen eine Opt-Out-Möglichkeit zur Verfügung stellen, können Sie einfach auf diesem Wege das Widerspruchsrecht ausüben.\n \n \n 10. Widerrufsrecht von Einwilligungen.\n \n \n Eine erklärte Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden. Dazu reicht eine formlose Mitteilung per E-Mail an info@fahrgastfernsehen.city oder Sie nutzen eine von uns bereitgestellte Opt-Out-Möglichkeit, etwa in unserem Cookie-Tool. Die Rechtmäßigkeit der bis zum Widerruf erfolgten Datenverarbeitung bleibt vom Widerruf unberührt.\n \n \n 11. Betroffenenrechte\n \n \n 11.1 Auskunft\n \n < Typography variant='body1' component='p' className={classes.p} >\n Nutzer haben das Recht, Auskunft darüber zu verlangen, ob und wie betreffende Daten verarbeitet werden, sowie auf weitere Informationen und Kopie der Daten entsprechend Art. 15 DSGVO.\n \n \n 11.2 Vervollständigung und Berichtigung\n \n < Typography variant='body1' component='p' className={classes.p} >\n Nutzer haben entsprechend Art. 16 DSGVO das Recht, die Vervollständigung der sie betreffenden Daten oder die Berichtigung der sie betreffenden unrichtigen Daten zu verlangen.\n \n \n 11.3 Löschung und Einschränkung\n \n < Typography variant='body1' component='p' className={classes.p} >\n Nutzer haben nach Maßgabe des Art. 17 DSGVO das Recht, zu verlangen, dass sie betreffende Daten unverzüglich gelöscht werden, bzw. alternativ nach Maßgabe des Art. 18 DSGVO, dass die Verarbeitung der Daten eingeschränkt wird.\n \n \n 11.4 Datenportabilität\n \n < Typography variant='body1' component='p' className={classes.p} >\n Nach Art. 20 DSGVO haben Nutzer das Recht, Daten, die wir auf Grundlage ihrer Einwilligung oder in Erfüllung eines Vertrags automatisiert verarbeiten, an sie oder an einen Dritten in einem gängigen, maschinenlesbaren Format aushändigen zu lassen. Sofern Nutzer die direkte Übertragung der Daten an einen anderen Verantwortlichen verlangen, erfolgt dies nur, soweit es technisch machbar ist.\n \n \n 11.5 Beschwerderecht\n \n < Typography variant='body1' component='p' className={classes.p} >\n Wenn Nutzer eine unrechtmäßige Datenverarbeitung annehmen, steht es ihnen frei, eine Beschwerde bei der zuständigen Aufsichtsbehörde einzureichen. Zuständige Aufsichtsbehörde in datenschutzrechtlichen Fragen ist der Landesdatenschutzbeauftragte des Bundeslandes Niedersachsen, in dem unser Unternehmen seinen Sitz hat.\n \n \n 12. Änderung der Datenschutzbestimmungen\n \n < Typography variant='body1' component='p' className={classes.p} >\n Die Datenschutzbestimmungen informieren jeweils über die aktuelle Datenverarbeitung im Zusammenhang mit unserer Webseite. Wenn sich Änderungen bei unseren Diensten oder dieser Datenverarbeitung ergeben oder sich die Rechtslage ändert, müssen wir diese Datenschutzbestimmungen entsprechend anpassen. Dies gilt jedoch nur im Hinblick auf diese Informationen zur Datenverarbeitung. Sofern Einwilligungen erforderlich waren, werden wir hieran ohne das Einverständnis der jeweiligen Nutzern natürlich keine Änderungen vornehmen\n \n
    \n );\n }\n}\n\nDataprotectionPage.propTypes = {\n userLang: PropTypes.string,\n documentTitle: PropTypes.string.isRequired,\n clearConsent: PropTypes.func.isRequired,\n};\n\nexport default withRouter((props) => {\n const { userLang, location } = props;\n const classes = useStyles();\n const documentTitle = L.t('dataprotectionPageTitle', userLang) + ' - ' +\n L.t('appTitle', userLang);\n const { trackPageView, pushInstruction } = useMatomo();\n React.useEffect(() => {\n trackPageView({ documentTitle, });\n }, [trackPageView, documentTitle]);\n const clearConsent = () => {\n // forget consent to clear matomo cookies, but setting a forget cookie.\n pushInstruction('forgetConsentGiven');\n CookieAccess.deleteMatomoCookie();\n CookieAccess.deleteAllSurveyCookies();\n sessionStorage.clear();\n window.location.assign(location.pathname + location.search);\n };\n return (\n \n );\n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react';\n\nimport L from './util/L10n';\nimport PageHelmet from './util/PageHelmet';\nimport CanonicalUrl from './util/CanonicalUrl';\n\nconst useStyles = makeStyles({\n h2: {\n marginBlockStart: '0.83em',\n marginBlockEnd: '0.83em',\n },\n h3: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n },\n h4Inset: {\n marginTop: '1em',\n marginLeft: '2rem',\n },\n p: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'left',\n hyphens: 'auto',\n },\n pb: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n },\n pInset: {\n marginLeft: '2rem',\n },\n});\n\nclass A11yPage extends PureComponent {\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n }\n\n buildMetaData() {\n const canonicalUrl = CanonicalUrl.get('/barrierefreiheit');\n const ogLocale = 'de_DE';\n const ogType = 'website';\n return { canonicalUrl, ogLocale, ogType };\n }\n\n render() {\n const { classes, userLang, documentTitle, } = this.props;\n const {\n description, canonicalUrl, ogLocale, ogType,\n } = this.buildMetaData();\n const pageHelmet =\n ;\n return (\n \n {pageHelmet}\n \n {L.t('a11yPageTitle', userLang)}\n \n \n Diese Erklärung zur Barrierefreiheit gilt für die aktuelle Website des Fahrgastfernsehens.\n \n \n Wir sind als Verantwortliche für die Website bemüht, die Vorgaben der harmonisierten europäischen Norm EN 301 549 V2.1.2 (08-2018) einzuhalten. Die Website ist mit den Vorgaben größtenteils vereinbar.\n \n \n Nicht barrierefreie Inhalte der Fahrgastfernsehen-Website:\n \n \n Schrift-Kontraste\n \n \n Schriften werden teilweise mit einem gem. WCAG zu geringen Kontrast vor dem jeweiligen Hintergrund dargestellt. Für Personen mit eingeschränktem Sehvermögen kann dies zu einer schlechteren Lesbarkeit führen.\n \n \n Schrift auf Grafik\n \n \n Die dargestellten Meldungen bestehen aus systemseitigen Gründen in der Regel aus Bild-Tafeln mit integriertem Text. Dadurch lassen sich Schriften nicht beliebig skalieren. Um diesem Umstand entgegenzuwirken, können die Bildtafeln über einen Screen-Reader vorgelesen werden. Darüber hinaus lässt sich auf der Website unter Einstellungen eine Darstellungsvariante lediglich mit Text auswählen, so dass hierdurch eine Skalierbarkeit gegeben ist.\n \n \n Die aufgeführten Inhalte sind aus folgenden Gründen nicht barrierefrei: Die Gestaltung und das Format der Website ergeben sich aus den für das Fahrgastfernsehen genutzten IT-Systemen und dem vorgegebenen CI.\n \n \n Die Fahrgastfernsehen-Website wird kontinuierlich an die EU-Richtlinie 2016/2102 zur Umsetzung des barrierefreien Internets öffentlicher Stellen angepasst und optimiert. Die identifizierten Defizite und Mängel befinden sich aktuell in einem kontinuierlichen Verbesserungsprozess, der sukzessive abgearbeitet wird.\n \n \n Erstellung dieser Erklärung zur Barrierefreiheit\n \n \n Diese Erklärung wurde am 13.12.2022 erstellt. Die Einschätzung basiert auf einer im November 2022 durchgeführten Selbstbewertung.\n \n \n Feedback und Kontaktangaben\n \n \n Sind Ihnen Mängel in Bezug auf den barrierefreien Zugang zur Web- & App-Anwendung aufgefallen? Dann melden Sie sich gerne bei uns:
    \n info@fahrgastfernsehen.city\n
    \n \n Schlichtungsverfahren\n \n \n Wenn Sie nach einer Kontaktaufnahme an oben angegebener Kontaktaufnahmemöglichkeit kein zufriedenstellendes Feedback erhalten, können Sie bei der Schlichtungsstelle, eingerichtet bei der Landesbeauftragten für Menschen mit Behinderungen in Niedersachsen, einen Antrag auf Einleitung eines Schlichtungsverfahrens nach dem Niedersächsischen Behindertengleichstellungsgesetz (NBGG) stellen.\n \n \n Die Schlichtungsstelle nach § 9 d NBGG hat die Aufgabe, Streitigkeiten zwischen Menschen mit Behinderungen und öffentlichen Stellen des Landes Niedersachsen zum Thema Barrierefreiheit in der IT beizulegen.\n \n \n Das Schlichtungsverfahren ist kostenlos. Es muss kein Rechtsbeistand eingeschaltet werden.\n \n \n Direkt kontaktieren können Sie die Schlichtungsstelle unter:
    \n Telefon: 0511/120-4010
    \n E-Mail: schlichtungsstelle@ms.niedersachsen.de\n
    \n
    \n );\n }\n}\n\nA11yPage.propTypes = {\n userLang: PropTypes.string,\n documentTitle: PropTypes.string,\n};\n\nexport default function _A11yPage(props) {\n const classes = useStyles();\n const documentTitle = L.t('a11yPageTitle', props.userLang) + ' - ' +\n L.t('appTitle', props.userLang);\n const { trackPageView, } = useMatomo();\n React.useEffect(() => {\n trackPageView({ documentTitle, });\n }, [trackPageView, documentTitle]);\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react';\n\nimport L from './util/L10n';\nimport PageHelmet from './util/PageHelmet';\nimport CanonicalUrl from './util/CanonicalUrl';\n\nconst useStyles = makeStyles({\n title: {\n fontWeight: 500,\n letterSpacing: '-1px',\n marginBlockStart: '0.83em',\n marginBlockEnd: '0.83em',\n },\n subtitle: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n },\n});\n\nconst CustomSwitch = withStyles({\n switchBase: {\n color: '#28a8ca',\n '&$checked': {\n color: '#28a8ca',\n },\n '&$checked + $track': {\n backgroundColor: '#28a8ca',\n },\n },\n checked: {},\n track: {},\n})(Switch);\n\nclass SettingsPage extends PureComponent {\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n }\n\n buildMetaData() {\n const canonicalUrl = CanonicalUrl.get('/einstellungen');\n const ogLocale = 'de_DE';\n const ogType = 'website';\n return { canonicalUrl, ogLocale, ogType };\n }\n\n render() {\n const {\n classes, userLang, documentTitle, textOnly, setTextOnly,\n } = this.props;\n const {\n canonicalUrl, ogLocale, ogType,\n } = this.buildMetaData();\n const pageHelmet =\n ;\n return (\n \n {pageHelmet}\n \n {L.t('settingsPageTitle', userLang)}\n \n \n {L.t('settingsA11yHeadline', userLang)}\n \n {\n setTextOnly(!textOnly);\n }}\n />\n }\n label={L.t('settingsTextOnlyLabel', userLang)}\n />\n \n );\n }\n}\n\nSettingsPage.propTypes = {\n userLang: PropTypes.string,\n documentTitle: PropTypes.string,\n textOnly: PropTypes.bool,\n setTextOnly: PropTypes.func.isRequired,\n};\n\nexport default function _SettingsPage(props) {\n const classes = useStyles();\n const documentTitle = L.t('settingsPageTitle', props.userLang) + ' - ' +\n L.t('appTitle', props.userLang);\n const { trackPageView, } = useMatomo();\n React.useEffect(() => {\n trackPageView({ documentTitle, });\n }, [trackPageView, documentTitle]);\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react';\n\nimport L from '../util/L10n';\nimport PageHelmet from '../util/PageHelmet';\n\nconst useStyles = makeStyles({\n h2: {\n marginBlockStart: '0.83em',\n marginBlockEnd: '0.83em',\n },\n h3: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n },\n h4Inset: {\n marginTop: '1em',\n marginLeft: '2rem',\n },\n p: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'left',\n hyphens: 'auto',\n },\n pb: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n },\n pInset: {\n marginLeft: '2rem',\n },\n});\n\nclass OptInResultPage extends PureComponent {\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n }\n\n render() {\n const { classes, documentTitle, success, userLang } = this.props;\n if (success) {\n return (\n \n \n \n {L.t('optinSuccessPageTitle', userLang)}\n \n \n Vielen Dank für die Bestätigung Ihrer Teilnahme. Sie nehmen nun an unserer Aktion teil.\n \n \n );\n } else {\n return (\n \n \n \n {L.t('optinFailedPageTitle', userLang)}\n \n \n Der Bestätigungs-Link, dem Sie gefolgt sind, ist leider nicht (mehr) gültig.\n \n \n );\n }\n }\n}\n\nOptInResultPage.propTypes = {\n userLang: PropTypes.string,\n documentTitle: PropTypes.string,\n success: PropTypes.bool,\n};\n\nexport default function _OptInResultPage(props) {\n const classes = useStyles();\n const label = props.success ?\n 'optinSuccessPageTitle' : 'optinFailedPageTitle';\n const documentTitle = L.t(label, props.userLang) + ' - ' +\n L.t('appTitle', props.userLang);\n const { trackPageView, } = useMatomo();\n React.useEffect(() => {\n trackPageView({ documentTitle, });\n }, [trackPageView, documentTitle]);\n return (\n \n );\n}\n","export default class VoucherErrorCodes {\n static getLabel(code) {\n switch(code) {\n case 'NO QRCODE ACTION': return('qrErrorNoQrAction');\n case 'WRONG PASSWORD': return('qrErrorWrongPassword');\n case 'ACTION ENDED': return('qrErrorActionEnded');\n case 'RESOLVING ANOTHER VOUCHER': return('qrErrorResolvingAnother');\n case 'CODE NOT FOUND': return('qrErrorCodeNotFound');\n case 'CODE USED': return('qrErrorCodeUsed');\n default: return('qrErrorUnknownError');\n }\n }\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport VoucherErrorCodes from './VoucherErrorCodes';\nimport L from '../util/L10n';\nimport DetectLocale from '../util/DetectLocale';\n\nconst useStyles = makeStyles({\n p: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n maxWidth: 500,\n },\n pn: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n maxWidth: 500,\n padding: 10,\n },\n pwarn: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n maxWidth: 500,\n backgroundColor: '#B3002D',\n color: '#ffffff',\n fontWeight: 500,\n padding: 10,\n },\n table: {\n border: 'solid 1px black',\n borderCollapse: 'collapse',\n },\n tableRow: {\n\n },\n tableHeader: {\n border: 'solid 1px black',\n textAlign: 'left',\n padding: '0 6px',\n },\n tableData: {\n border: 'solid 1px black',\n textAlign: 'right',\n padding: '0 6px',\n },\n});\n\nclass VoucherInfo extends PureComponent {\n render() {\n const { classes, userLang, action, info } = this.props;\n if (info && info.state === 'success' && info.info &&\n info.info.voucherEndDate) {\n let {\n voucherEndDate, countMax, countLeft, voucherLeft, voucherUsed,\n } = info.info;\n if (voucherEndDate) {\n const locale = userLang || DetectLocale.getPreferredLocale();\n const dateOptions = {\n year: 'numeric', month: 'long', day: 'numeric',\n };\n const timeOptions = { hour: 'numeric', minute: 'numeric' };\n const date = new Date(voucherEndDate)\n voucherEndDate = date.toLocaleDateString(locale, dateOptions) +\n ' ' + date.toLocaleTimeString(locale, timeOptions);\n } else {\n voucherEndDate = L.t('qrInfoVoucherEndDateNotSet', userLang);\n }\n if (!countMax && countMax !== 0) {\n countMax = L.t('qrInfoCountMaxNotSet', userLang);\n }\n if (!countLeft && countLeft !== 0) {\n countLeft = L.t('qrInfoCountMaxNotSet', userLang);\n }\n return (\n \n \n \n \n {L.t('qrInfoVoucherAction')}\n \n \n {action}\n \n \n \n \n {L.t('qrInfoVoucherEndDate')}\n \n \n {voucherEndDate}\n \n \n \n \n {L.t('qrInfoCountMax')}\n \n \n {countMax}\n \n \n \n \n {L.t('qrInfoCountLeft')}\n \n \n {countLeft}\n \n \n \n \n {L.t('qrInfoVoucherLeft')}\n \n \n {voucherLeft}\n \n \n \n \n {L.t('qrInfoVoucherUsed')}\n \n \n {voucherUsed}\n \n \n \n
    \n\n );\n } else {\n const errorLabel = info ?\n VoucherErrorCodes.getLabel(info.errormessage) :\n 'qrErrorUnknownError';\n const errorMessage = L.t(errorLabel, userLang);\n const className = errorLabel === 'qrErrorCodeUsed' ||\n errorLabel === 'qrErrorCodeNotFound' ||\n errorLabel === 'qrErrorActionEnded' ?\n classes.pwarn : classes.pn;\n return (\n \n {errorMessage}\n \n );\n }\n }\n}\n\nVoucherInfo.propTypes = {\n userLang: PropTypes.string,\n action: PropTypes.string.isRequired,\n info: PropTypes.object.isRequired,\n};\n\nexport default function _VoucherInfo(props) {\n const classes = useStyles();\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n color: '#02a5ce',\n },\n textField: {\n margin: '10px 0px',\n },\n}));\n\nclass VoucherPasswordDialog extends PureComponent {\n render() {\n const {\n classes, open, onCancel, onConfirm, onChange, label, title, text,\n inputLabel, cancel, confirm,\n } = this.props;\n return (\n \n \n {title}\n \n \n \n \n \n {\n onChange(event.target.value);\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n onConfirm();\n }\n }}\n autoFocus\n fullWidth\n />\n \n \n \n {cancel}\n \n \n {confirm}\n \n \n \n );\n }\n}\n\nVoucherPasswordDialog.propTypes = {\n label: PropTypes.string.isRequired,\n title: PropTypes.string,\n text: PropTypes.string,\n inputLabel: PropTypes.string,\n confirm: PropTypes.string,\n cancel: PropTypes.string,\n open: PropTypes.bool,\n onConfirm: PropTypes.func,\n onCancel: PropTypes.func,\n onChange: PropTypes.func,\n};\n\nexport default function _VoucherPasswordDialog(props) {\n const classes = useStyles();\n return ;\n}\n","import React, { PureComponent } from 'react';\nimport { useParams } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react';\n\nimport { getVoucherInfo, setVoucherUsed } from '../data/ActionReader';\nimport L from '../util/L10n';\nimport CookieAccess from '../util/CookieAccess';\nimport PageHelmet from '../util/PageHelmet';\nimport ColorButton from '../forms/ColorButton';\nimport VoucherInfo from '../components/VoucherInfo';\nimport VoucherPasswordDialog from '../forms/VoucherPasswordDialog';\n\nconst useStyles = makeStyles({\n h2: {\n marginBlockStart: '0.83em',\n marginBlockEnd: '0.83em',\n },\n p: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n maxWidth: 500,\n },\n pok: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n maxWidth: 500,\n backgroundColor: '#338C15',\n color: '#ffffff',\n fontWeight: 500,\n padding: 10,\n },\n button: {\n margin: '20px 0px',\n maxWidth: 500,\n },\n});\n\nconst statsButtonColor = '#66991A';\nconst voucherButtonColor = '#e66000';\n\nclass VoucherResultPage extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n submitDisabled: false,\n passwordDialogOpen: false,\n passwordValue: '',\n infoData: null,\n usedData: null,\n };\n this.submitInfo = this._submitInfo.bind(this);\n this.handleInfo = this._handleInfo.bind(this);\n this.submitUsed = this._submitUsed.bind(this);\n this.handleUsed = this._handleUsed.bind(this);\n this.cancelPasswordDialog = this._cancelPasswordDialog.bind(this);\n this.confirmInfoPasswordDialog =\n this._confirmInfoPasswordDialog.bind(this);\n this.confirmUsedPasswordDialog =\n this._confirmUsedPasswordDialog.bind(this);\n this.updatePasswordValue = this._updatePasswordValue.bind(this);\n }\n\n _submitInfo() {\n this._disableSumbit(true);\n const { id, action } = this.props;\n const key = id + '_' + action;\n const password = CookieAccess.getPasswordCookie(key);\n if (password) {\n const sith = this;\n this.setState({ passwordValue: '' }, () => {\n sith._obtainInfo(password);\n });\n } else {\n this.setState({ passwordDialogOpen: true, passwordValue: '' });\n }\n }\n\n _obtainInfo(password) {\n const { id, action } = this.props;\n getVoucherInfo(\n id, action, password, this.handleInfo\n ).catch((error) => {\n this.handleInfo({ state: 'failed', error });\n });\n }\n\n _handleInfo(infoData) {\n const { id, action } = this.props;\n const key = id + '_' + action;\n if (infoData && infoData.state === 'success' &&\n infoData.info && infoData.info.voucherEndDate) {\n const { passwordValue } = this.state;\n if (passwordValue) {\n CookieAccess.setPasswordCookie(key, passwordValue);\n }\n }\n this.setState({ infoData }, () => {\n this._disableSumbit(false);\n });\n }\n\n _submitUsed() {\n this._disableSumbit(true);\n const { id, action } = this.props;\n const key = id + '_' + action;\n const password = CookieAccess.getPasswordCookie(key);\n if (password) {\n const sith = this;\n this.setState({ passwordValue: '' }, () => {\n sith._obtainUsed(password);\n });\n } else {\n this.setState({ passwordDialogOpen: true, passwordValue: '' });\n }\n }\n\n _obtainUsed(password) {\n const { id, action, voucher } = this.props;\n setVoucherUsed(\n id, action, voucher, password, this.handleUsed\n ).catch((error) => {\n this.handleUsed({ state: 'failed', error });\n });\n }\n\n _handleUsed(usedData) {\n const { id, action } = this.props;\n const key = id + '_' + action;\n if (usedData && usedData.state === 'success') {\n const { passwordValue } = this.state;\n if (passwordValue) {\n CookieAccess.setPasswordCookie(key, passwordValue);\n }\n } else if (usedData && usedData.state === 'error' &&\n usedData.errormessage === 'WRONG PASSWORD') {\n CookieAccess.deletePasswordCookie(key);\n }\n this.setState({ usedData }, () => {\n this._disableSumbit(false);\n })\n }\n\n _disableSumbit(disabled) {\n this.setState({ submitDisabled: disabled });\n }\n\n _cancelPasswordDialog() {\n this.setState({ passwordDialogOpen: false, submitDisabled: false });\n }\n\n _confirmInfoPasswordDialog() {\n this.setState({ passwordDialogOpen: false });\n this._obtainInfo(this.state.passwordValue || '');\n }\n\n _confirmUsedPasswordDialog() {\n this.setState({ passwordDialogOpen: false });\n this._obtainUsed(this.state.passwordValue || '');\n }\n\n _updatePasswordValue(value) {\n this.setState({ passwordValue: value });\n }\n\n render() {\n const { classes, userLang, id, action, voucher } = this.props;\n const { infoData, usedData, passwordDialogOpen } = this.state;\n let passwordDialog = null;\n let onConfirm = null;\n let title = L.t('qrDefaultTitle', userLang);\n let message = null;\n let info = null;\n let button = null;\n if (infoData) {\n onConfirm = this.confirmInfoPasswordDialog;\n title = L.t('qrStatsTitle', userLang);\n info =\n ;\n button =\n
    \n \n
    ;\n } else if (usedData) {\n onConfirm = this.confirmUsedPasswordDialog;\n title = L.t('qrVoucherTitle', userLang);\n if (usedData.state === 'success') {\n message =\n \n {L.t('qrVoucherSuccessText', userLang)}\n ;\n }\n info =\n ;\n if (usedData.state !== 'success') {\n button =\n
    \n \n
    ;\n }\n } else if (id && action) {\n onConfirm = voucher ?\n this.confirmUsedPasswordDialog : this.confirmInfoPasswordDialog;\n title = L.t(voucher ? 'qrVoucherTitle' : 'qrStatsTitle', userLang);\n message =\n \n {L.t(voucher ? 'qrVoucherText' : 'qrStatsText', userLang)}\n ;\n button =\n
    \n \n
    ;\n } else {\n message =\n \n {L.t('qrDefaultText', userLang)}\n ;\n }\n if (onConfirm) {\n passwordDialog =\n ;\n }\n return (\n \n \n {passwordDialog}\n \n {title}\n \n {message}\n {info}\n {button}\n \n );\n }\n}\n\nVoucherResultPage.propTypes = {\n userLang: PropTypes.string,\n id: PropTypes.string,\n action: PropTypes.string,\n voucher: PropTypes.string,\n};\n\nexport default function _VoucherResultPage(props) {\n const classes = useStyles();\n const { id, action, voucher } = useParams();\n let documentTitleLabel = 'qrDefaultTitle';\n if (id && action) {\n documentTitleLabel = voucher ? 'qrVoucherTitle' : 'qrStatsTitle';\n }\n let documentTitle = L.t(documentTitleLabel, props.userLang);\n const { trackPageView } = useMatomo();\n React.useEffect(() => {\n trackPageView({ documentTitle });\n }, [trackPageView, documentTitle]);\n return (\n \n );\n}\n","\nexport function addListener(listener) {\n if(!window._fgf_channel) {\n window._fgf_channel = {};\n }\n if(!window._fgf_channel._showWifiBox) {\n window._fgf_channel._showWifiBox = __showWifiBox;\n }\n if(!window._fgf_channel._hideWifiBox) {\n window._fgf_channel._hideWifiBox = __hideWifiBox;\n }\n if(!window._fgf_channel._callbacks) {\n window._fgf_channel._callbacks = [];\n }\n window._fgf_channel._callbacks.push(listener);\n}\n\nexport function removeListener(listener) {\n if (window._fgf_channel && window._fgf_channel._callbacks) {\n let pos = window._fgf_channel._callbacks.indexOf(listener);\n if (pos >= 0) {\n window._fgf_channel._callbacks.splice(pos, 1);\n }\n }\n}\n\nexport function isShowWifiBox() {\n return window._fgf_channel && window._fgf_channel._showBox;\n}\n\nfunction __showWifiBox() {\n window._fgf_channel._showBox = true;\n //console.log(\"WifiBoxAppChannel: showWifiBox\")\n window._fgf_channel._callbacks.forEach((callback) => {\n //console.log(\"WifiBoxAppChannel, callback: showWifiBox\")\n callback.showWifiBox();\n })\n}\n\nfunction __hideWifiBox() {\n window._fgf_channel._showBox = false;\n window._fgf_channel._callbacks.forEach((callback) => {\n callback.hideWifiBox();\n })\n}\n","import React, {PureComponent} from 'react';\nimport {Route, Switch as RouterSwitch} from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport Container from '@material-ui/core/Container';\nimport {makeStyles} from \"@material-ui/core/styles\";\n\nimport TeaserPage from \"./TeaserPage\";\nimport EntryPage from './EntryPage';\nimport AboutUsPage from './AboutUsPage';\nimport ArchivePage from './ArchivePage';\nimport ImprintPage from './ImprintPage';\nimport DataprotectionPage from './DataprotectionPage';\nimport A11yPage from './A11yPage';\nimport SettingsPage from './SettingsPage';\nimport OptInResultPage from './page/OptInResultPage';\nimport VoucherResultPage from './page/VoucherResultPage';\nimport {addListener, isShowWifiBox, removeListener} from './WifiBoxAppChannel';\nimport Config from './config/ui_settings.json';\nimport getViewData from \"./data/ViewReader\";\n\nconst useStylesWebApp = makeStyles((theme) => ({\n root: {\n [theme.breakpoints.down('sm')]: {\n paddingTop: 56 + 48 + 20,\n paddingBottom: 56 + 20,\n },\n [theme.breakpoints.up('sm')]: {\n paddingTop: 64 + 48 + 20,\n paddingBottom: 64 + 20,\n },\n //backgroundColor: theme.palette.background.default,\n }\n}));\n\nconst useStylesEmbedded = makeStyles((theme) => ({\n root: {\n [theme.breakpoints.down('sm')]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n [theme.breakpoints.up('sm')]: {\n paddingTop: 20,\n paddingBottom: 20,\n },\n backgroundColor: theme.palette.background.default,\n }\n}));\n\nclass PageContent extends PureComponent {\n constructor(props) {\n super(props);\n let wifiBoxInfo = isShowWifiBox();\n //console.log(\"constructor, wifiBoxInfo\", wifiBoxInfo)\n if (wifiBoxInfo) {\n this.state = {tabsMeta: null, showWifiLogin: true};\n } else {\n this.state = {tabsMeta: null, showWifiLogin: this.props.showWifiLogin};\n }\n this.onDataReceived = this._onDataReceived.bind(this);\n //console.log(\"constructor\", this.state)\n }\n\n componentDidMount() {\n let wifiBoxInfo = isShowWifiBox();\n if (wifiBoxInfo) {\n this.setState({showWifiLogin: true});\n //console.log(\"componentDidMount true\", this.state)\n } else {\n this.setState({showWifiLogin: this.props.showWifiLogin});\n //console.log(\"componentDidMount false\", this.state)\n }\n this.load();\n\n addListener(this)\n }\n\n componentWillUnmount() {\n removeListener(this)\n }\n\n load() {\n const { appServerPort, previewToken, previewDate } = this.props;\n const lang = 'de/meta';\n getViewData('tabs', lang, this.onDataReceived, appServerPort,\n previewToken, previewDate).catch((error) => {\n this.setState({ error: error })\n });\n }\n\n _onDataReceived(data) {\n console.log(\"tabs.meta\", data)\n this.setState({ tabsMeta: data, error: null })\n }\n\n showWifiBox() {\n //console.log(\"PageContent.showWifiBox\");\n this.setState({showWifiLogin: true})\n }\n\n hideWifiBox() {\n //console.log(\"PageContent.hideWifiBox\");\n this.setState({showWifiLogin: false})\n }\n\n\n render() {\n //console.log(\"render\", this.state)\n\n const {\n appEmbedded, classes, classesEmbedded,\n previewToken, previewDate, appServerPort,\n userLang, updateUserLang, videoQuality, videoQualityCallback,\n deviceSize, fullscreenVideo, fullscreenVideoCallback, textOnly,\n setTextOnly, showAnimation, stopAnimation,\n } = this.props;\n\n const {\n tabsMeta,\n } = this.state;\n\n const showWifiLogin = this.state.showWifiLogin;\n\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 )}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nPageContent.propTypes = {\n appServerPort: PropTypes.number,\n appEmbedded: PropTypes.bool,\n showWifiLogin: PropTypes.bool,\n classes: PropTypes.object,\n classesEmbedded: PropTypes.object,\n previewToken: PropTypes.string,\n previewDate: PropTypes.string,\n userLang: PropTypes.string,\n updateUserLang: PropTypes.func,\n videoQuality: PropTypes.number,\n videoQualityCallback: PropTypes.func,\n deviceSize: PropTypes.string,\n fullscreenVideo: PropTypes.bool,\n fullscreenVideoCallback: PropTypes.func,\n textOnly: PropTypes.bool,\n setTextOnly: PropTypes.func.isRequired,\n showAnimation: PropTypes.func.isRequired,\n stopAnimation: PropTypes.func.isRequired,\n\n};\n\nexport default function _PageContent(props) {\n const classes = useStylesWebApp();\n const classesEmbedded = useStylesEmbedded();\n return (\n \n );\n}\n","import React, { PureComponent } from 'react';\nimport { Link, withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\n\nimport L from '../util/L10n';\nimport getViewData from \"../data/ViewReader\";\n\nconst useStyles = makeStyles((theme) => ({\n tabBorderDiv: {\n position: 'absolute',\n top: 1,\n left: 4,\n bottom: 0,\n right: 4,\n borderTop: '1px solid #d8d8d8',\n },\n}));\n\nclass TopTabBar extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n value: false,\n data: null,\n error: null,\n }\n this.onDataReceived = this.onDataReceived.bind(this);\n }\n\n load() {\n const { appServerPort, previewToken, previewDate } = this.props;\n const lang = 'de';\n getViewData('tabs', lang, this.onDataReceived, appServerPort,\n previewToken, previewDate).catch((error) => {\n //console.log(error)\n this.setState({ error: error })\n });\n }\n\n onDataReceived(data) {\n this.setState({ data: data, error: null })\n }\n\n config() {\n return [\n {\n value: 'today',\n path: '/',\n label: 'bottomNavigationBarToday',\n name: 'start',\n always: true,\n },\n {\n value: 'line',\n path: '/linie',\n label: 'bottomNavigationBarLine',\n name: 'line',\n default: true,\n },\n {\n value: 'preview',\n path: '/vorschau',\n label: 'bottomNavigationBarPreview',\n name: 'events',\n default: true,\n },\n {\n value: 'prizes',\n path: '/aktion',\n label: 'bottomNavigationBarPrizes',\n name: 'prizes',\n default: true,\n },\n {\n value: 'deals',\n path: '/deal',\n label: 'bottomNavigationBarDeals',\n name: 'deals',\n },\n ];\n }\n\n activeConfig() {\n const config = this.config();\n const { data, error } = this.state;\n if (data) {\n return config.filter(page =>\n page.always || data[page.name] > 0);\n } else if (error) {\n return config;\n } else {\n return config.filter(page =>\n page.always || page.default);\n }\n }\n\n valueByPath(path) {\n if (path && path.length > 1 &&\n (path.charAt(path.length - 1) === '/')) {\n path = path.substr(0, path.length - 1);\n }\n let newValue = false;\n for (let conf of this.activeConfig()) {\n if (path === conf.path) {\n newValue = conf.value;\n break;\n }\n }\n if (newValue !== this.state.value) {\n this.setState({ value: newValue, });\n }\n }\n\n componentDidMount() {\n this.load();\n this._didUpdateOrMount();\n }\n\n componentDidUpdate() {\n this._didUpdateOrMount();\n }\n\n _didUpdateOrMount() {\n this.valueByPath(this.props.location.pathname);\n }\n\n render() {\n const { appEmbedded, variant, userLang, } = this.props;\n if (appEmbedded)\n return null;\n\n return (\n \n {this.createTabs(userLang)}\n \n );\n }\n\n createTabs(userLang) {\n const { classes, } = this.props;\n const tabs = [];\n for (let conf of this.activeConfig()) {\n const link = {\n pathname: conf.path,\n search: this.props.location.search,\n }\n tabs.push(\n \n \n {L.t(conf.label, userLang)}\n \n \n \n }\n key={conf.value}\n tabIndex={0}\n />\n );\n }\n return tabs;\n }\n}\n\nTopTabBar.propTypes = {\n appEmbedded: PropTypes.bool,\n variant: PropTypes.string,\n userLang: PropTypes.string,\n previewToken: PropTypes.string,\n previewDate: PropTypes.string,\n};\n\nTopTabBar.defaultProps = {\n variant: 'fullWidth',\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return ;\n});\n","export default __webpack_public_path__ + \"static/media/logo.f48b0867.svg\";","import React, { PureComponent } from 'react';\nimport { Switch as RouterSwitch, Route, Link, withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\nimport WifiIcon from '@material-ui/icons/Wifi';\nimport Box from '@material-ui/core/Box';\nimport Container from '@material-ui/core/Container';\n\nimport { useMatomo } from '@datapunt/matomo-tracker-react'\n\nimport L from '../util/L10n';\nimport InvisibleImg from '../a11y/InvisibleImg';\nimport TopTabBar from './TopTabBar';\nimport wifiConfig from '../config/wifi.json';\nimport logo from '../images/logo.svg';\nimport Config from '../config/ui_settings.json';\n\nconst useStyles = makeStyles((theme) => ({\n menuButton: {\n marginRight: theme.spacing(2),\n color: '#000000',\n },\n loginButton: {\n marginLeft: theme.spacing(2),\n marginRight: '-12px',\n color: '#9d9d9d',\n },\n placeboButton: {\n marginLeft: theme.spacing(2),\n marginRight: '-12px',\n paddingLeft: '48px',\n },\n title: {\n display: 'flex',\n flexDirection: 'row',\n flexGrow: 1,\n margin: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n logo: {\n height: '42px',\n // width: '100%',\n // textAlign: 'center',\n },\n stickToTop: {\n width: '100%',\n position: 'fixed',\n top: 0,\n backgroundColor: '#ffffff',\n borderBottom: '1px solid #d8d8d8',\n },\n link: {\n textDecoration: 'none',\n color: 'inherit',\n },\n}));\n\nclass TopAppBar extends PureComponent {\n render() {\n if (this.props.appEmbedded)\n return null;\n\n const {\n classes, location, history, onLoginButtonClick, showWifiLogin,\n onMenuButtonClick, userLang, externalTracking, scrollableTabs,\n previewToken, previewDate,\n } = this.props;\n const loginButton =\n \n \n \n \n \n ;\n const placeboButton =
    ;\n const loginButtonItem = showWifiLogin ? loginButton : placeboButton;\n let onClick = undefined;\n let Component = undefined;\n let backLink = undefined;\n if (location.state && location.state.back) {\n onClick = () => { history.goBack(); }\n } else {\n Component = Link;\n backLink = {\n pathname: '/',\n search: location.search,\n }\n }\n const backArrowAltText = L.t('appBarBackButton_ariaLabel', userLang);\n const menuAltText = L.t('appBarMenuButton_ariaLabel', userLang);\n const homeLink = {\n pathname: '/',\n search: location.search,\n };\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 {loginButtonItem}\n \n \n \n \n );\n }\n}\n\nTopAppBar.propTypes = {\n appEmbedded: PropTypes.bool,\n showWifiLogin: PropTypes.bool,\n onMenuButtonClick: PropTypes.func,\n onLoginButtonClick: PropTypes.func,\n userLang: PropTypes.string,\n scrollableTabs: PropTypes.bool,\n externalTracking: PropTypes.func,\n previewToken: PropTypes.string,\n previewDate: PropTypes.string,\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n const { trackEvent } = useMatomo();\n const _onClickWeb = () => {\n trackEvent({\n category: 'wifi',\n action: 'click',\n name: 'button',\n });\n return true;\n };\n return ;\n});\n","import React, { PureComponent } from 'react';\nimport { Link, withRouter } from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport BottomNavigation from '@material-ui/core/BottomNavigation';\nimport BottomNavigationAction from '@material-ui/core/BottomNavigationAction';\nimport RestoreIcon from '@material-ui/icons/Restore';\nimport FavoriteIcon from '@material-ui/icons/Favorite';\nimport LocationOnIcon from '@material-ui/icons/LocationOn';\n\nimport L from '../util/L10n';\n\nconst useStyles = makeStyles((theme) => ({\n stickToBottom: {\n width: '100%',\n position: 'fixed',\n bottom: 0,\n },\n}));\n\nclass BottomTabBar extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n value: 'other',\n }\n }\n\n config() {\n return [\n {\n value: 'today',\n path: '/',\n icon: RestoreIcon,\n label: 'bottomNavigationBarToday',\n },\n {\n value: 'line',\n path: '/linie',\n icon: FavoriteIcon,\n label: 'bottomNavigationBarLine',\n },\n {\n value: 'preview',\n path: '/vorschau',\n icon: LocationOnIcon,\n label: 'bottomNavigationBarPreview',\n },\n ];\n }\n\n valueByPath(path) {\n let newValue = 'other';\n for (let conf of this.config()) {\n if (path === conf.path) {\n newValue = conf.value;\n break;\n }\n }\n if (newValue !== this.state.value) {\n this.setState({ value: newValue, });\n }\n }\n\n componentDidMount() {\n this._didUpdateOrMount();\n }\n\n componentDidUpdate() {\n this._didUpdateOrMount();\n }\n\n _didUpdateOrMount() {\n this.valueByPath(this.props.location.pathname);\n }\n\n render() {\n if (this.props.appEmbedded)\n return null;\n\n return (\n \n {this.createActions()}\n \n );\n }\n\n createActions() {\n const actions = [];\n for (let conf of this.config()) {\n const Icon = conf.icon;\n const link = {\n pathname: conf.path,\n search: this.props.location.search,\n }\n actions.push(\n }\n label={L.t(conf.label, this.props.userLang)}\n key={conf.value}\n />\n );\n }\n return actions;\n }\n}\n\nBottomTabBar.propTypes = {\n onChange: PropTypes.func,\n showLabels: PropTypes.bool,\n appEmbedded: PropTypes.bool,\n userLang: PropTypes.string,\n};\n\nBottomTabBar.defaultProps = {\n showLabels: true,\n}\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return \n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\nimport { withRouter, Link } from 'react-router-dom';\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Button from '@material-ui/core/Button';\nimport Container from '@material-ui/core/Container';\n\nimport L from '../util/L10n';\nimport Config from '../config/ui_settings.json';\n\nconst useStyles = makeStyles((theme) => ({\n footer: {\n padding: '7px 0px',\n borderTop: '1px solid #dddddd',\n position: 'absolute',\n bottom: 0,\n width: '100%',\n },\n item: {\n flexBasis: '32%',\n textAlign: 'center',\n [theme.breakpoints.up('sm')]: {\n flexBasis: '24%',\n },\n [theme.breakpoints.up('md')]: {\n flexBasis: '16%',\n },\n },\n button: {\n fontWeight: 500,\n fontSize: 12,\n textTransform: 'none',\n color: '#9e9e9e',\n '& :hover': {\n textDecoration: 'underline',\n },\n '& :active': {\n textDecoration: 'underline',\n },\n '& :focus': {\n textDecoration: 'underline',\n },\n },\n langButton: {\n fontWeight: 500,\n fontSize: 12,\n textTransform: 'none',\n color: '#28a8ca',\n '& :hover': {\n textDecoration: 'underline',\n },\n '& :active': {\n textDecoration: 'underline',\n },\n '& :focus': {\n textDecoration: 'underline',\n },\n },\n divider: {\n fontSize: 16,\n color: '#dddddd',\n },\n}));\n\nclass Footer extends PureComponent {\n render() {\n const { classes, userLang, location } = this.props;\n return (\n
    \n \n \n \n \n {L.t('footerButtonA11y_text', userLang)}\n \n \n
    |
    \n \n \n {L.t('footerButtonImprint_text', userLang)}\n \n \n
    |
    \n \n \n {L.t('footerButtonDataprotection_text', userLang)}\n \n \n
    \n \n
    \n );\n }\n}\n\nFooter.propTypes = {\n userLang: PropTypes.string,\n updateUserLang: PropTypes.func.isRequired,\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return
    ;\n});\n","import React, { PureComponent } from 'react';\nimport PropTypes from \"prop-types\";\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Snackbar from '@material-ui/core/Snackbar';\nimport Alert from '@material-ui/lab/Alert';\nimport AlertTitle from '@material-ui/lab/AlertTitle';\nimport Button from '@material-ui/core/Button';\n\nimport L from '../util/L10n';\nimport CookieAccess from '../util/CookieAccess';\n\nconst useStyles = makeStyles((theme) => ({\n snackbarRoot: {\n left: 0,\n right: 0,\n backgroundColor: '#02a5ce',\n [theme.breakpoints.up('sm')]: {\n transform: 'none',\n },\n },\n snackbarAnchor: {\n bottom: 0,\n },\n alertRoot: {\n borderRadius: 0,\n },\n alertFilled: {\n color: '#ffffff',\n backgroundColor: '#02a5ce',\n },\n text: {\n hyphens: 'auto'\n },\n buttons: {\n textAlign: 'right',\n paddingTop: 16,\n },\n button: {\n color: '#e5f3f9',\n fontWeight: 600,\n marginLeft: 16,\n },\n}));\n\nclass CookieConsentBanner extends PureComponent {\n render() {\n const {\n classes, userLang, showWifiLogin, acceptTrackingConsent, rejectTrackingConsent,\n } = this.props;\n return (\n {\n // Ignore any click other than buttons.\n }}\n >\n \n \n {L.t('cookieBannerTitle', userLang)}\n \n \n
    \n \n {L.t('cookieBannerReject', userLang)}\n \n \n {L.t('cookieBannerAccept', userLang)}\n \n
    \n \n \n );\n }\n}\n\nCookieConsentBanner.propTypes = {\n userLang: PropTypes.string,\n showWifiLogin: PropTypes.bool,\n acceptTrackingConsent: PropTypes.func.isRequired,\n rejectTrackingConsent: PropTypes.func.isRequired,\n};\n\nexport default function _CookieConsentBanner(props) {\n const classes = useStyles();\n return ;\n}\n","export default __webpack_public_path__ + \"static/media/logo_white.2bf2cd5f.svg\";","import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { withRouter, Link } from 'react-router-dom';\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport SwipeableDrawer from '@material-ui/core/SwipeableDrawer';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Divider from '@material-ui/core/Divider';\nimport IconButton from '@material-ui/core/IconButton';\nimport ArchiveRoundedIcon from '@material-ui/icons/ArchiveRounded';\nimport PeopleAltIcon from '@material-ui/icons/PeopleAlt';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport Box from '@material-ui/core/Box';\n\nimport L from './util/L10n';\nimport InvisibleImg from './a11y/InvisibleImg';\nimport logo from './images/logo_white.svg';\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n display: 'flex',\n flexDirection: 'row',\n margin: 0,\n alignItems: 'center',\n },\n logo: {\n height: '42px',\n [theme.breakpoints.down('sm')]: {\n padding: '0px 20px 3px',\n margin: '-1px 0px 1px',\n },\n [theme.breakpoints.up('sm')]: {\n padding: '12px 20px 8px',\n },\n },\n arrowButton: {\n color: 'white',\n padding: '0px',\n marginLeft: '48px',\n marginRight: '8px',\n },\n arrow: {\n fontSize: '2.8rem',\n },\n paper: {\n color: 'white',\n background: '#006883',\n },\n labelLight: {\n color: 'rgba(255, 255, 255, 0.78)',\n },\n labelSmall: {\n fontSize: 14,\n },\n icon: {\n color: 'white',\n },\n iconLight: {\n color: 'rgba(255, 255, 255, 0.78)',\n },\n listItemIconClass: {\n minWidth: 40,\n },\n divider: {\n backgroundColor: 'rgba(255, 255, 255, 0.22)',\n margin: '12px 0',\n },\n}));\n\nclass MainMenu extends PureComponent {\n render() {\n if (this.props.appEmbedded)\n return null;\n\n const { anchor, open, onOpen, onClose, classes,\n userLang, } = this.props;\n const closeAltText = L.t('menuCloseButton_ariaLabel', userLang);\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.createMenuItems(userLang)}\n {/* this.createMenuItemDarkMode(userLang) */}\n {/* this.createMenuItemTextOnly(userLang) */}\n \n
    \n \n );\n }\n\n config() {\n const { classes } = this.props;\n return [\n {\n type: 'divider',\n label: 'divider-0',\n },\n {\n type: 'item',\n label: 'menuItemArchive',\n path: '/archiv',\n icon: ArchiveRoundedIcon,\n iconClass: classes.icon,\n },\n {\n type: 'item',\n label: 'menuItemAboutUs',\n path: '/ueber-uns',\n icon: PeopleAltIcon,\n iconClass: classes.icon,\n },\n {\n type: 'divider',\n label: 'divider-1',\n },\n {\n type: 'item',\n label: 'menuItemSettings',\n labelClass: classes.labelLight,\n path: '/einstellungen',\n icon: SettingsIcon,\n iconClass: classes.iconLight,\n },\n {\n type: 'divider',\n label: 'divider-2',\n },\n {\n type: 'item',\n label: 'menuItemImprint',\n labelClass: classes.labelLight,\n labelFontClass: classes.labelSmall,\n path: '/impressum',\n },\n {\n type: 'item',\n label: 'menuItemDataprotection',\n labelClass: classes.labelLight,\n labelFontClass: classes.labelSmall,\n path: '/datenschutz',\n },\n ];\n }\n\n createMenuItems(userLang) {\n const items = [];\n const { location, classes } = this.props;\n for (let conf of this.config()) {\n switch (conf.type) {\n case 'item':\n let listItemIcon = null;\n if (conf.icon) {\n const Icon = conf.icon;\n listItemIcon =\n \n \n ;\n }\n const state = {\n back: location.pathname,\n }\n const link = {\n pathname: conf.path,\n search: location.search,\n state: state,\n }\n items.push(\n \n {listItemIcon}\n \n \n );\n break;\n case 'divider':\n items.push(\n \n );\n break;\n default: // ignore.\n }\n }\n return items;\n }\n}\n\nMainMenu.propTypes = {\n anchor: PropTypes.string,\n open: PropTypes.bool,\n onOpen: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n darkMode: PropTypes.bool,\n toggleDarkMode: PropTypes.func.isRequired,\n textOnly: PropTypes.bool,\n setTextOnly: PropTypes.func.isRequired,\n appEmbedded: PropTypes.bool,\n userLang: PropTypes.string,\n};\n\nMainMenu.defaultProps = {\n anchor: 'left',\n};\n\nexport default withRouter((props) => {\n const classes = useStyles();\n return ;\n});\n","import React from 'react'\n\nimport Lottie from 'react-lottie-player'\nimport lottieJson from './cards/random.json'\n\nimport Config from './config/ui_settings.json';\nimport Container from \"@material-ui/core/Container\";\nimport Grid from \"@material-ui/core/Grid\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport {useTheme} from \"@material-ui/core/styles\";\n\n\nexport default function GlobalAnimation({onStop, animationData, loopAnimation}) {\n\n let lottieData = lottieJson;\n if(animationData !== null && animationData) {\n lottieData = animationData;\n }\n\n let loop = false\n if(loopAnimation !== null) {\n loop = loopAnimation;\n }\n\n\n function onComplete() {\n onStop();\n }\n\n\n const theme = useTheme();\n const isLandscape = useMediaQuery('@media (orientation: landscape)');\n const isWideScreen =\n useMediaQuery(theme.breakpoints.up(Config.entryWidescreenMinWidth));\n const twoColumnLayout = isLandscape || isWideScreen;\n\n let grid;\n let lottieEntry = ;\n\n if (twoColumnLayout) {\n grid = \n \n \n {lottieEntry}\n \n \n\n ;\n } else {\n grid = \n {lottieEntry}\n ;\n }\n\n\n return (\n
    \n\n
    \n \n {grid}\n\n \n
    \n
    \n );\n\n}\n\n","import React, {PureComponent} from 'react';\nimport {useParams, withRouter} from 'react-router-dom';\nimport PropTypes from \"prop-types\";\n\nimport {makeStyles} from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Typography from \"@material-ui/core/Typography\";\n\nimport PageHelmet from '../util/PageHelmet';\nimport getViewData from \"../data/ViewReader\";\nimport html2canvas from \"html2canvas\";\nimport Survey from \"../cards/survey/Survey\";\n\nconst useStyles = makeStyles({\n h2: {\n marginBlockStart: '0.83em',\n marginBlockEnd: '0.83em',\n },\n p: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n maxWidth: 500,\n },\n pok: {\n marginBlockStart: '1em',\n marginBlockEnd: '1em',\n textAlign: 'justify',\n hyphens: 'auto',\n maxWidth: 500,\n backgroundColor: '#338C15',\n color: '#ffffff',\n fontWeight: 500,\n padding: 10,\n },\n button: {\n margin: '20px 0px',\n maxWidth: 500,\n },\n});\n\n\nclass SurveyResultPage extends PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n data: null,\n lastModified: null,\n error: null,\n twoColumnLayout: props.twoColumnLayout,\n layoutLocked: false,\n }\n this.onDataReceived = this._onDataReceived.bind(this);\n this.onSaveTile = this._onSaveTile.bind(this);\n\n }\n\n componentDidMount() {\n try {\n window.scrollTo(0, 0);\n } catch (e) {\n // Ignore.\n }\n this.load();\n }\n\n _onDataReceived(data, lastModified) {\n const state = {};\n state.data = data;\n state.lastModified = lastModified;\n let kachel;\n if (data) {\n for (let k of data.kacheln) {\n if ('uestra/survey' === k.type) {\n kachel = k;\n }\n }\n }\n this.setState({data: data, lastModified: lastModified, kachel: kachel, error: null})\n }\n\n load() {\n const {appServerPort} = this.props;\n // Immer laden\n getViewData(this.props.entryId, null, this.onDataReceived,\n appServerPort, null).catch((error) => {\n console.warn('SurveyResultPage.load', error);\n this.setState({error: error,});\n })\n\n }\n\n async _onSaveTile() {\n const {surveyId, entryId} = this.props;\n let canvas = await html2canvas(document.getElementById(\"tile\"));\n let image = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\");\n var a = document.createElement('a');\n a.href = image;\n a.download = surveyId + \"_\" + entryId + \".png\";\n document.body.appendChild(a);\n a.click();\n }\n\n\n render() {\n const {surveyId, entryId, classes, location} = this.props;\n const {data, kachel} = this.state;\n if (data && kachel) {\n return (\n \n \n
    \n \n \n
    \n Kachel speichern\n\n
    \n );\n }\n return (\n \n \n \n {entryId} {surveyId}\n \n\n \n\n )\n\n }\n}\n\nSurveyResultPage.propTypes = {\n userLang: PropTypes.string,\n appServerPort: PropTypes.number,\n entryId: PropTypes.string,\n surveyId: PropTypes.string,\n};\n\n\nexport default withRouter((props) => {\n const classes = useStyles();\n const {entryId, surveyId} = useParams();\n\n return ;\n});\n\n\n","import React, {Fragment, PureComponent, useState} from 'react';\nimport {BrowserRouter as Router, Redirect, Route, Switch as RouterSwitch, withRouter} from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport {createMuiTheme, makeStyles, ThemeProvider} from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport NativeSelect from '@material-ui/core/NativeSelect';\nimport {KeyboardDateTimePicker} from '@material-ui/pickers';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport {useMatomo} from '@datapunt/matomo-tracker-react';\n\nimport L from './util/L10n';\nimport DetectLocale from './util/DetectLocale';\nimport AppHelmet from './util/AppHelmet';\nimport PageContent from './PageContent';\nimport TopAppBar from './components/TopAppBar';\nimport BottomTabBar from './components/BottomTabBar';\nimport Footer from './components/Footer';\nimport CookieConsentBanner from './components/CookieConsentBanner';\nimport MainMenu from './MainMenu';\nimport previewConfig from './config/preview.json';\nimport Config from './config/ui_settings.json';\nimport GlobalAnimation from \"./GlobalAnimation\";\nimport SurveyResultPage from \"./page/SurveyResultPage\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n previewForm: {\n margin: '10px',\n textAlign: 'center',\n verticalAlign: 'middle',\n },\n textField: {\n margin: '8px',\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n iframe: {\n margin: '0 auto',\n display: 'block',\n },\n footerWrapper: {\n position: 'relative',\n minHeight: '100vh',\n backgroundImage:\n 'url(' + process.env.PUBLIC_URL + '/images/background-01.png)',\n backgroundRepeat: 'no-repeat',\n backgroundAttachment: 'fixed',\n [theme.breakpoints.down('sm')]: {\n backgroundPosition: '0px 104px',\n backgroundSize: '1920px auto',\n },\n [theme.breakpoints.up('sm')]: {\n backgroundPosition: '0px 112px',\n backgroundSize: '1920px auto',\n },\n [theme.breakpoints.up('xl')]: {\n backgroundSize: '100% 768px',\n },\n },\n}));\n\nconst prefersDarkMode =\n window.matchMedia('(prefers-color-scheme: dark)').matches;\n\nconst themeConfig = {\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n sd: 720,\n md: 960,\n lg: 1280,\n xl: 1920,\n },\n },\n palette: {\n primary: {\n main: '#00c4ff',\n contrastText: '#777777',\n },\n secondary: {\n light: '#0066ff',\n main: '#0044ff',\n // dark: will be calculated from palette.secondary.main,\n contrastText: '#ffcc00',\n },\n background: {\n default: '#ffffff',\n },\n type: prefersDarkMode ? 'dark' : 'light',\n },\n typography: {\n fontFamily: [\n 'DinforPBR',\n ].join(','),\n },\n props: {\n MuiTypography: {\n variantMapping: {\n h6: 'h1',\n },\n },\n },\n overrides: {\n MuiCardContent: {\n root: {\n padding: '0px',\n '&:last-child': {\n paddingBottom: '0px',\n },\n },\n },\n MuiDivider: {\n root: {\n backgroundColor: '#1bb2d7',\n },\n },\n MuiContainer: {\n maxWidthSm: {\n '@media (min-width: 600px)': {\n maxWidth: '552px', // 600 - gutter padding\n },\n '@media (min-width: 720px)': {\n maxWidth: '648px', // 720 * .9\n },\n '@media (min-width: 960px)': {\n maxWidth: '864px', // 960 * .9\n },\n '@media (min-width: 1280px)': {\n maxWidth: '1152px', // 1280 * .9\n },\n '@media (min-width: 1920px)': {\n maxWidth: '1456px', // 720 * 2 + padding\n },\n },\n },\n MuiListItemText: {\n primary: {\n fontWeight: 500,\n },\n },\n MuiTabs: {\n indicator: {\n backgroundColor: '#28a8ca',\n },\n },\n MuiTab: {\n textColorInherit: {\n color: '#828282',\n '&$selected': {\n color: '#28a8ca',\n },\n },\n },\n },\n};\n\nconst appBarThemeConfig = {\n ...themeConfig,\n palette: {\n primary: {\n main: '#EEEEEE',\n contrastText: '#777777',\n },\n ...themeConfig.palette.secondary,\n },\n};\n\nconst useDarkMode = () => {\n const [theme, setTheme] = useState(themeConfig);\n const toggleDarkMode = (mode) => {\n const updatedTheme = {\n ...theme,\n palette: {\n ...theme.palette,\n type: mode ? 'dark' : 'light',\n }\n }\n setTheme(updatedTheme);\n }\n return [theme, toggleDarkMode];\n}\n\nlet previewDevicesMap = new Map();\npreviewConfig.devices.forEach((device) => {\n previewDevicesMap.set(device.label, device);\n});\n\nclass Main extends PureComponent {\n\n constructor(props) {\n super(props);\n let previewDate = props.previewDate;\n if (!previewDate) {\n const date = new Date();\n const now = Date.now() - 60000 * date.getTimezoneOffset();\n previewDate = new Date(now).toISOString().substr(0, 16);\n } else {\n const spaceAt = previewDate.indexOf(' ');\n if (spaceAt > 0) {\n previewDate = previewDate.substr(0, spaceAt) + 'T' +\n previewDate.substr(spaceAt + 1);\n }\n }\n const params = new URLSearchParams(props.location.search);\n const showWifiLogin = params.has('login') && params.get('login') === 'true';\n\n this.state = {\n showWifiLogin: showWifiLogin,\n showAnimation: false,\n animationData: null,\n loopAnimation: false,\n showDrawer: false,\n darkMode: props.prefersDarkMode,\n previewDate: previewDate,\n previewWidth:\n previewDevicesMap.get(previewConfig.defaultDevice).width,\n previewHeight:\n previewDevicesMap.get(previewConfig.defaultDevice).height,\n previewDevice: previewConfig.defaultDevice,\n userLang: props.userLang,\n videoQuality: 1280,\n fullscreenVideo: false,\n textOnly: false,\n };\n this.showDrawer = this._showDrawer.bind(this);\n this.hideDrawer = this._hideDrawer.bind(this);\n this.toggleDarkMode = this._toggleDarkMode.bind(this);\n this.setTextOnly = this._setTextOnly.bind(this);\n this.updatePreviewDate = this._updatePreviewDate.bind(this);\n this.updatePreviewDevice = this._updatePreviewDevice.bind(this);\n this.updateUserLang = this._updateUserLang.bind(this);\n this.updateVideoQuality = this._updateVideoQuality.bind(this);\n this.updateFullscreenVideo = this._updateFullscreenVideo.bind(this);\n this.startAnimation = this._startAnimation.bind(this);\n this.stopAnimation = this._stopAnimation.bind(this);\n\n }\n\n _toggleDrawer(event, show) {\n if (event && event.type === 'keydown' &&\n (event.key === 'Tab' || event.key === 'Shift' ||\n event.key === 'Enter')) {\n return;\n }\n\n this.setState({showDrawer: show});\n }\n\n _showDrawer(event) {\n this._toggleDrawer(event, true);\n };\n\n _hideDrawer(event) {\n this._toggleDrawer(event, false);\n };\n\n _toggleDarkMode() {\n const newMode = !this.state.darkMode;\n this.props.switchDarkmode(newMode);\n this.setState({darkMode: newMode,});\n }\n\n _setTextOnly(textOnly) {\n this.setState({textOnly});\n }\n\n _updatePreviewDate(newPreviewDate) {\n if (newPreviewDate !== '' &&\n newPreviewDate !== this.state.previewDate) {\n this.setState({previewDate: newPreviewDate,})\n }\n }\n\n _updatePreviewDevice(newPreviewDevice) {\n if (newPreviewDevice !== this.state.previewDevice) {\n const newState = {\n previewDevice: newPreviewDevice,\n previewWidth: previewDevicesMap.get(newPreviewDevice).width,\n previewHeight: previewDevicesMap.get(newPreviewDevice).height,\n };\n this.setState(newState);\n }\n }\n\n _updateUserLang(newUserLang) {\n const {location, userLangEvent,} = this.props;\n const params = new URLSearchParams(location.search);\n params.set('lang', newUserLang);\n userLangEvent(newUserLang);\n const search = params.toString();\n window.location.assign(location.pathname + '?' + search);\n }\n\n _updateVideoQuality(newVideoQuality) {\n if (this.state.videoQuality !== newVideoQuality) {\n this.setState({videoQuality: newVideoQuality,});\n }\n }\n\n _updateFullscreenVideo(newFullscreenVideo) {\n if (this.state.fullscreenVideo !== newFullscreenVideo) {\n this.setState({fullscreenVideo: newFullscreenVideo,});\n }\n }\n\n componentDidMount() {\n this.props.switchDarkmode(this.state.darkMode);\n }\n\n render() {\n return (\n \n \n {this.renderFramed()}\n \n \n {this.renderMain()}\n \n \n );\n }\n\n pad(number) {\n if (number < 10)\n return '0' + number;\n else\n return number;\n }\n\n getIsoDateString() {\n const date = this.state.previewDate;\n if ('string' === typeof date) {\n return date;\n } else {\n return date.getFullYear() + '-' +\n this.pad(1 + date.getMonth()) + '-' +\n this.pad(date.getDate()) + 'T' +\n this.pad(date.getHours()) + ':' +\n this.pad(date.getMinutes());\n }\n }\n\n renderFramed() {\n const {location, previewToken, classes,} = this.props;\n const iframeName = 'content-preview';\n const iframeTitle = 'Content Preview';\n let iframeSrc = location.pathname.indexOf('/wp-preview') === 0 ?\n location.pathname.substr('/wp-preview'.length) : undefined;\n if (iframeSrc) {\n if (iframeSrc === '') {\n iframeSrc = '/';\n }\n const params = new URLSearchParams(location.search);\n params.set('date', this.getIsoDateString());\n iframeSrc += '?' + params.toString();\n }\n if (iframeSrc && iframeSrc.length > 0 && previewToken) {\n const previewDeviceOptions = previewConfig.devices.map((device) => {\n const name = device.name + ' (' + device.width + 'x' +\n device.height + ')';\n return (\n \n );\n });\n return (\n \n
    \n {\n const dateTime = value;\n if (dateTime) {\n this.updatePreviewDate(dateTime);\n }\n }}\n label={L.t('previewDateTimeLabel',\n this.state.userLang)}\n showTodayButton={true}\n todayLabel={L.t('previewDateTodayLabel',\n this.state.userLang)}\n okLabel={L.t('previewDateOkLabel',\n this.state.userLang)}\n cancelLabel={L.t('previewDateCancelLabel',\n this.state.userLang)}\n format={L.t('previewDateFormat',\n this.state.userLang)}\n invalidDateMessage={L.t('previewDateInvalidLabel',\n this.state.userLang)}\n minDateMessage={L.t('previewDateMaxLabel',\n this.state.userLang)}\n maxDateMessage={L.t('previewDateMinLabel',\n this.state.userLang)}\n maxDate='2099-12-31'\n autoOk={true}\n ampm={false}\n />\n \n \n {L.t('previewDeviceLabel',\n this.state.userLang)}\n \n {\n this.updatePreviewDevice(event.target.value);\n }}\n >\n {previewDeviceOptions}\n \n \n \n\n