{"version":3,"file":"static/js/3200.6a63c2fa.chunk.js","mappings":"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","sources":["shared/impression-hero-block/impression-hero-block-component.jsx","shared/impression-hero-block/impression-hero-block-module.jsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from \"react\"\nimport ReactHtmlParser from \"react-html-parser\"\nimport * as SelectionFactoryHelper from \"../helpers/SelectionFactoryHelper\"\nimport Svg from \"../_svgs/svg\"\n\nexport default function ImpressionHeroBlockComponent({ icon, video, image, title, introText, label, bottomPadding, topPadding, background }) {\n  const iconSrc = SelectionFactoryHelper.getFromSelectionFactory(icon)\n  const backgroundColor = SelectionFactoryHelper.getFromSelectionFactory(background)\n\n  const videoExists = video ? true : false\n  //if we dont end up using a hook, just remove it.\n  const [showBackgroundVideo, setShowBackgroundVideo] = useState(true)\n  const bgVideoRef = useRef(null)\n  const isFirstRender = useRef(true)\n  const tp = SelectionFactoryHelper.getFromSelectionFactory(topPadding)\n  const bp = SelectionFactoryHelper.getFromSelectionFactory(bottomPadding)\n\n  useEffect(() => {\n    if (videoExists) {\n      const bgVideo = bgVideoRef.current\n\n      const playBgVideo = () => {\n        bgVideo.currentTime = 0\n        bgVideo\n          .play()\n          .then(() => {})\n          .catch((error) => {\n            console.error(\"Playback failed: \", error)\n          })\n      }\n\n      const handleCanPlay = () => {\n        if (bgVideo.readyState >= 4) {\n          playBgVideo()\n          bgVideo.removeEventListener(\"canplaythrough\", handleCanPlay)\n        }\n      }\n\n      bgVideo.addEventListener(\"canplaythrough\", handleCanPlay)\n\n      bgVideo.load()\n\n      // Cleanup function to remove event listener\n      return () => {\n        bgVideo.removeEventListener(\"canplaythrough\", handleCanPlay)\n      }\n    }\n  }, [])\n\n  useEffect(() => {\n    if (isFirstRender.current) {\n      isFirstRender.current = false\n      return\n    }\n    if (videoExists) {\n      const bgVideo = bgVideoRef.current\n\n      const resetAndPlayBgVideo = () => {\n        bgVideo.pause()\n        bgVideo.currentTime = 0\n        bgVideo\n          .play()\n          .then(() => {})\n          .catch((error) => {\n            console.error(\"Playback failed: \", error)\n          })\n        bgVideo.removeEventListener(\"canplaythrough\", resetAndPlayBgVideo)\n      }\n\n      if (bgVideo) {\n        if (bgVideo.readyState >= 4) {\n          resetAndPlayBgVideo()\n        } else {\n          bgVideo.addEventListener(\"canplaythrough\", resetAndPlayBgVideo)\n        }\n      }\n\n      // Cleanup function to remove event listener\n      return () => {\n        if (bgVideo) {\n          bgVideo.removeEventListener(\"canplaythrough\", resetAndPlayBgVideo)\n        }\n      }\n    }\n  }, [showBackgroundVideo])\n\n  return (\n    <div className={`impression-hero-block-container ${tp ? tp : \"\"} ${bp ? bp : \"\"} ${background && background[0] ? background[0]?.value : \"\"}`}>\n      <div className={\"w--wider\"}>\n        {videoExists ? (\n          <div className=\"video-wrapper\">\n            <video\n              className=\"background-video\"\n              ref={bgVideoRef}\n              data-epi-property=\"Video\"\n              loop\n              muted\n              playsInline\n              preload={\"auto\"}\n              loading=\"eager\"\n              fetchPriority=\"high\"\n              id={\"videoHero\"}\n              src={video}\n            >\n              <source media=\"(max-width:767px)\" src={video} />\n            </video>\n          </div>\n        ) : (\n          <picture className=\"background-pic\">\n            <source media=\"(max-width:767px)\" srcSet={image} />\n            <img src={image} data-epi-property=\"Image\" id={\"imgHero\"} />\n          </picture>\n        )}\n        <div className=\"text-layer\">\n          <div className=\"content\">\n            <Svg iconName={iconSrc} fillColor={\"none\"} stroke={\"#071143\"} />\n            <div className=\"category\">{label}</div>\n            <div data-epi-property=\"Title\" className=\"rich-text\">\n              {ReactHtmlParser(title)}\n              {ReactHtmlParser(introText)}\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  )\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport ImpressionHeroBlockComponent from \"./impression-hero-block-component\"\n\nexport default class ImpressionHeroBlock {\n  constructor(elem) {\n    const self = this\n    self.elem = elem\n    self.modelJson = elem.dataset.modelJson && JSON.parse(elem.dataset.modelJson)\n    self.init()\n    return self\n  }\n\n  init() {\n    const self = this\n    ReactDOM.unmountComponentAtNode(self.elem)\n    ReactDOM.render(<ImpressionHeroBlockComponent {...this.modelJson} />, self.elem)\n  }\n}\n"],"names":["ImpressionHeroBlockComponent","_ref","_background$","icon","video","image","title","introText","label","bottomPadding","topPadding","background","iconSrc","SelectionFactoryHelper","videoExists","_useState","useState","_useState2","_slicedToArray","showBackgroundVideo","bgVideoRef","useRef","isFirstRender","tp","bp","useEffect","bgVideo","current","handleCanPlay","readyState","currentTime","play","then","catch","error","console","removeEventListener","addEventListener","load","resetAndPlayBgVideo","pause","_jsx","className","concat","value","children","_jsxs","ref","loop","muted","playsInline","preload","loading","fetchPriority","id","src","media","srcSet","Svg","iconName","fillColor","stroke","ReactHtmlParser","ImpressionHeroBlock","_createClass","elem","_classCallCheck","self","this","modelJson","dataset","JSON","parse","init","key","ReactDOM","_objectSpread"],"sourceRoot":""}