{"version":3,"file":"static/js/4624.966f2221.chunk.js","mappings":"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","sources":["shared/modal/testimonial-modal.jsx","shared/testimonial-container/testimonial-container-component.jsx","shared/testimonial-container/testimonial-container-module.jsx","shared/_svgs/small/Play.js","shared/youtube-embed/YouTubeEmbed.jsx"],"sourcesContent":["import React from \"react\"\nimport OutsideClickTrigger from \"../../booking/components/common/OutsideClickTrigger\"\nimport PropTypes from \"prop-types\"\nimport Svg from \"../../shared/_svgs/svg\"\n\nexport default function TestimonialModal({ modalOpen, modalRichtext, modalQuote, closeHandler, tooltip }) {\n return (\n <div className=\"overlay overlay--modal overlay--fixed is-active\">\n <div className=\"modal\">\n <OutsideClickTrigger\n onOutsideClick={() => {\n closeHandler()\n }}\n >\n <React.Fragment>\n <button\n className=\"button button--icon js--close-modal\"\n onClick={() => {\n closeHandler()\n }}\n >\n <span className=\"icon\">\n <svg className=\"svg-icon svg-icon--close-new\">\n <use xmlnsXlink=\"http://www.w3.org/1999/xlink\" xlinkHref=\"/dist/svg/symbols.svg#svg-close-new\">\n \n </use>\n </svg>\n </span>\n </button>\n <div className=\"modal__content__inner\">\n <div className=\"modal__top\">\n <div className=\"a--left\">\n {modalRichtext ? <div className=\"rich-text\"> {modalRichtext} </div> : null}\n {modalQuote ? (\n <div className=\"quote\">\n <Svg iconName=\"quote\" fillColor=\"white\"></Svg> {modalQuote}{\" \"}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n </React.Fragment>\n </OutsideClickTrigger>\n </div>\n </div>\n )\n}\n\nTestimonialModal.propTypes = {\n modalOpen: PropTypes.bool,\n modalRichtext: PropTypes.array,\n ModalQuote: PropTypes.string,\n closeHandler: PropTypes.func,\n}\n","import React, { useState } from \"react\"\nimport Slider from \"react-slick\"\nimport ReactHTMLParser from \"react-html-parser\"\nimport YoutubeEmbed from \"../youtube-embed/YouTubeEmbed\"\nimport Svg from \"../../shared/_svgs/svg\"\nimport \"./_testimonial-container.scss\"\nimport TestimonialModal from \"../modal/testimonial-modal\"\n\nexport default function TestimonialContainerComponent({ testimonialContent, headline }) {\n const [overlayRichtext, setOverlayRichtext] = useState(\"\")\n const [overlayQuote, setOverlayQuote] = useState(\"\")\n const [toggleOverlay, setToggleOverlay] = useState(false)\n\n const handleOverlay = () => {\n setToggleOverlay(!toggleOverlay)\n }\n\n var settings = {\n dots: true,\n arrows: true,\n infinite: false,\n slidesToShow: 1,\n slidesToScroll: 1,\n swipe: true,\n variableWidth: false,\n accessibility: true,\n responsive: [\n {\n breakpoint: 768,\n settings: {\n arrows: false,\n centerMode: true,\n centerPadding: \"4%\",\n },\n },\n ],\n }\n\n const htmlTestimonialContent =\n testimonialContent.length > 0\n ? testimonialContent.map((t) => {\n return (\n <TestimonialItem\n key={t.testimonialHeading}\n isImage={t.isImageFormat}\n image={t.testimonialImage || undefined}\n isVideo={t.isVideoFormat}\n youtube={t.videoId || undefined}\n ariaVideoDescription={t.ariaVideoDescription}\n testimonialHeading={t.testimonialHeading}\n testimonial={t.testimonial}\n quote={t.testimonialQuote || \"\"}\n readMore={t.testimonialReadMore || \"\"}\n handleOverlay={handleOverlay}\n setOverlayRichtext={setOverlayRichtext}\n setOverlayQuote={setOverlayQuote}\n toggleOverlay={toggleOverlay}\n />\n )\n })\n : null\n\n return (\n <section className=\"block-container\">\n <div className=\"testimonial-container\">\n <div className=\"w--normal\">\n <h3 className=\"testimonial-theme-text\">{headline}</h3>\n <Slider {...settings}>{htmlTestimonialContent}</Slider>\n <div className=\"slideritems\">/ {testimonialContent.length} )</div>\n {toggleOverlay ? (\n <TestimonialModal modalOpen={toggleOverlay} modalRichtext={overlayRichtext} modalQuote={overlayQuote} closeHandler={handleOverlay} />\n ) : null}\n </div>\n </div>\n </section>\n )\n}\n\nfunction TestimonialItem({\n isVideo,\n isImage,\n testimonialHeading,\n testimonial,\n image,\n youtube,\n ariaVideoDescription,\n quote,\n readMore,\n handleOverlay,\n setOverlayRichtext,\n setOverlayQuote,\n toggleOverlay,\n}) {\n const htmlTestimonial = ReactHTMLParser(testimonial)\n\n const handleModalToggle = () => {\n if (toggleOverlay) {\n setOverlayRichtext(undefined)\n setOverlayQuote(undefined)\n handleOverlay()\n return\n }\n\n setOverlayRichtext(htmlTestimonial)\n setOverlayQuote(quote)\n handleOverlay()\n }\n\n return (\n <div className={`testimonial-item ${isVideo ? \" video-format\" : isImage ? \" image-format\" : \"\"}`}>\n <div className=\"textarea\">\n <h4>{testimonialHeading}</h4>\n <div className=\"maintext\">{htmlTestimonial}</div>\n </div>\n <div className=\"imagearea\">\n {\n //if image, show image markup\n isImage && image ? (\n <img src={image} />\n ) : //if video, show video markup\n isVideo && youtube ? (\n <YoutubeEmbed\n embedId={youtube}\n classDecleration={\"testimonial-video\"}\n backgroundImage={image}\n ariaVideoDescription={ariaVideoDescription}\n />\n ) : undefined\n }\n <div className=\"testimonial\">\n <Svg iconName=\"quote\" fillColor=\"white\"></Svg>\n {quote}\n </div>\n </div>\n <a className=\"readmorelink\" onClick={handleModalToggle}>\n {readMore}\n </a>\n </div>\n )\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport TestimonialContainer from \"./testimonial-container-component\"\n\nexport default class TestimonialContainerModule {\n constructor(elem) {\n const self = this\n self.elem = elem\n self.modelJson = elem.dataset.modelJson && JSON.parse(elem.dataset.modelJson)\n this.init()\n return self\n }\n\n init() {\n const self = this\n ReactDOM.unmountComponentAtNode(self.elem)\n ReactDOM.render(<TestimonialContainer {...self.modelJson} />, self.elem)\n }\n}\n","import React from \"react\"\n\nconst SvgPlay = (props) => (\n <svg viewBox=\"0 0 18 18\" {...props}>\n <path d=\"M0 0l18 9-18 9z\" fillRule=\"evenodd\" />\n </svg>\n)\n\nexport default SvgPlay\n","import React, { useState, useEffect } from \"react\"\nimport PropTypes from \"prop-types\"\n// import YoutubePlayer from 'react-youtube-player';\nimport YouTube from \"react-youtube\"\nimport SvgPlay from \"../_svgs/small/Play\"\nimport \"./YouTubeEmbed.scss\"\n\nexport default function YoutubeEmbed({ embedId, classDecleration, backgroundImage, ariaVideoDescription }) {\n const [playbackState, setPlaybackState] = useState(\"paused\")\n const [showVideoHtml, setShowVideoHtml] = useState(false)\n\n const [hasVideoLoaded, setHasVideoLoaded] = useState(false)\n const video = document.getElementById(embedId) || undefined\n\n useEffect(() => {\n if (!!video && !hasVideoLoaded) {\n const handleLoad = () => {\n setHasVideoLoaded(false)\n }\n\n video.addEventListener(\"load\", handleLoad)\n\n return () => {\n video.removeEventListener(\"load\", handleLoad)\n }\n }\n })\n\n const options = {\n playerVars: {\n showinfo: false,\n modestbranding: true,\n allowFullScreen: 1,\n title: \"Embedded Youtube\",\n autoPlay: 1,\n controls: 1,\n loop: 0,\n cc_load_policy: \"0\",\n iv_load_policy: \"3\",\n autohide: 0,\n },\n }\n\n function onPlayerReady(event) {\n var embedCode = event.target.getVideoEmbedCode()\n event.target.playVideo()\n if (document.getElementById(\"embed-code\")) {\n document.getElementById(\"embed-code\").innerHTML = embedCode\n document.getElementById(\"embed-code\").focus()\n }\n }\n\n const playHandler = () => {\n setShowVideoHtml(true)\n setPlaybackState(\"playing\")\n }\n\n let overlayStyle = {\n backgroundImage: `url('http://img.youtube.com/vi/${embedId}/0.jpg')`,\n }\n\n if (backgroundImage) {\n overlayStyle.backgroundImage = `url('${backgroundImage}')`\n }\n\n return (\n <div className={classDecleration}>\n {/* {playbackState !== 'playing' && !!backgroundImage ?\n <button className=\"youtube-overlay\" onClick={playHandler} style={overlayStyle}>\n <div className=\"svg-container\">\n <div className=\"youtube-play-svg\">\n <SvgPlay />\n </div>\n </div>\n </button> : undefined\n } */}\n {showVideoHtml ? (\n <YouTube videoId={embedId} id={embedId} className={\"youtube-video\"} title={\"Embedded Youtube\"} opts={options} onReady={onPlayerReady} />\n ) : (\n <button aria-label={ariaVideoDescription || \"Start Video\"} className=\"youtube-overlay\" onClick={playHandler} style={overlayStyle}>\n <div className=\"svg-container\">\n <div className=\"youtube-play-svg\">\n <SvgPlay />\n </div>\n </div>\n </button>\n )}\n </div>\n )\n}\n\nYoutubeEmbed.propTypes = {\n embedId: PropTypes.string.isRequired,\n classDecleration: PropTypes.string,\n backgroundImage: PropTypes.string,\n}\n"],"names":["TestimonialModal","_ref","modalOpen","modalRichtext","modalQuote","closeHandler","tooltip","_jsx","className","children","OutsideClickTrigger","onOutsideClick","_jsxs","React","onClick","xmlnsXlink","xlinkHref","Svg","iconName","fillColor","TestimonialContainerComponent","testimonialContent","headline","_useState","useState","_useState2","_slicedToArray","overlayRichtext","setOverlayRichtext","_useState3","_useState4","overlayQuote","setOverlayQuote","_useState5","_useState6","toggleOverlay","setToggleOverlay","handleOverlay","htmlTestimonialContent","length","map","t","TestimonialItem","isImage","isImageFormat","image","testimonialImage","undefined","isVideo","isVideoFormat","youtube","videoId","ariaVideoDescription","testimonialHeading","testimonial","quote","testimonialQuote","readMore","testimonialReadMore","Slider","_objectSpread","dots","arrows","infinite","slidesToShow","slidesToScroll","swipe","variableWidth","accessibility","responsive","breakpoint","settings","centerMode","centerPadding","_ref2","htmlTestimonial","ReactHTMLParser","concat","src","YoutubeEmbed","embedId","classDecleration","backgroundImage","TestimonialContainerModule","_createClass","elem","_classCallCheck","self","this","modelJson","dataset","JSON","parse","init","key","value","ReactDOM","TestimonialContainer","props","viewBox","d","fillRule","setPlaybackState","showVideoHtml","setShowVideoHtml","hasVideoLoaded","setHasVideoLoaded","video","document","getElementById","useEffect","handleLoad","addEventListener","removeEventListener","overlayStyle","YouTube","id","title","opts","playerVars","showinfo","modestbranding","allowFullScreen","autoPlay","controls","loop","cc_load_policy","iv_load_policy","autohide","onReady","event","embedCode","target","getVideoEmbedCode","playVideo","innerHTML","focus","style","SvgPlay"],"sourceRoot":""}