{"version":3,"sources":["scenes/conference/conference.module.scss","components/Header/header.module.scss","scenes/video/video.module.scss","components/Block/block.module.scss","components/Footer/footer.module.scss","components/SideMenu/side-menu.module.scss","components/Card/card.module.scss","scenes/videos/videos.module.scss","scenes/conferences/conferences.module.scss","components/Search/search.module.scss","components/Button/button.module.scss","components/ConferencesPrevious/conferences-previous.module.scss","components/Welcome/welcome.module.scss","components/Chip/chip.module.scss","components/Section/section.module.scss","components/Vimeo/vimeo.module.scss","components/LoadingPage/loading-page.module.scss","components/WelcomeCarousel/welcomecarousel.module.scss","components/LoadingSection/loading-section.module.scss","assets/icons/linkedin-dark.svg","assets/images/loading-spinner.gif","assets/icons/youtube-dark.svg","assets/logos/symphony-light.svg","assets/logos/symphony-innovate-logo.svg","assets/icons/arrow-forward-dark.svg","assets/icons/envelope-dark.svg","assets/icons/twitter-dark.svg","assets/images/loading-spinner-transparent.gif","components/Section/Section.js","components/Section/SectionContainer.js","scenes/conference/ConferenceDescription/ConferenceDescription.js","components/Button/Button.js","utils/miscUtils.js","components/Button/ButtonContainer.js","scenes/conference/ConferenceHeader/ConferenceHeader.js","components/Vimeo/Vimeo.js","components/Vimeo/VimeoContainer.js","scenes/conference/ConferenceHighlightVideo/ConferenceHighlightVideo.js","scenes/conference/ConferenceSessions/ConferenceSessionsSession.js","scenes/conference/ConferenceSessions/ConferenceSessions.js","scenes/conference/ConferenceSpeakers/ConferenceSpeakers.js","scenes/conference/ConferenceSponsors/ConferenceSponsors.js","components/Card/Card.js","components/Card/CardContainer.js","scenes/conference/ConferenceVideos/ConferenceVideos.js","components/ConferencesPrevious/ConferencesPrevious.js","components/LoadingPage/LoadingPage.js","components/LoadingPage/LoadingPageContainer.js","utils/fetchUtils.js","platforms/api.js","utils/apiUtils.js","utils/tagUtils.js","context/tags.js","scenes/conference/Conference.js","context/conferences.js","utils/scrollUtils.js","scenes/conference/ConferenceContainer.js","components/Block/Block.js","components/Welcome/Welcome.js","components/Welcome/WelcomeContainer.js","components/WelcomeCarousel/WelcomeCarousel.js","components/WelcomeCarousel/WelcomeCarouselContainer.js","components/Block/BlockContainer.js","scenes/conferences/ConferencesVideos/ConferencesVideos.js","scenes/conferences/Conferences.js","context/videos.js","utils/videoUtils.js","scenes/conferences/ConferencesContainer.js","components/Footer/Footer.js","components/Footer/FooterContainer.js","components/Header/HeaderFilters/HeaderFilters.js","components/Chip/Chip.js","components/Chip/ChipContainer.js","components/Header/HeaderFilterTags/HeaderFilterTags.js","components/Header/HeaderRowOne/HeaderRowOne.js","components/Search/Search.js","components/Search/SearchContainer.js","components/Header/HeaderRowTwo/HeaderRowTwo.js","components/Header/Header.js","components/Header/HeaderContainer.js","hooks/scroll/useDocumentScrollThrottled.js","components/SideMenu/SideMenu.js","components/SideMenu/SideMenuContainer.js","scenes/video/VideoEmbed/VideoEmbed.js","scenes/video/VideoHeader/VideoHeader.js","scenes/video/VideoRelatedProduct/VideoRelatedProduct.js","scenes/video/VideoRelated/VideoRelated.js","scenes/video/Video.js","scenes/video/VideoContainer.js","components/LoadingSection/LoadingSection.js","scenes/videos/Videos.js","scenes/videos/VideosContainer.js","App.js","reportWebVitals.js","index.js"],"names":["module","exports","Section","props","children","classes","config","id","style","darkMode","className","cx","styles","section","SectionContainer","ConferenceDescription","conference","description","is_active","logo","useMemo","match","conferenceDescription","src","sizes","thumbnail","alt","parse","Button","onClick","size","text","theme","button","emptyFunction","formatCarouselArray","collection","arrayOfArrays","i","length","push","slice","ButtonContainer","defaultProps","ConferenceHeader","date_string","image","is_legacy","location","microsite_link","register_link","link_button_text","title","useRef","HTMLInputElement","header","backgroundImage","url","btn_region","href","rel","target","Vimeo","vimeo_id","video","wrapper","allow","allowFullScreen","iframe","frameBorder","VimeoContainer","ConferenceHighlightVideo","highlight_video_id","highlightVideo","ConferenceSessionsSession","session","left","title_link","start_time","end_time","right","calendar_link","items","map","item","is_break","demo","times","title_container","renderItems","ConferenceSessions","region","is_featured","sessions","subheader","footnote","renderSessions","ConferenceSpeakers","speakers","useState","speakerItems","setSpeakerItems","useEffect","isMobile","Carousel","controls","interval","group","Item","j","name","medium_large","body","ConferenceSponsors","sponsors","sponsorItems","setSponsorItems","window","open","Card","data","preview","card","top","bottom","category","CardContainer","ConferenceVideos","addTag","featuredVideos","history","videos","grid","pathname","state","handleSelect","tag","slug","ConferencesPrevious","conferences","previousConferences","setPreviousConferences","filteredConferences","filter","is_latest","indicators","arr","loadingSpinnerSrc","require","default","LoadingPage","document","querySelector","disableBodyScroll","enableBodyScroll","spinner","LoadingPageContainer","reformatAcfResponse","res","Array","isArray","acf","tags","get","headers","onSuccess","onError","fetch","then","response","json","ok","catch","error","baseUrl","Api","Headers","currentPage","operator","selectedTags","tagsQueryParams","tagsTermsQueryParamBase","tagsTermsQueryParams","reduce","acc","concat","generateTagsQueryParams","search","findTagIdByName","tagFound","find","TagsContext","createContext","TagsProvider","filters","setFilters","mappedFilters","setMappedFilters","setSelectedTags","selectedCategoryTags","setSelectedCategoryTags","selectedConferenceTags","setSelectedConferenceTags","setTags","hasSelectedCategoryTags","hasSelectedConferenceTags","hasSelectedTags","onFetchFiltersError","err","console","onFetchFiltersSuccess","onFetchTagsError","onFetchTagsSuccess","filterGroup","mapFiltersToTags","tagsContext","type","prev","clearTags","fetchFilters","getFilters","fetchTags","getTags","removeTag","selectedTag","Provider","value","Conference","useHistory","useContext","hasSessions","isLoading","Helmet","content","ConferencesContext","ConferencesProvider","setConferences","featuredConference","setFeaturedConference","isLoadingConferences","setIsLoadingConferences","onFetchConferencesSuccess","conferencesContext","fetchConferences","getConferences","scrollToTop","scrollTo","behavior","ConferenceContainer","useLocation","params","useParams","setConference","setFeaturedVideos","a","Promise","all","featured_videos","getVideo","ID","handleDetectConference","locationConference","getConferenceBySlug","onFetchConferenceSuccess","onFetchConferenceError","fetchConference","scrollToRegister","getElementById","scrollIntoView","scrollToSessions","scrollParam","URLSearchParams","setTimeout","generateFeaturedVideos","Block","cta_link","cta_text","agenda_link","agenda_button_text","orientation","subtitle","buttonTheme","block","backgroundColor","large","welcome_message","Welcome","welcome_background_left","welcome_background_right","WelcomeContainer","WelcomeCarousel","welcome_carousel","WelcomeCarouselContainer","BlockContainer","ConferencesVideos","Conferences","blocks","loading","key","VideosContext","VideosProvider","setCurrentPage","filteredVideos","setFilteredVideos","isFiltering","setIsFiltering","isSearchActive","setIsSearchActive","isSearching","setIsSearching","totalPages","setTotalPages","totalVideos","setTotalVideos","setVideos","videoSearchResults","setVideoSearchResults","fetchVideos","getVideos","onFetchVideosSuccess","onFetchVideosError","handleToggleSearchMode","bool","reformattedResponse","parseInt","some","selectedConferenceTag","videoTag","selectedCategoryTag","generateFilteredVideos","handleFiltering","onFetchVideoSearchResultsError","onFetchVideoSearchResultsSuccess","videosContext","fetchVideoSearchResults","getVideosBySearchTerm","handleSelectPage","selected","shouldShowFilteredVideos","ConferencesContainer","hasRedirectedToFeaturedConference","setHasRedirectedToFeaturedConference","setBlocks","setLoading","onFetchBlocksError","onFetchBlocksSuccess","formattedResponse","getBlocks","Footer","footerConferences","goToConferences","footer","primary","column","link","secondary","row","Date","getFullYear","gdpr","FooterContainer","HeaderFilters","handleSelectFilter","shouldShowFilterTags","locationsTabRef","tabWidth","setTabWidth","current","clientWidth","tabStyle","width","filterBy","tabs","tab","onMouseEnter","arrow","showAll","to","Chip","isSelected","chip","ChipContainer","HeaderFilterTags","handleSelectTag","shouldHideHeader","toggleFilterTagsDisplay","categoryFilters","conferenceFilters","filterTags","onMouseLeave","filterTagsLeft","isAlreadySelected","display_text","filterTagsRight","linkedinIconSrc","youtubeIconSrc","logoSrc","HeaderRowOne","goToConference","goToSocial","goToSymphony","hide_featured_conference_from_nav","register","featured","dateString","socials","icon","Search","isLight","onChange","onSubmit","input","SearchContainer","setSearch","e","preventDefault","HeaderRowTwo","setIsSideMenuActive","isVideoRoute","includes","more","options","Header","previousPathname","setPreviousPathname","setHeaderOffset","headerRef","clientHeight","isVideoUrl","ref","wrapperRelative","withRouter","selectedFilter","setSelectedFilter","setShouldHideHeader","setShouldShowFilterTags","shouldShowShadow","setShouldShowShadow","callback","setScrollPosition","previousScrollTop","handleDocumentScrollThrottled","throttle","currentScrollTop","documentElement","scrollTop","previousPosition","addEventListener","removeEventListener","useDocumentScrollThrottled","callbackData","isScrolledDown","isMinimumScrolled","registerQuery","goToHome","platform","linkedin","twitter","youtube","SideMenu","goToHomepage","goToVideos","isSideMenuActive","container","sideMenu","close","links","SideMenuContainer","path","element","log","VideoEmbed","embed","quality","disclaimer","arrowForwardIconSrc","envelopeIconSrc","twitterIconSrc","VideoHeader","copyLinkToClipboard","tooltipText","encodedShareDescription","encodeURIComponent","headerContainer","icons","OverlayTrigger","delay","show","hide","overlay","Tooltip","placement","VideosGlobal","related_product_title","related_product_description","related_product_url","related_product_image","related_product","related_product_container","related_product_text","related_product_link","related_product_button","VideoRelated","go","related","Video","VideoRelatedProduct","VideoContainer","setTooltipText","setVideo","onFetchVideoError","onFetchVideoSuccess","locationVideo","navigator","clipboard","writeText","LoadingSection","Videos","shouldShowConfirmationModal","toggleConfirmationModal","videosCollection","Modal","aria-labelledby","centered","onHide","closeButton","Body","list","empty","renderCards","breakLabel","pagination","activeClassName","active","disabledClassName","disabled","onPageChange","pageCount","pageRangeDisplayed","renderOnZeroPageCount","VideosContainer","showConfirmationModal","setVideosCollection","setShouldShowConfirmationModal","App","headerOffset","paddingTop","render","queryParams","conferenceParam","toParam","videoParam","scrollQuery","renderRouteByQueryParam","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode"],"mappings":"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","file":"static/js/main.79c16d4a.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"conference\":\"conference_conference__1usvB\",\"agenda\":\"conference_agenda__2tFup\",\"button\":\"conference_button__VWXur\",\"button2\":\"conference_button2__26kuL\",\"items\":\"conference_items__1CDi4\",\"item\":\"conference_item__3TUkJ\",\"body\":\"conference_body__DRKNk\",\"description\":\"conference_description__aJUCY\",\"agendaItemHeader\":\"conference_agendaItemHeader__19_YZ\",\"title\":\"conference_title__ynwVg\",\"conferenceDescription\":\"conference_conferenceDescription__4ceNh\",\"logo\":\"conference_logo__3icsc\",\"btn_region\":\"conference_btn_region__2KQ1s\",\"imageBlock\":\"conference_imageBlock__umxvI\",\"imageBlock--reverse\":\"conference_imageBlock--reverse__11rO2\",\"large\":\"conference_large__aTNu1\",\"small\":\"conference_small__20O0L\",\"header\":\"conference_header__btDQA\",\"header--active\":\"conference_header--active__1vYbV\",\"header--past\":\"conference_header--past__3TOMC\",\"highlightVideo\":\"conference_highlightVideo__3MEvH\",\"register\":\"conference_register__lIccN\",\"blurb\":\"conference_blurb__2Gt3W\",\"register__header\":\"conference_register__header__3iGWL\",\"form\":\"conference_form__2uoZz\",\"checkbox\":\"conference_checkbox__3rzck\",\"textInputs\":\"conference_textInputs__kd7FP\",\"subheader\":\"conference_subheader__2eO86\",\"sessions\":\"conference_sessions__13TYf\",\"session\":\"conference_session__2th7m\",\"item--is-break\":\"conference_item--is-break__3x9ot\",\"title_container\":\"conference_title_container__1xAoY\",\"demo\":\"conference_demo__3d_7B\",\"title_container--subsession\":\"conference_title_container--subsession__11VNg\",\"times\":\"conference_times__396vc\",\"times--hidden\":\"conference_times--hidden__1XXW2\",\"left\":\"conference_left__3cbFc\",\"footnote\":\"conference_footnote__2yzfa\",\"footnote--hidden\":\"conference_footnote--hidden__2BzIi\",\"speakers\":\"conference_speakers__15xFQ\",\"image\":\"conference_image__20bz3\",\"name\":\"conference_name__1i8MQ\",\"sponsors\":\"conference_sponsors__2yxw_\",\"videos\":\"conference_videos__30t3q\",\"grid\":\"conference_grid__1j5xz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"header_header__3fn4i\",\"header--hidden\":\"header_header--hidden__3UHPk\",\"wrapperRelative\":\"header_wrapperRelative__3HgaI\",\"row\":\"header_row__34sh0\",\"row--one\":\"header_row--one__2QwSx\",\"featured\":\"header_featured__1A6pd\",\"logo\":\"header_logo__14tHM\",\"register\":\"header_register__2xix2\",\"logo--hidden\":\"header_logo--hidden__2Fczs\",\"register--hidden\":\"header_register--hidden__13PX8\",\"conference\":\"header_conference__ZCBhB\",\"conference--hidden\":\"header_conference--hidden__Cxi9C\",\"dateString\":\"header_dateString__19rnd\",\"socials\":\"header_socials__1Mw1E\",\"icon\":\"header_icon__2StfZ\",\"register-link\":\"header_register-link__1MEEi\",\"register-link--hidden\":\"header_register-link--hidden__QDCmG\",\"row--two\":\"header_row--two__315wI\",\"link\":\"header_link__3Qf43\",\"link--active\":\"header_link--active__13uYD\",\"more\":\"header_more__2cqvn\",\"options\":\"header_options__2-5o6\",\"text\":\"header_text__ssHtL\",\"search\":\"header_search__Dw7LC\",\"filters\":\"header_filters__3yMU5\",\"filterBy\":\"header_filterBy__1opfS\",\"showAll\":\"header_showAll__1oLQw\",\"tabs\":\"header_tabs__3i5Xi\",\"tab\":\"header_tab__YzMgs\",\"tab--selected\":\"header_tab--selected__2MElt\",\"arrow\":\"header_arrow__1DAG-\",\"filterTags\":\"header_filterTags__3B1dO\",\"filterTags--active\":\"header_filterTags--active__zgsKJ\",\"filterTagsLeft\":\"header_filterTagsLeft__1bBSG\",\"filterTagsRight\":\"header_filterTagsRight__k0NJl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"video\":\"video_video__1dHi3\",\"embed\":\"video_embed__hvtsm\",\"quality\":\"video_quality__3zcCp\",\"disclaimer\":\"video_disclaimer__cGRPU\",\"headerContainer\":\"video_headerContainer__1FnDd\",\"row\":\"video_row__1GfR_\",\"description\":\"video_description__VNImW\",\"icons\":\"video_icons__qreeQ\",\"icon\":\"video_icon__yfrdt\",\"subheader\":\"video_subheader__1OZzQ\",\"title\":\"video_title__jnNmG\",\"related_product\":\"video_related_product__QvmDh\",\"related_product_container\":\"video_related_product_container__2vGrb\",\"related_product_container--hidden\":\"video_related_product_container--hidden__3UKP4\",\"related_product_image\":\"video_related_product_image__3RTPE\",\"related_product_text\":\"video_related_product_text__3zw8V\",\"related_product_title\":\"video_related_product_title__n3w4F\",\"related_product_description\":\"video_related_product_description__PlzqU\",\"related_product_link\":\"video_related_product_link__ua-4R\",\"related\":\"video_related__1Ddno\",\"grid\":\"video_grid__1qYsy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"block\":\"block_block__2vq28\",\"btn_region\":\"block_btn_region__1gq9p\",\"block--layout-center\":\"block_block--layout-center__27tP5\",\"image\":\"block_image__O6_hN\",\"text\":\"block_text__4lsuj\",\"button\":\"block_button__3qsuN\",\"button--hidden\":\"block_button--hidden__2Xrw3\",\"block--layout-left\":\"block_block--layout-left__1Kg90\",\"block--layout-right\":\"block_block--layout-right__1BFjv\",\"body\":\"block_body__1puUU\",\"subheader\":\"block_subheader__3gVtn\",\"header\":\"block_header__1lDz2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"footer_footer__11BbJ\",\"primary\":\"footer_primary__2h-GQ\",\"column\":\"footer_column__1D43T\",\"header\":\"footer_header__3r2-P\",\"link\":\"footer_link__3nDrj\",\"secondary\":\"footer_secondary__1q_OJ\",\"row\":\"footer_row__1mMwO\",\"gdpr\":\"footer_gdpr__1mEPG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"side-menu_container__3j6-h\",\"sideMenu\":\"side-menu_sideMenu__46RCH\",\"close\":\"side-menu_close__1L1Bg\",\"icon\":\"side-menu_icon__11ZPn\",\"links\":\"side-menu_links__3av5-\",\"link\":\"side-menu_link__3pI66\",\"search\":\"side-menu_search__3Ac6h\",\"container--active\":\"side-menu_container--active__26SgN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"card_card__2l2sh\",\"body\":\"card_body__2rzIq\",\"top\":\"card_top__3alnZ\",\"preview\":\"card_preview__2uc1b\",\"title\":\"card_title__3SQtk\",\"bottom\":\"card_bottom__1Ihxi\",\"category\":\"card_category__2lJYF\",\"image\":\"card_image__2Uu3V\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videos\":\"videos_videos__10p0E\",\"grid\":\"videos_grid__72FbS\",\"empty\":\"videos_empty__1kxHO\",\"loading\":\"videos_loading__2Bdea\",\"pagination\":\"videos_pagination__3lPjI\",\"active\":\"videos_active__T_oUN\",\"disabled\":\"videos_disabled__2kR5r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"conferences\":\"conferences_conferences__3RuJa\",\"videos\":\"conferences_videos__2ZubW\",\"grid\":\"conferences_grid__1mdED\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"search\":\"search_search__cdieE\",\"icon\":\"search_icon__TOKGp\",\"input\":\"search_input__2sltG\",\"search--light\":\"search_search--light__J1jZY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"button_button__rhxVg\",\"button--green\":\"button_button--green__2QO5G\",\"button--thin\":\"button_button--thin__1bE-B\",\"button--white\":\"button_button--white__2X1SR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"conferences-previous\":\"conferences-previous_conferences-previous__14wNr\",\"items\":\"conferences-previous_items__2WKVx\",\"item\":\"conferences-previous_item__1MTel\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"welcome\":\"welcome_welcome__GWtMF\",\"welcome_message\":\"welcome_welcome_message__318vw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"chip\":\"chip_chip__kguDW\",\"chip--selected\":\"chip_chip--selected__1vWrV\",\"text\":\"chip_text__Kp3zK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"section\":\"section_section__2220H\",\"section--dark\":\"section_section--dark__3tenD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"wrapper\":\"vimeo_wrapper__2Ez5u\",\"iframe\":\"vimeo_iframe__205DA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loading-page\":\"loading-page_loading-page__3dphG\",\"spinner\":\"loading-page_spinner__1Qy6f\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"carousel\":\"welcomecarousel_carousel__6cH1l\",\"image\":\"welcomecarousel_image__1Pr4F\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loading-section\":\"loading-section_loading-section__39o4V\"};","export default __webpack_public_path__ + \"static/media/linkedin-dark.24852c0f.svg\";","export default __webpack_public_path__ + \"static/media/loading-spinner.08eaf775.gif\";","export default __webpack_public_path__ + \"static/media/youtube-dark.b153ea70.svg\";","export default __webpack_public_path__ + \"static/media/symphony-light.f833da00.svg\";","export default __webpack_public_path__ + \"static/media/symphony-innovate-logo.1d504464.svg\";","export default __webpack_public_path__ + \"static/media/arrow-forward-dark.66f64915.svg\";","export default __webpack_public_path__ + \"static/media/envelope-dark.afbc1a0e.svg\";","export default __webpack_public_path__ + \"static/media/twitter-dark.1d3d522c.svg\";","export default __webpack_public_path__ + \"static/media/loading-spinner-transparent.739bf643.gif\";","import cx from \"classnames\";\n\n// CSS\nimport styles from \"./section.module.scss\";\n\nconst Section = (props) => {\n    const { children, classes, config, id, style } = props;\n    const { darkMode } = config || {};\n\n    return (\n        <div\n            className={cx(styles.section, classes, {\n                [styles[\"section--dark\"]]: darkMode,\n            })}\n            id={id}\n            style={style}\n        >\n            {children}\n        </div>\n    );\n};\n\nexport default Section;\n","// Components\nimport Section from \"./Section\";\n\nconst SectionContainer = (props) => {\n    return <Section {...props} />;\n};\n\nexport default SectionContainer;\n","import { useMemo } from \"react\";\nimport parse from \"html-react-parser\";\n\n// Components\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\n\nexport const ConferenceDescription = (props) => {\n    const { conference } = props;\n    const { description, is_active, logo } = conference || {};\n\n    const descriptionArray = useMemo(\n        () => description?.match(/[^\\r\\n]+/g),\n        [description]\n    );\n\n    /*function renderDescription() {\n        return descriptionArray?.map((line, i) => {\n            return <p key={i}>{line}</p>;\n        });\n    }\n    */\n\n    return is_active ? (\n        <Section classes={styles.conferenceDescription}>\n            {logo && (\n                <img\n                    src={logo?.sizes?.thumbnail}\n                    alt=\"Conference logo\"\n                    className={styles.logo}\n                />\n            )}\n\n            <span className={styles.description}>\n                {description && <span>{parse(conference.description)}</span>}\n            </span>\n            {/*{renderDescription()}*/}\n        </Section>\n    ) : null;\n};\n","import cx from \"classnames\";\n\n// CSS\nimport styles from \"./button.module.scss\";\n\nconst Button = (props) => {\n    const { classes, onClick, size, style, text, theme } = props;\n\n    return (\n        <button\n            className={cx(styles.button, classes, {\n                [styles[`button--${size}`]]: size,\n                [styles[`button--${theme}`]]: theme,\n            })}\n            onClick={onClick}\n            style={style}\n        >\n            {text}\n        </button>\n    );\n};\n\nexport default Button;\n","export function copyToClipboard(text) {\n    navigator.clipboard.writeText(text);\n}\n\nexport function emptyFunction() {}\n\nexport function formatCarouselArray(collection, { size = 3 } = {}) {\n    const arrayOfArrays = [];\n    for (let i = 0; i < collection.length; i += size) {\n        arrayOfArrays.push(collection.slice(i, i + size));\n    }\n    return arrayOfArrays;\n}\n","import PropTypes from \"prop-types\";\n\n// Components\nimport Button from \"./Button\";\n\n// Utils\nimport { emptyFunction } from \"../../utils/miscUtils\";\n\nconst ButtonContainer = (props) => {\n    return <Button {...props} />;\n};\n\nButtonContainer.defaultProps = { onClick: emptyFunction };\n\nButtonContainer.propTypes = { onClick: PropTypes.func, text: PropTypes.string };\n\nexport default ButtonContainer;\n","import cx from \"classnames\";\nimport parse from \"html-react-parser\";\n\n// Components\nimport Button from \"../../../components/Button/ButtonContainer\";\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\nimport { useRef } from \"react\";\n\nexport const ConferenceHeader = (props) => {\n    const { conference } = props;\n    const {\n        date_string,\n        description,\n        image,\n        is_active,\n        is_legacy,\n        location,\n        microsite_link,\n        register_link,\n        link_button_text,\n        title,\n    } = conference || {};\n\n    const divAgenda = useRef<HTMLInputElement | null>(null);\n\n    const scrolLWithUseRef = () => {\n      divAgenda.current?.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\n    };\n\n    const scrollFun = () => {\n      document\n        .querySelector(`#agenda`)\n        ?.scrollIntoView({ block: \"start\", behavior: \"smooth\" });\n\n    };\n\n    function renderActive() {\n        return (\n            <Section\n                classes={cx(styles.header, styles[\"header--active\"])}\n                style={{ backgroundImage: `url(${image.url})` }}\n            >\n                <h1 className={styles.title}>{title}</h1>\n                <span className={styles.description}>\n                    {date_string} &mdash; {location}\n                </span>\n                <span className={styles.btn_region}>\n                {is_active && (\n                    <a\n                        href={register_link}\n                        rel=\"noreferrer\"\n                        target=\"_blank\"\n                    >\n                        <Button className={styles.button} text={link_button_text} />\n\n                    </a>\n                )}\n\n                {/*is_active && (\n                    <a\n                        href={register_link}\n                        rel=\"noreferrer\"\n                        target=\"_blank\"\n                    >\n                        <Button className={styles.button} text=\"see agenda\" onClick={() => scrollFun()}/>\n\n                    </a>\n                )*/}\n\n\n                </span>\n            </Section>\n        );\n    }\n\n    function renderPast() {\n        return (\n            <Section\n              classes={cx(styles.header, styles[\"header--past\"])}\n            >\n                <h1 className={styles.title}>{title}</h1>\n                <span className={styles.description}>\n                    {description && <span>{parse(conference.description)}</span>}\n                </span>\n                <a\n                    href={register_link}\n                    rel=\"noreferrer\"\n                    target=\"_blank\"\n                >\n                    <Button className={styles.button} text={link_button_text} />\n\n                </a>\n                {microsite_link && (\n                    <a href={microsite_link} rel=\"noreferrer\" target=\"_blank\">\n                        {is_legacy && (\n                            <Button text=\"visit microsite\" theme=\"green\" />\n                        )}\n                    </a>\n                )}\n            </Section>\n        );\n    }\n\n    return is_active ? renderActive() : renderPast();\n};\n","// CSS\nimport styles from \"./vimeo.module.scss\";\n\nconst Vimeo = (props) => {\n    const { video } = props;\n    const { vimeo_id } = video || {};\n\n    return (\n        <>\n            <div className={styles.wrapper}>\n                <iframe\n                    allow=\"autoplay; fullscreen; picture-in-picture\"\n                    allowFullScreen\n                    className={styles.iframe}\n                    frameBorder=\"0\"\n                    src={`https://player.vimeo.com/video/${vimeo_id}`}\n                    title=\"Vimeo embed\"\n                ></iframe>\n            </div>\n        </>\n    );\n};\n\nexport default Vimeo;\n","// Components\nimport Vimeo from \"./Vimeo\";\n\nconst VimeoContainer = (props) => {\n    return <Vimeo {...props} />;\n};\n\nexport default VimeoContainer;\n","// Components\nimport Section from \"../../../components/Section/SectionContainer\";\nimport Vimeo from \"../../../components/Vimeo/VimeoContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\n\nexport const ConferenceHighlightVideo = (props) => {\n    const { conference } = props;\n    const { highlight_video_id, is_active } = conference || {};\n\n    return !is_active && highlight_video_id ? (\n        <Section classes={styles.highlightVideo}>\n            <Vimeo video={highlight_video_id} />\n        </Section>\n    ) : null;\n};\n","import cx from \"classnames\";\nimport parse from \"html-react-parser\";\n\n// Components\nimport Button from \"../../../components/Button/ButtonContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\n\nexport const ConferenceSessionsSession = (props) => {\n    const { session } = props;\n\n    function renderItems() {\n        return session?.items?.map((item, i) => {\n            const {\n                start_time,\n                end_time,\n                is_break,\n                title,\n                title_link,\n                demo,\n                description,\n            } = item;\n            return (\n                <div\n                    className={cx(styles.item, {\n                        [styles[\"item--is-break\"]]: is_break,\n                    })}\n                    key={i}\n                >\n                    <span className={cx(styles.times, {\n                        [styles[\"times--hidden\"]]:\n                            !start_time,\n                    })}\n                    >\n                        {start_time} - {end_time}\n                    </span>\n\n                    {title_link && (\n                        <a\n                          className={cx(styles.title_container, {\n                              [styles[\"title_container--subsession\"]]:\n                                  !start_time,\n                          })}\n                          href={title_link}\n                        >\n                            {title && <span className={styles.title}>{parse(item.title)}</span>}\n                            {demo && <span className={styles.demo}>{parse(item.demo)}</span>}\n                        </a>\n                    )}\n                    {!title_link && (\n                        <span\n                          className={cx(styles.title_container, {\n                              [styles[\"title_container--subsession\"]]:\n                                  !start_time,\n                          })}\n                        >\n                            {title && <span className={styles.title}>{parse(item.title)}</span>}\n                            {demo && <span className={styles.demo}>{parse(item.demo)}</span>}\n                        </span>\n                    )}\n                    <div className={styles.description}>\n                        {description && <span>{parse(item.description)}</span>}\n                    </div>\n                </div>\n            );\n        });\n    }\n\n    return (\n        <div className={styles.session}>\n            <div className={styles.header}>\n                <div className={styles.left}>\n                    {!session.title_link && <h2>{session?.title}</h2>}\n                    {session.title_link && (\n                        <h2>\n                            <a href={session.title_link}>{session?.title}</a>\n                        </h2>\n                    )}\n                    <span>\n                        {session?.start_time} - {session?.end_time}\n                    </span>\n                </div>\n                <div className={styles.right}>\n                    {session?.calendar_link && (\n                        <a\n                            href={session.calendar_link}\n                            rel=\"noreferrer\"\n                            target=\"_blank\"\n                        >\n                            <Button\n                                text=\"add to calendar\"\n                                size=\"thin\"\n                                theme=\"white\"\n                            />\n                        </a>\n                    )}\n                </div>\n            </div>\n            <div className={styles.items}>\n                {renderItems()}\n                {session?.calendar_link && (\n                    <a\n                        href={session.calendar_link}\n                        rel=\"noreferrer\"\n                        target=\"_blank\"\n                    >\n                        <Button\n                            classes={styles.button}\n                            size=\"thin\"\n                            text=\"add to calendar\"\n                            theme=\"green\"\n                        />\n                    </a>\n                )}\n            </div>\n        </div>\n    );\n};\n","// Components\nimport cx from \"classnames\";\n\nimport { ConferenceSessionsSession } from \"./ConferenceSessionsSession\";\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\n\nexport const ConferenceSessions = (props) => {\n    const { conference } = props;\n    const { region, is_featured } = conference || {};\n\n    function renderSessions() {\n        return conference?.sessions?.map((session, i) => {\n            return <ConferenceSessionsSession key={i} session={session} />;\n        });\n    }\n\n    return (\n        <Section classes={styles.sessions} id=\"agenda\">\n            <h1>agenda</h1>\n            <div className={styles.subheader}>\n                <span>All times are in {region}</span>\n            </div>\n            <div className={cx(styles.footnote, {\n                    [styles[\"footnote--hidden\"]]:\n                        !is_featured,\n                })}\n            >\n                * Agenda subject to change\n            </div>\n            {renderSessions()}\n        </Section>\n    );\n};\n","import { useEffect, useState } from \"react\";\nimport { Carousel } from \"react-bootstrap\";\nimport { isMobile } from \"react-device-detect\";\n\n// Components\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\n\n// Utils\nimport { formatCarouselArray } from \"../../../utils/miscUtils\";\n\nexport const ConferenceSpeakers = (props) => {\n    const { conference } = props;\n    const { speakers } = conference || {};\n\n    const [speakerItems, setSpeakerItems] = useState(null);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        const size = isMobile ? 1 : 8;\n        speakers && setSpeakerItems(formatCarouselArray(speakers, { size }));\n    }, [speakers]);\n\n    /**\n     * Constants\n     */\n\n    const hasSpeakers = speakers && speakers.length;\n\n    /**\n     * End Hooks\n     */\n\n    function renderSpeakers() {\n        return speakerItems?.map((group, i) => {\n            return (\n                <Carousel.Item key={i}>\n                    <div className={styles.items}>\n                        {group.map((item, j) => {\n                            const { description, image, name } = item;\n                            return (\n                                <div className={styles.item} key={j}>\n                                    <div\n                                        className={styles.image}\n                                        style={{\n                                            backgroundImage: `url(${image?.sizes?.medium_large})`,\n                                        }}\n                                    />\n                                    <div className={styles.body}>\n                                        <span className={styles.name}>\n                                            {name}\n                                        </span>\n                                        <p className={styles.description}>\n                                            {description}\n                                        </p>\n                                    </div>\n                                </div>\n                            );\n                        })}\n                    </div>\n                </Carousel.Item>\n            );\n        });\n    }\n\n    return hasSpeakers ? (\n        <Section classes={styles.speakers}>\n            <h1 className={styles.title}>our speakers</h1>\n            <Carousel controls={!isMobile} interval={null}>\n                {renderSpeakers()}\n            </Carousel>\n        </Section>\n    ) : null;\n};\n","import { useEffect, useState } from \"react\";\nimport { Carousel } from \"react-bootstrap\";\nimport { isMobile } from \"react-device-detect\";\n\n// Components\nimport Button from \"../../../components/Button/ButtonContainer\";\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\n\n// Utils\nimport { formatCarouselArray } from \"../../../utils/miscUtils\";\n\nexport const ConferenceSponsors = (props) => {\n    const { conference } = props;\n    const { sponsors } = conference || {};\n\n    /**\n     * useState\n     */\n\n    const [sponsorItems, setSponsorItems] = useState(null);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        const size = isMobile ? 1 : 8;\n        sponsors && setSponsorItems(formatCarouselArray(sponsors, { size }));\n    }, [sponsors]);\n\n    /**\n     * Constants\n     */\n\n    const hasSponsors = sponsors && sponsors.length;\n\n    /**\n     * End Hooks\n     */\n\n    function renderSponsorItems() {\n        return sponsorItems?.map((group, i) => {\n            return (\n                <Carousel.Item key={i}>\n                    <div className={styles.items}>\n                        {group.map((item, j) => {\n                            const { image, name, url } = item;\n                            return (\n                                <div className={styles.item} key={j}>\n                                    <img\n                                        alt={name}\n                                        className={styles.image}\n                                        onClick={() => {\n                                            window.open(\n                                                url,\n                                                \"_blank\",\n                                                \"noopener\",\n                                                \"noreferrer\"\n                                            );\n                                        }}\n                                        src={image.sizes.medium_large}\n                                    />\n                                </div>\n                            );\n                        })}\n                    </div>\n                </Carousel.Item>\n            );\n        });\n    }\n\n    return hasSponsors ? (\n        <Section classes={styles.sponsors}>\n            <h1 className={styles.title}>sponsors</h1>\n            <Carousel controls={!isMobile} interval={null}>\n                {renderSponsorItems()}\n            </Carousel>\n            <Button\n                classes={styles.button}\n                text=\"become a sponsor\"\n                theme=\"green\"\n            />\n        </Section>\n    ) : null;\n};\n","// CSS\nimport styles from \"./card.module.scss\";\nimport parse from \"html-react-parser\";\n\nexport const Card = (props) => {\n    const { data, onClick } = props;\n    const { conference, image, preview, title } = data;\n\n    return (\n        <div className={styles.card} onClick={onClick}>\n            <div\n                className={styles.image}\n                style={{\n                    backgroundImage: `url(${image?.sizes?.medium_large})`,\n                }}\n            />\n            <div className={styles.body}>\n                <div className={styles.top}>\n                    <div className={styles.title}>\n                        {title && <span>{parse(data.title)}</span>}\n                    </div>\n                    <div className={styles.preview}>{preview}</div>\n                </div>\n                <div className={styles.bottom}>\n                    <div className={styles.category}>{conference}</div>\n                </div>\n            </div>\n        </div>\n    );\n};\n","import PropTypes from \"prop-types\";\n\n// Components\nimport { Card } from \"./Card\";\n\nexport const CardContainer = (props) => {\n    return <Card {...props} />;\n};\n\nCardContainer.defaultProps = { data: {} };\n\nCardContainer.propTypes = { data: PropTypes.object, onClick: PropTypes.func };\n","// Components\nimport Button from \"../../../components/Button/ButtonContainer\";\nimport { CardContainer as Card } from \"../../../components/Card/CardContainer\";\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../conference.module.scss\";\n\nexport const ConferenceVideos = (props) => {\n    const { addTag, conference, featuredVideos, history } = props;\n\n    const hasVideos =\n        featuredVideos && featuredVideos.length && featuredVideos[0] !== null;\n\n    function handleSelect(video) {\n        history.push({ pathname: `/videos/${video.id}`, state: { video } });\n    }\n\n    function onButtonClick() {\n        addTag({ tag: conference.slug });\n        history.push(\"/videos\");\n    }\n\n    function renderVideos() {\n        return featuredVideos\n            .slice(0, 6)\n            .map((video) => (\n                <Card\n                    data={video}\n                    key={video?.id}\n                    onClick={() => handleSelect(video)}\n                />\n            ));\n    }\n\n    return hasVideos ? (\n        <Section classes={styles.videos}>\n            <h1>videos</h1>\n            <div className={styles.grid}>{renderVideos()}</div>\n            <Button\n                onClick={onButtonClick}\n                text=\"more videos from this conference\"\n                theme=\"green\"\n            />\n        </Section>\n    ) : null;\n};\n","import { useEffect, useState } from \"react\";\nimport { Carousel } from \"react-bootstrap\";\nimport { isMobile } from \"react-device-detect\";\n\n// Components\nimport Section from \"../Section/SectionContainer\";\n\n// CSS\nimport styles from \"./conferences-previous.module.scss\";\n\n// Utils\nimport { formatCarouselArray } from \"../../utils/miscUtils\";\n\nexport const ConferencesPrevious = (props) => {\n    const { conferences, conference, history } = props;\n\n    /**\n     * useState\n     */\n\n    const [previousConferences, setPreviousConferences] = useState(null);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        if (conferences || conference) {\n            const filteredConferences = conferences.filter(\n                //(conference) => !conference.is_active && !conference.is_latest\n                (conference) => !conference.is_latest\n            );\n            const size = isMobile ? 1 : 4;\n            setPreviousConferences(\n                formatCarouselArray(filteredConferences, { size })\n            );\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [conferences]);\n\n    /**\n     * End Hooks\n     */\n\n    function renderConferenceItems() {\n        return previousConferences?.map((group, i) => {\n            return (\n                <Carousel.Item key={i}>\n                    <div className={styles.items}>\n                        {group\n                            .filter((item) => {\n                                //return !item.is_active;\n                                return !item.is_latest;\n                            })\n                            .map((item, i, arr) => {\n                                const { id, image, slug, title } = item;\n                                return (\n                                    <div\n                                        className={styles.item}\n                                        key={id}\n                                        onClick={() =>\n                                            history.push({\n                                                pathname: `/conferences/${slug}`,\n                                                state: { conference: item },\n                                            })\n                                        }\n                                        style={{\n                                            backgroundImage: `url(${image?.sizes?.medium_large})`,\n                                        }}\n                                    >\n                                        <span>{title}</span>\n                                    </div>\n                                );\n                            })}\n                    </div>\n                </Carousel.Item>\n            );\n        });\n    }\n\n    return (\n        <Section id=\"recent_conferences\" classes={styles[\"conferences-previous\"]}>\n            <h1>recent conferences</h1>\n            <Carousel\n                controls={!isMobile}\n                indicators={isMobile}\n                interval={null}\n            >\n                {renderConferenceItems()}\n            </Carousel>\n        </Section>\n    );\n};\n","import { useEffect } from \"react\";\nimport { disableBodyScroll, enableBodyScroll } from \"body-scroll-lock\";\n\n// CSS\nimport styles from \"./loading-page.module.scss\";\n\n// Const\nconst loadingSpinnerSrc =\n    require(\"../../assets/images/loading-spinner.gif\").default;\n\nexport const LoadingPage = (props) => {\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        const target = document.querySelector(\"body\");\n        disableBodyScroll(target);\n\n        return () => {\n            enableBodyScroll(target);\n        };\n    }, []);\n\n    /**\n     * End Hooks\n     */\n\n    return (\n        <div className={styles[\"loading-page\"]}>\n            <img\n                alt=\"Loading spinner\"\n                className={styles.spinner}\n                src={loadingSpinnerSrc}\n            />\n        </div>\n    );\n};\n","// Components\nimport { LoadingPage } from \"./LoadingPage\";\n\nexport const LoadingPageContainer = (props) => {\n    return <LoadingPage {...props} />;\n};\n","// Utils\nimport { emptyFunction } from \"./miscUtils\";\n\nexport function reformatAcfResponse(res) {\n    return Array.isArray(res)\n        ? res.map((item) => ({ ...item.acf, id: item.id, tags: item.tags }))\n        : { ...res.acf, id: res.id, tags: res.tags };\n}\n\nexport function get(\n    url,\n    headers,\n    onSuccess = emptyFunction,\n    onError = emptyFunction\n) {\n    return fetch(url, { headers })\n        .then(function (response) {\n            return response.json().then((res) => {\n                if (response.ok) {\n                    return onSuccess({ headers: response.headers, body: res });\n                } else {\n                    return onError(res);\n                }\n            });\n        })\n        .catch(function (error) {\n            return onError(error);\n        });\n}\n","// Utils\nimport { get } from \"../utils/fetchUtils\";\n\n// Utils\nimport { generateTagsQueryParams } from \"../utils/apiUtils\";\n\n// Constants\nconst baseUrl = \"https://innovate.symphony.com/wp-json/wp/v2\";\n//const baseUrl = \"https://staging-symphony-innovate.pantheonsite.io/wp-json/wp/v2\";\n\nexport class Api {\n    static setHeaders() {\n        const headers = new Headers();\n        return headers;\n    }\n\n    static getBlocks(onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/block_global/`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getConference({ id }, onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/conference_global/${id}`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getConferenceBySlug({ slug }, onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/conference_global?slug=${slug}`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getConferences(onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/conference_global?per_page=100`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getFilters(onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/filter_global?per_page=100`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getTags(onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/tags?per_page=100`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getVideo({ id }, onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/video_global/${id}`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getVideos(\n        { currentPage, operator, selectedTags },\n        onSuccess,\n        onError\n    ) {\n        const headers = new Headers();\n        const tagsQueryParams = generateTagsQueryParams(selectedTags, operator);\n        const url = `${baseUrl}/video_global?page=${currentPage}&per_page=99${tagsQueryParams}`;\n        return get(url, headers, onSuccess, onError);\n    }\n\n    static getVideosBySearchTerm({ search }, onSuccess, onError) {\n        const headers = new Headers();\n        const url = `${baseUrl}/video_global?per_page=99&search=${search}`;\n        return get(url, headers, onSuccess, onError);\n    }\n}\n","export function generateTagsQueryParams(selectedTags = [], operator = \"OR\") {\n    // If there are no tags, return empty string\n    if (selectedTags.length === 0) return \"\";\n\n    // If there are tags, generate query parameters containing tag data\n    // Sample param: \"&tags[terms]=45,64&tags[operator]=AND\"\n    const tagsTermsQueryParamBase = \"tags[terms]=\";\n    const tagsTermsQueryParams = selectedTags.reduce((acc, tag, i, arr) => {\n        const isLastItem = arr.length - 1 === i;\n        if (isLastItem) return acc.concat(tag.id);\n        return acc.concat(`${tag.id},`);\n    }, tagsTermsQueryParamBase);\n    return `&${tagsTermsQueryParams}&tags[operator]=${operator}`;\n}\n","export function findTagIdByName(name, tags) {\n    const tagFound = tags.find((tag) => tag.slug === name);\n    return tagFound?.id;\n}\n\nexport function mapFiltersToTags(filters, tags) {\n    return filters.map((filterGroup) => {\n        return {\n            ...filterGroup,\n            items: filterGroup.items.map((filter) => {\n                return { ...filter, id: findTagIdByName(filter.tag, tags) };\n            }),\n        };\n    });\n}\n","import { createContext, useEffect, useState } from \"react\";\n\n// Platforms\nimport { Api } from \"../platforms/api\";\n\n// Utils\nimport { reformatAcfResponse } from \"../utils/fetchUtils\";\nimport { mapFiltersToTags } from \"../utils/tagUtils\";\n\nexport const TagsContext = createContext({});\n\nexport const TagsProvider = (props) => {\n    const { children } = props;\n\n    /************************************************\n     * useState\n     ************************************************/\n\n    const [filters, setFilters] = useState([]);\n    const [mappedFilters, setMappedFilters] = useState([]);\n    const [selectedTags, setSelectedTags] = useState([]);\n    const [selectedCategoryTags, setSelectedCategoryTags] = useState([]);\n    const [selectedConferenceTags, setSelectedConferenceTags] = useState([]);\n    const [tags, setTags] = useState([]);\n\n    const hasSelectedCategoryTags = selectedCategoryTags?.length > 0;\n    const hasSelectedConferenceTags = selectedConferenceTags?.length > 0;\n    const hasSelectedTags = selectedTags?.length > 0;\n\n    /************************************************\n     * useEffect\n     ************************************************/\n\n    useEffect(() => {\n        if (filters?.length && tags?.length) {\n            setMappedFilters(mapFiltersToTags(filters, tags));\n        }\n    }, [filters, tags]);\n\n    /************************************************\n     * End Hooks\n     ************************************************/\n\n    // Filters\n\n    /**\n     * Fetch the filters that will be displayed in the \"Filter By\" section\n     * of the header when visiting the Videos page\n     */\n    function fetchFilters() {\n        Api.getFilters(onFetchFiltersSuccess, onFetchFiltersError);\n    }\n\n    function onFetchFiltersError(err) {\n        console.error(\"filters err\", reformatAcfResponse(err));\n    }\n\n    function onFetchFiltersSuccess({ headers, body: res }) {\n        setFilters(reformatAcfResponse(res));\n    }\n\n    // Select Tags\n\n    function addTag(tag, type) {\n        setSelectedTags((prev) => [...prev, tag]);\n        type === \"categories\" &&\n            setSelectedCategoryTags((prev) => [...prev, tag]);\n        type === \"conferences\" &&\n            setSelectedConferenceTags((prev) => [...prev, tag]);\n    }\n\n    function clearTags() {\n        setSelectedTags([]);\n        setSelectedCategoryTags([]);\n        setSelectedConferenceTags([]);\n    }\n\n    function removeTag(tag, type) {\n        setSelectedTags((prev) =>\n            prev.filter((selectedTag) => selectedTag.tag !== tag.tag)\n        );\n        type === \"categories\" &&\n            setSelectedCategoryTags((prev) =>\n                prev.filter((selectedTag) => selectedTag.tag !== tag.tag)\n            );\n        type === \"conferences\" &&\n            setSelectedConferenceTags((prev) =>\n                prev.filter((selectedTag) => selectedTag.tag !== tag.tag)\n            );\n    }\n\n    // Tags\n\n    function fetchTags() {\n        Api.getTags(onFetchTagsSuccess, onFetchTagsError);\n    }\n\n    function onFetchTagsError(err) {\n        console.error(\"fetch tags error\", err);\n    }\n\n    function onFetchTagsSuccess({ headers, body: res }) {\n        setTags(res);\n    }\n\n    const tagsContext = {\n        addTag,\n        clearTags,\n        fetchFilters,\n        fetchTags,\n        filters,\n        hasSelectedCategoryTags,\n        hasSelectedConferenceTags,\n        hasSelectedTags,\n        mappedFilters,\n        removeTag,\n        selectedTags,\n        selectedCategoryTags,\n        selectedConferenceTags,\n        tags,\n    };\n\n    return (\n        <TagsContext.Provider value={tagsContext}>\n            {children}\n        </TagsContext.Provider>\n    );\n};\n","import { useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet\";\n\n// Components\nimport { ConferenceDescription } from \"./ConferenceDescription/ConferenceDescription\";\nimport { ConferenceHeader } from \"./ConferenceHeader/ConferenceHeader\";\nimport { ConferenceHighlightVideo } from \"./ConferenceHighlightVideo/ConferenceHighlightVideo\";\nimport { ConferenceSessions } from \"./ConferenceSessions/ConferenceSessions\";\nimport { ConferenceSpeakers } from \"./ConferenceSpeakers/ConferenceSpeakers\";\nimport { ConferenceSponsors } from \"./ConferenceSponsors/ConferenceSponsors\";\nimport { ConferenceVideos } from \"./ConferenceVideos/ConferenceVideos\";\nimport { ConferencesPrevious } from \"../../components/ConferencesPrevious/ConferencesPrevious\";\nimport { LoadingPageContainer as LoadingPage } from \"../../components/LoadingPage/LoadingPageContainer\";\n\n// Context\nimport { TagsContext } from \"../../context/tags\";\n\n// CSS\nimport styles from \"./conference.module.scss\";\n\nexport const Conference = (props) => {\n    const { conference } = props;\n    const { title, description, sessions } = conference || {};\n\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * Context\n     */\n\n    const { addTag } = useContext(TagsContext);\n\n    /**\n     * Constants\n     */\n\n    const hasSessions = sessions && sessions.length;\n    const isLoading = !conference;\n\n    /**\n     * End Hooks & Constants\n     */\n\n    return (\n        <div className={styles.conference}>\n            <Helmet>\n                <title>{conference?.title}</title>\n                <meta name=\"title\" content={title} />\n                <meta name=\"description\" content={description} />\n                <meta name=\"robots\" content=\"index, follow\" />\n            </Helmet>\n            {isLoading && <LoadingPage {...props} />}\n            <ConferenceHeader {...props} />\n            <ConferenceDescription {...props} />\n            <ConferenceHighlightVideo {...props} />\n            {hasSessions && <ConferenceSessions {...props} />}\n            <ConferenceVideos {...props} addTag={addTag} />\n\n            <ConferenceSpeakers {...props} />\n            <ConferenceSponsors {...props} />\n            <ConferencesPrevious {...props} history={history} />\n        </div>\n    );\n};\n","import { createContext, useEffect, useState } from \"react\";\n\n// Platforms\nimport { Api } from \"../platforms/api\";\n\n// Utils\nimport { reformatAcfResponse } from \"../utils/fetchUtils\";\n\nexport const ConferencesContext = createContext({});\n\nexport const ConferencesProvider = (props) => {\n    const { children } = props;\n\n    /************************************************\n     * useState\n     ************************************************/\n\n    const [conferences, setConferences] = useState([]);\n    const [featuredConference, setFeaturedConference] = useState(null);\n    const [isLoadingConferences, setIsLoadingConferences] = useState(true);\n\n    /************************************************\n     * useEffect\n     ************************************************/\n\n    useEffect(() => {\n        if (conferences?.length) {\n            handleSetFeaturedConference();\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [conferences]);\n\n    /************************************************\n     * End Hooks\n     ************************************************/\n\n    function fetchConferences() {\n        Api.getConferences(onFetchConferencesSuccess);\n    }\n\n    function handleSetFeaturedConference() {\n        setFeaturedConference(\n            conferences.find((conference) => conference.is_featured)\n        );\n    }\n\n    function onFetchConferencesSuccess({ headers, body: res }) {\n        setConferences(reformatAcfResponse(res));\n        setIsLoadingConferences(false);\n    }\n\n    const conferencesContext = {\n        conferences,\n        featuredConference,\n        fetchConferences,\n        isLoadingConferences,\n    };\n\n    return (\n        <ConferencesContext.Provider value={conferencesContext}>\n            {children}\n        </ConferencesContext.Provider>\n    );\n};\n","export function scrollToTop() {\n    window.scrollTo({ top: 0, left: 0, behavior: \"auto\" });\n}\n","import { useContext, useEffect, useState } from \"react\";\nimport { useHistory, useLocation, useParams } from \"react-router-dom\";\n\n// Components\nimport { Conference } from \"./Conference\";\n\n// Context\nimport { ConferencesContext } from \"../../context/conferences\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { reformatAcfResponse } from \"../../utils/fetchUtils\";\nimport { scrollToTop } from \"../../utils/scrollUtils\";\n\nexport const ConferenceContainer = (props) => {\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n    const location = useLocation();\n    const params = useParams();\n\n    /**\n     * useContext\n     */\n\n    const { conferences } = useContext(ConferencesContext);\n\n    /**\n     * useState\n     */\n\n    const [conference, setConference] = useState(null);\n    const [featuredVideos, setFeaturedVideos] = useState([null, null, null]);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        const params = new URLSearchParams(window.location.search);\n        const scrollParam = params.get(\"scroll\");\n\n        if (scrollParam === \"register\") {\n            setTimeout(() => {\n                scrollToRegister();\n            }, 500);\n        } else if (scrollParam === \"agenda\") {\n            setTimeout(() => {\n                scrollToSessions();\n            }, 500);\n        } else {\n            scrollToTop();\n        }\n\n        if (!conference) {\n            handleDetectConference();\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n\n    useEffect(() => {\n        if (conference?.featured_videos) {\n            generateFeaturedVideos();\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [conference]);\n\n    useEffect(() => {\n        handleDetectConference();\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [params.id]);\n\n    /**\n     * End Hooks\n     */\n\n    async function generateFeaturedVideos() {\n        const videos = await Promise.all(\n            conference.featured_videos.map((video, i) => {\n                return Api.getVideo(\n                    { id: video.ID },\n                    ({ headers, body: res }) => reformatAcfResponse(res)\n                );\n            })\n        );\n        setFeaturedVideos(videos);\n    }\n\n    function fetchConference() {\n        const slug = props.match.params.id;\n        Api.getConferenceBySlug(\n            { slug },\n            onFetchConferenceSuccess,\n            onFetchConferenceError\n        );\n    }\n\n    function handleDetectConference() {\n        const { conference: locationConference } = location?.state || {};\n        locationConference\n            ? setConference(locationConference)\n            : fetchConference();\n        scrollToTop();\n    }\n\n    function onFetchConferenceError(err) {\n        history.push(\"/conferences\");\n    }\n\n    function onFetchConferenceSuccess({ headers, body: res }) {\n        setConference(reformatAcfResponse(res)[0]);\n    }\n\n    function scrollToRegister() {\n        document.getElementById(\"register\")?.scrollIntoView();\n    }\n\n    function scrollToSessions() {\n        document.getElementById(\"agenda\")?.scrollIntoView();\n    }\n\n    return (\n        <Conference\n            {...props}\n            conference={conference}\n            conferences={conferences}\n            featuredVideos={featuredVideos}\n            history={history}\n            scrollToRegister={scrollToRegister}\n            scrollToSessions={scrollToSessions}\n        />\n    );\n};\n","import cx from \"classnames\";\nimport parse from \"html-react-parser\";\n\n// Components\nimport Button from \"../Button/ButtonContainer\";\nimport Section from \"../Section/SectionContainer\";\n\n// CSS\nimport styles from \"./block.module.scss\";\n\nconst Block = (props) => {\n    const {\n        cta_link,\n        cta_text,\n        agenda_link,\n        agenda_button_text,\n        description,\n        image,\n        orientation,\n        subtitle,\n        title,\n        style,\n    } = props;\n\n    /**\n     * Constants\n     */\n\n    const buttonTheme = orientation === \"Center\" ? \"\" : \"green\";\n\n    /**\n     * End Hooks\n     */\n\n    return (\n        <Section\n            classes={cx(styles.block, {\n                [styles[\"block--layout-center\"]]: orientation === \"Center\",\n                [styles[\"block--layout-left\"]]: orientation === \"Left\",\n                [styles[\"block--layout-right\"]]: orientation === \"Right\",\n            })}\n            style={{ backgroundColor: style?.backgroundColor }}\n        >\n            <div\n                className={styles.image}\n                style={{ backgroundImage: `url(${image?.sizes?.large})` }}\n            />\n            <div className={styles.text} id=\"current_event\">\n                <h1 className={styles.header}>\n                    {title && <span>{parse(props.title)}</span>}\n                </h1>\n\n                <span className={styles.subheader}>{subtitle}</span>\n\n                <p className={styles.welcome_message}>\n                    {description && <span>{parse(props.description)}</span>}\n                </p>\n\n                <span className={styles.btn_region}>\n                    <a\n                        href={cta_link}\n                        rel=\"noreferrer\"\n                        target=\"_blank\"\n                        className={cx(styles.button, {\n                            [styles[\"button--hidden\"]]: !cta_link,\n                        })}\n                    >\n                        <Button\n                            classes={styles.button}\n                            text={cta_text}\n                            theme={buttonTheme}\n                        />\n                    </a>\n\n                    <a\n                        href={agenda_link}\n                        rel=\"noreferrer\"\n                        className={cx(styles.button, {\n                            [styles[\"button--hidden\"]]: !agenda_link,\n                        })}\n                    >\n                      <Button\n                        classes={styles.button}\n                        text={agenda_button_text}\n                        theme={buttonTheme}\n                      />\n                    </a>\n                </span>\n            </div>\n        </Section>\n    );\n};\n\nexport default Block;\n","import parse from \"html-react-parser\";\n\n// Components\nimport Section from \"../Section/SectionContainer\";\nimport Button from \"../Button/ButtonContainer\";\n\n// CSS\nimport styles from \"./welcome.module.scss\";\n\n/**\n * Constants\n */\n\nconst Welcome = (data) => {\n    const {\n        welcome_background_left,\n        welcome_background_right,\n        welcome_message,\n        cta_link,\n        cta_text,\n    } = data;\n\n    /**\n     * Hooks\n     */\n\n    return (\n        <Section\n            classes={styles[\"welcome\"]}\n            style={{\n                backgroundImage: `\n                  url(${welcome_background_left?.sizes?.medium_large}),\n                  url(${welcome_background_right?.sizes?.medium_large})\n              `,\n            }}\n        >\n            <div className={styles.welcome_message}>\n                {welcome_message && <span>{parse(data.welcome_message)}</span>}\n\n                <a\n                    href={cta_link}\n                    rel=\"noreferrer\"\n                    target=\"_blank\"\n                >\n                    <Button className={styles.button} text={cta_text} />\n\n                </a>\n            </div>\n        </Section>\n    );\n};\n\nexport default Welcome;\n","import { useHistory } from \"react-router-dom\";\n\n// Components\nimport Welcome from \"./Welcome\";\n\nconst WelcomeContainer = (props) => {\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * End Hooks\n     */\n\n    return <Welcome {...props} history={history} />;\n\n};\n\nexport default WelcomeContainer;\n","// Components\nimport Section from \"../Section/SectionContainer\";\n\n// CSS\nimport styles from \"./welcomecarousel.module.scss\";\n\n/**\n * Constants\n */\n\nconst WelcomeCarousel = (data) => {\n    const { welcome_carousel } = data;\n\n    /**\n     * Hooks\n     */\n\n    return (\n        <Section classes={styles[\"carousel\"]}>\n            {welcome_carousel.map(function (item, i) {\n                return (\n                    <img\n                        className={styles.image}\n                        src={item.url}\n                        title={item.name}\n                        alt={item.name}\n                    ></img>\n                );\n            })}\n        </Section>\n    );\n};\n\nexport default WelcomeCarousel;\n","import { useHistory } from \"react-router-dom\";\n\n// Components\nimport WelcomeCarousel from \"./WelcomeCarousel\";\n\nconst WelcomeCarouselContainer = (props) => {\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * End Hooks\n     */\n\n    return <WelcomeCarousel {...props} history={history} />;\n};\n\nexport default WelcomeCarouselContainer;\n","import { useHistory } from \"react-router-dom\";\n\n// Components\nimport Block from \"./Block\";\nimport Welcome from \"../Welcome/WelcomeContainer\";\nimport WelcomeCarousel from \"../WelcomeCarousel/WelcomeCarouselContainer\";\n\nconst BlockContainer = (props) => {\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * End Hooks\n     */\n\n    return (\n      <div>\n          <Welcome {...props} history={history} />\n          <WelcomeCarousel {...props} history={history} />\n          <Block {...props} history={history} />\n      </div>\n\n    );\n\n};\n\nexport default BlockContainer;\n","// Components\nimport Button from \"../../../components/Button/ButtonContainer\";\nimport { CardContainer as Card } from \"../../../components/Card/CardContainer\";\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../conferences.module.scss\";\n\nconst ConferencesVideos = (props) => {\n    const { history, videos } = props;\n\n    function handleSelect(video) {\n        history.push({ pathname: `/videos/${video.id}`, state: { video } });\n    }\n\n    function onButtonClick() {\n        history.push(\"/videos\");\n    }\n\n    function renderVideos() {\n        return videos\n            .slice(0, 3)\n            .map((video) => (\n                <Card\n                    data={video}\n                    key={video?.id}\n                    onClick={() => handleSelect(video)}\n                />\n            ));\n    }\n\n    return (\n        <Section classes={styles.videos}>\n            <h1>featured videos</h1>\n            <div className={styles.grid}>{renderVideos()}</div>\n            <Button onClick={onButtonClick} text=\"more videos\" theme=\"green\" />\n        </Section>\n    );\n};\n\nexport default ConferencesVideos;\n","import { useHistory } from \"react-router-dom\";\n\n// Components\nimport Block from \"../../components/Block/BlockContainer\";\nimport { ConferencesPrevious } from \"../../components/ConferencesPrevious/ConferencesPrevious\";\nimport ConferencesVideos from \"./ConferencesVideos/ConferencesVideos\";\nimport { LoadingPageContainer as LoadingPage } from \"../../components/LoadingPage/LoadingPageContainer\";\n\n\n// CSS\nimport styles from \"./conferences.module.scss\";\n\nexport const Conferences = (props) => {\n    const { blocks, loading, } = props;\n\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * Constants\n     */\n\n    const isLoading = loading.blocks || loading.conferences;\n\n    /**\n     * End Hooks\n     */\n\n    function renderBlocks() {\n        return (\n            blocks &&\n            blocks.map((block, i) => {\n                return <Block {...block} key={i} />;\n            })\n        );\n    }\n\n    return (\n        <div className={styles.conferences}>\n            {isLoading && <LoadingPage />}\n            {renderBlocks()}\n            <ConferencesPrevious {...props} history={history} />\n            <ConferencesVideos {...props} history={history} />\n        </div>\n    );\n};\n","import { createContext, useContext, useEffect, useState } from \"react\";\n\n// Contexts\nimport { TagsContext } from \"./tags\";\n\n// Platforms\nimport { Api } from \"../platforms/api\";\n\n// Utils\nimport { reformatAcfResponse } from \"../utils/fetchUtils\";\nimport { scrollToTop } from \"../utils/scrollUtils\";\nimport { generateFilteredVideos } from \"../utils/videoUtils\";\n\nexport const VideosContext = createContext({});\n\nexport const VideosProvider = (props) => {\n    const { children } = props;\n\n    /************************************************\n     * useContext\n     ************************************************/\n\n    const {\n        hasSelectedCategoryTags,\n        hasSelectedConferenceTags,\n        hasSelectedTags,\n        selectedCategoryTags,\n        selectedConferenceTags,\n        selectedTags,\n    } = useContext(TagsContext);\n\n    /************************************************\n     * useState\n     ************************************************/\n\n    const [currentPage, setCurrentPage] = useState(1);\n    const [filteredVideos, setFilteredVideos] = useState([]);\n    const [isFiltering, setIsFiltering] = useState(false);\n    const [isSearchActive, setIsSearchActive] = useState(false);\n    const [isSearching, setIsSearching] = useState(false);\n    const [totalPages, setTotalPages] = useState(null);\n    const [totalVideos, setTotalVideos] = useState(null);\n    const [videos, setVideos] = useState([]);\n    const [videoSearchResults, setVideoSearchResults] = useState([]);\n\n    /************************************************\n     * useEffect\n     ************************************************/\n\n    useEffect(() => {\n        fetchVideos();\n        scrollToTop();\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [currentPage, selectedTags]);\n\n    useEffect(() => {\n        // handleFiltering();\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [selectedTags, selectedCategoryTags, selectedConferenceTags]);\n\n    /************************************************\n     * Constants\n     ************************************************/\n\n    const shouldShowFilteredVideos =\n        hasSelectedTags && hasSelectedCategoryTags && hasSelectedConferenceTags;\n\n    /************************************************\n     * End Hooks\n     ************************************************/\n\n    function fetchVideos() {\n        setCurrentPage(1);\n        setIsSearching(true);\n        setIsSearchActive(true);\n        return Api.getVideos(\n            { currentPage, operator: \"OR\", selectedTags },\n            onFetchVideosSuccess,\n            onFetchVideosError,\n            onFetchVideosError\n        );\n    }\n\n    function fetchVideoSearchResults(search) {\n        setCurrentPage(1);\n        setIsSearching(true);\n        handleToggleSearchMode(true);\n        return Api.getVideosBySearchTerm(\n            { search },\n            onFetchVideoSearchResultsSuccess,\n            onFetchVideoSearchResultsError\n        );\n    }\n\n    function handleFiltering(res) {\n        if (\n            hasSelectedTags &&\n            hasSelectedCategoryTags &&\n            hasSelectedConferenceTags\n        ) {\n            setIsFiltering(true);\n            setFilteredVideos(\n                generateFilteredVideos(\n                    res,\n                    selectedConferenceTags,\n                    selectedCategoryTags\n                )\n            );\n            setIsFiltering(false);\n        }\n    }\n\n    function handleSelectPage({ selected }) {\n        const selectedPage = selected + 1;\n        setCurrentPage(selectedPage);\n    }\n\n    function handleToggleSearchMode(bool) {\n        setIsSearchActive(bool);\n    }\n\n    function onFetchVideosError() {\n        setIsSearching(false);\n        setIsSearchActive(false);\n    }\n\n    function onFetchVideosSuccess({ headers, body: res }) {\n        const reformattedResponse = reformatAcfResponse(res);\n        setIsSearching(false);\n        setIsSearchActive(false);\n        setTotalVideos(parseInt(headers.get(\"X-Wp-Total\")));\n        setTotalPages(parseInt(headers.get(\"X-Wp-Totalpages\")));\n        setVideos(reformattedResponse);\n        handleFiltering(reformattedResponse);\n    }\n\n    function onFetchVideoSearchResultsError(err) {\n        setIsSearching(false);\n    }\n\n    function onFetchVideoSearchResultsSuccess({ headers, body: res }) {\n        setVideoSearchResults(reformatAcfResponse(res));\n        setIsSearching(false);\n    }\n\n    const videosContext = {\n        fetchVideos,\n        fetchVideoSearchResults,\n        filteredVideos,\n        handleSelectPage,\n        handleToggleSearchMode,\n        isFiltering,\n        isSearchActive,\n        isSearching,\n        shouldShowFilteredVideos,\n        totalPages,\n        totalVideos,\n        videos,\n        videoSearchResults,\n    };\n\n    return (\n        <VideosContext.Provider value={videosContext}>\n            {children}\n        </VideosContext.Provider>\n    );\n};\n","export function generateFilteredVideos(\n    videos = [],\n    selectedConferenceTags = [],\n    selectedCategoryTags = []\n) {\n    if (!selectedConferenceTags.length) {\n        return videos;\n    }\n\n    const videosFilteredByConference = videos.filter((video) => {\n        return selectedConferenceTags.some((selectedConferenceTag) => {\n            return video.tags.some((videoTag) => {\n                return videoTag === selectedConferenceTag.id;\n            });\n        });\n    });\n    const videosFilteredByCategory = videosFilteredByConference.filter(\n        (video) => {\n            return selectedCategoryTags.some((selectedCategoryTag) => {\n                return video.tags.some((videoTag) => {\n                    return videoTag === selectedCategoryTag.id;\n                });\n            });\n        }\n    );\n    return videosFilteredByCategory;\n}\n","import { useContext, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\n// Components\nimport { Conferences } from \"./Conferences\";\n\n// Context\nimport { ConferencesContext } from \"../../context/conferences\";\nimport { VideosContext } from \"../../context/videos\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { reformatAcfResponse } from \"../../utils/fetchUtils\";\n\nexport const ConferencesContainer = (props) => {\n    const {\n        hasRedirectedToFeaturedConference,\n        setHasRedirectedToFeaturedConference,\n    } = props;\n\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * useContext\n     */\n\n    const { conferences, featuredConference, isLoadingConferences } =\n        useContext(ConferencesContext);\n    const { videos } = useContext(VideosContext);\n\n    /**\n     * useState\n     */\n\n    const [blocks, setBlocks] = useState(null);\n    const [loading, setLoading] = useState({ blocks: true, conferences: true });\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        fetchBlocks();\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n\n    useEffect(() => {\n        if (featuredConference && !hasRedirectedToFeaturedConference) {\n            //history.push(`/conferences/${featuredConference.slug}`);\n            //setHasRedirectedToFeaturedConference(true);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [featuredConference]);\n\n    useEffect(() => {\n        setLoading((prev) => ({ ...prev, conferences: isLoadingConferences }));\n    }, [isLoadingConferences]);\n\n    /**\n     * End Hooks\n     */\n\n    function fetchBlocks() {\n        Api.getBlocks(onFetchBlocksSuccess, onFetchBlocksError);\n    }\n\n    function onFetchBlocksError(err) {\n        setLoading((prev) => ({ ...prev, blocks: false }));\n    }\n\n    function onFetchBlocksSuccess({ body: res, headers }) {\n        const formattedResponse = reformatAcfResponse(res);\n        setBlocks(formattedResponse[0].block);\n        setLoading((prev) => ({ ...prev, blocks: false }));\n    }\n\n    return (\n        <Conferences\n            {...props}\n            blocks={blocks}\n            conferences={conferences}\n            loading={loading}\n            videos={videos}\n        />\n    );\n};\n","import { Link } from \"react-router-dom\";\n\n// CSS\nimport styles from \"./footer.module.scss\";\n\nconst Footer = (props) => {\n    const { footerConferences, goToConferences } = props;\n\n    return (\n        <div className={styles.footer}>\n            <div className={styles.primary}>\n                <div className={styles.column}>\n                    <span className={styles.header}>THE COMPANY</span>\n                    <a\n                        className={styles.link}\n                        href=\"https://symphony.com/company/about/\"\n                        rel=\"nofollow noreferrer\"\n                        target=\"_blank\"\n                    >\n                        About Symphony\n                    </a>\n                    <a\n                        className={styles.link}\n                        href=\"https://symphony.com/company/partners/\"\n                        rel=\"nofollow noreferrer\"\n                        target=\"_blank\"\n                    >\n                        Partnerships\n                    </a>\n                    <a\n                        className={styles.link}\n                        href=\"https://symphony.com/company/news-press-events/\"\n                        rel=\"nofollow noreferrer\"\n                        target=\"_blank\"\n                    >\n                        News\n                    </a>\n                    <a\n                        className={styles.link}\n                        href=\"https://symphony.com/insights/blog/\"\n                        rel=\"nofollow noreferrer\"\n                        target=\"_blank\"\n                    >\n                        Blog\n                    </a>\n                </div>\n                <div className={styles.column}>\n                    <span className={styles.header}>CONFERENCES</span>\n\n                    {/*\n                    <Link\n                        className={styles.link}\n                        to={{\n                            pathname: \"/conferences/nyc-2024\",\n                            state: {\n                                conference: footerConferences[\"nyc-2024\"],\n                            },\n                        }}\n                    >\n                        Symphony Innovate New York 2024\n                    </Link>\n                    */}\n\n                    <span className={styles.link} onClick={goToConferences}>\n                        View past events\n                    </span>\n                </div>\n            </div>\n            <div className={styles.secondary}>\n                <div className={styles.row}>\n                    <span>\n                        &copy; {new Date().getFullYear()} Symphony Communication\n                        Services LLC. All rights reserved.\n                    </span>\n                    <a\n                        className={styles.link}\n                        href=\"https://symphony.com/privacy-policy/\"\n                        rel=\"nofollow noreferrer\"\n                        target=\"_blank\"\n                    >\n                        Terms & Conditions\n                    </a>\n                </div>\n                <div className={styles.row}>\n                    <p className={styles.gdpr}>\n                        By attending Symphony Innovate New York 2024, you consent to (i) be photographed, filmed and/or otherwise recorded; (ii) the recording of your questions and comments posted during the live sessions; (iii) be included in Symphony’s newsletter distribution list (which distribution will contain an unsubscribe option if you no longer desire to receive the newsletters); and (iv) the use and publication by Symphony Communication Services, LLC, its affiliates and any applicable media agency acting on Symphony’s behalf of (1) your name, likeness, statements & voice (if applicable), (2) a live stream of Symphony Innovate New York 2024 and portions thereof, and (3) images, descriptions (whether verbal or written) and videos of any developments you bring to, or display or created for purposes of participating in the event, in each case as such information or media is received or recorded by Symphony at Symphony Innovate New York 2024, for any purpose in which Symphony engages, including any promotion, advertisement or other conduct of trade.\n                    </p>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nexport default Footer;\n","import { useContext, useMemo } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\n// Components\nimport Footer from \"./Footer\";\n\n// Context\nimport { ConferencesContext } from \"../../context/conferences\";\n\n// Utils\nimport { scrollToTop } from \"../../utils/scrollUtils\";\n\nconst FooterContainer = (props) => {\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * useContext\n     */\n\n    const { conferences } = useContext(ConferencesContext);\n\n    /**\n     * useMemo\n     */\n\n    const footerConferences = useMemo(() => {\n        return {\n            \"london-2022\": conferences.find(\n              (conference) => conference.slug === \"london-2022\"\n            ),\n            \"nyc-2021\": conferences.find(\n              (conference) => conference.slug === \"nyc-2021\"\n            ),\n            \"europe-2020\": conferences.find(\n                (conference) => conference.slug === \"europe-2020\"\n            ),\n            \"nyc-2020\": conferences.find(\n                (conference) => conference.slug === \"nyc-2020\"\n            ),\n        };\n    }, [conferences]);\n\n    /**\n     * End Hooks\n     */\n\n    function goToConferences() {\n        const path = window.location.pathname;\n        if (path !== \"/conferences\") {\n            history.push(\"/conferences\");\n        }\n        scrollToTop();\n    }\n\n    return (\n        <Footer\n            {...props}\n            goToConferences={goToConferences}\n            footerConferences={footerConferences}\n        />\n    );\n};\n\nexport default FooterContainer;\n","import { useState, useEffect, useRef } from \"react\";\nimport { isMobile } from \"react-device-detect\";\nimport { Link } from \"react-router-dom\";\nimport cx from \"classnames\";\n\n// CSS\nimport styles from \"../header.module.scss\";\n\nexport const HeaderFilters = (props) => {\n    const {\n        clearTags,\n        handleSelectFilter,\n        handleToggleSearchMode,\n        shouldShowFilterTags,\n    } = props;\n\n    /**\n     * useRef\n     */\n\n    const locationsTabRef = useRef();\n\n    /**\n     * useState\n     */\n\n    const [tabWidth, setTabWidth] = useState(null);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        if (locationsTabRef?.current) {\n            setTabWidth(locationsTabRef.current.clientWidth);\n        }\n    }, [locationsTabRef]);\n\n    /**\n     * Constants\n     */\n\n    const tabStyle = { width: tabWidth ? `${tabWidth}px` : \"auto\" };\n\n    /**\n     * End Hooks\n     */\n\n    function handleShowAllClick() {\n        clearTags();\n        handleToggleSearchMode(false);\n    }\n\n    function onMouseEnter() {\n        if (!isMobile) {\n            handleSelectFilter(\"tags\", true);\n        }\n    }\n\n    return (\n        <div className={styles.filters}>\n            <div className={styles.filterBy}>\n                <span>FILTER BY</span>\n            </div>\n            <div className={styles.tabs}>\n                <div\n                    className={cx(styles.tab, {\n                        [styles[\"tab--selected\"]]: shouldShowFilterTags,\n                    })}\n                    onClick={() => handleSelectFilter(\"tags\")}\n                    onMouseEnter={onMouseEnter}\n                    style={tabStyle}\n                >\n                    FILTER BY\n                    <span className={cx(styles.arrow, \"material-icons\")}>\n                        arrow_drop_up\n                    </span>\n                </div>\n            </div>\n            <div className={styles.showAll}>\n                <Link\n                    className={styles.link}\n                    onClick={handleShowAllClick}\n                    to=\"/videos\"\n                >\n                    SHOW ALL\n                </Link>\n            </div>\n        </div>\n    );\n};\n","import cx from \"classnames\";\n\n// CSS\nimport styles from \"./chip.module.scss\";\n\nconst Chip = (props) => {\n    const { isSelected, onClick, text } = props;\n\n    return (\n        <div\n            className={cx(styles.chip, {\n                [styles[\"chip--selected\"]]: isSelected,\n            })}\n            onClick={onClick}\n        >\n            <span className={styles.text}>{text}</span>\n        </div>\n    );\n};\n\nexport default Chip;\n","// Components\nimport Chip from \"./Chip\";\n\nconst ChipContainer = (props) => {\n    return <Chip {...props} />;\n};\n\nexport default ChipContainer;\n","import { isMobile } from \"react-device-detect\";\nimport cx from \"classnames\";\n\n// Components\nimport Chip from \"../../Chip/ChipContainer\";\n\n// CSS\nimport styles from \"../header.module.scss\";\n\nexport const HeaderFilterTags = (props) => {\n    const {\n        handleSelectTag,\n        mappedFilters,\n        selectedTags,\n        shouldHideHeader,\n        shouldShowFilterTags,\n        toggleFilterTagsDisplay,\n    } = props;\n\n    /**\n     * Constants\n     */\n\n    const categoryFilters = mappedFilters?.find(\n        ({ type }) => type === \"categories\"\n    )?.items;\n    const conferenceFilters = mappedFilters?.find(\n        ({ type }) => type === \"conferences\"\n    )?.items;\n\n    /**\n     * End Hooks\n     */\n\n    function onMouseLeave() {\n        if (!isMobile) {\n            toggleFilterTagsDisplay(false);\n        }\n    }\n\n    function renderCategoryFilters() {\n        return categoryFilters?.map((tag, i) => {\n            const isAlreadySelected = selectedTags.some(\n                (selectedTag) => selectedTag.tag === tag.tag\n            );\n            return (\n                <Chip\n                    isSelected={isAlreadySelected}\n                    key={i}\n                    onClick={() => handleSelectTag(tag, \"categories\")}\n                    text={tag.display_text}\n                />\n            );\n        });\n    }\n\n    function renderConferenceFilters() {\n        return conferenceFilters?.map((tag, i) => {\n            const isAlreadySelected = selectedTags.some(\n                (selectedTag) => selectedTag.tag === tag.tag\n            );\n            return (\n                <Chip\n                    isSelected={isAlreadySelected}\n                    key={i}\n                    onClick={() => handleSelectTag(tag, \"conferences\")}\n                    text={tag.display_text}\n                />\n            );\n        });\n    }\n\n    return (\n        <div\n            className={cx(styles.filterTags, {\n                [styles[\"filterTags--active\"]]:\n                    shouldShowFilterTags && !shouldHideHeader,\n            })}\n            onMouseLeave={onMouseLeave}\n        >\n            <div className={styles.filterTagsLeft}>\n                {renderCategoryFilters()}\n            </div>\n            <div className={styles.filterTagsRight}>\n                {renderConferenceFilters()}\n            </div>\n        </div>\n    );\n};\n","import cx from \"classnames\";\n\n// CSS\nimport styles from \"../header.module.scss\";\n\n// Constants\n{/*const twitterIconSrc =\n    require(\"../../../assets/icons/X-dark.svg\").default;*/}\nconst linkedinIconSrc =\n    require(\"../../../assets/icons/linkedin-dark.svg\").default;\nconst youtubeIconSrc =\n    require(\"../../../assets/icons/youtube-dark.svg\").default;\nconst logoSrc = require(\"../../../assets/logos/symphony-light.svg\").default;\n\n\nexport const HeaderRowOne = (props) => {\n    const { conference, goToConference, goToSocial, goToSymphony } = props;\n    const { hide_featured_conference_from_nav, is_featured,  } = conference || {};\n\n    return (\n        <div className={cx(styles.row, styles[\"row--one\"])}>\n            <div\n                className={cx(styles.register, {\n                    [styles[\"register--hidden\"]]:\n                        !is_featured,\n                })}\n            >\n                <a\n                    className={cx(styles[\"register-link\"], {\n                        [styles[\"register-link--hidden\"]]:\n                            hide_featured_conference_from_nav,\n                    })}\n                    href={conference?.register_link}\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                >\n                    Register\n                </a>\n            </div>\n\n            <div className={styles.featured}>\n                <div\n                    className={cx(styles.conference, {\n                        [styles[\"conference--hidden\"]]:\n                            hide_featured_conference_from_nav,\n                    })}\n                    onClick={goToConference}\n                >\n                    <span className={styles.dateString}>\n                        {conference?.date_string}\n                    </span>{\" \"}\n                    <span> {conference?.location}</span>\n                </div>\n                <div className={styles.socials}>\n                    {/*\n                    <img\n                        alt=\"Twitter icon\"\n                        className={styles.icon}\n                        onClick={() => goToSocial(\"twitter\")}\n                        src={twitterIconSrc} />\n                    */}\n                    <img\n                        alt=\"Linkedin icon\"\n                        className={styles.icon}\n                        onClick={() => goToSocial(\"linkedin\")}\n                        src={linkedinIconSrc}\n                    />\n\n                    <img\n                        alt=\"Youtube icon\"\n                        className={styles.icon}\n                        onClick={() => goToSocial(\"youtube\")}\n                        src={youtubeIconSrc}\n                    />\n\n                </div>\n            </div>\n            <div className={styles.logo} onClick={goToSymphony}>\n                <img alt=\"Symphony logo\" src={logoSrc} />\n            </div>\n        </div>\n    );\n};\n","import cx from \"classnames\";\n\n// CSS\nimport styles from \"./search.module.scss\";\n\nconst Search = (props) => {\n    const { classes, isLight, onChange, onSubmit } = props;\n\n    return (\n        <div\n            className={cx(styles.search, classes, {\n                [styles[\"search--light\"]]: isLight,\n            })}\n        >\n            <form onSubmit={onSubmit}>\n                <input\n                    className={styles.input}\n                    onChange={onChange}\n                    type=\"text\"\n                />\n                <span\n                    className={cx(\n                        styles.icon,\n                        `material-icons material-icons-outlined`\n                    )}\n                    onClick={onSubmit}\n                >\n                    search\n                </span>\n            </form>\n        </div>\n    );\n};\n\nexport default Search;\n","import { useContext, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\n// Components\nimport Search from \"./Search\";\n\n// Context\nimport { VideosContext } from \"../../context/videos\";\n\nconst SearchContainer = (props) => {\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * useContext\n     */\n\n    const { fetchVideoSearchResults } = useContext(VideosContext);\n\n    /**\n     * useState\n     */\n\n    const [search, setSearch] = useState(\"\");\n\n    /**\n     * End Hooks\n     */\n\n    function onChange(e) {\n        const { value } = e.target;\n        setSearch(value);\n    }\n\n    function onSubmit(e) {\n        e.preventDefault();\n        fetchVideoSearchResults(search);\n        history.push(\"/videos\");\n    }\n\n    return (\n        <Search\n            {...props}\n            onChange={onChange}\n            onSubmit={onSubmit}\n            search={search}\n        />\n    );\n};\n\nexport default SearchContainer;\n","import { Link } from \"react-router-dom\";\nimport cx from \"classnames\";\n\n// Components\nimport Search from \"../../Search/SearchContainer\";\n\n// CSS\nimport styles from \"../header.module.scss\";\n\n// Constants\nconst logoSrc =\n    require(\"../../../assets/logos/symphony-innovate-logo.svg\").default;\n\nexport const HeaderRowTwo = (props) => {\n    const { clearTags, history, location, setIsSideMenuActive } = props;\n\n    const isVideoRoute = location.pathname.includes(\"videos\");\n\n    return (\n        <div className={cx(styles.row, styles[\"row--two\"])}>\n            <div\n                className={styles.more}\n                onClick={() => setIsSideMenuActive((prev) => !prev)}\n            >\n                <span\n                    className={cx(\n                        styles.icon,\n                        \"material-icons material-icons-outlined\"\n                    )}\n                >\n                    menu\n                </span>\n                <span className={styles.text}>MORE</span>\n            </div>\n            <div className={styles.options}>\n                <Search classes={styles.search} history={history} />\n                <Link\n                    className={cx(styles.link, {\n                        [styles[\"link--active\"]]: isVideoRoute,\n                    })}\n                    onClick={clearTags}\n                    to=\"/videos\"\n                >\n                    VIDEOS\n                </Link>\n            </div>\n            <div className={styles.logo}>\n                <Link to=\"/\">\n                    <img alt=\"Symphony Innovate logo\" src={logoSrc} />\n                </Link>\n            </div>\n        </div>\n    );\n};\n","import { useContext, useEffect, useRef } from \"react\";\nimport cx from \"classnames\";\n\n// Components\nimport { HeaderFilters } from \"./HeaderFilters/HeaderFilters\";\nimport { HeaderFilterTags } from \"./HeaderFilterTags/HeaderFilterTags\";\nimport { HeaderRowOne } from \"./HeaderRowOne/HeaderRowOne\";\nimport { HeaderRowTwo } from \"./HeaderRowTwo/HeaderRowTwo\";\n\n// Context\nimport { TagsContext } from \"../../context/tags\";\nimport { VideosContext } from \"../../context/videos\";\n\n// CSS\nimport styles from \"./header.module.scss\";\n\nconst Header = (props) => {\n    const {\n        history,\n        location,\n        previousPathname,\n        setPreviousPathname,\n        setHeaderOffset,\n        shouldHideHeader,\n    } = props;\n\n    /**\n     * useRef\n     */\n\n    const headerRef = useRef();\n\n    /**\n     * useContext\n     */\n\n    const {\n        addTag,\n        clearTags,\n        filters,\n        mappedFilters,\n        removeTag,\n        selectedTags,\n    } = useContext(TagsContext);\n    const { handleSelectPage, handleToggleSearchMode } =\n        useContext(VideosContext);\n\n    /**\n     * useEffect\n     */\n\n    /**\n     * Set header height\n     */\n    useEffect(() => {\n        if (headerRef?.current) {\n            setHeaderOffset(headerRef.current.clientHeight);\n        }\n    }, [headerRef, setHeaderOffset]);\n\n    /**\n     * Functionality that should be triggered by a change in the URL\n     */\n    useEffect(() => {\n        if (location.pathname !== previousPathname) {\n            if (headerRef?.current) {\n                setHeaderOffset(headerRef.current.clientHeight);\n            }\n            setPreviousPathname(location.pathname);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [location]);\n\n    /**\n     * Constants\n     */\n\n    const isVideoUrl =\n        window.location.pathname.includes(\"video\") ||\n        window.location.pathname.includes(\"register/confirmation\");\n\n    /**\n     * End Hooks\n     */\n\n    /**\n     *\n     * @param {Object} tag  Example: {display_text: \"Keynote\", tag: \"keynote\"}\n     *\n     */\n    function handleSelectTag(tag, type) {\n        const isAlreadySelected = selectedTags.some(\n            (selectedTag) => selectedTag.tag === tag.tag\n        );\n        isAlreadySelected ? removeTag(tag, type) : addTag(tag, type);\n        handleToggleSearchMode(false);\n        location.pathname !== \"/videos\" && history.push(\"/videos\");\n    }\n\n    return (\n        <div\n            className={cx(styles.header, {\n                [styles[\"header--hidden\"]]: shouldHideHeader,\n            })}\n            ref={headerRef}\n        >\n            <div className={styles.wrapperRelative}>\n                <HeaderRowOne {...props} />\n                <HeaderRowTwo {...props} clearTags={clearTags} />\n                {isVideoUrl && (\n                    <HeaderFilters\n                        {...props}\n                        clearTags={clearTags}\n                        handleToggleSearchMode={handleToggleSearchMode}\n                    />\n                )}\n                {isVideoUrl && (\n                    <HeaderFilterTags\n                        {...props}\n                        handleSelectPage={handleSelectPage}\n                        handleSelectTag={handleSelectTag}\n                        filters={filters}\n                        mappedFilters={mappedFilters}\n                        selectedTags={selectedTags}\n                    />\n                )}\n            </div>\n        </div>\n    );\n};\n\nexport default Header;\n","import { useContext, useState } from \"react\";\nimport { useHistory, withRouter } from \"react-router-dom\";\n\n// Components\nimport Header from \"./Header\";\n\n// Context\nimport { ConferencesContext } from \"../../context/conferences\";\n\n// Hooks\nimport { useDocumentScrollThrottled } from \"../../hooks/scroll/useDocumentScrollThrottled\";\n\nconst HeaderContainer = (props) => {\n    const { location } = props;\n\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * useContext\n     */\n\n    const { featuredConference } = useContext(ConferencesContext);\n\n    /**\n     * useState\n     */\n\n    const [previousPathname, setPreviousPathname] = useState(location.pathname);\n    const [selectedFilter, setSelectedFilter] = useState(null);\n    const [shouldHideHeader, setShouldHideHeader] = useState(false);\n    const [shouldShowFilterTags, setShouldShowFilterTags] = useState(false);\n    const [shouldShowShadow, setShouldShowShadow] = useState(false);\n\n    /**\n     * Custom Hooks\n     */\n\n    const MINIMUM_SCROLL = 80;\n    const TIMEOUT_DELAY = 200;\n\n    useDocumentScrollThrottled((callbackData) => {\n        const { previousScrollTop, currentScrollTop } = callbackData;\n        const isScrolledDown = previousScrollTop < currentScrollTop;\n        const isMinimumScrolled = currentScrollTop > MINIMUM_SCROLL;\n\n        setShouldShowShadow(currentScrollTop > 2);\n\n        setTimeout(() => {\n            setShouldHideHeader(isScrolledDown && isMinimumScrolled);\n        }, TIMEOUT_DELAY);\n    });\n\n    /**\n     * End Hooks\n     */\n\n    function goToConference({ scrollToRegister }) {\n        const registerQuery = scrollToRegister ? \"?scroll=register\" : \"\";\n        history.push(`/conferences/${featuredConference.slug}${registerQuery}`);\n    }\n\n    function goToHome() {\n        history.push(`/`);\n    }\n\n    function goToSymphony() {\n        window.open(\n            \"https://symphony.com/\",\n            \"_blank\",\n            \"noopener\",\n            \"noreferrer\"\n        );\n    }\n\n    function goToSocial(platform) {\n        const urls = {\n            linkedin: \"https://www.linkedin.com/company/symphonycomm/\",\n            twitter: \"https://twitter.com/symphony\",\n            youtube: \"https://www.youtube.com/c/SymphonyComm\"\n        };\n        window.open(urls[platform], \"_blank\", \"noopener\", \"noreferrer\");\n    }\n\n    function handleSelectFilter(key, bool) {\n        toggleFilterTagsDisplay(bool);\n        setSelectedFilter(key);\n    }\n\n    function toggleFilterTagsDisplay(bool) {\n        setShouldShowFilterTags((prev) => bool || !prev);\n    }\n\n    return (\n        <Header\n            {...props}\n            conference={featuredConference}\n            goToConference={goToConference}\n            goToHome={goToHome}\n            goToSocial={goToSocial}\n            goToSymphony={goToSymphony}\n            handleSelectFilter={handleSelectFilter}\n            history={history}\n            previousPathname={previousPathname}\n            selectedFilter={selectedFilter}\n            setPreviousPathname={setPreviousPathname}\n            shouldHideHeader={shouldHideHeader}\n            shouldShowFilterTags={shouldShowFilterTags}\n            shouldShowShadow={shouldShowShadow}\n            toggleFilterTagsDisplay={toggleFilterTagsDisplay}\n        />\n    );\n};\n\nexport default withRouter(HeaderContainer);\n","import { useEffect, useState } from \"react\";\nimport { throttle } from \"lodash\";\n\nexport function useDocumentScrollThrottled(callback) {\n    const [, setScrollPosition] = useState(0);\n    let previousScrollTop = 0;\n\n    function handleDocumentScroll() {\n        const { scrollTop: currentScrollTop } =\n            document.documentElement || document.body;\n\n        setScrollPosition((previousPosition) => {\n            previousScrollTop = previousPosition;\n            return currentScrollTop;\n        });\n\n        callback({ previousScrollTop, currentScrollTop });\n    }\n\n    const handleDocumentScrollThrottled = throttle(handleDocumentScroll, 250);\n\n    useEffect(() => {\n        window.addEventListener(\"scroll\", handleDocumentScrollThrottled);\n\n        return () =>\n            window.removeEventListener(\"scroll\", handleDocumentScrollThrottled);\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n}\n","import cx from \"classnames\";\n\n// Components\nimport Search from \"../Search/SearchContainer\";\n\n// CSS\nimport styles from \"./side-menu.module.scss\";\n\nconst SideMenu = (props) => {\n    const {\n        goToHomepage,\n        goToConferences,\n        goToVideos,\n        isSideMenuActive,\n        setIsSideMenuActive,\n    } = props;\n\n    return (\n        <div\n            className={cx(styles.container, {\n                [styles[\"container--active\"]]: isSideMenuActive,\n            })}\n        >\n            <div className={styles.sideMenu}>\n                <div className={styles.close}>\n                    <span\n                        className={cx(styles.icon, \"material-icons\")}\n                        onClick={() => setIsSideMenuActive(false)}\n                    >\n                        close\n                    </span>\n                </div>\n                <div className={styles.links}>\n                    <span className={styles.link} onClick={goToHomepage}>\n                        SYMPHONY INNOVATE\n                    </span>\n\n                    <span className={styles.link} onClick={goToConferences}>\n                        CONFERENCES\n                    </span>\n\n                    <span className={styles.link} onClick={goToVideos}>\n                        VIDEOS\n                    </span>\n\n                    <a\n                        className={styles.link}\n                        href=\"https://symphony.com/company/about/\"\n                        rel=\"noreferrer noopener\"\n                        target=\"_blank\"\n                    >\n                        ABOUT SYMPHONY\n                    </a>\n                </div>\n                <Search classes={styles.search} isLight={true} />\n            </div>\n        </div>\n    );\n};\n\nexport default SideMenu;\n","import { useContext, useEffect, useState } from \"react\";\nimport { useHistory, useLocation } from \"react-router-dom\";\n\n// Components\nimport SideMenu from \"./SideMenu\";\n\n// Context\nimport { ConferencesContext } from \"../../context/conferences\";\n\nconst SideMenuContainer = (props) => {\n    const { setIsSideMenuActive } = props;\n\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n    const location = useLocation();\n\n    /**\n     * useContext\n     */\n\n    const { featuredConference } = useContext(ConferencesContext);\n\n    /**\n     * useState\n     */\n\n    const [previousPathname, setPreviousPathname] = useState(location.pathname);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        if (location.pathname !== previousPathname) {\n            setPreviousPathname(location.pathname);\n            setIsSideMenuActive(false);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [location]);\n\n    /**\n     * End Hooks\n     */\n\n    function goToHomepage() {\n        history.push(\"/\");\n        setIsSideMenuActive(false);\n    }\n\n    function goToConference({ scrollToRegister }) {\n        const registerQuery = scrollToRegister ? \"?scroll=register\" : \"\";\n        history.push(`/conferences/${featuredConference.slug}${registerQuery}`);\n    }\n\n    function goToConferences() {\n        const path = window.location.pathname;\n\n        if (path === \"/\") {\n            const element = document.getElementById('recent_conferences');\n            element.scrollIntoView({ behavior: 'smooth' });\n            console.log(element);\n            console.log(path);\n            console.log(\"homepage\");\n        }\n        else {\n            history.push(\"/\");\n            setTimeout(() => {\n              const element = document.getElementById('recent_conferences');\n              console.log(element);\n              element.scrollIntoView({ behavior: 'smooth' });\n            }, 100);\n            console.log(path);\n            console.log(\"not homepage\");\n        }\n        setIsSideMenuActive(false);\n    }\n\n    function goToVideos() {\n        const path = window.location.pathname;\n        if (path !== \"/videos\") {\n            history.push(\"/videos\");\n        }\n        setIsSideMenuActive(false);\n    }\n\n    return (\n        <SideMenu\n            {...props}\n            goToHomepage={goToHomepage}\n            goToConference={goToConference}\n            goToConferences={goToConferences}\n            goToVideos={goToVideos}\n        />\n    );\n};\n\nexport default SideMenuContainer;\n","// Components\nimport Section from \"../../../components/Section/SectionContainer\";\nimport Vimeo from \"../../../components/Vimeo/VimeoContainer\";\n\n// CSS\nimport styles from \"../video.module.scss\";\n\nconst VideoEmbed = (props) => {\n    const { video } = props;\n\n    return (\n        <Section classes={styles.embed}>\n        <div className={styles.quality}>\n            <span>\n            To have the best experience when viewing this video, please ensure your quality setting is 1080p.\n            </span>\n        </div>\n            <Vimeo video={video} />\n            <div className={styles.disclaimer}>\n                <span>\n                    This content features products and functionality that are\n                    offered or being developed by Symphony at the time of\n                    recording. Future availability is subject to change.\n                </span>\n            </div>\n        </Section>\n    );\n};\n\nexport default VideoEmbed;\n","import { useMemo } from \"react\";\nimport { OverlayTrigger, Tooltip } from \"react-bootstrap\";\nimport parse from \"html-react-parser\";\n\n// Components\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../video.module.scss\";\n\n// Constants\nconst arrowForwardIconSrc =\n    require(\"../../../assets/icons/arrow-forward-dark.svg\").default;\nconst envelopeIconSrc =\n    require(\"../../../assets/icons/envelope-dark.svg\").default;\nconst linkedinIconSrc =\n    require(\"../../../assets/icons/linkedin-dark.svg\").default;\nconst twitterIconSrc =\n    require(\"../../../assets/icons/twitter-dark.svg\").default;\n\nconst VideoHeader = (props) => {\n    const { copyLinkToClipboard, tooltipText, video } = props;\n    const { conference, description, title } = video || {};\n\n    /**\n     * useMemo\n     */\n\n    const encodedShareDescription = useMemo(\n        () => encodeURIComponent(`Watch ${video?.title} on Symphony Innovate`),\n        [video]\n    );\n\n    /**\n     * End Hooks\n     */\n\n    function renderTooltip() {\n        return <Tooltip id=\"share-tooltip\">{tooltipText}</Tooltip>;\n    }\n\n    return (\n        <div className={styles.video}>\n            <Section classes={styles.headerContainer}>\n                <div className={styles.title}>\n                      {title && <h1>{parse(video.title)}</h1>}\n                </div>\n                <div className={styles.subheader}>\n                    <span>{conference}</span>\n                </div>\n                <div className={styles.row}>\n                    <p className={styles.description}>\n                        {parse(description || \"\")}\n                    </p>\n                    <div className={styles.icons}>\n                        <div\n                            className={styles.icon}\n                            onClick={copyLinkToClipboard}\n                        >\n                            <OverlayTrigger\n                                delay={{ show: 250, hide: 400 }}\n                                overlay={renderTooltip()}\n                                placement=\"top\"\n                            >\n                                <img\n                                    alt=\"Forward arrow icon\"\n                                    src={arrowForwardIconSrc}\n                                />\n                            </OverlayTrigger>\n                        </div>\n                        <a\n                            className={styles.icon}\n                            href={`https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}`}\n                            rel=\"nofollow noreferrer\"\n                            target=\"_blank\"\n                        >\n                            <img alt=\"Linkedin icon\" src={linkedinIconSrc} />\n                        </a>\n                        <a\n                            className={styles.icon}\n                            href={`https://twitter.com/intent/tweet?url=${window.location.href}&text=${encodedShareDescription}`}\n                            rel=\"nofollow noreferrer\"\n                            target=\"_blank\"\n                        >\n                            <img alt=\"Twitter icon\" src={twitterIconSrc} />\n                        </a>\n                        <a\n                            className={styles.icon}\n                            href={`mailto:?body=${encodedShareDescription}&subject=${video?.title}`}\n                            rel=\"nofollow noreferrer\"\n                            target=\"_blank\"\n                        >\n                            <img alt=\"Envelope icon\" src={envelopeIconSrc} />\n                        </a>\n                    </div>\n                </div>\n            </Section>\n        </div>\n    );\n};\n\nexport default VideoHeader;\n","import cx from \"classnames\";\nimport parse from \"html-react-parser\";\n\n// Components\nimport Button from \"../../../components/Button/ButtonContainer\";\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../video.module.scss\";\n\n\nconst VideosGlobal = (props) => {\n    const { video } = props;\n    const {\n        related_product_title,\n        related_product_description,\n        related_product_url,\n        related_product_image,\n    } = video || {};\n\n    return (\n        <Section classes={styles.related_product}>\n        <div\n            className={cx(styles.related_product_container, {\n                [styles[\"related_product_container--hidden\"]]:\n                    !related_product_title,\n            })}\n        >\n            <h1 className={styles.header}>Symphony Product</h1>\n            <div\n                className={styles.related_product_image}\n                style={{ backgroundImage: `url(${related_product_image?.sizes?.large})` }}\n            >\n            </div>\n\n            <div className={styles.related_product_text}>\n                <h3 className={styles.related_product_title}>{related_product_title}</h3>\n                <div className={styles.related_product_description}>{related_product_description && <span>{parse(video.related_product_description)}</span>}</div>\n                <a\n                    href={related_product_url}\n                    rel=\"noreferrer\"\n                    target=\"_blank\"\n                    className={cx(styles.related_product_link, {\n                        [styles[\"button--hidden\"]]: !related_product_url,\n                    })}\n                >\n                    <Button\n                        className={styles.related_product_button}\n                        text=\"Learn more\"\n                    />\n                </a>\n            </div>\n            </div>\n        </Section>\n    );\n};\n\nexport default VideosGlobal;\n","// Components\nimport { CardContainer as Card } from \"../../../components/Card/CardContainer\";\nimport Section from \"../../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"../video.module.scss\";\n\nconst VideoRelated = (props) => {\n    const { history, videos } = props;\n\n    function handleSelect(video) {\n        history.push({ pathname: `/videos/${video.id}`, state: { video } });\n        history.go(0);\n    }\n\n    return (\n        <Section classes={styles.related}>\n            <h1 className={styles.header}>Related Content</h1>\n            <div className={styles.grid}>\n                <Card\n                    data={videos[0]}\n                    onClick={() => handleSelect(videos[0])}\n                />\n                <Card\n                    data={videos[1]}\n                    onClick={() => handleSelect(videos[1])}\n                />\n                <Card\n                    data={videos[2]}\n                    onClick={() => handleSelect(videos[2])}\n                />\n            </div>\n        </Section>\n    );\n};\n\nexport default VideoRelated;\n","import { Helmet } from \"react-helmet\";\n\n// Components\nimport VideoEmbed from \"./VideoEmbed/VideoEmbed\";\nimport VideoHeader from \"./VideoHeader/VideoHeader\";\nimport VideoRelatedProduct from \"./VideoRelatedProduct/VideoRelatedProduct\";\nimport VideoRelated from \"./VideoRelated/VideoRelated\";\n\n// CSS\nimport styles from \"./video.module.scss\";\n\nconst Video = (props) => {\n    const { video } = props;\n    const { description, title } = video || {};\n\n    return (\n        <div className={styles.video}>\n            <Helmet>\n                <title>{video?.title}</title>\n                <meta name=\"title\" content={title} />\n                <meta name=\"description\" content={description} />\n                <meta name=\"robots\" content=\"index, follow\" />\n            </Helmet>\n            <VideoHeader {...props} />\n            <VideoEmbed {...props} />\n            <VideoRelatedProduct {...props} />\n            <VideoRelated {...props} />\n        </div>\n    );\n};\n\nexport default Video;\n","import { useContext, useEffect, useState } from \"react\";\nimport { useHistory, useLocation, useParams } from \"react-router-dom\";\n\n// Components\nimport Video from \"./Video\";\n\n// Context\nimport { VideosContext } from \"../../context/videos\";\n\n// Platforms\nimport { Api } from \"../../platforms/api\";\n\n// Utils\nimport { reformatAcfResponse } from \"../../utils/fetchUtils\";\nimport { copyToClipboard } from \"../../utils/miscUtils\";\nimport { scrollToTop } from \"../../utils/scrollUtils\";\n\nconst VideoContainer = (props) => {\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n    const location = useLocation();\n    const { id } = useParams();\n\n    /**\n     * useContext\n     */\n\n    const { videos } = useContext(VideosContext);\n\n    /**\n     * useState\n     */\n\n    const [tooltipText, setTooltipText] = useState(\"Click to copy video link\");\n    const [video, setVideo] = useState(null);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        scrollToTop();\n        if (!video) {\n            const { video: locationVideo } = location?.state || {};\n            locationVideo ? setVideo(locationVideo) : fetchVideo();\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n\n    /**\n     * End Hooks\n     */\n\n    function copyLinkToClipboard() {\n        copyToClipboard(window.location.href);\n        setTooltipText(\"Copied!\");\n        setTimeout(() => {\n            setTooltipText(\"Click to copy video link\");\n        }, 3000);\n    }\n\n    function fetchVideo() {\n        Api.getVideo({ id }, onFetchVideoSuccess, onFetchVideoError);\n    }\n\n    function onFetchVideoError(err) {\n        history.push(\"/videos\");\n    }\n\n    function onFetchVideoSuccess({ headers, body: res }) {\n        setVideo(reformatAcfResponse(res));\n    }\n\n    return (\n        <Video\n            {...props}\n            copyLinkToClipboard={copyLinkToClipboard}\n            history={history}\n            tooltipText={tooltipText}\n            video={video}\n            videos={videos}\n        />\n    );\n};\n\nexport default VideoContainer;\n","// CSS\nimport styles from \"./loading-section.module.scss\";\n\n// Const\nconst loadingSpinnerSrc =\n    require(\"../../assets/images/loading-spinner-transparent.gif\").default;\n\nexport const LoadingSection = (props) => {\n    return (\n        <div className={styles[\"loading-section\"]}>\n            <img\n                alt=\"Loading spinner\"\n                className={styles.spinner}\n                src={loadingSpinnerSrc}\n            />\n        </div>\n    );\n};\n","import { useMemo } from \"react\";\nimport { Modal } from \"react-bootstrap\";\nimport ReactPaginate from \"react-paginate\";\n\n// Components\nimport Button from \"../../components/Button/ButtonContainer\";\nimport { CardContainer as Card } from \"../../components/Card/CardContainer\";\nimport { LoadingSection } from \"../../components/LoadingSection/LoadingSection\";\nimport Section from \"../../components/Section/SectionContainer\";\n\n// CSS\nimport styles from \"./videos.module.scss\";\n\nconst Videos = (props) => {\n    const {\n        handleSelect,\n        handleSelectPage,\n        hasSelectedTags,\n        isSearchActive,\n        isSearching,\n        shouldShowConfirmationModal,\n        toggleConfirmationModal,\n        totalPages,\n        videosCollection,\n    } = props;\n\n    /**\n     * Constants\n     */\n\n    const header = useMemo(() => {\n        if (isSearchActive) return (\n          <h1>search results</h1>\n        );\n        if (hasSelectedTags) return (\n          <h1> tagged videos</h1>\n        );\n        return (\n          <div>\n            <h1>all videos</h1>\n            <h6>The videos on this site are powered by Vimeo</h6>\n          </div>\n\n        );\n\n    }, [hasSelectedTags, isSearchActive]);\n\n    /**\n     * End Hooks\n     */\n\n    function renderCards() {\n        const list = videosCollection.map((video) => {\n            return (\n\n                <Card\n                    data={video}\n                    key={video.id}\n                    onClick={() => handleSelect(video)}\n                />\n            );\n        });\n        if (list?.length && !isSearching) {\n            return list;\n        } else if (!list?.length && !isSearching) {\n            return (\n                <div className={styles.empty}>\n                    <span>\n                        We couldn't find any videos matching your search\n                        request. Please try using a different search term.\n                        <a href=\"/videos\" rel=\"noreferrer\" target=\"_self\">\n                            <Button className={styles.empty} text=\"reset filter\" />\n\n                        </a>\n\n                    </span>\n                </div>\n            );\n        }\n    }\n\n    function renderConfirmationModal() {\n        return (\n            shouldShowConfirmationModal && (\n                <Modal\n                    {...props}\n                    aria-labelledby=\"contained-modal-title-vcenter\"\n                    centered\n                    onHide={() => toggleConfirmationModal(false)}\n                    size=\"lg\"\n                    show={shouldShowConfirmationModal}\n                >\n                    <Modal.Header closeButton />\n                    <Modal.Body>\n                        <h4>\n                            Thank you for registering for Symphony Innovate 2021\n                            [Digital]!\n                        </h4>\n                        <p>\n                            Keep your eyes out for emails in the coming days and\n                            weeks about the event, agenda, and more. If you have\n                            any questions, please email{\" \"}\n                            <a href=\"mailto:innovate@symphony.com\">\n                                innovate@symphony.com\n                            </a>\n                        </p>\n                        <Button\n                            onClick={() => toggleConfirmationModal(false)}\n                            text=\"continue\"\n                            theme=\"green\"\n                        />\n                    </Modal.Body>\n                </Modal>\n            )\n        );\n    }\n\n    function renderLoading() {\n        return (\n            isSearching &&\n            isSearchActive && (\n                <div className={styles.loading}>\n                    <LoadingSection />\n                </div>\n            )\n        );\n    }\n\n    return (\n        <Section classes={styles.videos}>\n            {renderConfirmationModal()}\n            {header}\n            {renderLoading()}\n            <div className={styles.grid}>{renderCards()}</div>\n            <ReactPaginate\n                breakLabel=\"...\"\n                className={styles.pagination}\n                activeClassName={styles.active}\n                disabledClassName={styles.disabled}\n                onPageChange={handleSelectPage}\n                pageCount={totalPages}\n                pageRangeDisplayed={5}\n                renderOnZeroPageCount={null}\n            />\n        </Section>\n    );\n};\n\nexport default Videos;\n","import { useContext, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\n// Components\nimport Videos from \"./Videos\";\n\n// Context\nimport { TagsContext } from \"../../context/tags\";\nimport { VideosContext } from \"../../context/videos\";\n\nconst VideosContainer = (props) => {\n    const { showConfirmationModal } = props;\n\n    /**\n     * Router Hooks\n     */\n\n    const history = useHistory();\n\n    /**\n     * useContext\n     */\n\n    const { clearTags, selectedTags, tags } = useContext(TagsContext);\n    const {\n        filteredVideos,\n        handleSelectPage,\n        isFiltering,\n        isSearchActive,\n        isSearching,\n        shouldShowFilteredVideos,\n        totalPages,\n        totalVideos,\n        videos,\n        videoSearchResults,\n    } = useContext(VideosContext);\n\n    /**\n     * useState\n     */\n\n    const [videosCollection, setVideosCollection] = useState([]);\n    const [shouldShowConfirmationModal, setShouldShowConfirmationModal] =\n        useState(showConfirmationModal);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        return () => clearTags();\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n\n    useEffect(() => {\n        if (!isSearchActive && !shouldShowFilteredVideos) {\n            setVideosCollection(videos);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [isSearchActive]);\n\n    useEffect(() => {\n        if (shouldShowFilteredVideos) {\n            setVideosCollection(filteredVideos);\n        } else {\n            setVideosCollection(videos);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [filteredVideos, shouldShowFilteredVideos]);\n\n    useEffect(() => {\n        if (videos && !isSearchActive && !shouldShowFilteredVideos) {\n            setVideosCollection(videos);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [videos]);\n\n    useEffect(() => {\n        if (isSearchActive && !shouldShowFilteredVideos) {\n            setVideosCollection(videoSearchResults);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [videoSearchResults]);\n\n    /**\n     * Constants\n     */\n\n    const hasSelectedTags = !!selectedTags?.length;\n\n    /**\n     * End Hooks\n     */\n\n    function handleSelect(video) {\n        history.push({ pathname: `/videos/${video.id}`, state: { video } });\n    }\n\n    function toggleConfirmationModal(bool) {\n        setShouldShowConfirmationModal((prev) => bool || !prev);\n    }\n\n    return (\n        <Videos\n            {...props}\n            handleSelect={handleSelect}\n            handleSelectPage={handleSelectPage}\n            hasSelectedTags={hasSelectedTags}\n            isFiltering={isFiltering}\n            isSearchActive={isSearchActive}\n            isSearching={isSearching}\n            selectedTags={selectedTags}\n            shouldShowConfirmationModal={shouldShowConfirmationModal}\n            tags={tags}\n            toggleConfirmationModal={toggleConfirmationModal}\n            totalPages={totalPages}\n            totalVideos={totalVideos}\n            videosCollection={videosCollection}\n            videoSearchResults={videoSearchResults}\n        />\n    );\n};\n\nexport default VideosContainer;\n","import { useContext, useEffect, useState } from \"react\";\nimport { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\n\n// Components\n//import { useAnalytics } from \"./hooks/analytics/useAnalytics\";\nimport { ConferenceContainer as Conference } from \"./scenes/conference/ConferenceContainer\";\nimport { ConferencesContainer as Conferences } from \"./scenes/conferences/ConferencesContainer\";\nimport Footer from \"./components/Footer/FooterContainer\";\nimport Header from \"./components/Header/HeaderContainer\";\nimport SideMenu from \"./components/SideMenu/SideMenuContainer\";\nimport Video from \"./scenes/video/VideoContainer\";\nimport Videos from \"./scenes/videos/VideosContainer\";\n\n// Context\nimport { ConferencesContext } from \"./context/conferences\";\nimport { TagsContext } from \"./context/tags\";\nimport { VideosContext } from \"./context/videos\";\n\n// CSS\nimport \"./app.scss\";\nimport \"./css/modal.scss\";\n\nfunction App() {\n    /**\n     * useState\n     */\n\n    const [\n        hasRedirectedToFeaturedConference,\n        setHasRedirectedToFeaturedConference,\n    ] = useState(false);\n    const [headerOffset, setHeaderOffset] = useState(0);\n    const [isSideMenuActive, setIsSideMenuActive] = useState(false);\n\n    /**\n     * useContext\n     */\n\n    const { fetchConferences } = useContext(ConferencesContext);\n    const { fetchFilters, fetchTags } = useContext(TagsContext);\n    const { fetchVideos } = useContext(VideosContext);\n\n    /**\n     * useEffect\n     */\n\n    useEffect(() => {\n        fetchConferences();\n        fetchFilters();\n        fetchTags();\n        fetchVideos();\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n\n    /**\n     * End Hooks\n     */\n\n    function renderRouteByQueryParam(props) {\n        const { history } = props;\n        const queryParams = new URLSearchParams(window.location.search);\n        const conferenceParam = queryParams.get(\"conference\");\n        const scrollParam = queryParams.get(\"scroll\");\n        const toParam = queryParams.get(\"to\");\n        const videoParam = queryParams.get(\"video\");\n        if (conferenceParam) {\n            const scrollQuery = scrollParam ? `?scroll=${scrollParam}` : \"\";\n            history.push(`/conferences/${conferenceParam}${scrollQuery}`);\n        } else if (videoParam) {\n            history.push(`/videos/${videoParam}`);\n        } else if (toParam && toParam === \"conferences\") {\n            history.push(\"/conferences\");\n        } else if (toParam && toParam === \"videos\") {\n            history.push(\"/videos\");\n        } else {\n            return (\n                <Conferences\n                    {...props}\n                    hasRedirectedToFeaturedConference={\n                        hasRedirectedToFeaturedConference\n                    }\n                    setHasRedirectedToFeaturedConference={\n                        setHasRedirectedToFeaturedConference\n                    }\n                />\n            );\n        }\n    }\n\n    return (\n        <div className=\"app\" style={{ paddingTop: `${headerOffset}px` }}>\n            <Router>\n                <SideMenu\n                    isSideMenuActive={isSideMenuActive}\n                    setIsSideMenuActive={setIsSideMenuActive}\n                />\n                <Header\n                    setHeaderOffset={setHeaderOffset}\n                    setIsSideMenuActive={setIsSideMenuActive}\n                />\n                <Switch>\n                    <Route\n                        path=\"/conferences/:id\"\n                        render={(props) => <Conference {...props} />}\n                    />\n                    <Route\n                        path=\"/conferences\"\n                        render={(props) => (\n                            <Conferences\n                                {...props}\n                                hasRedirectedToFeaturedConference={\n                                    hasRedirectedToFeaturedConference\n                                }\n                                setHasRedirectedToFeaturedConference={\n                                    setHasRedirectedToFeaturedConference\n                                }\n                            />\n                        )}\n                    />\n                    <Route\n                        path=\"/register/confirmation\"\n                        render={(props) => (\n                            <Videos {...props} showConfirmationModal />\n                        )}\n                    />\n                    <Route\n                        path=\"/videos/:id\"\n                        render={(props) => <Video {...props} />}\n                    />\n                    <Route\n                        path=\"/videos\"\n                        render={(props) => <Videos {...props} />}\n                    />\n                    <Route\n                        path=\"/\"\n                        render={(props) => renderRouteByQueryParam(props)}\n                    />\n                </Switch>\n                <Footer />\n            </Router>\n        </div>\n    );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport \"./normalize.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\n\n// Context\nimport { ConferencesProvider } from \"./context/conferences\";\nimport { TagsProvider } from \"./context/tags\";\nimport { VideosProvider } from \"./context/videos\";\n\nReactDOM.render(\n    <React.StrictMode>\n        <ConferencesProvider>\n            <TagsProvider>\n                <VideosProvider>\n                    <App />\n                </VideosProvider>\n            </TagsProvider>\n        </ConferencesProvider>\n    </React.StrictMode>,\n    document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}