{"version":3,"sources":["script.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"app.js","sourcesContent":["/**\r\n * @file\r\n * Theme javascript.\r\n */\r\n (function ($) {\r\n \"use strict\";\r\n\r\n window.Unesco = window.Unesco || {\r\n isMobile: function () {\r\n return window.innerWidth <= 520;\r\n },\r\n\r\n clickLoadMore: function(elt) {\r\n $(elt).closest('.load-more').addClass('load-more-clicked');\r\n },\r\n\r\n closeSearchDropDown: function() {\r\n var $dropdown = $('.unesco-search--dropdown');\r\n\r\n if ($dropdown.length) {\r\n $dropdown.removeClass('active');\r\n $dropdown.css('top', '-500px');\r\n $('html').css('overflow', '');\r\n }\r\n },\r\n\r\n initAll: function (context, settings) {\r\n context = context || {};\r\n settings = settings || {};\r\n\r\n this.initReportMenu(context, settings);\r\n this.initHorizontalMenu(context, settings);\r\n this.initResponsiveMenu(context, settings);\r\n this.initDropdownMenu(context, settings);\r\n this.initDropdownFooter(context, settings);\r\n this.initSliderMediaFull(context, settings);\r\n this.initStickyHeader(context, settings);\r\n this.initDisplaySeeMore(context, settings);\r\n this.initIframeCustomHeight(context, settings);\r\n this.initWebformEmbedIframe(context, settings);\r\n this.initMediaSlider(context, settings);\r\n this.initDropdownParagraph(context, settings);\r\n this.initDropdownDocument(context, settings);\r\n this.initSequencedBlock(context, settings);\r\n this.initRelatedItemsBlock(context, settings);\r\n this.initBackToTop(context, settings);\r\n this.initAuthorReadMore(context, settings);\r\n this.initTeaserListBorder(context, settings);\r\n this.initCommonExternalLink(context, settings);\r\n this.initSummaryMobile(context, settings);\r\n this.initRessourceModal(context, settings);\r\n this.initCarouselCards(context, settings);\r\n this.initImageMap(context, settings);\r\n this.initHeaderHubMenu(context, settings);\r\n this.initFooterHubMobile(context, settings);\r\n this.initSliderParallax(context, settings);\r\n this.initParagraphParallax(context, settings);\r\n this.initGalaxyMenu(context, settings);\r\n this.initSearchHeader(context, settings);\r\n this.initSearchFilters(context, settings);\r\n this.initMapListMobile(context, settings);\r\n this.initMapSizeMobile(context, settings);\r\n this.initFilterAlphabetical(context, settings);\r\n this.initFilterSearch(context, settings);\r\n this.initAudioPlayers(context, settings);\r\n this.initEventParagraph(context, settings);\r\n this.initMultiSelect(context, settings);\r\n this.initwebformScrollUp(context, settings);\r\n this.initmobileShare(context, settings);\r\n this.initHubMenuSlider(context, settings);\r\n this.initNavSlider(context, settings);\r\n },\r\n\r\n initSliderMediaFull: function (context, settings) {\r\n // .once('SliderMediaFullBehaviors')\r\n $('.js-slider-full', context).each(function () {\r\n if ($(this).children().length > 1) {\r\n $(this).slick({\r\n speed: 300,\r\n slidesToShow: 1,\r\n dots: true,\r\n arrows: false,\r\n infinite: true,\r\n adaptiveHeight: false,\r\n });\r\n }\r\n });\r\n },\r\n\r\n initMediaSlider: function (context, settings) {\r\n const slider = $('.slider-medias', context);\r\n\r\n slider.each(function () {\r\n const next = $(this).parent().find('.next');\r\n const prev = $(this).parent().find('.previous');\r\n const $countSpan = $(this).parent().find('.slider-nav .count');\r\n let $slideNum = $(this).find('>.field__item').length;\r\n\r\n $('.carousel-button').on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n\r\n $(slider).on('init', function (event, slick) {\r\n let $count = (1) + '/' + ($slideNum);\r\n $countSpan.text($count);\r\n });\r\n\r\n $(this).slick({\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n prevArrow: prev,\r\n nextArrow: next,\r\n infinite: false,\r\n autoplay: true,\r\n autoplaySpeed: 3000\r\n });\r\n\r\n $(this).on(\"afterChange\", function (event, slick, currentSlide) {\r\n let $count = (slick.currentSlide + 1) + '/' + (slick.slideCount);\r\n $countSpan.text($count);\r\n });\r\n });\r\n },\r\n\r\n initCarouselCards: function(context, settings) {\r\n let slidesToShowVal= 4 ;\r\n let slidesToShowValxl= 4 ;\r\n let slidesToShowVallg= 3 ;\r\n let slidesToShowValmd= 2 ;\r\n let slidesToShowValsm= 1 ;\r\n $('.carousel-cards').each(function() {\r\n let attr = $(this).attr('data-slidestoshow');\r\n if (typeof attr !== 'undefined' && attr !== false) {\r\n slidesToShowVal= attr ;\r\n }\r\n let attrxl = $(this).attr('data-slidestoshow-xl');\r\n if (typeof attrxl !== 'undefined' && attrxl !== false) {\r\n slidesToShowValxl= attrxl ;\r\n }\r\n let attrlg = $(this).attr('data-slidestoshow-lg');\r\n if (typeof attrlg !== 'undefined' && attrlg !== false) {\r\n slidesToShowVallg= attrlg ;\r\n }\r\n let attrmd = $(this).attr('data-slidestoshow-md');\r\n if (typeof attrlmd !== 'undefined' && attrmd !== false) {\r\n slidesToShowValmd= attrmd ;\r\n }\r\n let attrsm = $(this).attr('data-slidestoshow-sm');\r\n if (typeof attrlsm !== 'undefined' && attrsm !== false) {\r\n slidesToShowValsm= attrsm ;\r\n }\r\n /* breakpoint drupal sm: 576px, md: 768px, lg: 992px, xl: 1200px,*/\r\n $(this).children('.row').slick({\r\n speed: 300,\r\n slidesToShow: slidesToShowVal,\r\n slidesToScroll:1,\r\n infinite: true,\r\n dots: false,\r\n arrows: true,\r\n adaptiveHeight: false,\r\n variableWidth: true,\r\n responsive: [{\r\n breakpoint: 1200, // desktop XL\r\n settings: {\r\n slidesToShow: slidesToShowValxl,\r\n variableWidth: true\r\n }\r\n },\r\n {\r\n breakpoint: 992, // tablet lg\r\n settings: {\r\n slidesToShow: slidesToShowVallg,\r\n variableWidth: true\r\n }\r\n },\r\n {\r\n breakpoint: 768, // tablet md\r\n settings: {\r\n slidesToShow: slidesToShowValmd,\r\n variableWidth: true\r\n }\r\n },\r\n {\r\n breakpoint: 576, // mobile sm\r\n settings: {\r\n slidesToShow: slidesToShowValsm,\r\n variableWidth: false\r\n }\r\n }\r\n ]\r\n });\r\n });\r\n },\r\n\r\n initDropdownFooter: function (context, settings) {\r\n function dropdownClick() {\r\n let dropdownTitle = $('footer .footer .nav-item .dropdown-toggle', context);\r\n\r\n dropdownTitle.unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).toggleClass('active-item');\r\n $(this).next('ul').slideToggle();\r\n });\r\n }\r\n\r\n let desktopWidth = 992;\r\n let initialDiff = ($(window).width() > desktopWidth) ? 1 : -1;\r\n\r\n // Responsive\r\n if ($(window).width() <= desktopWidth) {\r\n dropdownClick();\r\n }\r\n\r\n // Resize responsive & reload page if change breakpoint\r\n $(window).on('resize', function () {\r\n let win = $(window).width();\r\n let currentDiff = win - desktopWidth;\r\n if (win <= desktopWidth) {\r\n dropdownClick();\r\n }\r\n if (currentDiff * initialDiff < 0) {\r\n initialDiff *= -1;\r\n // location.reload();\r\n }\r\n });\r\n },\r\n\r\n initReportMenu: function (context, settings) {\r\n let menuCarousel = $('header .report .menu-level-1');\r\n\r\n menuCarousel.slick({\r\n slidesToShow: 4,\r\n swipeToSlide: true,\r\n autoplay: false,\r\n arrows: true,\r\n infinite: false,\r\n speed: 1500,\r\n responsive: [\r\n {\r\n breakpoint: 951,\r\n settings: {\r\n slidesToShow: 3,\r\n arrows: false,\r\n }\r\n },\r\n {\r\n breakpoint: 520,\r\n settings: 'unslick',\r\n },\r\n ]\r\n });\r\n\r\n if (!this.isMobile()) {\r\n $('.nav-link.dropdown-toggle').once().on('click', function () {\r\n menuCarousel.slick('refresh');\r\n });\r\n }\r\n },\r\n\r\n initHorizontalMenu: function (context, settings) {\r\n let menuCarousel = $('header .horizontal .menu-level-1');\r\n\r\n menuCarousel.slick({\r\n slidesToShow: 4,\r\n swipeToSlide: true,\r\n autoplay: false,\r\n arrows: true,\r\n infinite: false,\r\n speed: 1500,\r\n responsive: [\r\n {\r\n breakpoint: 951,\r\n settings: {\r\n slidesToShow: 3,\r\n arrows: false,\r\n }\r\n },\r\n {\r\n breakpoint: 520,\r\n settings: 'unslick',\r\n },\r\n ]\r\n });\r\n\r\n if (!this.isMobile()) {\r\n $('.nav-link.dropdown-toggle').once().on('click', function () {\r\n menuCarousel.slick('refresh');\r\n });\r\n }\r\n },\r\n\r\n initResponsiveMenu: function (context, settings) {\r\n let menuBurger = $('.navbar-toggler');\r\n let parentItem = $('header .menu-level-0 > .nav-item > .dropdown-toggle');\r\n let siteName = $('.js-site-name');\r\n var self = this;\r\n\r\n menuBurger.on('click', function () {\r\n $('html, body').toggleClass('menu-open').removeClass('galaxy-menu-open');\r\n $('body').removeClass('parent-menu-open');\r\n $('.active-galaxy-tab').removeClass('active-galaxy-tab');\r\n $('.submenu-open').removeClass('submenu-open');\r\n $('.menu--galaxy-menu .popin').addClass('hidden');\r\n self.closeSearchDropDown();\r\n });\r\n\r\n parentItem.on('click', function () {\r\n $('body').toggleClass('parent-menu-open');\r\n });\r\n\r\n if (siteName.length >= 1 && window.innerWidth < 992) {\r\n let siteNameHeight = siteName[1].offsetHeight;\r\n let headerHeight = 72 + siteNameHeight;\r\n\r\n $( '').appendTo('head');\r\n }\r\n },\r\n\r\n initDropdownMenu: function (context, settings) {\r\n let dropdownLink = $('.navbar .dropdown-toggle');\r\n\r\n dropdownLink.on('click', function (e) {\r\n e.preventDefault();\r\n dropdownLink.not(this).parent().removeClass('show');\r\n dropdownLink.not(this).parent().find('.dropdown-menu').fadeOut();\r\n $(this).parent().toggleClass('show');\r\n $(this).parent().find('.dropdown-menu').fadeToggle();\r\n });\r\n\r\n $('body').on('click', function (e) {\r\n if (!dropdownLink.is(e.target) && dropdownLink.parent().has(e.target).length === 0 && dropdownLink.parent().find('.dropdown-menu').has(e.target).length === 0) {\r\n $('.dropdown-menu').parent().removeClass('show');\r\n $('body').removeClass('parent-menu-open');\r\n dropdownLink.parent().find('.dropdown-menu').fadeOut();\r\n }\r\n });\r\n },\r\n\r\n initStickyHeader: function (context, settings) {\r\n const header = $('header');\r\n if (header.length == 0) {\r\n return;\r\n }\r\n let toolbarHeight = header.offset().top;\r\n let headerHeight = header.outerHeight() + toolbarHeight;\r\n\r\n if ($('.transparent-header .pre_header').length > 0) {\r\n headerHeight = headerHeight + $('.transparent-header .pre_header').outerHeight();\r\n }\r\n\r\n $(window).scroll(function () {\r\n if ($(window).scrollTop() > headerHeight) {\r\n $('body').addClass('header-sticky');\r\n $('body:not(.transparent-header)').css('padding-top', headerHeight);\r\n\r\n } else {\r\n $('body').removeClass('header-sticky').removeAttr('style');\r\n }\r\n });\r\n },\r\n\r\n initDisplaySeeMore: function (context, settings) {\r\n $(window).on('load', function () {\r\n\r\n $('.display-see-more', context).each(function () {\r\n let image = $(this).find('.wrapper-image');\r\n let imageHeight = 300;\r\n let content = $(this).find('.wrapper-infos');\r\n let contentHeight = content.outerHeight(true);\r\n\r\n if (image.length > 0) {\r\n imageHeight = $(this).find('img').outerHeight(true);\r\n }\r\n\r\n let multiLine = ~~(imageHeight / 40);\r\n\r\n if (contentHeight >= imageHeight) {\r\n content.wrapInner('
');\r\n content.append('');\r\n\r\n content.children('.btn-display-more').on('click', function () {\r\n $(this).toggleClass('is-active');\r\n if ($(this).hasClass('is-active')) {\r\n $(this).prev().css({\r\n 'max-height': contentHeight,\r\n '-webkit-line-clamp': 'initial'\r\n });\r\n $(this).text(Drupal.t('Read less'));\r\n } else {\r\n $(this).prev().css('max-height', (imageHeight - 32));\r\n $(this).prev().delay(600).queue(function (next) {\r\n $(this).css('-webkit-line-clamp', '' + multiLine + '');\r\n next();\r\n });\r\n $(this).text(Drupal.t('Read more'));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n },\r\n\r\n initIframeCustomHeight: function (context, settings) {\r\n let iframeParagraph = $('.paragraph--type--iframe');\r\n\r\n iframeParagraph.each(function () {\r\n let desktop = $(this).attr('data-height') ? $(this).attr('data-height') : 0;\r\n let mobile = $(this).attr('data-height-mobile') ? $(this).attr('data-height-mobile') : desktop;\r\n let tablet = $(this).attr('data-height-tablet') ? $(this).attr('data-height-tablet') : mobile;\r\n let eq = $(this).parent().index();\r\n $(this).addClass('iframe' + eq);\r\n\r\n $('head').append('');\r\n });\r\n },\r\n\r\n initWebformEmbedIframe: function (context, settings) {\r\n // Resize iframe.\r\n let iframeWebFormParagraph = $('.iframe-webform');\r\n if (iframeWebFormParagraph.length == 0) {\r\n return;\r\n }\r\n window.onmessage = function (e) {\r\n if (e.data.hasOwnProperty(\"frameHeight\")) {\r\n iframeWebFormParagraph[0].style.height = \"\".concat(e.data.frameHeight + 30, \"px\");\r\n }\r\n };\r\n },\r\n\r\n initDropdownParagraph: function (context, settings) {\r\n let dropdown = $('.js-dropdown', context);\r\n\r\n dropdown.once('dropdownBehaviors').each(function () {\r\n $(this).append('');\r\n\r\n let dropdownBtn = $(this).find('.btn-primary');\r\n\r\n dropdownBtn.unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).toggleClass('active');\r\n $(this).prev().slideToggle();\r\n\r\n if ($(this).hasClass('active')) {\r\n $(this).find('span').text(Drupal.t('Read less'));\r\n } else {\r\n $(this).find('span').text(Drupal.t('Read more'));\r\n }\r\n });\r\n });\r\n },\r\n\r\n initDropdownDocument: function (context, settings) {\r\n const dropdownDocument = $('.dropdown .dropdown-toggle', context);\r\n\r\n $(document).on('click', function () {\r\n dropdownDocument.next('.dropdown-menu').removeClass('show');\r\n });\r\n\r\n dropdownDocument.on('click', function (e) {\r\n e.stopPropagation();\r\n $(this).next('.dropdown-menu').addClass('show');\r\n });\r\n },\r\n\r\n initSequencedBlock: function (context, settings) {\r\n let sequencedContainer = $('.sequenced-block');\r\n let sequencedLink = sequencedContainer.find('li');\r\n let limit = 5;\r\n let more = 0;\r\n\r\n sequencedLink.each(function (index) {\r\n if (index >= limit) {\r\n $(this).hide();\r\n more++;\r\n }\r\n });\r\n\r\n sequencedContainer.find('.sequenced-see-more').on('click', function () {\r\n sequencedLink.each(function () {\r\n $(this).show();\r\n });\r\n sequencedContainer.find('.sequenced-see-less').show();\r\n $(this).hide();\r\n });\r\n sequencedContainer.find('.sequenced-see-less').on('click', function () {\r\n sequencedLink.each(function (index) {\r\n if (index >= limit) {\r\n $(this).hide();\r\n }\r\n });\r\n sequencedContainer.find('.sequenced-see-more').show();\r\n $(this).hide();\r\n });\r\n },\r\n\r\n initRelatedItemsBlock: function (context, settings) {\r\n let relatedItemsContainer = $('.content-tags');\r\n let relatedLink = relatedItemsContainer.find('li');\r\n let limit = 5;\r\n let more = 0;\r\n\r\n relatedLink.each(function (index) {\r\n if (index >= limit) {\r\n $(this).hide();\r\n more++;\r\n }\r\n });\r\n\r\n relatedItemsContainer.find('.js-trigger-see-more').parent('li').show();\r\n\r\n relatedItemsContainer.find('.js-trigger-see-more').on('click', function () {\r\n relatedLink.each(function () {\r\n $(this).show();\r\n });\r\n $(this).hide();\r\n });\r\n },\r\n\r\n initBackToTop: function (context, settings) {\r\n const backToTopTrigger = $(\"#back-top\", context);\r\n\r\n // Fade in and out #back-top.\r\n $(window).scroll(function () {\r\n if (400 < $(window).scrollTop()) {\r\n backToTopTrigger.fadeIn();\r\n } else {\r\n backToTopTrigger.fadeOut();\r\n }\r\n });\r\n\r\n // Scroll body to 0px on click.\r\n backToTopTrigger.on(\"click\", \"a\", function (e) {\r\n e.preventDefault();\r\n $(\"body,html\").animate({scrollTop: 0}, 0);\r\n $(\":focus\").blur();\r\n });\r\n },\r\n\r\n initAuthorReadMore: function (context, settings) {\r\n let maxLength = 150;\r\n let authorText = $(\".vocabulary-people.full .rich-text p\");\r\n\r\n authorText.each(function () {\r\n let myStr = $(this).text();\r\n\r\n if ($.trim(myStr).length > maxLength) {\r\n let newStr = myStr.substring(0, maxLength);\r\n let removedStr = myStr.substring(maxLength, $.trim(myStr).length);\r\n $(this).empty().html(newStr);\r\n $(this).append('' + Drupal.t('Read more') + '');\r\n $(this).append('' + removedStr + '');\r\n }\r\n });\r\n\r\n $(\".btn-read-more\").click(function () {\r\n $(this).siblings(\".more-text\").contents().unwrap();\r\n $(this).remove();\r\n });\r\n },\r\n\r\n initTeaserListBorder: function (context, settings) {\r\n let teaserListContainerLanding = $(\".paragraph--type--content-list-custom-landing\");\r\n let teaserListContainerArticle = $(\".paragraph--type--content-list-custom-article\");\r\n let teaserListContainer = teaserListContainerArticle && teaserListContainerLanding;\r\n\r\n teaserListContainer.each(function () {\r\n if (\r\n ($(this).children('.field--name-field-title').length === 0) &&\r\n ($(this).children('.field--name-field-description').length === 0)) {\r\n $(this).addClass('no-border');\r\n }\r\n });\r\n },\r\n\r\n initCommonExternalLink: function (context, settings) {\r\n let host = window.location.host;\r\n const matchUrl = new RegExp(\"([a-z]{2}\\.)?unesco\\.org\");\r\n const external = new RegExp(host);\r\n\r\n $('a', context).each(function () {\r\n const target = $(this)[0].href;\r\n\r\n if (target === \"#\" || target === \"/\" || (matchUrl.test(host) && matchUrl.test(target))) {\r\n return;\r\n } else if (!(external.test(target))) {\r\n $(this).attr('target', '_blank');\r\n return;\r\n }\r\n });\r\n },\r\n\r\n initSummaryMobile: function (context, settings) {\r\n function summaryClick() {\r\n let summaryTitle = $('.main-node-content .content-summary .item-list h3');\r\n summaryTitle.unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).toggleClass('active-item');\r\n $(this).next('ul').slideToggle();\r\n });\r\n }\r\n\r\n let desktopWidth = 992;\r\n if ($(window).width() <= desktopWidth) {\r\n summaryClick();\r\n }\r\n },\r\n\r\n initRessourceModal: function (context, settings) {\r\n $('body').removeClass('is-fixed');\r\n\r\n $(window).once('resourceModal-behavior').on('dialog:aftercreate', function () {\r\n let resourceModal = $('.js-resource-modal');\r\n resourceModal.each(function () {\r\n let initialSlide = $(this).attr('current-delta');\r\n\r\n $('body').addClass('is-fixed');\r\n\r\n $(this).parent().prepend(\r\n ''\r\n );\r\n\r\n $(this).slick({\r\n speed: 300,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n dots: false,\r\n infinite: true,\r\n adaptiveHeight: false,\r\n initialSlide: parseInt(initialSlide),\r\n prevArrow: $('.modal-previous'),\r\n nextArrow: $('.modal-next'),\r\n fade: true,\r\n cssEase: 'linear'\r\n });\r\n\r\n $(document).on('keydown', function (e) {\r\n if(e.keyCode == 37) {\r\n resourceModal.slick('slickPrev');\r\n }\r\n if(e.keyCode == 39) {\r\n resourceModal.slick('slickNext');\r\n }\r\n });\r\n\r\n $('.modal-close').on('click', function () {\r\n $('.ui-icon-closethick').trigger('click');\r\n $('body').removeClass('is-fixed');\r\n });\r\n });\r\n });\r\n },\r\n\r\n initImageMap: function (context, settings) {\r\n let point = $('.image-map .circle', context);\r\n let positionPoint = $('.image-map .point', context);\r\n let close = $('.image-map .point .close', context);\r\n\r\n positionPoint.each(function () {\r\n let wrapperWidth = positionPoint.next('img').get(0).naturalWidth;\r\n let wrapperHeight = positionPoint.next('img').get(0).naturalHeight;\r\n let PointLeft = $(this).css('left');\r\n let positionPointLeft = parseFloat(PointLeft);\r\n let PointTop = $(this).css('top');\r\n let positionPointTop = parseFloat(PointTop);\r\n let percentagePointLeft = positionPointLeft / wrapperWidth * 100 + '%';\r\n let percentagePointTop = positionPointTop / wrapperHeight * 100 + '%';\r\n\r\n $(this).css({\r\n 'left': percentagePointLeft,\r\n 'top': percentagePointTop\r\n });\r\n });\r\n\r\n point.on('click', function () {\r\n point.not(this).next().fadeOut();\r\n $(this).next().fadeToggle();\r\n });\r\n\r\n close.on('click', function (e) {\r\n e.preventDefault();\r\n $(this).closest('.popup').fadeToggle();\r\n });\r\n\r\n $('body', context).on('click', function (e) {\r\n if (!point.is(e.target) && point.parent().has(e.target).length === 0 && point.parent().find('.popup').has(e.target).length === 0) {\r\n point.next().fadeOut();\r\n }\r\n });\r\n },\r\n\r\n initHeaderHubMenu: function (context, settings) {\r\n let hubMenu = $('.header-hub:not(\".country, .explorer\") .hub-menu-header');\r\n let menuItem = $('.header-hub .hub-menu-header .menu-lvl1 > li.menu-item--expanded');\r\n let tabletWidth = 576;\r\n\r\n function menuDesktopFade() {\r\n menuItem.each(function () {\r\n menuItem.children().removeClass('active-item');\r\n $(this).children(':first').unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n if ($(this).next('.lvl1-wrapper').hasClass('is-visible')) {\r\n $(this).next('.lvl1-wrapper').removeClass('is-visible').css('display', 'none');\r\n $(this).removeClass('active-item');\r\n } else {\r\n menuItem.children().removeClass('active-item');\r\n $('.lvl1-wrapper').removeClass('is-visible').css('display', 'none');\r\n $(this).next('.lvl1-wrapper').css('display', 'flex').addClass('is-visible');\r\n $(this).addClass('active-item');\r\n }\r\n });\r\n });\r\n }\r\n\r\n $(document).on('click', function (e) {\r\n if(!$(e.target).is($('.hub-menu-header .menu-item--expanded')) && !$(e.target).is($('.hub-menu-header .menu-item--expanded *'))) {\r\n menuItem.children().removeClass('active-item');\r\n $('.lvl1-wrapper').removeClass('is-visible').css('display', 'none');\r\n }\r\n });\r\n\r\n function menuMobileItemSlide() {\r\n\r\n let hubHeaderTexts = $('.header-hub .hero-wrapper .header-texts');\r\n let hubHeaderMenu = $('.header-hub .hub-menu-header');\r\n\r\n hubHeaderTexts.append('');\r\n\r\n hubHeaderTexts.children('.hub-menu-btn').on('click', function () {\r\n $(this).toggleClass('is-active');\r\n hubHeaderMenu.slideToggle();\r\n });\r\n\r\n menuItem.each(function () {\r\n $(this).children(':first').unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).toggleClass('active-item');\r\n $(this).next('.lvl1-wrapper').slideToggle();\r\n });\r\n });\r\n\r\n }\r\n\r\n if (hubMenu.is(':not(:empty)')) {\r\n if ($(window).width() < tabletWidth) {\r\n menuMobileItemSlide();\r\n } else {\r\n menuDesktopFade();\r\n }\r\n }\r\n },\r\n\r\n initFooterHubMobile: function (context, settings) {\r\n function dropdownClick() {\r\n let dropdownTitle = $('.footer-hub .hub-name', context);\r\n\r\n dropdownTitle.unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).toggleClass('active-item');\r\n $(this).next('.hub-menu-footer').slideToggle();\r\n });\r\n }\r\n\r\n let desktopWidth = 992;\r\n\r\n // Responsive\r\n if ($(window).width() <= desktopWidth) {\r\n dropdownClick();\r\n }\r\n\r\n },\r\n\r\n initSliderParallax: function (context, settings) {\r\n\r\n const $sliders = $('.slider-parallax');\r\n\r\n for (let index = 0; index < $sliders.length; index++) {\r\n const slider = $sliders[index];\r\n const $slider = $(slider);\r\n const $items = $('.slider-parallax__item', slider);\r\n const nbSlides = $items.length;\r\n const slideDuration = nbSlides > 1 ? nbSlides * 100 : 0.1;\r\n const Drupal = window.Drupal || { t : e => e };\r\n $slider.prepend('');\r\n const $btnSkip = $slider.find('.slider-parallax__button');\r\n $slider.after('');\r\n const $scroll = $slider.next('.slider-parallax__scroll');\r\n\r\n $btnSkip.on('click', function () {\r\n $scroll[0].scrollIntoView({behavior: \"smooth\", block: \"start\"});\r\n });\r\n\r\n const wipeAnimation = new TimelineMax()\r\n .staggerTo($items, 1, {\r\n onUpdateParams: [\"{self}\"],\r\n onUpdate: (e) => {\r\n\r\n const { target } = e;\r\n const index = [...target.parentElement.children].indexOf(target) + 1;\r\n const total = target.parentElement.children.length;\r\n const maxTime = e.duration();\r\n const time = e.time();\r\n const half = maxTime / 2;\r\n\r\n /* hide slide if progress > 50% */\r\n if(nbSlides > 1 && time > half) {\r\n target.classList.add('-hide');\r\n\r\n if(index === 1) {\r\n $btnSkip.addClass('-show');\r\n }\r\n }\r\n\r\n /* show slide if progress < 50% */\r\n if(nbSlides > 1 && time < half) {\r\n target.classList.remove('-hide');\r\n\r\n if(index === 1) {\r\n $btnSkip.removeClass('-show');\r\n }\r\n }\r\n\r\n /* hide skip button if exit slider whith down scroll */\r\n if(nbSlides > 1 && index === total && time >= 1) {\r\n $btnSkip.removeClass('-show');\r\n }\r\n\r\n /* whow skip button if enter slider whit up scroll */\r\n if(nbSlides > 1 && index === total && time < 1) {\r\n $btnSkip.addClass('-show');\r\n }\r\n\r\n },\r\n }, 1);\r\n\r\n new ScrollMagic.Scene({\r\n triggerElement: slider,\r\n triggerHook: 0,\r\n duration: slideDuration+\"%\",\r\n })\r\n .setTween(wipeAnimation)\r\n .setPin(slider)\r\n .addTo(new ScrollMagic.Controller());\r\n }\r\n\r\n },\r\n\r\n initParagraphParallax: function (context, settings) {\r\n var parallaxItem = $('.js-parallax', context);\r\n\r\n $(window).scroll(function () {\r\n parallaxItem.each(function () {\r\n var difference = $(window).scrollTop() - $(this).offset().top;\r\n var half = (difference / 2) + 'px';\r\n var transform = 'translate3d( 0, ' + half + ',0)';\r\n\r\n $(this).find('img').css('transform', transform);\r\n\r\n });\r\n });\r\n },\r\n\r\n initGalaxyMenu: function (context, settings) {\r\n const alertBanner = $('#block-unescoalertbanner', context);\r\n const galaxyButton = $('.block-menu--popin .button-galaxy', context);\r\n const galaxyButtonMobile = $('.button-text-mobile', context);\r\n const galaxyPopin = $('.menu--galaxy-menu .popin', context);\r\n const ongletLink = $('.menu--galaxy-menu nav > ul > li > .dropdown-toggle, .menu--galaxy-menu nav .vocabulary--websites >.title');\r\n const searchInput = $('.vocabulary--websites .dynamic-search', context);\r\n const websiteTaxo = $('.vocabulary--websites .taxonomy-term');\r\n\r\n galaxyButton.on('click', function () {\r\n galaxyPopin.removeClass('hidden');\r\n if (alertBanner.length) {\r\n alertBanner.addClass('hidden');\r\n }\r\n $('html, body').addClass('galaxy-menu-open');\r\n\r\n if (window.innerWidth >= 992) {\r\n ongletLink.eq(0).parent().addClass('active-galaxy-tab');\r\n } else {\r\n $('html, body').addClass('menu-open');\r\n $('#navbarNav').addClass('show');\r\n }\r\n });\r\n\r\n galaxyButtonMobile.on('click', function () {\r\n galaxyPopin.addClass('hidden');\r\n $('.active-galaxy-tab').removeClass('active-galaxy-tab');\r\n $('.submenu-open').removeClass('submenu-open');\r\n });\r\n\r\n galaxyPopin.find('.top .close-popin').on('click', function () {\r\n galaxyPopin.addClass('hidden');\r\n if (alertBanner.length) {\r\n alertBanner.removeClass('hidden');\r\n }\r\n $('html, body').removeClass('galaxy-menu-open');\r\n $('.active-galaxy-tab').removeClass('active-galaxy-tab');\r\n clearInput();\r\n });\r\n\r\n ongletLink.unbind('click');\r\n\r\n ongletLink.on('click', function (e) {\r\n e.preventDefault();\r\n $('.active-galaxy-tab').not($(this).parent()).removeClass('active-galaxy-tab');\r\n $(this).closest('.popin').toggleClass('submenu-open');\r\n\r\n if (window.innerWidth >= 992) {\r\n $(this).parent().addClass('active-galaxy-tab');\r\n } else {\r\n $(this).parent().toggleClass('active-galaxy-tab');\r\n }\r\n });\r\n\r\n function clearInput() {\r\n $('.search-in-progress').removeClass('search-in-progress');\r\n searchInput.val(\"\");\r\n $('.wrapper-websites').removeClass('search-in-progress');\r\n }\r\n\r\n searchInput.on('keyup change click', function () {\r\n let searchTerm = $(this).val().toLowerCase();\r\n\r\n $(document).find('.wrapper-websites').addClass('search-in-progress');\r\n $('.vocabulary--websites .right').addClass('show');\r\n\r\n if (searchTerm == \"\") {\r\n clearInput();\r\n }\r\n\r\n websiteTaxo.each(function () {\r\n let searchKeyTitle = $(this).find('.title').text().toLowerCase();\r\n let searchKeyDesc = $(this).find('.field--name-description *').text().toLowerCase();\r\n\r\n if ((searchKeyTitle.indexOf(searchTerm) > -1 || searchKeyDesc.indexOf(searchTerm) > -1) && searchTerm != \"\") {\r\n $(this).addClass('match');\r\n } else {\r\n $(this).removeClass('match');\r\n }\r\n });\r\n });\r\n },\r\n\r\n initSearchHeader: function (context, settings) {\r\n var $dropdown = $('.unesco-search--dropdown');\r\n\r\n if ($dropdown.length) {\r\n var $overlay = $('.unesco-search--overlay');\r\n var $closeBtn = $('.unesco-search--close');\r\n\r\n $('.js-search-menu-trigger').once('header-search').on('click', function(e) {\r\n e.preventDefault();\r\n var position = $('header').offset().top + $('header').outerHeight();\r\n\r\n $('html, body').animate({scrollTop: 0}, 'fast', 'swing', function () {\r\n $('html').css('overflow', 'hidden');\r\n $dropdown.css('top', position + 'px');\r\n $overlay.css('top', position + 'px');\r\n $dropdown.addClass('active');\r\n });\r\n\r\n });\r\n\r\n $overlay.once('header-search').on('click', this.closeSearchDropDown);\r\n $closeBtn.once('header-search').on('click', this.closeSearchDropDown);\r\n }\r\n },\r\n\r\n // Used $(document) to fix issues when user is logged in\r\n initSearchFilters: function (context, settings) {\r\n let toggleFacets = $(document).find('.toggle-facets', context);\r\n let toggleMoreFacets = $(document).find('.toggle-more-facets', context);\r\n let desktopWidth = 992;\r\n\r\n if ($(window).width() >= desktopWidth) {\r\n let wrapperFilter = $('.wrapper-facets', context);\r\n let sliderFilterUsed = wrapperFilter.find('.filter-used-wrapper');\r\n if (sliderFilterUsed.outerWidth(true) >= wrapperFilter.outerWidth(true) - 100) {\r\n sliderFilterUsed.parent().css('width', 'calc(100% - ' + toggleFacets.outerWidth(true) + 'px)');\r\n sliderFilterUsed.slick({\r\n speed: 300,\r\n dots: false,\r\n arrows: true,\r\n variableWidth: true,\r\n infinite: true\r\n });\r\n }\r\n }\r\n\r\n toggleFacets.on('click', function (e) {\r\n e.preventDefault();\r\n $(this).toggleClass('active');\r\n $(this)\r\n .parents('.wrapper-facets')\r\n .toggleClass('active')\r\n .find('.facets-list')\r\n .slideToggle(300, \"swing\");\r\n });\r\n\r\n toggleMoreFacets.unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n $(this).parent().prev('.facets-more').find('.block-facets:not(.hidden)').fadeToggle();\r\n $(this).toggleClass('less');\r\n });\r\n\r\n $(document).on('click', '.block-facets .facet-label', function (e) {\r\n e.preventDefault();\r\n $(document).find('.facet-label').not($(this)).removeClass('active').next().slideUp();\r\n $(this).toggleClass('active').next().slideToggle(300, \"swing\");\r\n\r\n let searchAutoComplete = $(this).next('.wrapper-facet-checkbox-search').children('.search-autocomplete');\r\n\r\n searchAutoComplete.find('input').on(\"keyup\", function () {\r\n let value = $(this).val().toLowerCase();\r\n let listAutoComplete = searchAutoComplete.next().find('.js-facets-checkbox-links li');\r\n listAutoComplete.filter(function () {\r\n $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);\r\n });\r\n });\r\n\r\n searchAutoComplete.find('input').bind(\"keypress\", function (e) {\r\n if (e.keyCode == 13) {\r\n return false;\r\n }\r\n });\r\n });\r\n\r\n let submitDate = $('.facet-daterange .form-submit', context);\r\n submitDate.unbind('click').on('click', function (e) {\r\n e.preventDefault();\r\n let dateFrom = $('.facet-daterange #date_from', context);\r\n let dateTo = $('.facet-daterange #date_to', context);\r\n let url = new URL(window.location);\r\n let search_params = url.searchParams;\r\n let val_date_from = dateFrom.val();\r\n let val_date_to = dateTo.val();\r\n // Date from\r\n if (val_date_from) {\r\n if (search_params.has('date_from')) {\r\n search_params.set('date_from', val_date_from);\r\n }\r\n else {\r\n search_params.append('date_from', val_date_from);\r\n }\r\n }\r\n else {\r\n if (search_params.has('date_from')) {\r\n search_params.delete('date_from');\r\n }\r\n }\r\n\r\n // Date to\r\n if (val_date_to) {\r\n if (search_params.has('date_to')) {\r\n search_params.set('date_to', val_date_to);\r\n }\r\n else {\r\n search_params.append('date_to', val_date_to);\r\n }\r\n }\r\n else {\r\n if (search_params.has('date_to')) {\r\n search_params.delete('date_to');\r\n }\r\n }\r\n\r\n url.search = search_params.toString();\r\n window.location.replace(url.toString());\r\n });\r\n\r\n let sortBy = $('.form-item-sort-by', context);\r\n if (sortBy.length) {\r\n let button = sortBy.siblings('.form-actions').find('.form-submit');\r\n button.hide();\r\n sortBy.find('select').change(function () {\r\n button.click();\r\n });\r\n }\r\n },\r\n\r\n initMapListMobile: function (context, settings) {\r\n function explorerMapListMobile() {\r\n let explorerMapList = $('#explorer .map-list .tab-content .tab-pane', context);\r\n\r\n explorerMapList.each(function () {\r\n let item = $(this).children().not('.hidden');\r\n let count = item.length;\r\n let limit = 4;\r\n let more = 0;\r\n\r\n if (count > limit) {\r\n\r\n $(this).append('');\r\n item.each(function (index) {\r\n if (index >= limit) {\r\n $(this).addClass('is-hide');\r\n more++;\r\n }\r\n });\r\n\r\n $(this).find('.btn-load-more').on('click', function () {\r\n item.each(function () {\r\n $(this).removeClass('is-hide');\r\n });\r\n $(this).hide();\r\n });\r\n\r\n }\r\n\r\n });\r\n }\r\n\r\n let desktopWidth = 992;\r\n if ($(window).width() <= desktopWidth) {\r\n explorerMapListMobile();\r\n }\r\n },\r\n\r\n initMapSizeMobile: function (context, settings) {\r\n function explorerMapListMobile() {\r\n let explorerMap = $('.js-explore-map', context);\r\n\r\n explorerMap.removeClass('fullscreen').prepend('fullscreen');\r\n let btnFullscreenMap = $('.js-explore-map .round-fullscreen');\r\n\r\n btnFullscreenMap.on('click', function () {\r\n $(this).children().text(function (i, text) {\r\n return text === \"fullscreen\" ? \"fullscreen_exit\" : \"fullscreen\";\r\n });\r\n $(this).parent().toggleClass('fullscreen');\r\n });\r\n }\r\n\r\n let desktopWidth = 992;\r\n if ($(window).width() <= desktopWidth) {\r\n explorerMapListMobile();\r\n }\r\n },\r\n\r\n initFilterAlphabetical: function (context, settings) {\r\n let explorer = $('#explorer', context);\r\n let alphabeticalItem = explorer.find('.alphabetical-filter li');\r\n let mapWrapper = explorer.find('.map-wrapper');\r\n\r\n alphabeticalItem.on('click', function () {\r\n let letter = $(this).text()[0];\r\n if ($(this).hasClass('active')) {\r\n $(this).removeClass('active');\r\n $('.list-wrapper').children().removeClass('hidden-by-letter');\r\n } else {\r\n alphabeticalItem.removeClass('active');\r\n $(this).addClass('active');\r\n $('.list-wrapper').children().removeClass('hidden-by-letter').not('.hidden').filter(function () {\r\n return $(this).attr('data-letter') != letter;\r\n }).addClass('hidden-by-letter');\r\n }\r\n\r\n if (mapWrapper.length) {\r\n Drupal.unescoMap.updateMap(explorer);\r\n }\r\n });\r\n },\r\n\r\n initFilterSearch: function (context, settings) {\r\n const input = $('.hubslist .dynamic-search', context);\r\n const results = $('.hubslist .list-wrapper .node--type-hub', context);\r\n\r\n function updateInput(element) {\r\n let search = element.val().toLowerCase();\r\n if (search == \"\") {\r\n input.val(\"\");\r\n }\r\n\r\n results.each(function () {\r\n const textWrapper = $(this).find('.text-wrapper');\r\n let keyTitle = textWrapper.find('.title').text().toLowerCase();\r\n let keyTermLabel = textWrapper.find('.term-universe').text().toLowerCase();\r\n\r\n if (search != \"\" && (keyTitle.indexOf(search) > -1 || keyTermLabel.indexOf(search) > -1)) {\r\n $(this).removeClass('unmatch');\r\n } else {\r\n $(this).addClass('unmatch');\r\n }\r\n });\r\n }\r\n\r\n input.on('keyup change click', function () {\r\n const element = $(this);\r\n setTimeout(function () {\r\n updateInput(element);\r\n }, 500);\r\n });\r\n },\r\n\r\n initAudioPlayers: function (context, settings) {\r\n\r\n function mediaAudio() {\r\n const playersWrapper = $('.media--type-audio, .media--type-audio-radio', context);\r\n playersWrapper.each(function () {\r\n const parent = $(this);\r\n const cover = parent.find('.field--name-field-media-image');\r\n const icons = parent.find('.icons--audio .material-icons-sharp');\r\n const player = parent.find('.field--name-field-media-audio-file audio, .audio-embed iframe');\r\n if (!player.length) {\r\n return;\r\n }\r\n\r\n const audio = player[0];\r\n let duration;\r\n let reset = false;\r\n\r\n function format(time) {\r\n const hrs = ~~(time / 3600);\r\n const min = ~~((time % 3600) / 60);\r\n const sec = ~~time % 60;\r\n\r\n let ret = \"\";\r\n if (hrs > 0) {\r\n ret += \"\" + hrs + \":\" + (min < 10 ? \"0\" : \"\");\r\n }\r\n ret += \"\" + min + \":\" + (sec < 10 ? \"0\" : \"\");\r\n ret += \"\" + sec;\r\n\r\n return ret;\r\n }\r\n\r\n // audio.addEventListener('loadedmetadata', function () { console.log('loadedmetadata'); });\r\n audio.addEventListener('loadeddata', function () {\r\n duration = audio.duration;\r\n cover.prepend(' ');\r\n cover.append('