{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@glidejs/glide/dist/glide.js","helpers/InsertPageView.ts","helpers/addToCalendar.ts","helpers/calendarURLs.ts","helpers/copyToClipboard.ts","helpers/favourites.ts","helpers/formatDate.ts","helpers/formatTime.ts","helpers/isFavourite.ts","helpers/isUserLoggedIn.ts","library/components/articledetails/articleDetails.ts","library/components/articlelistfilters/articlelistfilters.ts","library/components/awardsAccreditationsList/awardsAccreditationsList.ts","library/components/brochuresPublicationsList/brochuresPublicationsList.ts","library/components/competitionsList/competitionsList.ts","node_modules/axios/lib/adapters/xhr.js","node_modules/axios/lib/axios.js","node_modules/axios/lib/cancel/Cancel.js","node_modules/axios/lib/core/settle.js","node_modules/axios/lib/core/transformData.js","library/components/contactUs/contactUs.ts","node_modules/axios/lib/helpers/combineURLs.js","library/components/countryCodeDropdown/countryCodeDropdown.ts","bundle.js","library/components/curriculums/curriculums.ts","library/components/dateRangeFilter/dateRangeFilter.ts","library/components/digitalLibrary/digitalLibrary.ts","library/components/dropdownFilter/dropdownFilter.ts","library/components/electronicServices/electronicServices.ts","library/components/employee-access-component/employee-access-component.ts","library/components/enrichKnowledge/enrichKnowledge.ts","library/components/eventDetails/eventsDetails.ts","library/components/eventsCalendar/eventsCalendar.ts","library/components/eventsCard/eventsCard.ts","library/components/eventsList/eventsList.ts","library/components/events/events.ts","library/components/faq/faq.ts","library/components/favourites/favourites.ts","library/components/giftedCompetingList/giftedCompetingList.ts","library/components/giftedCompetingSubList/giftedCompetingSubList.ts","library/components/heading/heading.ts","library/components/hero/hero.ts","library/components/identityList/identityList.ts","library/components/imageGallery/imageGallery.ts","library/components/infographicsGallery/infographicsGallery.ts","library/components/isefComponent/isefComponent.ts","library/components/jobCard/jobCard.ts","library/components/jobDetails/jobDetails.ts","library/components/jobsList/jobsList.ts","library/components/latestNews/latestNews.ts","library/components/menuMobile/mobileMenu.ts","library/components/methodology/methodology.ts","library/components/modal/modal.ts","library/components/navbarFavourites/navbarFavourites.ts","library/components/navbar/navbar.ts","library/components/newsDetails/newsDetails.ts","library/components/newsList/newsList.ts","library/components/pagination/pagination.ts","library/components/partners/partners.ts","library/components/peopleComponent/peopleComponent.ts","library/components/policies/policies.ts","library/components/programDetails/programDetails.ts","library/components/programStats/programStats.ts","library/components/programsList/programsList.ts","library/components/quickJoin/quickJoin.ts","library/components/scientificPublications/scientificPublications.ts","library/components/searchResults/searchResults.ts","library/components/serviceDetailsSurvey/serviceDetailsSurvey.ts","library/components/serviceDetails/serviceDetails.ts","library/components/serviceList/serviceList.ts","library/components/serviceResults/serviceResults.ts","library/components/serviceTimelineThree/serviceTimelineThree.ts","library/components/serviceTimelineTwo/serviceTimelineTwo.ts","library/components/serviceTimeline/serviceTimeline.ts","library/components/singleDropdown/singleDropdown.ts","library/components/sortFilter/sortFilter.ts","library/components/starRatings/starRatings.ts","library/components/stats/stats.ts","library/components/strategicGoals/strategicGoals.ts","library/components/successStoriesDetails/successStoriesDetails.ts","library/components/successStoriesList/successStoriesList.ts","library/components/tenderList/tenderList.ts","library/components/videoGalleryDetails/videoGalleryDetails.ts","library/components/videoGallery/videoGallery.ts","library/components/videoModalCard/videoInlineCard.ts","library/components/webStats/webStats.ts","node_modules/axios/index.js","node_modules/axios/lib/cancel/CancelToken.js","node_modules/axios/lib/cancel/isCancel.js","node_modules/axios/lib/core/Axios.js","node_modules/axios/lib/core/InterceptorManager.js","node_modules/axios/lib/core/buildFullPath.js","node_modules/axios/lib/core/createError.js","node_modules/axios/lib/core/dispatchRequest.js","node_modules/axios/lib/core/enhanceError.js","node_modules/axios/lib/core/mergeConfig.js","node_modules/axios/lib/defaults.js","node_modules/axios/lib/helpers/bind.js","node_modules/axios/lib/helpers/buildURL.js","node_modules/axios/lib/helpers/cookies.js","node_modules/axios/lib/helpers/isAbsoluteURL.js","node_modules/axios/lib/helpers/isAxiosError.js","node_modules/axios/lib/helpers/isURLSameOrigin.js","node_modules/axios/lib/helpers/normalizeHeaderName.js","node_modules/axios/lib/helpers/parseHeaders.js","node_modules/axios/lib/helpers/spread.js","node_modules/axios/lib/helpers/validator.js","node_modules/axios/lib/utils.js","node_modules/axios/package.json","node_modules/process/browser.js"],"names":["f","exports","module","define","amd","window","global","self","this","Bundle","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","1","__awaiter","thisArg","_arguments","P","generator","factory","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","y","type","label","sent","trys","ops","g","verb","throw","return","Symbol","iterator","v","op","startAt","TypeError","_","perView","pop","push","__importDefault","mod","__esModule","default","axios_1","Object","defineProperty","pageId","error_1","_a","post","console","error","axios","2","calendarURLs_1","perSwipe","button","log","event_1","name","getAttribute","details","location","startsAt","endsAt","calUrls","calendarOptionsContainer_1","document","querySelector","createCalendarLink","createElement","className","appendChild","innerHTML","service","url","iconUrl","link","icon","href","target","rel","src","alt","createTextNode","buttonRect","ics","google","outlook","yahoo","getBoundingClientRect","top_1","scrollY","top","height","left","scrollX","width","closePopup_1","style","classList","add","event","contains","remove","removeEventListener","addEventListener","err","./calendarURLs","3","makeDuration","minutes","Math","floor","Date","slice","makeTime","time","toISOString","replace","makeUrl","base","query","keys","reduce","accum","key","index","encodeURIComponent","action","dates","text","rru","startdt","enddt","subject","allday","uid","getTime","toString","path","view","title","st","dur","desc","in_loc","components","URL","encodeURI","join","makeICSCalendarUrl","4","currentCulture","documentElement","navigator","clipboard","writeText","showToast","toast","textContent","toastWidth","setTimeout","removeChild","5","selector","options","arguments","id","response","data","6","dateString","direction","date","year","getUTCFullYear","monthIndex","getUTCMonth","getUTCDate","7","disable","dateStr","dir","period","hour","getHours","getMinutes","displayHour","formattedMinutes","formattedTime","padStart","8","IsFavourited","mount","thisID","pagesIds","includes","9","Number","10","calculate","copyToClipboard_1","Glide","bound","steps","shareButtons","querySelectorAll","forEach","../../../helpers/copyToClipboard","11","grid_1","filters_1","resultsnumber_1","filterCount_1","listSearchInput_1","articleCategoriesDiv_1","paginationDropdown_1","paginationLast","paginationFirst","pagination_2","radios","currentCulture_1","pageId_1","checkboxFiltersViews","articleCards_1","articleCardsAll_1","articleCategories_1","keyword_1","categories_1","views_1","sortBy_1","pageNumber_1","pageSize_1","totalPages_1","totalCount_1","hasNextPage_1","hasPreviousPage_1","buttonsToShow_1","clickedNumber_1","fetchArticleCategories_1","updateCategories_1","fetchArticles_1","fetchAllArticles_1","updateCards_1","disableInputs_1","enableInputs_1","timeout_1","updateNumberCards_1","isEnd","Promise","isOffset","undefined","move","isBound","isType","settings","calculateForwardIndex","viewSize","normalizeForwardIndex","Run","ceil","pagination_1","normalizeBackwardIndex","list","filterButton","nextPageButton","prevPageButton","payload","keyword","categories","views","sortBy","pageNumber","pageSize","hostname","port","get","card","toArray","cardElement","subCats","setAttribute","subCategories","subcard","subCardElement","count","checkboxFiltersCategories","checkbox","filter","cat","page","fCount","make","_this","items","totalPages","totalCount","hasNextPage","hasPreviousPage","error_2","setupSlides","setupWrapper","updatePaginationButtons","error_3","Sizes","slideWidth","removeClasses","image","author","category","clearTimeout","trim","radio","checkedRadioValue","filterColumn","is","addClass","filterDiv","minViews","parseInt","maxViews","article","../pagination/pagination","12","13","eventTabs_1","awardsGrid_1","awardsFilters_1","awardsListSearchInput_1","awardsTabsComponent_1","activeTab_1","awardsCards_1","awardsType_1","fetchAwards_1","modify","translate","Components","Direction","Gap","Grow","Clones","grow","Peeking","formatDate_1","awardsAccreditations","compose","property","awardsType","disabled","content","tab","getTravelDistance","travelDistance","../../../helpers/formatDate","14","Events","unbind","Binder","15","brochuresGrid_1","identityFilters_1","borchuresPublicationsListSearchInput_1","brochureCards_1","fetchBrochuresPublications_1","addCardListeners_1","prevented","Html","wrapper","bind","click","detached","borchuresPublicationsList","setArrowState","resetArrowState","fileType","description","linkTitle","16","17","favouritedIds_1","compCards_1","fetchCompetitions_1","Autoplay","enable","sortBreakpoints","points","isObject","sortKeys","EventsBinder","favourites_1","isFavourite_1","isUserLoggedIn_1","competitionsList","JSON","parse","Translate","Transition","Images","Anchors","XMLHttpRequest","username","config","timeout","handleError","request","withCredentials","requestHeaders","responseType","createInstance","Axios","prototype","create","_class","backgroundImage","linkText","opacity","zIndex","cardButtons","listCards","preventDefault","innerWidth","../../../helpers/favourites","../../../helpers/isFavourite","../../../helpers/isUserLoggedIn","18","19","transformData","headers","fns","20","countryDropdown","optionsContainer_1","searchInput_1","numberInput_1","dropdown_1","options_1","selectOption_1","phone","country","option","toLowerCase","insertAdjacentHTML","item","cloneNode","phone_code","pointerEvents","append","focus","el","toggle","searchQuery","isMatched","innerText","21","22","dateRangeFilterTrigger","dateRangeInner_1","dateRangeIcon_1","dateRangeInputs","handleDateClick_1","handleTrigger_1","closeDateRange_1","dateRange","input","showPicker","message","nextElementSibling","Element","23","digitalLibrary","digitalCards","24","filters","select","element","clickOnWrapper","search_div","buttonContainer","inputChange","deletePressed","openOptions","dropdown_icon","clickDropdown","autocomplete_list","parentNode","replaceChild","createInitialTokens","options_selected","getOptions","createToken","addPlaceholder","dropdown","selects","triggers","parentElement","trigger","handleTrigger","Event","dispatchEvent","removePlaceholder","removeAttribute","input_search","activeElement","input_val","populateAutocompleteList","event_2","tagName","event_3","stopPropagation","token","token_span","close","removeToken","autocomplete_options","all_options","options_to_show","options_return","autocomplete","result_size","li","selectOption","event_4","handleListItems","Array","from","map","dataset","value_to_remove","children","sort","hits","keyCode","charCode","tokens","last_token_x","event_5","arr","25","direction_1","eserviceTabs_1","eserviceCarouselsContainer_1","resetAll_1","showActiveItems_1","glide_1","eservicesComponent","eserviceCarousels","gap","rewind","breakpoints","1400","1100","carousel","activeTab","favButtons","dataId_1","dataIdAttr","favouritedIds","@glidejs/glide","26","27","enrichTabs_1","sections_1","addToCalendar_1","enrichKnowledge","section","accordion","firstElementChild","accordions","childAccordion","open","otherAccordion","calButtons","../../../helpers/addToCalendar","28","29","eventsCalendar","day","eventsCalendarCarousel","carouselItemsContainer_1","tabs_1","columns_1","eventsListSearchInput_1","activeItem_1","eventCalendarCards_1","dateFrom_1","dateTo_1","eventType_1","resetTabs_1","fetchEvents_1","dateFrom","dateTo","eventType","glideSettings","992","768","480","today","currentDate","getDay","diff","getDate","setDate","startOfWeek","endOfWeek","split","startMonth","endMonth","toLocaleDateString","month","buttonText","glide_2","go","eventsCalendarColumns_1","on","carouselTabs","column","searchInputValue","createCard_1","setColumnNumbers_1","columnIndex","start_Date","end_Date","0","numberContainer","numberOfCards","formattedNumber","30","31","cards","32","eventsGrid_1","eventsFilters_1","eventTabsComponent_1","eventCards_1","eventCardSettings_1","fetchEventCardSettings_1","eventsList","dateFromText","dateToText","locationText","start_Date_iso","end_Date_iso","checked","serviceListCards","33","34","eventsComponent","daysContainer_1","bulletsContainer_1","days_1","dayNumbers","eventsCarousels","eventCarouselsContainer_1","activeDay_1","eventsCarouselsArray","glide","bulletCount","num","bulletWrapper","bullets","currentIndex","bullet","activeDay","fullDate","dateParts","getDayFromDate_1","35","faqsList_1","faqFilters_1","faqSearchInput_1","dropdownFilters","singleDropdown_1","singleDropdownFilterTrigger","requestUrl_1","faqGroups_1","faqsGroup_1","beneficiaries_1","fetchFaqs_1","faq","getElementById","faqGroupKey","faqsGroup","beneficiaries","group","groupElement","subCategory","question","answer","selected","optionsContainer","MutationObserver","mutationsList","observer","_i","mutationsList_1","mutation","beneficiariesOptions_1","_loop_1","observe","childList","36","37","favouritesComponent","favouritesTabs","events","paginationDropdown","pagination","eventCards","ids","buttonsToShow","currentType","eventCardSettings","fetchEventCardSettings","TabTranslations","languageKey","showSelectedItems","handleTabClick","getEventCards","updateEventCards","addEventCardListeners","disableInputs","enableInputs","fetchCards","_b","ar","engb","alias","selectedTab","grid","display","itemId","38","39","giftedCompetingCarousels","40","41","parentNodeId_1","tableBody_1","mobileTableBody_1","giftedSubListFilters_1","giftedSubListingSearchInput_1","giftedSubListItems_1","educationDepartments_1","positions_1","projectFields_1","olympiadTypes_1","year_1","giftedSubListColumnsNames_1","fetchGiftedSubListColumnsNames_1","fetchGiftedSubList_1","updateItems_1","addMobileRow_1","createModals_1","giftedSubListing","singleDropdownPlaceholder","parentNodeId","educationDepartments","positions","projectFields","olympiadTypes","rowElement","some","studentImage","studentName","speciality","projectField","projectTitle","educationDepartment","position","specialPrize","successStoryVideoLink","find","grandPrize","successStory","modals","modalContainer","openButtonId","modalDialog","openButton","closeButton","showModal","educationDepartmentsOptions_1","positionsOptions_1","projectFieldsOptions_1","olympiadTypesOptions_1","42","43","44","slides_1","contents_1","activeSlide_1","heroLeft","heroDots_1","isTransitioning_1","animationDuration_1","activeIndex_1","animationTimer_1","minSwipeDistance_1","touchStartX_1","touchEndX_1","isMouseDown_1","handleDots_1","handleSwipeGesture_1","handleSlides_1","interval_1","startInterval_1","resetInterval_1","next_1","prev_1","updateOrder_1","tallestHeight","hero","dot","distance","abs","setInterval","clearInterval","allContents","contentHeight","offsetHeight","updateOrder","activeIndex","slides","slide","orders","slideCount","fill","prev","mountSlider","handleEvent","changedTouches","screenX","45","identityGrid_1","identityListSearchInput_1","identityCards_1","programs_1","fileTypes_1","fetchIdentity_1","identityList","programs","fileTypes","documentName","size","fileTypesOptions_1","programsOptions_1","46","47","imagesGrid_1","imagesFilters_1","imagesGallerySearchInput_1","imagesCards_1","fetchImagesGallery_1","enableModals_1","InsertPageView_1","imagesGallery","imageURL","html","overflow","../../../helpers/InsertPageView","48","49","infoGrid_1","infoFilters_1","infoGallerySearchInput_1","infoCards_1","fetchInfoGallery_1","infoGallery","otherimages","viewsText","otherImageURL","otherImageLink","childImageElement","50","51","studentsTableBody_1","studentsMobileTableBody_1","isefFilters_1","isefSearchInput_1","isefWinnersItems_1","years_1","isefWinnersTableColumnsNames_1","fetchIsefWinnersResultsList_1","isef","winnersSection","accordions_1","years","images","students","school","searchEntity","std","student","imageItem","prize","yearsOptions_1","52","53","jobCards","54","tabContents_1","jobDetails","55","jobsGrid_1","jobsFilters_1","jobsListSearchInput_1","jobCards_1","departments_1","jobCardSettings_1","fetchJobCardSettings_1","fetchJobs_1","jobsList","cardButtonText","availableText","endText","noJobsText","departments","isAvailable","department","publishDate","departmentsOptions_1","56","57","latestNewsCarousels","1000","58","mobileMenuIcon_1","mobileMenuIconContainer","mobileMenuButton","mobileMenuOverlay_1","mobileMenuClose","chevrons","html_1","openMenu_1","closeMenu_1","closeAllAccordions_1","handleAccordionClick_1","mobileMenu","acc","pan","maxHeight","panel","isActive","scrollHeight","chevron","59","60","61","initializeFavouritesNavComponent","favouritesTabComponent","favouritesButton_1","closeFavouriteDropdown_1","showSelectedTab_1","getServiceCards_1","getOtherCards_1","updateServiceCards_1","services","favouritesContents","servicesCards","targetElement","clickedElement","62","63","searchButton_1","linkItems","checkScrollPosition","closeSearchDropdown_1","navbar","64","65","Grid_1","Filters_1","ListSearchInput_1","DateFrom_1","DateTo_1","newsCards_1","userTypes_1","fetchNewsCardSettings_1","fetchNews_1","newsList","userTypes","userTypesOptions_1","66","67","createPaginationButtons","setPage","removeOldButtons","getPages","startPage","fetchEvents","paginationMultiEnd","paginationMultiStart","paginationCurrent","paginationTotal","buttons","tot","hasPrevPage","hasNext","pageNum","total","totButtons","fetchResults","offset","end","min","pages","reverse","insertAdjacentElement","68","partnersTabs_1","partnersCarouselsContainer_1","partnersComponent","partnersCarousels","hoverpause","activeTabNum","69","peopleComponent","70","policiesTabs_1","policiesSections_1","policies","71","programDetails","programDetailsCarousels","carouselType","1200","72","initializeProgramStatsComponent","webStatsComponent","programStatsTabs","programStatsContents","73","programsCards_1","fetchPrograms_1","programsList","list_1","rightContent","moreButton","links","listItem","linkURL","moreButtons_1","list_2","closeAllLists_1","moreButtons","74","75","triggerIcon_1","submitButton_1","firstSection_1","secondSection_1","thirdSection_1","userEmail_1","idInput_1","mobileNumberInput_1","emailInput_1","countryCode_1","formidInput_1","classValidation_1","programsValidation_1","idValidation_1","mobileValidation_1","emailValidation_1","dropdownFilters_1","dropdownFilterTriggers","programsDropdown_1","singleDropdownFilter","singleDropdownFilterTrigger_1","singleDropdownPlaceholder_1","autocompleLists_1","singleAutocompleLists_1","buttonContainers_1","_class_1","resetForm_1","resetValidations_1","toggleSlider_1","closeSlider_1","SendData_1","quickJoin","form","nextButtons","container","opt","dataObject","class","idNumber","countryCode","mobile","email","formid","arr2_1","76","77","publicationsAuthorsDiv_1","publicationsFileTypesDiv_1","scienceCards_1","scienceCardsAll_1","publicationsAuthors_1","publicationsFileTypes_1","authors_1","ratings_1","addPageView_1","fetchPublicationsFilters_1","updateFilters_1","fetchPublications_1","fetchAllPublications_1","starRatings_1","pageViewedId","authors","ratings","checkboxFiltersAuthors","checkboxFiltersFileTypes","error_4","isRated","rating","initStarRatings","cardId","../starRatings/starRatings","78","79","searchFilters_1","searchListingSearchInput_1","totalSearchResults_1","searchCards_1","types_1","fetchSearchResults_1","searchList","checkboxes","queryParam","results","RegExp","exec","decodeURIComponent","getParameterByName","types","tag","indexOf","splice","80","81","positiveButton_1","negativeButton_1","ratingSpan_1","SubmitPositiveAPICall_1","SubmitNegativeAPICall_1","disableButtons_1","CreateRatingCommand_1","removeEventListeners_1","infoComponent","hasRating","string","positiveRatingsCount","totalRatingsCount","82","83","feesButton_1","feeWaiverButton_1","closeFeesTooltip_1","closeWaiverTooltip_1","serviceDetails","feesTargetElement","windowScrollY","buttonRectHeight","waiverTargetElement","tooltipInnerDiv","bottom","84","servicesListingSearchInput_1","servicesFilters_1","servicesCards_1","educationalLevels_1","serviceTypes_1","serviceCardSettings_1","fetchServiceCardSettings_1","fetchServices_1","servicesListing","filterMobile","educationalLevels","serviceTypes","serviceTypeOptions_1","educationalLevelOptions_1","85","86","serviceResultsFilters_1","serviceResultsSearchInput_1","serviceResultsStudentsItems_1","serviceResultsStudentsTableColumnsNames_1","fetchServiceResultsStudentsTableColumnsNames_1","fetchServiceResultsStudentsList_1","serviceResults","eventTabsContainer","tableImagesContainer","87","88","serviceTimelineThree","String","getFormattedTime_1","89","tableRows","datesTriggers","innerTables_1","formatTime_1","serviceTimelineTwo","times","row","clientHeight","activeRow","activeRowHeight","innerTable","innerTableHeight","../../../helpers/formatTime","90","serviceTimelineGrid_1","timelineItems_1","initializeDates_1","serviceTimeline","tooltipList_1","itemElement","startDate","endDate","tooltips","tootlip","tooltipElement","educationLevel","setDates","serviceTimelineItems","monthFromElement","dayFromElement","yearFromElement","dateFromArray","tooltipDateElements","monthToElement","dayToElement","yearToElement","dateToArray","tooltipTimeElements","tool","timing","91","92","option_selected","emptyli","93","radioInputLabels","radioInputs_1","closeSortFilter_1","sortFilter","94","starRatingComponents","handleMouseOver","highlightStars","handleMouseOut","unhighlightStars","handleClick","CreateRatingCommand","disableStars","stars","star","selectStars","starRating","isUserRated","avgRating","ratingValue","totalReviews","totalRatings","previousElementSibling","unhoveredRatingValue","blur","95","96","charts","load","packages","chartwidth_1","changeChartStyles_1","chartDiv","clientWidth","setOnLoadCallback","chartData","dataArray","visualization","arrayToDataTable","theme","legend","chartArea","backgroundColor","vAxis","gridlines","color","textPosition","baselineColor","format","hAxis","bar","groupWidth","colors","chart","ColumnChart","addListener","subtree","draw","chartColumns","getElementsByTagName","chartText","rect","parseFloat","97","strategicGoal","grids_1","images_1","98","99","storiesGrid_1","storiesFilters_1","storiesListSearchInput_1","successStoriesCarousel_1","storiesCards_1","fields_1","fetchStories_1","successStoriesList","imageBulletWrapper","img","imageBullets","imageContainer","scrollLeft","scrollWidth","fields","media","viewsCount","fieldsOptions_1","openButtons","closeButtons","modal","modalCount","modalTitle","modalVideo","cardTitle","embeddedVideo","shareButtonModal","embeddedVideoCount","_c","showToastModal_1","right","closest","100","101","tendersItems_1","tendersFilters_1","tenderListSearchInput_1","tenderCards_1","tenderCardSettings_1","fetchTenders_1","tenderList","expiredText","offeringDateText","submissionDeadlineText","lastDateToReceiveQuestionsText","responseDateText","downloadButtonText","noTendersText","offeringDate","submissionDeadline","lastDateToReceiveQuestions","responseDate","pdfLink","fileUrl","102","103","videoDetails","videoPlayer","playerElement","Player","onReady","mute","playVideo","pauseVideo","seekTo","video","playButton","paused","play","controls","pause","104","videosGrid_1","videosFilters_1","videosGallerySearchInput_1","videosCards_1","fetchVideosGallery_1","CreatePlayEventListeners_1","videosGallery","videoContainer","youTubeID","formattedYoutubeVideoUrl","videoURL","mobileBreakpoint_1","videoCards","matchMedia","matches","currentTime","105","106","video_1","playButton_1","107","drawChart","chart1","LineChart","svg","defs","createElementNS","curveType","series","lineWidth","tooltip","observeVisibility","mutations","attributeName","getComputedStyle","attributes","chartDiv2","chartDiv3","initializeWebStatsComponent","webStatsTabs","webStatsContents","108","_typeof","obj","constructor","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","enumerable","configurable","writable","_createClass","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_possibleConstructorReturn","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","NewTarget","Super","_get","receiver","object","hasOwnProperty","_superPropBase","getOwnPropertyDescriptor","defaults","focusAt","autoplay","keyboard","swipeThreshold","dragThreshold","touchRatio","touchAngle","animationDuration","rewindDuration","animationTimingFunc","waitForTransition","throttle","peek","cloningRatio","classes","swipeable","dragging","ltr","rtl","slider","clone","active","arrow","nav","warn","msg","concat","toInt","isString","isFunction","isUndefined","isArray","prop","definition","mergeOptions","assign","EventsBus","hop","handler","context","emit","Glide$1","_t","_e","extensions","_name","transformers","pattern","Move","interval","_o","set","_d","status","now","func","wait","later","previous","leading","args","throttled","at","remaining","trailing","cancel","MARGIN_TYPE","siblings","node","firstChild","matched","nextSibling","nodeType","exist","HTMLElement","nodeList","TRACK_SELECTOR","listeners","closure","capture","VALID_DIRECTIONS","FLIPED_MOVEMENTS",">","<","=","Rtl","mutator","TRANSFORMERS","multiplier","Gaps","Peek","before","mutate","transformer","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","CONTROLS_SELECTOR","PREVIOUS_CONTROLS_SELECTOR","NEXT_CONTROLS_SELECTOR","k","COMPONENTS","root","track","collectSlides","_r","transform","translate3d","mozTransform","webkitTransform","getStartIndex","movement","after","startWidth","duration","transition","callback","removeClass","_v","wrapperSize","offsetWidth","reductor","len","marginLeft","marginRight","collect","_Glide$settings","cloneCount","round","prepend","max","_clone","unshift","_Components$Html","half","_i2","insertBefore","_i3","Resize","off","destroy","Build","typeClass","activeClass","sibling","_Glide$settings$class","isStart","_index","calculateBackwardIndex","_m","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","start","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","swipeDistance","swipeDeg","_Glide$settings2","threshold","unbindSwipeMove","unbindSwipeEnd","_Glide$settings3","unbindSwipeStart","_this2","_this3","dragstart","detach","draggable","attach","Controls","_n","_arrowControls","addBindings","setActive","removeActive","disableArrow","_len","lists","_key","_len2","_key2","removeBindings","elements","currentTarget","Keyboard","press","stop","Breakpoints","match","point","_inherits","subClass","superClass","_super","globalThis","109","./lib/axios","110","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","xsrfValue","requestData","isFormData","fullPath","auth","password","unescape","Authorization","btoa","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","method","toUpperCase","params","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfCookieName","read","xsrfHeaderName","val","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","abort","send","../core/buildFullPath","../core/createError","./../core/settle","./../helpers/buildURL","./../helpers/cookies","./../helpers/isURLSameOrigin","./../helpers/parseHeaders","./../utils","111","mergeConfig","defaultConfig","extend","instanceConfig","Cancel","CancelToken","isCancel","all","promises","spread","isAxiosError","./cancel/Cancel","./cancel/CancelToken","./cancel/isCancel","./core/Axios","./core/mergeConfig","./defaults","./helpers/bind","./helpers/isAxiosError","./helpers/spread","./utils","112","__CANCEL__","113","executor","resolvePromise","reason","throwIfRequested","source","./Cancel","114","115","InterceptorManager","dispatchRequest","validator","validators","interceptors","requestInterceptorChain","assertOptions","silentJSONParsing","forcedJSONParsing","synchronousRequestInterceptors","responseInterceptorChain","interceptor","runWhen","synchronous","chain","shift","newConfig","onFulfilled","onRejected","getUri","../helpers/buildURL","../helpers/validator","./InterceptorManager","./dispatchRequest","./mergeConfig","116","handlers","use","eject","fn","h","117","isAbsoluteURL","combineURLs","requestedURL","../helpers/combineURLs","../helpers/isAbsoluteURL","118","enhanceError","./enhanceError","119","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","../cancel/isCancel","../defaults","./transformData","120","toJSON","number","fileName","lineNumber","columnNumber","stack","121","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","axiosKeys","otherKeys","../utils","122","validateStatus","./createError","123","./../defaults","124","process","normalizeHeaderName","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","stringifySafely","rawValue","parser","encoder","stringify","strictJSONParsing","maxContentLength","maxBodyLength","Accept","./adapters/http","./adapters/xhr","./core/enhanceError","./helpers/normalizeHeaderName","_process","125","126","encode","parts","serializedParams","isDate","hashmarkIndex","127","relativeURL","128","write","expires","domain","secure","cookie","isNumber","toGMTString","129","test","130","131","originURL","msie","urlParsingNode","resolveURL","protocol","host","search","hash","pathname","charAt","userAgent","requestURL","parsed","132","normalizedName","133","ignoreDuplicateOf","line","134","135","pkg","deprecatedWarnings","thing","currentVerArr","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","schema","allowUnknown","./../../package.json","136","l","FormData","ArrayBuffer","isView","pipe","URLSearchParams","product","assignValue","b","str","stripBOM","charCodeAt","137","main","scripts","build","preversion","postversion","examples","coveralls","fix","repository","keywords","license","bugs","homepage","devDependencies","es6-promise","grunt","grunt-banner","grunt-cli","grunt-contrib-clean","grunt-contrib-watch","grunt-eslint","grunt-karma","grunt-mocha-test","grunt-ts","grunt-webpack","istanbul-instrumenter-loader","jasmine-core","karma","karma-chrome-launcher","karma-firefox-launcher","karma-jasmine","karma-jasmine-ajax","karma-safari-launcher","karma-sauce-launcher","karma-sinon","karma-sourcemap-loader","karma-webpack","load-grunt-tasks","minimist","mocha","sinon","terser-webpack-plugin","typescript","url-search-params","webpack","webpack-dev-server","browser","./lib/adapters/http.js","jsdelivr","unpkg","typings","dependencies","follow-redirects","bundlesize","138","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","array","noop","nextTick","env","argv","versions","once","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask"],"mappings":"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","file":"bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n }();\n\n var Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n }();\n\n function Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n }\n\n /**\n * Returns a current time.\n *\n * @return {Number}\n */\n function now() {\n return new Date().getTime();\n }\n\n /**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n }\n\n var MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n };\n function Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n }\n\n /**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n function siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n }\n /**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\n function exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n }\n /**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\n function toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n }\n\n var TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n function Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n }\n\n function Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n }\n\n function Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n }\n\n function Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n }\n\n function Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n }\n\n function Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n }\n\n var EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n }();\n\n function Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n }\n\n var VALID_DIRECTIONS = ['ltr', 'rtl'];\n var FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n };\n function Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n }\n\n /**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n }\n\n /**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n }\n\n /**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n }\n\n /**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n }\n\n function Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n }\n\n function Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n }\n\n /**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n var supportsPassive$1 = supportsPassive;\n\n var START_EVENTS = ['touchstart', 'mousedown'];\n var MOVE_EVENTS = ['touchmove', 'mousemove'];\n var END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\n var MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n function Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n }\n\n function Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n }\n\n function Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n }\n\n var NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\n var CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n var PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\n var NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\n function Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n }\n\n function Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n }\n\n function Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n }\n\n /**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\n function sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n }\n\n function Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n }\n\n var COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n };\n\n var Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n }(Glide$1);\n\n return Glide;\n\n}));\n","import axios from 'axios';\r\n\r\nconst insertPageView = async (pageId: number) => {\r\n try {\r\n const response = await axios.post(`/api/pageview?pageId=${pageId}`);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n};\r\n\r\nexport default insertPageView;\r\n","import makeUrls from './calendarURLs';\r\n\r\nexport default function addToCalendar(button: HTMLButtonElement): void {\r\n try {\r\n //const body = document.getElementsByTagName('body')[0];\r\n console.log('addToCalendar');\r\n\r\n const name = button.getAttribute('data-cal-name')!;\r\n const details = button.getAttribute('data-cal-description')!;\r\n const location = button.getAttribute('data-cal-location')!;\r\n const startsAt = button.getAttribute('data-cal-start')!;\r\n const endsAt = button.getAttribute('data-cal-end')!;\r\n\r\n const event = {\r\n name: name,\r\n details: details,\r\n location: location,\r\n startsAt: startsAt,\r\n endsAt: endsAt,\r\n };\r\n\r\n const calUrls = makeUrls(event);\r\n\r\n let calendarOptionsContainer = document.querySelector('.calendar-options') as HTMLDivElement;\r\n if (!calendarOptionsContainer) {\r\n calendarOptionsContainer = document.createElement('div');\r\n calendarOptionsContainer.className = 'calendar-options';\r\n document.body.appendChild(calendarOptionsContainer);\r\n }\r\n\r\n calendarOptionsContainer.innerHTML = '';\r\n\r\n const createCalendarLink = (service: string, url: string, iconUrl: string) => {\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.rel = 'noopener noreferrer';\r\n\r\n const icon = document.createElement('img');\r\n icon.src = iconUrl;\r\n icon.alt = `${service} icon`;\r\n\r\n link.appendChild(icon);\r\n link.appendChild(document.createTextNode(`${service}`));\r\n calendarOptionsContainer.appendChild(link);\r\n };\r\n\r\n createCalendarLink(\r\n 'Apple',\r\n calUrls.ics,\r\n 'https://upload.wikimedia.org/wikipedia/commons/f/fa/Apple_logo_black.svg'\r\n );\r\n createCalendarLink(\r\n 'Google',\r\n calUrls.google,\r\n 'https://upload.wikimedia.org/wikipedia/commons/a/a5/Google_Calendar_icon_%282020%29.svg'\r\n );\r\n createCalendarLink(\r\n 'iCal File',\r\n calUrls.ics,\r\n 'https://upload.wikimedia.org/wikipedia/commons/f/fa/Line-style-icons-calendar-black.svg'\r\n );\r\n createCalendarLink(\r\n 'Outlook.com',\r\n calUrls.outlook,\r\n 'https://upload.wikimedia.org/wikipedia/commons/9/90/Outlook.com_icon_%282012-2019%29.svg'\r\n );\r\n createCalendarLink(\r\n 'Yahoo',\r\n calUrls.yahoo,\r\n 'https://upload.wikimedia.org/wikipedia/commons/8/83/Yahoo%21_icon_%282009-2013%29.svg'\r\n );\r\n\r\n const buttonRect = button.getBoundingClientRect();\r\n const top = window.scrollY + buttonRect.top + buttonRect.height + 10;\r\n const left = window.scrollX + buttonRect.left + buttonRect.width / 2 - 150;\r\n\r\n calendarOptionsContainer.style.top = `${top}px`;\r\n calendarOptionsContainer.style.left = `${left}px`;\r\n\r\n calendarOptionsContainer.classList.add('show');\r\n\r\n // Event listener to close the popup when clicking outside\r\n const closePopup = (event: MouseEvent) => {\r\n if (\r\n !calendarOptionsContainer.contains(event.target as Node) &&\r\n !button.contains(event.target as Node) &&\r\n event.target !== button\r\n ) {\r\n console.log('closing popup');\r\n calendarOptionsContainer.classList.remove('show');\r\n document.removeEventListener('click', closePopup);\r\n }\r\n };\r\n\r\n document.addEventListener('click', closePopup);\r\n } catch (err) {\r\n console.error('Failed to add to calendar: ', err);\r\n }\r\n}\r\n","export type TCalendarEvent = {\r\n name: string;\r\n details: string | null;\r\n location: string | null;\r\n startsAt: string;\r\n endsAt: string;\r\n }\r\n \r\n const makeDuration = (event: TCalendarEvent) => {\r\n const minutes = Math.floor((+new Date(event.endsAt) - +new Date(event.startsAt)) / 60 / 1000);\r\n return `${Math.floor(minutes / 60)}:${`0${minutes % 60}`.slice(-2)}`;\r\n };\r\n \r\n const makeTime = (time: string) => new Date(time).toISOString().replace(/[-:]|\\.\\d{3}/g, '');\r\n \r\n type Query = { [key: string]: null | boolean | number | string };\r\n \r\n const makeUrl = (base: string, query: Query) => Object.keys(query).reduce(\r\n (accum, key, index) => {\r\n const value = query[key];\r\n \r\n if (value !== null) {\r\n return `${accum}${index === 0 ? '?' : '&'}${key}=${encodeURIComponent(value)}`;\r\n }\r\n return accum;\r\n },\r\n base\r\n );\r\n \r\n const makeGoogleCalendarUrl = (event: TCalendarEvent) => makeUrl('https://calendar.google.com/calendar/render', {\r\n action: 'TEMPLATE',\r\n dates: `${makeTime(event.startsAt)}/${makeTime(event.endsAt)}`,\r\n location: event.location,\r\n text: event.name,\r\n details: event.details,\r\n });\r\n \r\n const makeOutlookCalendarUrl = (event: TCalendarEvent) => makeUrl('https://outlook.live.com/owa', {\r\n rru: 'addevent',\r\n startdt: makeTime(event.startsAt),\r\n enddt: makeTime(event.endsAt),\r\n subject: event.name,\r\n location: event.location,\r\n body: event.details,\r\n allday: false,\r\n uid: new Date().getTime().toString(),\r\n path: '/calendar/view/Month',\r\n });\r\n \r\n const makeYahooCalendarUrl = (event: TCalendarEvent) => makeUrl('https://calendar.yahoo.com', {\r\n v: 60,\r\n view: 'd',\r\n type: 20,\r\n title: event.name,\r\n st: makeTime(event.startsAt),\r\n dur: makeDuration(event),\r\n desc: event.details,\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n in_loc: event.location,\r\n });\r\n \r\n const makeICSCalendarUrl = (event: TCalendarEvent) => {\r\n const components = [\r\n 'BEGIN:VCALENDAR',\r\n 'VERSION:2.0',\r\n 'BEGIN:VEVENT',\r\n `URL:${document.URL}`,\r\n `DTSTART:${makeTime(event.startsAt)}`,\r\n `DTEND:${makeTime(event.endsAt)}`,\r\n `SUMMARY:${event.name}`,\r\n `DESCRIPTION:${event.details}`,\r\n `LOCATION:${event.location}`,\r\n 'END:VEVENT',\r\n 'END:VCALENDAR',\r\n ];\r\n \r\n return encodeURI(`data:text/calendar;charset=utf8,${components.join('\\n')}`);\r\n };\r\n \r\n const makeUrls = (event: TCalendarEvent) => ({\r\n google: makeGoogleCalendarUrl(event),\r\n outlook: makeOutlookCalendarUrl(event),\r\n yahoo: makeYahooCalendarUrl(event),\r\n ics: makeICSCalendarUrl(event),\r\n });\r\n \r\n export default makeUrls;","const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\nexport default function copyLinkToClipboard(button: HTMLButtonElement): void {\r\n try {\r\n navigator.clipboard.writeText(window.location.href);\r\n showToast(button);\r\n } catch (err) {\r\n console.error('Failed to copy: ', err);\r\n }\r\n}\r\n\r\nconst showToast = (button: HTMLButtonElement) => {\r\n const toast = document.createElement('div');\r\n toast.className = 'toast';\r\n toast.textContent = currentCulture === 'ar' ? 'تم نسخ الرابط!' : 'Link copied to clipboard!';\r\n\r\n document.body.appendChild(toast);\r\n\r\n // Get button's position\r\n const buttonRect = button.getBoundingClientRect();\r\n const toastWidth = 150; // Same as the min-width in the CSS\r\n const toastHeight = 40; // Approximate height of the toast including padding\r\n\r\n // Calculate the position\r\n const top = window.scrollY + buttonRect.top - toastHeight - 10;\r\n const left = window.scrollX + buttonRect.left + (buttonRect.width / 2) - (toastWidth / 2);\r\n\r\n // Set the position\r\n toast.style.top = `${top}px`;\r\n toast.style.left = `${left}px`;\r\n\r\n // Trigger the show class to animate the toast\r\n setTimeout(() => {\r\n toast.classList.add('show');\r\n }, 100);\r\n\r\n // Remove the toast after 3 seconds\r\n setTimeout(() => {\r\n toast.classList.remove('show');\r\n setTimeout(() => {\r\n document.body.removeChild(toast);\r\n }, 500); // Match this duration to the CSS transition duration for the toast fade out\r\n }, 3000);\r\n};","/**\r\n * Toggles the presence of an favourited item in a local storage-based favourites list.\r\n * If the item is not already in the list for the specified type, it adds it;\r\n * if it is in the list, it removes it.\r\n *\r\n * @param type The category of the item to be added or removed from favourites.\r\n * @param id The unique identifier of the item to be toggled in the favourites list.\r\n */\r\nimport axios from 'axios';\r\n\r\nexport default function saveOrRemoveFavourite(type: string, id: number, button: HTMLButtonElement): void {\r\n try {\r\n axios.post(`/api/favourites?pageId=${id}&type=${type}`).then((response) => {\r\n console.log(response.data);\r\n if (response.data) {\r\n if (button != null) {\r\n button.classList.add('active');\r\n }\r\n } else {\r\n if (button != null) {\r\n button.classList.remove('active');\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n}\r\n","const formatDateString = (dateString: string) => {\r\n const months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n const monthsInArabic = [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"];\r\n const direction: string = document.querySelector(\"html\").getAttribute(\"dir\");\r\n\r\n const date = new Date(dateString);\r\n const year = date.getUTCFullYear();\r\n const monthIndex = date.getUTCMonth();\r\n const day = date.getUTCDate();\r\n\r\n let month: string = \"\";\r\n\r\n if (direction === \"rtl\") {\r\n month = monthsInArabic[monthIndex];\r\n } else {\r\n month = months[monthIndex];\r\n }\r\n\r\n return `${day} ${month} ${year}`;\r\n}\r\n\r\nexport default formatDateString;","const convertTime = (dateStr: string, dir: string) => {\r\n const date = new Date(dateStr);\r\n const hour = date.getHours();\r\n const minutes = date.getMinutes();\r\n\r\n // Determine the time period and hour in 12-hour format\r\n let period: string;\r\n let displayHour: number;\r\n\r\n if (hour >= 0 && hour < 12) {\r\n if (dir !== 'rtl') {\r\n period = 'in the morning';\r\n } else {\r\n period = 'صباحاً';\r\n }\r\n displayHour = hour === 0 ? 12 : hour;\r\n } else if (hour >= 12 && hour < 20) {\r\n if (dir !== 'rtl') {\r\n period = 'in the afternoon';\r\n } else {\r\n period = 'ظهراً';\r\n }\r\n displayHour = hour === 12 ? 12 : hour - 12;\r\n } else {\r\n if (dir !== 'rtl') {\r\n period = 'in the evening';\r\n } else {\r\n period = 'مساءً';\r\n }\r\n displayHour = hour === 12 ? 12 : hour - 12;\r\n }\r\n\r\n let formattedMinutes = '';\r\n if (minutes !== 0) {\r\n formattedMinutes = `:${minutes.toString().padStart(2, '0')}`;\r\n }\r\n\r\n const formattedTime = `${displayHour}${formattedMinutes} ${period}`;\r\n\r\n if (dir === 'rtl') {\r\n return `\\u202B${formattedTime}\\u202C`;\r\n }\r\n\r\n return formattedTime;\r\n};\r\n\r\nexport default convertTime;","const IsFavourited = (thisID: number, pagesIds: number[]) => pagesIds.includes(thisID);\r\n\r\nexport { IsFavourited };\r\n","const IsUserLoggedIn = () => Number(document.documentElement.getAttribute('login')) !== 0;\r\n\r\nexport default IsUserLoggedIn;\r\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst details: HTMLDivElement = document.querySelector('.article-detail');\r\n\r\nif (details)\r\n{\r\n const shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\n\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n }\r\n}","import {\r\n FetchArticleCardListPayload,\r\n FetchArticleCardistResponse,\r\n ArticleCard,\r\n ArticleCategory,\r\n} from './articlelistfilters.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\n\r\nconst list: HTMLDivElement = document.querySelector('.article-list-filters__wrapper');\r\nif (list) {\r\n const grid = list.querySelector('.article-list-filters__grid') as HTMLDivElement;\r\n\r\n const filters = list.querySelector('.article-list-filters__filter-content') as HTMLDivElement;\r\n const resultsnumber = list.querySelector('.article-list-filters__number') as HTMLSpanElement;\r\n const filterButton = list.querySelector('.article-list-filters__button') as HTMLButtonElement;\r\n const filterCount = list.querySelector('.article-list-filters__button-count-content') as HTMLDivElement;\r\n\r\n const listSearchInput = list.querySelector('.article-list__search-input') as HTMLInputElement;\r\n const articleCategoriesDiv = list.querySelector('.article-list-filters__categories-list') as HTMLDivElement;\r\n const nextPageButton = list.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = list.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = list.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = list.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = list.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = list.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = list.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const pageId = Number(list.getAttribute('data-id'));\r\n\r\n const checkboxFiltersViews: NodeListOf = list.querySelectorAll(\r\n '.article-list-filters__view-checkbox'\r\n );\r\n\r\n let articleCards: ArticleCard[] = [];\r\n let articleCardsAll: ArticleCard[] = [];\r\n let articleCategories: ArticleCategory[] = [];\r\n let keyword: string = '';\r\n let categories: string[] = [];\r\n let views: string[] = [];\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchArticleCategories = async () => {\r\n try {\r\n const payload: FetchArticleCardListPayload = {\r\n pageId,\r\n keyword,\r\n categories,\r\n views,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/articles/getcategories',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/articles/getcategories', payload);\r\n }\r\n\r\n articleCategories = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n updateCategories();\r\n updateNumberCards();\r\n }\r\n };\r\n\r\n const updateCategories = () => {\r\n articleCategoriesDiv.innerHTML = '';\r\n\r\n articleCategories.forEach((card: ArticleCategory) => {\r\n const cardElement = document.createElement('details');\r\n\r\n cardElement.setAttribute('open', '');\r\n cardElement.className = 'article-list-filters__details';\r\n\r\n cardElement.innerHTML = `\r\n \r\n
\r\n \"${card.title}\"\r\n\r\n ${card.title}\r\n
\r\n
\r\n
\r\n
\r\n `;\r\n\r\n const subCats = cardElement.querySelector('.article-list-filters__sub-filters') as HTMLDivElement;\r\n\r\n card.subCategories?.forEach((subcard: ArticleCategory) => {\r\n const subCardElement = document.createElement('summary');\r\n\r\n subCardElement.innerHTML = `\r\n
\r\n \r\n \r\n
\r\n `;\r\n\r\n subCats.appendChild(subCardElement);\r\n });\r\n\r\n articleCategoriesDiv.appendChild(cardElement);\r\n });\r\n\r\n const checkboxFiltersCategories: NodeListOf = list.querySelectorAll(\r\n '.article-list-filters__category-checkbox'\r\n );\r\n if (checkboxFiltersCategories.length > 0) {\r\n checkboxFiltersCategories.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n if (categories.includes(checkbox.value)) {\r\n categories = categories.filter((cat) => cat !== checkbox.value);\r\n } else {\r\n categories.push(checkbox.value);\r\n }\r\n fetchArticles();\r\n fetchAllArticles();\r\n });\r\n });\r\n }\r\n };\r\n\r\n const fetchArticles = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchArticleCardListPayload = {\r\n pageId,\r\n keyword,\r\n categories,\r\n views,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n const fCount = categories.length + views.length;\r\n filterCount.innerHTML = fCount.toString();\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/articles',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/articles', payload);\r\n }\r\n articleCards = response.data.items;\r\n if (articleCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n\r\n resultsnumber.innerHTML = response.data.totalCount;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n articleCards,\r\n fetchArticles\r\n );\r\n isLoading = false;\r\n updateCards();\r\n updateNumberCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const fetchAllArticles = async (page = null) => {\r\n const payload: FetchArticleCardListPayload = {\r\n pageId,\r\n keyword: '',\r\n categories: [],\r\n views: [],\r\n sortBy: 1,\r\n pageNumber: 1,\r\n pageSize: -1,\r\n currentCulture,\r\n };\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/articles',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/articles', payload);\r\n }\r\n articleCardsAll = response.data.items;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n grid.innerHTML = '';\r\n\r\n articleCards.forEach((card: ArticleCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'fade-in';\r\n\r\n cardElement.innerHTML = `\r\n
\r\n
\r\n
\r\n \"${card.title}\"\r\n

${card.title}

\r\n ${card.text}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n

${card.category}

\r\n
\r\n
\r\n \r\n

${card.views}

\r\n
\r\n
\r\n
\r\n
\r\n `;\r\n\r\n grid.appendChild(cardElement);\r\n });\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n filters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n filters.classList.remove('disabled');\r\n };\r\n\r\n if (checkboxFiltersViews.length > 0) {\r\n checkboxFiltersViews.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n if (views.includes(checkbox.value)) {\r\n views = views.filter((cat) => cat !== checkbox.value);\r\n } else {\r\n views.push(checkbox.value);\r\n }\r\n fetchArticles();\r\n });\r\n });\r\n }\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchArticles();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchArticles();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchArticles();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchArticles();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchArticles();\r\n });\r\n\r\n let timeout = null;\r\n listSearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = listSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchArticles();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = A-Z\r\n // 2 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = list.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchArticles();\r\n });\r\n });\r\n\r\n filterButton?.addEventListener('click', () => {\r\n const filterColumn = list.querySelector('.article-list-filters__accordions') as HTMLDivElement;\r\n if (filterColumn?.classList.contains('hidden')) {\r\n filterColumn?.classList.remove('hidden');\r\n } else {\r\n filterColumn?.classList.add('hidden');\r\n }\r\n });\r\n\r\n const initializeList = async () => {\r\n await fetchAllArticles();\r\n await fetchArticleCategories();\r\n await fetchArticles();\r\n };\r\n\r\n // Call the initialize function\r\n initializeList();\r\n\r\n // Function to update the counts\r\n const updateNumberCards = async () => {\r\n // Get all filter divs\r\n const filterDivs = document.querySelectorAll('.views-card');\r\n\r\n filterDivs.forEach((filterDiv) => {\r\n // Extract data-min and data-max values\r\n const minViews = parseInt(filterDiv.getAttribute('data-min'), 10);\r\n const maxViews = parseInt(filterDiv.getAttribute('data-max'), 10);\r\n\r\n // Count the articles within the view range\r\n const count = articleCardsAll.filter(\r\n (article) => article.views >= minViews && article.views <= maxViews\r\n ).length;\r\n\r\n // Update the span with the count\r\n const countSpan = filterDiv.querySelector('.article-list-filters__sub-filters-text-number');\r\n countSpan.textContent = count.toString();\r\n });\r\n };\r\n\r\n updateNumberCards();\r\n // const updateNumberCats = () => {\r\n // // Get all filter divs\r\n // const filterDivs = document.querySelectorAll('.subcat-card');\r\n\r\n // filterDivs.forEach(filterDiv => {\r\n // // Extract data-min and data-max values\r\n // const subcardid = filterDiv.getAttribute('data-id');\r\n\r\n // // Count the articles within the view range\r\n // console.log(articleCards);\r\n // const count = articleCards.filter(article => article.subCategoryID == subcardid).length;\r\n\r\n // // Update the span with the count\r\n // const countSpan = filterDiv.querySelector('.article-list-filters__sub-filters-text-number');\r\n // countSpan.textContent = count.toString();\r\n // });\r\n // }\r\n}\r\n","import {\r\n FetchAwardsListPayload,\r\n FetchAwardsListResponse,\r\n AwardsListCard,\r\n FetchAwardsCardSettingsResponse,\r\n} from './awardsList.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\n\r\nconst awardsAccreditations = document.querySelector('.awards-list') as HTMLDivElement;\r\n\r\nif (awardsAccreditations) {\r\n const eventTabs: NodeListOf = awardsAccreditations.querySelectorAll('.awards-list__tab');\r\n\r\n const awardsGrid = awardsAccreditations.querySelector('.awards-list__grid') as HTMLDivElement;\r\n const awardsFilters = awardsAccreditations.querySelector('.awards-list__search') as HTMLDivElement;\r\n const awardsListSearchInput = awardsAccreditations.querySelector('.awards-list__search-input') as HTMLInputElement;\r\n const nextPageButton = awardsAccreditations.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = awardsAccreditations.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = awardsAccreditations.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = awardsAccreditations.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = awardsAccreditations.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = awardsAccreditations.querySelector('.pagination') as HTMLDivElement;\r\n const awardsTabsComponent = awardsAccreditations.querySelector('.awards-list__tabs') as HTMLDivElement;\r\n const radios: NodeListOf = awardsAccreditations.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let activeTab: number = 0;\r\n\r\n let awardsCards: AwardsListCard[] = [];\r\n let keyword: string = '';\r\n let awardsType: number = 2;\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n let awardsCardSettings: FetchAwardsCardSettingsResponse = {\r\n Text: '',\r\n };\r\n\r\n const resetTabs = () => {\r\n eventTabs.forEach((tab) => tab.classList.remove('awards-list__tab--active'));\r\n };\r\n\r\n const fetchAwardsCardSettings = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/awardsaccreditations/cardsettings?currentCulture=${currentCulture}`\r\n );\r\n\r\n awardsCardSettings = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchAwards = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchAwardsListPayload = {\r\n keyword,\r\n awardsType,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/awardsaccreditations',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/awardsaccreditations', payload);\r\n }\r\n awardsCards = response.data.items;\r\n if (awardsCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n awardsCards,\r\n fetchAwards\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n awardsGrid.innerHTML = '';\r\n\r\n awardsCards.forEach((card: AwardsListCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'awards-list__card flex flex--column';\r\n\r\n cardElement.innerHTML = ` \r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\"${card.title}\"\r\n\t\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tcalendar icon\r\n\t\t\t\t\t\t\r\n ${formatDateString(card.date)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t

${card.title}

\r\n\t\t\t\t\t\t

${card.content}

\r\n\t\t\t\t\t

\r\n `;\r\n\r\n awardsGrid.appendChild(cardElement);\r\n });\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n awardsTabsComponent.classList.add('disabled');\r\n awardsFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n awardsTabsComponent.classList.remove('disabled');\r\n awardsFilters.classList.remove('disabled');\r\n };\r\n\r\n eventTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n eventTabs[activeTab].classList.add('awards-list__tab--active');\r\n pageNumber = 1;\r\n\r\n if (index === 0) {\r\n awardsType = 2;\r\n } else {\r\n awardsType = 1;\r\n }\r\n\r\n fetchAwards();\r\n });\r\n });\r\n\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchAwards();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchAwards();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchAwards();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchAwards();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchAwards();\r\n });\r\n\r\n let timeout = null;\r\n awardsListSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = awardsListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchAwards();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Latest\r\n // 2 = Oldest\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = awardsAccreditations.querySelector(\r\n 'input[name=\"sort-filter\"]:checked'\r\n ) as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchAwards();\r\n });\r\n });\r\n\r\n fetchAwardsCardSettings();\r\n fetchAwards();\r\n}\r\n","import {\r\n BrochureCard,\r\n FetchBrochuresPublicationsListPayload,\r\n FetchBrochuresPublicationsListResponse,\r\n} from './brochuresPublicationsList.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport axios from 'axios';\r\n\r\nconst borchuresPublicationsList: HTMLDivElement = document.querySelector('.brochures-list');\r\n\r\nif (borchuresPublicationsList) {\r\n const brochuresGrid = borchuresPublicationsList.querySelector('.brochures-list__grid') as HTMLDivElement;\r\n const identityFilters = borchuresPublicationsList.querySelector('.brochures-list__search') as HTMLDivElement;\r\n const borchuresPublicationsListSearchInput = borchuresPublicationsList.querySelector(\r\n '.brochures-list__search-input'\r\n ) as HTMLInputElement;\r\n const nextPageButton = borchuresPublicationsList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = borchuresPublicationsList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = borchuresPublicationsList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = borchuresPublicationsList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = borchuresPublicationsList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = borchuresPublicationsList.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = borchuresPublicationsList.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let brochureCards: BrochureCard[] = [];\r\n let keyword: string = '';\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchBrochuresPublications = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchBrochuresPublicationsListPayload = {\r\n keyword,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/brochurespublications',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post(\r\n '/api/brochurespublications',\r\n payload\r\n );\r\n }\r\n brochureCards = response.data.items;\r\n if (brochureCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n brochureCards,\r\n fetchBrochuresPublications\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n brochuresGrid.innerHTML = '';\r\n\r\n brochureCards.forEach((card: BrochureCard) => {\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'science-card flex flex--column flex--align-start flex--justify-between';\r\n\r\n cardElement.innerHTML = `\r\n
\r\n
\r\n \"image\"\r\n
\r\n
\r\n
\r\n
\r\n calendar icon\r\n \r\n ${formatDateString(card.date)}\r\n \r\n
\r\n \"pdf\r\n
\r\n ${card.title}\r\n ${card.description}\r\n
\r\n
\r\n
\r\n \r\n ${card.linkTitle}\r\n \"/assets/img/img/arrow-top-left-dark.svg\"\r\n \r\n
\r\n \r\n \r\n \"/assets/img/img/download-icon-dark.svg\"\r\n \r\n
\r\n
\r\n `;\r\n\r\n brochuresGrid.appendChild(cardElement);\r\n });\r\n\r\n addCardListeners();\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n identityFilters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n identityFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchBrochuresPublications();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchBrochuresPublications();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchBrochuresPublications();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchBrochuresPublications();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchBrochuresPublications();\r\n });\r\n\r\n let timeout = null;\r\n borchuresPublicationsListSearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = borchuresPublicationsListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchBrochuresPublications();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = A-Z\r\n // 2 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = borchuresPublicationsList.querySelector(\r\n 'input[name=\"sort-filter\"]:checked'\r\n ) as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchBrochuresPublications();\r\n });\r\n });\r\n\r\n fetchBrochuresPublications();\r\n\r\n const addCardListeners = () => {\r\n const brochuresListCards: NodeListOf =\r\n brochuresGrid.querySelectorAll('.brochures-list__item');\r\n\r\n if (brochuresListCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll(\r\n '.brochures-list__item__button',\r\n );\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}\r\n","import { updatePaginationButtons } from '../pagination/pagination';\r\nimport { CompItem, FetchCompetitionsListingPayload, FetchCompetitionsListingResponse } from './competitionsList.types';\r\nimport axios from 'axios';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport IsUserLoggedIn from '../../../helpers/isUserLoggedIn';\r\n\r\nconst competitionsList: HTMLDivElement = document.querySelector('.competitions-list');\r\n\r\nif (competitionsList) {\r\n const grid = competitionsList.querySelector('.competitions-list__images') as HTMLDivElement;\r\n const nextPageButton = competitionsList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = competitionsList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = competitionsList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = competitionsList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = competitionsList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = competitionsList.querySelector('.pagination') as HTMLDivElement;\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const favouritedIds: number[] = JSON.parse(grid.getAttribute('data-ids'));\r\n\r\n let compCards: CompItem[] = [];\r\n let pageNumber = 1;\r\n let pageSize = +paginationDropdown.value;\r\n let totalPages = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage = false;\r\n let hasPreviousPage = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchCompetitions = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchCompetitionsListingPayload = {\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/competitions',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post(`/api/competitions`, payload);\r\n }\r\n\r\n compCards = response.data.items;\r\n\r\n if (compCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n\r\n totalCount = response.data.totalCount;\r\n totalPages = response.data.totalPages;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n compCards,\r\n fetchCompetitions\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n grid.innerHTML = '';\r\n\r\n compCards.forEach((card: CompItem) => {\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'competitions-list__item sticky flex flex--column';\r\n cardElement.style.backgroundImage = `url(${card.backgroundImage})`;\r\n\r\n var _class = '';\r\n if (IsFavourited(card.id, favouritedIds)) {\r\n _class = 'active';\r\n }\r\n\r\n cardElement.innerHTML = ` \r\n
\r\n

${card.title}

\r\n

${card.text}

\r\n
\r\n \r\n \"share\r\n \r\n ${\r\n IsUserLoggedIn()\r\n ? ``\r\n : ''\r\n }\r\n \r\n
\r\n
\r\n \r\n ${card.linkText}\r\n \"more\"\r\n \r\n `;\r\n\r\n grid.appendChild(cardElement);\r\n });\r\n // hidden card to lock the last card\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'programs-list__item sticky';\r\n cardElement.style.opacity = '0';\r\n cardElement.style.zIndex = '-1';\r\n grid.appendChild(cardElement);\r\n\r\n addCardListeners();\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n };\r\n\r\n // Listeners\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchCompetitions();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n fetchCompetitions();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n fetchCompetitions();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchCompetitions();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchCompetitions();\r\n });\r\n\r\n fetchCompetitions();\r\n\r\n const addCardListeners = () => {\r\n const listCards: NodeListOf = competitionsList.querySelectorAll('.competitions-list__item');\r\n\r\n if (listCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.competitions-list__button');\r\n\r\n listCards.forEach((card) => {\r\n card.addEventListener('click', (e) => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('favouriteButton')) {\r\n const t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n saveOrRemoveFavourite(t, id, button);\r\n } else if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n\r\n let top: number = 180;\r\n const headerHeight: number = 65;\r\n if (window.innerWidth < 1200) {\r\n top = 20;\r\n }\r\n const cardsCount: number = listCards.length;\r\n\r\n if (cardsCount) {\r\n listCards.forEach((card, i) => {\r\n const incValue: number = i * headerHeight;\r\n\r\n if (i === 0) {\r\n card.style.top = `${top}px`;\r\n } else {\r\n card.style.top = `${top + incValue}px`;\r\n }\r\n });\r\n }\r\n }\r\n };\r\n}\r\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\nconst contactus : HTMLDivElement = document.querySelector('.contact-us');\r\n\r\nif (contactus) {\r\n const shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n }\r\n}\r\n\r\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","const countryDropdowns = document.querySelectorAll('.country-dropdown__wrapper') as NodeListOf;\r\n\r\ncountryDropdowns.forEach((countryDropdown) => {\r\n if(countryDropdown) {\r\n const countries = [\r\n { name: \"Afghanistan\", code: \"AF\", phone: 93 },\r\n { name: \"Aland Islands\", code: \"AX\", phone: 358 },\r\n { name: \"Albania\", code: \"AL\", phone: 355 },\r\n { name: \"Algeria\", code: \"DZ\", phone: 213 },\r\n { name: \"American Samoa\", code: \"AS\", phone: 1684 },\r\n { name: \"Andorra\", code: \"AD\", phone: 376 },\r\n { name: \"Angola\", code: \"AO\", phone: 244 },\r\n { name: \"Anguilla\", code: \"AI\", phone: 1264 },\r\n { name: \"Antarctica\", code: \"AQ\", phone: 672 },\r\n { name: \"Antigua and Barbuda\", code: \"AG\", phone: 1268 },\r\n { name: \"Argentina\", code: \"AR\", phone: 54 },\r\n { name: \"Armenia\", code: \"AM\", phone: 374 },\r\n { name: \"Aruba\", code: \"AW\", phone: 297 },\r\n { name: \"Australia\", code: \"AU\", phone: 61 },\r\n { name: \"Austria\", code: \"AT\", phone: 43 },\r\n { name: \"Azerbaijan\", code: \"AZ\", phone: 994 },\r\n { name: \"Bahamas\", code: \"BS\", phone: 1242 },\r\n { name: \"Bahrain\", code: \"BH\", phone: 973 },\r\n { name: \"Bangladesh\", code: \"BD\", phone: 880 },\r\n { name: \"Barbados\", code: \"BB\", phone: 1246 },\r\n { name: \"Belarus\", code: \"BY\", phone: 375 },\r\n { name: \"Belgium\", code: \"BE\", phone: 32 },\r\n { name: \"Belize\", code: \"BZ\", phone: 501 },\r\n { name: \"Benin\", code: \"BJ\", phone: 229 },\r\n { name: \"Bermuda\", code: \"BM\", phone: 1441 },\r\n { name: \"Bhutan\", code: \"BT\", phone: 975 },\r\n { name: \"Bolivia\", code: \"BO\", phone: 591 },\r\n { name: \"Bonaire, Sint Eustatius and Saba\", code: \"BQ\", phone: 599 },\r\n { name: \"Bosnia and Herzegovina\", code: \"BA\", phone: 387 },\r\n { name: \"Botswana\", code: \"BW\", phone: 267 },\r\n { name: \"Bouvet Island\", code: \"BV\", phone: 55 },\r\n { name: \"Brazil\", code: \"BR\", phone: 55 },\r\n { name: \"British Indian Ocean Territory\", code: \"IO\", phone: 246 },\r\n { name: \"Brunei Darussalam\", code: \"BN\", phone: 673 },\r\n { name: \"Bulgaria\", code: \"BG\", phone: 359 },\r\n { name: \"Burkina Faso\", code: \"BF\", phone: 226 },\r\n { name: \"Burundi\", code: \"BI\", phone: 257 },\r\n { name: \"Cambodia\", code: \"KH\", phone: 855 },\r\n { name: \"Cameroon\", code: \"CM\", phone: 237 },\r\n { name: \"Canada\", code: \"CA\", phone: 1 },\r\n { name: \"Cape Verde\", code: \"CV\", phone: 238 },\r\n { name: \"Cayman Islands\", code: \"KY\", phone: 1345 },\r\n { name: \"Central African Republic\", code: \"CF\", phone: 236 },\r\n { name: \"Chad\", code: \"TD\", phone: 235 },\r\n { name: \"Chile\", code: \"CL\", phone: 56 },\r\n { name: \"China\", code: \"CN\", phone: 86 },\r\n { name: \"Christmas Island\", code: \"CX\", phone: 61 },\r\n { name: \"Cocos (Keeling) Islands\", code: \"CC\", phone: 672 },\r\n { name: \"Colombia\", code: \"CO\", phone: 57 },\r\n { name: \"Comoros\", code: \"KM\", phone: 269 },\r\n { name: \"Congo\", code: \"CG\", phone: 242 },\r\n { name: \"Democratic Republic of the Congo\", code: \"CD\", phone: 242 },\r\n { name: \"Cook Islands\", code: \"CK\", phone: 682 },\r\n { name: \"Costa Rica\", code: \"CR\", phone: 506 },\r\n { name: \"Cote D'Ivoire\", code: \"CI\", phone: 225 },\r\n { name: \"Croatia\", code: \"HR\", phone: 385 },\r\n { name: \"Cuba\", code: \"CU\", phone: 53 },\r\n { name: \"Curacao\", code: \"CW\", phone: 599 },\r\n { name: \"Cyprus\", code: \"CY\", phone: 357 },\r\n { name: \"Czech Republic\", code: \"CZ\", phone: 420 },\r\n { name: \"Denmark\", code: \"DK\", phone: 45 },\r\n { name: \"Djibouti\", code: \"DJ\", phone: 253 },\r\n { name: \"Dominica\", code: \"DM\", phone: 1767 },\r\n { name: \"Dominican Republic\", code: \"DO\", phone: 1809 },\r\n { name: \"Ecuador\", code: \"EC\", phone: 593 },\r\n { name: \"Egypt\", code: \"EG\", phone: 20 },\r\n { name: \"El Salvador\", code: \"SV\", phone: 503 },\r\n { name: \"Equatorial Guinea\", code: \"GQ\", phone: 240 },\r\n { name: \"Eritrea\", code: \"ER\", phone: 291 },\r\n { name: \"Estonia\", code: \"EE\", phone: 372 },\r\n { name: \"Ethiopia\", code: \"ET\", phone: 251 },\r\n { name: \"Falkland Islands\", code: \"FK\", phone: 500 },\r\n { name: \"Faroe Islands\", code: \"FO\", phone: 298 },\r\n { name: \"Fiji\", code: \"FJ\", phone: 679 },\r\n { name: \"Finland\", code: \"FI\", phone: 358 },\r\n { name: \"France\", code: \"FR\", phone: 33 },\r\n { name: \"French Guiana\", code: \"GF\", phone: 594 },\r\n { name: \"French Polynesia\", code: \"PF\", phone: 689 },\r\n { name: \"French Southern Territories\", code: \"TF\", phone: 262 },\r\n { name: \"Gabon\", code: \"GA\", phone: 241 },\r\n { name: \"Gambia\", code: \"GM\", phone: 220 },\r\n { name: \"Georgia\", code: \"GE\", phone: 995 },\r\n { name: \"Germany\", code: \"DE\", phone: 49 },\r\n { name: \"Ghana\", code: \"GH\", phone: 233 },\r\n { name: \"Gibraltar\", code: \"GI\", phone: 350 },\r\n { name: \"Greece\", code: \"GR\", phone: 30 },\r\n { name: \"Greenland\", code: \"GL\", phone: 299 },\r\n { name: \"Grenada\", code: \"GD\", phone: 1473 },\r\n { name: \"Guadeloupe\", code: \"GP\", phone: 590 },\r\n { name: \"Guam\", code: \"GU\", phone: 1671 },\r\n { name: \"Guatemala\", code: \"GT\", phone: 502 },\r\n { name: \"Guernsey\", code: \"GG\", phone: 44 },\r\n { name: \"Guinea\", code: \"GN\", phone: 224 },\r\n { name: \"Guinea-Bissau\", code: \"GW\", phone: 245 },\r\n { name: \"Guyana\", code: \"GY\", phone: 592 },\r\n { name: \"Haiti\", code: \"HT\", phone: 509 },\r\n { name: \"Heard Island and McDonald Islands\", code: \"HM\", phone: 0 },\r\n { name: \"Vatican\", code: \"VA\", phone: 39 },\r\n { name: \"Honduras\", code: \"HN\", phone: 504 },\r\n { name: \"Hong Kong\", code: \"HK\", phone: 852 },\r\n { name: \"Hungary\", code: \"HU\", phone: 36 },\r\n { name: \"Iceland\", code: \"IS\", phone: 354 },\r\n { name: \"India\", code: \"IN\", phone: 91 },\r\n { name: \"Indonesia\", code: \"ID\", phone: 62 },\r\n { name: \"Iran\", code: \"IR\", phone: 98 },\r\n { name: \"Iraq\", code: \"IQ\", phone: 964 },\r\n { name: \"Ireland\", code: \"IE\", phone: 353 },\r\n { name: \"Isle of Man\", code: \"IM\", phone: 44 },\r\n { name: \"Israel\", code: \"IL\", phone: 972 },\r\n { name: \"Italy\", code: \"IT\", phone: 39 },\r\n { name: \"Jamaica\", code: \"JM\", phone: 1876 },\r\n { name: \"Japan\", code: \"JP\", phone: 81 },\r\n { name: \"Jersey\", code: \"JE\", phone: 44 },\r\n { name: \"Jordan\", code: \"JO\", phone: 962 },\r\n { name: \"Kazakhstan\", code: \"KZ\", phone: 7 },\r\n { name: \"Kenya\", code: \"KE\", phone: 254 },\r\n { name: \"Kiribati\", code: \"KI\", phone: 686 },\r\n { name: \"Korea, Democratic People's Republic of\", code: \"KP\", phone: 850 },\r\n { name: \"Korea, Republic of\", code: \"KR\", phone: 82 },\r\n { name: \"Kosovo\", code: \"XK\", phone: 383 },\r\n { name: \"Kuwait\", code: \"KW\", phone: 965 },\r\n { name: \"Kyrgyzstan\", code: \"KG\", phone: 996 },\r\n { name: \"Lao People's Democratic Republic\", code: \"LA\", phone: 856 },\r\n { name: \"Latvia\", code: \"LV\", phone: 371 },\r\n { name: \"Lebanon\", code: \"LB\", phone: 961 },\r\n { name: \"Lesotho\", code: \"LS\", phone: 266 },\r\n { name: \"Liberia\", code: \"LR\", phone: 231 },\r\n { name: \"Libyan Arab Jamahiriya\", code: \"LY\", phone: 218 },\r\n { name: \"Liechtenstein\", code: \"LI\", phone: 423 },\r\n { name: \"Lithuania\", code: \"LT\", phone: 370 },\r\n { name: \"Luxembourg\", code: \"LU\", phone: 352 },\r\n { name: \"Macao\", code: \"MO\", phone: 853 },\r\n { name: \"Macedonia\", code: \"MK\", phone: 389 },\r\n { name: \"Madagascar\", code: \"MG\", phone: 261 },\r\n { name: \"Malawi\", code: \"MW\", phone: 265 },\r\n { name: \"Malaysia\", code: \"MY\", phone: 60 },\r\n { name: \"Maldives\", code: \"MV\", phone: 960 },\r\n { name: \"Mali\", code: \"ML\", phone: 223 },\r\n { name: \"Malta\", code: \"MT\", phone: 356 },\r\n { name: \"Marshall Islands\", code: \"MH\", phone: 692 },\r\n { name: \"Martinique\", code: \"MQ\", phone: 596 },\r\n { name: \"Mauritania\", code: \"MR\", phone: 222 },\r\n { name: \"Mauritius\", code: \"MU\", phone: 230 },\r\n { name: \"Mayotte\", code: \"YT\", phone: 262 },\r\n { name: \"Mexico\", code: \"MX\", phone: 52 },\r\n { name: \"Micronesia\", code: \"FM\", phone: 691 },\r\n { name: \"Moldova, Republic of\", code: \"MD\", phone: 373 },\r\n { name: \"Monaco\", code: \"MC\", phone: 377 },\r\n { name: \"Mongolia\", code: \"MN\", phone: 976 },\r\n { name: \"Montenegro\", code: \"ME\", phone: 382 },\r\n { name: \"Montserrat\", code: \"MS\", phone: 1664 },\r\n { name: \"Morocco\", code: \"MA\", phone: 212 },\r\n { name: \"Mozambique\", code: \"MZ\", phone: 258 },\r\n { name: \"Myanmar\", code: \"MM\", phone: 95 },\r\n { name: \"Namibia\", code: \"NA\", phone: 264 },\r\n { name: \"Nauru\", code: \"NR\", phone: 674 },\r\n { name: \"Nepal\", code: \"NP\", phone: 977 },\r\n { name: \"Netherlands\", code: \"NL\", phone: 31 },\r\n { name: \"Netherlands Antilles\", code: \"AN\", phone: 599 },\r\n { name: \"New Caledonia\", code: \"NC\", phone: 687 },\r\n { name: \"New Zealand\", code: \"NZ\", phone: 64 },\r\n { name: \"Nicaragua\", code: \"NI\", phone: 505 },\r\n { name: \"Niger\", code: \"NE\", phone: 227 },\r\n { name: \"Nigeria\", code: \"NG\", phone: 234 },\r\n { name: \"Niue\", code: \"NU\", phone: 683 },\r\n { name: \"Norfolk Island\", code: \"NF\", phone: 672 },\r\n { name: \"Northern Mariana Islands\", code: \"MP\", phone: 1670 },\r\n { name: \"Norway\", code: \"NO\", phone: 47 },\r\n { name: \"Oman\", code: \"OM\", phone: 968 },\r\n { name: \"Pakistan\", code: \"PK\", phone: 92 },\r\n { name: \"Palau\", code: \"PW\", phone: 680 },\r\n { name: \"Palestinian Territory\", code: \"PS\", phone: 970 },\r\n { name: \"Panama\", code: \"PA\", phone: 507 },\r\n { name: \"Papua New Guinea\", code: \"PG\", phone: 675 },\r\n { name: \"Paraguay\", code: \"PY\", phone: 595 },\r\n { name: \"Peru\", code: \"PE\", phone: 51 },\r\n { name: \"Philippines\", code: \"PH\", phone: 63 },\r\n { name: \"Pitcairn\", code: \"PN\", phone: 64 },\r\n { name: \"Poland\", code: \"PL\", phone: 48 },\r\n { name: \"Portugal\", code: \"PT\", phone: 351 },\r\n { name: \"Puerto Rico\", code: \"PR\", phone: 1787 },\r\n { name: \"Qatar\", code: \"QA\", phone: 974 },\r\n { name: \"Reunion\", code: \"RE\", phone: 262 },\r\n { name: \"Romania\", code: \"RO\", phone: 40 },\r\n { name: \"Russian Federation\", code: \"RU\", phone: 7 },\r\n { name: \"Rwanda\", code: \"RW\", phone: 250 },\r\n { name: \"Saint Barthelemy\", code: \"BL\", phone: 590 },\r\n { name: \"Saint Helena\", code: \"SH\", phone: 290 },\r\n { name: \"Saint Kitts and Nevis\", code: \"KN\", phone: 1869 },\r\n { name: \"Saint Lucia\", code: \"LC\", phone: 1758 },\r\n { name: \"Saint Martin\", code: \"MF\", phone: 590 },\r\n { name: \"Saint Pierre and Miquelon\", code: \"PM\", phone: 508 },\r\n { name: \"Saint Vincent and the Grenadines\", code: \"VC\", phone: 1784 },\r\n { name: \"Samoa\", code: \"WS\", phone: 684 },\r\n { name: \"San Marino\", code: \"SM\", phone: 378 },\r\n { name: \"Sao Tome and Principe\", code: \"ST\", phone: 239 },\r\n { name: \"Saudi Arabia\", code: \"SA\", phone: 966 },\r\n { name: \"Senegal\", code: \"SN\", phone: 221 },\r\n { name: \"Serbia\", code: \"RS\", phone: 381 },\r\n { name: \"Seychelles\", code: \"SC\", phone: 248 },\r\n { name: \"Sierra Leone\", code: \"SL\", phone: 232 },\r\n { name: \"Singapore\", code: \"SG\", phone: 65 },\r\n { name: \"St Martin\", code: \"SX\", phone: 721 },\r\n { name: \"Slovakia\", code: \"SK\", phone: 421 },\r\n { name: \"Slovenia\", code: \"SI\", phone: 386 },\r\n { name: \"Solomon Islands\", code: \"SB\", phone: 677 },\r\n { name: \"Somalia\", code: \"SO\", phone: 252 },\r\n { name: \"South Africa\", code: \"ZA\", phone: 27 },\r\n { name: \"South Georgia and the South Sandwich Islands\", code: \"GS\", phone: 500 },\r\n { name: \"South Sudan\", code: \"SS\", phone: 211 },\r\n { name: \"Spain\", code: \"ES\", phone: 34 },\r\n { name: \"Sri Lanka\", code: \"LK\", phone: 94 },\r\n { name: \"Sudan\", code: \"SD\", phone: 249 },\r\n { name: \"Suriname\", code: \"SR\", phone: 597 },\r\n { name: \"Svalbard and Jan Mayen\", code: \"SJ\", phone: 47 },\r\n { name: \"Swaziland\", code: \"SZ\", phone: 268 },\r\n { name: \"Sweden\", code: \"SE\", phone: 46 },\r\n { name: \"Switzerland\", code: \"CH\", phone: 41 },\r\n { name: \"Syrian Arab Republic\", code: \"SY\", phone: 963 },\r\n { name: \"Taiwan, Province of China\", code: \"TW\", phone: 886 },\r\n { name: \"Tajikistan\", code: \"TJ\", phone: 992 },\r\n { name: \"Tanzania, United Republic of\", code: \"TZ\", phone: 255 },\r\n { name: \"Thailand\", code: \"TH\", phone: 66 },\r\n { name: \"Timor-Leste\", code: \"TL\", phone: 670 },\r\n { name: \"Togo\", code: \"TG\", phone: 228 },\r\n { name: \"Tokelau\", code: \"TK\", phone: 690 },\r\n { name: \"Tonga\", code: \"TO\", phone: 676 },\r\n { name: \"Trinidad and Tobago\", code: \"TT\", phone: 1868 },\r\n { name: \"Tunisia\", code: \"TN\", phone: 216 },\r\n { name: \"Turkey\", code: \"TR\", phone: 90 },\r\n { name: \"Turkmenistan\", code: \"TM\", phone: 7370 },\r\n { name: \"Turks and Caicos Islands\", code: \"TC\", phone: 1649 },\r\n { name: \"Tuvalu\", code: \"TV\", phone: 688 },\r\n { name: \"Uganda\", code: \"UG\", phone: 256 },\r\n { name: \"Ukraine\", code: \"UA\", phone: 380 },\r\n { name: \"United Arab Emirates\", code: \"AE\", phone: 971 },\r\n { name: \"United Kingdom\", code: \"GB\", phone: 44 },\r\n { name: \"United States\", code: \"US\", phone: 1 },\r\n { name: \"Uruguay\", code: \"UY\", phone: 598 },\r\n { name: \"Uzbekistan\", code: \"UZ\", phone: 998 },\r\n { name: \"Vanuatu\", code: \"VU\", phone: 678 },\r\n { name: \"Venezuela\", code: \"VE\", phone: 58 },\r\n { name: \"Viet Nam\", code: \"VN\", phone: 84 },\r\n { name: \"Virgin Islands, British\", code: \"VG\", phone: 1284 },\r\n { name: \"Virgin Islands, U.s.\", code: \"VI\", phone: 1340 },\r\n { name: \"Wallis and Futuna\", code: \"WF\", phone: 681 },\r\n { name: \"Western Sahara\", code: \"EH\", phone: 212 },\r\n { name: \"Yemen\", code: \"YE\", phone: 967 },\r\n { name: \"Zambia\", code: \"ZM\", phone: 260 },\r\n { name: \"Zimbabwe\", code: \"ZW\", phone: 263 }\r\n ],\r\n\r\n optionsContainer = countryDropdown.querySelector('.country-dropdown__options') as HTMLDivElement,\r\n searchInput = countryDropdown.querySelector('.country-dropdown__search') as HTMLInputElement,\r\n numberInput = countryDropdown.querySelector('.country-dropdown__number') as HTMLInputElement,\r\n dropdown = countryDropdown.querySelector('.country-dropdown__inner') as HTMLDivElement;\r\n\r\n let options = null;\r\n\r\n countries.forEach(country => {\r\n const option = `\r\n
  • \r\n
    \r\n \r\n ${country.name}\r\n
    \r\n +${country.phone}\r\n
  • `;\r\n\r\n optionsContainer.querySelector('.country-dropdown__list').insertAdjacentHTML('beforeend', option);\r\n options = countryDropdown.querySelectorAll('.country-dropdown__country-item');\r\n })\r\n\r\n const selectOption = (item: HTMLElement) => {\r\n const icon = item.querySelector('.country-dropdown__flag').cloneNode(true) as HTMLElement,\r\n phone_code = item.querySelector('.country-dropdown__country-code').cloneNode(true) as HTMLElement;\r\n phone_code.style.pointerEvents = 'none';\r\n icon.style.pointerEvents = 'none';\r\n\r\n dropdown.innerHTML = '';\r\n dropdown.append(icon, phone_code);\r\n numberInput.focus();\r\n optionsContainer.classList.remove('active');\r\n dropdown.classList.remove('active');\r\n optionsContainer.querySelectorAll('.hide').forEach(el => el.classList.remove('hide'));\r\n }\r\n\r\n const searchCountry = () => {\r\n let searchQuery: string = searchInput.value.toLowerCase();\r\n \r\n options.forEach((option: HTMLElement) => {\r\n let countryNameElement: HTMLElement = option.querySelector('.country-dropdown__title');\r\n let isMatched = countryNameElement.innerText.toLowerCase().includes(searchQuery);\r\n option.classList.toggle('hide', !isMatched);\r\n });\r\n }\r\n\r\n dropdown.addEventListener('click', () => {\r\n optionsContainer.classList.toggle('active');\r\n dropdown.classList.toggle('active');\r\n searchInput.focus();\r\n })\r\n \r\n dropdown.addEventListener('keydown', (event) => {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n optionsContainer.classList.add('active');\r\n dropdown.classList.add('active');\r\n searchInput.focus();\r\n }\r\n })\r\n\r\n options.forEach((option: HTMLElement) => option.addEventListener('click', () => {\r\n selectOption(option)\r\n })\r\n );\r\n\r\n options.forEach((option: HTMLElement) => option.addEventListener('keydown', (event) => {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n selectOption(option);\r\n }\r\n }))\r\n\r\n searchInput.addEventListener('input', searchCountry);\r\n\r\n window.addEventListener('click', (e) => {\r\n const target = e.target as HTMLDivElement;\r\n\r\n if (target.classList.contains('country-dropdown__inner') || target.classList.contains('country-dropdown__search')) {\r\n return \r\n } else {\r\n optionsContainer.classList.remove('active');\r\n dropdown.classList.remove('active');\r\n } \r\n })\r\n }\r\n});","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Bundle = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar insertPageView = function (pageId) { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.post(\"/api/pageview?pageId=\" + pageId)];\r\n case 1:\r\n response = _a.sent();\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n}); };\r\nexports.default = insertPageView;\r\n},{\"axios\":109}],2:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar calendarURLs_1 = __importDefault(require(\"./calendarURLs\"));\r\nfunction addToCalendar(button) {\r\n try {\r\n console.log('addToCalendar');\r\n var name_1 = button.getAttribute('data-cal-name');\r\n var details = button.getAttribute('data-cal-description');\r\n var location_1 = button.getAttribute('data-cal-location');\r\n var startsAt = button.getAttribute('data-cal-start');\r\n var endsAt = button.getAttribute('data-cal-end');\r\n var event_1 = {\r\n name: name_1,\r\n details: details,\r\n location: location_1,\r\n startsAt: startsAt,\r\n endsAt: endsAt,\r\n };\r\n var calUrls = calendarURLs_1.default(event_1);\r\n var calendarOptionsContainer_1 = document.querySelector('.calendar-options');\r\n if (!calendarOptionsContainer_1) {\r\n calendarOptionsContainer_1 = document.createElement('div');\r\n calendarOptionsContainer_1.className = 'calendar-options';\r\n document.body.appendChild(calendarOptionsContainer_1);\r\n }\r\n calendarOptionsContainer_1.innerHTML = '';\r\n var createCalendarLink = function (service, url, iconUrl) {\r\n var link = document.createElement('a');\r\n link.href = url;\r\n link.target = '_blank';\r\n link.rel = 'noopener noreferrer';\r\n var icon = document.createElement('img');\r\n icon.src = iconUrl;\r\n icon.alt = service + \" icon\";\r\n link.appendChild(icon);\r\n link.appendChild(document.createTextNode(\"\" + service));\r\n calendarOptionsContainer_1.appendChild(link);\r\n };\r\n createCalendarLink('Apple', calUrls.ics, 'https://upload.wikimedia.org/wikipedia/commons/f/fa/Apple_logo_black.svg');\r\n createCalendarLink('Google', calUrls.google, 'https://upload.wikimedia.org/wikipedia/commons/a/a5/Google_Calendar_icon_%282020%29.svg');\r\n createCalendarLink('iCal File', calUrls.ics, 'https://upload.wikimedia.org/wikipedia/commons/f/fa/Line-style-icons-calendar-black.svg');\r\n createCalendarLink('Outlook.com', calUrls.outlook, 'https://upload.wikimedia.org/wikipedia/commons/9/90/Outlook.com_icon_%282012-2019%29.svg');\r\n createCalendarLink('Yahoo', calUrls.yahoo, 'https://upload.wikimedia.org/wikipedia/commons/8/83/Yahoo%21_icon_%282009-2013%29.svg');\r\n var buttonRect = button.getBoundingClientRect();\r\n var top_1 = window.scrollY + buttonRect.top + buttonRect.height + 10;\r\n var left = window.scrollX + buttonRect.left + buttonRect.width / 2 - 150;\r\n calendarOptionsContainer_1.style.top = top_1 + \"px\";\r\n calendarOptionsContainer_1.style.left = left + \"px\";\r\n calendarOptionsContainer_1.classList.add('show');\r\n var closePopup_1 = function (event) {\r\n if (!calendarOptionsContainer_1.contains(event.target) &&\r\n !button.contains(event.target) &&\r\n event.target !== button) {\r\n console.log('closing popup');\r\n calendarOptionsContainer_1.classList.remove('show');\r\n document.removeEventListener('click', closePopup_1);\r\n }\r\n };\r\n document.addEventListener('click', closePopup_1);\r\n }\r\n catch (err) {\r\n console.error('Failed to add to calendar: ', err);\r\n }\r\n}\r\nexports.default = addToCalendar;\r\n},{\"./calendarURLs\":3}],3:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar makeDuration = function (event) {\r\n var minutes = Math.floor((+new Date(event.endsAt) - +new Date(event.startsAt)) / 60 / 1000);\r\n return Math.floor(minutes / 60) + \":\" + (\"0\" + minutes % 60).slice(-2);\r\n};\r\nvar makeTime = function (time) { return new Date(time).toISOString().replace(/[-:]|\\.\\d{3}/g, ''); };\r\nvar makeUrl = function (base, query) { return Object.keys(query).reduce(function (accum, key, index) {\r\n var value = query[key];\r\n if (value !== null) {\r\n return \"\" + accum + (index === 0 ? '?' : '&') + key + \"=\" + encodeURIComponent(value);\r\n }\r\n return accum;\r\n}, base); };\r\nvar makeGoogleCalendarUrl = function (event) { return makeUrl('https://calendar.google.com/calendar/render', {\r\n action: 'TEMPLATE',\r\n dates: makeTime(event.startsAt) + \"/\" + makeTime(event.endsAt),\r\n location: event.location,\r\n text: event.name,\r\n details: event.details,\r\n}); };\r\nvar makeOutlookCalendarUrl = function (event) { return makeUrl('https://outlook.live.com/owa', {\r\n rru: 'addevent',\r\n startdt: makeTime(event.startsAt),\r\n enddt: makeTime(event.endsAt),\r\n subject: event.name,\r\n location: event.location,\r\n body: event.details,\r\n allday: false,\r\n uid: new Date().getTime().toString(),\r\n path: '/calendar/view/Month',\r\n}); };\r\nvar makeYahooCalendarUrl = function (event) { return makeUrl('https://calendar.yahoo.com', {\r\n v: 60,\r\n view: 'd',\r\n type: 20,\r\n title: event.name,\r\n st: makeTime(event.startsAt),\r\n dur: makeDuration(event),\r\n desc: event.details,\r\n in_loc: event.location,\r\n}); };\r\nvar makeICSCalendarUrl = function (event) {\r\n var components = [\r\n 'BEGIN:VCALENDAR',\r\n 'VERSION:2.0',\r\n 'BEGIN:VEVENT',\r\n \"URL:\" + document.URL,\r\n \"DTSTART:\" + makeTime(event.startsAt),\r\n \"DTEND:\" + makeTime(event.endsAt),\r\n \"SUMMARY:\" + event.name,\r\n \"DESCRIPTION:\" + event.details,\r\n \"LOCATION:\" + event.location,\r\n 'END:VEVENT',\r\n 'END:VCALENDAR',\r\n ];\r\n return encodeURI(\"data:text/calendar;charset=utf8,\" + components.join('\\n'));\r\n};\r\nvar makeUrls = function (event) { return ({\r\n google: makeGoogleCalendarUrl(event),\r\n outlook: makeOutlookCalendarUrl(event),\r\n yahoo: makeYahooCalendarUrl(event),\r\n ics: makeICSCalendarUrl(event),\r\n}); };\r\nexports.default = makeUrls;\r\n},{}],4:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar currentCulture = document.documentElement.getAttribute('culture');\r\nfunction copyLinkToClipboard(button) {\r\n try {\r\n navigator.clipboard.writeText(window.location.href);\r\n showToast(button);\r\n }\r\n catch (err) {\r\n console.error('Failed to copy: ', err);\r\n }\r\n}\r\nexports.default = copyLinkToClipboard;\r\nvar showToast = function (button) {\r\n var toast = document.createElement('div');\r\n toast.className = 'toast';\r\n toast.textContent = currentCulture === 'ar' ? 'تم نسخ الرابط!' : 'Link copied to clipboard!';\r\n document.body.appendChild(toast);\r\n var buttonRect = button.getBoundingClientRect();\r\n var toastWidth = 150;\r\n var toastHeight = 40;\r\n var top = window.scrollY + buttonRect.top - toastHeight - 10;\r\n var left = window.scrollX + buttonRect.left + (buttonRect.width / 2) - (toastWidth / 2);\r\n toast.style.top = top + \"px\";\r\n toast.style.left = left + \"px\";\r\n setTimeout(function () {\r\n toast.classList.add('show');\r\n }, 100);\r\n setTimeout(function () {\r\n toast.classList.remove('show');\r\n setTimeout(function () {\r\n document.body.removeChild(toast);\r\n }, 500);\r\n }, 3000);\r\n};\r\n},{}],5:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nfunction saveOrRemoveFavourite(type, id, button) {\r\n try {\r\n axios_1.default.post(\"/api/favourites?pageId=\" + id + \"&type=\" + type).then(function (response) {\r\n console.log(response.data);\r\n if (response.data) {\r\n if (button != null) {\r\n button.classList.add('active');\r\n }\r\n }\r\n else {\r\n if (button != null) {\r\n button.classList.remove('active');\r\n }\r\n }\r\n });\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n}\r\nexports.default = saveOrRemoveFavourite;\r\n},{\"axios\":109}],6:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDateString = function (dateString) {\r\n var months = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n var monthsInArabic = [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"];\r\n var direction = document.querySelector(\"html\").getAttribute(\"dir\");\r\n var date = new Date(dateString);\r\n var year = date.getUTCFullYear();\r\n var monthIndex = date.getUTCMonth();\r\n var day = date.getUTCDate();\r\n var month = \"\";\r\n if (direction === \"rtl\") {\r\n month = monthsInArabic[monthIndex];\r\n }\r\n else {\r\n month = months[monthIndex];\r\n }\r\n return day + \" \" + month + \" \" + year;\r\n};\r\nexports.default = formatDateString;\r\n},{}],7:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar convertTime = function (dateStr, dir) {\r\n var date = new Date(dateStr);\r\n var hour = date.getHours();\r\n var minutes = date.getMinutes();\r\n var period;\r\n var displayHour;\r\n if (hour >= 0 && hour < 12) {\r\n if (dir !== 'rtl') {\r\n period = 'in the morning';\r\n }\r\n else {\r\n period = 'صباحاً';\r\n }\r\n displayHour = hour === 0 ? 12 : hour;\r\n }\r\n else if (hour >= 12 && hour < 20) {\r\n if (dir !== 'rtl') {\r\n period = 'in the afternoon';\r\n }\r\n else {\r\n period = 'ظهراً';\r\n }\r\n displayHour = hour === 12 ? 12 : hour - 12;\r\n }\r\n else {\r\n if (dir !== 'rtl') {\r\n period = 'in the evening';\r\n }\r\n else {\r\n period = 'مساءً';\r\n }\r\n displayHour = hour === 12 ? 12 : hour - 12;\r\n }\r\n var formattedMinutes = '';\r\n if (minutes !== 0) {\r\n formattedMinutes = \":\" + minutes.toString().padStart(2, '0');\r\n }\r\n var formattedTime = \"\" + displayHour + formattedMinutes + \" \" + period;\r\n if (dir === 'rtl') {\r\n return \"\\u202B\" + formattedTime + \"\\u202C\";\r\n }\r\n return formattedTime;\r\n};\r\nexports.default = convertTime;\r\n},{}],8:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.IsFavourited = void 0;\r\nvar IsFavourited = function (thisID, pagesIds) { return pagesIds.includes(thisID); };\r\nexports.IsFavourited = IsFavourited;\r\n},{}],9:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar IsUserLoggedIn = function () { return Number(document.documentElement.getAttribute('login')) !== 0; };\r\nexports.default = IsUserLoggedIn;\r\n},{}],10:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar details = document.querySelector('.article-detail');\r\nif (details) {\r\n var shareButtons = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],11:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar list = document.querySelector('.article-list-filters__wrapper');\r\nif (list) {\r\n var grid_1 = list.querySelector('.article-list-filters__grid');\r\n var filters_1 = list.querySelector('.article-list-filters__filter-content');\r\n var resultsnumber_1 = list.querySelector('.article-list-filters__number');\r\n var filterButton = list.querySelector('.article-list-filters__button');\r\n var filterCount_1 = list.querySelector('.article-list-filters__button-count-content');\r\n var listSearchInput_1 = list.querySelector('.article-list__search-input');\r\n var articleCategoriesDiv_1 = list.querySelector('.article-list-filters__categories-list');\r\n var nextPageButton = list.querySelector('.pagination__page-next');\r\n var prevPageButton = list.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = list.querySelector('.pagination__dropdown');\r\n var paginationLast = list.querySelector('.pagination__page-last');\r\n var paginationFirst = list.querySelector('.pagination__page-first');\r\n var pagination_2 = list.querySelector('.pagination');\r\n var radios = list.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var pageId_1 = Number(list.getAttribute('data-id'));\r\n var checkboxFiltersViews = list.querySelectorAll('.article-list-filters__view-checkbox');\r\n var articleCards_1 = [];\r\n var articleCardsAll_1 = [];\r\n var articleCategories_1 = [];\r\n var keyword_1 = '';\r\n var categories_1 = [];\r\n var views_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchArticleCategories_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 5, 6, 7]);\r\n payload = {\r\n pageId: pageId_1,\r\n keyword: keyword_1,\r\n categories: categories_1,\r\n views: views_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 2];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/articles/getcategories', payload)];\r\n case 1:\r\n response = _a.sent();\r\n return [3, 4];\r\n case 2: return [4, axios_1.default.post('/api/articles/getcategories', payload)];\r\n case 3:\r\n response = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n articleCategories_1 = response.data;\r\n return [3, 7];\r\n case 5:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 7];\r\n case 6:\r\n updateCategories_1();\r\n updateNumberCards_1();\r\n return [7];\r\n case 7: return [2];\r\n }\r\n });\r\n }); };\r\n var updateCategories_1 = function () {\r\n articleCategoriesDiv_1.innerHTML = '';\r\n articleCategories_1.forEach(function (card) {\r\n var _a;\r\n var cardElement = document.createElement('details');\r\n cardElement.setAttribute('open', '');\r\n cardElement.className = 'article-list-filters__details';\r\n cardElement.innerHTML = \"\\n \\n
    \\n \\\"\"\\n \" + card.title + \"\\n
    \\n
    \\n
    \\n
    \\n \";\r\n var subCats = cardElement.querySelector('.article-list-filters__sub-filters');\r\n (_a = card.subCategories) === null || _a === void 0 ? void 0 : _a.forEach(function (subcard) {\r\n var subCardElement = document.createElement('summary');\r\n subCardElement.innerHTML = \"\\n
    \\n \\n \\n
    \\n \";\r\n subCats.appendChild(subCardElement);\r\n });\r\n articleCategoriesDiv_1.appendChild(cardElement);\r\n });\r\n var checkboxFiltersCategories = list.querySelectorAll('.article-list-filters__category-checkbox');\r\n if (checkboxFiltersCategories.length > 0) {\r\n checkboxFiltersCategories.forEach(function (checkbox) {\r\n checkbox.addEventListener('change', function () {\r\n if (categories_1.includes(checkbox.value)) {\r\n categories_1 = categories_1.filter(function (cat) { return cat !== checkbox.value; });\r\n }\r\n else {\r\n categories_1.push(checkbox.value);\r\n }\r\n fetchArticles_1();\r\n fetchAllArticles_1();\r\n });\r\n });\r\n }\r\n };\r\n var fetchArticles_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, fCount, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n pageId: pageId_1,\r\n keyword: keyword_1,\r\n categories: categories_1,\r\n views: views_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n fCount = categories_1.length + views_1.length;\r\n filterCount_1.innerHTML = fCount.toString();\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/articles', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/articles', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n articleCards_1 = response.data.items;\r\n if (articleCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n resultsnumber_1.innerHTML = response.data.totalCount;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, articleCards_1, fetchArticles_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n updateNumberCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var fetchAllArticles_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n payload = {\r\n pageId: pageId_1,\r\n keyword: '',\r\n categories: [],\r\n views: [],\r\n sortBy: 1,\r\n pageNumber: 1,\r\n pageSize: -1,\r\n currentCulture: currentCulture_1,\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/articles', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/articles', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n articleCardsAll_1 = response.data.items;\r\n return [3, 7];\r\n case 6:\r\n error_3 = _a.sent();\r\n console.error(error_3);\r\n return [3, 7];\r\n case 7: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n grid_1.innerHTML = '';\r\n articleCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'fade-in';\r\n cardElement.innerHTML = \"\\n
    \\n
    \\n
    \\n \\\"\"\\n

    \" + card.title + \"

    \\n \" + card.text + \"\\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n \\n

    \" + card.category + \"

    \\n
    \\n
    \\n \\n

    \" + card.views + \"

    \\n
    \\n
    \\n
    \\n
    \\n \";\r\n grid_1.appendChild(cardElement);\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n filters_1 === null || filters_1 === void 0 ? void 0 : filters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n filters_1.classList.remove('disabled');\r\n };\r\n if (checkboxFiltersViews.length > 0) {\r\n checkboxFiltersViews.forEach(function (checkbox) {\r\n checkbox.addEventListener('change', function () {\r\n if (views_1.includes(checkbox.value)) {\r\n views_1 = views_1.filter(function (cat) { return cat !== checkbox.value; });\r\n }\r\n else {\r\n views_1.push(checkbox.value);\r\n }\r\n fetchArticles_1();\r\n });\r\n });\r\n }\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchArticles_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchArticles_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchArticles_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchArticles_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchArticles_1();\r\n });\r\n var timeout_1 = null;\r\n listSearchInput_1 === null || listSearchInput_1 === void 0 ? void 0 : listSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = listSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchArticles_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = list.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchArticles_1();\r\n });\r\n });\r\n filterButton === null || filterButton === void 0 ? void 0 : filterButton.addEventListener('click', function () {\r\n var filterColumn = list.querySelector('.article-list-filters__accordions');\r\n if (filterColumn === null || filterColumn === void 0 ? void 0 : filterColumn.classList.contains('hidden')) {\r\n filterColumn === null || filterColumn === void 0 ? void 0 : filterColumn.classList.remove('hidden');\r\n }\r\n else {\r\n filterColumn === null || filterColumn === void 0 ? void 0 : filterColumn.classList.add('hidden');\r\n }\r\n });\r\n var initializeList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchAllArticles_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchArticleCategories_1()];\r\n case 2:\r\n _a.sent();\r\n return [4, fetchArticles_1()];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeList();\r\n var updateNumberCards_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var filterDivs;\r\n return __generator(this, function (_a) {\r\n filterDivs = document.querySelectorAll('.views-card');\r\n filterDivs.forEach(function (filterDiv) {\r\n var minViews = parseInt(filterDiv.getAttribute('data-min'), 10);\r\n var maxViews = parseInt(filterDiv.getAttribute('data-max'), 10);\r\n var count = articleCardsAll_1.filter(function (article) { return article.views >= minViews && article.views <= maxViews; }).length;\r\n var countSpan = filterDiv.querySelector('.article-list-filters__sub-filters-text-number');\r\n countSpan.textContent = count.toString();\r\n });\r\n return [2];\r\n });\r\n }); };\r\n updateNumberCards_1();\r\n}\r\n},{\"../pagination/pagination\":67,\"axios\":109}],12:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],13:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar awardsAccreditations = document.querySelector('.awards-list');\r\nif (awardsAccreditations) {\r\n var eventTabs_1 = awardsAccreditations.querySelectorAll('.awards-list__tab');\r\n var awardsGrid_1 = awardsAccreditations.querySelector('.awards-list__grid');\r\n var awardsFilters_1 = awardsAccreditations.querySelector('.awards-list__search');\r\n var awardsListSearchInput_1 = awardsAccreditations.querySelector('.awards-list__search-input');\r\n var nextPageButton = awardsAccreditations.querySelector('.pagination__page-next');\r\n var prevPageButton = awardsAccreditations.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = awardsAccreditations.querySelector('.pagination__dropdown');\r\n var paginationLast = awardsAccreditations.querySelector('.pagination__page-last');\r\n var paginationFirst = awardsAccreditations.querySelector('.pagination__page-first');\r\n var pagination_2 = awardsAccreditations.querySelector('.pagination');\r\n var awardsTabsComponent_1 = awardsAccreditations.querySelector('.awards-list__tabs');\r\n var radios = awardsAccreditations.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var activeTab_1 = 0;\r\n var awardsCards_1 = [];\r\n var keyword_1 = '';\r\n var awardsType_1 = 2;\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var awardsCardSettings_1 = {\r\n Text: '',\r\n };\r\n var resetTabs_1 = function () {\r\n eventTabs_1.forEach(function (tab) { return tab.classList.remove('awards-list__tab--active'); });\r\n };\r\n var fetchAwardsCardSettings = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/awardsaccreditations/cardsettings?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n awardsCardSettings_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchAwards_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n awardsType: awardsType_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/awardsaccreditations', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/awardsaccreditations', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n awardsCards_1 = response.data.items;\r\n if (awardsCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, awardsCards_1, fetchAwards_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n awardsGrid_1.innerHTML = '';\r\n awardsCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'awards-list__card flex flex--column';\r\n cardElement.innerHTML = \" \\n\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\t\\\"\"\\n\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t

    \\n\\t\\t\\t\\t\\t\\tcalendar icon\\n\\t\\t\\t\\t\\t\\t\\n \" + formatDate_1.default(card.date) + \"\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t

    \" + card.title + \"

    \\n\\t\\t\\t\\t\\t\\t

    \" + card.content + \"

    \\n\\t\\t\\t\\t\\t

    \\n \";\r\n awardsGrid_1.appendChild(cardElement);\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n awardsTabsComponent_1.classList.add('disabled');\r\n awardsFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n awardsTabsComponent_1.classList.remove('disabled');\r\n awardsFilters_1.classList.remove('disabled');\r\n };\r\n eventTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n eventTabs_1[activeTab_1].classList.add('awards-list__tab--active');\r\n pageNumber_1 = 1;\r\n if (index === 0) {\r\n awardsType_1 = 2;\r\n }\r\n else {\r\n awardsType_1 = 1;\r\n }\r\n fetchAwards_1();\r\n });\r\n });\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchAwards_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchAwards_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchAwards_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchAwards_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchAwards_1();\r\n });\r\n var timeout_1 = null;\r\n awardsListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = awardsListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchAwards_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = awardsAccreditations.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchAwards_1();\r\n });\r\n });\r\n fetchAwardsCardSettings();\r\n fetchAwards_1();\r\n}\r\n},{\"../../../helpers/formatDate\":6,\"../pagination/pagination\":67,\"axios\":109}],14:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],15:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar borchuresPublicationsList = document.querySelector('.brochures-list');\r\nif (borchuresPublicationsList) {\r\n var brochuresGrid_1 = borchuresPublicationsList.querySelector('.brochures-list__grid');\r\n var identityFilters_1 = borchuresPublicationsList.querySelector('.brochures-list__search');\r\n var borchuresPublicationsListSearchInput_1 = borchuresPublicationsList.querySelector('.brochures-list__search-input');\r\n var nextPageButton = borchuresPublicationsList.querySelector('.pagination__page-next');\r\n var prevPageButton = borchuresPublicationsList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = borchuresPublicationsList.querySelector('.pagination__dropdown');\r\n var paginationLast = borchuresPublicationsList.querySelector('.pagination__page-last');\r\n var paginationFirst = borchuresPublicationsList.querySelector('.pagination__page-first');\r\n var pagination_2 = borchuresPublicationsList.querySelector('.pagination');\r\n var radios = borchuresPublicationsList.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var brochureCards_1 = [];\r\n var keyword_1 = '';\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchBrochuresPublications_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/brochurespublications', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/brochurespublications', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n brochureCards_1 = response.data.items;\r\n if (brochureCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, brochureCards_1, fetchBrochuresPublications_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n brochuresGrid_1.innerHTML = '';\r\n brochureCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'science-card flex flex--column flex--align-start flex--justify-between';\r\n cardElement.innerHTML = \"\\n
    \\n
    \\n \\\"image\\\"\\n
    \\n
    \\n
    \\n
    \\n calendar icon\\n \\n \" + formatDate_1.default(card.date) + \"\\n \\n
    \\n \\\"pdf\\n
    \\n \" + card.title + \"\\n \" + card.description + \"\\n
    \\n
    \\n
    \\n \\n \" + card.linkTitle + \"\\n \\\"/assets/img/img/arrow-top-left-dark.svg\\\"\\n \\n
    \\n \\n \\n \\\"/assets/img/img/download-icon-dark.svg\\\"\\n \\n
    \\n
    \\n \";\r\n brochuresGrid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n identityFilters_1 === null || identityFilters_1 === void 0 ? void 0 : identityFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n identityFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchBrochuresPublications_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchBrochuresPublications_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchBrochuresPublications_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchBrochuresPublications_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchBrochuresPublications_1();\r\n });\r\n var timeout_1 = null;\r\n borchuresPublicationsListSearchInput_1 === null || borchuresPublicationsListSearchInput_1 === void 0 ? void 0 : borchuresPublicationsListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = borchuresPublicationsListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchBrochuresPublications_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = borchuresPublicationsList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchBrochuresPublications_1();\r\n });\r\n });\r\n fetchBrochuresPublications_1();\r\n var addCardListeners_1 = function () {\r\n var brochuresListCards = brochuresGrid_1.querySelectorAll('.brochures-list__item');\r\n if (brochuresListCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.brochures-list__item__button');\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/formatDate\":6,\"../pagination/pagination\":67,\"axios\":109}],16:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],17:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar isUserLoggedIn_1 = __importDefault(require(\"../../../helpers/isUserLoggedIn\"));\r\nvar competitionsList = document.querySelector('.competitions-list');\r\nif (competitionsList) {\r\n var grid_1 = competitionsList.querySelector('.competitions-list__images');\r\n var nextPageButton = competitionsList.querySelector('.pagination__page-next');\r\n var prevPageButton = competitionsList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = competitionsList.querySelector('.pagination__dropdown');\r\n var paginationLast = competitionsList.querySelector('.pagination__page-last');\r\n var paginationFirst = competitionsList.querySelector('.pagination__page-first');\r\n var pagination_2 = competitionsList.querySelector('.pagination');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var favouritedIds_1 = JSON.parse(grid_1.getAttribute('data-ids'));\r\n var compCards_1 = [];\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchCompetitions_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/competitions', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post(\"/api/competitions\", payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n compCards_1 = response.data.items;\r\n if (compCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalCount_1 = response.data.totalCount;\r\n totalPages_1 = response.data.totalPages;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, compCards_1, fetchCompetitions_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n grid_1.innerHTML = '';\r\n compCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'competitions-list__item sticky flex flex--column';\r\n cardElement.style.backgroundImage = \"url(\" + card.backgroundImage + \")\";\r\n var _class = '';\r\n if (isFavourite_1.IsFavourited(card.id, favouritedIds_1)) {\r\n _class = 'active';\r\n }\r\n cardElement.innerHTML = \" \\n
    \\n

    \" + card.title + \"

    \\n

    \" + card.text + \"

    \\n
    \\n \\n \\\"share\\n \\n \" + (isUserLoggedIn_1.default()\r\n ? \"\"\r\n : '') + \"\\n \\n
    \\n
    \\n \\n \" + card.linkText + \"\\n \\\"more\\\"\\n \\n \";\r\n grid_1.appendChild(cardElement);\r\n });\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'programs-list__item sticky';\r\n cardElement.style.opacity = '0';\r\n cardElement.style.zIndex = '-1';\r\n grid_1.appendChild(cardElement);\r\n addCardListeners_1();\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchCompetitions_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchCompetitions_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchCompetitions_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchCompetitions_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchCompetitions_1();\r\n });\r\n fetchCompetitions_1();\r\n var addCardListeners_1 = function () {\r\n var listCards = competitionsList.querySelectorAll('.competitions-list__item');\r\n if (listCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.competitions-list__button');\r\n listCards.forEach(function (card) {\r\n card.addEventListener('click', function (e) {\r\n var target = e.target;\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('favouriteButton')) {\r\n var t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n favourites_1.default(t, id, button);\r\n }\r\n else if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n var top_1 = 180;\r\n var headerHeight_1 = 65;\r\n if (window.innerWidth < 1200) {\r\n top_1 = 20;\r\n }\r\n var cardsCount = listCards.length;\r\n if (cardsCount) {\r\n listCards.forEach(function (card, i) {\r\n var incValue = i * headerHeight_1;\r\n if (i === 0) {\r\n card.style.top = top_1 + \"px\";\r\n }\r\n else {\r\n card.style.top = top_1 + incValue + \"px\";\r\n }\r\n });\r\n }\r\n }\r\n };\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8,\"../../../helpers/isUserLoggedIn\":9,\"../pagination/pagination\":67,\"axios\":109}],18:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],19:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar contactus = document.querySelector('.contact-us');\r\nif (contactus) {\r\n var shareButtons = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],20:[function(require,module,exports){\nvar countryDropdowns = document.querySelectorAll('.country-dropdown__wrapper');\r\ncountryDropdowns.forEach(function (countryDropdown) {\r\n if (countryDropdown) {\r\n var countries = [\r\n { name: \"Afghanistan\", code: \"AF\", phone: 93 },\r\n { name: \"Aland Islands\", code: \"AX\", phone: 358 },\r\n { name: \"Albania\", code: \"AL\", phone: 355 },\r\n { name: \"Algeria\", code: \"DZ\", phone: 213 },\r\n { name: \"American Samoa\", code: \"AS\", phone: 1684 },\r\n { name: \"Andorra\", code: \"AD\", phone: 376 },\r\n { name: \"Angola\", code: \"AO\", phone: 244 },\r\n { name: \"Anguilla\", code: \"AI\", phone: 1264 },\r\n { name: \"Antarctica\", code: \"AQ\", phone: 672 },\r\n { name: \"Antigua and Barbuda\", code: \"AG\", phone: 1268 },\r\n { name: \"Argentina\", code: \"AR\", phone: 54 },\r\n { name: \"Armenia\", code: \"AM\", phone: 374 },\r\n { name: \"Aruba\", code: \"AW\", phone: 297 },\r\n { name: \"Australia\", code: \"AU\", phone: 61 },\r\n { name: \"Austria\", code: \"AT\", phone: 43 },\r\n { name: \"Azerbaijan\", code: \"AZ\", phone: 994 },\r\n { name: \"Bahamas\", code: \"BS\", phone: 1242 },\r\n { name: \"Bahrain\", code: \"BH\", phone: 973 },\r\n { name: \"Bangladesh\", code: \"BD\", phone: 880 },\r\n { name: \"Barbados\", code: \"BB\", phone: 1246 },\r\n { name: \"Belarus\", code: \"BY\", phone: 375 },\r\n { name: \"Belgium\", code: \"BE\", phone: 32 },\r\n { name: \"Belize\", code: \"BZ\", phone: 501 },\r\n { name: \"Benin\", code: \"BJ\", phone: 229 },\r\n { name: \"Bermuda\", code: \"BM\", phone: 1441 },\r\n { name: \"Bhutan\", code: \"BT\", phone: 975 },\r\n { name: \"Bolivia\", code: \"BO\", phone: 591 },\r\n { name: \"Bonaire, Sint Eustatius and Saba\", code: \"BQ\", phone: 599 },\r\n { name: \"Bosnia and Herzegovina\", code: \"BA\", phone: 387 },\r\n { name: \"Botswana\", code: \"BW\", phone: 267 },\r\n { name: \"Bouvet Island\", code: \"BV\", phone: 55 },\r\n { name: \"Brazil\", code: \"BR\", phone: 55 },\r\n { name: \"British Indian Ocean Territory\", code: \"IO\", phone: 246 },\r\n { name: \"Brunei Darussalam\", code: \"BN\", phone: 673 },\r\n { name: \"Bulgaria\", code: \"BG\", phone: 359 },\r\n { name: \"Burkina Faso\", code: \"BF\", phone: 226 },\r\n { name: \"Burundi\", code: \"BI\", phone: 257 },\r\n { name: \"Cambodia\", code: \"KH\", phone: 855 },\r\n { name: \"Cameroon\", code: \"CM\", phone: 237 },\r\n { name: \"Canada\", code: \"CA\", phone: 1 },\r\n { name: \"Cape Verde\", code: \"CV\", phone: 238 },\r\n { name: \"Cayman Islands\", code: \"KY\", phone: 1345 },\r\n { name: \"Central African Republic\", code: \"CF\", phone: 236 },\r\n { name: \"Chad\", code: \"TD\", phone: 235 },\r\n { name: \"Chile\", code: \"CL\", phone: 56 },\r\n { name: \"China\", code: \"CN\", phone: 86 },\r\n { name: \"Christmas Island\", code: \"CX\", phone: 61 },\r\n { name: \"Cocos (Keeling) Islands\", code: \"CC\", phone: 672 },\r\n { name: \"Colombia\", code: \"CO\", phone: 57 },\r\n { name: \"Comoros\", code: \"KM\", phone: 269 },\r\n { name: \"Congo\", code: \"CG\", phone: 242 },\r\n { name: \"Democratic Republic of the Congo\", code: \"CD\", phone: 242 },\r\n { name: \"Cook Islands\", code: \"CK\", phone: 682 },\r\n { name: \"Costa Rica\", code: \"CR\", phone: 506 },\r\n { name: \"Cote D'Ivoire\", code: \"CI\", phone: 225 },\r\n { name: \"Croatia\", code: \"HR\", phone: 385 },\r\n { name: \"Cuba\", code: \"CU\", phone: 53 },\r\n { name: \"Curacao\", code: \"CW\", phone: 599 },\r\n { name: \"Cyprus\", code: \"CY\", phone: 357 },\r\n { name: \"Czech Republic\", code: \"CZ\", phone: 420 },\r\n { name: \"Denmark\", code: \"DK\", phone: 45 },\r\n { name: \"Djibouti\", code: \"DJ\", phone: 253 },\r\n { name: \"Dominica\", code: \"DM\", phone: 1767 },\r\n { name: \"Dominican Republic\", code: \"DO\", phone: 1809 },\r\n { name: \"Ecuador\", code: \"EC\", phone: 593 },\r\n { name: \"Egypt\", code: \"EG\", phone: 20 },\r\n { name: \"El Salvador\", code: \"SV\", phone: 503 },\r\n { name: \"Equatorial Guinea\", code: \"GQ\", phone: 240 },\r\n { name: \"Eritrea\", code: \"ER\", phone: 291 },\r\n { name: \"Estonia\", code: \"EE\", phone: 372 },\r\n { name: \"Ethiopia\", code: \"ET\", phone: 251 },\r\n { name: \"Falkland Islands\", code: \"FK\", phone: 500 },\r\n { name: \"Faroe Islands\", code: \"FO\", phone: 298 },\r\n { name: \"Fiji\", code: \"FJ\", phone: 679 },\r\n { name: \"Finland\", code: \"FI\", phone: 358 },\r\n { name: \"France\", code: \"FR\", phone: 33 },\r\n { name: \"French Guiana\", code: \"GF\", phone: 594 },\r\n { name: \"French Polynesia\", code: \"PF\", phone: 689 },\r\n { name: \"French Southern Territories\", code: \"TF\", phone: 262 },\r\n { name: \"Gabon\", code: \"GA\", phone: 241 },\r\n { name: \"Gambia\", code: \"GM\", phone: 220 },\r\n { name: \"Georgia\", code: \"GE\", phone: 995 },\r\n { name: \"Germany\", code: \"DE\", phone: 49 },\r\n { name: \"Ghana\", code: \"GH\", phone: 233 },\r\n { name: \"Gibraltar\", code: \"GI\", phone: 350 },\r\n { name: \"Greece\", code: \"GR\", phone: 30 },\r\n { name: \"Greenland\", code: \"GL\", phone: 299 },\r\n { name: \"Grenada\", code: \"GD\", phone: 1473 },\r\n { name: \"Guadeloupe\", code: \"GP\", phone: 590 },\r\n { name: \"Guam\", code: \"GU\", phone: 1671 },\r\n { name: \"Guatemala\", code: \"GT\", phone: 502 },\r\n { name: \"Guernsey\", code: \"GG\", phone: 44 },\r\n { name: \"Guinea\", code: \"GN\", phone: 224 },\r\n { name: \"Guinea-Bissau\", code: \"GW\", phone: 245 },\r\n { name: \"Guyana\", code: \"GY\", phone: 592 },\r\n { name: \"Haiti\", code: \"HT\", phone: 509 },\r\n { name: \"Heard Island and McDonald Islands\", code: \"HM\", phone: 0 },\r\n { name: \"Vatican\", code: \"VA\", phone: 39 },\r\n { name: \"Honduras\", code: \"HN\", phone: 504 },\r\n { name: \"Hong Kong\", code: \"HK\", phone: 852 },\r\n { name: \"Hungary\", code: \"HU\", phone: 36 },\r\n { name: \"Iceland\", code: \"IS\", phone: 354 },\r\n { name: \"India\", code: \"IN\", phone: 91 },\r\n { name: \"Indonesia\", code: \"ID\", phone: 62 },\r\n { name: \"Iran\", code: \"IR\", phone: 98 },\r\n { name: \"Iraq\", code: \"IQ\", phone: 964 },\r\n { name: \"Ireland\", code: \"IE\", phone: 353 },\r\n { name: \"Isle of Man\", code: \"IM\", phone: 44 },\r\n { name: \"Israel\", code: \"IL\", phone: 972 },\r\n { name: \"Italy\", code: \"IT\", phone: 39 },\r\n { name: \"Jamaica\", code: \"JM\", phone: 1876 },\r\n { name: \"Japan\", code: \"JP\", phone: 81 },\r\n { name: \"Jersey\", code: \"JE\", phone: 44 },\r\n { name: \"Jordan\", code: \"JO\", phone: 962 },\r\n { name: \"Kazakhstan\", code: \"KZ\", phone: 7 },\r\n { name: \"Kenya\", code: \"KE\", phone: 254 },\r\n { name: \"Kiribati\", code: \"KI\", phone: 686 },\r\n { name: \"Korea, Democratic People's Republic of\", code: \"KP\", phone: 850 },\r\n { name: \"Korea, Republic of\", code: \"KR\", phone: 82 },\r\n { name: \"Kosovo\", code: \"XK\", phone: 383 },\r\n { name: \"Kuwait\", code: \"KW\", phone: 965 },\r\n { name: \"Kyrgyzstan\", code: \"KG\", phone: 996 },\r\n { name: \"Lao People's Democratic Republic\", code: \"LA\", phone: 856 },\r\n { name: \"Latvia\", code: \"LV\", phone: 371 },\r\n { name: \"Lebanon\", code: \"LB\", phone: 961 },\r\n { name: \"Lesotho\", code: \"LS\", phone: 266 },\r\n { name: \"Liberia\", code: \"LR\", phone: 231 },\r\n { name: \"Libyan Arab Jamahiriya\", code: \"LY\", phone: 218 },\r\n { name: \"Liechtenstein\", code: \"LI\", phone: 423 },\r\n { name: \"Lithuania\", code: \"LT\", phone: 370 },\r\n { name: \"Luxembourg\", code: \"LU\", phone: 352 },\r\n { name: \"Macao\", code: \"MO\", phone: 853 },\r\n { name: \"Macedonia\", code: \"MK\", phone: 389 },\r\n { name: \"Madagascar\", code: \"MG\", phone: 261 },\r\n { name: \"Malawi\", code: \"MW\", phone: 265 },\r\n { name: \"Malaysia\", code: \"MY\", phone: 60 },\r\n { name: \"Maldives\", code: \"MV\", phone: 960 },\r\n { name: \"Mali\", code: \"ML\", phone: 223 },\r\n { name: \"Malta\", code: \"MT\", phone: 356 },\r\n { name: \"Marshall Islands\", code: \"MH\", phone: 692 },\r\n { name: \"Martinique\", code: \"MQ\", phone: 596 },\r\n { name: \"Mauritania\", code: \"MR\", phone: 222 },\r\n { name: \"Mauritius\", code: \"MU\", phone: 230 },\r\n { name: \"Mayotte\", code: \"YT\", phone: 262 },\r\n { name: \"Mexico\", code: \"MX\", phone: 52 },\r\n { name: \"Micronesia\", code: \"FM\", phone: 691 },\r\n { name: \"Moldova, Republic of\", code: \"MD\", phone: 373 },\r\n { name: \"Monaco\", code: \"MC\", phone: 377 },\r\n { name: \"Mongolia\", code: \"MN\", phone: 976 },\r\n { name: \"Montenegro\", code: \"ME\", phone: 382 },\r\n { name: \"Montserrat\", code: \"MS\", phone: 1664 },\r\n { name: \"Morocco\", code: \"MA\", phone: 212 },\r\n { name: \"Mozambique\", code: \"MZ\", phone: 258 },\r\n { name: \"Myanmar\", code: \"MM\", phone: 95 },\r\n { name: \"Namibia\", code: \"NA\", phone: 264 },\r\n { name: \"Nauru\", code: \"NR\", phone: 674 },\r\n { name: \"Nepal\", code: \"NP\", phone: 977 },\r\n { name: \"Netherlands\", code: \"NL\", phone: 31 },\r\n { name: \"Netherlands Antilles\", code: \"AN\", phone: 599 },\r\n { name: \"New Caledonia\", code: \"NC\", phone: 687 },\r\n { name: \"New Zealand\", code: \"NZ\", phone: 64 },\r\n { name: \"Nicaragua\", code: \"NI\", phone: 505 },\r\n { name: \"Niger\", code: \"NE\", phone: 227 },\r\n { name: \"Nigeria\", code: \"NG\", phone: 234 },\r\n { name: \"Niue\", code: \"NU\", phone: 683 },\r\n { name: \"Norfolk Island\", code: \"NF\", phone: 672 },\r\n { name: \"Northern Mariana Islands\", code: \"MP\", phone: 1670 },\r\n { name: \"Norway\", code: \"NO\", phone: 47 },\r\n { name: \"Oman\", code: \"OM\", phone: 968 },\r\n { name: \"Pakistan\", code: \"PK\", phone: 92 },\r\n { name: \"Palau\", code: \"PW\", phone: 680 },\r\n { name: \"Palestinian Territory\", code: \"PS\", phone: 970 },\r\n { name: \"Panama\", code: \"PA\", phone: 507 },\r\n { name: \"Papua New Guinea\", code: \"PG\", phone: 675 },\r\n { name: \"Paraguay\", code: \"PY\", phone: 595 },\r\n { name: \"Peru\", code: \"PE\", phone: 51 },\r\n { name: \"Philippines\", code: \"PH\", phone: 63 },\r\n { name: \"Pitcairn\", code: \"PN\", phone: 64 },\r\n { name: \"Poland\", code: \"PL\", phone: 48 },\r\n { name: \"Portugal\", code: \"PT\", phone: 351 },\r\n { name: \"Puerto Rico\", code: \"PR\", phone: 1787 },\r\n { name: \"Qatar\", code: \"QA\", phone: 974 },\r\n { name: \"Reunion\", code: \"RE\", phone: 262 },\r\n { name: \"Romania\", code: \"RO\", phone: 40 },\r\n { name: \"Russian Federation\", code: \"RU\", phone: 7 },\r\n { name: \"Rwanda\", code: \"RW\", phone: 250 },\r\n { name: \"Saint Barthelemy\", code: \"BL\", phone: 590 },\r\n { name: \"Saint Helena\", code: \"SH\", phone: 290 },\r\n { name: \"Saint Kitts and Nevis\", code: \"KN\", phone: 1869 },\r\n { name: \"Saint Lucia\", code: \"LC\", phone: 1758 },\r\n { name: \"Saint Martin\", code: \"MF\", phone: 590 },\r\n { name: \"Saint Pierre and Miquelon\", code: \"PM\", phone: 508 },\r\n { name: \"Saint Vincent and the Grenadines\", code: \"VC\", phone: 1784 },\r\n { name: \"Samoa\", code: \"WS\", phone: 684 },\r\n { name: \"San Marino\", code: \"SM\", phone: 378 },\r\n { name: \"Sao Tome and Principe\", code: \"ST\", phone: 239 },\r\n { name: \"Saudi Arabia\", code: \"SA\", phone: 966 },\r\n { name: \"Senegal\", code: \"SN\", phone: 221 },\r\n { name: \"Serbia\", code: \"RS\", phone: 381 },\r\n { name: \"Seychelles\", code: \"SC\", phone: 248 },\r\n { name: \"Sierra Leone\", code: \"SL\", phone: 232 },\r\n { name: \"Singapore\", code: \"SG\", phone: 65 },\r\n { name: \"St Martin\", code: \"SX\", phone: 721 },\r\n { name: \"Slovakia\", code: \"SK\", phone: 421 },\r\n { name: \"Slovenia\", code: \"SI\", phone: 386 },\r\n { name: \"Solomon Islands\", code: \"SB\", phone: 677 },\r\n { name: \"Somalia\", code: \"SO\", phone: 252 },\r\n { name: \"South Africa\", code: \"ZA\", phone: 27 },\r\n { name: \"South Georgia and the South Sandwich Islands\", code: \"GS\", phone: 500 },\r\n { name: \"South Sudan\", code: \"SS\", phone: 211 },\r\n { name: \"Spain\", code: \"ES\", phone: 34 },\r\n { name: \"Sri Lanka\", code: \"LK\", phone: 94 },\r\n { name: \"Sudan\", code: \"SD\", phone: 249 },\r\n { name: \"Suriname\", code: \"SR\", phone: 597 },\r\n { name: \"Svalbard and Jan Mayen\", code: \"SJ\", phone: 47 },\r\n { name: \"Swaziland\", code: \"SZ\", phone: 268 },\r\n { name: \"Sweden\", code: \"SE\", phone: 46 },\r\n { name: \"Switzerland\", code: \"CH\", phone: 41 },\r\n { name: \"Syrian Arab Republic\", code: \"SY\", phone: 963 },\r\n { name: \"Taiwan, Province of China\", code: \"TW\", phone: 886 },\r\n { name: \"Tajikistan\", code: \"TJ\", phone: 992 },\r\n { name: \"Tanzania, United Republic of\", code: \"TZ\", phone: 255 },\r\n { name: \"Thailand\", code: \"TH\", phone: 66 },\r\n { name: \"Timor-Leste\", code: \"TL\", phone: 670 },\r\n { name: \"Togo\", code: \"TG\", phone: 228 },\r\n { name: \"Tokelau\", code: \"TK\", phone: 690 },\r\n { name: \"Tonga\", code: \"TO\", phone: 676 },\r\n { name: \"Trinidad and Tobago\", code: \"TT\", phone: 1868 },\r\n { name: \"Tunisia\", code: \"TN\", phone: 216 },\r\n { name: \"Turkey\", code: \"TR\", phone: 90 },\r\n { name: \"Turkmenistan\", code: \"TM\", phone: 7370 },\r\n { name: \"Turks and Caicos Islands\", code: \"TC\", phone: 1649 },\r\n { name: \"Tuvalu\", code: \"TV\", phone: 688 },\r\n { name: \"Uganda\", code: \"UG\", phone: 256 },\r\n { name: \"Ukraine\", code: \"UA\", phone: 380 },\r\n { name: \"United Arab Emirates\", code: \"AE\", phone: 971 },\r\n { name: \"United Kingdom\", code: \"GB\", phone: 44 },\r\n { name: \"United States\", code: \"US\", phone: 1 },\r\n { name: \"Uruguay\", code: \"UY\", phone: 598 },\r\n { name: \"Uzbekistan\", code: \"UZ\", phone: 998 },\r\n { name: \"Vanuatu\", code: \"VU\", phone: 678 },\r\n { name: \"Venezuela\", code: \"VE\", phone: 58 },\r\n { name: \"Viet Nam\", code: \"VN\", phone: 84 },\r\n { name: \"Virgin Islands, British\", code: \"VG\", phone: 1284 },\r\n { name: \"Virgin Islands, U.s.\", code: \"VI\", phone: 1340 },\r\n { name: \"Wallis and Futuna\", code: \"WF\", phone: 681 },\r\n { name: \"Western Sahara\", code: \"EH\", phone: 212 },\r\n { name: \"Yemen\", code: \"YE\", phone: 967 },\r\n { name: \"Zambia\", code: \"ZM\", phone: 260 },\r\n { name: \"Zimbabwe\", code: \"ZW\", phone: 263 }\r\n ], optionsContainer_1 = countryDropdown.querySelector('.country-dropdown__options'), searchInput_1 = countryDropdown.querySelector('.country-dropdown__search'), numberInput_1 = countryDropdown.querySelector('.country-dropdown__number'), dropdown_1 = countryDropdown.querySelector('.country-dropdown__inner');\r\n var options_1 = null;\r\n countries.forEach(function (country) {\r\n var option = \"\\n
  • \\n
    \\n \\n \" + country.name + \"\\n
    \\n +\" + country.phone + \"\\n
  • \";\r\n optionsContainer_1.querySelector('.country-dropdown__list').insertAdjacentHTML('beforeend', option);\r\n options_1 = countryDropdown.querySelectorAll('.country-dropdown__country-item');\r\n });\r\n var selectOption_1 = function (item) {\r\n var icon = item.querySelector('.country-dropdown__flag').cloneNode(true), phone_code = item.querySelector('.country-dropdown__country-code').cloneNode(true);\r\n phone_code.style.pointerEvents = 'none';\r\n icon.style.pointerEvents = 'none';\r\n dropdown_1.innerHTML = '';\r\n dropdown_1.append(icon, phone_code);\r\n numberInput_1.focus();\r\n optionsContainer_1.classList.remove('active');\r\n dropdown_1.classList.remove('active');\r\n optionsContainer_1.querySelectorAll('.hide').forEach(function (el) { return el.classList.remove('hide'); });\r\n };\r\n var searchCountry = function () {\r\n var searchQuery = searchInput_1.value.toLowerCase();\r\n options_1.forEach(function (option) {\r\n var countryNameElement = option.querySelector('.country-dropdown__title');\r\n var isMatched = countryNameElement.innerText.toLowerCase().includes(searchQuery);\r\n option.classList.toggle('hide', !isMatched);\r\n });\r\n };\r\n dropdown_1.addEventListener('click', function () {\r\n optionsContainer_1.classList.toggle('active');\r\n dropdown_1.classList.toggle('active');\r\n searchInput_1.focus();\r\n });\r\n dropdown_1.addEventListener('keydown', function (event) {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n optionsContainer_1.classList.add('active');\r\n dropdown_1.classList.add('active');\r\n searchInput_1.focus();\r\n }\r\n });\r\n options_1.forEach(function (option) { return option.addEventListener('click', function () {\r\n selectOption_1(option);\r\n }); });\r\n options_1.forEach(function (option) { return option.addEventListener('keydown', function (event) {\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n selectOption_1(option);\r\n }\r\n }); });\r\n searchInput_1.addEventListener('input', searchCountry);\r\n window.addEventListener('click', function (e) {\r\n var target = e.target;\r\n if (target.classList.contains('country-dropdown__inner') || target.classList.contains('country-dropdown__search')) {\r\n return;\r\n }\r\n else {\r\n optionsContainer_1.classList.remove('active');\r\n dropdown_1.classList.remove('active');\r\n }\r\n });\r\n }\r\n});\r\n},{}],21:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar curriculums = document.querySelector('.curriculums');\r\nif (curriculums) {\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],22:[function(require,module,exports){\nvar dateRange = document.querySelector('.date-range');\r\nif (dateRange) {\r\n var dateRangeFilterTrigger = dateRange.querySelector('.date-range__icon-container');\r\n var dateRangeInner_1 = dateRange.querySelector('.date-range__inner');\r\n var dateRangeIcon_1 = dateRange.querySelector('.date-range__icon-container');\r\n var dateRangeInputs = dateRange.querySelectorAll('.date-range__input');\r\n var handleDateClick_1 = function (input) {\r\n try {\r\n input.showPicker();\r\n }\r\n catch (error) {\r\n console.error(error.message);\r\n }\r\n };\r\n if (dateRangeInner_1 && dateRangeIcon_1) {\r\n var handleTrigger_1 = function () {\r\n dateRangeInner_1.classList.toggle('date-range__inner--active');\r\n dateRangeIcon_1.classList.toggle('date-range__icon-container--active');\r\n };\r\n var closeDateRange_1 = function () {\r\n dateRangeInner_1.classList.remove('date-range__inner--active');\r\n dateRangeIcon_1.classList.remove('date-range__icon-container--active');\r\n };\r\n dateRangeInputs.forEach(function (input) {\r\n input.addEventListener('click', function () {\r\n handleDateClick_1(input);\r\n });\r\n input.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n handleDateClick_1(input);\r\n }\r\n });\r\n input.addEventListener('input', function () {\r\n input.classList.add('date-range__input--active');\r\n input.nextElementSibling.classList.add('date-range__input-overlay--hidden');\r\n });\r\n });\r\n dateRangeFilterTrigger.addEventListener('click', function () {\r\n handleTrigger_1();\r\n });\r\n dateRangeFilterTrigger.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n handleTrigger_1();\r\n }\r\n });\r\n document.addEventListener('click', function (event) {\r\n if (event.target instanceof Element) {\r\n if (dateRange && !dateRange.contains(event.target)) {\r\n closeDateRange_1();\r\n }\r\n }\r\n });\r\n document.addEventListener('keydown', function (event) {\r\n if (event.key === 'Escape') {\r\n closeDateRange_1();\r\n }\r\n });\r\n }\r\n}\r\n},{}],23:[function(require,module,exports){\nvar digitalLibrary = document.querySelector('.digital-library-list__wrapper');\r\nif (digitalLibrary) {\r\n var digitalCards = digitalLibrary.querySelectorAll('.digital-library-list__item');\r\n if (digitalCards.length > 0) {\r\n var top_1 = 180;\r\n var headerHeight_1 = 65;\r\n if (window.innerWidth < 1200) {\r\n top_1 = 20;\r\n }\r\n digitalCards.forEach(function (card, i) {\r\n var incValue = i * headerHeight_1;\r\n if (i === 0) {\r\n card.style.top = top_1 + \"px\";\r\n }\r\n else {\r\n card.style.top = top_1 + incValue + \"px\";\r\n }\r\n });\r\n }\r\n}\r\n},{}],24:[function(require,module,exports){\nvar filters = document.querySelectorAll(\".dropdown-filter\");\r\nvar direction = document.querySelector(\"html\").getAttribute(\"dir\");\r\nfilters.forEach(function (item) {\r\n var selects = item.querySelectorAll(\".multi-select\");\r\n selects.forEach(function (select) {\r\n init(select);\r\n });\r\n document.addEventListener('click', function (e) {\r\n var selects = document.querySelectorAll(\".multi-select\");\r\n var buttonContainer = document.querySelectorAll(\".dropdown-filter__button-container\");\r\n var triggers = document.querySelectorAll(\".dropdown-filter__trigger\");\r\n for (var i = 0; i < selects.length; i++) {\r\n if (e) {\r\n var isClickInside = selects[i].parentElement.parentElement.contains(e.target);\r\n if (!isClickInside) {\r\n var wrapper = selects[i].parentElement.parentElement;\r\n var dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n var autocomplete_list = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n dropdown.classList.remove(\"active\");\r\n var multiSelects = document.querySelectorAll(\".dropdown-filter__multi-select-container\");\r\n multiSelects[i].classList.remove(\"dropdown-filter__multi-select-container--active\");\r\n buttonContainer[i].classList.remove(\"dropdown-filter__button-container--active\");\r\n triggers[i].classList.remove(\"dropdown-filter__trigger--active\");\r\n autocomplete_list.innerHTML = \"\";\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n }\r\n });\r\n var trigger = item.querySelector(\".dropdown-filter__trigger\");\r\n if (trigger) {\r\n trigger.addEventListener(\"click\", handleTrigger);\r\n trigger.addEventListener(\"keydown\", function (e) {\r\n if (e.key === \"Enter\") {\r\n handleTrigger(e);\r\n }\r\n });\r\n }\r\n function handleTrigger(e) {\r\n var wrapper = item.querySelector(\".dropdown-filter__multi-select-container\");\r\n var buttonContainer = item.querySelector(\".dropdown-filter__button-container\");\r\n if (wrapper.classList.contains(\"dropdown-filter__multi-select-container--active\")) {\r\n wrapper.classList.remove(\"dropdown-filter__multi-select-container--active\");\r\n buttonContainer.classList.remove(\"dropdown-filter__button-container--active\");\r\n trigger.classList.remove(\"dropdown-filter__trigger--active\");\r\n }\r\n else {\r\n wrapper.classList.add(\"dropdown-filter__multi-select-container--active\");\r\n buttonContainer.classList.add(\"dropdown-filter__button-container--active\");\r\n trigger.classList.add(\"dropdown-filter__trigger--active\");\r\n }\r\n var dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n var event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n function init(element) {\r\n var filter = item;\r\n var wrapper = document.createElement(\"div\");\r\n wrapper.addEventListener(\"click\", clickOnWrapper);\r\n wrapper.classList.add(\"dropdown-filter__multi-select-container\");\r\n var search_div = document.createElement(\"div\");\r\n search_div.classList.add(\"dropdown-filter__search-container\");\r\n var buttonContainer = document.createElement(\"div\");\r\n buttonContainer.classList.add(\"dropdown-filter__button-container\");\r\n var input = document.createElement(\"input\");\r\n input.classList.add(\"selected-input\");\r\n input.setAttribute(\"autocomplete\", \"off\");\r\n input.setAttribute(\"tabindex\", \"0\");\r\n input.addEventListener(\"keyup\", inputChange);\r\n input.addEventListener(\"keydown\", deletePressed);\r\n input.addEventListener(\"click\", openOptions);\r\n var dropdown_icon = document.createElement(\"a\");\r\n dropdown_icon.classList.add(\"dropdown-filter__dropdown-icon\");\r\n dropdown_icon.addEventListener(\"click\", clickDropdown);\r\n var autocomplete_list = document.createElement(\"ul\");\r\n autocomplete_list.classList.add(\"dropdown-filter__autocomplete-list\");\r\n search_div.appendChild(input);\r\n search_div.appendChild(autocomplete_list);\r\n search_div.appendChild(dropdown_icon);\r\n filter.appendChild(buttonContainer);\r\n element.parentNode.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n wrapper.appendChild(search_div);\r\n createInitialTokens(element);\r\n addPlaceholder(wrapper);\r\n }\r\n function removePlaceholder(wrapper) {\r\n var input_search = wrapper.querySelector(\".selected-input\");\r\n input_search.removeAttribute(\"placeholder\");\r\n }\r\n function addPlaceholder(wrapper) {\r\n var input_search = wrapper.querySelector(\".selected-input\");\r\n var tokens = wrapper.querySelectorAll(\".dropdown-filter__selected-wrapper\");\r\n if (!tokens.length && !(document.activeElement === input_search))\r\n input_search.setAttribute(\"placeholder\", \"---------\");\r\n }\r\n function createInitialTokens(select) {\r\n var options_selected = getOptions(select).options_selected;\r\n var wrapper = select.parentNode;\r\n for (var i = 0; i < options_selected.length; i++) {\r\n createToken(wrapper, options_selected[i]);\r\n }\r\n }\r\n function inputChange(e) {\r\n var wrapper = e.target.parentNode.parentNode;\r\n var select = wrapper.querySelector(\"select\");\r\n var dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n var input_val = e.target.value;\r\n if (input_val) {\r\n dropdown.classList.add(\"active\");\r\n populateAutocompleteList(select, input_val.trim());\r\n }\r\n else {\r\n dropdown.classList.remove(\"active\");\r\n var event_1 = new Event('click');\r\n dropdown.dispatchEvent(event_1);\r\n }\r\n }\r\n function clickOnWrapper(e) {\r\n var wrapper = e.target;\r\n if (wrapper.tagName == \"DIV\") {\r\n var input_search = wrapper.querySelector(\".selected-input\");\r\n var dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n if (!dropdown.classList.contains(\"active\")) {\r\n var event_2 = new Event('click');\r\n dropdown.dispatchEvent(event_2);\r\n }\r\n input_search.focus();\r\n removePlaceholder(wrapper);\r\n }\r\n }\r\n function openOptions(e) {\r\n var input_search = e.target;\r\n var wrapper = input_search.parentElement.parentElement;\r\n var dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n if (!dropdown.classList.contains(\"active\")) {\r\n var event_3 = new Event('click');\r\n dropdown.dispatchEvent(event_3);\r\n }\r\n e.stopPropagation();\r\n }\r\n function createToken(wrapper, value) {\r\n var buttonContainer = item.querySelector(\".dropdown-filter__button-container\");\r\n var tokenContainer = document.createElement(\"div\");\r\n tokenContainer.classList.add(\"wrapper\");\r\n var token = document.createElement(\"div\");\r\n token.classList.add(\"dropdown-filter__selected-wrapper\");\r\n var token_span = document.createElement(\"span\");\r\n token_span.classList.add(\"selected-label\");\r\n token_span.innerText = value;\r\n var close = document.createElement(\"a\");\r\n close.classList.add(\"selected-close\");\r\n close.setAttribute(\"tabindex\", \"-1\");\r\n close.setAttribute(\"data-option\", value);\r\n close.setAttribute(\"data-hits\", \"0\");\r\n close.addEventListener(\"click\", removeToken);\r\n token.appendChild(token_span);\r\n token.appendChild(close);\r\n buttonContainer.appendChild(token);\r\n }\r\n function clickDropdown(e) {\r\n var dropdown = e.target;\r\n var wrapper = dropdown.parentNode.parentNode;\r\n var input_search = wrapper.querySelector(\".selected-input\");\r\n var select = wrapper.querySelector(\"select\");\r\n dropdown.classList.toggle(\"active\");\r\n if (dropdown.classList.contains(\"active\")) {\r\n removePlaceholder(wrapper);\r\n input_search.focus();\r\n if (!input_search.value) {\r\n populateAutocompleteList(select, \"\", true);\r\n }\r\n else {\r\n populateAutocompleteList(select, input_search.value);\r\n }\r\n }\r\n else {\r\n clearAutocompleteList(select);\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n function clearAutocompleteList(select) {\r\n var wrapper = select.parentNode;\r\n var autocomplete_list = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n autocomplete_list.innerHTML = \"\";\r\n }\r\n function populateAutocompleteList(select, query, dropdown) {\r\n if (dropdown === void 0) { dropdown = false; }\r\n var _a = getOptions(select), autocomplete_options = _a.autocomplete_options, all_options = _a.all_options, options_selected = _a.options_selected;\r\n var options_to_show;\r\n if (dropdown)\r\n options_to_show = autocomplete_options;\r\n else\r\n options_to_show = autocomplete(query, autocomplete_options);\r\n var wrapper = select.parentNode;\r\n var autocomplete_list = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n autocomplete_list.innerHTML = \"\";\r\n var result_size = options_to_show.length;\r\n if (result_size == 1) {\r\n var li = document.createElement(\"li\");\r\n li.innerText = options_to_show[0];\r\n li.setAttribute('data-value', options_to_show[0]);\r\n li.addEventListener(\"click\", selectOption);\r\n autocomplete_list.appendChild(li);\r\n if (query.length == options_to_show[0].length) {\r\n var event_4 = new Event('click');\r\n li.dispatchEvent(event_4);\r\n }\r\n }\r\n else if (result_size > 1) {\r\n for (var i = 0; i < result_size; i++) {\r\n var li = document.createElement(\"li\");\r\n li.innerText = options_to_show[i];\r\n li.setAttribute('data-value', options_to_show[i]);\r\n li.addEventListener(\"click\", selectOption);\r\n autocomplete_list.appendChild(li);\r\n }\r\n }\r\n else {\r\n var li = document.createElement(\"li\");\r\n li.classList.add(\"not-cursor\");\r\n if (direction === \"rtl\") {\r\n li.innerText = \"لم يتم العثور على خيارات\";\r\n }\r\n else {\r\n li.innerText = \"No options found\";\r\n }\r\n autocomplete_list.appendChild(li);\r\n }\r\n handleListItems(options_selected);\r\n }\r\n function selectOption(e) {\r\n var filterComponent = item;\r\n var select = filterComponent.querySelector(\".multi-select\");\r\n var options_selected = Array.from(select.querySelectorAll(\"option:checked\")).map(function (el) { return el.value; });\r\n if (options_selected.includes(e.target.dataset.value)) {\r\n removeTokenList(e.target.dataset.value);\r\n return;\r\n }\r\n var wrapper = e.target.parentNode.parentNode.parentNode;\r\n var input_search = wrapper.querySelector(\".selected-input\");\r\n var option = wrapper.querySelector(\"select option[value=\\\"\" + e.target.dataset.value + \"\\\"]\");\r\n option.setAttribute(\"selected\", \"\");\r\n createToken(wrapper, e.target.dataset.value);\r\n if (input_search.value) {\r\n input_search.value = \"\";\r\n }\r\n input_search.focus();\r\n var autocomplete_list = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n if (!autocomplete_list.children.length) {\r\n var li = document.createElement(\"li\");\r\n li.classList.add(\"not-cursor\");\r\n li.innerText = \"No options found\";\r\n autocomplete_list.appendChild(li);\r\n }\r\n var event = new Event('keyup');\r\n input_search.dispatchEvent(event);\r\n e.stopPropagation();\r\n }\r\n function autocomplete(query, options) {\r\n if (!query) {\r\n return options;\r\n }\r\n var options_return = [];\r\n for (var i = 0; i < options.length; i++) {\r\n if (options[i].toLowerCase().includes(query.toLowerCase())) {\r\n options_return.push(options[i]);\r\n }\r\n }\r\n return options_return;\r\n }\r\n function getOptions(select) {\r\n var all_options = Array.from(select.querySelectorAll(\"option\")).map(function (el) { return el.value; });\r\n var options_selected = Array.from(select.querySelectorAll(\"option:checked\")).map(function (el) { return el.value; });\r\n var autocomplete_options = [];\r\n all_options.forEach(function (option) {\r\n if (!options_selected.includes(option)) {\r\n autocomplete_options.push(option);\r\n }\r\n });\r\n autocomplete_options.sort();\r\n autocomplete_options = all_options;\r\n return {\r\n options_selected: options_selected,\r\n autocomplete_options: autocomplete_options,\r\n all_options: all_options\r\n };\r\n }\r\n function removeToken(e) {\r\n var value_to_remove = e.target.dataset.option;\r\n var wrapper = item.querySelector(\".multi-select\");\r\n var input_search = item.querySelector(\".selected-input\");\r\n var dropdown = item.querySelector(\".dropdown-filter__dropdown-icon\");\r\n var option_to_unselect = wrapper.querySelector(\"select option[value=\\\"\" + value_to_remove + \"\\\"]\");\r\n option_to_unselect.removeAttribute(\"selected\");\r\n e.target.parentNode.remove();\r\n input_search.focus();\r\n dropdown.classList.remove(\"active\");\r\n var event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n e.stopPropagation();\r\n }\r\n function removeTokenList(value) {\r\n var value_to_remove = value;\r\n var wrapper = item.querySelector(\".multi-select\");\r\n var input_search = item.querySelector(\".selected-input\");\r\n var option_to_unselect = wrapper.querySelector(\"select option[value=\\\"\" + value_to_remove + \"\\\"]\");\r\n option_to_unselect.removeAttribute(\"selected\");\r\n var options_selected = [];\r\n var selectedElements = item.querySelectorAll(\".selected-label\");\r\n selectedElements.forEach(function (el) {\r\n if (el.textContent === value) {\r\n el.parentElement.remove();\r\n }\r\n });\r\n var updatedSelectedElements = item.querySelectorAll(\".selected-label\");\r\n updatedSelectedElements.forEach(function (item) {\r\n options_selected.push(item.textContent);\r\n });\r\n input_search.focus();\r\n handleListItems(options_selected);\r\n }\r\n function deletePressed(e) {\r\n var wrapper = e.target.parentNode.parentNode;\r\n var input_search = e.target;\r\n var key = e.keyCode || e.charCode;\r\n var tokens = wrapper.querySelectorAll(\".dropdown-filter__selected-wrapper\");\r\n if (tokens.length) {\r\n var last_token_x = tokens[tokens.length - 1].querySelector(\"a\");\r\n var hits = +last_token_x.dataset.hits;\r\n if (key == 8 || key == 46) {\r\n if (!input_search.value) {\r\n if (hits > 1) {\r\n var event_5 = new Event('click');\r\n last_token_x.dispatchEvent(event_5);\r\n }\r\n else {\r\n last_token_x.dataset.hits = 2;\r\n }\r\n }\r\n }\r\n else {\r\n last_token_x.dataset.hits = 0;\r\n }\r\n }\r\n return true;\r\n }\r\n function addOption(target, val, text) {\r\n var select = item.querySelector(target);\r\n var opt = document.createElement('option');\r\n opt.value = val;\r\n opt.innerHTML = text;\r\n select.appendChild(opt);\r\n }\r\n var handleListItems = function (arr) {\r\n var list = item.querySelectorAll(\".dropdown-filter__autocomplete-list li\");\r\n list.forEach(function (item) {\r\n if (arr.includes(item.textContent)) {\r\n item.classList.add(\"item--active\");\r\n }\r\n else {\r\n item.classList.remove(\"item--active\");\r\n }\r\n });\r\n };\r\n});\r\n},{}],25:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar eservicesComponent = document.querySelector('.e-services');\r\nif (eservicesComponent) {\r\n var eserviceCarousels = eservicesComponent.querySelectorAll('.e-services__carousel-inner');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n var eserviceTabs_1 = eservicesComponent.querySelectorAll('.e-services__tab');\r\n var eserviceCarouselsContainer_1 = eservicesComponent.querySelectorAll('.e-services__carousel');\r\n var activeTab_1 = 0;\r\n if (eserviceCarousels.length > 0) {\r\n var eserviceCarouselsArray = Array.from(eserviceCarousels) || [];\r\n eserviceCarouselsArray.forEach(function (item) {\r\n var glideSettings = {\r\n type: 'slider',\r\n perView: 4,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction_1 || 'ltr',\r\n breakpoints: {\r\n 1400: {\r\n perView: 3,\r\n },\r\n 1100: {\r\n perView: 2,\r\n gap: 16,\r\n },\r\n },\r\n };\r\n var glide = new glide_1.default(item, glideSettings);\r\n glide.mount();\r\n });\r\n }\r\n var resetAll_1 = function () {\r\n eserviceCarouselsContainer_1.forEach(function (carousel) { return carousel.classList.remove('e-services__carousel--active'); });\r\n eserviceTabs_1.forEach(function (tab) { return tab.classList.remove('e-services__tab--active'); });\r\n };\r\n var showActiveItems_1 = function (activeTab) {\r\n resetAll_1();\r\n eserviceTabs_1[activeTab].classList.add('e-services__tab--active');\r\n eserviceCarouselsContainer_1[activeTab].classList.add('e-services__carousel--active');\r\n };\r\n eserviceTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n showActiveItems_1(activeTab_1);\r\n });\r\n });\r\n showActiveItems_1(activeTab_1);\r\n var shareButtons = eservicesComponent.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n var favButtons = eservicesComponent.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach(function (button) {\r\n var dataIdAttr = button.getAttribute('data-id');\r\n var type = button.getAttribute('data-type');\r\n var favouritedIds = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n var dataId_1 = parseInt(dataIdAttr);\r\n if (isFavourite_1.IsFavourited(dataId_1, favouritedIds)) {\r\n button.classList.add('active');\r\n }\r\n else {\r\n button.classList.remove('active');\r\n }\r\n button.addEventListener('click', function (e) {\r\n console.log('small button clicked - events details');\r\n favourites_1.default(type, dataId_1, button);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8,\"@glidejs/glide\":108}],26:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar eacomponent = document.querySelectorAll(\".employee-access-component\");\r\nif (eacomponent) {\r\n var buttons = document.querySelectorAll(\".employee-access-component__button\");\r\n buttons.forEach(function (button) {\r\n button.addEventListener(\"click\", function (e) {\r\n var target = e.target;\r\n if (target.classList.contains(\"button\") || target.classList.contains(\"button__image\")) {\r\n e.preventDefault();\r\n }\r\n if (target.classList.contains(\"shareButton\")) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],27:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar addToCalendar_1 = __importDefault(require(\"../../../helpers/addToCalendar\"));\r\nvar enrichKnowledge = document.querySelector('.enrich-knowledge');\r\nif (enrichKnowledge) {\r\n var enrichTabs_1 = enrichKnowledge.querySelectorAll('.enrich-knowledge__tab');\r\n var sections_1 = enrichKnowledge.querySelectorAll('.enrich-knowledge__section');\r\n var activeTab_1 = 0;\r\n var resetTabs_1 = function () {\r\n enrichTabs_1.forEach(function (tab) { return tab.classList.remove('enrich-knowledge__tab--active'); });\r\n sections_1.forEach(function (tab) { return tab.classList.remove('enrich-knowledge__section--active'); });\r\n };\r\n enrichTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n enrichTabs_1[activeTab_1].classList.add('enrich-knowledge__tab--active');\r\n sections_1[activeTab_1].classList.add('enrich-knowledge__section--active');\r\n });\r\n });\r\n sections_1.forEach(function (section) {\r\n var accordion = section.firstElementChild;\r\n if (accordion != null) {\r\n if (accordion.classList.contains('enrich-knowledge__accordion')) {\r\n accordion.setAttribute('open', 'true');\r\n }\r\n }\r\n var accordions = section.querySelectorAll('.enrich-knowledge__accordion');\r\n accordions.forEach(function (childAccordion) {\r\n childAccordion.addEventListener('toggle', function () {\r\n if (childAccordion.open) {\r\n accordions.forEach(function (otherAccordion) {\r\n if (otherAccordion !== childAccordion) {\r\n otherAccordion.removeAttribute('open');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n });\r\n var favButtons = document.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach(function (button) {\r\n var dataIdAttr = button.getAttribute('data-id');\r\n var type = button.getAttribute('data-type');\r\n var favouritedIds = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n var dataId_1 = parseInt(dataIdAttr);\r\n if (isFavourite_1.IsFavourited(dataId_1, favouritedIds)) {\r\n button.classList.add('active');\r\n }\r\n else {\r\n button.classList.remove('active');\r\n }\r\n button.addEventListener('click', function (e) {\r\n console.log('small button clicked - program details');\r\n favourites_1.default(type, dataId_1, button);\r\n });\r\n }\r\n });\r\n }\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n var calButtons = document.querySelectorAll('.calButton');\r\n if (calButtons && calButtons.length > 0) {\r\n calButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n addToCalendar_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/addToCalendar\":2,\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8}],28:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar addToCalendar_1 = __importDefault(require(\"../../../helpers/addToCalendar\"));\r\nvar eventsDetails = document.querySelector('.event-details');\r\nif (eventsDetails) {\r\n var favButtons = document.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach(function (button) {\r\n var dataIdAttr = button.getAttribute('data-id');\r\n var type = button.getAttribute('data-type');\r\n var favouritedIds = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n var dataId_1 = parseInt(dataIdAttr);\r\n if (isFavourite_1.IsFavourited(dataId_1, favouritedIds)) {\r\n button.classList.add('active');\r\n }\r\n else {\r\n button.classList.remove('active');\r\n }\r\n button.addEventListener('click', function (e) {\r\n console.log('small button clicked - events details');\r\n favourites_1.default(type, dataId_1, button);\r\n });\r\n }\r\n });\r\n }\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n var calButtons = document.querySelectorAll('.calButton');\r\n if (calButtons && calButtons.length > 0) {\r\n calButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n addToCalendar_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/addToCalendar\":2,\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8}],29:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar eventsCalendar = document.querySelector('.events-calendar');\r\nif (eventsCalendar) {\r\n var eventsCalendarCarousel = eventsCalendar.querySelector('.events-calendar__carousel-inner');\r\n var carouselItemsContainer_1 = eventsCalendar.querySelector('.events-calendar__carousel-slides');\r\n var tabs_1 = eventsCalendar.querySelectorAll('.events-calendar__tab');\r\n var columns_1 = eventsCalendar.querySelectorAll('.events-calendar__column');\r\n var eventsListSearchInput_1 = eventsCalendar.querySelector('.events-calendar__search-input');\r\n var eventsCalendarDateFrom = eventsCalendar.querySelector('.date-range__input-from');\r\n var eventsCalendarDateTo = eventsCalendar.querySelector('.date-range__input-to');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var activeTab_1 = 0;\r\n var activeItem_1 = 0;\r\n var eventCalendarCards_1 = [];\r\n var keyword_1 = '';\r\n var dateFrom_1 = '';\r\n var dateTo_1 = '';\r\n var eventType_1 = 0;\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = 100;\r\n var createWeekButtons = function () {\r\n var oneDay = 24 * 60 * 60 * 1000;\r\n var today = new Date();\r\n var getStartOfCurrentWeek = function (date) {\r\n var day = date.getDay();\r\n var diff = date.getDate() - day + (day >= 5 ? 6 : -1);\r\n return new Date(date.setDate(diff));\r\n };\r\n var currentDate = today.getDay() === 5 ? today : getStartOfCurrentWeek(today);\r\n for (var i = 0; i < 52; i++) {\r\n var startOfWeek = new Date(currentDate);\r\n var endOfWeek = new Date(startOfWeek.getTime() + 6 * oneDay);\r\n if (i === 0) {\r\n dateFrom_1 = startOfWeek.toISOString().split('T')[0];\r\n dateTo_1 = endOfWeek.toISOString().split('T')[0];\r\n }\r\n var button = document.createElement('button');\r\n button.className =\r\n 'events-calendar__carousel-item events-calendar__carousel-item--active flex flex--align-center flex--justify-center';\r\n var startMonth = '';\r\n var endMonth = '';\r\n if (direction_1 === 'rtl') {\r\n startMonth = startOfWeek.toLocaleDateString('ar', { month: 'long' });\r\n endMonth = endOfWeek.toLocaleDateString('ar', { month: 'long' });\r\n }\r\n else {\r\n startMonth = startOfWeek.toLocaleDateString('en-US', { month: 'long' });\r\n endMonth = endOfWeek.toLocaleDateString('en-US', { month: 'long' });\r\n }\r\n var buttonText = startOfWeek.getDate() + \"-\" + endOfWeek.getDate();\r\n if (startMonth !== endMonth) {\r\n buttonText += \" \" + startMonth + \"/\" + endMonth;\r\n }\r\n else {\r\n buttonText += \" \" + startMonth;\r\n }\r\n button.textContent = buttonText;\r\n button.setAttribute('data-date-from', startOfWeek.toISOString().split('T')[0]);\r\n button.setAttribute('data-date-to', endOfWeek.toISOString().split('T')[0]);\r\n carouselItemsContainer_1.appendChild(button);\r\n currentDate = new Date(currentDate.getTime() + 7 * oneDay);\r\n }\r\n };\r\n var resetTabs_1 = function () {\r\n tabs_1.forEach(function (tab) { return tab.classList.remove('events-calendar__tab--active'); });\r\n };\r\n var fetchEvents_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n payload = {\r\n keyword: keyword_1,\r\n dateFrom: dateFrom_1,\r\n dateTo: dateTo_1,\r\n eventType: eventType_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('/api/events', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/events', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n eventCalendarCards_1 = response.data.items;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 8];\r\n case 7:\r\n updateCards_1(eventCalendarCards_1);\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n }); };\r\n var glideSettings = {\r\n type: 'slider',\r\n perView: 9,\r\n gap: 0,\r\n rewind: false,\r\n bound: false,\r\n direction: direction_1 || 'ltr',\r\n breakpoints: {\r\n 992: {\r\n perView: 6,\r\n },\r\n 768: {\r\n perView: 5,\r\n },\r\n 480: {\r\n perView: 3,\r\n },\r\n },\r\n };\r\n createWeekButtons();\r\n var glide_2 = new glide_1.default(eventsCalendarCarousel, glideSettings);\r\n glide_2.mount();\r\n var carouselItems = eventsCalendar.querySelectorAll('.events-calendar__carousel-item');\r\n carouselItems.forEach(function (item, index) {\r\n item.addEventListener('click', function () {\r\n activeItem_1 = index;\r\n glide_2.go(\"=\" + index);\r\n if (index > 0) {\r\n resetTabs_1();\r\n tabs_1[1].classList.add('events-calendar__tab--active');\r\n }\r\n });\r\n });\r\n var timeout_1 = null;\r\n glide_2.on('move.after', function () {\r\n activeItem_1 === glide_2.index;\r\n if (glide_2.index > 0) {\r\n resetTabs_1();\r\n tabs_1[1].classList.add('events-calendar__tab--active');\r\n activeItem_1 = glide_2.index;\r\n }\r\n else if (glide_2.index === 0) {\r\n resetTabs_1();\r\n tabs_1[0].classList.add('events-calendar__tab--active');\r\n activeItem_1 = 0;\r\n }\r\n eventsListSearchInput_1.value = '';\r\n var carouselTabs = eventsCalendar.querySelectorAll('.events-calendar__carousel-item');\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n dateFrom_1 = carouselTabs[activeItem_1].getAttribute('data-date-from');\r\n dateTo_1 = carouselTabs[activeItem_1].getAttribute('data-date-to');\r\n fetchEvents_1();\r\n }, 100);\r\n });\r\n tabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n tabs_1[activeTab_1].classList.add('events-calendar__tab--active');\r\n if (index === 0) {\r\n glide_2.go(\"=0\");\r\n }\r\n if (index === 1 && activeItem_1 === 0) {\r\n activeItem_1 = 1;\r\n glide_2.go(\"=1\");\r\n }\r\n });\r\n });\r\n if (window.innerWidth < 992) {\r\n var eventsCalendarColumns_1 = eventsCalendar.querySelectorAll('.events-calendar__column');\r\n eventsCalendarColumns_1.forEach(function (column) {\r\n column.removeAttribute('open');\r\n eventsCalendarColumns_1[0].open = true;\r\n });\r\n }\r\n eventsListSearchInput_1.addEventListener('input', function (e) {\r\n var target = e.target;\r\n var searchInputValue = target.value.toLowerCase();\r\n var cards = eventsCalendar.querySelectorAll('.events-calendar__card');\r\n cards.forEach(function (card) {\r\n var _a;\r\n var cardText = ((_a = card.querySelector('.events-calendar__card-text').textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';\r\n if (cardText.includes(searchInputValue)) {\r\n card.classList.remove('hidden');\r\n }\r\n else {\r\n card.classList.add('hidden');\r\n }\r\n });\r\n });\r\n var updateCards_1 = function (items) {\r\n columns_1.forEach(function (column) {\r\n var cards = column.querySelectorAll('.events-calendar__card');\r\n cards.forEach(function (card) { return card.remove(); });\r\n });\r\n items.forEach(function (item) {\r\n createCard_1(item);\r\n });\r\n setColumnNumbers_1();\r\n };\r\n var createCard_1 = function (item) {\r\n var card = document.createElement('a');\r\n card.className = 'events-calendar__card flex flex--column fade-in';\r\n card.setAttribute('href', item.link);\r\n card.setAttribute('data-from', item.start_Date);\r\n card.setAttribute('data-to', item.end_Date);\r\n card.innerHTML = \"\\n \\\"this\\n

    \" + item.title + \"

    \\n \";\r\n var dayToColumnIndex = {\r\n 6: 0,\r\n 0: 1,\r\n 1: 2,\r\n 2: 3,\r\n 3: 4,\r\n 4: 5,\r\n 5: -1,\r\n };\r\n var dayOfWeek = new Date(item.start_Date).getDay();\r\n var columnIndex = dayToColumnIndex[dayOfWeek];\r\n if (columnIndex !== -1) {\r\n var cardsContainer = columns_1[columnIndex].querySelector('.events-calendar__cards');\r\n cardsContainer.appendChild(card);\r\n }\r\n };\r\n var setColumnNumbers_1 = function () {\r\n columns_1.forEach(function (column) {\r\n var numberContainer = column.querySelector('.events-calendar__column-number');\r\n var cardsContainer = column.querySelector('.events-calendar__cards');\r\n var numberOfCards = cardsContainer.children.length;\r\n var formattedNumber;\r\n if (numberOfCards === 0) {\r\n formattedNumber = '0';\r\n }\r\n else if (numberOfCards < 10) {\r\n formattedNumber = '0' + numberOfCards;\r\n }\r\n else {\r\n formattedNumber = numberOfCards.toString();\r\n }\r\n numberContainer.textContent = formattedNumber;\r\n });\r\n };\r\n fetchEvents_1();\r\n}\r\n},{\"@glidejs/glide\":108,\"axios\":109}],30:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],31:[function(require,module,exports){\nvar cards = document.querySelectorAll(\".events-card\");\r\nif (cards && cards.length > 0) {\r\n var cardButtons = document.querySelectorAll(\".events-card__button\");\r\n cards.forEach(function (card) {\r\n card.addEventListener(\"click\", function (e) {\r\n var target = e.target;\r\n if (target.classList.contains(\"button\") || target.classList.contains(\"button__image\")) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener(\"click\", function (e) {\r\n });\r\n });\r\n}\r\n},{}],32:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar addToCalendar_1 = __importDefault(require(\"../../../helpers/addToCalendar\"));\r\nvar isUserLoggedIn_1 = __importDefault(require(\"../../../helpers/isUserLoggedIn\"));\r\nvar eventsList = document.querySelector('.events-list');\r\nif (eventsList) {\r\n var eventsGrid_1 = eventsList.querySelector('.events-list__grid');\r\n var eventsFilters_1 = eventsList.querySelector('.events-list__search');\r\n var eventsListSearchInput_1 = eventsList.querySelector('.events-list__search-input');\r\n var eventDateFrom = eventsList.querySelector('.date-range__input-from');\r\n var eventDateTo = eventsList.querySelector('.date-range__input-to');\r\n var eventTabs_1 = eventsList.querySelectorAll('.events-list__tab');\r\n var eventTabsComponent_1 = eventsList.querySelector('.events-list__tabs');\r\n var nextPageButton = eventsList.querySelector('.pagination__page-next');\r\n var prevPageButton = eventsList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = eventsList.querySelector('.pagination__dropdown');\r\n var paginationLast = eventsList.querySelector('.pagination__page-last');\r\n var paginationFirst = eventsList.querySelector('.pagination__page-first');\r\n var pagination_2 = eventsList.querySelector('.pagination');\r\n var radios = eventsList.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var favouritedIds_1 = JSON.parse(eventsGrid_1.getAttribute('data-ids'));\r\n var activeTab_1 = 0;\r\n var eventCards_1 = [];\r\n var keyword_1 = '';\r\n var dateFrom_1 = '';\r\n var dateTo_1 = '';\r\n var eventType_1 = 1;\r\n var sortBy_1 = 2;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var eventCardSettings_1 = {\r\n dateFromText: '',\r\n dateToText: '',\r\n locationText: '',\r\n };\r\n var resetTabs_1 = function () {\r\n eventTabs_1.forEach(function (tab) { return tab.classList.remove('events-list__tab--active'); });\r\n };\r\n var fetchEventCardSettings_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"https://app-prd-umbracoportal-uaenorth.azurewebsites.net/api/events/cardsettings?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n eventCardSettings_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchEvents_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n dateFrom: dateFrom_1,\r\n dateTo: dateTo_1,\r\n eventType: eventType_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, 4, 5]);\r\n return [4, axios_1.default.post('/api/events', payload)];\r\n case 2:\r\n response = _a.sent();\r\n eventCards_1 = response.data.items;\r\n if (eventCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 5];\r\n case 3:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 5];\r\n case 4:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, eventCards_1, fetchEvents_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n eventsGrid_1.innerHTML = '';\r\n eventCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'events-card flex fade-in';\r\n var _class = '';\r\n if (isFavourite_1.IsFavourited(card.id, favouritedIds_1)) {\r\n _class = 'active';\r\n }\r\n cardElement.innerHTML = \"\\n
    \\n \\\"\\\"\\n
    \\n
    \\n
    \\n \" + (isUserLoggedIn_1.default()\r\n ? \"\"\r\n : '') + \"\\n \\n \\n\\n \\n\\n
    \\n

    \" + card.title + \"

    \\n
    \\n \\n
    \\n

    \" + eventCardSettings_1.dateFromText + \"

    \\n

    \" + formatDate_1.default(card.start_Date) + \"

    \\n
    \\n\\n
    \\n

    \" + eventCardSettings_1.dateToText + \"

    \\n

    \" + formatDate_1.default(card.end_Date) + \"

    \\n
    \\n \" + (card.location !== ''\r\n ? \"
    \\n

    \" + eventCardSettings_1.locationText + \"

    \\n

    \" + card.location + \"

    \\n
    \"\r\n : '') + \"\\n
    \\n
    \\n \";\r\n eventsGrid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n eventTabsComponent_1.classList.add('disabled');\r\n eventsFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n eventTabsComponent_1.classList.remove('disabled');\r\n eventsFilters_1.classList.remove('disabled');\r\n };\r\n eventTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n eventTabs_1[activeTab_1].classList.add('events-list__tab--active');\r\n pageNumber_1 = 1;\r\n if (index === 0) {\r\n eventType_1 = 3;\r\n }\r\n else if (index === 1) {\r\n eventType_1 = 1;\r\n }\r\n else if (index === 2) {\r\n eventType_1 = 2;\r\n }\r\n fetchEvents_1();\r\n });\r\n });\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchEvents_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchEvents_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchEvents_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchEvents_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchEvents_1();\r\n });\r\n var timeout_1 = null;\r\n eventsListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = eventsListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchEvents_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n if (radio.value === sortBy_1.toString()) {\r\n radio.checked = true;\r\n }\r\n else {\r\n radio.checked = false;\r\n }\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = eventsList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchEvents_1();\r\n });\r\n });\r\n var initializeEventsList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchEventCardSettings_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchEvents_1()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeEventsList();\r\n var addCardListeners_1 = function () {\r\n var serviceListCards = eventsList.querySelectorAll('.events-card');\r\n if (serviceListCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.events-card__button');\r\n serviceListCards.forEach(function (card) {\r\n card.addEventListener('click', function (e) {\r\n var target = e.target;\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n console.log('small button clicked - events list');\r\n if (button.classList.contains('favouriteButton')) {\r\n var t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n favourites_1.default(t, id, button);\r\n }\r\n else if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n else if (button.classList.contains('calButton')) {\r\n addToCalendar_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\nvar shareButtons = document.querySelectorAll('.shareButton');\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/addToCalendar\":2,\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/formatDate\":6,\"../../../helpers/isFavourite\":8,\"../../../helpers/isUserLoggedIn\":9,\"../pagination/pagination\":67,\"axios\":109}],33:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],34:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar eventsComponents = document.querySelectorAll('.events');\r\neventsComponents.forEach(function (eventsComponent) {\r\n if (eventsComponent) {\r\n var daysContainer_1 = eventsComponent.querySelectorAll('.events__days');\r\n var bulletsContainer_1 = eventsComponent.querySelectorAll('.glide__bullets');\r\n var days_1 = eventsComponent.querySelectorAll('.events__day');\r\n var dayNumbers = eventsComponent.querySelectorAll('.events__day-number');\r\n var dates = eventsComponent.querySelectorAll('.events__card-text');\r\n var eventsCarousels = eventsComponent.querySelectorAll('.events__carousel-inner');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n var eventTabs_1 = eventsComponent.querySelectorAll('.events__tab');\r\n var eventCarouselsContainer_1 = eventsComponent.querySelectorAll('.events__carousel');\r\n var activeTab_1 = 0;\r\n var activeDay_1 = 0;\r\n if (eventsCarousels.length > 0) {\r\n var eventsCarouselsArray = Array.from(eventsCarousels) || [];\r\n var generateBullets_1 = function (carousel, num) {\r\n var bulletCount = carousel.querySelectorAll('.events__card').length - num;\r\n var bulletWrapper = carousel.querySelector('.glide__bullets');\r\n for (var index = 0; index < bulletCount; index++) {\r\n var button = document.createElement('button');\r\n button.className = 'glide__bullet';\r\n button.setAttribute('data-glide-dir', '=' + index);\r\n bulletWrapper.appendChild(button);\r\n }\r\n };\r\n eventsCarouselsArray.forEach(function (item) {\r\n var glideSettings = {\r\n type: 'slider',\r\n perView: 3,\r\n gap: 24,\r\n rewind: false,\r\n bound: true,\r\n direction: direction_1 || 'ltr',\r\n breakpoints: {\r\n 768: {\r\n perView: 2.3,\r\n gap: 16,\r\n },\r\n 480: {\r\n perView: 2.27,\r\n },\r\n },\r\n };\r\n var glide = new glide_1.default(item, glideSettings);\r\n glide.mount();\r\n var width = window.innerWidth;\r\n var diff = 0;\r\n width > 768 ? (diff = 2) : (diff = 1);\r\n generateBullets_1(item, diff);\r\n glide.on('move.after', function () {\r\n var bullets = item.querySelectorAll('.glide__bullet');\r\n var currentIndex = glide.index;\r\n if (bullets.length > 0) {\r\n bullets.forEach(function (bullet, index) {\r\n bullet.classList.remove('glide__bullet--active');\r\n bullet.addEventListener('click', function (e) {\r\n glide.go(\"=\" + index);\r\n });\r\n });\r\n bullets[currentIndex].classList.add('glide__bullet--active');\r\n }\r\n });\r\n });\r\n }\r\n var resetAll_1 = function () {\r\n eventCarouselsContainer_1.forEach(function (carousel) { return carousel.classList.remove('events__carousel--active'); });\r\n daysContainer_1.forEach(function (item) { return item.classList.add('hidden'); });\r\n eventTabs_1.forEach(function (tab) { return tab.classList.remove('events__tab--active'); });\r\n days_1.forEach(function (day) { return day.classList.remove('events__day--active'); });\r\n bulletsContainer_1.forEach(function (item) { return item.classList.remove('glide__bullets--active'); });\r\n };\r\n var showActiveItems_1 = function (activeTab, activeDay) {\r\n resetAll_1();\r\n eventTabs_1[activeTab].classList.add('events__tab--active');\r\n daysContainer_1[activeTab].classList.remove('hidden');\r\n days_1[activeDay].classList.add('events__day--active');\r\n eventCarouselsContainer_1[activeDay].classList.add('events__carousel--active');\r\n bulletsContainer_1[activeDay].classList.add('glide__bullets--active');\r\n };\r\n var getDayFromDate_1 = function (dateString) {\r\n var dateParts = dateString.split('-');\r\n var day = parseInt(dateParts[2], 10);\r\n return day.toString();\r\n };\r\n eventTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n index === 0 ? (activeDay_1 = 0) : (activeDay_1 = 5);\r\n showActiveItems_1(activeTab_1, activeDay_1);\r\n });\r\n });\r\n days_1.forEach(function (day, index) {\r\n day.addEventListener('click', function () {\r\n activeDay_1 = index;\r\n showActiveItems_1(activeTab_1, activeDay_1);\r\n });\r\n });\r\n dayNumbers.forEach(function (day) {\r\n var fullDate = day.textContent;\r\n day.textContent = getDayFromDate_1(fullDate);\r\n });\r\n showActiveItems_1(activeTab_1, activeDay_1);\r\n }\r\n});\r\n},{\"@glidejs/glide\":108}],35:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar faq = document.querySelector('.faq');\r\nif (faq) {\r\n var faqsList_1 = faq.querySelector('.accordion__items');\r\n var faqFilters_1 = faq.querySelector('.faq__filters');\r\n var faqSearchInput_1 = faq.querySelector('.input--search');\r\n var nextPageButton = faq.querySelector('.pagination__page-next');\r\n var prevPageButton = faq.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = faq.querySelector('.pagination__dropdown');\r\n var paginationLast = faq.querySelector('.pagination__page-last');\r\n var paginationFirst = faq.querySelector('.pagination__page-first');\r\n var pagination_2 = faq.querySelector('.pagination');\r\n var radios = faq.querySelectorAll('.sort-filter__input');\r\n var dropdownFilters = faq.querySelectorAll('.dropdown-filter');\r\n var singleDropdown_1 = faq.querySelector('.single-select');\r\n var singleDropdownFilterTrigger = faq.querySelector('.single-dropdown-filter__trigger');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var requestUrl_1 = document.getElementById(\"requestUrl\").value;\r\n var faqGroupKey = document.getElementById(\"faqGroupKey\").value;\r\n var faqGroups_1 = [];\r\n var keyword_1 = '';\r\n var faqsGroup_1 = faqGroupKey;\r\n var beneficiaries_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchFaqs_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n faqsGroup: faqsGroup_1,\r\n beneficiaries: beneficiaries_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, 4, 5]);\r\n return [4, axios_1.default.post(requestUrl_1, payload)];\r\n case 2:\r\n response = _a.sent();\r\n faqGroups_1 = response.data.items;\r\n if (faqGroups_1.length > pageSize_1) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 5];\r\n case 3:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 5];\r\n case 4:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, faqGroups_1, fetchFaqs_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n faqsList_1.innerHTML = '';\r\n faqGroups_1.forEach(function (group) {\r\n var groupElement = document.createElement('div');\r\n groupElement.className = 'accordion__subtitle';\r\n groupElement.innerHTML = group.subCategory;\r\n faqsList_1.appendChild(groupElement);\r\n group.items.forEach(function (item) {\r\n var cardElement = document.createElement('details');\r\n cardElement.className = 'accordion__item fade-in';\r\n cardElement.innerHTML = \"\\n \\n \" + item.question + \"\\n \\n
    \\n \" + item.answer + \"\\n
    \";\r\n faqsList_1.appendChild(cardElement);\r\n });\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n faqFilters_1 === null || faqFilters_1 === void 0 ? void 0 : faqFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n faqFilters_1.classList.remove('disabled');\r\n };\r\n singleDropdown_1 === null || singleDropdown_1 === void 0 ? void 0 : singleDropdown_1.addEventListener('change', function () {\r\n var selected = singleDropdown_1.querySelector('option:checked');\r\n faqsGroup_1 = selected.value;\r\n pageNumber_1 = 1;\r\n fetchFaqs_1();\r\n });\r\n singleDropdownFilterTrigger === null || singleDropdownFilterTrigger === void 0 ? void 0 : singleDropdownFilterTrigger.addEventListener('keydown', function (e) {\r\n e.preventDefault();\r\n });\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchFaqs_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchFaqs_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchFaqs_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchFaqs_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchFaqs_1();\r\n });\r\n var timeout_1 = null;\r\n faqSearchInput_1 === null || faqSearchInput_1 === void 0 ? void 0 : faqSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = faqSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchFaqs_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = faq.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchFaqs_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var beneficiariesOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n beneficiariesOptions_1.push(element.textContent);\r\n });\r\n beneficiaries_1 = beneficiariesOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchFaqs_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n fetchFaqs_1();\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"axios\":109}],36:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],37:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar addToCalendar_1 = __importDefault(require(\"../../../helpers/addToCalendar\"));\r\nvar initializeFavouritesComponent = function (favouritesComponent) { return __awaiter(void 0, void 0, void 0, function () {\r\n var favouritesTabs, events, activeTab, nextPageButton, prevPageButton, paginationDropdown, paginationLast, paginationFirst, pagination, radios, currentCulture, eventCards, ids, sortBy, pageNumber, pageSize, totalPages, totalCount, hasNextPage, hasPreviousPage, buttonsToShow, isLoading, currentType, eventCardSettings, fetchEventCardSettings, TabTranslations, languageKey, tabTitles, showSelectedItems, handleTabClick, getEventCards, updateEventCards, addEventCardListeners, disableInputs, enableInputs, fetchCards;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n favouritesTabs = favouritesComponent.querySelectorAll('.favourites__tab');\r\n events = favouritesComponent.querySelector('.favourites__grid--events');\r\n activeTab = 0;\r\n nextPageButton = favouritesComponent.querySelector('.pagination__page-next');\r\n prevPageButton = favouritesComponent.querySelector('.pagination__page-prev');\r\n paginationDropdown = favouritesComponent.querySelector('.pagination__dropdown');\r\n paginationLast = favouritesComponent.querySelector('.pagination__page-last');\r\n paginationFirst = favouritesComponent.querySelector('.pagination__page-first');\r\n pagination = favouritesComponent.querySelector('.pagination');\r\n radios = favouritesComponent.querySelectorAll('.sort-filter__input');\r\n currentCulture = document.documentElement.getAttribute('culture');\r\n eventCards = [];\r\n ids = [];\r\n sortBy = 1;\r\n pageNumber = 1;\r\n pageSize = +(paginationDropdown === null || paginationDropdown === void 0 ? void 0 : paginationDropdown.value);\r\n totalPages = 0;\r\n totalCount = 0;\r\n hasNextPage = false;\r\n hasPreviousPage = false;\r\n buttonsToShow = 3;\r\n isLoading = false;\r\n currentType = 'events';\r\n eventCardSettings = {\r\n dateFromText: '',\r\n dateToText: '',\r\n locationText: '',\r\n };\r\n fetchEventCardSettings = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/events/cardsettings?currentCulture=\" + currentCulture)];\r\n case 1:\r\n response = _a.sent();\r\n eventCardSettings = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n TabTranslations = {\r\n events: { ar: 'الفعاليات', engb: 'Events' },\r\n };\r\n languageKey = ((_a = document.querySelector('html')) === null || _a === void 0 ? void 0 : _a.getAttribute('dir')) === 'rtl' ? 'ar' : 'engb';\r\n tabTitles = favouritesComponent.querySelectorAll('.favourites__tab-title');\r\n tabTitles.forEach(function (title) {\r\n var _a;\r\n var alias = (_a = title.textContent) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();\r\n if (TabTranslations[alias]) {\r\n title.textContent = TabTranslations[alias][languageKey];\r\n }\r\n });\r\n showSelectedItems = function (activeTab) { return __awaiter(void 0, void 0, void 0, function () {\r\n var selectedTab, grids;\r\n return __generator(this, function (_a) {\r\n favouritesTabs.forEach(function (tab) { return tab.classList.remove('favourites__tab--active'); });\r\n selectedTab = favouritesTabs[activeTab];\r\n selectedTab.classList.add('favourites__tab--active');\r\n currentType = selectedTab.getAttribute('data-type');\r\n ids = JSON.parse(selectedTab.getAttribute('data-ids'));\r\n pageNumber = 1;\r\n if (currentType == 'event') {\r\n getEventCards();\r\n }\r\n grids = [events];\r\n grids.forEach(function (grid, index) {\r\n if (grid) {\r\n grid.style.display = activeTab === index ? 'grid' : 'none';\r\n }\r\n });\r\n return [2];\r\n });\r\n }); };\r\n handleTabClick = function (index) {\r\n activeTab = index;\r\n showSelectedItems(activeTab);\r\n };\r\n favouritesTabs.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () { return handleTabClick(index); });\r\n });\r\n getEventCards = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(ids.length > 0)) return [3, 6];\r\n payload = {\r\n sortBy: sortBy,\r\n pageNumber: pageNumber,\r\n pageSize: pageSize,\r\n currentCulture: currentCulture,\r\n ids: ids,\r\n };\r\n isLoading = true;\r\n disableInputs();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, 4, 5]);\r\n return [4, axios_1.default.post('/api/events/byids', payload)];\r\n case 2:\r\n response = _a.sent();\r\n eventCards = response.data.items;\r\n if (eventCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n return [3, 5];\r\n case 3:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs();\r\n return [3, 5];\r\n case 4:\r\n pagination_1.updatePaginationButtons(totalPages, hasPreviousPage, hasNextPage, pageNumber, pageSize, totalCount, buttonsToShow, eventCards, getEventCards);\r\n isLoading = false;\r\n updateEventCards();\r\n enableInputs();\r\n return [7];\r\n case 5: return [3, 7];\r\n case 6:\r\n pagination.classList.add('hidden');\r\n events.innerHTML = '';\r\n _a.label = 7;\r\n case 7: return [2];\r\n }\r\n });\r\n }); };\r\n updateEventCards = function () {\r\n events.innerHTML = '';\r\n eventCards.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'events-card flex fade-in';\r\n var _class = '';\r\n if (isFavourite_1.IsFavourited(card.id, ids)) {\r\n _class = 'active';\r\n }\r\n cardElement.innerHTML = \"\\n
    \\n \\\"\\\"\\n
    \\n
    \\n
    \\n\\n \\n \\n\\n \\n\\n
    \\n

    \" + card.title + \"

    \\n
    \\n \\n
    \\n

    \" + eventCardSettings.dateFromText + \"

    \\n

    \" + formatDate_1.default(card.start_Date) + \"

    \\n
    \\n\\n
    \\n

    \" + eventCardSettings.dateToText + \"

    \\n

    \" + formatDate_1.default(card.end_Date) + \"

    \\n
    \\n \" + (card.location !== ''\r\n ? \"
    \\n

    \" + eventCardSettings.locationText + \"

    \\n

    \" + card.location + \"

    \\n
    \"\r\n : '') + \"\\n
    \\n
    \\n \";\r\n events.appendChild(cardElement);\r\n });\r\n addEventCardListeners();\r\n };\r\n addEventCardListeners = function () {\r\n var serviceListCards = events.querySelectorAll('.events-card');\r\n if (serviceListCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.events-card__button');\r\n serviceListCards.forEach(function (card) {\r\n card.addEventListener('click', function (e) {\r\n var target = e.target;\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('favouriteButton')) {\r\n var t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n favourites_1.default(t, id, button);\r\n ids = ids.filter(function (itemId) { return itemId !== id; });\r\n fetchCards();\r\n }\r\n else if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n else if (button.classList.contains('calButton')) {\r\n addToCalendar_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n disableInputs = function () {\r\n pagination === null || pagination === void 0 ? void 0 : pagination.classList.add('disabled');\r\n };\r\n enableInputs = function () {\r\n pagination === null || pagination === void 0 ? void 0 : pagination.classList.remove('disabled');\r\n };\r\n paginationDropdown === null || paginationDropdown === void 0 ? void 0 : paginationDropdown.addEventListener('change', function () {\r\n pageSize = +(paginationDropdown === null || paginationDropdown === void 0 ? void 0 : paginationDropdown.value);\r\n pageNumber = 1;\r\n fetchCards();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber++;\r\n fetchCards();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber--;\r\n fetchCards();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber = 1;\r\n fetchCards();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber = totalPages;\r\n fetchCards();\r\n });\r\n fetchCards = function () {\r\n if (currentType == 'event') {\r\n getEventCards();\r\n }\r\n };\r\n fetchEventCardSettings();\r\n return [4, showSelectedItems(activeTab)];\r\n case 1:\r\n _b.sent();\r\n return [2];\r\n }\r\n });\r\n}); };\r\ndocument.querySelectorAll('.favourites').forEach(function (favouritesComponent) {\r\n initializeFavouritesComponent(favouritesComponent);\r\n});\r\n},{\"../../../helpers/addToCalendar\":2,\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/formatDate\":6,\"../../../helpers/isFavourite\":8,\"../pagination/pagination\":67,\"axios\":109}],38:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],39:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar giftedCompetingList = document.querySelector('.gifted-list');\r\nif (giftedCompetingList) {\r\n var giftedCompetingCarousels = document.querySelectorAll('.gifted-list__carousel-inner');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n if (giftedCompetingCarousels.length > 0) {\r\n giftedCompetingCarousels.forEach(function (item) {\r\n var glideSettings = {\r\n type: 'slider',\r\n perView: 1,\r\n gap: 0,\r\n rewind: true,\r\n bound: true,\r\n direction: direction_1 || 'ltr',\r\n };\r\n var glide = new glide_1.default(item, glideSettings);\r\n glide.mount();\r\n glide.on('move.after', function () {\r\n var bullets = item.querySelectorAll('.glide__bullet');\r\n var currentIndex = glide.index;\r\n bullets.forEach(function (bullet, index) {\r\n bullet.classList.remove('glide__bullet--active');\r\n bullet.addEventListener('click', function (e) {\r\n glide.go(\"=\" + index);\r\n });\r\n });\r\n bullets[currentIndex].classList.add('glide__bullet--active');\r\n });\r\n });\r\n }\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"@glidejs/glide\":108}],40:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],41:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar giftedSubListing = document.querySelector('.gifted-sublist') || null;\r\nif (giftedSubListing) {\r\n var parentNodeId_1 = giftedSubListing.getAttribute('data-id');\r\n var tableBody_1 = giftedSubListing.querySelector('.gifted-sublist__table-body');\r\n var mobileTableBody_1 = giftedSubListing.querySelector('.gifted-sublist__table-mobile-body');\r\n var nextPageButton = giftedSubListing.querySelector('.pagination__page-next');\r\n var prevPageButton = giftedSubListing.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = giftedSubListing.querySelector('.pagination__dropdown');\r\n var paginationLast = giftedSubListing.querySelector('.pagination__page-last');\r\n var paginationFirst = giftedSubListing.querySelector('.pagination__page-first');\r\n var pagination_2 = giftedSubListing.querySelector('.pagination');\r\n var radios = giftedSubListing.querySelectorAll('.sort-filter__input');\r\n var giftedSubListFilters_1 = giftedSubListing.querySelector('.gifted-sublist__filters');\r\n var giftedSubListingSearchInput_1 = giftedSubListing.querySelector('.gifted-sublist__search-input');\r\n var dropdownFilters = giftedSubListing.querySelectorAll('.dropdown-filter');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var singleDropdown_1 = giftedSubListing.querySelector('.single-select');\r\n var singleDropdownPlaceholder = Number(singleDropdown_1.getAttribute('data-placeholder'));\r\n var singleDropdownFilterTrigger = giftedSubListing.querySelector('.single-dropdown-filter__trigger');\r\n var giftedSubListItems_1 = [];\r\n var keyword_1 = '';\r\n var educationDepartments_1 = [];\r\n var positions_1 = [];\r\n var projectFields_1 = [];\r\n var olympiadTypes_1 = [];\r\n var year_1 = singleDropdownPlaceholder;\r\n singleDropdownFilterTrigger.innerHTML = singleDropdownPlaceholder.toString();\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var giftedSubListColumnsNames_1 = [];\r\n var fetchGiftedSubListColumnsNames_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/giftedCompeting/columnsNames/\" + parentNodeId_1 + \"?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n giftedSubListColumnsNames_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchGiftedSubList_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n parentNodeId: parentNodeId_1,\r\n keyword: keyword_1,\r\n educationDepartments: educationDepartments_1,\r\n positions: positions_1,\r\n projectFields: projectFields_1,\r\n olympiadTypes: olympiadTypes_1,\r\n year: year_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/giftedCompeting/sublist', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/giftedCompeting/sublist', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n giftedSubListItems_1 = response.data.items;\r\n if (giftedSubListItems_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, giftedSubListItems_1, fetchGiftedSubList_1);\r\n isLoading_1 = false;\r\n updateItems_1();\r\n enableInputs_1();\r\n createModals_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n giftedSubListFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n giftedSubListFilters_1.classList.remove('disabled');\r\n };\r\n var updateItems_1 = function () {\r\n tableBody_1.innerHTML = '';\r\n mobileTableBody_1.innerHTML = '';\r\n giftedSubListItems_1.forEach(function (item) {\r\n var rowElement = document.createElement('tr');\r\n rowElement.className = 'gifted-sublist__table-row';\r\n rowElement.innerHTML = \"\\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'student name'; })\r\n ? \"\\n \\n \" + (item.studentImage !== null\r\n ? \"\\\"student\"\r\n : '') + \"\\n \" + item.studentName + \"\\n \\n \"\r\n : '') + \"\\n\\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'speciality'; })\r\n ? \"\\n \\n \" + (item.speciality !== null ? item.speciality : '-') + \"\\n \\n \"\r\n : '') + \"\\n \\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'project field'; })\r\n ? \"\\n \\n \" + item.projectField + \"\\n \\n \"\r\n : '') + \"\\n\\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'project title'; })\r\n ? \"\\n \\n \" + item.projectTitle + \"\\n \\n \"\r\n : '') + \"\\n\\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'education department'; })\r\n ? \"\\n \\n \" + item.educationDepartment + \"\\n \\n \"\r\n : '') + \"\\n \\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'grand prize'; })\r\n ? \"\\n \\n \\\"icon\\\"\\n \" + item.position + \"\\n \\n \"\r\n : '') + \"\\n\\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'special prize'; })\r\n ? \"\\n \\n \" + (item.specialPrize !== null ? item.specialPrize : '-') + \"\\n \\n \"\r\n : '') + \"\\n\\n \" + (giftedSubListColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'success story'; })\r\n ? \"\\n
    \\n \" + (item.successStoryVideoLink !== ''\r\n ? \"\\n \\n \\n \\n \\n
    \"\r\n : '') + \"\\n \\n \"\r\n : '');\r\n addMobileRow_1(item);\r\n tableBody_1.appendChild(rowElement);\r\n });\r\n };\r\n var addMobileRow_1 = function (item) {\r\n var studentName = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'student name'; });\r\n var speciality = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'speciality'; });\r\n var projectField = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'project field'; });\r\n var projectTitle = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'project title'; });\r\n var educationDepartment = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'education department'; });\r\n var grandPrize = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'grand prize'; });\r\n var specialPrize = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'special prize'; });\r\n var successStory = giftedSubListColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'success story'; });\r\n mobileTableBody_1.insertAdjacentHTML('beforeend', \"\\n \" + (studentName !== undefined\r\n ? \"\\n \" + studentName.value + \"\\n \\n
    \\n \" + (item.studentImage !== null\r\n ? \"\\\"student\"\r\n : '') + \"\\n \" + item.studentName + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (speciality !== undefined\r\n ? \"\\n \" + speciality.value + \"\\n \\n
    \\n \" + (item.speciality !== null ? item.speciality : '-') + \"\\n
    \\n \\n \"\r\n : '') + \"\\n \" + (projectField !== undefined\r\n ? \"\\n \" + projectField.value + \"\\n \\n
    \\n \" + item.projectField + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (projectTitle !== undefined\r\n ? \"\\n \" + projectTitle.value + \"\\n \\n
    \\n \" + item.projectTitle + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (educationDepartment !== undefined\r\n ? \"\\n \" + educationDepartment.value + \"\\n \\n
    \\n \" + item.educationDepartment + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (grandPrize !== undefined\r\n ? \"\\n \" + grandPrize.value + \"\\n \\n
    \\n \\\"alt\\\"\\n \" + item.position + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (specialPrize !== undefined\r\n ? \"\\n \" + specialPrize.value + \"\\n \\n
    \\n \" + (item.speciality !== null ? item.speciality : '-') + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (successStory !== undefined\r\n ? \"\\n \" + successStory.value + \"\\n \\n
    \\n \" + (item.successStoryVideoLink !== ''\r\n ? \"\\n \\n \\n \\n \\n
    \"\r\n : '') + \"\\n \\n \\n \"\r\n : '') + \"\\n \");\r\n };\r\n var createModals_1 = function () {\r\n var modals = giftedSubListing.querySelectorAll('.modal');\r\n if (modals.length > 0) {\r\n modals === null || modals === void 0 ? void 0 : modals.forEach(function (modalContainer, index) {\r\n var _a;\r\n var modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog)\r\n return;\r\n var modalId = \"modal-\" + index;\r\n var openButtonId = \"open-button-\" + index;\r\n modalDialog.id = modalId;\r\n var openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n var closeButton = modalDialog.querySelector('.modal__close');\r\n (_a = document.getElementById(openButtonId)) === null || _a === void 0 ? void 0 : _a.addEventListener('click', function (event) {\r\n modalDialog.showModal();\r\n });\r\n closeButton === null || closeButton === void 0 ? void 0 : closeButton.addEventListener('click', function (event) {\r\n modalDialog.close();\r\n });\r\n modalDialog.addEventListener('click', function (event) {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n }\r\n });\r\n });\r\n }\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchGiftedSubList_1();\r\n });\r\n singleDropdown_1.addEventListener('change', function () {\r\n var selected = singleDropdown_1.querySelector('option:checked');\r\n year_1 = Number(selected.value);\r\n pageNumber_1 = 1;\r\n fetchGiftedSubList_1();\r\n });\r\n singleDropdownFilterTrigger.addEventListener('keydown', function (e) {\r\n e.preventDefault();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchGiftedSubList_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchGiftedSubList_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchGiftedSubList_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchGiftedSubList_1();\r\n });\r\n var timeout_1 = null;\r\n giftedSubListingSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = giftedSubListingSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchGiftedSubList_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = giftedSubListing.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchGiftedSubList_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var educationDepartmentsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n educationDepartmentsOptions_1.push(element.textContent);\r\n });\r\n educationDepartments_1 = educationDepartmentsOptions_1;\r\n break;\r\n case 1:\r\n var positionsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n positionsOptions_1.push(element.textContent);\r\n });\r\n positions_1 = positionsOptions_1;\r\n break;\r\n case 2:\r\n var projectFieldsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n projectFieldsOptions_1.push(element.textContent);\r\n });\r\n projectFields_1 = projectFieldsOptions_1;\r\n break;\r\n case 3:\r\n var olympiadTypesOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n olympiadTypesOptions_1.push(element.textContent);\r\n });\r\n olympiadTypes_1 = olympiadTypesOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchGiftedSubList_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n var initializeList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchGiftedSubListColumnsNames_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchGiftedSubList_1()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeList();\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"axios\":109}],42:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],43:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar shareButtons = document.querySelectorAll(\".shareButton\");\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],44:[function(require,module,exports){\nvar hero = document.querySelector(\".hero\");\r\nif (hero) {\r\n var slides_1 = hero.querySelectorAll(\".hero__slide\");\r\n var contents_1 = hero.querySelectorAll(\".hero__content\");\r\n var activeSlide_1 = hero.querySelector(\".hero__slide--active\");\r\n var heroLeft = hero.querySelector(\".hero__left\");\r\n var heroDots_1 = hero.querySelectorAll(\".hero__dot\");\r\n var isTransitioning_1 = false;\r\n var animationDuration_1 = 1000;\r\n var activeIndex_1 = 0;\r\n var animationTimer_1 = +heroLeft.getAttribute(\"data-timer\") || 5000;\r\n var minSwipeDistance_1 = 30;\r\n var touchStartX_1 = 0;\r\n var touchEndX_1 = 0;\r\n var isMouseDown_1 = false;\r\n var mountSlider = function () {\r\n var slides = Array.from(document.querySelectorAll(\".hero__slide\"));\r\n var orders = Array(slides.length)\r\n .fill(null)\r\n .map(function (_, index) { return \"hero__slide-\" + (index + 1); });\r\n var slideCount = slides.length;\r\n slides.forEach(function (slide, index) { return slide.classList.add(orders[index]); });\r\n var activeIndex = 0;\r\n handleDots_1();\r\n var updateOrder = function (activeIndex) {\r\n slides.forEach(function (slide, index) {\r\n var newOrderIndex = (index - activeIndex + slideCount) % slideCount;\r\n slide.className = orders[newOrderIndex] + \" hero__slide\";\r\n if (activeIndex === index) {\r\n slide.classList.add(\"hero__slide--active\");\r\n }\r\n });\r\n };\r\n var next = function () {\r\n activeIndex++;\r\n if (activeIndex === slideCount)\r\n activeIndex = 0;\r\n updateOrder(activeIndex);\r\n return activeIndex;\r\n };\r\n var prev = function () {\r\n activeIndex--;\r\n if (activeIndex === -1)\r\n activeIndex = slideCount - 1;\r\n updateOrder(activeIndex);\r\n return activeIndex;\r\n };\r\n return { next: next, prev: prev, updateOrder: updateOrder };\r\n };\r\n var handleDots_1 = function () {\r\n heroDots_1.forEach(function (dot, i) {\r\n dot.classList.remove(\"hero__dot--active\");\r\n if (i === activeIndex_1) {\r\n dot.classList.add(\"hero__dot--active\");\r\n }\r\n });\r\n };\r\n var handleTouchStart = function (event) {\r\n touchStartX_1 = event.changedTouches[0].screenX;\r\n };\r\n var handleTouchMove = function (event) {\r\n touchEndX_1 = event.changedTouches[0].screenX;\r\n };\r\n var handleTouchEnd_1 = function () {\r\n handleSwipeGesture_1();\r\n };\r\n var handleSwipeGesture_1 = function () {\r\n var distance = touchEndX_1 - touchStartX_1;\r\n if (isTransitioning_1) {\r\n return;\r\n }\r\n if (Math.abs(distance) >= minSwipeDistance_1) {\r\n if (distance > 0) {\r\n activeIndex_1 = next_1();\r\n handleDots_1();\r\n handleSlides_1();\r\n }\r\n else {\r\n activeIndex_1 = prev_1();\r\n handleDots_1();\r\n handleSlides_1();\r\n }\r\n }\r\n setTimeout(function () {\r\n isTransitioning_1 = false;\r\n }, animationDuration_1);\r\n };\r\n var handleMouseDown_1 = function (event) {\r\n touchStartX_1 = event.screenX;\r\n isMouseDown_1 = true;\r\n };\r\n var handleMouseMove_1 = function (event) {\r\n if (isMouseDown_1) {\r\n touchEndX_1 = event.screenX;\r\n }\r\n };\r\n var handleMouseUp_1 = function () {\r\n if (isMouseDown_1) {\r\n handleSwipeGesture_1();\r\n isMouseDown_1 = false;\r\n }\r\n };\r\n var handleSlides_1 = function () {\r\n if (isTransitioning_1) {\r\n return;\r\n }\r\n else {\r\n isTransitioning_1 = true;\r\n updateOrder_1(activeIndex_1);\r\n activeSlide_1.textContent = (activeIndex_1 + 1).toString();\r\n contents_1.forEach(function (item) { return item.classList.add(\"hidden\"); });\r\n contents_1[activeIndex_1].classList.remove(\"hidden\");\r\n handleDots_1();\r\n setTimeout(function () {\r\n isTransitioning_1 = false;\r\n }, animationDuration_1);\r\n }\r\n };\r\n var interval_1;\r\n var startInterval_1 = function () {\r\n interval_1 = setInterval(function () {\r\n activeIndex_1 = next_1();\r\n handleSlides_1();\r\n }, animationTimer_1);\r\n };\r\n var resetInterval_1 = function () {\r\n clearInterval(interval_1);\r\n startInterval_1();\r\n };\r\n var handleContentHeight = function () {\r\n var allContents = hero.querySelectorAll(\".hero__content\");\r\n var tallestHeight = 0;\r\n allContents.forEach(function (content) {\r\n content.classList.remove(\"hidden\");\r\n var contentHeight = content.offsetHeight;\r\n if (contentHeight > tallestHeight) {\r\n tallestHeight = contentHeight;\r\n }\r\n });\r\n allContents.forEach(function (content) {\r\n content.style.height = tallestHeight + \"px\";\r\n content.classList.add(\"hidden\");\r\n });\r\n allContents[activeIndex_1].classList.remove(\"hidden\");\r\n };\r\n if (window.innerWidth < 768) {\r\n handleContentHeight();\r\n }\r\n var _a = mountSlider(), next_1 = _a.next, prev_1 = _a.prev, updateOrder_1 = _a.updateOrder;\r\n heroDots_1.forEach(function (dot, index) {\r\n var handleEvent = function () {\r\n activeIndex_1 = index;\r\n handleSlides_1();\r\n updateOrder_1(activeIndex_1);\r\n handleDots_1();\r\n };\r\n dot.addEventListener(\"click\", function () {\r\n resetInterval_1();\r\n handleEvent();\r\n });\r\n dot.addEventListener(\"keydown\", function (event) {\r\n if (event.key === \"Enter\") {\r\n resetInterval_1();\r\n handleEvent();\r\n }\r\n });\r\n });\r\n heroLeft.addEventListener('touchstart', handleTouchStart, false);\r\n heroLeft.addEventListener('touchmove', handleTouchMove, false);\r\n heroLeft.addEventListener('touchend', function () {\r\n handleTouchEnd_1();\r\n resetInterval_1();\r\n }, false);\r\n heroLeft.addEventListener('mousedown', function (e) {\r\n handleMouseDown_1(e);\r\n resetInterval_1();\r\n });\r\n heroLeft.addEventListener('mousemove', function (e) {\r\n handleMouseMove_1(e);\r\n resetInterval_1();\r\n });\r\n heroLeft.addEventListener('mouseup', function () {\r\n handleMouseUp_1();\r\n resetInterval_1();\r\n });\r\n setTimeout(function () {\r\n slides_1.forEach(function (slide) {\r\n slide.classList.remove(\"no-transition\");\r\n });\r\n }, 100);\r\n startInterval_1();\r\n contents_1[activeIndex_1].classList.remove(\"hidden\");\r\n}\r\n},{}],45:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar identityList = document.querySelector('.identity-list');\r\nif (identityList) {\r\n var identityGrid_1 = identityList.querySelector('.identity-list__grid');\r\n var identityFilters_1 = identityList.querySelector('.identity-list__search');\r\n var identityListSearchInput_1 = identityList.querySelector('.identity-list__search-input');\r\n var dropdownFilters = identityList.querySelectorAll('.dropdown-filter');\r\n var nextPageButton = identityList.querySelector('.pagination__page-next');\r\n var prevPageButton = identityList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = identityList.querySelector('.pagination__dropdown');\r\n var paginationLast = identityList.querySelector('.pagination__page-last');\r\n var paginationFirst = identityList.querySelector('.pagination__page-first');\r\n var pagination_2 = identityList.querySelector('.pagination');\r\n var radios = identityList.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var identityCards_1 = [];\r\n var keyword_1 = '';\r\n var programs_1 = [];\r\n var fileTypes_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchIdentity_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n programs: programs_1,\r\n fileTypes: fileTypes_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/identity', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/identity', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n identityCards_1 = response.data.items;\r\n if (identityCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, identityCards_1, fetchIdentity_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n identityGrid_1.innerHTML = '';\r\n identityCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.setAttribute('download', '');\r\n cardElement.className = 'fade-in';\r\n cardElement.innerHTML = \"\\n
    \\n
    \\n icon\\n
    \" + card.documentName + \"
    \\n
    \\n
    \\n
    \" + card.size + \"
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \\n
    \\n \";\r\n identityGrid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n identityFilters_1 === null || identityFilters_1 === void 0 ? void 0 : identityFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n identityFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchIdentity_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchIdentity_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchIdentity_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchIdentity_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchIdentity_1();\r\n });\r\n var timeout_1 = null;\r\n identityListSearchInput_1 === null || identityListSearchInput_1 === void 0 ? void 0 : identityListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = identityListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchIdentity_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = identityList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchIdentity_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var fileTypesOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n fileTypesOptions_1.push(element.textContent);\r\n });\r\n fileTypes_1 = fileTypesOptions_1;\r\n break;\r\n case 1:\r\n var programsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n programsOptions_1.push(element.textContent);\r\n });\r\n programs_1 = programsOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchIdentity_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n fetchIdentity_1();\r\n var addCardListeners_1 = function () {\r\n var serviceListCards = identityGrid_1.querySelectorAll('.identity-list__card');\r\n if (serviceListCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.identity-list__button');\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"axios\":109}],46:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],47:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar InsertPageView_1 = __importDefault(require(\"../../../helpers/InsertPageView\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar isUserLoggedIn_1 = __importDefault(require(\"../../../helpers/isUserLoggedIn\"));\r\nvar imagesGallery = document.querySelector('.image-gallery');\r\nif (imagesGallery) {\r\n var imagesGrid_1 = imagesGallery.querySelector('.image-gallery__grid');\r\n var imagesFilters_1 = imagesGallery.querySelector('.image-gallery__filters');\r\n var imagesGallerySearchInput_1 = imagesGallery.querySelector('.image-gallery__search-input');\r\n var nextPageButton = imagesGallery.querySelector('.pagination__page-next');\r\n var prevPageButton = imagesGallery.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = imagesGallery.querySelector('.pagination__dropdown');\r\n var paginationLast = imagesGallery.querySelector('.pagination__page-last');\r\n var paginationFirst = imagesGallery.querySelector('.pagination__page-first');\r\n var pagination_2 = imagesGallery.querySelector('.pagination');\r\n var radios = imagesGallery.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var favouritedIds_1 = JSON.parse(imagesGrid_1.getAttribute('data-ids'));\r\n var imagesCards_1 = [];\r\n var keyword_1 = '';\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchImagesGallery_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/imagesGallery', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/imagesGallery', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n imagesCards_1 = response.data.items;\r\n if (imagesCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, imagesCards_1, fetchImagesGallery_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n imagesGrid_1.innerHTML = '';\r\n imagesCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'image-card flex flex--column';\r\n var _class = '';\r\n if (isFavourite_1.IsFavourited(card.id, favouritedIds_1)) {\r\n _class = 'active';\r\n }\r\n cardElement.innerHTML = \"\\n
    \" + card.title + \"
    \\n image\\n
    \\n \\n \\\"download\\n \\n
    \\n
    \\n \" + card.views + \"\\n views icon\\n
    \\n \" + (isUserLoggedIn_1.default()\r\n ? \"\\n \\\"heart\\n \"\r\n : '') + \"\\n \\n \\n \\\"share\\n \\n \\n
    \\n
    \\n \";\r\n imagesGrid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n enableModals_1();\r\n };\r\n var enableModals_1 = function () {\r\n var modals = document.querySelectorAll('.modal');\r\n var html = document.querySelector('html');\r\n if (modals.length > 0) {\r\n modals === null || modals === void 0 ? void 0 : modals.forEach(function (modalContainer, index) {\r\n var _a;\r\n var modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog)\r\n return;\r\n var modalId = \"modal-\" + index;\r\n var openButtonId = \"open-button-\" + index;\r\n modalDialog.id = modalId;\r\n var openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n var closeButton = modalDialog.querySelector('.modal__close');\r\n var pageId = parseInt(modalContainer.getAttribute('data-page-id'));\r\n (_a = document.getElementById(openButtonId)) === null || _a === void 0 ? void 0 : _a.addEventListener('click', function (event) {\r\n modalDialog.showModal();\r\n html.style.overflow = 'hidden';\r\n if (pageId > 0) {\r\n InsertPageView_1.default(pageId);\r\n }\r\n });\r\n closeButton === null || closeButton === void 0 ? void 0 : closeButton.addEventListener('click', function (event) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n });\r\n modalDialog.addEventListener('click', function (event) {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n }\r\n });\r\n window.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n html.style.overflow = '';\r\n }\r\n });\r\n });\r\n }\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n imagesFilters_1 === null || imagesFilters_1 === void 0 ? void 0 : imagesFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n imagesFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchImagesGallery_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchImagesGallery_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchImagesGallery_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchImagesGallery_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchImagesGallery_1();\r\n });\r\n var timeout_1 = null;\r\n imagesGallerySearchInput_1 === null || imagesGallerySearchInput_1 === void 0 ? void 0 : imagesGallerySearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = imagesGallerySearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchImagesGallery_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = imagesGallery.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchImagesGallery_1();\r\n });\r\n });\r\n fetchImagesGallery_1();\r\n var addCardListeners_1 = function () {\r\n var serviceListCards = imagesGrid_1.querySelectorAll('.image-card');\r\n if (serviceListCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.image-card__button');\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('favouriteButton')) {\r\n var t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n favourites_1.default(t, id, button);\r\n }\r\n else if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n},{\"../../../helpers/InsertPageView\":1,\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8,\"../../../helpers/isUserLoggedIn\":9,\"../pagination/pagination\":67,\"axios\":109}],48:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],49:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar InsertPageView_1 = __importDefault(require(\"../../../helpers/InsertPageView\"));\r\nvar infoGallery = document.querySelector('.info-gallery');\r\nif (infoGallery) {\r\n var infoGrid_1 = infoGallery.querySelector('.info-gallery__grid');\r\n var infoFilters_1 = infoGallery.querySelector('.info-gallery__filters');\r\n var infoGallerySearchInput_1 = infoGallery.querySelector('.info-gallery__search-input');\r\n var nextPageButton = infoGallery.querySelector('.pagination__page-next');\r\n var prevPageButton = infoGallery.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = infoGallery.querySelector('.pagination__dropdown');\r\n var paginationLast = infoGallery.querySelector('.pagination__page-last');\r\n var paginationFirst = infoGallery.querySelector('.pagination__page-first');\r\n var pagination_2 = infoGallery.querySelector('.pagination');\r\n var radios = infoGallery.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var infoCards_1 = [];\r\n var keyword_1 = '';\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchInfoGallery_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/infoGallery', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/infoGallery', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n infoCards_1 = response.data.items;\r\n if (infoCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, infoCards_1, fetchInfoGallery_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n infoGrid_1.innerHTML = '';\r\n infoCards_1.forEach(function (card) {\r\n var _a;\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'image-card flex flex--column';\r\n cardElement.innerHTML = \"\\n
    \" + card.title + \"
    \\n
    \\n this is an alt\\n \\n
    \\n
    \\n \\n \\\"download\\n \\n
    \\n
    \\n \" + card.views + \"\\n views icon\\n
    \\n \\n
    \\n
    \\n \";\r\n var otherimages = cardElement.querySelector('.otherimages');\r\n (_a = card.otherImageURL) === null || _a === void 0 ? void 0 : _a.forEach(function (otherImageLink) {\r\n var childImageElement = document.createElement('div');\r\n childImageElement.className = 'modal__image-small-container';\r\n childImageElement.innerHTML = \"\\\"this\";\r\n otherimages.appendChild(childImageElement);\r\n });\r\n infoGrid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n enableModals_1();\r\n };\r\n var enableModals_1 = function () {\r\n var modals = document.querySelectorAll('.modal');\r\n var html = document.querySelector('html');\r\n if (modals.length > 0) {\r\n modals === null || modals === void 0 ? void 0 : modals.forEach(function (modalContainer, index) {\r\n var _a;\r\n var modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog)\r\n return;\r\n var modalId = \"modal-\" + index;\r\n var openButtonId = \"open-button-\" + index;\r\n modalDialog.id = modalId;\r\n var openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n var closeButton = modalDialog.querySelector('.modal__close');\r\n var pageId = parseInt(modalContainer.getAttribute('data-page-id'));\r\n (_a = document.getElementById(openButtonId)) === null || _a === void 0 ? void 0 : _a.addEventListener('click', function (event) {\r\n modalDialog.showModal();\r\n html.style.overflow = 'hidden';\r\n if (pageId > 0) {\r\n InsertPageView_1.default(pageId);\r\n }\r\n });\r\n closeButton === null || closeButton === void 0 ? void 0 : closeButton.addEventListener('click', function (event) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n });\r\n modalDialog.addEventListener('click', function (event) {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n }\r\n });\r\n window.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n html.style.overflow = '';\r\n }\r\n });\r\n });\r\n }\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n infoFilters_1 === null || infoFilters_1 === void 0 ? void 0 : infoFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n infoFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchInfoGallery_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchInfoGallery_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchInfoGallery_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchInfoGallery_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchInfoGallery_1();\r\n });\r\n var timeout_1 = null;\r\n infoGallerySearchInput_1 === null || infoGallerySearchInput_1 === void 0 ? void 0 : infoGallerySearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = infoGallerySearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchInfoGallery_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = infoGallery.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchInfoGallery_1();\r\n });\r\n });\r\n fetchInfoGallery_1();\r\n var addCardListeners_1 = function () {\r\n var serviceListCards = infoGrid_1.querySelectorAll('.image-card');\r\n if (serviceListCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.image-card__button');\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n},{\"../../../helpers/InsertPageView\":1,\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"axios\":109}],50:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],51:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar isef = document.querySelector('.isef');\r\nif (isef) {\r\n var eventTabs_1 = isef.querySelectorAll('.isef__tab');\r\n var sections_1 = isef.querySelectorAll('.isef__section');\r\n var winnersSection = isef.querySelector('.isef__mega-table-wrapper');\r\n var activeTab_1 = 0;\r\n var resetTabs_1 = function () {\r\n eventTabs_1.forEach(function (tab) { return tab.classList.remove('isef__tab--active'); });\r\n sections_1.forEach(function (tab) { return tab.classList.remove('isef__section--active'); });\r\n };\r\n eventTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n eventTabs_1[activeTab_1].classList.add('isef__tab--active');\r\n sections_1[activeTab_1].classList.add('isef__section--active');\r\n });\r\n });\r\n sections_1.forEach(function (section) {\r\n var accordion = section.firstElementChild;\r\n if (accordion != null) {\r\n if (accordion.classList.contains('isef__accordion')) {\r\n accordion.setAttribute('open', 'true');\r\n }\r\n var accordions_1 = section.querySelectorAll('.isef__accordion');\r\n accordions_1.forEach(function (childAccordion) {\r\n childAccordion.addEventListener('toggle', function () {\r\n if (childAccordion.open) {\r\n accordions_1.forEach(function (otherAccordion) {\r\n if (otherAccordion !== childAccordion) {\r\n otherAccordion.removeAttribute('open');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n });\r\n var favButtons = document.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach(function (button) {\r\n var dataIdAttr = button.getAttribute('data-id');\r\n var type = button.getAttribute('data-type');\r\n var favouritedIds = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n var dataId_1 = parseInt(dataIdAttr);\r\n if (isFavourite_1.IsFavourited(dataId_1, favouritedIds)) {\r\n button.classList.add('active');\r\n }\r\n else {\r\n button.classList.remove('active');\r\n }\r\n button.addEventListener('click', function (e) {\r\n console.log('small button clicked - program details');\r\n favourites_1.default(type, dataId_1, button);\r\n });\r\n }\r\n });\r\n }\r\n if (winnersSection) {\r\n var studentsTableBody_1 = isef.querySelector('.isef__mega-table-body');\r\n var studentsMobileTableBody_1 = isef.querySelector('.isef__mega-table-mobile-body');\r\n var nextPageButton = isef.querySelector('.pagination__page-next');\r\n var prevPageButton = isef.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = isef.querySelector('.pagination__dropdown');\r\n var paginationLast = isef.querySelector('.pagination__page-last');\r\n var paginationFirst = isef.querySelector('.pagination__page-first');\r\n var pagination_2 = isef.querySelector('.pagination');\r\n var radios = isef.querySelectorAll('.sort-filter__input');\r\n var isefFilters_1 = isef.querySelector('.isef__filters');\r\n var isefSearchInput_1 = isef.querySelector('.isef__search-input');\r\n var dropdownFilters = isef.querySelectorAll('.dropdown-filter');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var parentNodeId_1 = winnersSection.getAttribute('data-id');\r\n var isefWinnersItems_1 = [];\r\n var keyword_1 = '';\r\n var educationDepartments_1 = [];\r\n var positions_1 = [];\r\n var years_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var isefWinnersTableColumnsNames_1 = [];\r\n var fetchIsefWinnersTableColumnsNames = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/services/results/columnsNames/\" + parentNodeId_1 + \"?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n isefWinnersTableColumnsNames_1 = response.data;\r\n console.log(isefWinnersTableColumnsNames_1);\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchIsefWinnersResultsList_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n parentNodeId: parentNodeId_1,\r\n keyword: keyword_1,\r\n educationDepartments: educationDepartments_1,\r\n positions: positions_1,\r\n years: years_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/services/results', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/services/results', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n isefWinnersItems_1 = response.data.items;\r\n if (isefWinnersItems_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, isefWinnersItems_1, fetchIsefWinnersResultsList_1);\r\n isLoading_1 = false;\r\n updateItems_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n isefFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n isefFilters_1.classList.remove('disabled');\r\n };\r\n var updateItems_1 = function () {\r\n studentsTableBody_1.innerHTML = '';\r\n studentsMobileTableBody_1.innerHTML = '';\r\n isefWinnersItems_1.forEach(function (item) {\r\n var rowElement = document.createElement('tr');\r\n rowElement.className = 'isef__mega-table-row';\r\n rowElement.innerHTML = \"\\n \" + (isefWinnersTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'student/team name'; })\r\n ? \"\\n
    \\n
    \\n \" + item.students[0].name + \"\\n
    \\n \"\r\n : '') + \"\\n\\n \" + (isefWinnersTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'project title'; })\r\n ? \"\\n \\n \" + item.projectTitle + \"\\n \\n \"\r\n : '') + \"\\n\\n \" + (isefWinnersTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'education department'; })\r\n ? \"\\n \\n \" + item.educationDepartment + \"\\n \\n \"\r\n : '') + \"\\n\\n \" + (isefWinnersTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'school'; })\r\n ? \"\\n \\n \" + item.school + \"\\n \\n \"\r\n : '') + \"\\n \" + (isefWinnersTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'search entity'; })\r\n ? \"\\n \\n \" + (item.searchEntity !== null ? item.searchEntity : '-') + \"\\n \\n \"\r\n : '') + \"\\n \\n \" + (isefWinnersTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'prize'; })\r\n ? \"\\n \\n \\\"icon\\\"\\n \" + item.position + \"\\n \\n \"\r\n : '');\r\n var images = rowElement.querySelector('.isef__mega-table-images');\r\n if (images) {\r\n item.students\r\n .filter(function (std) { return std.image !== null && std.image !== undefined && std.image !== ''; })\r\n .forEach(function (student) {\r\n var imageItem = document.createElement('img');\r\n imageItem.alt = 'student image';\r\n imageItem.src = student.image;\r\n imageItem.classList.add('isef__mega-table-image');\r\n images.appendChild(imageItem);\r\n });\r\n }\r\n addMobileRow_1(item);\r\n studentsTableBody_1.appendChild(rowElement);\r\n });\r\n };\r\n var addMobileRow_1 = function (item) {\r\n var studentName = isefWinnersTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'student/team name'; });\r\n var projectTitle = isefWinnersTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'project title'; });\r\n var educationDepartment = isefWinnersTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'education department'; });\r\n var school = isefWinnersTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'school'; });\r\n var searchEntity = isefWinnersTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'search entity'; });\r\n var prize = isefWinnersTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'prize'; });\r\n studentsMobileTableBody_1.insertAdjacentHTML('beforeend', \"\\n \" + (studentName !== undefined\r\n ? \"\\n \" + studentName.value + \"\\n \\n
    \\n
    \\n \" + item.students[0].name + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (projectTitle !== undefined\r\n ? \"\\n \" + projectTitle.value + \"\\n \\n
    \\n \" + item.projectTitle + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (educationDepartment !== undefined\r\n ? \"\\n \" + educationDepartment.value + \"\\n \\n
    \\n \" + item.educationDepartment + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (prize !== undefined\r\n ? \"\\n \" + prize.value + \"\\n \\n
    \\n \\\"alt\\\"\\n \" + item.position + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (school !== undefined\r\n ? \"\\n \" + school.value + \"\\n \\n
    \\n \" + item.school + \"\\n
    \\n \\n \"\r\n : '') + \"\\n\\n \" + (searchEntity !== undefined\r\n ? \"\\n \" + searchEntity.value + \"\\n \\n
    \\n \" + (item.searchEntity !== null ? item.searchEntity : '-') + \"\\n
    \\n \\n \"\r\n : ''));\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchIsefWinnersResultsList_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchIsefWinnersResultsList_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchIsefWinnersResultsList_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchIsefWinnersResultsList_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchIsefWinnersResultsList_1();\r\n });\r\n var timeout_1 = null;\r\n isefSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = isefSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchIsefWinnersResultsList_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = isef.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchIsefWinnersResultsList_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') || null;\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var educationDepartmentsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n educationDepartmentsOptions_1.push(element.textContent);\r\n });\r\n educationDepartments_1 = educationDepartmentsOptions_1;\r\n break;\r\n case 1:\r\n var positionsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n positionsOptions_1.push(element.textContent);\r\n });\r\n positions_1 = positionsOptions_1;\r\n break;\r\n case 2:\r\n var yearsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n yearsOptions_1.push(element.textContent);\r\n });\r\n years_1 = yearsOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchIsefWinnersResultsList_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n fetchIsefWinnersTableColumnsNames();\r\n fetchIsefWinnersResultsList_1();\r\n }\r\n}\r\n},{\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8,\"../pagination/pagination\":67,\"axios\":109}],52:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],53:[function(require,module,exports){\nvar jobCards = document.querySelectorAll(\".job-card\");\r\nif (jobCards.length > 0) {\r\n var cardButtons = document.querySelectorAll(\".job-card__button\");\r\n jobCards.forEach(function (card) {\r\n card.addEventListener(\"click\", function (e) {\r\n var target = e.target;\r\n if (target.classList.contains(\"button\") || target.classList.contains(\"button__image\")) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener(\"click\", function (e) {\r\n console.log(\"small button clicked\");\r\n });\r\n });\r\n}\r\n},{}],54:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar jobDetails = document.querySelector('.job-details');\r\nif (jobDetails) {\r\n var tabs_1 = jobDetails.querySelectorAll('.job-details__tab');\r\n var tabContents_1 = jobDetails.querySelectorAll('.job-details__tab-content');\r\n var starsFill = jobDetails.querySelector('.job-details__stars-fill');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n var activeTabIndex_1 = 0;\r\n tabContents_1[activeTabIndex_1].classList.remove('hidden');\r\n tabs_1[activeTabIndex_1].classList.add('job-details__tab--active');\r\n var resetTabs_1 = function () {\r\n tabs_1.forEach(function (tab) { return tab.classList.remove('job-details__tab--active'); });\r\n tabContents_1.forEach(function (item) { return item.classList.add('hidden'); });\r\n };\r\n tabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n resetTabs_1();\r\n tab.classList.add('job-details__tab--active');\r\n activeTabIndex_1 = index;\r\n tabContents_1[activeTabIndex_1].classList.remove('hidden');\r\n });\r\n });\r\n}\r\nvar shareButtons = document.querySelectorAll(\".shareButton\");\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],55:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar jobsList = document.querySelector('.jobs-list');\r\nif (jobsList) {\r\n var jobsGrid_1 = jobsList.querySelector('.jobs-list__grid');\r\n var jobsFilters_1 = jobsList.querySelector('.jobs-list__filters');\r\n var jobsListSearchInput_1 = jobsList.querySelector('.jobs-list__search-input');\r\n var dropdownFilters = jobsList.querySelectorAll('.dropdown-filter');\r\n var nextPageButton = jobsList.querySelector('.pagination__page-next');\r\n var prevPageButton = jobsList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = jobsList.querySelector('.pagination__dropdown');\r\n var paginationLast = jobsList.querySelector('.pagination__page-last');\r\n var paginationFirst = jobsList.querySelector('.pagination__page-first');\r\n var pagination_2 = jobsList.querySelector('.pagination');\r\n var radios = jobsList.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var jobCards_1 = [];\r\n var keyword_1 = '';\r\n var departments_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var jobCardSettings_1 = {\r\n cardButtonText: '',\r\n availableText: '',\r\n endText: '',\r\n noJobsText: '',\r\n };\r\n var fetchJobCardSettings_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/jobs/cardsettings?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n jobCardSettings_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchJobs_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n departments: departments_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/jobs', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/jobs', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n jobCards_1 = response.data.items;\r\n if (jobCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, jobCards_1, fetchJobs_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n jobsGrid_1.innerHTML = '';\r\n if (jobCards_1.length === 0) {\r\n jobsGrid_1.innerHTML = \"
    \" + jobCardSettings_1.noJobsText + \"
    \";\r\n }\r\n else {\r\n jobCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'job-card flex flex--column';\r\n cardElement.innerHTML = \"\\n \" + (card.isAvailable ? jobCardSettings_1.availableText : jobCardSettings_1.endText) + \"\\n
    \\n

    \" + card.title + \"

    \\n

    \" + card.description + \"

    \\n
    \\n
    \\n

    \\n calendar icon\\n \\n \" + card.department + \"\\n \\n

    \\n

    \\n calendar icon\\n \\n \" + formatDate_1.default(card.publishDate) + \"\\n \\n

    \\n
    \\n
    \\n \\n \\n
    \\n \";\r\n jobsGrid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n }\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n jobsFilters_1 === null || jobsFilters_1 === void 0 ? void 0 : jobsFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n jobsFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchJobs_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchJobs_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchJobs_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchJobs_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchJobs_1();\r\n });\r\n var timeout_1 = null;\r\n jobsListSearchInput_1 === null || jobsListSearchInput_1 === void 0 ? void 0 : jobsListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = jobsListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchJobs_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = jobsList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchJobs_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var departmentsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n departmentsOptions_1.push(element.textContent);\r\n });\r\n departments_1 = departmentsOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchJobs_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n var initializeEventsList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchJobCardSettings_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchJobs_1()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeEventsList();\r\n var addCardListeners_1 = function () {\r\n var listCards = jobsList.querySelectorAll('.job-card');\r\n if (listCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.job-card__button');\r\n listCards.forEach(function (card) {\r\n card.addEventListener('click', function (e) {\r\n var target = e.target;\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/formatDate\":6,\"../pagination/pagination\":67,\"axios\":109}],56:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],57:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar latestNewsComponent = document.querySelector(\".latest-news\");\r\nif (latestNewsComponent) {\r\n var latestNewsCarousels = document.querySelectorAll(\".latest-news__carousel-inner\");\r\n var direction_1 = document.querySelector(\"html\").getAttribute(\"dir\");\r\n if (latestNewsCarousels.length > 0) {\r\n var latestNewsCarouselsArray = Array.from(latestNewsCarousels) || [];\r\n latestNewsCarouselsArray.forEach(function (item) {\r\n var glideSettings = {\r\n type: 'slider',\r\n perView: 3,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction_1 || \"ltr\",\r\n breakpoints: {\r\n 1000: {\r\n perView: 2,\r\n gap: 16\r\n }\r\n }\r\n };\r\n var glide = new glide_1.default(item, glideSettings);\r\n glide.mount();\r\n });\r\n }\r\n}\r\n},{\"@glidejs/glide\":108}],58:[function(require,module,exports){\nvar mobileMenu = document.querySelector(\".menu-mobile__container\");\r\nif (mobileMenu) {\r\n var mobileMenuIcon_1 = mobileMenu.querySelector(\".menu-mobile__icon\");\r\n var mobileMenuIconContainer = mobileMenu.querySelector(\".menu-mobile__icon-container\");\r\n var mobileMenuButton = mobileMenu.querySelector(\".menu-mobile__icon-container\");\r\n var mobileMenuOverlay_1 = mobileMenu.querySelector(\".menu-mobile__overlay\");\r\n var mobileMenuClose = mobileMenu.querySelector(\".menu-mobile__close\");\r\n var accordions_1 = mobileMenu.querySelectorAll(\".menu-mobile__accordion\");\r\n var chevrons = mobileMenu.querySelectorAll(\".menu-mobile__chevron\");\r\n var html_1 = document.querySelector(\"html\");\r\n var dir = document.querySelector(\"html\").getAttribute(\"dir\");\r\n var title = mobileMenu.querySelector(\".menu-mobile__title\");\r\n var openMenu_1 = function () {\r\n mobileMenuIcon_1.classList.add(\"menu-mobile__icon--open\");\r\n mobileMenuOverlay_1.classList.add(\"menu-mobile__overlay--active\");\r\n html_1.style.overflow = \"hidden\";\r\n };\r\n var closeMenu_1 = function () {\r\n mobileMenuIcon_1.classList.remove(\"menu-mobile__icon--open\");\r\n mobileMenuOverlay_1.classList.remove(\"menu-mobile__overlay--active\");\r\n setTimeout(function () {\r\n closeAllAccordions_1();\r\n }, 500);\r\n html_1.style.overflow = \"auto\";\r\n };\r\n var closeAllAccordions_1 = function () {\r\n accordions_1.forEach(function (acc) {\r\n var pan = acc.nextElementSibling;\r\n pan.style.maxHeight = \"\";\r\n pan.classList.remove(\"menu-mobile__accordion-panel--active\");\r\n acc.classList.remove(\"menu-mobile__accordion--active\");\r\n });\r\n };\r\n var handleAccordionClick_1 = function (element) {\r\n var panel = element.nextElementSibling;\r\n var isActive = element.classList.contains(\"menu-mobile__accordion--active\");\r\n closeAllAccordions_1();\r\n if (!isActive) {\r\n panel.classList.add(\"menu-mobile__accordion-panel--active\");\r\n panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n element.classList.add(\"menu-mobile__accordion--active\");\r\n }\r\n };\r\n mobileMenuIconContainer.addEventListener(\"click\", function (e) {\r\n if (mobileMenuIcon_1.classList.contains(\"menu-mobile__icon--open\")) {\r\n closeMenu_1();\r\n }\r\n else {\r\n openMenu_1();\r\n }\r\n });\r\n mobileMenuButton.addEventListener(\"keydown\", function (e) {\r\n if (e.key === \"Enter\") {\r\n if (mobileMenuIcon_1.classList.contains(\"menu-mobile__icon--open\")) {\r\n closeMenu_1();\r\n }\r\n else {\r\n openMenu_1();\r\n }\r\n }\r\n });\r\n mobileMenuOverlay_1.addEventListener(\"keydown\", function (e) {\r\n if (e.key === \"Escape\") {\r\n closeMenu_1();\r\n }\r\n });\r\n mobileMenuOverlay_1.addEventListener(\"click\", function (e) {\r\n var targetElement = e.target;\r\n if (targetElement.className === \"menu-mobile__overlay menu-mobile__overlay--active\") {\r\n closeMenu_1();\r\n }\r\n });\r\n chevrons.forEach(function (chevron) {\r\n chevron.addEventListener(\"keydown\", function (e) {\r\n if (e.key === \"Enter\") {\r\n handleAccordionClick_1(chevron.parentElement);\r\n }\r\n });\r\n });\r\n mobileMenuClose.addEventListener(\"click\", function (e) {\r\n closeMenu_1();\r\n });\r\n mobileMenuClose.addEventListener(\"keydown\", function (e) {\r\n if (e.key === \"Enter\") {\r\n closeMenu_1();\r\n }\r\n });\r\n accordions_1.forEach(function (accordion) {\r\n accordion.addEventListener(\"click\", function () {\r\n if (this.nextElementSibling.classList.contains(\"menu-mobile__accordion-panel\")) {\r\n handleAccordionClick_1(this);\r\n }\r\n });\r\n });\r\n}\r\n},{}],59:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar methodology = document.querySelector('.methodology');\r\nif (methodology) {\r\n var shareButtons = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],60:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar InsertPageView_1 = __importDefault(require(\"../../../helpers/InsertPageView\"));\r\nvar modals = document.querySelectorAll('.modal');\r\nvar html = document.querySelector('html');\r\nif (modals.length > 0) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n modals === null || modals === void 0 ? void 0 : modals.forEach(function (modalContainer, index) {\r\n var _a;\r\n var modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog)\r\n return;\r\n var modalId = \"modal-\" + index;\r\n var openButtonId = \"open-button-\" + index;\r\n modalDialog.id = modalId;\r\n var openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n var closeButton = modalDialog.querySelector('.modal__close');\r\n var pageId = parseInt(modalContainer.getAttribute('data-page-id'));\r\n (_a = document.getElementById(openButtonId)) === null || _a === void 0 ? void 0 : _a.addEventListener('click', function (event) {\r\n modalDialog.showModal();\r\n if (pageId > 0) {\r\n InsertPageView_1.default(pageId);\r\n }\r\n html.style.overflow = 'hidden';\r\n });\r\n closeButton === null || closeButton === void 0 ? void 0 : closeButton.addEventListener('click', function (event) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n });\r\n modalDialog.addEventListener('click', function (event) {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n }\r\n });\r\n window.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n html.style.overflow = '';\r\n }\r\n });\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/InsertPageView\":1}],61:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar initializeFavouritesNavComponent = function (favouritesTabComponent) {\r\n var _a;\r\n var favouritesTabs = favouritesTabComponent.querySelectorAll('.nav-favourites__tab');\r\n var services = favouritesTabComponent.querySelector('.nav-favourites__content_services');\r\n var others = favouritesTabComponent.querySelector('.nav-favourites__content_other');\r\n var favouritesContents = favouritesTabComponent.querySelectorAll('.nav-favourites__content');\r\n var activeTab = 0;\r\n var currentType = '@event';\r\n var isLoading = false;\r\n var currentCulture = document.documentElement.getAttribute('culture');\r\n var servicesCards = [];\r\n var ids = [];\r\n if (favouritesTabComponent) {\r\n var favouritesButton_1 = favouritesTabComponent.querySelector('.nav-favourites__button');\r\n var hasFavourites = (_a = favouritesTabComponent.getAttribute('data-has-favourites')) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase();\r\n if (hasFavourites === 'true') {\r\n favouritesButton_1.classList.add('active');\r\n }\r\n var openFavouriteDropdown_1 = function () {\r\n favouritesButton_1.nextElementSibling.classList.add('nav-favourites__inner--active');\r\n showSelectedTab_1(activeTab);\r\n };\r\n var closeFavouriteDropdown_1 = function () {\r\n favouritesButton_1.nextElementSibling.classList.remove('nav-favourites__inner--active');\r\n };\r\n window.addEventListener('click', function (event) {\r\n var targetElement = favouritesTabComponent.querySelector('.nav-favourites__inner');\r\n var clickedElement = event.target;\r\n if (clickedElement.classList.contains('nav-favourites__button')) {\r\n if (clickedElement.nextElementSibling.classList.contains('nav-favourites__inner--active')) {\r\n closeFavouriteDropdown_1();\r\n }\r\n else {\r\n openFavouriteDropdown_1();\r\n }\r\n return;\r\n }\r\n if (!targetElement)\r\n return;\r\n while (clickedElement) {\r\n if (clickedElement === targetElement) {\r\n favouritesButton_1.nextElementSibling.classList.add('nav-favourites__inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n favouritesButton_1.nextElementSibling.classList.remove('nav-favourites__inner--active');\r\n });\r\n window.addEventListener('keydown', function (e) {\r\n if (e.key === 'Escape') {\r\n closeFavouriteDropdown_1();\r\n }\r\n });\r\n var showSelectedTab_1 = function (activeTab) {\r\n favouritesTabs.forEach(function (tab, index) {\r\n tab.classList.remove('nav-favourites__tab--active');\r\n favouritesContents[index].style.display = 'none';\r\n });\r\n var selectedTab = favouritesTabs[activeTab];\r\n selectedTab.classList.add('nav-favourites__tab--active');\r\n favouritesContents[activeTab].style.display = 'block';\r\n currentType = selectedTab.getAttribute('data-type');\r\n ids = JSON.parse(selectedTab.getAttribute('data-ids'));\r\n if (currentType == 'other') {\r\n getOtherCards_1();\r\n }\r\n else if (currentType == 'service') {\r\n getServiceCards_1();\r\n }\r\n };\r\n var handleTabClick_1 = function (index) {\r\n activeTab = index;\r\n showSelectedTab_1(activeTab);\r\n };\r\n favouritesTabs.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () { return handleTabClick_1(index); });\r\n });\r\n var getServiceCards_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(ids.length > 0)) return [3, 9];\r\n payload = {\r\n sortBy: 1,\r\n pageNumber: 1,\r\n pageSize: 3,\r\n currentCulture: currentCulture,\r\n ids: ids,\r\n };\r\n isLoading = true;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/events/byids', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/events/byids', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n servicesCards = response.data.items;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 8];\r\n case 7:\r\n isLoading = false;\r\n updateServiceCards_1();\r\n return [7];\r\n case 8: return [3, 9];\r\n case 9: return [2];\r\n }\r\n });\r\n }); };\r\n var getOtherCards_1 = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\r\n return [2];\r\n }); }); };\r\n var updateServiceCards_1 = function () {\r\n services.innerHTML = '';\r\n servicesCards.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.className = 'nav-favourites__item flex flex--align-center flex--justify-between';\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.innerHTML = \"\\n \\n \\\"arrow\\n \";\r\n services.appendChild(cardElement);\r\n });\r\n };\r\n showSelectedTab_1(activeTab);\r\n }\r\n};\r\ndocument.querySelectorAll('.nav-favourites__wrapper').forEach(function (favouritesTabComponent) {\r\n initializeFavouritesNavComponent(favouritesTabComponent);\r\n});\r\n},{\"axios\":109}],62:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],63:[function(require,module,exports){\nvar navbar = document.querySelector('.navbar');\r\nif (navbar) {\r\n var searchButton_1 = navbar.querySelector('.navbar__button-search');\r\n var linkItems = navbar.querySelectorAll('.navbar__links-drop');\r\n var searchInput = navbar.querySelector('.navbar__button-search-input');\r\n var checkScrollPosition = function () {\r\n if (window.scrollY === 0) {\r\n navbar.classList.remove('navbar--sticky');\r\n }\r\n else {\r\n navbar.classList.add('navbar--sticky');\r\n }\r\n };\r\n var openSearchDropdown_1 = function () {\r\n searchButton_1.nextElementSibling.classList.add('navbar__button-search-inner--active');\r\n };\r\n var closeSearchDropdown_1 = function () {\r\n searchButton_1.nextElementSibling.classList.remove('navbar__button-search-inner--active');\r\n };\r\n linkItems.forEach(function (link) {\r\n var href = link.getAttribute('data-url');\r\n link.addEventListener('click', function () {\r\n if (href) {\r\n window.location.href = href;\r\n }\r\n });\r\n link.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter' && href) {\r\n window.location.href = href;\r\n }\r\n });\r\n });\r\n window.addEventListener('click', function (event) {\r\n var targetElement = navbar.querySelector('.navbar__button-search-inner');\r\n var clickedElement = event.target;\r\n if (clickedElement.classList.contains('navbar__button-search')) {\r\n if (clickedElement.nextElementSibling.classList.contains('navbar__button-search-inner--active')) {\r\n closeSearchDropdown_1();\r\n }\r\n else {\r\n openSearchDropdown_1();\r\n }\r\n return;\r\n }\r\n if (!targetElement)\r\n return;\r\n while (clickedElement) {\r\n if (clickedElement === targetElement) {\r\n searchButton_1.nextElementSibling.classList.add('navbar__button-search-inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n searchButton_1.nextElementSibling.classList.remove('navbar__button-search-inner--active');\r\n });\r\n window.addEventListener('keydown', function (e) {\r\n if (e.key === 'Escape') {\r\n closeSearchDropdown_1();\r\n }\r\n });\r\n window.addEventListener('scroll', checkScrollPosition);\r\n checkScrollPosition();\r\n}\r\n},{}],64:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar newsDetails = document.querySelector('.news-details__wrapper');\r\nif (newsDetails) {\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],65:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar newsList = document.querySelector('.news-list');\r\nif (newsList) {\r\n var Grid_1 = newsList.querySelector('.news-list__grid');\r\n var Filters_1 = newsList.querySelector('.news-list__search');\r\n var ListSearchInput_1 = newsList.querySelector('.news-list__search-input');\r\n var DateFrom_1 = newsList.querySelector('.date-range__input-from');\r\n var DateTo_1 = newsList.querySelector('.date-range__input-to');\r\n var nextPageButton = newsList.querySelector('.pagination__page-next');\r\n var prevPageButton = newsList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = newsList.querySelector('.pagination__dropdown');\r\n var paginationLast = newsList.querySelector('.pagination__page-last');\r\n var paginationFirst = newsList.querySelector('.pagination__page-first');\r\n var pagination_2 = newsList.querySelector('.pagination');\r\n var radios = newsList.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var dropdownFilters = newsList.querySelectorAll('.dropdown-filter');\r\n var newsCards_1 = [];\r\n var keyword_1 = '';\r\n var dateFrom_1 = '';\r\n var dateTo_1 = '';\r\n var userTypes_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var newsCardSettings_1 = {\r\n Text: '',\r\n };\r\n var fetchNewsCardSettings_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/news/cardsettings?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n newsCardSettings_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchNews_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n dateFrom: dateFrom_1,\r\n dateTo: dateTo_1,\r\n userTypes: userTypes_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/news', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/news', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n newsCards_1 = response.data.items;\r\n if (newsCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, newsCards_1, fetchNews_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n Grid_1.innerHTML = '';\r\n newsCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'news__card flex flex--column';\r\n cardElement.innerHTML = \" \\n \" + card.title + \"\\n

    \" + card.title + \"

    \\n

    \\n calendar icon\\n \\n \" + formatDate_1.default(card.date) + \"\\n \\n

    \\n \";\r\n Grid_1.appendChild(cardElement);\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n Filters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n Filters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchNews_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchNews_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchNews_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchNews_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchNews_1();\r\n });\r\n var timeout_1 = null;\r\n ListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = ListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchNews_1();\r\n }, 1000);\r\n });\r\n DateFrom_1.addEventListener('change', function () {\r\n dateFrom_1 = DateFrom_1.value;\r\n fetchNews_1();\r\n });\r\n DateTo_1.addEventListener('change', function () {\r\n dateTo_1 = DateTo_1.value;\r\n fetchNews_1();\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = newsList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchNews_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var userTypesOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n userTypesOptions_1.push(element.textContent);\r\n });\r\n userTypes_1 = userTypesOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchNews_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n var initializeEventsList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchNewsCardSettings_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchNews_1()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeEventsList();\r\n var shareButtons = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/formatDate\":6,\"../pagination/pagination\":67,\"axios\":109}],66:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],67:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.createPaginationButtons = exports.updatePaginationButtons = exports.setPage = exports.removeOldButtons = exports.getPages = void 0;\r\nvar direction = document.querySelector('html').getAttribute('dir');\r\nvar nextPageButton = document.querySelector('.pagination__page-next');\r\nvar prevPageButton = document.querySelector('.pagination__page-prev');\r\nvar paginationMultiEnd = document.querySelector('.pagination__page-multi-end');\r\nvar paginationMultiStart = document.querySelector('.pagination__page-multi-start');\r\nvar paginationLast = document.querySelector('.pagination__page-last');\r\nvar paginationFirst = document.querySelector('.pagination__page-first');\r\nvar paginationCurrent = document.querySelector('.pagination__current');\r\nvar paginationTotal = document.querySelector('.pagination__total');\r\nvar hasPreviousPage;\r\nvar hasNextPage;\r\nvar totalPages;\r\nvar pageNumber;\r\nvar totalCount;\r\nvar buttonsToShow = 3;\r\nvar pageCards = [];\r\nvar buttons = [];\r\nvar fetchEvents = null;\r\nvar getPages = function () {\r\n var startPage = pageNumber === 1 ? 1 : pageNumber - 1;\r\n return Array.from({ length: buttonsToShow }, function (_, i) { return startPage + i; }).filter(function (page) { return page <= totalPages; });\r\n};\r\nexports.getPages = getPages;\r\nvar removeOldButtons = function () {\r\n var oldButtons = document.querySelectorAll('.pagination__page-number');\r\n oldButtons.forEach(function (button) { return button.remove(); });\r\n};\r\nexports.removeOldButtons = removeOldButtons;\r\nvar setPage = function (page) {\r\n if (page < 1 || page > totalPages)\r\n return;\r\n removeOldButtons();\r\n pageNumber = page;\r\n createPaginationButtons();\r\n fetchEvents(pageNumber);\r\n};\r\nexports.setPage = setPage;\r\nvar updatePaginationButtons = function (tot, hasPrevPage, hasNext, pageNum, pageSize, total, totButtons, cards, fetchResults) {\r\n hasPreviousPage = hasPrevPage;\r\n hasNextPage = hasNext;\r\n totalPages = tot;\r\n pageNumber = pageNum;\r\n totalCount = total;\r\n buttonsToShow = totButtons;\r\n pageCards = cards;\r\n fetchEvents = fetchResults;\r\n removeOldButtons();\r\n if (hasPreviousPage) {\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.removeAttribute('disabled');\r\n }\r\n else {\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.setAttribute('disabled', 'true');\r\n }\r\n if (hasNextPage) {\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.removeAttribute('disabled');\r\n }\r\n else {\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.setAttribute('disabled', 'true');\r\n }\r\n paginationLast.textContent = totalPages.toString();\r\n var offset = (pageNumber - 1) * pageSize + 1;\r\n var end = Math.min((pageNumber - 1) * pageSize + pageSize, totalCount);\r\n if (direction == 'rtl') {\r\n paginationCurrent.textContent = end.toString() + '-' + offset.toString();\r\n }\r\n else {\r\n paginationCurrent.textContent = offset.toString() + '-' + end.toString();\r\n }\r\n paginationTotal.textContent = totalCount.toString();\r\n createPaginationButtons();\r\n};\r\nexports.updatePaginationButtons = updatePaginationButtons;\r\nvar createPaginationButtons = function () {\r\n var pages = getPages();\r\n buttons = [];\r\n pages.forEach(function (page, i) {\r\n var button = document.createElement('button');\r\n button.className = 'pagination__page pagination__page-number flex flex--align-center flex--justify-center';\r\n if (pageNumber === page) {\r\n button.classList.add('pagination__page--active');\r\n }\r\n button.textContent = page.toString();\r\n if (page === pageNumber) {\r\n button.classList.add('active');\r\n }\r\n button.addEventListener('click', function () { return setPage(page); });\r\n buttons.push(button);\r\n });\r\n buttons.reverse().forEach(function (button) {\r\n paginationMultiStart.insertAdjacentElement('afterend', button);\r\n });\r\n if (pageNumber === totalPages) {\r\n paginationMultiEnd.classList.add('hidden');\r\n paginationLast.classList.add('hidden');\r\n }\r\n else {\r\n paginationMultiEnd.classList.remove('hidden');\r\n paginationLast.classList.remove('hidden');\r\n }\r\n if (pageNumber > 2) {\r\n paginationFirst.classList.remove('hidden');\r\n paginationMultiStart.classList.remove('hidden');\r\n }\r\n else {\r\n paginationFirst.classList.add('hidden');\r\n paginationMultiStart.classList.add('hidden');\r\n }\r\n if (pageNumber === 1 && totalCount === 0) {\r\n paginationMultiEnd.classList.add('hidden');\r\n paginationLast.classList.add('disabled');\r\n paginationLast.classList.add('pagination__page--active');\r\n paginationLast.textContent = '1';\r\n }\r\n buttons.forEach(function (button) {\r\n if (paginationLast.textContent === button.textContent) {\r\n paginationLast.classList.add('hidden');\r\n paginationMultiEnd.classList.add('hidden');\r\n }\r\n });\r\n};\r\nexports.createPaginationButtons = createPaginationButtons;\r\n},{}],68:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar partnersComponent = document.querySelector('.partners');\r\nif (partnersComponent) {\r\n var partnersCarousels = partnersComponent.querySelectorAll('.partners__carousel-inner');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n var partnersTabs_1 = partnersComponent.querySelectorAll('.partners__tab');\r\n var partnersCarouselsContainer_1 = partnersComponent.querySelectorAll('.partners__carousel');\r\n var activeTab_1 = 0;\r\n if (partnersCarousels.length > 0) {\r\n var partnersCarouselsArray = Array.from(partnersCarousels) || [];\r\n partnersCarouselsArray.forEach(function (item) {\r\n var glideSettings = {\r\n type: 'slider',\r\n perView: 4,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n hoverpause: true,\r\n direction: direction_1 || 'ltr',\r\n breakpoints: {\r\n 1400: {\r\n perView: 4,\r\n },\r\n 1100: {\r\n perView: 3,\r\n gap: 16,\r\n },\r\n },\r\n };\r\n var glide = new glide_1.default(item, glideSettings);\r\n glide.mount();\r\n });\r\n }\r\n var resetAll_1 = function () {\r\n partnersCarouselsContainer_1.forEach(function (carousel) { return carousel.classList.remove('partners__carousel--active'); });\r\n partnersTabs_1.forEach(function (tab) { return tab.classList.remove('partners__tab--active'); });\r\n };\r\n var showActiveItems_1 = function (activeTabNum) {\r\n resetAll_1();\r\n partnersTabs_1[activeTabNum].classList.add('partners__tab--active');\r\n partnersCarouselsContainer_1[activeTabNum].classList.add('partners__carousel--active');\r\n };\r\n partnersTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n showActiveItems_1(activeTab_1);\r\n });\r\n });\r\n showActiveItems_1(activeTab_1);\r\n}\r\n},{\"@glidejs/glide\":108}],69:[function(require,module,exports){\nvar peopleComponent = document.querySelector(\".people__wrapper\");\r\nif (peopleComponent) {\r\n var peopleCards = peopleComponent.querySelectorAll(\".people__image-container\");\r\n peopleCards.forEach(function (card) {\r\n card.addEventListener(\"click\", function () {\r\n card.classList.toggle(\"people__image-container--active\");\r\n });\r\n });\r\n}\r\n},{}],70:[function(require,module,exports){\nvar policies = document.querySelector('.policies');\r\nif (policies) {\r\n var policiesTabs_1 = policies.querySelectorAll('.policies__tab');\r\n var policiesSections_1 = policies.querySelectorAll('.policies__section');\r\n var activeTab_1 = 0;\r\n var resetTabs_1 = function () {\r\n policiesTabs_1.forEach(function (tab) { return tab.classList.remove('policies__tab--active'); });\r\n policiesSections_1.forEach(function (item) { return item.classList.add('hidden'); });\r\n };\r\n policiesTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n policiesTabs_1[activeTab_1].classList.add('policies__tab--active');\r\n policiesSections_1[activeTab_1].classList.remove('hidden');\r\n });\r\n });\r\n}\r\n},{}],71:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar addToCalendar_1 = __importDefault(require(\"../../../helpers/addToCalendar\"));\r\nvar programDetails = document.querySelector('.program-details');\r\nif (programDetails) {\r\n var eventTabs_1 = programDetails.querySelectorAll('.program-details__tab');\r\n var sections_1 = programDetails.querySelectorAll('.program-details__section');\r\n var programDetailsCarousels = programDetails.querySelectorAll('.program-details__carousel-inner');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n var activeTab_1 = 0;\r\n var resetTabs_1 = function () {\r\n eventTabs_1.forEach(function (tab) { return tab.classList.remove('program-details__tab--active'); });\r\n sections_1.forEach(function (tab) { return tab.classList.remove('program-details__section--active'); });\r\n };\r\n eventTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n eventTabs_1[activeTab_1].classList.add('program-details__tab--active');\r\n sections_1[activeTab_1].classList.add('program-details__section--active');\r\n });\r\n });\r\n sections_1.forEach(function (section) {\r\n var accordion = section.firstElementChild;\r\n if (accordion != null) {\r\n if (accordion.classList.contains('program-details__accordion')) {\r\n accordion.setAttribute('open', 'true');\r\n }\r\n }\r\n var accordions = section.querySelectorAll('.program-details__accordion');\r\n accordions.forEach(function (childAccordion) {\r\n childAccordion.addEventListener('toggle', function () {\r\n if (childAccordion.open) {\r\n accordions.forEach(function (otherAccordion) {\r\n if (otherAccordion !== childAccordion) {\r\n otherAccordion.removeAttribute('open');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n });\r\n if (programDetailsCarousels.length > 0) {\r\n programDetailsCarousels.forEach(function (item) {\r\n var carouselType = item.getAttribute('data-carousel');\r\n var glideSettings;\r\n if (carouselType === 'events-carousel') {\r\n glideSettings = {\r\n type: 'slider',\r\n perView: 2,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction_1 || 'ltr',\r\n breakpoints: {\r\n 480: {\r\n perView: 1,\r\n },\r\n },\r\n };\r\n }\r\n else if (carouselType === 'programs-carousel') {\r\n glideSettings = {\r\n type: 'slider',\r\n perView: 4,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction_1 || 'ltr',\r\n breakpoints: {\r\n 1200: {\r\n perView: 3,\r\n },\r\n 992: {\r\n perView: 2,\r\n },\r\n 480: {\r\n perView: 1,\r\n },\r\n },\r\n };\r\n }\r\n var glide = new glide_1.default(item, glideSettings);\r\n glide.mount();\r\n });\r\n }\r\n var favButtons = document.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach(function (button) {\r\n var dataIdAttr = button.getAttribute('data-id');\r\n var type = button.getAttribute('data-type');\r\n var favouritedIds = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n var dataId_1 = parseInt(dataIdAttr);\r\n if (isFavourite_1.IsFavourited(dataId_1, favouritedIds)) {\r\n button.classList.add('active');\r\n }\r\n else {\r\n button.classList.remove('active');\r\n }\r\n button.addEventListener('click', function (e) {\r\n console.log('small button clicked - program details');\r\n favourites_1.default(type, dataId_1, button);\r\n });\r\n }\r\n });\r\n }\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n var calButtons = document.querySelectorAll('.calButton');\r\n if (calButtons && calButtons.length > 0) {\r\n calButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n addToCalendar_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/addToCalendar\":2,\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8,\"@glidejs/glide\":108}],72:[function(require,module,exports){\nvar initializeProgramStatsComponent = function (webStatsComponent) {\r\n var programStatsTabs = webStatsComponent.querySelectorAll('.program-stats__tab');\r\n var programStatsContents = webStatsComponent.querySelectorAll('.program-stats__content');\r\n var activeTab = 0;\r\n var showSelectedItems = function (activeTab) {\r\n programStatsTabs.forEach(function (tab, index) {\r\n tab.classList.remove('program-stats__tab--active');\r\n programStatsContents[index].style.display = 'none';\r\n });\r\n programStatsTabs[activeTab].classList.add('program-stats__tab--active');\r\n programStatsContents[activeTab].style.display = 'block';\r\n };\r\n var handleTabClick = function (index) {\r\n activeTab = index;\r\n showSelectedItems(activeTab);\r\n };\r\n programStatsTabs.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () { return handleTabClick(index); });\r\n });\r\n showSelectedItems(activeTab);\r\n};\r\ndocument.querySelectorAll('.program-stats').forEach(function (webStatsComponent) {\r\n initializeProgramStatsComponent(webStatsComponent);\r\n});\r\n},{}],73:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar programsList = document.querySelector('.programs-list');\r\nif (programsList) {\r\n var Grid_1 = programsList.querySelector('.programs-list__images');\r\n var nextPageButton = programsList.querySelector('.pagination__page-next');\r\n var prevPageButton = programsList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = programsList.querySelector('.pagination__dropdown');\r\n var paginationLast = programsList.querySelector('.pagination__page-last');\r\n var paginationFirst = programsList.querySelector('.pagination__page-first');\r\n var pagination_2 = programsList.querySelector('.pagination');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var programsCards_1 = [];\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchPrograms_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://mawhiba-development.azurewebsites.net/api/programs', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post(\"/api/programs\", payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n programsCards_1 = response.data.items;\r\n if (programsCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalCount_1 = response.data.totalCount;\r\n totalPages_1 = response.data.totalPages;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, programsCards_1, fetchPrograms_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n Grid_1.innerHTML = '';\r\n programsCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'programs-list__item sticky flex flex--justify-between';\r\n cardElement.style.backgroundImage = \"url(\" + card.backgroundImage + \")\";\r\n cardElement.innerHTML = \" \\n
    \\n

    \" + card.title + \"

    \\n

    \" + card.text + \"

    \\n
    \\n \\n
    \\n
    \\n \\n \\\"share\\n \\n
    \\n
    \\n \";\r\n if (card.links.length > 0) {\r\n var list_1 = document.createElement('ul');\r\n list_1.className = 'programs-list__list fade-in flex flex--column flex--align-start';\r\n card.links.forEach(function (link) {\r\n var listItem = document.createElement('li');\r\n listItem.className = 'programs-list__list-item';\r\n listItem.innerHTML = \"\\n \\n \\n \" + link.title + \"\\n \\n \\\"arrow\\n \\n \";\r\n list_1.appendChild(listItem);\r\n });\r\n var rightContent = cardElement.querySelector('.programs-list__item-right');\r\n rightContent.appendChild(list_1);\r\n var moreButton = document.createElement('button');\r\n moreButton.className =\r\n 'button button--transparent programs-list__item-button flex flex--justify-center flex--align-center';\r\n moreButton.innerHTML = \"\\n \" + card.linkText + \"\\n \\\"arrow\\n \";\r\n rightContent.appendChild(moreButton);\r\n }\r\n Grid_1.appendChild(cardElement);\r\n });\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'programs-list__item sticky';\r\n cardElement.style.opacity = '0';\r\n cardElement.style.zIndex = '-1';\r\n Grid_1.appendChild(cardElement);\r\n addCardListeners_1();\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchPrograms_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchPrograms_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchPrograms_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchPrograms_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchPrograms_1();\r\n });\r\n fetchPrograms_1();\r\n var addCardListeners_1 = function () {\r\n var listCards = programsList.querySelectorAll('.programs-list__item');\r\n if (listCards.length > 0) {\r\n var cardButtons = programsList.querySelectorAll('.programs-list__button');\r\n var moreButtons_1 = programsList.querySelectorAll('.programs-list__item-button');\r\n var list_2 = programsList.querySelectorAll('.programs-list__list');\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('favouriteButton')) {\r\n var t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n favourites_1.default(t, id, button);\r\n }\r\n else if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n listCards.forEach(function (card, index) {\r\n card.addEventListener('click', function (e) {\r\n var target = e.target;\r\n if (target.classList.contains('programs-list__item-button') ||\r\n target.parentElement.classList.contains('programs-list__item-button') ||\r\n target.parentElement.classList.contains('programs-list__item-button')) {\r\n list_2[index].classList.toggle('programs-list__list--active');\r\n moreButtons_1[index].classList.add('hidden');\r\n }\r\n else {\r\n closeAllLists_1();\r\n }\r\n });\r\n });\r\n var top_1 = 180;\r\n var headerHeight_1 = 65;\r\n if (window.innerWidth < 1200) {\r\n top_1 = 20;\r\n }\r\n var cardsCount = listCards.length;\r\n if (cardsCount) {\r\n listCards.forEach(function (card, i) {\r\n var incValue = i * headerHeight_1;\r\n if (i === 0) {\r\n card.style.top = top_1 + \"px\";\r\n }\r\n else {\r\n card.style.top = top_1 + incValue + \"px\";\r\n }\r\n });\r\n }\r\n var closeAllLists_1 = function () {\r\n var list = programsList.querySelectorAll('.programs-list__list');\r\n var moreButtons = programsList.querySelectorAll('.programs-list__item-button');\r\n list.forEach(function (item, i) {\r\n item.classList.remove('programs-list__list--active');\r\n moreButtons[i].classList.remove('hidden');\r\n });\r\n };\r\n window.addEventListener('scroll', function () {\r\n closeAllLists_1();\r\n });\r\n }\r\n };\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../pagination/pagination\":67,\"axios\":109}],74:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],75:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar quickJoin = document.querySelector('.quick-join');\r\nif (quickJoin) {\r\n var trigger = quickJoin.querySelector('.quick-join__trigger');\r\n var triggerIcon_1 = quickJoin.querySelector('.quick-join__trigger-close');\r\n var form = quickJoin.querySelector('.quick-join__form');\r\n var nextButtons = quickJoin.querySelectorAll('.quick-join__next');\r\n var closeButton = quickJoin.querySelector('.quick-join__close');\r\n var submitButton_1 = quickJoin.querySelector('.quick-join__submit');\r\n var firstSection_1 = quickJoin.querySelector('.quick-join__section-1');\r\n var secondSection_1 = quickJoin.querySelector('.quick-join__section-2');\r\n var thirdSection_1 = quickJoin.querySelector('.quick-join__section-3');\r\n var userEmail_1 = quickJoin.querySelector('.quick-join__user');\r\n var idInput_1 = quickJoin.querySelector('.quick-join__id-input');\r\n var mobileNumberInput_1 = quickJoin.querySelector('.country-dropdown__number');\r\n var emailInput_1 = quickJoin.querySelector('.quick-join__email-input');\r\n var countryCode_1 = quickJoin.querySelector('.country-dropdown__title');\r\n var formidInput_1 = quickJoin.querySelector('.quick-join-formid');\r\n var classValidation_1 = quickJoin.querySelector('.quick-join__classes-validation');\r\n var programsValidation_1 = quickJoin.querySelector('.quick-join__programs-validation');\r\n var idValidation_1 = quickJoin.querySelector('.quick-join__id-validation');\r\n var mobileValidation_1 = quickJoin.querySelector('.quick-join__mobile-validation');\r\n var emailValidation_1 = quickJoin.querySelector('.quick-join__email-validation');\r\n var dropdownFilters_1 = firstSection_1.querySelectorAll('.dropdown-filter');\r\n var dropdownFilterTriggers = firstSection_1.querySelectorAll('.dropdown-filter__trigger');\r\n var programsDropdown_1 = firstSection_1.querySelector('.multi-select');\r\n var singleDropdownFilter = firstSection_1.querySelector('.single-dropdown-filter');\r\n var singleDropdownFilterTrigger_1 = firstSection_1.querySelector('.single-dropdown-filter__trigger');\r\n var singleDropdown_1 = singleDropdownFilter.querySelector('.single-select');\r\n var singleDropdownPlaceholder_1 = singleDropdown_1.getAttribute('data-placeholder');\r\n var autocompleLists_1 = quickJoin.querySelectorAll('.multi-select');\r\n var singleAutocompleLists_1 = quickJoin.querySelectorAll('.single-select');\r\n var buttonContainers_1 = quickJoin.querySelectorAll('.dropdown-filter__button-container');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var _class_1 = '';\r\n var programs_1 = [];\r\n var resetForm_1 = function () {\r\n firstSection_1.classList.remove('hidden');\r\n secondSection_1.classList.add('hidden');\r\n thirdSection_1.classList.add('hidden');\r\n idInput_1.value = '';\r\n mobileNumberInput_1.value = '';\r\n emailInput_1.value = '';\r\n buttonContainers_1.forEach(function (container) {\r\n container.innerHTML = '';\r\n });\r\n programs_1 = [];\r\n _class_1 = '';\r\n autocompleLists_1.forEach(function (list) {\r\n list.querySelectorAll('option').forEach(function (item) {\r\n item.removeAttribute('selected');\r\n });\r\n });\r\n dropdownFilters_1.forEach(function (filter) {\r\n filter.classList.add('disabled');\r\n });\r\n singleDropdownFilterTrigger_1.innerHTML = singleDropdownPlaceholder_1;\r\n singleAutocompleLists_1.forEach(function (list) {\r\n list.querySelectorAll('option').forEach(function (item) {\r\n item.removeAttribute('selected');\r\n });\r\n });\r\n userEmail_1.textContent = '';\r\n };\r\n var resetValidations_1 = function () {\r\n classValidation_1.classList.add('hidden');\r\n programsValidation_1.classList.add('hidden');\r\n idValidation_1.classList.add('hidden');\r\n mobileValidation_1.classList.add('hidden');\r\n emailValidation_1.classList.add('hidden');\r\n };\r\n var isFormValid_1 = function () {\r\n var tenDigitsPattern = /^\\d{10}$/;\r\n var isIdValid = tenDigitsPattern.test(idInput_1.value);\r\n console.log(isIdValid);\r\n if (idInput_1.value === '' || !isIdValid) {\r\n idValidation_1.classList.remove('hidden');\r\n }\r\n if (mobileNumberInput_1.value === '') {\r\n mobileValidation_1.classList.remove('hidden');\r\n }\r\n if (emailInput_1.value === '') {\r\n emailValidation_1.classList.remove('hidden');\r\n }\r\n if (idInput_1.value !== '' &&\r\n isIdValid &&\r\n mobileNumberInput_1.value !== '' &&\r\n emailInput_1.value !== '' &&\r\n _class_1 !== '' &&\r\n programs_1.length > 0 &&\r\n firstSection_1.classList.contains('hidden')) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n var toggleSlider_1 = function () {\r\n resetForm_1();\r\n resetValidations_1();\r\n quickJoin.classList.toggle('quick-join--open');\r\n triggerIcon_1.classList.toggle('hidden');\r\n };\r\n var closeSlider_1 = function () {\r\n quickJoin.classList.remove('quick-join--open');\r\n triggerIcon_1.classList.add('hidden');\r\n resetForm_1();\r\n resetValidations_1();\r\n };\r\n var resetProgramsDropdown_1 = function () {\r\n buttonContainers_1.forEach(function (container) {\r\n container.innerHTML = '';\r\n });\r\n programs_1 = [];\r\n autocompleLists_1.forEach(function (list) {\r\n list.querySelectorAll('option').forEach(function (item) {\r\n item.removeAttribute('selected');\r\n });\r\n });\r\n };\r\n var getServices_1 = function (className) { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/quickjoin/services?class=\" + className + \"¤tCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n programsDropdown_1.length = 0;\r\n response.data.forEach(function (service) {\r\n var opt = document.createElement('option');\r\n opt.value = service;\r\n opt.innerHTML = service;\r\n programsDropdown_1.appendChild(opt);\r\n });\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n closeButton.addEventListener('click', function () {\r\n closeSlider_1();\r\n });\r\n window.addEventListener('keydown', function (e) {\r\n if (e.key === 'Escape') {\r\n closeSlider_1();\r\n }\r\n });\r\n dropdownFilterTriggers.forEach(function (trigger) {\r\n trigger.addEventListener('keydown', function (e) {\r\n e.preventDefault();\r\n });\r\n });\r\n singleDropdownFilterTrigger_1.addEventListener('keydown', function (e) {\r\n e.preventDefault();\r\n });\r\n singleDropdown_1.addEventListener('change', function () {\r\n var selected = singleDropdown_1.querySelector('option:checked');\r\n _class_1 = selected.value;\r\n classValidation_1.classList.add('hidden');\r\n getServices_1(selected.value);\r\n resetProgramsDropdown_1();\r\n dropdownFilters_1.forEach(function (filter) {\r\n filter.classList.remove('disabled');\r\n });\r\n });\r\n trigger.addEventListener('click', function () {\r\n toggleSlider_1();\r\n });\r\n trigger.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n toggleSlider_1();\r\n }\r\n });\r\n nextButtons.forEach(function (button, index) {\r\n button.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n if (index === 0) {\r\n if (_class_1 === '') {\r\n classValidation_1.classList.remove('hidden');\r\n }\r\n if (_class_1 !== '' && programs_1.length < 1) {\r\n programsValidation_1.classList.remove('hidden');\r\n }\r\n if (_class_1 !== '' && programs_1.length > 0) {\r\n firstSection_1.classList.add('hidden');\r\n secondSection_1.classList.remove('hidden');\r\n resetValidations_1();\r\n }\r\n }\r\n });\r\n });\r\n form.addEventListener('submit', function (e) {\r\n e.preventDefault();\r\n submitButton_1.setAttribute('disabled', 'true');\r\n if (isFormValid_1) {\r\n userEmail_1.textContent = emailInput_1.value;\r\n secondSection_1.classList.add('hidden');\r\n thirdSection_1.classList.remove('hidden');\r\n submitButton_1.removeAttribute('disabled');\r\n var dataObject = {\r\n class: _class_1,\r\n programs: programs_1,\r\n idNumber: idInput_1.value,\r\n countryCode: countryCode_1.textContent,\r\n mobile: mobileNumberInput_1.value,\r\n email: emailInput_1.value,\r\n formid: formidInput_1.value,\r\n };\r\n console.log(dataObject);\r\n SendData_1(dataObject);\r\n }\r\n });\r\n var SendData_1 = function (dataObject) { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.post(\"/api/quickjoin\", dataObject)];\r\n case 1:\r\n response = _a.sent();\r\n console.log(response.data);\r\n return [3, 3];\r\n case 2:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n dropdownFilters_1.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var arr2_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n arr2_1.push(element.textContent);\r\n });\r\n programsValidation_1.classList.add('hidden');\r\n programs_1 = arr2_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n}\r\n},{\"axios\":109}],76:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],77:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar starRatings_1 = require(\"../starRatings/starRatings\");\r\nvar list = document.querySelector('.science-pubs__wrapper');\r\nif (list) {\r\n var grid_1 = list.querySelector('.science-pubs__grid');\r\n var filters_1 = list.querySelector('.science-pubs__filter-content');\r\n var resultsnumber_1 = list.querySelector('.science-pubs__number');\r\n var filterButton = list.querySelector('.science-pubs__button');\r\n var filterCount_1 = list.querySelector('.science-pubs__button-count-content');\r\n var listSearchInput_1 = list.querySelector('.science-pubs__search-input');\r\n var publicationsAuthorsDiv_1 = list.querySelector('.science-pubs__sub-filters');\r\n var publicationsFileTypesDiv_1 = list.querySelector('.science-pubs__summary-filetypes');\r\n var nextPageButton = list.querySelector('.pagination__page-next');\r\n var prevPageButton = list.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = list.querySelector('.pagination__dropdown');\r\n var paginationLast = list.querySelector('.pagination__page-last');\r\n var paginationFirst = list.querySelector('.pagination__page-first');\r\n var pagination_2 = list.querySelector('.pagination');\r\n var radios = list.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var pageId_1 = Number(list.getAttribute('data-id'));\r\n var checkboxFiltersViews = list.querySelectorAll('.science-pubs__view-checkbox');\r\n var scienceCards_1 = [];\r\n var scienceCardsAll_1 = [];\r\n var publicationsAuthors_1 = [];\r\n var publicationsFileTypes_1 = [];\r\n var keyword_1 = '';\r\n var authors_1 = [];\r\n var views_1 = [];\r\n var ratings_1 = [];\r\n var fileTypes_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var addPageView_1 = function (pageViewedId) { return __awaiter(void 0, void 0, void 0, function () {\r\n var error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.post(\"/api/pageview?pageId=\" + pageViewedId)];\r\n case 1:\r\n _a.sent();\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchPublicationsFilters_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 5, 6, 7]);\r\n payload = {\r\n pageId: pageId_1,\r\n keyword: keyword_1,\r\n authors: authors_1,\r\n views: views_1,\r\n ratings: ratings_1,\r\n fileTypes: fileTypes_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 2];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/scientificpublications/filters', payload)];\r\n case 1:\r\n response = _a.sent();\r\n return [3, 4];\r\n case 2: return [4, axios_1.default.post('/api/scientificpublications/filters', payload)];\r\n case 3:\r\n response = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n publicationsAuthors_1 = response.data.authors;\r\n publicationsFileTypes_1 = response.data.fileTypes;\r\n return [3, 7];\r\n case 5:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n return [3, 7];\r\n case 6:\r\n updateFilters_1();\r\n updateNumberCards_1();\r\n return [7];\r\n case 7: return [2];\r\n }\r\n });\r\n }); };\r\n var updateFilters_1 = function () {\r\n publicationsAuthorsDiv_1.innerHTML = '';\r\n publicationsAuthors_1.forEach(function (card) {\r\n var cardElement = document.createElement('summary');\r\n cardElement.innerHTML = \"\\n
    \\n \\n \\n
    \\n \";\r\n publicationsAuthorsDiv_1.appendChild(cardElement);\r\n });\r\n var checkboxFiltersAuthors = list.querySelectorAll('.science-pubs__category-checkbox');\r\n if (checkboxFiltersAuthors.length > 0) {\r\n checkboxFiltersAuthors.forEach(function (checkbox) {\r\n checkbox.addEventListener('change', function () {\r\n if (authors_1.includes(checkbox.value)) {\r\n authors_1 = authors_1.filter(function (cat) { return cat !== checkbox.value; });\r\n }\r\n else {\r\n authors_1.push(checkbox.value);\r\n }\r\n fetchPublications_1();\r\n fetchAllPublications_1();\r\n });\r\n });\r\n }\r\n publicationsFileTypesDiv_1.innerHTML = '';\r\n publicationsFileTypes_1.forEach(function (card) {\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'science-pubs__sub-filters-text flex flex--align-center';\r\n cardElement.innerHTML = \"\\n \\n \\n \";\r\n publicationsFileTypesDiv_1.appendChild(cardElement);\r\n });\r\n var checkboxFiltersFileTypes = list.querySelectorAll('.science-pubs__filetype-checkbox');\r\n if (checkboxFiltersFileTypes.length > 0) {\r\n checkboxFiltersFileTypes.forEach(function (checkbox) {\r\n checkbox.addEventListener('change', function () {\r\n if (fileTypes_1.includes(checkbox.value)) {\r\n fileTypes_1 = fileTypes_1.filter(function (cat) { return cat !== checkbox.value; });\r\n }\r\n else {\r\n fileTypes_1.push(checkbox.value);\r\n }\r\n fetchPublications_1();\r\n fetchAllPublications_1();\r\n });\r\n });\r\n }\r\n };\r\n var fetchPublications_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, fCount, response, error_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n pageId: pageId_1,\r\n keyword: keyword_1,\r\n authors: authors_1,\r\n views: views_1,\r\n ratings: ratings_1,\r\n fileTypes: fileTypes_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n fCount = authors_1.length + views_1.length;\r\n filterCount_1.innerHTML = fCount.toString();\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/scientificpublications', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/scientificpublications', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n scienceCards_1 = response.data.items;\r\n if (scienceCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n resultsnumber_1.innerHTML = response.data.totalCount;\r\n return [3, 8];\r\n case 6:\r\n error_3 = _a.sent();\r\n console.error(error_3);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, scienceCards_1, fetchPublications_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n updateNumberCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var fetchAllPublications_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n payload = {\r\n pageId: pageId_1,\r\n keyword: '',\r\n authors: [],\r\n views: [],\r\n fileTypes: [],\r\n ratings: [],\r\n sortBy: 1,\r\n pageNumber: 1,\r\n pageSize: -1,\r\n currentCulture: currentCulture_1,\r\n };\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/scientificpublications', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/scientificpublications', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n scienceCardsAll_1 = response.data.items;\r\n return [3, 7];\r\n case 6:\r\n error_4 = _a.sent();\r\n console.error(error_4);\r\n return [3, 7];\r\n case 7: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n grid_1.innerHTML = '';\r\n scienceCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'science-card flex flex--column flex--align-start flex--justify-between fade-in';\r\n cardElement.innerHTML = \"\\n
    \\n
    \\n \\\"publciation\\n
    \\n
    \\n \" + (card.fileType !== null && card.fileType !== ''\r\n ? \"
    \\n \\\"pdf\\n
    \"\r\n : '') + \"\\n \" + card.title + \"\\n \" + card.description + \"\\n
    \\n
    \\n \\\"user\\n \" + card.author + \"\\n
    \\n
    \\n
    \\n\\n \" + (card.isRated\r\n ?\r\n ''\r\n :\r\n ' ') + \"\\n\\n \" + card.rating + \"\\n
    \\n
    \\n
    \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
    \\n
    \\n \" + card.rating + \"\\n
    \\n
    \\n
    \\n
    \\n \\\"eye\\n \" + card.views + \"\\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n \" + card.linkTitle + \"\\n \\\"/assets/img/img/arrow-top-left-dark.svg\\\"\\n \\n
    \\n \\n \\n \\\"/assets/img/img/download-icon-dark.svg\\\"\\n \\n
    \\n
    \\n \";\r\n grid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n starRatings_1.initStarRatings();\r\n var fileButtons = grid_1.querySelectorAll('.science-card__link--full');\r\n fileButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n var cardId = Number(button.getAttribute('data-id'));\r\n addPageView_1(cardId);\r\n });\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n filters_1 === null || filters_1 === void 0 ? void 0 : filters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n filters_1.classList.remove('disabled');\r\n };\r\n if (checkboxFiltersViews.length > 0) {\r\n checkboxFiltersViews.forEach(function (checkbox) {\r\n checkbox.addEventListener('change', function () {\r\n if (views_1.includes(checkbox.value)) {\r\n views_1 = views_1.filter(function (cat) { return cat !== checkbox.value; });\r\n }\r\n else {\r\n views_1.push(checkbox.value);\r\n }\r\n fetchPublications_1();\r\n });\r\n });\r\n }\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchPublications_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchPublications_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchPublications_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchPublications_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchPublications_1();\r\n });\r\n var timeout_1 = null;\r\n listSearchInput_1 === null || listSearchInput_1 === void 0 ? void 0 : listSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = listSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchPublications_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = list.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchPublications_1();\r\n });\r\n });\r\n filterButton === null || filterButton === void 0 ? void 0 : filterButton.addEventListener('click', function () {\r\n var filterColumn = list.querySelector('.science-pubs__accordions');\r\n if (filterColumn === null || filterColumn === void 0 ? void 0 : filterColumn.classList.contains('hidden')) {\r\n filterColumn === null || filterColumn === void 0 ? void 0 : filterColumn.classList.remove('hidden');\r\n }\r\n else {\r\n filterColumn === null || filterColumn === void 0 ? void 0 : filterColumn.classList.add('hidden');\r\n }\r\n });\r\n var initializeList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchAllPublications_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchPublicationsFilters_1()];\r\n case 2:\r\n _a.sent();\r\n return [4, fetchPublications_1()];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeList();\r\n var updateNumberCards_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var filterDivs;\r\n return __generator(this, function (_a) {\r\n filterDivs = document.querySelectorAll('.views-card');\r\n filterDivs.forEach(function (filterDiv) {\r\n var minViews = parseInt(filterDiv.getAttribute('data-min'), 10);\r\n var maxViews = parseInt(filterDiv.getAttribute('data-max'), 10);\r\n var count = scienceCardsAll_1.filter(function (article) { return article.views >= minViews && article.views <= maxViews; }).length;\r\n var countSpan = filterDiv.querySelector('.science-pubs__sub-filters-text-number');\r\n countSpan.textContent = count.toString();\r\n });\r\n return [2];\r\n });\r\n }); };\r\n updateNumberCards_1();\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n var addCardListeners_1 = function () {\r\n var listCards = list.querySelectorAll('.science-card');\r\n if (listCards.length > 0) {\r\n var cardButtons = list.querySelectorAll('.science-card__button');\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"../starRatings/starRatings\":94,\"axios\":109}],78:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],79:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar searchList = document.querySelector('.search-results');\r\nvar getParameterByName = function (name, url) {\r\n if (url === void 0) { url = window.location.href; }\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url);\r\n if (!results)\r\n return null;\r\n if (!results[2])\r\n return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n};\r\nif (searchList) {\r\n var Grid_1 = searchList.querySelector('.search-results__grid');\r\n var searchFilters_1 = searchList.querySelector('.search-results__filters');\r\n var searchListingSearchInput_1 = searchList.querySelector('.search-results__search-input');\r\n var radios = searchList.querySelectorAll('.sort-filter__input');\r\n var checkboxes = searchList.querySelectorAll('.search-results__category-input');\r\n var nextPageButton = searchList.querySelector('.pagination__page-next');\r\n var prevPageButton = searchList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = searchList.querySelector('.pagination__dropdown');\r\n var paginationLast = searchList.querySelector('.pagination__page-last');\r\n var paginationFirst = searchList.querySelector('.pagination__page-first');\r\n var pagination_2 = searchList.querySelector('.pagination');\r\n var totalSearchResults_1 = searchList.querySelector('.search-results__number');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var queryParam = getParameterByName('q');\r\n var searchCards_1 = [];\r\n var keyword_1 = queryParam;\r\n searchListingSearchInput_1.value = queryParam;\r\n var types_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchSearchResults_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n types: types_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/search', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post(\"/api/search\", payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n searchCards_1 = response.data.items;\r\n if (searchCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalCount_1 = response.data.totalCount;\r\n totalPages_1 = response.data.totalPages;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n totalSearchResults_1.innerHTML = totalCount_1.toString();\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, searchCards_1, fetchSearchResults_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n Grid_1.innerHTML = '';\r\n searchCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'search-results__card';\r\n cardElement.innerHTML = \"\\n \" + (card.tag !== null ? \"

    \" + card.tag + \"

    \" : '') + \"\\n

    \" + card.title + \"

    \\n
    \\n image\\n
    \\n

    \\n \" + (card.description !== null ? card.description : '') + \"\\n

    \\n
    \\n \\n
    \\n \\n \\\"share\\n \\n
    \\n
    \\n \";\r\n Grid_1.appendChild(cardElement);\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n searchFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n searchFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchSearchResults_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchSearchResults_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchSearchResults_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchSearchResults_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchSearchResults_1();\r\n });\r\n var timeout_1 = null;\r\n searchListingSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = searchListingSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchSearchResults_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = searchList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchSearchResults_1();\r\n });\r\n });\r\n checkboxes.forEach(function (checkbox) {\r\n checkbox.addEventListener('change', function () {\r\n if (checkbox.checked) {\r\n types_1.push(checkbox.value);\r\n }\r\n else {\r\n var index = types_1.indexOf(checkbox.value);\r\n if (index > -1) {\r\n types_1.splice(index, 1);\r\n }\r\n }\r\n fetchSearchResults_1();\r\n });\r\n });\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n fetchSearchResults_1();\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"axios\":109}],80:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],81:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar infoComponent = document.querySelector('.details-survey');\r\nif (infoComponent) {\r\n var pageId_1 = parseInt(infoComponent.getAttribute('data-pageid'));\r\n var hasRating = parseInt(infoComponent.getAttribute('data-hasrating'));\r\n var positiveButton_1 = infoComponent.querySelector('.positive');\r\n var negativeButton_1 = infoComponent.querySelector('.negative');\r\n var ratingSpan_1 = infoComponent.querySelector('.rating');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var SubmitPositiveAPICall_1 = function () {\r\n CreateRatingCommand_1(pageId_1, true);\r\n positiveButton_1.classList.remove('button--secondary');\r\n positiveButton_1.classList.add('button--primary');\r\n var img = positiveButton_1.querySelector('.button__image');\r\n img.src = '/assets/img/img/emoji-happy.svg';\r\n removeEventListeners_1();\r\n };\r\n var SubmitNegativeAPICall_1 = function () {\r\n CreateRatingCommand_1(pageId_1, false);\r\n negativeButton_1.classList.remove('button--secondary');\r\n negativeButton_1.classList.add('button--primary');\r\n var img = negativeButton_1.querySelector('.button__image');\r\n img.src = '/assets/img/img/emoji-sad.svg';\r\n removeEventListeners_1();\r\n };\r\n var disableButtons_1 = function () {\r\n positiveButton_1.classList.add('button--disabled');\r\n negativeButton_1.classList.add('button--disabled');\r\n };\r\n if (hasRating !== 1) {\r\n positiveButton_1.addEventListener('click', SubmitPositiveAPICall_1);\r\n negativeButton_1.addEventListener('click', SubmitNegativeAPICall_1);\r\n }\r\n else {\r\n disableButtons_1();\r\n }\r\n var CreateRatingCommand_1 = function (pageId, rating) { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, string, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.post(\"/api/info?pageid=\" + pageId + \"&rating=\" + rating)];\r\n case 1:\r\n response = _a.sent();\r\n string = response.data.positiveRatingsCount.toString() +\r\n ' ' +\r\n (currentCulture_1 == 'ar' ? 'من أصل' : 'out of') +\r\n ' ' +\r\n response.data.totalRatingsCount.toString();\r\n ratingSpan_1.innerHTML = string;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var removeEventListeners_1 = function () {\r\n positiveButton_1.removeEventListener('click', SubmitPositiveAPICall_1);\r\n negativeButton_1.removeEventListener('click', SubmitNegativeAPICall_1);\r\n disableButtons_1();\r\n };\r\n}\r\n},{\"axios\":109}],82:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],83:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar favButtons = document.querySelectorAll('.favouriteButton');\r\nvar serviceDetails = document.querySelector('.service-details');\r\nif (serviceDetails) {\r\n var tabs_1 = serviceDetails.querySelectorAll('.service-details__tab');\r\n var tabContents_1 = serviceDetails.querySelectorAll('.service-details__tab-content');\r\n var feesButton_1 = serviceDetails.querySelector('.service-details__tooltip');\r\n var feeWaiverButton_1 = serviceDetails.querySelector('.service-details__waiver-tooltip');\r\n var activeTabIndex_1 = 0;\r\n tabContents_1[activeTabIndex_1].classList.remove('hidden');\r\n tabs_1[activeTabIndex_1].classList.add('service-details__tab--active');\r\n var resetTabs_1 = function () {\r\n tabs_1.forEach(function (tab) { return tab.classList.remove('service-details__tab--active'); });\r\n tabContents_1.forEach(function (item) { return item.classList.add('hidden'); });\r\n };\r\n tabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n resetTabs_1();\r\n tab.classList.add('service-details__tab--active');\r\n activeTabIndex_1 = index;\r\n tabContents_1[activeTabIndex_1].classList.remove('hidden');\r\n });\r\n });\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach(function (button) {\r\n var dataIdAttr = button.getAttribute('data-id');\r\n var type = button.getAttribute('data-type');\r\n var favouritedIds = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n var dataId_1 = parseInt(dataIdAttr);\r\n if (isFavourite_1.IsFavourited(dataId_1, favouritedIds)) {\r\n button.classList.add('active');\r\n }\r\n else {\r\n button.classList.remove('active');\r\n }\r\n button.addEventListener('click', function (e) {\r\n console.log('small button clicked - service details');\r\n favourites_1.default(type, dataId_1, button);\r\n });\r\n }\r\n });\r\n }\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n var openFeesTooltip_1 = function () {\r\n feesButton_1.nextElementSibling.classList.add('service-details__tooltip-inner--active');\r\n };\r\n var closeFeesTooltip_1 = function () {\r\n feesButton_1.nextElementSibling.classList.remove('service-details__tooltip-inner--active');\r\n };\r\n var openWaiverTooltip_1 = function () {\r\n var tooltipInnerDiv = feeWaiverButton_1.nextElementSibling;\r\n tooltipInnerDiv.classList.add('service-details__waiver-tooltip-inner--active');\r\n var buttonRect = feeWaiverButton_1.getBoundingClientRect();\r\n var windowScrollY = window.scrollY === 0 ? -80 : window.scrollY;\r\n var buttonRectHeight = window.innerWidth < 1200 ? 0 : buttonRect.height;\r\n var buttonRectTopOrBottom = window.innerWidth < 1200 ? buttonRect.top : buttonRect.bottom;\r\n var top = buttonRectTopOrBottom + buttonRectHeight + windowScrollY - tooltipInnerDiv.offsetHeight / 2 + 10;\r\n tooltipInnerDiv.style.top = top + \"px\";\r\n };\r\n var closeWaiverTooltip_1 = function () {\r\n feeWaiverButton_1.nextElementSibling.classList.remove('service-details__waiver-tooltip-inner--active');\r\n };\r\n window.addEventListener('click', function (event) {\r\n var clickedElement = event.target;\r\n var feesTargetElement = serviceDetails.querySelector('.service-details__tooltip-inner');\r\n if (clickedElement.classList.contains('service-details__tooltip')) {\r\n if (clickedElement.nextElementSibling.classList.contains('service-details__tooltip-inner--active')) {\r\n closeFeesTooltip_1();\r\n }\r\n else {\r\n openFeesTooltip_1();\r\n }\r\n return;\r\n }\r\n if (feesTargetElement) {\r\n while (clickedElement) {\r\n if (clickedElement === feesTargetElement) {\r\n feesButton_1.nextElementSibling.classList.add('service-details__tooltip-inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n feesButton_1.nextElementSibling.classList.remove('service-details__tooltip-inner--active');\r\n }\r\n return;\r\n });\r\n window.addEventListener('click', function (event) {\r\n var clickedElement = event.target;\r\n var waiverTargetElement = serviceDetails.querySelector('.service-details__waiver-tooltip-inner');\r\n if (clickedElement.classList.contains('service-details__waiver-tooltip')) {\r\n if (clickedElement.nextElementSibling.classList.contains('service-details__waiver-tooltip-inner--active')) {\r\n closeWaiverTooltip_1();\r\n }\r\n else {\r\n openWaiverTooltip_1();\r\n }\r\n return;\r\n }\r\n if (waiverTargetElement) {\r\n while (clickedElement) {\r\n if (clickedElement === waiverTargetElement) {\r\n feeWaiverButton_1.nextElementSibling.classList.add('service-details__waiver-tooltip-inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n feeWaiverButton_1.nextElementSibling.classList.remove('service-details__waiver-tooltip-inner--active');\r\n }\r\n return;\r\n });\r\n window.addEventListener('keydown', function (e) {\r\n if (e.key === 'Escape') {\r\n closeFeesTooltip_1();\r\n closeWaiverTooltip_1();\r\n }\r\n });\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8}],84:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar favourites_1 = __importDefault(require(\"../../../helpers/favourites\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar isFavourite_1 = require(\"../../../helpers/isFavourite\");\r\nvar isUserLoggedIn_1 = __importDefault(require(\"../../../helpers/isUserLoggedIn\"));\r\nvar servicesListing = document.querySelector('.service-list') || null;\r\nif (servicesListing) {\r\n var grid_1 = servicesListing.querySelector('.service-list__grid');\r\n var filterMobile = servicesListing.querySelector('.service-list__filter-mobile');\r\n var nextPageButton = servicesListing.querySelector('.pagination__page-next');\r\n var prevPageButton = servicesListing.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = servicesListing.querySelector('.pagination__dropdown');\r\n var paginationLast = servicesListing.querySelector('.pagination__page-last');\r\n var paginationFirst = servicesListing.querySelector('.pagination__page-first');\r\n var pagination_2 = servicesListing.querySelector('.pagination');\r\n var radios = servicesListing.querySelectorAll('.sort-filter__input');\r\n var servicesListingSearchInput_1 = servicesListing.querySelector('.service-list__search-input');\r\n var servicesFilters_1 = servicesListing.querySelector('.service-list__filters');\r\n var dropdownFilters = servicesListing.querySelectorAll('.dropdown-filter');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var favouritedIds_1 = JSON.parse(grid_1.getAttribute('data-ids'));\r\n var servicesCards_1 = [];\r\n var keyword_1 = '';\r\n var educationalLevels_1 = [];\r\n var serviceTypes_1 = [];\r\n var beneficiaries_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var serviceCardSettings_1 = {\r\n cardButtonText: '',\r\n availableText: '',\r\n endText: '',\r\n };\r\n var fetchServiceCardSettings_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/services/cardsettings?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n serviceCardSettings_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchServices_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n educationalLevels: educationalLevels_1,\r\n serviceTypes: serviceTypes_1,\r\n beneficiaries: beneficiaries_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, 4, 5]);\r\n return [4, axios_1.default.post('/api/services', payload)];\r\n case 2:\r\n response = _a.sent();\r\n servicesCards_1 = response.data.items;\r\n if (servicesCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalCount_1 = response.data.totalCount;\r\n totalPages_1 = response.data.totalPages;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 5];\r\n case 3:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 5];\r\n case 4:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, servicesCards_1, fetchServices_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n servicesFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n servicesFilters_1.classList.remove('disabled');\r\n };\r\n var updateCards_1 = function () {\r\n grid_1.innerHTML = '';\r\n servicesCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.className = 'service-list__card fade-in';\r\n cardElement.setAttribute('href', card.link);\r\n var _class = '';\r\n if (isFavourite_1.IsFavourited(card.id, favouritedIds_1)) {\r\n _class = 'active';\r\n }\r\n cardElement.innerHTML = \"\\n

    \" + (card.isAvailable ? serviceCardSettings_1.availableText : serviceCardSettings_1.endText) + \"

    \\n\\t\\t\\t\\t

    \" + card.title + \"

    \\n\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\tcard alt\\n\\t\\t\\t\\t
    \\n\\t\\t\\t\\t

    \\n\\t\\t\\t\\t\\t\\t\" + card.description + \"\\n\\t\\t\\t\\t

    \\n\\t\\t\\t\\t
    \\n \\n\\t\\t\\t\\t\\t
    \\n \" + (isUserLoggedIn_1.default()\r\n ? \"\"\r\n : '') + \"\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\";\r\n grid_1.appendChild(cardElement);\r\n });\r\n addCardListeners_1();\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchServices_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchServices_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchServices_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchServices_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchServices_1();\r\n });\r\n var timeout_1 = null;\r\n servicesListingSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = servicesListingSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchServices_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = servicesListing.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchServices_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var beneficiariesOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n beneficiariesOptions_1.push(element.textContent);\r\n });\r\n beneficiaries_1 = beneficiariesOptions_1;\r\n break;\r\n case 1:\r\n var serviceTypeOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n serviceTypeOptions_1.push(element.textContent);\r\n });\r\n serviceTypes_1 = serviceTypeOptions_1;\r\n break;\r\n case 2:\r\n var educationalLevelOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n educationalLevelOptions_1.push(element.textContent);\r\n });\r\n educationalLevels_1 = educationalLevelOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchServices_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n filterMobile.addEventListener('click', function () {\r\n var dropdowns = servicesListing.querySelector('.service-list__dropdowns');\r\n dropdowns.classList.toggle('service-list__dropdowns--active');\r\n });\r\n var initializeEventsList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchServiceCardSettings_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchServices_1()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeEventsList();\r\n var addCardListeners_1 = function () {\r\n var serviceListCards = servicesListing.querySelectorAll('.service-list__card');\r\n if (serviceListCards.length > 0) {\r\n var cardButtons = document.querySelectorAll('.service-list__button');\r\n serviceListCards.forEach(function (card) {\r\n card.addEventListener('click', function (e) {\r\n var target = e.target;\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n cardButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n if (button.classList.contains('favouriteButton')) {\r\n var t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n favourites_1.default(t, id, button);\r\n }\r\n else if (button.classList.contains('shareButton')) {\r\n copyToClipboard_1.default(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/favourites\":5,\"../../../helpers/isFavourite\":8,\"../../../helpers/isUserLoggedIn\":9,\"../pagination/pagination\":67,\"axios\":109}],85:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],86:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar serviceResults = document.querySelector('.service-results');\r\nif (serviceResults) {\r\n var eventTabs_1 = serviceResults.querySelectorAll('.service-results__tab');\r\n var sections_1 = serviceResults.querySelectorAll('.service-results__section');\r\n var eventTabsContainer = serviceResults.querySelector('.service-results__tabs');\r\n var tableImagesContainer = serviceResults.querySelectorAll('.service-results__table-images');\r\n var activeTab_1 = 0;\r\n if (eventTabs_1.length > 1) {\r\n var resetTabs_1 = function () {\r\n eventTabs_1.forEach(function (tab) { return tab.classList.remove('service-results__tab--active'); });\r\n sections_1.forEach(function (tab) { return tab.classList.remove('service-results__section--active'); });\r\n };\r\n eventTabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetTabs_1();\r\n eventTabs_1[activeTab_1].classList.add('service-results__tab--active');\r\n sections_1[activeTab_1].classList.add('service-results__section--active');\r\n });\r\n });\r\n }\r\n else {\r\n eventTabsContainer.classList.add('hidden');\r\n }\r\n tableImagesContainer.forEach(function (item) {\r\n if (item.children.length > 1) {\r\n item.nextElementSibling.classList.add('service-results__table-content-title-alt');\r\n }\r\n });\r\n var studentsTableBody_1 = serviceResults.querySelector('.service-results__table-body');\r\n if (studentsTableBody_1) {\r\n var studentsMobileTableBody_1 = serviceResults.querySelector('.service-results__table-mobile-body');\r\n var nextPageButton = serviceResults.querySelector('.pagination__page-next');\r\n var prevPageButton = serviceResults.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = serviceResults.querySelector('.pagination__dropdown');\r\n var paginationLast = serviceResults.querySelector('.pagination__page-last');\r\n var paginationFirst = serviceResults.querySelector('.pagination__page-first');\r\n var pagination_2 = serviceResults.querySelector('.pagination');\r\n var radios = serviceResults.querySelectorAll('.sort-filter__input');\r\n var serviceResultsFilters_1 = serviceResults.querySelector('.service-results__filters');\r\n var serviceResultsSearchInput_1 = serviceResults.querySelector('.service-results__search-input');\r\n var dropdownFilters = serviceResults.querySelectorAll('.dropdown-filter');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var parentNodeId_1 = serviceResults.getAttribute('data-id');\r\n var serviceResultsStudentsItems_1 = [];\r\n var keyword_1 = '';\r\n var educationDepartments_1 = [];\r\n var positions_1 = [];\r\n var years_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var serviceResultsStudentsTableColumnsNames_1 = [];\r\n var fetchServiceResultsStudentsTableColumnsNames_1 = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/services/results/columnsNames/\" + parentNodeId_1 + \"?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n serviceResultsStudentsTableColumnsNames_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchServiceResultsStudentsList_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n parentNodeId: parentNodeId_1,\r\n keyword: keyword_1,\r\n educationDepartments: educationDepartments_1,\r\n positions: positions_1,\r\n years: years_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/services/results', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/services/results', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n serviceResultsStudentsItems_1 = response.data.items;\r\n if (serviceResultsStudentsItems_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, serviceResultsStudentsItems_1, fetchServiceResultsStudentsList_1);\r\n isLoading_1 = false;\r\n updateItems_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n serviceResultsFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n serviceResultsFilters_1.classList.remove('disabled');\r\n };\r\n var updateItems_1 = function () {\r\n studentsTableBody_1.innerHTML = '';\r\n studentsMobileTableBody_1.innerHTML = '';\r\n serviceResultsStudentsItems_1.forEach(function (item) {\r\n var rowElement = document.createElement('tr');\r\n rowElement.className = 'gifted-sublist__table-row';\r\n rowElement.innerHTML = \"\\n \" + (serviceResultsStudentsTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'student/team name'; })\r\n ? \"\\n
    \\n
    \\n \" + item.students[0].name + \"\\n
    \\n \"\r\n : '') + \"\\n \\n \" + (serviceResultsStudentsTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'project title'; })\r\n ? \"\\n \\n \" + item.projectTitle + \"\\n \\n \"\r\n : '') + \"\\n \\n \" + (serviceResultsStudentsTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'education department'; })\r\n ? \"\\n \\n \" + item.educationDepartment + \"\\n \\n \"\r\n : '') + \"\\n \\n \" + (serviceResultsStudentsTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'school'; })\r\n ? \"\\n \\n \" + item.school + \"\\n \\n \"\r\n : '') + \"\\n \" + (serviceResultsStudentsTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'search entity'; })\r\n ? \"\\n \\n \" + (item.searchEntity !== null ? item.searchEntity : '-') + \"\\n \\n \"\r\n : '') + \"\\n \\n \" + (serviceResultsStudentsTableColumnsNames_1.some(function (item) { return item.key.toLowerCase() === 'prize'; })\r\n ? \"\\n \\n \\\"icon\\\"\\n \" + item.position + \"\\n \\n \"\r\n : '');\r\n var images = rowElement.querySelector('.service-results__table-images');\r\n if (images) {\r\n item.students\r\n .filter(function (std) { return std.image !== null && std.image !== undefined && std.image !== ''; })\r\n .forEach(function (student) {\r\n var imageItem = document.createElement('img');\r\n imageItem.alt = 'student image';\r\n imageItem.src = student.image;\r\n imageItem.classList.add('service-results__table-image');\r\n images.appendChild(imageItem);\r\n });\r\n }\r\n addMobileRow_1(item);\r\n studentsTableBody_1.appendChild(rowElement);\r\n });\r\n };\r\n var addMobileRow_1 = function (item) {\r\n var studentName = serviceResultsStudentsTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'student/team name'; });\r\n var projectTitle = serviceResultsStudentsTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'project title'; });\r\n var educationDepartment = serviceResultsStudentsTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'education department'; });\r\n var school = serviceResultsStudentsTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'school'; });\r\n var searchEntity = serviceResultsStudentsTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'search entity'; });\r\n var prize = serviceResultsStudentsTableColumnsNames_1.find(function (item) { return item.key.toLowerCase() === 'prize'; });\r\n studentsMobileTableBody_1.insertAdjacentHTML('beforeend', \"\\n \" + (studentName !== undefined\r\n ? \"\\n \" + studentName.value + \"\\n \\n
    \\n
    \\n \" + item.students[0].name + \"\\n
    \\n \\n \"\r\n : '') + \"\\n \\n \" + (projectTitle !== undefined\r\n ? \"\\n \" + projectTitle.value + \"\\n \\n
    \\n \" + item.projectTitle + \"\\n
    \\n \\n \"\r\n : '') + \"\\n \\n \" + (educationDepartment !== undefined\r\n ? \"\\n \" + educationDepartment.value + \"\\n \\n
    \\n \" + item.educationDepartment + \"\\n
    \\n \\n \"\r\n : '') + \"\\n \\n \" + (prize !== undefined\r\n ? \"\\n \" + prize.value + \"\\n \\n
    \\n \\\"alt\\\"\\n \" + item.position + \"\\n
    \\n \\n \"\r\n : '') + \"\\n \\n \" + (school !== undefined\r\n ? \"\\n \" + school.value + \"\\n \\n
    \\n \" + item.school + \"\\n
    \\n \\n \"\r\n : '') + \"\\n \\n \" + (searchEntity !== undefined\r\n ? \"\\n \" + searchEntity.value + \"\\n \\n
    \\n \" + (item.searchEntity !== null ? item.searchEntity : '-') + \"\\n
    \\n \\n \"\r\n : ''));\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchServiceResultsStudentsList_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchServiceResultsStudentsList_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchServiceResultsStudentsList_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchServiceResultsStudentsList_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchServiceResultsStudentsList_1();\r\n });\r\n var timeout_1 = null;\r\n serviceResultsSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = serviceResultsSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchServiceResultsStudentsList_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = serviceResults.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchServiceResultsStudentsList_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var educationDepartmentsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n educationDepartmentsOptions_1.push(element.textContent);\r\n });\r\n educationDepartments_1 = educationDepartmentsOptions_1;\r\n break;\r\n case 1:\r\n var positionsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n positionsOptions_1.push(element.textContent);\r\n });\r\n positions_1 = positionsOptions_1;\r\n break;\r\n case 2:\r\n var yearsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n yearsOptions_1.push(element.textContent);\r\n });\r\n years_1 = yearsOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchServiceResultsStudentsList_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n var initializeList = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, fetchServiceResultsStudentsTableColumnsNames_1()];\r\n case 1:\r\n _a.sent();\r\n return [4, fetchServiceResultsStudentsList_1()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n }); };\r\n initializeList();\r\n }\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"axios\":109}],87:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],88:[function(require,module,exports){\nvar serviceTimelineThree = document.querySelector(\".service-timeline-three\");\r\nif (serviceTimelineThree) {\r\n var getFormattedTime_1 = function (dateStr) {\r\n if (!dateStr)\r\n return;\r\n var date = new Date(dateStr);\r\n var hour = String(date.getHours()).padStart(2, '0');\r\n var minutes = String(date.getMinutes()).padStart(2, '0');\r\n return hour + \":\" + minutes;\r\n };\r\n var times = serviceTimelineThree.querySelectorAll(\".service-timeline-three__table-content-time\");\r\n times.forEach(function (time) {\r\n time.textContent = getFormattedTime_1(time.textContent);\r\n });\r\n}\r\n},{}],89:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar formatTime_1 = __importDefault(require(\"../../../helpers/formatTime\"));\r\nvar serviceTimelineTwo = document.querySelector(\".service-timeline-two\");\r\nvar html = document.querySelector(\"html\");\r\nvar dir = html.getAttribute(\"dir\");\r\nif (serviceTimelineTwo) {\r\n var dates = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-content-date\");\r\n var times = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-content-time\");\r\n var tableRows = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-row\");\r\n var datesTriggers = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-content-dates-multi\");\r\n var innerTables_1 = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-inner\");\r\n dates.forEach(function (date) {\r\n date.textContent = formatDate_1.default(date.textContent);\r\n });\r\n times.forEach(function (time) {\r\n time.textContent = formatTime_1.default(time.textContent, dir);\r\n });\r\n tableRows.forEach(function (row) {\r\n var height = row.clientHeight;\r\n row.setAttribute(\"data-height\", height.toString());\r\n });\r\n datesTriggers.forEach(function (trigger, index) {\r\n trigger.addEventListener(\"click\", function (e) {\r\n var innerTable = innerTables_1[index];\r\n var icon = trigger.querySelector(\".service-timeline-two__table-content-chevron\");\r\n if (innerTable.classList.contains(\"service-timeline-two__table-inner--active\")) {\r\n innerTable.classList.remove(\"service-timeline-two__table-inner--active\");\r\n icon.classList.remove(\"service-timeline-two__table-content-chevron--rotate\");\r\n var activeRow = trigger.parentElement.parentElement.parentElement;\r\n var activeRowHeight = activeRow.getAttribute(\"data-height\");\r\n activeRow.style.height = activeRowHeight + \"px\";\r\n innerTable.style.top = \"0\";\r\n }\r\n else {\r\n innerTable.classList.add(\"service-timeline-two__table-inner--active\");\r\n icon.classList.add(\"service-timeline-two__table-content-chevron--rotate\");\r\n var activeRow = trigger.parentElement.parentElement.parentElement;\r\n var activeRowHeight = activeRow.clientHeight;\r\n var innerTableHeight = innerTable.clientHeight;\r\n var margin = 16;\r\n activeRow.style.height = innerTableHeight + activeRowHeight + margin + \"px\";\r\n innerTable.style.top = activeRowHeight + \"px\";\r\n }\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/formatDate\":6,\"../../../helpers/formatTime\":7}],90:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar formatTime_1 = __importDefault(require(\"../../../helpers/formatTime\"));\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar serviceTimeline = document.querySelector('.service-timeline');\r\nvar direction = document.querySelector('html').getAttribute('dir');\r\nif (serviceTimeline) {\r\n var serviceTimelineGrid_1 = serviceTimeline.querySelector('.service-timeline__inner');\r\n var parentNodeId_1 = serviceTimeline.getAttribute('data-id');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var timelineItems_1 = [];\r\n var fetchServiceTimeline = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 5, 6, 7]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 2];\r\n return [4, axios_1.default.get(\"https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/services/timeline?nodeId=\" + parentNodeId_1 + \"¤tCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n return [3, 4];\r\n case 2: return [4, axios_1.default.get(\"/api/services/timeline?nodeId=\" + parentNodeId_1 + \"¤tCulture=\" + currentCulture_1)];\r\n case 3:\r\n response = _a.sent();\r\n _a.label = 4;\r\n case 4:\r\n timelineItems_1 = response.data;\r\n return [3, 7];\r\n case 5:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 7];\r\n case 6:\r\n updateItems_1();\r\n initializeDates_1();\r\n return [7];\r\n case 7: return [2];\r\n }\r\n });\r\n }); };\r\n var updateItems_1 = function () {\r\n serviceTimelineGrid_1.innerHTML = '';\r\n timelineItems_1.forEach(function (item) {\r\n var itemElement = document.createElement('div');\r\n itemElement.className = 'service-timeline__item';\r\n itemElement.innerHTML = \"\\n
    \\n
    \\n \\n \\n \\n \\n
    \\n \" + (item.endDate !== null\r\n ? \"\\n \\n \\n \\n
    \"\r\n : '') + \"\\n \\n
    \\n
    \\n \" + item.title + \"\\n \" + (item.tooltips !== null && item.tooltips.length !== 0\r\n ? \"\"\r\n : '') + \"\\n
    \\n
    \\n \" + item.description + \"\\n
    \\n
    \\n \";\r\n if (item.tooltips !== null && item.tooltips.length !== 0) {\r\n var tooltipList_1 = itemElement.querySelector('.service-timeline__item-tooltip-inner');\r\n item.tooltips.forEach(function (tootlip) {\r\n var tooltipElement = document.createElement('li');\r\n tooltipElement.className = 'service-timeline__item-tooltip-row flex flex--align-center';\r\n tooltipElement.innerHTML = \"\\n
    \" + tootlip.educationLevel + \"
    \\n
    \\n \\\"calendar\\n \\n \\n
    \\n
    \\n \\\"clock\\n \\n \\n
    \";\r\n tooltipList_1.appendChild(tooltipElement);\r\n });\r\n }\r\n serviceTimelineGrid_1.appendChild(itemElement);\r\n });\r\n };\r\n var initializeDates_1 = function () {\r\n var serviceTimelineItems = serviceTimeline.querySelectorAll('.service-timeline__item');\r\n if (serviceTimelineItems.length === 1) {\r\n serviceTimelineItems[0].classList.add('service-timeline__item--single');\r\n }\r\n var setDates = function (month, day, year, arr) {\r\n month.textContent = arr[1];\r\n day.textContent = arr[0];\r\n year.textContent = arr[2];\r\n };\r\n serviceTimelineItems.forEach(function (item) {\r\n var _a;\r\n var dateFrom = item.querySelector('.service-timeline__date-from').getAttribute('data-dateFrom');\r\n var dateTo = (_a = item.querySelector('.service-timeline__date-to')) === null || _a === void 0 ? void 0 : _a.getAttribute('data-dateTo');\r\n var monthFromElement = item.querySelector('.service-timeline__date-month-from');\r\n var dayFromElement = item.querySelector('.service-timeline__date-day-from');\r\n var yearFromElement = item.querySelector('.service-timeline__date-year-from');\r\n var dateFromArray = formatDate_1.default(dateFrom).split(' ');\r\n setDates(monthFromElement, dayFromElement, yearFromElement, dateFromArray);\r\n if (dateTo) {\r\n var monthToElement = item.querySelector('.service-timeline__date-month-to');\r\n var dayToElement = item.querySelector('.service-timeline__date-day-to');\r\n var yearToElement = item.querySelector('.service-timeline__date-year-to');\r\n var dateToArray = formatDate_1.default(dateTo).split(' ');\r\n setDates(monthToElement, dayToElement, yearToElement, dateToArray);\r\n }\r\n var tooltipDateElements = item.querySelectorAll('.service-timeline__item-tooltip-date');\r\n var tooltipTimeElements = item.querySelectorAll('.service-timeline__item-tooltip-time');\r\n if (tooltipDateElements.length > 0) {\r\n tooltipDateElements.forEach(function (tool) {\r\n var content = tool.querySelector('.service-timeline__item-tooltip-content');\r\n content.textContent = formatDate_1.default(tool.getAttribute('data-tooltipDate'));\r\n });\r\n }\r\n if (tooltipTimeElements.length > 0) {\r\n tooltipTimeElements.forEach(function (tool, index) {\r\n var timing = tool.querySelector('.service-timeline__item-tooltip-timing');\r\n if (timing) {\r\n timing.textContent = formatTime_1.default(tool.getAttribute('data-tooltipTime'), direction);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n fetchServiceTimeline();\r\n}\r\n},{\"../../../helpers/formatDate\":6,\"../../../helpers/formatTime\":7,\"axios\":109}],91:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],92:[function(require,module,exports){\nvar filters = document.querySelectorAll('.single-dropdown-filter');\r\nvar direction = document.querySelector('html').getAttribute('dir');\r\nfilters.forEach(function (item) {\r\n var selects = item.querySelectorAll('.single-select');\r\n selects.forEach(function (select) {\r\n init(select);\r\n });\r\n document.addEventListener('click', function (e) {\r\n var selects = document.querySelectorAll('.single-select');\r\n var triggers = document.querySelectorAll('.single-dropdown-filter__trigger');\r\n for (var i = 0; i < selects.length; i++) {\r\n if (e) {\r\n var isClickInside = selects[i].parentElement.parentElement.contains(e.target);\r\n if (!isClickInside) {\r\n var wrapper = selects[i].parentElement.parentElement;\r\n var dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n var autocomplete_list = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n dropdown.classList.remove('active');\r\n var multiSelects = document.querySelectorAll('.single-dropdown-filter__multi-select-container');\r\n multiSelects[i].classList.remove('single-dropdown-filter__multi-select-container--active');\r\n triggers[i].classList.remove('single-dropdown-filter__trigger--active');\r\n autocomplete_list.innerHTML = '';\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n }\r\n });\r\n var trigger = item.querySelector('.single-dropdown-filter__trigger');\r\n trigger.addEventListener('click', handleTrigger);\r\n trigger.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n handleTrigger(e);\r\n }\r\n });\r\n function handleTrigger(e) {\r\n var wrapper = item.querySelector('.single-dropdown-filter__multi-select-container');\r\n if (wrapper.classList.contains('single-dropdown-filter__multi-select-container--active')) {\r\n wrapper.classList.remove('single-dropdown-filter__multi-select-container--active');\r\n trigger.classList.remove('single-dropdown-filter__trigger--active');\r\n }\r\n else {\r\n wrapper.classList.add('single-dropdown-filter__multi-select-container--active');\r\n trigger.classList.add('single-dropdown-filter__trigger--active');\r\n }\r\n var dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n var event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n function init(element) {\r\n var filter = item;\r\n var wrapper = document.createElement('div');\r\n wrapper.addEventListener('click', clickOnWrapper);\r\n wrapper.classList.add('single-dropdown-filter__multi-select-container');\r\n var search_div = document.createElement('div');\r\n search_div.classList.add('single-dropdown-filter__search-container');\r\n var input = document.createElement('input');\r\n input.classList.add('selected-input');\r\n input.setAttribute('autocomplete', 'off');\r\n input.setAttribute('tabindex', '0');\r\n input.addEventListener('keyup', inputChange);\r\n input.addEventListener('click', openOptions);\r\n var dropdown_icon = document.createElement('a');\r\n dropdown_icon.classList.add('single-dropdown-filter__dropdown-icon');\r\n dropdown_icon.addEventListener('click', clickDropdown);\r\n var autocomplete_list = document.createElement('ul');\r\n autocomplete_list.classList.add('single-dropdown-filter__autocomplete-list');\r\n search_div.appendChild(input);\r\n search_div.appendChild(autocomplete_list);\r\n search_div.appendChild(dropdown_icon);\r\n element.parentNode.replaceChild(wrapper, element);\r\n wrapper.appendChild(element);\r\n wrapper.appendChild(search_div);\r\n addPlaceholder(wrapper);\r\n }\r\n function removePlaceholder(wrapper) {\r\n var input_search = wrapper.querySelector('.selected-input');\r\n input_search.removeAttribute('placeholder');\r\n }\r\n function addPlaceholder(wrapper) {\r\n var input_search = wrapper.querySelector('.selected-input');\r\n var tokens = wrapper.querySelectorAll('.single-dropdown-filter__selected-wrapper');\r\n if (!tokens.length && !(document.activeElement === input_search))\r\n input_search.setAttribute('placeholder', '---------');\r\n }\r\n function inputChange(e) {\r\n var wrapper = e.target.parentNode.parentNode;\r\n var select = wrapper.querySelector('select');\r\n var dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n var input_val = e.target.value;\r\n if (input_val) {\r\n dropdown.classList.add('active');\r\n populateAutocompleteList(select, input_val.trim());\r\n }\r\n else {\r\n dropdown.classList.remove('active');\r\n var event_1 = new Event('click');\r\n dropdown.dispatchEvent(event_1);\r\n }\r\n }\r\n function clickOnWrapper(e) {\r\n var wrapper = e.target;\r\n if (wrapper.tagName == 'DIV') {\r\n var input_search = wrapper.querySelector('.selected-input');\r\n var dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n if (!dropdown.classList.contains('active')) {\r\n var event_2 = new Event('click');\r\n dropdown.dispatchEvent(event_2);\r\n }\r\n input_search.focus();\r\n removePlaceholder(wrapper);\r\n }\r\n }\r\n function openOptions(e) {\r\n var input_search = e.target;\r\n var wrapper = input_search.parentElement.parentElement;\r\n var dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n if (!dropdown.classList.contains('active')) {\r\n var event_3 = new Event('click');\r\n dropdown.dispatchEvent(event_3);\r\n }\r\n e.stopPropagation();\r\n }\r\n function clickDropdown(e) {\r\n var dropdown = e.target;\r\n var wrapper = dropdown.parentNode.parentNode;\r\n var input_search = wrapper.querySelector('.selected-input');\r\n var select = wrapper.querySelector('select');\r\n dropdown.classList.toggle('active');\r\n if (dropdown.classList.contains('active')) {\r\n removePlaceholder(wrapper);\r\n input_search.focus();\r\n if (!input_search.value) {\r\n populateAutocompleteList(select, '', true);\r\n }\r\n else {\r\n populateAutocompleteList(select, input_search.value);\r\n }\r\n }\r\n else {\r\n clearAutocompleteList(select);\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n function clearAutocompleteList(select) {\r\n var wrapper = select.parentNode;\r\n var autocomplete_list = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n autocomplete_list.innerHTML = '';\r\n }\r\n function populateAutocompleteList(select, query, dropdown) {\r\n if (dropdown === void 0) { dropdown = false; }\r\n var _a = getOptions(select), autocomplete_options = _a.autocomplete_options, all_options = _a.all_options, option_selected = _a.option_selected;\r\n var options_to_show;\r\n if (dropdown)\r\n options_to_show = autocomplete_options;\r\n else\r\n options_to_show = autocomplete(query, autocomplete_options);\r\n var wrapper = select.parentNode;\r\n var autocomplete_list = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n autocomplete_list.innerHTML = '';\r\n var result_size = options_to_show.length;\r\n if (result_size > 0) {\r\n for (var i = 0; i < result_size; i++) {\r\n if (options_to_show[i] === '') {\r\n var emptyli = document.createElement('li');\r\n emptyli.innerText = '';\r\n emptyli.classList.add('hidden');\r\n if (result_size == 1) {\r\n var li = document.createElement('li');\r\n li.classList.add('not-cursor');\r\n if (direction === 'rtl') {\r\n li.innerText = 'لم يتم العثور على خيارات';\r\n }\r\n else {\r\n li.innerText = 'No options found';\r\n }\r\n autocomplete_list.appendChild(li);\r\n }\r\n }\r\n else {\r\n var li = document.createElement('li');\r\n li.innerText = options_to_show[i];\r\n li.setAttribute('data-value', options_to_show[i]);\r\n li.addEventListener('click', selectOption);\r\n autocomplete_list.appendChild(li);\r\n }\r\n }\r\n }\r\n else {\r\n var li = document.createElement('li');\r\n li.classList.add('not-cursor');\r\n if (direction === 'rtl') {\r\n li.innerText = 'لم يتم العثور على خيارات';\r\n }\r\n else {\r\n li.innerText = 'No options found';\r\n }\r\n autocomplete_list.appendChild(li);\r\n }\r\n handleListItems(option_selected);\r\n }\r\n function selectOption(e) {\r\n var filterComponent = item;\r\n var select = filterComponent.querySelector('.single-select');\r\n var option_selected = select.querySelector('option:checked');\r\n option_selected.removeAttribute('selected');\r\n var wrapper = e.target.parentNode.parentNode.parentNode;\r\n var input_search = wrapper.querySelector('.selected-input');\r\n var option = wrapper.querySelector(\"select option[value=\\\"\" + e.target.dataset.value + \"\\\"]\");\r\n option.setAttribute('selected', '');\r\n select.dispatchEvent(new Event('change'));\r\n trigger.innerHTML = e.target.dataset.value;\r\n if (input_search.value) {\r\n input_search.value = '';\r\n }\r\n input_search.focus();\r\n var autocomplete_list = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n if (!autocomplete_list.children.length) {\r\n var li = document.createElement('li');\r\n li.classList.add('not-cursor');\r\n li.innerText = 'No options found';\r\n autocomplete_list.appendChild(li);\r\n }\r\n var event = new Event('keyup');\r\n input_search.dispatchEvent(event);\r\n e.stopPropagation();\r\n }\r\n function autocomplete(query, options) {\r\n if (!query) {\r\n return options;\r\n }\r\n var options_return = [];\r\n for (var i = 0; i < options.length; i++) {\r\n if (options[i].toLowerCase().includes(query.toLowerCase())) {\r\n options_return.push(options[i]);\r\n }\r\n }\r\n return options_return;\r\n }\r\n function getOptions(select) {\r\n var all_options = Array.from(select.querySelectorAll('option')).map(function (el) { return el.value; });\r\n var option_selected = select.querySelector('option:checked');\r\n var autocomplete_options = [];\r\n all_options.forEach(function (option) {\r\n if (option_selected.value !== option) {\r\n autocomplete_options.push(option);\r\n }\r\n });\r\n autocomplete_options.sort();\r\n autocomplete_options = all_options;\r\n return {\r\n autocomplete_options: autocomplete_options,\r\n all_options: all_options,\r\n option_selected: option_selected.value,\r\n };\r\n }\r\n var handleListItems = function (option) {\r\n var list = item.querySelectorAll('.single-dropdown-filter__autocomplete-list li');\r\n list.forEach(function (item) {\r\n if (option === item.textContent) {\r\n item.classList.add('item--active');\r\n }\r\n else {\r\n item.classList.remove('item--active');\r\n }\r\n });\r\n };\r\n});\r\n},{}],93:[function(require,module,exports){\nvar sortFilter = document.querySelector(\".sort-filter\");\r\nif (sortFilter) {\r\n var dateRangeFilterTrigger = sortFilter.querySelector(\".sort-filter__icon-container\");\r\n var dateRangeInner_1 = sortFilter.querySelector(\".sort-filter__inner\");\r\n var dateRangeIcon_1 = sortFilter.querySelector(\".sort-filter__icon-container\");\r\n var radioInputLabels = sortFilter.querySelectorAll(\".sort-filter__input-container\");\r\n var radioInputs_1 = sortFilter.querySelectorAll(\".sort-filter__input\");\r\n var handleTrigger_1 = function () {\r\n dateRangeInner_1.classList.toggle(\"sort-filter__inner--active\");\r\n dateRangeIcon_1.classList.toggle(\"sort-filter__icon-container--active\");\r\n };\r\n var closeSortFilter_1 = function () {\r\n dateRangeInner_1.classList.remove(\"sort-filter__inner--active\");\r\n dateRangeIcon_1.classList.remove(\"sort-filter__icon-container--active\");\r\n };\r\n radioInputLabels.forEach(function (label, index) {\r\n label.addEventListener('click', function (e) {\r\n radioInputs_1.forEach(function (input) { return input.setAttribute(\"data-checked\", \"false\"); });\r\n radioInputs_1[index].setAttribute(\"data-checked\", \"true\");\r\n });\r\n label.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n radioInputs_1.forEach(function (input) { return input.setAttribute(\"data-checked\", \"false\"); });\r\n radioInputs_1[index].setAttribute(\"data-checked\", \"true\");\r\n }\r\n });\r\n });\r\n dateRangeFilterTrigger.addEventListener(\"click\", function () {\r\n handleTrigger_1();\r\n });\r\n dateRangeFilterTrigger.addEventListener('keydown', function (e) {\r\n if (e.key === 'Enter') {\r\n handleTrigger_1();\r\n }\r\n });\r\n document.addEventListener('click', function (event) {\r\n if (event.target instanceof Element) {\r\n if (sortFilter && !sortFilter.contains(event.target)) {\r\n closeSortFilter_1();\r\n }\r\n }\r\n });\r\n document.addEventListener('keydown', function (event) {\r\n if (event.key === 'Escape') {\r\n closeSortFilter_1();\r\n }\r\n });\r\n}\r\n},{}],94:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.initStarRatings = void 0;\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nexports.initStarRatings = function () {\r\n var starRatingComponents = document.querySelectorAll('.reviews');\r\n if (starRatingComponents.length > 0) {\r\n starRatingComponents.forEach(function (item) {\r\n var starRating = item.querySelector('.star-rating');\r\n var pageId = parseInt(starRating.getAttribute('data-pageid'));\r\n var isUserRated = parseInt(starRating.getAttribute('data-user-rated'));\r\n var avgRating = parseInt(starRating.getAttribute('data-avg-rating'));\r\n var ratingValue = item.querySelector('.rating-value');\r\n var totalReviews = item.parentNode.querySelector('.service-details__row-title-bold');\r\n var stars = item.querySelectorAll('.star');\r\n var SubmitAPICall = function (rating) {\r\n CreateRatingCommand(pageId, rating);\r\n disableStars();\r\n };\r\n var handleMouseOver = function (event) {\r\n var value = event.target.getAttribute('data-value');\r\n highlightStars(value);\r\n };\r\n var handleMouseOut = function () {\r\n unhighlightStars();\r\n };\r\n var handleClick = function (event) {\r\n var rating = Number(event.target.getAttribute('data-value'));\r\n SubmitAPICall(rating);\r\n };\r\n var highlightStars = function (value) {\r\n stars.forEach(function (star) {\r\n star.classList.toggle('hovered', star.getAttribute('data-value') <= value);\r\n });\r\n };\r\n var unhighlightStars = function () {\r\n stars.forEach(function (star) {\r\n star.classList.remove('hovered');\r\n });\r\n };\r\n var selectStars = function (value) {\r\n stars.forEach(function (star) {\r\n star.classList.toggle('selected', star.getAttribute('data-value') <= value);\r\n star.classList.remove('hovered');\r\n });\r\n };\r\n var updateScienceStar = function (rating) {\r\n var trigger = item.previousElementSibling;\r\n var unhoveredRatingValue = trigger.querySelector('.star-rating-text');\r\n if (trigger && trigger.classList.contains('star-rating-trigger')) {\r\n if (unhoveredRatingValue) {\r\n unhoveredRatingValue.innerHTML = rating.toString();\r\n }\r\n trigger.parentElement.blur();\r\n trigger.firstElementChild.remove();\r\n trigger.insertAdjacentHTML('afterbegin', \"\\n \\n \\n \\n \");\r\n }\r\n };\r\n var CreateRatingCommand = function (pageId, rating) { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.post(\"/api/rating?pageid=\" + pageId + \"&rating=\" + rating)];\r\n case 1:\r\n response = _a.sent();\r\n selectStars(response.data.rating);\r\n ratingValue.innerHTML = response.data.rating.toString();\r\n if (totalReviews) {\r\n totalReviews.innerHTML = response.data.totalRatings.toString();\r\n }\r\n updateScienceStar(response.data.rating);\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var disableStars = function () {\r\n starRating.classList.add('button--disabled');\r\n };\r\n if (isUserRated === 0) {\r\n stars.forEach(function (star) {\r\n star.addEventListener('mouseover', handleMouseOver);\r\n star.addEventListener('mouseout', handleMouseOut);\r\n star.addEventListener('click', handleClick);\r\n });\r\n }\r\n else {\r\n selectStars(avgRating);\r\n ratingValue.innerHTML = avgRating.toString();\r\n disableStars();\r\n }\r\n });\r\n }\r\n};\r\nexports.initStarRatings();\r\n},{\"axios\":109}],95:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],96:[function(require,module,exports){\ngoogle.charts.load('current', { packages: ['corechart'] });\r\nvar chartDiv = document.getElementById('bar_chart');\r\nif (chartDiv) {\r\n var chartwidth_1 = chartDiv.parentElement.clientWidth;\r\n google.charts.setOnLoadCallback(function () {\r\n var chartDiv = document.getElementById('bar_chart');\r\n drawChart(chartDiv);\r\n });\r\n var changeChartStyles_1 = function () {\r\n var chartColumns = chartDiv.getElementsByTagName('rect');\r\n var chartText = chartDiv.getElementsByTagName('text');\r\n Array.prototype.forEach.call(chartColumns, function (rect) {\r\n if (parseFloat(rect.getAttribute('x')) > 0) {\r\n rect.setAttribute('rx', 5);\r\n rect.setAttribute('ry', 5);\r\n }\r\n });\r\n Array.prototype.forEach.call(chartText, function (text) {\r\n text.setAttribute('font-family', 'Alexandria,sans-serif');\r\n text.setAttribute('font-size', '10px');\r\n });\r\n };\r\n function drawChart(element) {\r\n var chartData = element.getAttribute('data-chartdata');\r\n if (!chartData) {\r\n console.error('No data found in data-chartdata attribute');\r\n return;\r\n }\r\n var dataArray = JSON.parse(chartData);\r\n var data = google.visualization.arrayToDataTable(dataArray);\r\n var options = {\r\n width: chartwidth_1,\r\n height: 300,\r\n theme: 'material',\r\n legend: { position: 'bottom' },\r\n chartArea: {\r\n backgroundColor: '#F4F4F5',\r\n },\r\n vAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'out',\r\n baselineColor: 'grey',\r\n format: 'short',\r\n },\r\n hAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'out',\r\n baselineColor: 'transparent',\r\n },\r\n bar: { groupWidth: '25%' },\r\n backgroundColor: '#F4F4F5',\r\n colors: ['#E2A947', '#2B254B'],\r\n };\r\n var chart = new google.visualization.ColumnChart(element);\r\n var observer = new MutationObserver(changeChartStyles_1);\r\n google.visualization.events.addListener(chart, 'ready', function () {\r\n changeChartStyles_1();\r\n observer.observe(chartDiv, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n });\r\n chart.draw(data, options);\r\n }\r\n}\r\n},{}],97:[function(require,module,exports){\nvar strategicGoals = document.querySelectorAll('.strategic-goals');\r\nstrategicGoals.forEach(function (strategicGoal) {\r\n if (strategicGoal) {\r\n var tabs_1 = strategicGoal.querySelectorAll('.strategic-goals__tab');\r\n var grids_1 = strategicGoal.querySelectorAll('.strategic-goals__grid');\r\n var images_1 = strategicGoal.querySelectorAll('.strategic-goals__image');\r\n var activeTab_1 = 0;\r\n var resetAll_1 = function () {\r\n tabs_1.forEach(function (tab) { return tab.classList.remove('strategic-goals__tab--active'); });\r\n grids_1.forEach(function (grid) { return grid.classList.add('hidden'); });\r\n images_1.forEach(function (image) { return image.classList.add('hidden'); });\r\n };\r\n tabs_1.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () {\r\n activeTab_1 = index;\r\n resetAll_1();\r\n tabs_1[activeTab_1].classList.add('strategic-goals__tab--active');\r\n grids_1[activeTab_1].classList.remove('hidden');\r\n images_1[activeTab_1].classList.remove('hidden');\r\n });\r\n });\r\n }\r\n});\r\n},{}],98:[function(require,module,exports){\n\"use strict\";\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar shareButtons = document.querySelectorAll(\".shareButton\");\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4}],99:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar glide_1 = __importDefault(require(\"@glidejs/glide\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar successStoriesList = document.querySelector('.stories-list');\r\nif (successStoriesList) {\r\n var storiesGrid_1 = successStoriesList.querySelector('.stories-list__grid');\r\n var storiesFilters_1 = successStoriesList.querySelector('.stories-list__search');\r\n var storiesListSearchInput_1 = successStoriesList.querySelector('.stories-list__search-input');\r\n var dropdownFilters = successStoriesList.querySelectorAll('.dropdown-filter');\r\n var nextPageButton = successStoriesList.querySelector('.pagination__page-next');\r\n var prevPageButton = successStoriesList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = successStoriesList.querySelector('.pagination__dropdown');\r\n var paginationLast = successStoriesList.querySelector('.pagination__page-last');\r\n var paginationFirst = successStoriesList.querySelector('.pagination__page-first');\r\n var pagination_2 = successStoriesList.querySelector('.pagination');\r\n var radios = successStoriesList.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var successStoriesCarousel_1 = document.querySelector('.stories-list__carousel-inner');\r\n var direction_1 = document.querySelector('html').getAttribute('dir');\r\n if (successStoriesCarousel_1) {\r\n var generateBullets = function (carousel) {\r\n var cards = carousel.querySelectorAll('.stories-list__carousel-card');\r\n var bulletWrapper = carousel.querySelectorAll('.glide__bullets');\r\n var imageBulletWrapper = carousel.querySelectorAll('.glide__bullets--images');\r\n if (cards.length > 1) {\r\n bulletWrapper.forEach(function (wrapper) {\r\n cards.forEach(function () {\r\n var button = document.createElement('button');\r\n button.className = 'glide__bullet';\r\n wrapper.appendChild(button);\r\n });\r\n });\r\n }\r\n else {\r\n var controls = successStoriesCarousel_1.querySelector('.stories-list__controls');\r\n controls.classList.add('hidden');\r\n }\r\n imageBulletWrapper.forEach(function (wrapper) {\r\n cards.forEach(function (card, index) {\r\n var button = document.createElement('button');\r\n button.className = 'glide__bullet glide__bullet--image';\r\n var backgroundImage = card.style.backgroundImage;\r\n var img = document.createElement('img');\r\n img.src = backgroundImage.replace(/url\\((['\"])?(.*?)\\1\\)/gi, '$2').split(',')[0];\r\n button.appendChild(img);\r\n button.addEventListener('click', function () {\r\n glide_2.go(\"=\" + index);\r\n });\r\n wrapper.appendChild(button);\r\n });\r\n });\r\n };\r\n var glideSettings = {\r\n type: 'slider',\r\n perView: 1,\r\n rewind: true,\r\n bound: true,\r\n direction: direction_1 || 'ltr',\r\n };\r\n var glide_2 = new glide_1.default(successStoriesCarousel_1, glideSettings);\r\n glide_2.mount();\r\n generateBullets(successStoriesCarousel_1);\r\n glide_2.on('move.after', function () {\r\n var carouselCards = successStoriesCarousel_1.querySelectorAll('.stories-list__carousel-card');\r\n carouselCards.forEach(function (card) {\r\n var bullets = card.querySelectorAll('.glide__bullet');\r\n var imageBullets = card.querySelectorAll('.glide__bullet--image');\r\n var currentIndex = glide_2.index;\r\n var imageContainer = card.querySelector('.glide__bullets--images');\r\n if (direction_1 === 'rtl') {\r\n imageContainer.scrollLeft = imageContainer.scrollWidth;\r\n imageContainer.scrollLeft -= 103 * currentIndex;\r\n }\r\n else {\r\n imageContainer.scrollLeft = 0;\r\n imageContainer.scrollLeft += 103 * currentIndex;\r\n }\r\n bullets.forEach(function (bullet, index) {\r\n bullet.classList.toggle('glide__bullet--active', index === currentIndex);\r\n });\r\n imageBullets.forEach(function (bullet, index) {\r\n bullet.classList.toggle('glide__bullet--image--active', index === currentIndex);\r\n });\r\n });\r\n });\r\n }\r\n var storiesCards_1 = [];\r\n var keyword_1 = '';\r\n var fields_1 = [];\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchStories_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n fields: fields_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/successStories', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/successStories', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n storiesCards_1 = response.data.items;\r\n if (storiesCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, storiesCards_1, fetchStories_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n storiesGrid_1.innerHTML = '';\r\n storiesCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'fade-in';\r\n cardElement.innerHTML = \"\\n
    \\n image\\n
    \\n
    \" + card.title + \"
    \\n
    \" + card.content + \"
    \\n
    \\n
    \" + card.viewsCount + \"
    \\n views-icon\\n
    \\n
    \\n
    \\n \";\r\n storiesGrid_1.appendChild(cardElement);\r\n });\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n storiesFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n storiesFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchStories_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchStories_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchStories_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchStories_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchStories_1();\r\n });\r\n var timeout_1 = null;\r\n storiesListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = storiesListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchStories_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = successStoriesList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchStories_1();\r\n });\r\n });\r\n dropdownFilters.forEach(function (dropdown, index) {\r\n var optionsContainer = dropdown.querySelector('.dropdown-filter__button-container');\r\n if (optionsContainer) {\r\n var config = { childList: true };\r\n var callback = function (mutationsList, observer) {\r\n var _loop_1 = function (mutation) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n var fieldsOptions_1 = [];\r\n Array.from(optionsContainer.children).forEach(function (element) {\r\n fieldsOptions_1.push(element.textContent);\r\n });\r\n fields_1 = fieldsOptions_1;\r\n break;\r\n default:\r\n break;\r\n }\r\n pageNumber_1 = 1;\r\n fetchStories_1();\r\n }\r\n };\r\n for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {\r\n var mutation = mutationsList_1[_i];\r\n _loop_1(mutation);\r\n }\r\n };\r\n var observer = new MutationObserver(callback);\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n fetchStories_1();\r\n var shareButtons = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n var showToastModal_1 = function (button) {\r\n var toast = document.createElement('div');\r\n toast.className = 'toast';\r\n toast.textContent = currentCulture_1 === 'ar' ? 'تم نسخ الرابط!' : 'Link copied to clipboard!';\r\n var parentDiv = button.closest('div').parentElement.parentElement;\r\n parentDiv.appendChild(toast);\r\n var toastWidth = 150;\r\n var right = window.scrollX - toastWidth / 2;\r\n toast.style.top = '-5px';\r\n if (currentCulture_1 === 'ar') {\r\n toast.style.left = right + \"px\";\r\n }\r\n else {\r\n toast.style.right = right + \"px\";\r\n }\r\n setTimeout(function () {\r\n toast.classList.add('show');\r\n }, 100);\r\n setTimeout(function () {\r\n toast.classList.remove('show');\r\n setTimeout(function () {\r\n button.closest('div').parentElement.parentElement.removeChild(toast);\r\n }, 500);\r\n }, 3000);\r\n };\r\n document.addEventListener('DOMContentLoaded', function () {\r\n var openButtons = document.querySelectorAll('.stories-list__modal-open');\r\n var closeButtons = document.querySelectorAll('.stories-list__modal-close');\r\n var modal = document.querySelector('.stories-list__modal');\r\n var modalCount = document.querySelector('.stories-list__modal-count');\r\n var modalTitle = document.querySelector('.stories-list__modal-title');\r\n var modalVideo = document.querySelector('.stories-list__modal-video');\r\n openButtons.forEach(function (button) {\r\n button.addEventListener('click', function () {\r\n var _a, _b, _c;\r\n var cardId = button.getAttribute('data-card-id');\r\n var card = document.querySelector(\".stories-list__carousel-card[data-card-id='\" + cardId + \"']\");\r\n if (!card)\r\n return;\r\n var cardTitle = ((_a = card.querySelector('.stories-list__carousel-card-title')) === null || _a === void 0 ? void 0 : _a.textContent) || '';\r\n var embeddedVideo = ((_b = card.querySelector('.stories-list__carousel-card-video')) === null || _b === void 0 ? void 0 : _b.textContent) || '';\r\n var embeddedVideoCount = ((_c = card.querySelector('.stories-list__carousel-card-count')) === null || _c === void 0 ? void 0 : _c.textContent) || '';\r\n modalCount.textContent = embeddedVideoCount;\r\n modalTitle.textContent = cardTitle;\r\n modalVideo.src = embeddedVideo;\r\n modal.showModal();\r\n var shareButtonModal = document.querySelector('.shareButtonModal');\r\n if (shareButtonModal) {\r\n shareButtonModal.addEventListener('click', function (e) {\r\n navigator.clipboard.writeText(window.location.href);\r\n showToastModal_1(shareButtonModal);\r\n });\r\n }\r\n });\r\n });\r\n closeButtons.forEach(function (button) {\r\n button.addEventListener('click', function () {\r\n modal.close();\r\n modalVideo.src = '';\r\n });\r\n });\r\n if (modal) {\r\n modal.addEventListener('click', function (event) {\r\n if (event.target === modal) {\r\n modal.close();\r\n modalVideo.src = '';\r\n }\r\n });\r\n document.addEventListener('keydown', function (event) {\r\n if (event.key === 'Escape') {\r\n modal.close();\r\n modalVideo.src = '';\r\n }\r\n });\r\n }\r\n });\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"@glidejs/glide\":108,\"axios\":109}],100:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],101:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar formatDate_1 = __importDefault(require(\"../../../helpers/formatDate\"));\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar tenderList = document.querySelector('.tender-list');\r\nif (tenderList) {\r\n var tendersItems_1 = tenderList.querySelector('.tender-list__items');\r\n var tendersFilters_1 = tenderList.querySelector('.tender-list__filters');\r\n var tenderListSearchInput_1 = tenderList.querySelector('.tender-list__search-input');\r\n var nextPageButton = tenderList.querySelector('.pagination__page-next');\r\n var prevPageButton = tenderList.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = tenderList.querySelector('.pagination__dropdown');\r\n var paginationLast = tenderList.querySelector('.pagination__page-last');\r\n var paginationFirst = tenderList.querySelector('.pagination__page-first');\r\n var pagination_2 = tenderList.querySelector('.pagination');\r\n var radios = tenderList.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var tenderCards_1 = [];\r\n var keyword_1 = '';\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +paginationDropdown_1.value;\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var tenderCardSettings_1 = {\r\n availableText: '',\r\n expiredText: '',\r\n offeringDateText: '',\r\n submissionDeadlineText: '',\r\n lastDateToReceiveQuestionsText: '',\r\n responseDateText: '',\r\n downloadButtonText: '',\r\n noTendersText: '',\r\n };\r\n var fetchEventCardSettings = function () { return __awaiter(void 0, void 0, void 0, function () {\r\n var response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, axios_1.default.get(\"/api/tenders/cardsettings?currentCulture=\" + currentCulture_1)];\r\n case 1:\r\n response = _a.sent();\r\n tenderCardSettings_1 = response.data;\r\n return [3, 3];\r\n case 2:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n return [3, 3];\r\n case 3: return [2];\r\n }\r\n });\r\n }); };\r\n var fetchTenders_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/tenders', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/tenders', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n tenderCards_1 = response.data.items;\r\n if (tenderCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_2 = _a.sent();\r\n console.error(error_2);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, tenderCards_1, fetchTenders_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n tendersItems_1.innerHTML = '';\r\n if (tenderCards_1.length === 0) {\r\n tendersItems_1.innerHTML = \"
    \" + tenderCardSettings_1.noTendersText + \"
    \";\r\n }\r\n else {\r\n tenderCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('div');\r\n cardElement.className = 'tender-list__item flex flex--column flex--align-startn';\r\n cardElement.innerHTML = \"\\n \" + (card.isAvailable ? tenderCardSettings_1.availableText : tenderCardSettings_1.expiredText) + \"\\n
    \\n
    \\n \\\"pdf\\n
    \\n
    \\n

    \" + card.title + \"

    \\n

    \" + card.description + \"

    \\n
    \\n
    \\n
    \\n
    \\n \\\"calendar\\n \" + tenderCardSettings_1.offeringDateText + \"\\n \" + formatDate_1.default(card.offeringDate) + \"\\n
    \\n
    \\n \\\"calendar\\n \" + tenderCardSettings_1.submissionDeadlineText + \"\\n \" + formatDate_1.default(card.submissionDeadline) + \"\\n
    \\n
    \\n \\\"calendar\\n \" + tenderCardSettings_1.lastDateToReceiveQuestionsText + \"\\n \" + formatDate_1.default(card.lastDateToReceiveQuestions) + \"\\n
    \\n
    \\n \\\"calendar\\n \" + tenderCardSettings_1.responseDateText + \"\\n \" + formatDate_1.default(card.responseDate) + \"\\n
    \\n
    \\n
    \\n \\n \" + tenderCardSettings_1.downloadButtonText + \"\\n \\n \\n
    \\n \\n \\\"download\\n \\n \\n \\\"share\\n \\n
    \\n
    \";\r\n tendersItems_1.appendChild(cardElement);\r\n });\r\n }\r\n var fileButtons = tenderList.querySelectorAll('.tender-list__item-button');\r\n fileButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n var fileUrl = button.parentElement.getAttribute('data-file');\r\n if (fileUrl) {\r\n window.open(fileUrl, '_blank');\r\n }\r\n });\r\n });\r\n var shareButtons = tenderList.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2.classList.add('disabled');\r\n tendersFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2.classList.remove('disabled');\r\n tendersFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchTenders_1();\r\n });\r\n nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchTenders_1();\r\n });\r\n prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchTenders_1();\r\n });\r\n paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchTenders_1();\r\n });\r\n paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchTenders_1();\r\n });\r\n var timeout_1 = null;\r\n tenderListSearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = tenderListSearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchTenders_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = tenderList.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchTenders_1();\r\n });\r\n });\r\n fetchEventCardSettings();\r\n fetchTenders_1();\r\n}\r\nvar shareButtons = document.querySelectorAll('.shareButton');\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../../../helpers/formatDate\":6,\"../pagination/pagination\":67,\"axios\":109}],102:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],103:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n var videoDetails = document.querySelector('.video-gallery-details');\r\n var videoPlayer = document.querySelectorAll('.video-gallery-details__video-container');\r\n if (videoDetails) {\r\n var youtubeVideoCards = videoDetails.querySelectorAll('.video-inline-card--youtube');\r\n youtubeVideoCards.forEach(function (card) {\r\n var playerElement = card.querySelector(\"#player\");\r\n if (playerElement) {\r\n var player = new window['YT'].Player(playerElement, {\r\n events: {\r\n 'onReady': function (event) {\r\n event.target.mute();\r\n card.addEventListener(\"mouseenter\", function () {\r\n event.target.playVideo();\r\n });\r\n card.addEventListener(\"mouseleave\", function () {\r\n event.target.pauseVideo();\r\n event.target.seekTo(0);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n if (videoPlayer) {\r\n videoPlayer.forEach(function (card) {\r\n var video = card.querySelector('.video-gallery-details__video-player');\r\n var playButton = card.querySelector('.video-gallery-details__video-play');\r\n card.addEventListener('click', function () { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!video.paused) return [3, 2];\r\n return [4, video.play()];\r\n case 1:\r\n _a.sent();\r\n playButton.style.opacity = '0';\r\n video.controls = true;\r\n return [3, 3];\r\n case 2:\r\n video.pause();\r\n playButton.style.opacity = '1';\r\n video.controls = false;\r\n _a.label = 3;\r\n case 3: return [2];\r\n }\r\n });\r\n }); });\r\n });\r\n }\r\n var shareButtons = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n});\r\n},{\"../../../helpers/copyToClipboard\":4}],104:[function(require,module,exports){\n\"use strict\";\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar pagination_1 = require(\"../pagination/pagination\");\r\nvar copyToClipboard_1 = __importDefault(require(\"../../../helpers/copyToClipboard\"));\r\nvar axios_1 = __importDefault(require(\"axios\"));\r\nvar videosGallery = document.querySelector('.video-gallery');\r\nif (videosGallery) {\r\n var videosGrid_1 = videosGallery.querySelector('.video-gallery__grid');\r\n var videosFilters_1 = videosGallery.querySelector('.video-gallery__filters');\r\n var videosGallerySearchInput_1 = videosGallery.querySelector('.input--search');\r\n var nextPageButton = videosGallery.querySelector('.pagination__page-next');\r\n var prevPageButton = videosGallery.querySelector('.pagination__page-prev');\r\n var paginationDropdown_1 = videosGallery.querySelector('.pagination__dropdown');\r\n var paginationLast = videosGallery.querySelector('.pagination__page-last');\r\n var paginationFirst = videosGallery.querySelector('.pagination__page-first');\r\n var pagination_2 = videosGallery.querySelector('.pagination');\r\n var radios = videosGallery.querySelectorAll('.sort-filter__input');\r\n var currentCulture_1 = document.documentElement.getAttribute('culture');\r\n var videosCards_1 = [];\r\n var keyword_1 = '';\r\n var sortBy_1 = 1;\r\n var pageNumber_1 = 1;\r\n var pageSize_1 = +(paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.value);\r\n var totalPages_1 = 0;\r\n var totalCount_1 = 0;\r\n var hasNextPage_1 = false;\r\n var hasPreviousPage_1 = false;\r\n var buttonsToShow_1 = 3;\r\n var isLoading_1 = false;\r\n var clickedNumber_1 = null;\r\n var fetchVideosGallery_1 = function (page) {\r\n if (page === void 0) { page = null; }\r\n return __awaiter(void 0, void 0, void 0, function () {\r\n var payload, response, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n clickedNumber_1 = page;\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('hidden');\r\n if (clickedNumber_1) {\r\n pageNumber_1 = page;\r\n }\r\n payload = {\r\n keyword: keyword_1,\r\n sortBy: sortBy_1,\r\n pageNumber: pageNumber_1,\r\n pageSize: pageSize_1,\r\n currentCulture: currentCulture_1,\r\n };\r\n isLoading_1 = true;\r\n disableInputs_1();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, 7, 8]);\r\n response = void 0;\r\n if (!((window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app')) return [3, 3];\r\n return [4, axios_1.default.post('https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/videosgallery', payload)];\r\n case 2:\r\n response = _a.sent();\r\n return [3, 5];\r\n case 3: return [4, axios_1.default.post('/api/videosgallery', payload)];\r\n case 4:\r\n response = _a.sent();\r\n _a.label = 5;\r\n case 5:\r\n videosCards_1 = response.data.items;\r\n if (videosCards_1.length > 0) {\r\n pagination_2.classList.remove('hidden');\r\n }\r\n totalPages_1 = response.data.totalPages;\r\n totalCount_1 = response.data.totalCount;\r\n hasNextPage_1 = response.data.hasNextPage;\r\n hasPreviousPage_1 = response.data.hasPreviousPage;\r\n return [3, 8];\r\n case 6:\r\n error_1 = _a.sent();\r\n console.error(error_1);\r\n enableInputs_1();\r\n return [3, 8];\r\n case 7:\r\n pagination_1.updatePaginationButtons(totalPages_1, hasPreviousPage_1, hasNextPage_1, pageNumber_1, pageSize_1, totalCount_1, buttonsToShow_1, videosCards_1, fetchVideosGallery_1);\r\n isLoading_1 = false;\r\n updateCards_1();\r\n enableInputs_1();\r\n CreatePlayEventListeners_1();\r\n return [7];\r\n case 8: return [2];\r\n }\r\n });\r\n });\r\n };\r\n var updateCards_1 = function () {\r\n videosGrid_1.innerHTML = '';\r\n videosCards_1.forEach(function (card) {\r\n var cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'video-inline-card flex flex--column';\r\n var formattedYoutubeVideoUrl;\r\n var videoContainer;\r\n if (card.youTubeID) {\r\n formattedYoutubeVideoUrl = \"https://www.youtube.com/embed/\" + card.youTubeID + \"?enablejsapi=1;\";\r\n cardElement.classList.add('video-inline-card--youtube');\r\n videoContainer = \"\\n
    \\n \\n \\\"play\\n
    \\n
    \\n \";\r\n }\r\n else {\r\n videoContainer = \"\\n
    \\n \\n \\\"play\\n
    \\n
    \\n \";\r\n }\r\n cardElement.innerHTML = \"\\n
    \" + card.title + \"
    \\n
    \\n \\n \\\"download\\n \\n
    \\n
    \\n views icon\\n \" + card.views + \"\\n
    \\n \\n \\\"heart\\n \\n \\n \\\"share\\n \\n
    \\n
    \";\r\n var border = cardElement.querySelector('.video-inline-card__border');\r\n border.insertAdjacentHTML('beforebegin', videoContainer);\r\n videosGrid_1.appendChild(cardElement);\r\n });\r\n };\r\n var CreatePlayEventListeners_1 = function () {\r\n var videoCards = videosGallery.querySelectorAll('.video-inline-card');\r\n if (videoCards) {\r\n var mobileBreakpoint_1 = '(max-width: 767px)';\r\n videoCards.forEach(function (card) {\r\n var video = card.querySelector('.video-inline-card__video');\r\n var playButton = card.querySelector('.video-inline-card__play');\r\n if (card.classList.contains('video-inline-card--youtube')) {\r\n var playerElement = card.querySelector(\"#player\");\r\n if (playerElement) {\r\n var player = new window['YT'].Player(playerElement, {\r\n events: {\r\n 'onReady': function (event) {\r\n event.target.mute();\r\n card.addEventListener(\"mouseenter\", function () {\r\n event.target.playVideo();\r\n });\r\n card.addEventListener(\"mouseleave\", function () {\r\n event.target.pauseVideo();\r\n event.target.seekTo(0);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n card.addEventListener('click', function () {\r\n if (window.matchMedia(mobileBreakpoint_1).matches) {\r\n if (video.paused) {\r\n video.play();\r\n playButton.style.opacity = '0';\r\n }\r\n else {\r\n video.pause();\r\n playButton.style.opacity = '1';\r\n }\r\n }\r\n });\r\n card.addEventListener('mouseenter', function () {\r\n if (!window.matchMedia(mobileBreakpoint_1).matches) {\r\n video.play();\r\n }\r\n });\r\n card.addEventListener('mouseleave', function () {\r\n if (!window.matchMedia(mobileBreakpoint_1).matches) {\r\n video.pause();\r\n video.currentTime = 0;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n var disableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.add('disabled');\r\n videosFilters_1 === null || videosFilters_1 === void 0 ? void 0 : videosFilters_1.classList.add('disabled');\r\n };\r\n var enableInputs_1 = function () {\r\n pagination_2 === null || pagination_2 === void 0 ? void 0 : pagination_2.classList.remove('disabled');\r\n videosFilters_1.classList.remove('disabled');\r\n };\r\n paginationDropdown_1 === null || paginationDropdown_1 === void 0 ? void 0 : paginationDropdown_1.addEventListener('change', function () {\r\n pageSize_1 = +paginationDropdown_1.value;\r\n pageNumber_1 = 1;\r\n fetchVideosGallery_1();\r\n });\r\n nextPageButton === null || nextPageButton === void 0 ? void 0 : nextPageButton.addEventListener('click', function () {\r\n pageNumber_1++;\r\n fetchVideosGallery_1();\r\n });\r\n prevPageButton === null || prevPageButton === void 0 ? void 0 : prevPageButton.addEventListener('click', function () {\r\n pageNumber_1--;\r\n fetchVideosGallery_1();\r\n });\r\n paginationFirst === null || paginationFirst === void 0 ? void 0 : paginationFirst.addEventListener('click', function () {\r\n pageNumber_1 = 1;\r\n fetchVideosGallery_1();\r\n });\r\n paginationLast === null || paginationLast === void 0 ? void 0 : paginationLast.addEventListener('click', function () {\r\n pageNumber_1 = totalPages_1;\r\n fetchVideosGallery_1();\r\n });\r\n var timeout_1 = null;\r\n videosGallerySearchInput_1 === null || videosGallerySearchInput_1 === void 0 ? void 0 : videosGallerySearchInput_1.addEventListener('input', function (e) {\r\n clearTimeout(timeout_1);\r\n timeout_1 = setTimeout(function () {\r\n keyword_1 = videosGallerySearchInput_1.value.trim();\r\n pageNumber_1 = 1;\r\n fetchVideosGallery_1();\r\n }, 1000);\r\n });\r\n radios.forEach(function (radio) {\r\n radio.addEventListener('change', function () {\r\n var checkedRadio = videosGallery.querySelector('input[name=\"sort-filter\"]:checked');\r\n var checkedRadioValue = checkedRadio.value;\r\n sortBy_1 = +checkedRadioValue;\r\n fetchVideosGallery_1();\r\n });\r\n });\r\n fetchVideosGallery_1();\r\n var shareButtons = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n copyToClipboard_1.default(button);\r\n });\r\n });\r\n }\r\n}\r\n},{\"../../../helpers/copyToClipboard\":4,\"../pagination/pagination\":67,\"axios\":109}],105:[function(require,module,exports){\n\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n},{}],106:[function(require,module,exports){\ndocument.addEventListener('DOMContentLoaded', function () {\r\n var videoCards = document.querySelectorAll('.video-inline-card');\r\n if (videoCards) {\r\n var mobileBreakpoint_1 = '(max-width: 767px)';\r\n videoCards.forEach(function (card) {\r\n if (card.classList.contains('video-inline-card--youtube')) {\r\n return;\r\n }\r\n else {\r\n var video_1 = card.querySelector('.video-inline-card__video');\r\n var playButton_1 = card.querySelector('.video-inline-card__play');\r\n card.addEventListener('click', function () {\r\n if (window.matchMedia(mobileBreakpoint_1).matches) {\r\n if (video_1.paused) {\r\n video_1.play();\r\n playButton_1.style.opacity = '0';\r\n }\r\n else {\r\n video_1.pause();\r\n playButton_1.style.opacity = '1';\r\n }\r\n }\r\n });\r\n card.addEventListener('mouseenter', function () {\r\n if (!window.matchMedia(mobileBreakpoint_1).matches) {\r\n video_1.play();\r\n }\r\n });\r\n card.addEventListener('mouseleave', function () {\r\n if (!window.matchMedia(mobileBreakpoint_1).matches) {\r\n video_1.pause();\r\n video_1.currentTime = 0;\r\n }\r\n });\r\n }\r\n });\r\n var videoButtons = document.querySelectorAll('.video-inline-card__download');\r\n videoButtons.forEach(function (button) {\r\n button.addEventListener('click', function (e) {\r\n var fileUrl = button.parentElement.getAttribute('data-video');\r\n if (fileUrl) {\r\n window.open(fileUrl, '_blank');\r\n }\r\n });\r\n });\r\n }\r\n});\r\n},{}],107:[function(require,module,exports){\ngoogle.charts.load('current', { packages: ['corechart'] });\r\nvar chartDiv = document.getElementById('curve_chart1');\r\ngoogle.charts.setOnLoadCallback(function () {\r\n var chartDiv = document.getElementById('curve_chart1');\r\n if (chartDiv) {\r\n if (getComputedStyle(chartDiv).display !== 'none') {\r\n drawChart(chartDiv);\r\n }\r\n else {\r\n observeVisibility(chartDiv);\r\n }\r\n }\r\n var chartDiv2 = document.getElementById('curve_chart2');\r\n if (chartDiv2) {\r\n if (getComputedStyle(chartDiv2).display !== 'none') {\r\n drawChart(chartDiv2);\r\n }\r\n else {\r\n observeVisibility(chartDiv2);\r\n }\r\n }\r\n var chartDiv3 = document.getElementById('curve_chart3');\r\n if (chartDiv3) {\r\n if (getComputedStyle(chartDiv3).display !== 'none') {\r\n drawChart(chartDiv3);\r\n }\r\n else {\r\n observeVisibility(chartDiv3);\r\n }\r\n }\r\n});\r\nfunction drawChart(element) {\r\n var chartData = element.getAttribute('data-chartdata');\r\n if (!chartData) {\r\n console.error('No data found in data-chartdata attribute');\r\n return;\r\n }\r\n var dataArray = JSON.parse(chartData);\r\n var data = google.visualization.arrayToDataTable(dataArray);\r\n var options = {\r\n hAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'none',\r\n baselineColor: 'transparent',\r\n },\r\n vAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'none',\r\n baselineColor: 'transparent',\r\n },\r\n curveType: 'function',\r\n legend: { position: 'none' },\r\n chartArea: { width: '100%', height: '100%' },\r\n series: {\r\n 0: { color: '#6f6f91' }\r\n },\r\n lineWidth: 3,\r\n tooltip: { trigger: 'none' }\r\n };\r\n var chart1 = new google.visualization.LineChart(element);\r\n google.visualization.events.addListener(chart1, 'ready', function () { return addShadowEffect1(); });\r\n chart1.draw(data, options);\r\n}\r\nfunction addShadowEffect1() {\r\n var svg = document.querySelector('#curve_chart1 svg');\r\n var defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n var filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');\r\n filter.setAttribute('id', 'shadow');\r\n filter.innerHTML = \"\\n \\n \";\r\n defs.appendChild(filter);\r\n svg.appendChild(defs);\r\n var path = svg.querySelector('path');\r\n path.setAttribute('filter', 'url(#shadow)');\r\n}\r\nfunction addShadowEffect2() {\r\n var svg = document.querySelector('#curve_chart2 svg');\r\n var defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n var filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');\r\n filter.setAttribute('id', 'shadow');\r\n filter.innerHTML = \"\\n \\n \";\r\n defs.appendChild(filter);\r\n svg.appendChild(defs);\r\n var path = svg.querySelector('path');\r\n path.setAttribute('filter', 'url(#shadow)');\r\n}\r\nfunction addShadowEffect3() {\r\n var svg = document.querySelector('#curve_chart3 svg');\r\n var defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n var filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');\r\n filter.setAttribute('id', 'shadow');\r\n filter.innerHTML = \"\\n \\n \";\r\n defs.appendChild(filter);\r\n svg.appendChild(defs);\r\n var path = svg.querySelector('path');\r\n path.setAttribute('filter', 'url(#shadow)');\r\n}\r\nfunction observeVisibility(element) {\r\n var observer = new MutationObserver(function (mutations) {\r\n mutations.forEach(function (mutation) {\r\n if (mutation.attributeName === 'style' && getComputedStyle(element).display !== 'none') {\r\n drawChart(element);\r\n }\r\n });\r\n });\r\n observer.observe(element, { attributes: true });\r\n}\r\nvar initializeWebStatsComponent = function (webStatsComponent) {\r\n var webStatsTabs = webStatsComponent.querySelectorAll('.web-stats__tab');\r\n var webStatsContents = webStatsComponent.querySelectorAll('.web-stats__stat');\r\n var activeTab = 0;\r\n var showSelectedItems = function (activeTab) {\r\n webStatsTabs.forEach(function (tab, index) {\r\n tab.classList.remove('web-stats__tab--active');\r\n webStatsContents[index].style.display = 'none';\r\n });\r\n webStatsTabs[activeTab].classList.add('web-stats__tab--active');\r\n webStatsContents[activeTab].style.display = 'block';\r\n };\r\n var handleTabClick = function (index) {\r\n activeTab = index;\r\n showSelectedItems(activeTab);\r\n };\r\n webStatsTabs.forEach(function (tab, index) {\r\n tab.addEventListener('click', function () { return handleTabClick(index); });\r\n });\r\n showSelectedItems(activeTab);\r\n};\r\ndocument.querySelectorAll('.web-stats').forEach(function (webStatsComponent) {\r\n initializeWebStatsComponent(webStatsComponent);\r\n});\r\n},{}],108:[function(require,module,exports){\n/*!\n * Glide.js v3.6.0\n * (c) 2013-2022 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Glide = factory());\n})(this, (function () { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n var defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n };\n\n /**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\n function warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n }\n\n /**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\n function toInt(value) {\n return parseInt(value);\n }\n /**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\n function toFloat(value) {\n return parseFloat(value);\n }\n /**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isString(value) {\n return typeof value === 'string';\n }\n /**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n function isObject(value) {\n var type = _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n }\n /**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n /**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n /**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n function isArray(value) {\n return value.constructor === Array;\n }\n\n /**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\n function mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n }\n\n /**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\n function define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n }\n /**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\n function sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n }\n /**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\n function mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = Object.assign({}, defaults.classes.direction, settings.classes.direction);\n }\n\n if (settings.classes.hasOwnProperty('type')) {\n options.classes.type = Object.assign({}, defaults.classes.type, settings.classes.type);\n }\n\n if (settings.classes.hasOwnProperty('slide')) {\n options.classes.slide = Object.assign({}, defaults.classes.slide, settings.classes.slide);\n }\n\n if (settings.classes.hasOwnProperty('arrow')) {\n options.classes.arrow = Object.assign({}, defaults.classes.arrow, settings.classes.arrow);\n }\n\n if (settings.classes.hasOwnProperty('nav')) {\n options.classes.nav = Object.assign({}, defaults.classes.nav, settings.classes.nav);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n }\n\n var EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n }();\n\n var Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n }();\n\n function Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n }\n\n /**\n * Returns a current time.\n *\n * @return {Number}\n */\n function now() {\n return new Date().getTime();\n }\n\n /**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n }\n\n var MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n };\n function Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n }\n\n /**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n function siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n }\n /**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\n function exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n }\n /**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\n function toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n }\n\n var TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n function Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n }\n\n function Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n }\n\n function Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n }\n\n function Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n }\n\n function Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n }\n\n function Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n }\n\n var EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n }();\n\n function Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n }\n\n var VALID_DIRECTIONS = ['ltr', 'rtl'];\n var FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n };\n function Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n }\n\n /**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n }\n\n /**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n }\n\n /**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n }\n\n /**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n function Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n }\n\n /**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n function mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n }\n\n function Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n }\n\n function Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n }\n\n /**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n var supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {}\n\n var supportsPassive$1 = supportsPassive;\n\n var START_EVENTS = ['touchstart', 'mousedown'];\n var MOVE_EVENTS = ['touchmove', 'mousemove'];\n var END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\n var MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n function Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n }\n\n function Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n }\n\n function Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n }\n\n var NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\n var CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n var PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\n var NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\n function Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n }\n\n function Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n }\n\n function Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n }\n\n /**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\n function sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n }\n\n function Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n }\n\n var COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n };\n\n var Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n }(Glide$1);\n\n return Glide;\n\n}));\n\n},{}],109:[function(require,module,exports){\nmodule.exports = require('./lib/axios');\n},{\"./lib/axios\":111}],110:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n\n},{\"../core/buildFullPath\":117,\"../core/createError\":118,\"./../core/settle\":122,\"./../helpers/buildURL\":126,\"./../helpers/cookies\":128,\"./../helpers/isURLSameOrigin\":131,\"./../helpers/parseHeaders\":133,\"./../utils\":136}],111:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n},{\"./cancel/Cancel\":112,\"./cancel/CancelToken\":113,\"./cancel/isCancel\":114,\"./core/Axios\":115,\"./core/mergeConfig\":121,\"./defaults\":124,\"./helpers/bind\":125,\"./helpers/isAxiosError\":130,\"./helpers/spread\":134,\"./utils\":136}],112:[function(require,module,exports){\n'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n},{}],113:[function(require,module,exports){\n'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n\n},{\"./Cancel\":112}],114:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n},{}],115:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n\n},{\"../helpers/buildURL\":126,\"../helpers/validator\":135,\"./../utils\":136,\"./InterceptorManager\":116,\"./dispatchRequest\":119,\"./mergeConfig\":121}],116:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n},{\"./../utils\":136}],117:[function(require,module,exports){\n'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n\n},{\"../helpers/combineURLs\":127,\"../helpers/isAbsoluteURL\":129}],118:[function(require,module,exports){\n'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n\n},{\"./enhanceError\":120}],119:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n\n},{\"../cancel/isCancel\":114,\"../defaults\":124,\"./../utils\":136,\"./transformData\":123}],120:[function(require,module,exports){\n'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n\n},{}],121:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n\n},{\"../utils\":136}],122:[function(require,module,exports){\n'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n\n},{\"./createError\":118}],123:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n\n},{\"./../defaults\":124,\"./../utils\":136}],124:[function(require,module,exports){\n(function (process){(function (){\n'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n}).call(this)}).call(this,require('_process'))\n\n},{\"./adapters/http\":110,\"./adapters/xhr\":110,\"./core/enhanceError\":120,\"./helpers/normalizeHeaderName\":132,\"./utils\":136,\"_process\":138}],125:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n},{}],126:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n},{\"./../utils\":136}],127:[function(require,module,exports){\n'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n},{}],128:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n},{\"./../utils\":136}],129:[function(require,module,exports){\n'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n},{}],130:[function(require,module,exports){\n'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n\n},{}],131:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n},{\"./../utils\":136}],132:[function(require,module,exports){\n'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n},{\"../utils\":136}],133:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n\n},{\"./../utils\":136}],134:[function(require,module,exports){\n'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n},{}],135:[function(require,module,exports){\n'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n\n},{\"./../../package.json\":137}],136:[function(require,module,exports){\n'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n\n},{\"./helpers/bind\":125}],137:[function(require,module,exports){\nmodule.exports={\n \"name\": \"axios\",\n \"version\": \"0.21.4\",\n \"description\": \"Promise based HTTP client for the browser and node.js\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"grunt test\",\n \"start\": \"node ./sandbox/server.js\",\n \"build\": \"NODE_ENV=production grunt build\",\n \"preversion\": \"npm test\",\n \"version\": \"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\",\n \"postversion\": \"git push && git push --tags\",\n \"examples\": \"node ./examples/server.js\",\n \"coveralls\": \"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\n \"fix\": \"eslint --fix lib/**/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/axios/axios.git\"\n },\n \"keywords\": [\n \"xhr\",\n \"http\",\n \"ajax\",\n \"promise\",\n \"node\"\n ],\n \"author\": \"Matt Zabriskie\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/axios/axios/issues\"\n },\n \"homepage\": \"https://axios-http.com\",\n \"devDependencies\": {\n \"coveralls\": \"^3.0.0\",\n \"es6-promise\": \"^4.2.4\",\n \"grunt\": \"^1.3.0\",\n \"grunt-banner\": \"^0.6.0\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-contrib-clean\": \"^1.1.0\",\n \"grunt-contrib-watch\": \"^1.0.0\",\n \"grunt-eslint\": \"^23.0.0\",\n \"grunt-karma\": \"^4.0.0\",\n \"grunt-mocha-test\": \"^0.13.3\",\n \"grunt-ts\": \"^6.0.0-beta.19\",\n \"grunt-webpack\": \"^4.0.2\",\n \"istanbul-instrumenter-loader\": \"^1.0.0\",\n \"jasmine-core\": \"^2.4.1\",\n \"karma\": \"^6.3.2\",\n \"karma-chrome-launcher\": \"^3.1.0\",\n \"karma-firefox-launcher\": \"^2.1.0\",\n \"karma-jasmine\": \"^1.1.1\",\n \"karma-jasmine-ajax\": \"^0.1.13\",\n \"karma-safari-launcher\": \"^1.0.0\",\n \"karma-sauce-launcher\": \"^4.3.6\",\n \"karma-sinon\": \"^1.0.5\",\n \"karma-sourcemap-loader\": \"^0.3.8\",\n \"karma-webpack\": \"^4.0.2\",\n \"load-grunt-tasks\": \"^3.5.2\",\n \"minimist\": \"^1.2.0\",\n \"mocha\": \"^8.2.1\",\n \"sinon\": \"^4.5.0\",\n \"terser-webpack-plugin\": \"^4.2.3\",\n \"typescript\": \"^4.0.5\",\n \"url-search-params\": \"^0.10.0\",\n \"webpack\": \"^4.44.2\",\n \"webpack-dev-server\": \"^3.11.0\"\n },\n \"browser\": {\n \"./lib/adapters/http.js\": \"./lib/adapters/xhr.js\"\n },\n \"jsdelivr\": \"dist/axios.min.js\",\n \"unpkg\": \"dist/axios.min.js\",\n \"typings\": \"./index.d.ts\",\n \"dependencies\": {\n \"follow-redirects\": \"^1.14.0\"\n },\n \"bundlesize\": [\n {\n \"path\": \"./dist/axios.min.js\",\n \"threshold\": \"5kB\"\n }\n ]\n}\n\n},{}],138:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}]},{},[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,34,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,63,61,62,64,65,66,67,68,69,70,71,73,74,72,75,76,77,78,79,80,83,81,82,84,85,86,87,90,91,88,89,92,93,94,95,96,97,98,99,100,101,102,104,105,103,106,107])(107)\n});\n\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst curriculums: HTMLDivElement = document.querySelector('.curriculums');\r\n\r\nif (curriculums) {\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}","const dateRange: HTMLDivElement = document.querySelector('.date-range');\r\n\r\nif (dateRange) {\r\n const dateRangeFilterTrigger: HTMLDivElement = dateRange.querySelector('.date-range__icon-container');\r\n const dateRangeInner: HTMLDivElement = dateRange.querySelector('.date-range__inner');\r\n const dateRangeIcon: HTMLDivElement = dateRange.querySelector('.date-range__icon-container');\r\n const dateRangeInputs: NodeListOf = dateRange.querySelectorAll('.date-range__input');\r\n\r\n const handleDateClick = (input: HTMLInputElement) => {\r\n try {\r\n (input as HTMLInputElement & { showPicker: () => void }).showPicker();\r\n } catch (error) {\r\n console.error((error as Error).message);\r\n }\r\n };\r\n\r\n if (dateRangeInner && dateRangeIcon) {\r\n const handleTrigger = () => {\r\n dateRangeInner.classList.toggle('date-range__inner--active');\r\n dateRangeIcon.classList.toggle('date-range__icon-container--active');\r\n };\r\n\r\n const closeDateRange = () => {\r\n dateRangeInner.classList.remove('date-range__inner--active');\r\n dateRangeIcon.classList.remove('date-range__icon-container--active');\r\n };\r\n\r\n dateRangeInputs.forEach((input) => {\r\n input.addEventListener('click', () => {\r\n handleDateClick(input);\r\n });\r\n\r\n input.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n handleDateClick(input);\r\n }\r\n });\r\n\r\n input.addEventListener('input', () => {\r\n input.classList.add('date-range__input--active');\r\n input.nextElementSibling.classList.add('date-range__input-overlay--hidden');\r\n });\r\n });\r\n\r\n dateRangeFilterTrigger.addEventListener('click', () => {\r\n handleTrigger();\r\n });\r\n\r\n dateRangeFilterTrigger.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n handleTrigger();\r\n }\r\n });\r\n\r\n document.addEventListener('click', (event: MouseEvent) => {\r\n if (event.target instanceof Element) {\r\n if (dateRange && !dateRange.contains(event.target)) {\r\n closeDateRange();\r\n }\r\n }\r\n });\r\n\r\n document.addEventListener('keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n closeDateRange();\r\n }\r\n });\r\n }\r\n}\r\n","const digitalLibrary = document.querySelector('.digital-library-list__wrapper') as HTMLDivElement; \r\n\r\nif (digitalLibrary) {\r\n const digitalCards: NodeListOf = digitalLibrary.querySelectorAll('.digital-library-list__item');\r\n\r\n if (digitalCards.length > 0) { \r\n let top: number = 180;\r\n const headerHeight: number = 65;\r\n if (window.innerWidth < 1200) {\r\n top = 20;\r\n }\r\n\r\n digitalCards.forEach((card, i) => {\r\n const incValue: number = i * headerHeight;\r\n\r\n if (i === 0) {\r\n card.style.top = `${top}px`;\r\n } else {\r\n card.style.top = `${top + incValue}px`;\r\n }\r\n });\r\n }\r\n}","const filters: NodeListOf = document.querySelectorAll(\".dropdown-filter\");\r\nconst direction: string = document.querySelector(\"html\").getAttribute(\"dir\");\r\n\r\nfilters.forEach(item => {\r\n // get select that has the options available\r\n const selects: NodeListOf = item.querySelectorAll(\".multi-select\");\r\n selects.forEach(select => {\r\n init(select);\r\n });\r\n\r\n document.addEventListener('click', (e) => {\r\n // get select that has the options available\r\n const selects: NodeListOf = document.querySelectorAll(\".multi-select\");\r\n const buttonContainer = document.querySelectorAll(\".dropdown-filter__button-container\");\r\n const triggers = document.querySelectorAll(\".dropdown-filter__trigger\");\r\n\r\n for (let i = 0; i < selects.length; i++) {\r\n if (e) {\r\n var isClickInside = selects[i].parentElement.parentElement.contains(e.target as Node);\r\n\r\n if (!isClickInside) {\r\n const wrapper: HTMLDivElement = selects[i].parentElement.parentElement as HTMLDivElement;\r\n const dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n const autocomplete_list = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n //the click was outside the specifiedElement, do something\r\n dropdown.classList.remove(\"active\");\r\n const multiSelects = document.querySelectorAll(\".dropdown-filter__multi-select-container\")\r\n multiSelects[i].classList.remove(\"dropdown-filter__multi-select-container--active\")\r\n buttonContainer[i].classList.remove(\"dropdown-filter__button-container--active\")\r\n triggers[i].classList.remove(\"dropdown-filter__trigger--active\")\r\n autocomplete_list.innerHTML = \"\";\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Show dropdown on trigger click\r\n const trigger = item.querySelector(\".dropdown-filter__trigger\")\r\n if(trigger) {\r\n trigger.addEventListener(\"click\", handleTrigger);\r\n trigger.addEventListener(\"keydown\", (e: KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n handleTrigger(e);\r\n }\r\n });\r\n }\r\n \r\n\r\n // FUNCTIONS\r\n function handleTrigger(e) {\r\n const wrapper = item.querySelector(\".dropdown-filter__multi-select-container\");\r\n const buttonContainer = item.querySelector(\".dropdown-filter__button-container\") as HTMLDivElement;\r\n\r\n if (wrapper.classList.contains(\"dropdown-filter__multi-select-container--active\")) {\r\n wrapper.classList.remove(\"dropdown-filter__multi-select-container--active\");\r\n buttonContainer.classList.remove(\"dropdown-filter__button-container--active\");\r\n trigger.classList.remove(\"dropdown-filter__trigger--active\");\r\n } else {\r\n wrapper.classList.add(\"dropdown-filter__multi-select-container--active\");\r\n buttonContainer.classList.add(\"dropdown-filter__button-container--active\");\r\n trigger.classList.add(\"dropdown-filter__trigger--active\");\r\n }\r\n\r\n const dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n\r\n function init(element: HTMLSelectElement) {\r\n const filter = item;\r\n // Create div that wraps all the elements inside (select, elements selected, search div) to put select inside\r\n const wrapper = document.createElement(\"div\");\r\n wrapper.addEventListener(\"click\", clickOnWrapper);\r\n wrapper.classList.add(\"dropdown-filter__multi-select-container\");\r\n\r\n // Create elements of search\r\n const search_div = document.createElement(\"div\");\r\n search_div.classList.add(\"dropdown-filter__search-container\");\r\n\r\n const buttonContainer = document.createElement(\"div\");\r\n buttonContainer.classList.add(\"dropdown-filter__button-container\")\r\n\r\n const input = document.createElement(\"input\");\r\n input.classList.add(\"selected-input\");\r\n input.setAttribute(\"autocomplete\", \"off\");\r\n input.setAttribute(\"tabindex\", \"0\");\r\n input.addEventListener(\"keyup\", inputChange);\r\n input.addEventListener(\"keydown\", deletePressed);\r\n input.addEventListener(\"click\", openOptions);\r\n\r\n const dropdown_icon = document.createElement(\"a\");\r\n dropdown_icon.classList.add(\"dropdown-filter__dropdown-icon\");\r\n\r\n dropdown_icon.addEventListener(\"click\", clickDropdown);\r\n const autocomplete_list = document.createElement(\"ul\");\r\n autocomplete_list.classList.add(\"dropdown-filter__autocomplete-list\")\r\n\r\n search_div.appendChild(input);\r\n search_div.appendChild(autocomplete_list);\r\n search_div.appendChild(dropdown_icon);\r\n\r\n filter.appendChild(buttonContainer)\r\n\r\n // set the wrapper as child (instead of the element)\r\n element.parentNode.replaceChild(wrapper, element);\r\n // set element as child of wrapper\r\n wrapper.appendChild(element);\r\n wrapper.appendChild(search_div);\r\n\r\n createInitialTokens(element);\r\n addPlaceholder(wrapper);\r\n }\r\n\r\n function removePlaceholder(wrapper: HTMLDivElement) {\r\n const input_search = wrapper.querySelector(\".selected-input\");\r\n input_search.removeAttribute(\"placeholder\");\r\n }\r\n\r\n function addPlaceholder(wrapper: HTMLDivElement) {\r\n const input_search = wrapper.querySelector(\".selected-input\");\r\n const tokens = wrapper.querySelectorAll(\".dropdown-filter__selected-wrapper\");\r\n if (!tokens.length && !(document.activeElement === input_search))\r\n input_search.setAttribute(\"placeholder\", \"---------\");\r\n }\r\n\r\n // Function that create the initial set of tokens with the options selected by the users\r\n function createInitialTokens(select: HTMLSelectElement) {\r\n let { options_selected } = getOptions(select);\r\n const wrapper: HTMLDivElement = select.parentNode as HTMLDivElement;\r\n for (let i = 0; i < options_selected.length; i++) {\r\n createToken(wrapper, options_selected[i]);\r\n }\r\n }\r\n\r\n // Listener of user search\r\n function inputChange(e) {\r\n const wrapper = e.target.parentNode.parentNode;\r\n const select = wrapper.querySelector(\"select\");\r\n const dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n\r\n const input_val = e.target.value;\r\n\r\n if (input_val) {\r\n dropdown.classList.add(\"active\");\r\n populateAutocompleteList(select, input_val.trim());\r\n } else {\r\n dropdown.classList.remove(\"active\");\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n }\r\n\r\n // Listen for clicks on the wrapper, if click happens focus on the input\r\n function clickOnWrapper(e) {\r\n const wrapper = e.target;\r\n if (wrapper.tagName == \"DIV\") {\r\n const input_search = wrapper.querySelector(\".selected-input\");\r\n const dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n if (!dropdown.classList.contains(\"active\")) {\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n input_search.focus();\r\n removePlaceholder(wrapper);\r\n }\r\n }\r\n\r\n function openOptions(e) {\r\n const input_search = e.target;\r\n const wrapper = input_search.parentElement.parentElement;\r\n const dropdown = wrapper.querySelector(\".dropdown-filter__dropdown-icon\");\r\n if (!dropdown.classList.contains(\"active\")) {\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n e.stopPropagation();\r\n }\r\n\r\n // Function that create a token inside of a wrapper with the given value\r\n function createToken(wrapper: HTMLDivElement, value: string) {\r\n const buttonContainer: HTMLDivElement = item.querySelector(\".dropdown-filter__button-container\");\r\n\r\n // Create token container\r\n const tokenContainer = document.createElement(\"div\");\r\n tokenContainer.classList.add(\"wrapper\");\r\n\r\n // Create token wrapper\r\n const token = document.createElement(\"div\");\r\n token.classList.add(\"dropdown-filter__selected-wrapper\");\r\n const token_span = document.createElement(\"span\");\r\n token_span.classList.add(\"selected-label\");\r\n token_span.innerText = value;\r\n const close = document.createElement(\"a\");\r\n close.classList.add(\"selected-close\");\r\n close.setAttribute(\"tabindex\", \"-1\");\r\n close.setAttribute(\"data-option\", value);\r\n close.setAttribute(\"data-hits\", \"0\");\r\n close.addEventListener(\"click\", removeToken)\r\n token.appendChild(token_span);\r\n token.appendChild(close);\r\n\r\n buttonContainer.appendChild(token)\r\n }\r\n\r\n // Listen for clicks in the dropdown option\r\n function clickDropdown(e) {\r\n const dropdown = e.target;\r\n const wrapper = dropdown.parentNode.parentNode;\r\n const input_search = wrapper.querySelector(\".selected-input\");\r\n const select = wrapper.querySelector(\"select\");\r\n dropdown.classList.toggle(\"active\");\r\n\r\n if (dropdown.classList.contains(\"active\")) {\r\n removePlaceholder(wrapper);\r\n input_search.focus();\r\n\r\n if (!input_search.value) {\r\n populateAutocompleteList(select, \"\", true);\r\n } else {\r\n populateAutocompleteList(select, input_search.value);\r\n }\r\n } else {\r\n clearAutocompleteList(select);\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n\r\n // Clears the results of the autocomplete list\r\n function clearAutocompleteList(select) {\r\n const wrapper = select.parentNode;\r\n const autocomplete_list: HTMLUListElement = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n autocomplete_list.innerHTML = \"\";\r\n }\r\n\r\n // Populate the autocomplete list following a given query from the user\r\n function populateAutocompleteList(select, query, dropdown = false) {\r\n const { autocomplete_options, all_options, options_selected } = getOptions(select);\r\n\r\n let options_to_show: Array;\r\n\r\n if (dropdown)\r\n options_to_show = autocomplete_options;\r\n else\r\n options_to_show = autocomplete(query, autocomplete_options);\r\n\r\n const wrapper = select.parentNode;\r\n const autocomplete_list = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n autocomplete_list.innerHTML = \"\";\r\n const result_size = options_to_show.length;\r\n\r\n if (result_size == 1) {\r\n const li = document.createElement(\"li\");\r\n li.innerText = options_to_show[0];\r\n li.setAttribute('data-value', options_to_show[0]);\r\n li.addEventListener(\"click\", selectOption);\r\n autocomplete_list.appendChild(li);\r\n if (query.length == options_to_show[0].length) {\r\n const event = new Event('click');\r\n li.dispatchEvent(event);\r\n }\r\n } else if (result_size > 1) {\r\n for (let i = 0; i < result_size; i++) {\r\n const li = document.createElement(\"li\");\r\n li.innerText = options_to_show[i];\r\n li.setAttribute('data-value', options_to_show[i]);\r\n li.addEventListener(\"click\", selectOption);\r\n autocomplete_list.appendChild(li);\r\n }\r\n } else {\r\n const li = document.createElement(\"li\");\r\n li.classList.add(\"not-cursor\");\r\n if (direction === \"rtl\") {\r\n li.innerText = \"لم يتم العثور على خيارات\";\r\n } else {\r\n li.innerText = \"No options found\";\r\n }\r\n autocomplete_list.appendChild(li);\r\n }\r\n\r\n handleListItems(options_selected)\r\n }\r\n\r\n // Listener to autocomplete results when clicked set the selected property in the select option\r\n function selectOption(e) {\r\n const filterComponent = item\r\n\r\n // get selected options\r\n const select: HTMLSelectElement = filterComponent.querySelector(\".multi-select\");\r\n const options_selected = Array.from(\r\n select.querySelectorAll(\"option:checked\")\r\n ).map((el: HTMLSelectElement) => el.value);\r\n\r\n if (options_selected.includes(e.target.dataset.value)) {\r\n removeTokenList(e.target.dataset.value)\r\n return\r\n }\r\n\r\n const wrapper = e.target.parentNode.parentNode.parentNode;\r\n const input_search: HTMLInputElement = wrapper.querySelector(\".selected-input\");\r\n const option: HTMLOptionElement = wrapper.querySelector(`select option[value=\"${e.target.dataset.value}\"]`);\r\n\r\n option.setAttribute(\"selected\", \"\");\r\n\r\n createToken(wrapper, e.target.dataset.value);\r\n\r\n if (input_search.value) {\r\n input_search.value = \"\";\r\n }\r\n\r\n input_search.focus();\r\n\r\n const autocomplete_list: HTMLUListElement = wrapper.querySelector(\".dropdown-filter__autocomplete-list\");\r\n\r\n if (!autocomplete_list.children.length) {\r\n const li = document.createElement(\"li\");\r\n li.classList.add(\"not-cursor\");\r\n li.innerText = \"No options found\";\r\n autocomplete_list.appendChild(li);\r\n }\r\n\r\n const event = new Event('keyup');\r\n input_search.dispatchEvent(event);\r\n e.stopPropagation();\r\n }\r\n\r\n // function that returns a list with the autcomplete list of matches\r\n function autocomplete(query, options) {\r\n // No query passed, just return entire list\r\n if (!query) {\r\n return options;\r\n }\r\n\r\n let options_return = [];\r\n\r\n for (let i = 0; i < options.length; i++) {\r\n if (options[i].toLowerCase().includes(query.toLowerCase())) {\r\n options_return.push(options[i]);\r\n }\r\n }\r\n\r\n return options_return;\r\n }\r\n\r\n // Returns the options that are selected by the user and the ones that are not\r\n function getOptions(select) {\r\n // Select all the options available\r\n const all_options = Array.from(\r\n select.querySelectorAll(\"option\")\r\n ).map((el: HTMLSelectElement) => el.value);\r\n\r\n // Get the options that are selected from the user\r\n const options_selected = Array.from(\r\n select.querySelectorAll(\"option:checked\")\r\n ).map((el: HTMLSelectElement) => el.value);\r\n\r\n // Create an autocomplete options array with the options that are not selected by the user\r\n let autocomplete_options = [];\r\n all_options.forEach(option => {\r\n if (!options_selected.includes(option)) {\r\n autocomplete_options.push(option);\r\n }\r\n });\r\n\r\n autocomplete_options.sort();\r\n\r\n autocomplete_options = all_options\r\n\r\n return {\r\n options_selected,\r\n autocomplete_options,\r\n all_options\r\n };\r\n }\r\n\r\n // Listener for when the user wants to remove a given token.\r\n function removeToken(e) {\r\n // Get the value to remove\r\n const value_to_remove = e.target.dataset.option;\r\n const wrapper = item.querySelector(\".multi-select\");\r\n const input_search = item.querySelector(\".selected-input\") as HTMLInputElement;\r\n const dropdown = item.querySelector(\".dropdown-filter__dropdown-icon\");\r\n // Get the options in the select to be unselected\r\n const option_to_unselect = wrapper.querySelector(`select option[value=\"${value_to_remove}\"]`);\r\n option_to_unselect.removeAttribute(\"selected\");\r\n // Remove token attribute\r\n e.target.parentNode.remove();\r\n input_search.focus();\r\n dropdown.classList.remove(\"active\");\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n e.stopPropagation();\r\n }\r\n\r\n // Listener for when the user wants to remove a given token.\r\n function removeTokenList(value) {\r\n // Get the value to remove\r\n const value_to_remove = value;\r\n const wrapper = item.querySelector(\".multi-select\");\r\n const input_search = item.querySelector(\".selected-input\") as HTMLInputElement;\r\n // Get the options in the select to be unselected\r\n const option_to_unselect = wrapper.querySelector(`select option[value=\"${value_to_remove}\"]`);\r\n option_to_unselect.removeAttribute(\"selected\");\r\n\r\n const options_selected = [];\r\n\r\n // Remove button\r\n const selectedElements: NodeListOf = item.querySelectorAll(\".selected-label\");\r\n selectedElements.forEach(el => {\r\n if (el.textContent === value) {\r\n el.parentElement.remove()\r\n }\r\n })\r\n\r\n const updatedSelectedElements: NodeListOf = item.querySelectorAll(\".selected-label\");\r\n\r\n updatedSelectedElements.forEach(item => {\r\n options_selected.push(item.textContent)\r\n })\r\n\r\n input_search.focus();\r\n handleListItems(options_selected)\r\n }\r\n\r\n // Listen for 2 sequence of hits on the delete key, if this happens delete the last token if exist\r\n function deletePressed(e) {\r\n const wrapper = e.target.parentNode.parentNode;\r\n const input_search = e.target;\r\n const key = e.keyCode || e.charCode;\r\n const tokens = wrapper.querySelectorAll(\".dropdown-filter__selected-wrapper\");\r\n\r\n if (tokens.length) {\r\n const last_token_x = tokens[tokens.length - 1].querySelector(\"a\");\r\n let hits = +last_token_x.dataset.hits;\r\n\r\n if (key == 8 || key == 46) {\r\n if (!input_search.value) {\r\n if (hits > 1) {\r\n // Trigger delete event\r\n const event = new Event('click');\r\n last_token_x.dispatchEvent(event);\r\n } else {\r\n last_token_x.dataset.hits = 2;\r\n }\r\n }\r\n } else {\r\n last_token_x.dataset.hits = 0;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // You can call this function if you want to add new options to the select plugin\r\n // Target needs to be a unique identifier from the select you want to append new option for example #multi-select-plugin\r\n // Example of usage addOption(\"#multi-select-plugin\", \"tesla\", \"Tesla\")\r\n function addOption(target, val, text) {\r\n const select = item.querySelector(target);\r\n let opt = document.createElement('option');\r\n opt.value = val;\r\n opt.innerHTML = text;\r\n select.appendChild(opt);\r\n }\r\n\r\n const handleListItems = (arr: Array) => {\r\n const list: NodeListOf = item.querySelectorAll(\".dropdown-filter__autocomplete-list li\");\r\n\r\n list.forEach(item => {\r\n if (arr.includes(item.textContent)) {\r\n item.classList.add(\"item--active\")\r\n } else {\r\n item.classList.remove(\"item--active\")\r\n }\r\n })\r\n }\r\n})","import Glide from '@glidejs/glide';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\n\r\nconst eservicesComponent: HTMLDivElement = document.querySelector('.e-services');\r\n\r\nif (eservicesComponent) {\r\n const eserviceCarousels: NodeListOf = eservicesComponent.querySelectorAll('.e-services__carousel-inner');\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n const eserviceTabs: NodeListOf = eservicesComponent.querySelectorAll('.e-services__tab');\r\n const eserviceCarouselsContainer: NodeListOf =\r\n eservicesComponent.querySelectorAll('.e-services__carousel');\r\n let activeTab: number = 0;\r\n\r\n if (eserviceCarousels.length > 0) {\r\n const eserviceCarouselsArray = Array.from(eserviceCarousels) || [];\r\n\r\n eserviceCarouselsArray.forEach((item: HTMLElement) => {\r\n const glideSettings = {\r\n type: 'slider',\r\n perView: 4,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction || 'ltr',\r\n breakpoints: {\r\n 1400: {\r\n perView: 3,\r\n },\r\n 1100: {\r\n perView: 2,\r\n gap: 16,\r\n },\r\n },\r\n };\r\n\r\n let glide = new Glide(item, glideSettings);\r\n\r\n glide.mount();\r\n });\r\n }\r\n\r\n const resetAll = () => {\r\n eserviceCarouselsContainer.forEach((carousel) => carousel.classList.remove('e-services__carousel--active'));\r\n eserviceTabs.forEach((tab) => tab.classList.remove('e-services__tab--active'));\r\n };\r\n\r\n const showActiveItems = (activeTab: number) => {\r\n resetAll();\r\n eserviceTabs[activeTab].classList.add('e-services__tab--active');\r\n eserviceCarouselsContainer[activeTab].classList.add('e-services__carousel--active');\r\n };\r\n\r\n eserviceTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n showActiveItems(activeTab);\r\n });\r\n });\r\n\r\n showActiveItems(activeTab);\r\n\r\n const shareButtons: NodeListOf = eservicesComponent.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n\r\n const favButtons: NodeListOf = eservicesComponent.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach((button) => {\r\n const dataIdAttr: string | null = button.getAttribute('data-id');\r\n const type: string | null = button.getAttribute('data-type');\r\n const favouritedIds: number[] = JSON.parse(button.getAttribute('data-ids'));\r\n\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n const dataId: number = parseInt(dataIdAttr);\r\n if (IsFavourited(dataId, favouritedIds)) {\r\n button.classList.add('active');\r\n } else {\r\n button.classList.remove('active');\r\n }\r\n\r\n button.addEventListener('click', (e) => {\r\n console.log('small button clicked - events details');\r\n saveOrRemoveFavourite(type, dataId, button);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst eacomponent: NodeListOf = document.querySelectorAll(\".employee-access-component\");\r\n\r\nif (eacomponent) {\r\n const buttons: NodeListOf = document.querySelectorAll(\".employee-access-component__button\");\r\n\r\n buttons.forEach(button => {\r\n button.addEventListener(\"click\", e => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains(\"button\") || target.classList.contains(\"button__image\")) {\r\n e.preventDefault()\r\n }\r\n \r\n if (target.classList.contains(\"shareButton\")) {\r\n copyToClipboard(button); \r\n }\r\n });\r\n });\r\n}\r\n","import saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport addToCalendar from '../../../helpers/addToCalendar';\r\n\r\nconst enrichKnowledge = document.querySelector('.enrich-knowledge') as HTMLDivElement;\r\n\r\nif (enrichKnowledge) {\r\n const enrichTabs: NodeListOf = enrichKnowledge.querySelectorAll('.enrich-knowledge__tab');\r\n const sections: NodeListOf = enrichKnowledge.querySelectorAll('.enrich-knowledge__section');\r\n\r\n let activeTab: number = 0;\r\n\r\n const resetTabs = () => {\r\n enrichTabs.forEach((tab) => tab.classList.remove('enrich-knowledge__tab--active'));\r\n sections.forEach((tab) => tab.classList.remove('enrich-knowledge__section--active'));\r\n };\r\n\r\n enrichTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n\r\n enrichTabs[activeTab].classList.add('enrich-knowledge__tab--active');\r\n sections[activeTab].classList.add('enrich-knowledge__section--active');\r\n });\r\n });\r\n\r\n sections.forEach((section) => {\r\n const accordion = section.firstElementChild as HTMLDetailsElement;\r\n if (accordion != null) {\r\n if (accordion.classList.contains('enrich-knowledge__accordion')) {\r\n accordion.setAttribute('open', 'true');\r\n }\r\n }\r\n\r\n const accordions = section.querySelectorAll('.enrich-knowledge__accordion') as NodeListOf;\r\n accordions.forEach((childAccordion) => {\r\n childAccordion.addEventListener('toggle', () => {\r\n if (childAccordion.open) {\r\n accordions.forEach((otherAccordion) => {\r\n if (otherAccordion !== childAccordion) {\r\n otherAccordion.removeAttribute('open');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n const favButtons: NodeListOf = document.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach((button) => {\r\n const dataIdAttr: string | null = button.getAttribute('data-id');\r\n const type: string | null = button.getAttribute('data-type');\r\n const favouritedIds: number[] = JSON.parse(button.getAttribute('data-ids'));\r\n\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n const dataId: number = parseInt(dataIdAttr);\r\n\r\n if (IsFavourited(dataId, favouritedIds)) {\r\n button.classList.add('active');\r\n } else {\r\n button.classList.remove('active');\r\n }\r\n\r\n button.addEventListener('click', (e) => {\r\n console.log('small button clicked - program details');\r\n saveOrRemoveFavourite(type, dataId, button);\r\n });\r\n }\r\n });\r\n }\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n\r\n const calButtons: NodeListOf = document.querySelectorAll('.calButton');\r\n if (calButtons && calButtons.length > 0) {\r\n calButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n addToCalendar(button);\r\n });\r\n });\r\n }\r\n}\r\n","import saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport addToCalendar from '../../../helpers/addToCalendar';\r\n\r\nconst eventsDetails: HTMLDivElement = document.querySelector('.event-details');\r\n\r\nif (eventsDetails) {\r\n const favButtons: NodeListOf = document.querySelectorAll('.favouriteButton');\r\n\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach((button) => {\r\n const dataIdAttr: string | null = button.getAttribute('data-id');\r\n const type: string | null = button.getAttribute('data-type');\r\n const favouritedIds: number[] = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n const dataId: number = parseInt(dataIdAttr);\r\n\r\n if (IsFavourited(dataId, favouritedIds)) {\r\n button.classList.add('active');\r\n } else {\r\n button.classList.remove('active');\r\n }\r\n\r\n button.addEventListener('click', (e) => {\r\n console.log('small button clicked - events details');\r\n saveOrRemoveFavourite(type, dataId, button);\r\n });\r\n }\r\n });\r\n }\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n\r\n const calButtons: NodeListOf = document.querySelectorAll('.calButton');\r\n\r\n if (calButtons && calButtons.length > 0) {\r\n calButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n addToCalendar(button);\r\n });\r\n });\r\n }\r\n}\r\n","import Glide from '@glidejs/glide';\r\nimport axios from 'axios';\r\nimport { FetchEventsCalendarPayload, EventCalendarCard, FetchEventsCalendarResponse } from './eventsCalendar.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nconst eventsCalendar = document.querySelector('.events-calendar') as HTMLDivElement;\r\n\r\nif (eventsCalendar) {\r\n const eventsCalendarCarousel = eventsCalendar.querySelector('.events-calendar__carousel-inner') as HTMLDivElement;\r\n const carouselItemsContainer = eventsCalendar.querySelector('.events-calendar__carousel-slides');\r\n const tabs: NodeListOf = eventsCalendar.querySelectorAll('.events-calendar__tab');\r\n const columns: NodeListOf = eventsCalendar.querySelectorAll('.events-calendar__column');\r\n const eventsListSearchInput = eventsCalendar.querySelector('.events-calendar__search-input') as HTMLInputElement;\r\n const eventsCalendarDateFrom = eventsCalendar.querySelector('.date-range__input-from') as HTMLInputElement;\r\n const eventsCalendarDateTo = eventsCalendar.querySelector('.date-range__input-to') as HTMLInputElement;\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let activeTab: number = 0;\r\n let activeItem: number = 0;\r\n\r\n let eventCalendarCards: EventCalendarCard[] = [];\r\n let keyword: string = '';\r\n let dateFrom: string = '';\r\n let dateTo: string = '';\r\n let eventType: number = 0;\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = 100;\r\n\r\n const createWeekButtons = (): void => {\r\n const oneDay = 24 * 60 * 60 * 1000;\r\n const today = new Date();\r\n\r\n const getStartOfCurrentWeek = (date: Date): Date => {\r\n const day = date.getDay();\r\n const diff = date.getDate() - day + (day >= 5 ? 6 : -1);\r\n return new Date(date.setDate(diff));\r\n };\r\n\r\n let currentDate = today.getDay() === 5 ? today : getStartOfCurrentWeek(today);\r\n\r\n for (let i = 0; i < 52; i++) {\r\n const startOfWeek = new Date(currentDate);\r\n const endOfWeek = new Date(startOfWeek.getTime() + 6 * oneDay);\r\n\r\n if (i === 0) {\r\n dateFrom = startOfWeek.toISOString().split('T')[0];\r\n dateTo = endOfWeek.toISOString().split('T')[0];\r\n }\r\n\r\n const button = document.createElement('button');\r\n button.className =\r\n 'events-calendar__carousel-item events-calendar__carousel-item--active flex flex--align-center flex--justify-center';\r\n\r\n let startMonth: string = '';\r\n let endMonth: string = '';\r\n\r\n if (direction === 'rtl') {\r\n startMonth = startOfWeek.toLocaleDateString('ar', { month: 'long' });\r\n endMonth = endOfWeek.toLocaleDateString('ar', { month: 'long' });\r\n } else {\r\n startMonth = startOfWeek.toLocaleDateString('en-US', { month: 'long' });\r\n endMonth = endOfWeek.toLocaleDateString('en-US', { month: 'long' });\r\n }\r\n\r\n let buttonText = `${startOfWeek.getDate()}-${endOfWeek.getDate()}`;\r\n if (startMonth !== endMonth) {\r\n buttonText += ` ${startMonth}/${endMonth}`;\r\n } else {\r\n buttonText += ` ${startMonth}`;\r\n }\r\n\r\n button.textContent = buttonText;\r\n button.setAttribute('data-date-from', startOfWeek.toISOString().split('T')[0]);\r\n button.setAttribute('data-date-to', endOfWeek.toISOString().split('T')[0]);\r\n\r\n carouselItemsContainer.appendChild(button);\r\n\r\n currentDate = new Date(currentDate.getTime() + 7 * oneDay);\r\n }\r\n };\r\n\r\n const resetTabs = () => {\r\n tabs.forEach((tab) => tab.classList.remove('events-calendar__tab--active'));\r\n };\r\n\r\n const fetchEvents = async () => {\r\n const payload: FetchEventsCalendarPayload = {\r\n keyword,\r\n dateFrom,\r\n dateTo,\r\n eventType,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n try {\r\n let response;\r\n\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post('/api/events', payload);\r\n } else {\r\n response = await axios.post('/api/events', payload);\r\n }\r\n eventCalendarCards = response.data.items;\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n updateCards(eventCalendarCards);\r\n }\r\n };\r\n\r\n const glideSettings = {\r\n type: 'slider',\r\n perView: 9,\r\n gap: 0,\r\n rewind: false,\r\n bound: false,\r\n direction: direction || 'ltr',\r\n breakpoints: {\r\n 992: {\r\n perView: 6,\r\n },\r\n 768: {\r\n perView: 5,\r\n },\r\n 480: {\r\n perView: 3,\r\n },\r\n },\r\n };\r\n\r\n createWeekButtons();\r\n\r\n const glide = new Glide(eventsCalendarCarousel, glideSettings);\r\n\r\n glide.mount();\r\n\r\n const carouselItems: NodeListOf = eventsCalendar.querySelectorAll(\r\n '.events-calendar__carousel-item',\r\n );\r\n\r\n carouselItems.forEach((item, index: number) => {\r\n item.addEventListener('click', () => {\r\n activeItem = index;\r\n glide.go(`=${index}`);\r\n\r\n if (index > 0) {\r\n resetTabs();\r\n tabs[1].classList.add('events-calendar__tab--active');\r\n }\r\n });\r\n });\r\n\r\n let timeout = null;\r\n glide.on('move.after', () => {\r\n activeItem === glide.index;\r\n\r\n if (glide.index > 0) {\r\n resetTabs();\r\n tabs[1].classList.add('events-calendar__tab--active');\r\n activeItem = glide.index;\r\n } else if (glide.index === 0) {\r\n resetTabs();\r\n tabs[0].classList.add('events-calendar__tab--active');\r\n activeItem = 0;\r\n }\r\n\r\n eventsListSearchInput.value = '';\r\n\r\n const carouselTabs: NodeListOf = eventsCalendar.querySelectorAll(\r\n '.events-calendar__carousel-item',\r\n );\r\n\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n dateFrom = carouselTabs[activeItem].getAttribute('data-date-from');\r\n dateTo = carouselTabs[activeItem].getAttribute('data-date-to');\r\n fetchEvents();\r\n }, 100);\r\n });\r\n\r\n tabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n tabs[activeTab].classList.add('events-calendar__tab--active');\r\n\r\n if (index === 0) {\r\n glide.go(`=0`);\r\n }\r\n\r\n if (index === 1 && activeItem === 0) {\r\n activeItem = 1;\r\n glide.go(`=1`);\r\n }\r\n });\r\n });\r\n\r\n if (window.innerWidth < 992) {\r\n const eventsCalendarColumns: NodeListOf =\r\n eventsCalendar.querySelectorAll('.events-calendar__column');\r\n\r\n eventsCalendarColumns.forEach((column) => {\r\n column.removeAttribute('open');\r\n eventsCalendarColumns[0].open = true;\r\n });\r\n }\r\n\r\n // eventsCalendarDateFrom.addEventListener('change', () => {\r\n // dateFrom = eventsCalendarDateFrom.value;\r\n // setActiveCarouselTab(dateFrom);\r\n // });\r\n\r\n // eventsCalendarDateTo.addEventListener('change', () => {\r\n // dateTo = eventsCalendarDateTo.value;\r\n // setActiveCarouselTab(dateFrom);\r\n // });\r\n\r\n eventsListSearchInput.addEventListener('input', (e: Event) => {\r\n const target = e.target as HTMLInputElement;\r\n const searchInputValue = target.value.toLowerCase();\r\n const cards: NodeListOf = eventsCalendar.querySelectorAll('.events-calendar__card');\r\n\r\n cards.forEach((card: HTMLAnchorElement) => {\r\n const cardText = card.querySelector('.events-calendar__card-text').textContent?.toLowerCase() || '';\r\n\r\n if (cardText.includes(searchInputValue)) {\r\n card.classList.remove('hidden');\r\n } else {\r\n card.classList.add('hidden');\r\n }\r\n });\r\n });\r\n\r\n // const setMinMaxDateValues = () => {\r\n // const today = new Date();\r\n // const year = today.getFullYear();\r\n // const month = (today.getMonth() + 1).toString().padStart(2, '0');\r\n // const day = today.getDate().toString().padStart(2, '0');\r\n\r\n // const formattedToday = `${year}-${month}-${day}`;\r\n\r\n // eventsCalendarDateFrom.min = formattedToday;\r\n // eventsCalendarDateTo.min = formattedToday;\r\n\r\n // const nextYear = new Date(today);\r\n // nextYear.setFullYear(today.getFullYear() + 1);\r\n\r\n // const nextYearYear = nextYear.getFullYear();\r\n // const nextYearMonth = (nextYear.getMonth() + 1).toString().padStart(2, '0');\r\n // const nextYearDay = nextYear.getDate().toString().padStart(2, '0');\r\n\r\n // const formattedNextYear = `${nextYearYear}-${nextYearMonth}-${nextYearDay}`;\r\n\r\n // eventsCalendarDateTo.max = formattedNextYear;\r\n // };\r\n\r\n const updateCards = (items) => {\r\n columns.forEach((column) => {\r\n const cards = column.querySelectorAll('.events-calendar__card');\r\n cards.forEach((card) => card.remove());\r\n });\r\n\r\n items.forEach((item) => {\r\n createCard(item);\r\n });\r\n\r\n setColumnNumbers();\r\n };\r\n\r\n const createCard = (item) => {\r\n const card = document.createElement('a');\r\n card.className = 'events-calendar__card flex flex--column fade-in';\r\n card.setAttribute('href', item.link);\r\n card.setAttribute('data-from', item.start_Date);\r\n card.setAttribute('data-to', item.end_Date);\r\n\r\n card.innerHTML = `\r\n \"this\r\n

    ${item.title}

    \r\n `;\r\n\r\n const dayToColumnIndex = {\r\n 6: 0, // Saturday\r\n 0: 1, // Sunday\r\n 1: 2, // Monday\r\n 2: 3, // Tuesday\r\n 3: 4, // Wednesday\r\n 4: 5, // Thursday\r\n 5: -1, // Friday (excluded)\r\n };\r\n\r\n const dayOfWeek = new Date(item.start_Date).getDay();\r\n const columnIndex = dayToColumnIndex[dayOfWeek];\r\n\r\n if (columnIndex !== -1) {\r\n const cardsContainer = columns[columnIndex].querySelector('.events-calendar__cards') as HTMLDivElement;\r\n cardsContainer.appendChild(card);\r\n }\r\n };\r\n\r\n const setColumnNumbers = () => {\r\n columns.forEach((column) => {\r\n const numberContainer = column.querySelector('.events-calendar__column-number');\r\n const cardsContainer = column.querySelector('.events-calendar__cards');\r\n\r\n const numberOfCards = cardsContainer.children.length;\r\n let formattedNumber: string;\r\n\r\n if (numberOfCards === 0) {\r\n formattedNumber = '0';\r\n } else if (numberOfCards < 10) {\r\n formattedNumber = '0' + numberOfCards;\r\n } else {\r\n formattedNumber = numberOfCards.toString();\r\n }\r\n\r\n numberContainer.textContent = formattedNumber;\r\n });\r\n };\r\n\r\n // const setActiveCarouselTab = (date: string) => {\r\n // const inputDate = new Date(date);\r\n // const buttons = carouselItems;\r\n\r\n // buttons.forEach((button, index) => {\r\n // const dateFromStr = button.getAttribute('data-date-from');\r\n // const dateToStr = button.getAttribute('data-date-to');\r\n\r\n // if (dateFromStr && dateToStr) {\r\n // const dateFrom = new Date(dateFromStr);\r\n // const dateTo = new Date(dateToStr);\r\n\r\n // if (inputDate >= dateFrom && inputDate <= dateTo) {\r\n // glide.go(`=${index}`);\r\n // }\r\n // }\r\n // });\r\n // };\r\n\r\n // setMinMaxDateValues();\r\n fetchEvents();\r\n}\r\n","const cards: NodeListOf = document.querySelectorAll(\".events-card\");\r\n\r\nif (cards && cards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll(\".events-card__button\");\r\n\r\n cards.forEach(card => {\r\n card.addEventListener(\"click\", e => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains(\"button\") || target.classList.contains(\"button__image\")) {\r\n e.preventDefault()\r\n }\r\n });\r\n });\r\n\r\n cardButtons.forEach(button => {\r\n button.addEventListener(\"click\", e => {\r\n //console.log(\"small button clicked\")\r\n })\r\n })\r\n}\r\n","import {\r\n FetchEventsListPayload,\r\n FetchEventsListResponse,\r\n EventListCard,\r\n FetchEventCardSettingsResponse,\r\n} from './eventsList.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport addToCalendar from '../../../helpers/addToCalendar';\r\nimport IsUserLoggedIn from '../../../helpers/isUserLoggedIn';\r\n\r\nconst eventsList: HTMLDivElement = document.querySelector('.events-list');\r\n\r\nif (eventsList) {\r\n const eventsGrid = eventsList.querySelector('.events-list__grid') as HTMLDivElement;\r\n const eventsFilters = eventsList.querySelector('.events-list__search') as HTMLDivElement;\r\n const eventsListSearchInput = eventsList.querySelector('.events-list__search-input') as HTMLInputElement;\r\n const eventDateFrom = eventsList.querySelector('.date-range__input-from') as HTMLInputElement;\r\n const eventDateTo = eventsList.querySelector('.date-range__input-to') as HTMLInputElement;\r\n const eventTabs: NodeListOf = eventsList.querySelectorAll('.events-list__tab');\r\n const eventTabsComponent = eventsList.querySelector('.events-list__tabs') as HTMLDivElement;\r\n const nextPageButton = eventsList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = eventsList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = eventsList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = eventsList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = eventsList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = eventsList.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = eventsList.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const favouritedIds: number[] = JSON.parse(eventsGrid.getAttribute('data-ids'));\r\n\r\n let activeTab: number = 0;\r\n\r\n let eventCards: EventListCard[] = [];\r\n let keyword: string = '';\r\n let dateFrom: string = '';\r\n let dateTo: string = '';\r\n let eventType: number = 1;\r\n let sortBy: number = 2;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n let eventCardSettings: FetchEventCardSettingsResponse = {\r\n dateFromText: '',\r\n dateToText: '',\r\n locationText: '',\r\n };\r\n\r\n // Functions\r\n const resetTabs = () => {\r\n eventTabs.forEach((tab) => tab.classList.remove('events-list__tab--active'));\r\n };\r\n\r\n const fetchEventCardSettings = async () => {\r\n try {\r\n const response = await axios.get(\r\n `https://app-prd-umbracoportal-uaenorth.azurewebsites.net/api/events/cardsettings?currentCulture=${currentCulture}`\r\n );\r\n\r\n eventCardSettings = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchEvents = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchEventsListPayload = {\r\n keyword,\r\n dateFrom,\r\n dateTo,\r\n eventType,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response = await axios.post(\r\n '/api/events',\r\n payload\r\n );\r\n eventCards = response.data.items;\r\n if (eventCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n eventCards,\r\n fetchEvents\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n eventsGrid.innerHTML = '';\r\n\r\n eventCards.forEach((card: EventListCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'events-card flex fade-in';\r\n\r\n var _class = '';\r\n if (IsFavourited(card.id, favouritedIds)) {\r\n _class = 'active';\r\n }\r\n\r\n cardElement.innerHTML = `\r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n ${\r\n IsUserLoggedIn()\r\n ? ``\r\n : ''\r\n }\r\n \r\n \r\n\r\n \r\n\r\n
    \r\n

    ${card.title}

    \r\n
    \r\n \r\n
    \r\n

    ${eventCardSettings.dateFromText}

    \r\n

    ${formatDateString(card.start_Date)}

    \r\n
    \r\n\r\n
    \r\n

    ${eventCardSettings.dateToText}

    \r\n

    ${formatDateString(card.end_Date)}

    \r\n
    \r\n ${\r\n card.location !== ''\r\n ? `
    \r\n

    ${eventCardSettings.locationText}

    \r\n

    ${card.location}

    \r\n
    `\r\n : ''\r\n }\r\n
    \r\n
    \r\n `;\r\n\r\n eventsGrid.appendChild(cardElement);\r\n });\r\n addCardListeners();\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n eventTabsComponent.classList.add('disabled');\r\n eventsFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n eventTabsComponent.classList.remove('disabled');\r\n eventsFilters.classList.remove('disabled');\r\n };\r\n\r\n // Listeners\r\n eventTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n eventTabs[activeTab].classList.add('events-list__tab--active');\r\n pageNumber = 1;\r\n\r\n if (index === 0) {\r\n eventType = 3;\r\n } else if (index === 1) {\r\n eventType = 1;\r\n } else if (index === 2) {\r\n eventType = 2;\r\n }\r\n\r\n fetchEvents();\r\n });\r\n });\r\n\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchEvents();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchEvents();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchEvents();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchEvents();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchEvents();\r\n });\r\n\r\n let timeout = null;\r\n eventsListSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = eventsListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchEvents();\r\n }, 1000);\r\n });\r\n\r\n // eventDateFrom.addEventListener('change', () => {\r\n // dateFrom = eventDateFrom.value;\r\n // fetchEvents();\r\n // });\r\n\r\n // eventDateTo.addEventListener('change', () => {\r\n // dateTo = eventDateTo.value;\r\n // fetchEvents();\r\n // });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Availble for registration\r\n // 2 = closing soon\r\n if (radio.value === sortBy.toString()) {\r\n radio.checked = true;\r\n } else {\r\n radio.checked = false;\r\n }\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = eventsList.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchEvents();\r\n });\r\n });\r\n\r\n const initializeEventsList = async () => {\r\n await fetchEventCardSettings();\r\n await fetchEvents();\r\n };\r\n\r\n // Call the initialize function\r\n initializeEventsList();\r\n\r\n const addCardListeners = () => {\r\n const serviceListCards: NodeListOf = eventsList.querySelectorAll('.events-card');\r\n\r\n if (serviceListCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.events-card__button');\r\n\r\n serviceListCards.forEach((card) => {\r\n card.addEventListener('click', (e) => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n console.log('small button clicked - events list');\r\n if (button.classList.contains('favouriteButton')) {\r\n const t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n saveOrRemoveFavourite(t, id, button);\r\n } else if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n } else if (button.classList.contains('calButton')) {\r\n addToCalendar(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n\r\nconst shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n}\r\n","import Glide from '@glidejs/glide';\r\nimport formatDateString from '../../../helpers/formatDate';\r\n\r\nconst eventsComponents: NodeListOf = document.querySelectorAll('.events');\r\n\r\neventsComponents.forEach(eventsComponent => {\r\n if (eventsComponent) {\r\n const daysContainer: NodeListOf = eventsComponent.querySelectorAll('.events__days');\r\n const bulletsContainer: NodeListOf = eventsComponent.querySelectorAll('.glide__bullets');\r\n const days: NodeListOf = eventsComponent.querySelectorAll('.events__day');\r\n const dayNumbers: NodeListOf = eventsComponent.querySelectorAll('.events__day-number');\r\n const dates: NodeListOf = eventsComponent.querySelectorAll('.events__card-text');\r\n const eventsCarousels: NodeListOf = eventsComponent.querySelectorAll('.events__carousel-inner');\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n const eventTabs: NodeListOf = eventsComponent.querySelectorAll('.events__tab');\r\n const eventCarouselsContainer: NodeListOf = eventsComponent.querySelectorAll('.events__carousel');\r\n let activeTab: number = 0;\r\n let activeDay: number = 0;\r\n\r\n if (eventsCarousels.length > 0) {\r\n const eventsCarouselsArray = Array.from(eventsCarousels) || [];\r\n\r\n const generateBullets = (carousel: HTMLElement, num: number) => {\r\n var bulletCount = carousel.querySelectorAll('.events__card').length - num;\r\n var bulletWrapper = carousel.querySelector('.glide__bullets');\r\n\r\n for (let index = 0; index < bulletCount; index++) {\r\n const button = document.createElement('button');\r\n button.className = 'glide__bullet';\r\n button.setAttribute('data-glide-dir', '=' + index);\r\n\r\n bulletWrapper.appendChild(button);\r\n }\r\n };\r\n\r\n eventsCarouselsArray.forEach((item: HTMLElement) => {\r\n const glideSettings = {\r\n type: 'slider',\r\n perView: 3,\r\n gap: 24,\r\n rewind: false,\r\n bound: true,\r\n direction: direction || 'ltr',\r\n breakpoints: {\r\n 768: {\r\n perView: 2.3,\r\n gap: 16,\r\n },\r\n 480: {\r\n perView: 2.27,\r\n },\r\n },\r\n };\r\n\r\n const glide = new Glide(item, glideSettings);\r\n\r\n glide.mount();\r\n\r\n // remove extra bullets depending how many slides per view\r\n const width: number = window.innerWidth;\r\n let diff: number = 0;\r\n\r\n width > 768 ? (diff = 2) : (diff = 1);\r\n\r\n generateBullets(item, diff);\r\n\r\n glide.on('move.after', () => {\r\n const bullets: NodeListOf = item.querySelectorAll('.glide__bullet');\r\n const currentIndex = glide.index;\r\n\r\n if (bullets.length > 0) {\r\n bullets.forEach((bullet, index) => {\r\n bullet.classList.remove('glide__bullet--active');\r\n\r\n bullet.addEventListener('click', (e) => {\r\n glide.go(`=${index}`);\r\n });\r\n });\r\n\r\n bullets[currentIndex].classList.add('glide__bullet--active');\r\n }\r\n });\r\n });\r\n }\r\n\r\n const resetAll = () => {\r\n eventCarouselsContainer.forEach((carousel) => carousel.classList.remove('events__carousel--active'));\r\n daysContainer.forEach((item) => item.classList.add('hidden'));\r\n eventTabs.forEach((tab) => tab.classList.remove('events__tab--active'));\r\n days.forEach((day) => day.classList.remove('events__day--active'));\r\n bulletsContainer.forEach((item) => item.classList.remove('glide__bullets--active'));\r\n };\r\n\r\n const showActiveItems = (activeTab: number, activeDay: number) => {\r\n resetAll();\r\n eventTabs[activeTab].classList.add('events__tab--active');\r\n daysContainer[activeTab].classList.remove('hidden');\r\n days[activeDay].classList.add('events__day--active');\r\n eventCarouselsContainer[activeDay].classList.add('events__carousel--active');\r\n bulletsContainer[activeDay].classList.add('glide__bullets--active');\r\n };\r\n\r\n const getDayFromDate = (dateString: string) => {\r\n const dateParts = dateString.split('-');\r\n const day = parseInt(dateParts[2], 10);\r\n\r\n return day.toString();\r\n };\r\n\r\n eventTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n index === 0 ? (activeDay = 0) : (activeDay = 5);\r\n showActiveItems(activeTab, activeDay);\r\n });\r\n });\r\n\r\n days.forEach((day, index: number) => {\r\n day.addEventListener('click', () => {\r\n activeDay = index;\r\n showActiveItems(activeTab, activeDay);\r\n });\r\n });\r\n\r\n dayNumbers.forEach((day) => {\r\n const fullDate = day.textContent;\r\n day.textContent = getDayFromDate(fullDate);\r\n });\r\n\r\n showActiveItems(activeTab, activeDay);\r\n }\r\n})","import { FetchFaqPayload, FetchFaqResponse, FaqItem, FaqGroupItem } from './faq.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst faq: HTMLDivElement = document.querySelector('.faq');\r\n\r\nif (faq) {\r\n const faqsList = faq.querySelector('.accordion__items') as HTMLDivElement;\r\n const faqFilters = faq.querySelector('.faq__filters') as HTMLDivElement;\r\n const faqSearchInput = faq.querySelector('.input--search') as HTMLInputElement;\r\n const nextPageButton = faq.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = faq.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = faq.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = faq.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = faq.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = faq.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = faq.querySelectorAll('.sort-filter__input');\r\n const dropdownFilters: NodeListOf = faq.querySelectorAll('.dropdown-filter');\r\n const singleDropdown = faq.querySelector('.single-select') as HTMLSelectElement | null;\r\n const singleDropdownFilterTrigger: HTMLDivElement = faq.querySelector('.single-dropdown-filter__trigger');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const requestUrl : string = (document.getElementById(\"requestUrl\") as HTMLInputElement).value;\r\n const faqGroupKey : string = (document.getElementById(\"faqGroupKey\" )as HTMLInputElement).value;\r\n\r\n let faqGroups: FaqGroupItem[] = [];\r\n let keyword: string = '';\r\n let faqsGroup: string = faqGroupKey;\r\n let beneficiaries: string[] = [];\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchFaqs = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchFaqPayload = {\r\n keyword,\r\n faqsGroup,\r\n beneficiaries,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n \r\n disableInputs();\r\n try {\r\n let response = await axios.post(\r\n requestUrl,\r\n payload\r\n );\r\n faqGroups = response.data.items;\r\n if (faqGroups.length > pageSize) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n faqGroups,\r\n fetchFaqs\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n faqsList.innerHTML = '';\r\n\r\n faqGroups.forEach((group: FaqGroupItem) => {\r\n const groupElement = document.createElement('div');\r\n groupElement.className = 'accordion__subtitle';\r\n groupElement.innerHTML = group.subCategory;\r\n faqsList.appendChild(groupElement);\r\n\r\n group.items.forEach((item: FaqItem) => {\r\n const cardElement = document.createElement('details');\r\n\r\n cardElement.className = 'accordion__item fade-in';\r\n\r\n cardElement.innerHTML = `\r\n \r\n ${item.question}\r\n \r\n
    \r\n ${item.answer}\r\n
    `;\r\n\r\n faqsList.appendChild(cardElement);\r\n });\r\n });\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n faqFilters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n faqFilters.classList.remove('disabled');\r\n };\r\n\r\n singleDropdown?.addEventListener('change', () => {\r\n const selected: HTMLSelectElement = singleDropdown.querySelector('option:checked');\r\n faqsGroup = selected.value;\r\n pageNumber = 1;\r\n fetchFaqs();\r\n });\r\n \r\n singleDropdownFilterTrigger?.addEventListener('keydown', (e) => {\r\n e.preventDefault();\r\n });\r\n \r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchFaqs();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchFaqs();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchFaqs();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchFaqs();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchFaqs();\r\n });\r\n\r\n let timeout = null;\r\n faqSearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = faqSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchFaqs();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = latest\r\n // 2 = oldest\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = faq.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchFaqs();\r\n });\r\n });\r\n\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const beneficiariesOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n beneficiariesOptions.push(element.textContent);\r\n });\r\n beneficiaries = beneficiariesOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchFaqs();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n fetchFaqs();\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}\r\n","import {\r\n EventListCard,\r\n FetchEventsListPayload,\r\n FetchEventsListResponse,\r\n FetchEventCardSettingsResponse,\r\n} from './favourites.types';\r\n\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport addToCalendar from '../../../helpers/addToCalendar';\r\n\r\nconst initializeFavouritesComponent = async (favouritesComponent: HTMLElement) => {\r\n const favouritesTabs = favouritesComponent.querySelectorAll('.favourites__tab');\r\n const events = favouritesComponent.querySelector('.favourites__grid--events') as HTMLElement;\r\n let activeTab = 0;\r\n\r\n const nextPageButton = favouritesComponent.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = favouritesComponent.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = favouritesComponent.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = favouritesComponent.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = favouritesComponent.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = favouritesComponent.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = favouritesComponent.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let eventCards: EventListCard[] = [];\r\n let ids: number[] = [];\r\n const sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n const buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let currentType: string = 'events';\r\n\r\n let eventCardSettings: FetchEventCardSettingsResponse = {\r\n dateFromText: '',\r\n dateToText: '',\r\n locationText: '',\r\n };\r\n\r\n const fetchEventCardSettings = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/events/cardsettings?currentCulture=${currentCulture}`\r\n );\r\n\r\n eventCardSettings = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n // Set tab names\r\n const TabTranslations = {\r\n events: { ar: 'الفعاليات', engb: 'Events' },\r\n };\r\n\r\n const languageKey = document.querySelector('html')?.getAttribute('dir') === 'rtl' ? 'ar' : 'engb';\r\n const tabTitles = favouritesComponent.querySelectorAll('.favourites__tab-title');\r\n\r\n tabTitles.forEach((title) => {\r\n const alias = title.textContent?.trim().toLowerCase();\r\n if (TabTranslations[alias]) {\r\n title.textContent = TabTranslations[alias][languageKey];\r\n }\r\n });\r\n\r\n // Tab logic\r\n const showSelectedItems = async (activeTab: number) => {\r\n favouritesTabs.forEach((tab) => tab.classList.remove('favourites__tab--active'));\r\n const selectedTab = favouritesTabs[activeTab];\r\n selectedTab.classList.add('favourites__tab--active');\r\n currentType = selectedTab.getAttribute('data-type');\r\n ids = JSON.parse(selectedTab.getAttribute('data-ids'));\r\n\r\n // get cards from API\r\n pageNumber = 1; // go to the begining of the pages\r\n\r\n if (currentType == 'event') {\r\n getEventCards();\r\n }\r\n\r\n const grids = [events];\r\n grids.forEach((grid, index) => {\r\n if (grid)\r\n {\r\n grid.style.display = activeTab === index ? 'grid' : 'none';\r\n }\r\n });\r\n };\r\n\r\n const handleTabClick = (index: number) => {\r\n activeTab = index;\r\n showSelectedItems(activeTab);\r\n };\r\n\r\n favouritesTabs.forEach((tab, index) => {\r\n tab.addEventListener('click', () => handleTabClick(index));\r\n });\r\n\r\n const getEventCards = async () => {\r\n if (ids.length > 0) {\r\n const payload: FetchEventsListPayload = {\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n ids,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response = await axios.post('/api/events/byids', payload);\r\n\r\n eventCards = response.data.items;\r\n if (eventCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n eventCards,\r\n getEventCards\r\n );\r\n isLoading = false;\r\n updateEventCards();\r\n enableInputs();\r\n }\r\n } else {\r\n pagination.classList.add('hidden');\r\n events.innerHTML = '';\r\n }\r\n };\r\n\r\n const updateEventCards = () => {\r\n events.innerHTML = '';\r\n\r\n eventCards.forEach((card: EventListCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'events-card flex fade-in';\r\n\r\n var _class = '';\r\n if (IsFavourited(card.id, ids)) {\r\n _class = 'active';\r\n }\r\n\r\n cardElement.innerHTML = `\r\n
    \r\n \"\"\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n \r\n\r\n
    \r\n

    ${card.title}

    \r\n
    \r\n \r\n
    \r\n

    ${eventCardSettings.dateFromText}

    \r\n

    ${formatDateString(card.start_Date)}

    \r\n
    \r\n\r\n
    \r\n

    ${eventCardSettings.dateToText}

    \r\n

    ${formatDateString(card.end_Date)}

    \r\n
    \r\n ${\r\n card.location !== ''\r\n ? `
    \r\n

    ${eventCardSettings.locationText}

    \r\n

    ${card.location}

    \r\n
    `\r\n : ''\r\n }\r\n
    \r\n
    \r\n `;\r\n\r\n events.appendChild(cardElement);\r\n });\r\n addEventCardListeners();\r\n };\r\n\r\n\r\n\r\n const addEventCardListeners = () => {\r\n const serviceListCards: NodeListOf = events.querySelectorAll('.events-card');\r\n\r\n if (serviceListCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.events-card__button');\r\n\r\n serviceListCards.forEach((card) => {\r\n card.addEventListener('click', (e) => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('favouriteButton')) {\r\n const t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n saveOrRemoveFavourite(t, id, button);\r\n ids = ids.filter((itemId) => itemId !== id);\r\n fetchCards();\r\n } else if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n } else if (button.classList.contains('calButton')) {\r\n addToCalendar(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n };\r\n\r\n // Listeners\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown?.value;\r\n pageNumber = 1;\r\n fetchCards();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchCards();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchCards();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchCards();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchCards();\r\n });\r\n\r\n const fetchCards = () => {\r\n if (currentType == 'event') {\r\n getEventCards();\r\n }\r\n };\r\n\r\n fetchEventCardSettings();\r\n await showSelectedItems(activeTab);\r\n};\r\n\r\ndocument.querySelectorAll('.favourites').forEach((favouritesComponent) => {\r\n initializeFavouritesComponent(favouritesComponent as HTMLElement);\r\n});\r\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport Glide from '@glidejs/glide';\r\n\r\nconst giftedCompetingList: HTMLDivElement = document.querySelector('.gifted-list');\r\n\r\nif (giftedCompetingList) {\r\n const giftedCompetingCarousels: NodeListOf = document.querySelectorAll('.gifted-list__carousel-inner');\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n\r\n if (giftedCompetingCarousels.length > 0) {\r\n giftedCompetingCarousels.forEach((item: HTMLElement) => {\r\n const glideSettings = {\r\n type: 'slider',\r\n perView: 1,\r\n gap: 0,\r\n rewind: true,\r\n bound: true,\r\n direction: direction || 'ltr',\r\n };\r\n\r\n const glide = new Glide(item, glideSettings);\r\n\r\n glide.mount();\r\n\r\n glide.on('move.after', () => {\r\n const bullets: NodeListOf = item.querySelectorAll('.glide__bullet');\r\n const currentIndex = glide.index;\r\n\r\n bullets.forEach((bullet, index) => {\r\n bullet.classList.remove('glide__bullet--active');\r\n\r\n bullet.addEventListener('click', (e) => {\r\n glide.go(`=${index}`);\r\n });\r\n });\r\n\r\n bullets[currentIndex].classList.add('glide__bullet--active');\r\n });\r\n });\r\n }\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}\r\n","import {\r\n FetchGiftedCompetingSubListPayload,\r\n FetchGiftedCompetingSubListResponse,\r\n GiftedSubListItem,\r\n FetchGiftedSubListColumnsNamesResponse,\r\n} from './giftedCompetingSubList.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst giftedSubListing = (document.querySelector('.gifted-sublist') as HTMLDivElement) || null;\r\n\r\nif (giftedSubListing) {\r\n const parentNodeId = giftedSubListing.getAttribute('data-id');\r\n const tableBody = giftedSubListing.querySelector('.gifted-sublist__table-body') as HTMLDivElement;\r\n const mobileTableBody = giftedSubListing.querySelector('.gifted-sublist__table-mobile-body') as HTMLDivElement;\r\n const nextPageButton = giftedSubListing.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = giftedSubListing.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = giftedSubListing.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = giftedSubListing.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = giftedSubListing.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = giftedSubListing.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = giftedSubListing.querySelectorAll('.sort-filter__input');\r\n const giftedSubListFilters = giftedSubListing.querySelector('.gifted-sublist__filters') as HTMLDivElement;\r\n const giftedSubListingSearchInput = giftedSubListing.querySelector(\r\n '.gifted-sublist__search-input'\r\n ) as HTMLInputElement;\r\n const dropdownFilters: NodeListOf = giftedSubListing.querySelectorAll('.dropdown-filter');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n const singleDropdown = giftedSubListing.querySelector('.single-select') as HTMLSelectElement | null;\r\n const singleDropdownPlaceholder = Number(singleDropdown.getAttribute('data-placeholder'));\r\n const singleDropdownFilterTrigger: HTMLDivElement = giftedSubListing.querySelector('.single-dropdown-filter__trigger');\r\n\r\n let giftedSubListItems: GiftedSubListItem[] = [];\r\n let keyword = '';\r\n let educationDepartments = [];\r\n let positions = [];\r\n let projectFields = [];\r\n let olympiadTypes = [];\r\n let year = singleDropdownPlaceholder;\r\n singleDropdownFilterTrigger.innerHTML = singleDropdownPlaceholder.toString();\r\n let sortBy = 1;\r\n let pageNumber = 1;\r\n let pageSize = +paginationDropdown.value;\r\n let totalPages = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage = false;\r\n let hasPreviousPage = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading = false;\r\n let clickedNumber = null;\r\n\r\n let giftedSubListColumnsNames: FetchGiftedSubListColumnsNamesResponse[] = [];\r\n\r\n const fetchGiftedSubListColumnsNames = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/giftedCompeting/columnsNames/${parentNodeId}?currentCulture=${currentCulture}`\r\n );\r\n\r\n giftedSubListColumnsNames = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchGiftedSubList = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchGiftedCompetingSubListPayload = {\r\n parentNodeId,\r\n keyword,\r\n educationDepartments,\r\n positions,\r\n projectFields,\r\n olympiadTypes,\r\n year,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/giftedCompeting/sublist',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post(\r\n '/api/giftedCompeting/sublist',\r\n payload\r\n );\r\n }\r\n giftedSubListItems = response.data.items;\r\n if (giftedSubListItems.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n giftedSubListItems,\r\n fetchGiftedSubList\r\n );\r\n isLoading = false;\r\n updateItems();\r\n enableInputs();\r\n createModals();\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n giftedSubListFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n giftedSubListFilters.classList.remove('disabled');\r\n };\r\n\r\n const updateItems = () => {\r\n tableBody.innerHTML = '';\r\n mobileTableBody.innerHTML = '';\r\n\r\n giftedSubListItems.forEach((item: GiftedSubListItem) => {\r\n const rowElement = document.createElement('tr');\r\n rowElement.className = 'gifted-sublist__table-row';\r\n\r\n rowElement.innerHTML = `\r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'student name')\r\n ? `\r\n \r\n ${\r\n item.studentImage !== null\r\n ? `\"student`\r\n : ''\r\n }\r\n ${item.studentName}\r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'speciality')\r\n ? `\r\n \r\n ${\r\n item.speciality !== null ? item.speciality : '-'\r\n }\r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'project field')\r\n ? `\r\n \r\n ${item.projectField}\r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'project title')\r\n ? `\r\n \r\n ${item.projectTitle}\r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'education department')\r\n ? `\r\n \r\n ${item.educationDepartment}\r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'grand prize')\r\n ? `\r\n \r\n \"icon\"\r\n ${item.position}\r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'special prize')\r\n ? `\r\n \r\n ${\r\n item.specialPrize !== null ? item.specialPrize : '-'\r\n }\r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n giftedSubListColumnsNames.some((item) => item.key.toLowerCase() === 'success story')\r\n ? `\r\n
    \r\n ${\r\n item.successStoryVideoLink !== ''\r\n ? `\r\n \r\n \r\n \r\n \r\n
    `\r\n : ''\r\n }\r\n \r\n `\r\n : ''\r\n }`;\r\n\r\n addMobileRow(item);\r\n\r\n tableBody.appendChild(rowElement);\r\n });\r\n };\r\n\r\n const addMobileRow = (item: GiftedSubListItem) => {\r\n const studentName = giftedSubListColumnsNames.find((item) => item.key.toLowerCase() === 'student name');\r\n const speciality = giftedSubListColumnsNames.find((item) => item.key.toLowerCase() === 'speciality');\r\n const projectField = giftedSubListColumnsNames.find((item) => item.key.toLowerCase() === 'project field');\r\n const projectTitle = giftedSubListColumnsNames.find((item) => item.key.toLowerCase() === 'project title');\r\n const educationDepartment = giftedSubListColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'education department',\r\n );\r\n const grandPrize = giftedSubListColumnsNames.find((item) => item.key.toLowerCase() === 'grand prize');\r\n const specialPrize = giftedSubListColumnsNames.find((item) => item.key.toLowerCase() === 'special prize');\r\n const successStory = giftedSubListColumnsNames.find((item) => item.key.toLowerCase() === 'success story');\r\n\r\n mobileTableBody.insertAdjacentHTML(\r\n 'beforeend',\r\n `\r\n ${\r\n studentName !== undefined\r\n ? `\r\n ${studentName.value}\r\n \r\n
    \r\n ${\r\n item.studentImage !== null\r\n ? `\"student`\r\n : ''\r\n }\r\n ${item.studentName}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n speciality !== undefined\r\n ? `\r\n ${speciality.value}\r\n \r\n
    \r\n ${\r\n item.speciality !== null ? item.speciality : '-'\r\n }\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n ${\r\n projectField !== undefined\r\n ? `\r\n ${projectField.value}\r\n \r\n
    \r\n ${item.projectField}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n projectTitle !== undefined\r\n ? `\r\n ${projectTitle.value}\r\n \r\n
    \r\n ${item.projectTitle}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n educationDepartment !== undefined\r\n ? `\r\n ${educationDepartment.value}\r\n \r\n
    \r\n ${item.educationDepartment}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n grandPrize !== undefined\r\n ? `\r\n ${grandPrize.value}\r\n \r\n
    \r\n \"alt\"\r\n ${item.position}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n specialPrize !== undefined\r\n ? `\r\n ${specialPrize.value}\r\n \r\n
    \r\n ${\r\n item.speciality !== null ? item.speciality : '-'\r\n }\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n successStory !== undefined\r\n ? `\r\n ${successStory.value}\r\n \r\n
    \r\n ${\r\n item.successStoryVideoLink !== ''\r\n ? `\r\n \r\n \r\n \r\n \r\n
    `\r\n : ''\r\n }\r\n \r\n \r\n `\r\n : ''\r\n }\r\n `\r\n );\r\n };\r\n\r\n const createModals = () => {\r\n const modals: NodeListOf = giftedSubListing.querySelectorAll('.modal');\r\n if (modals.length > 0) {\r\n modals?.forEach((modalContainer, index) => {\r\n const modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog) return;\r\n\r\n const modalId = `modal-${index}`;\r\n const openButtonId = `open-button-${index}`;\r\n\r\n modalDialog.id = modalId;\r\n const openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n\r\n const closeButton = modalDialog.querySelector('.modal__close');\r\n\r\n document.getElementById(openButtonId)?.addEventListener('click', (event) => {\r\n modalDialog.showModal();\r\n });\r\n\r\n closeButton?.addEventListener('click', (event) => {\r\n modalDialog.close();\r\n });\r\n\r\n modalDialog.addEventListener('click', (event) => {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n // Listeners\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchGiftedSubList();\r\n });\r\n\r\n singleDropdown.addEventListener('change', () => {\r\n const selected: HTMLSelectElement = singleDropdown.querySelector('option:checked');\r\n year = Number(selected.value);\r\n pageNumber = 1;\r\n fetchGiftedSubList();\r\n });\r\n\r\n singleDropdownFilterTrigger.addEventListener('keydown', (e) => {\r\n e.preventDefault();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchGiftedSubList();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchGiftedSubList();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchGiftedSubList();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchGiftedSubList();\r\n });\r\n\r\n let timeout = null;\r\n giftedSubListingSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = giftedSubListingSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchGiftedSubList();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Lowest\r\n // 2 = Highest\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = giftedSubListing.querySelector(\r\n 'input[name=\"sort-filter\"]:checked'\r\n ) as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchGiftedSubList();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const educationDepartmentsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n educationDepartmentsOptions.push(element.textContent);\r\n });\r\n educationDepartments = educationDepartmentsOptions;\r\n break;\r\n case 1:\r\n const positionsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n positionsOptions.push(element.textContent);\r\n });\r\n positions = positionsOptions;\r\n break;\r\n case 2:\r\n const projectFieldsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n projectFieldsOptions.push(element.textContent);\r\n });\r\n projectFields = projectFieldsOptions;\r\n break;\r\n case 3:\r\n const olympiadTypesOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n olympiadTypesOptions.push(element.textContent);\r\n });\r\n olympiadTypes = olympiadTypesOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchGiftedSubList();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n const initializeList = async () => {\r\n await fetchGiftedSubListColumnsNames();\r\n await fetchGiftedSubList();\r\n };\r\n\r\n // Call the initialize function\r\n initializeList();\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}\r\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n}","const hero: HTMLDivElement = document.querySelector(\".hero\");\r\n\r\nif (hero) {\r\n const slides: NodeListOf = hero.querySelectorAll(\".hero__slide\");\r\n const contents: NodeListOf = hero.querySelectorAll(\".hero__content\");\r\n const activeSlide = hero.querySelector(\".hero__slide--active\") as HTMLElement;\r\n const heroLeft = hero.querySelector(\".hero__left\") as HTMLElement;\r\n const heroDots: NodeListOf = hero.querySelectorAll(\".hero__dot\");\r\n let isTransitioning: boolean = false;\r\n const animationDuration: number = 1000;\r\n let activeIndex: number = 0;\r\n const animationTimer: number = +heroLeft.getAttribute(\"data-timer\") || 5000;\r\n\r\n // Swipe/Drag variables\r\n const minSwipeDistance: number = 30;\r\n let touchStartX: number = 0;\r\n let touchEndX: number = 0;\r\n let isMouseDown: boolean = false;\r\n\r\n const mountSlider = () => {\r\n const slides = Array.from(document.querySelectorAll(\".hero__slide\")) as HTMLImageElement[];\r\n const orders = Array(slides.length)\r\n .fill(null)\r\n .map((_, index) => `hero__slide-${index + 1}`);\r\n const slideCount = slides.length;\r\n\r\n slides.forEach((slide, index) => slide.classList.add(orders[index]));\r\n\r\n let activeIndex: number = 0;\r\n\r\n handleDots()\r\n\r\n const updateOrder = (activeIndex: number) => {\r\n slides.forEach((slide, index) => {\r\n const newOrderIndex = (index - activeIndex + slideCount) % slideCount;\r\n slide.className = orders[newOrderIndex] + \" hero__slide\";\r\n\r\n if (activeIndex === index) {\r\n slide.classList.add(\"hero__slide--active\")\r\n }\r\n });\r\n };\r\n\r\n const next = (): number => {\r\n activeIndex++;\r\n if (activeIndex === slideCount) activeIndex = 0;\r\n\r\n updateOrder(activeIndex);\r\n return activeIndex;\r\n };\r\n\r\n const prev = (): number => {\r\n activeIndex--;\r\n if (activeIndex === -1) activeIndex = slideCount - 1;\r\n\r\n updateOrder(activeIndex);\r\n return activeIndex;\r\n };\r\n\r\n return { next, prev, updateOrder };\r\n };\r\n\r\n const handleDots = () => {\r\n heroDots.forEach((dot, i: number) => {\r\n dot.classList.remove(\"hero__dot--active\")\r\n\r\n if (i === activeIndex) {\r\n dot.classList.add(\"hero__dot--active\")\r\n }\r\n })\r\n }\r\n\r\n const handleTouchStart = (event: TouchEvent) => {\r\n touchStartX = event.changedTouches[0].screenX;\r\n }\r\n\r\n const handleTouchMove = (event: TouchEvent) => {\r\n touchEndX = event.changedTouches[0].screenX;\r\n }\r\n\r\n const handleTouchEnd = () => {\r\n handleSwipeGesture();\r\n }\r\n\r\n const handleSwipeGesture = () => {\r\n const distance = touchEndX - touchStartX;\r\n\r\n if (isTransitioning) {\r\n return\r\n }\r\n\r\n if (Math.abs(distance) >= minSwipeDistance) {\r\n if (distance > 0) {\r\n activeIndex = next();\r\n handleDots()\r\n handleSlides()\r\n } else {\r\n activeIndex = prev();\r\n handleDots()\r\n handleSlides()\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n isTransitioning = false;\r\n }, animationDuration);\r\n }\r\n\r\n const handleMouseDown = (event: MouseEvent) => {\r\n touchStartX = event.screenX;\r\n isMouseDown = true;\r\n };\r\n\r\n const handleMouseMove = (event: MouseEvent) => {\r\n if (isMouseDown) {\r\n touchEndX = event.screenX;\r\n }\r\n };\r\n\r\n const handleMouseUp = () => {\r\n if (isMouseDown) {\r\n handleSwipeGesture();\r\n isMouseDown = false;\r\n }\r\n };\r\n\r\n const handleSlides = () => {\r\n if (isTransitioning) {\r\n return\r\n } else {\r\n isTransitioning = true;\r\n\r\n updateOrder(activeIndex)\r\n\r\n activeSlide.textContent = (activeIndex + 1).toString();\r\n\r\n contents.forEach(item => item.classList.add(\"hidden\"))\r\n contents[activeIndex].classList.remove(\"hidden\")\r\n\r\n handleDots()\r\n\r\n setTimeout(() => {\r\n isTransitioning = false;\r\n }, animationDuration);\r\n }\r\n }\r\n\r\n let interval: NodeJS.Timeout;\r\n\r\n const startInterval = () => {\r\n interval = setInterval(() => {\r\n activeIndex = next();\r\n handleSlides();\r\n }, animationTimer);\r\n };\r\n\r\n const resetInterval = () => {\r\n clearInterval(interval);\r\n startInterval();\r\n };\r\n\r\n const handleContentHeight = () => {\r\n const allContents: NodeListOf = hero.querySelectorAll(\".hero__content\");\r\n\r\n let tallestHeight = 0;\r\n\r\n allContents.forEach(content => {\r\n content.classList.remove(\"hidden\")\r\n const contentHeight = content.offsetHeight;\r\n\r\n if (contentHeight > tallestHeight) {\r\n tallestHeight = contentHeight;\r\n }\r\n });\r\n\r\n allContents.forEach(content => {\r\n content.style.height = `${tallestHeight}px`;\r\n content.classList.add(\"hidden\")\r\n });\r\n\r\n allContents[activeIndex].classList.remove(\"hidden\");\r\n };\r\n\r\n if (window.innerWidth < 768) {\r\n handleContentHeight()\r\n }\r\n\r\n const { next, prev, updateOrder } = mountSlider();\r\n\r\n heroDots.forEach((dot, index) => {\r\n const handleEvent = () => {\r\n activeIndex = index;\r\n handleSlides();\r\n updateOrder(activeIndex);\r\n handleDots();\r\n };\r\n\r\n dot.addEventListener(\"click\", () => {\r\n resetInterval();\r\n handleEvent()\r\n });\r\n dot.addEventListener(\"keydown\", (event) => {\r\n if (event.key === \"Enter\") {\r\n resetInterval();\r\n handleEvent();\r\n }\r\n });\r\n });\r\n\r\n heroLeft.addEventListener('touchstart', handleTouchStart, false);\r\n heroLeft.addEventListener('touchmove', handleTouchMove, false);\r\n heroLeft.addEventListener('touchend', () => {\r\n handleTouchEnd()\r\n resetInterval();\r\n }, false);\r\n\r\n heroLeft.addEventListener('mousedown', (e) => {\r\n handleMouseDown(e)\r\n resetInterval();\r\n });\r\n\r\n heroLeft.addEventListener('mousemove', (e) => {\r\n handleMouseMove(e)\r\n resetInterval();\r\n });\r\n\r\n heroLeft.addEventListener('mouseup', () => {\r\n handleMouseUp()\r\n resetInterval();\r\n });\r\n\r\n setTimeout(() => {\r\n slides.forEach(slide => {\r\n slide.classList.remove(\"no-transition\")\r\n })\r\n }, 100);\r\n\r\n startInterval();\r\n\r\n contents[activeIndex].classList.remove(\"hidden\")\r\n}","import { FetchIdentityListPayload, FetchIdentityListResponse, IdentityCard } from './identityList.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport axios from 'axios';\r\n\r\nconst identityList: HTMLDivElement = document.querySelector('.identity-list');\r\n\r\nif (identityList) {\r\n const identityGrid = identityList.querySelector('.identity-list__grid') as HTMLDivElement;\r\n const identityFilters = identityList.querySelector('.identity-list__search') as HTMLDivElement;\r\n const identityListSearchInput = identityList.querySelector('.identity-list__search-input') as HTMLInputElement;\r\n const dropdownFilters: NodeListOf = identityList.querySelectorAll('.dropdown-filter');\r\n const nextPageButton = identityList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = identityList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = identityList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = identityList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = identityList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = identityList.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = identityList.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let identityCards: IdentityCard[] = [];\r\n let keyword: string = '';\r\n let programs: string[] = [];\r\n let fileTypes: string[] = [];\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchIdentity = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchIdentityListPayload = {\r\n keyword,\r\n programs,\r\n fileTypes,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/identity',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/identity', payload);\r\n }\r\n identityCards = response.data.items;\r\n if (identityCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n identityCards,\r\n fetchIdentity\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n identityGrid.innerHTML = '';\r\n\r\n identityCards.forEach((card: IdentityCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.setAttribute('download', '');\r\n cardElement.className = 'fade-in';\r\n\r\n cardElement.innerHTML = `\r\n
    \r\n
    \r\n icon\r\n
    ${card.documentName}
    \r\n
    \r\n
    \r\n
    ${card.size}
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n `;\r\n\r\n identityGrid.appendChild(cardElement);\r\n });\r\n\r\n addCardListeners();\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n identityFilters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n identityFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchIdentity();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchIdentity();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchIdentity();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchIdentity();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchIdentity();\r\n });\r\n\r\n let timeout = null;\r\n identityListSearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = identityListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchIdentity();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = A-Z\r\n // 2 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = identityList.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchIdentity();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const fileTypesOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n fileTypesOptions.push(element.textContent);\r\n });\r\n fileTypes = fileTypesOptions;\r\n break;\r\n case 1:\r\n const programsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n programsOptions.push(element.textContent);\r\n });\r\n programs = programsOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchIdentity();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n fetchIdentity();\r\n\r\n const addCardListeners = () => {\r\n const serviceListCards: NodeListOf = identityGrid.querySelectorAll('.identity-list__card');\r\n\r\n if (serviceListCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.identity-list__button');\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}\r\n","import { FetchImagesGalleryPayload, FetchImagesGalleryResponse, ImageCard } from './imageGallery.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport insertPageView from '../../../helpers/InsertPageView';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport IsUserLoggedIn from '../../../helpers/isUserLoggedIn';\r\n\r\nconst imagesGallery: HTMLDivElement = document.querySelector('.image-gallery');\r\n\r\nif (imagesGallery) {\r\n const imagesGrid = imagesGallery.querySelector('.image-gallery__grid') as HTMLDivElement;\r\n const imagesFilters = imagesGallery.querySelector('.image-gallery__filters') as HTMLDivElement;\r\n const imagesGallerySearchInput = imagesGallery.querySelector('.image-gallery__search-input') as HTMLInputElement;\r\n const nextPageButton = imagesGallery.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = imagesGallery.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = imagesGallery.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = imagesGallery.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = imagesGallery.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = imagesGallery.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = imagesGallery.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const favouritedIds: number[] = JSON.parse(imagesGrid.getAttribute('data-ids'));\r\n\r\n let imagesCards: ImageCard[] = [];\r\n let keyword: string = '';\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchImagesGallery = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchImagesGalleryPayload = {\r\n keyword,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/imagesGallery',\r\n payload,\r\n );\r\n } else {\r\n response = await axios.post('/api/imagesGallery', payload);\r\n }\r\n imagesCards = response.data.items;\r\n if (imagesCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n imagesCards,\r\n fetchImagesGallery,\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n imagesGrid.innerHTML = '';\r\n\r\n imagesCards.forEach((card: ImageCard) => {\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'image-card flex flex--column';\r\n\r\n var _class = '';\r\n if (IsFavourited(card.id, favouritedIds)) {\r\n _class = 'active';\r\n }\r\n\r\n cardElement.innerHTML = `\r\n
    ${card.title}
    \r\n image\r\n
    \r\n \r\n \"download\r\n \r\n
    \r\n
    \r\n ${card.views}\r\n views icon\r\n
    \r\n ${\r\n IsUserLoggedIn()\r\n ? `\r\n \"heart\r\n `\r\n : ''\r\n }\r\n \r\n \r\n \"share\r\n \r\n \r\n
    \r\n
    \r\n `;\r\n imagesGrid.appendChild(cardElement);\r\n });\r\n\r\n addCardListeners();\r\n enableModals();\r\n };\r\n\r\n const enableModals = () => {\r\n const modals: NodeListOf = document.querySelectorAll('.modal');\r\n const html = document.querySelector('html') as HTMLHtmlElement;\r\n\r\n if (modals.length > 0) {\r\n modals?.forEach((modalContainer, index) => {\r\n const modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog) return;\r\n\r\n const modalId = `modal-${index}`;\r\n const openButtonId = `open-button-${index}`;\r\n\r\n modalDialog.id = modalId;\r\n const openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n\r\n const closeButton = modalDialog.querySelector('.modal__close');\r\n\r\n const pageId = parseInt(modalContainer.getAttribute('data-page-id'));\r\n document.getElementById(openButtonId)?.addEventListener('click', (event) => {\r\n modalDialog.showModal();\r\n html.style.overflow = 'hidden';\r\n if (pageId > 0) {\r\n insertPageView(pageId);\r\n }\r\n });\r\n\r\n closeButton?.addEventListener('click', (event) => {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n });\r\n\r\n modalDialog.addEventListener('click', (event) => {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n }\r\n });\r\n\r\n window.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n html.style.overflow = '';\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n imagesFilters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n imagesFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchImagesGallery();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchImagesGallery();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchImagesGallery();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchImagesGallery();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchImagesGallery();\r\n });\r\n\r\n let timeout = null;\r\n imagesGallerySearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = imagesGallerySearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchImagesGallery();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = latest\r\n // 2 = oldest\r\n // 3 = mostViewed\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = imagesGallery.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchImagesGallery();\r\n });\r\n });\r\n\r\n fetchImagesGallery();\r\n\r\n const addCardListeners = () => {\r\n const serviceListCards: NodeListOf = imagesGrid.querySelectorAll('.image-card');\r\n\r\n if (serviceListCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.image-card__button');\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('favouriteButton')) {\r\n const t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n saveOrRemoveFavourite(t, id, button);\r\n } else if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n","import { FetchInfoGalleryPayload, FetchInfoGalleryResponse, InfoCard } from './infographicsGallery.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport insertPageView from '../../../helpers/InsertPageView';\r\n\r\nconst infoGallery: HTMLDivElement = document.querySelector('.info-gallery');\r\n\r\nif (infoGallery) {\r\n const infoGrid = infoGallery.querySelector('.info-gallery__grid') as HTMLDivElement;\r\n const infoFilters = infoGallery.querySelector('.info-gallery__filters') as HTMLDivElement;\r\n const infoGallerySearchInput = infoGallery.querySelector('.info-gallery__search-input') as HTMLInputElement;\r\n const nextPageButton = infoGallery.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = infoGallery.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = infoGallery.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = infoGallery.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = infoGallery.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = infoGallery.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = infoGallery.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let infoCards: InfoCard[] = [];\r\n let keyword: string = '';\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchInfoGallery = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchInfoGalleryPayload = {\r\n keyword,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/infoGallery',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/infoGallery', payload);\r\n }\r\n infoCards = response.data.items;\r\n if (infoCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n infoCards,\r\n fetchInfoGallery\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n infoGrid.innerHTML = '';\r\n\r\n infoCards.forEach((card: InfoCard) => {\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'image-card flex flex--column';\r\n\r\n cardElement.innerHTML = `\r\n
    ${card.title}
    \r\n
    \r\n this is an alt\r\n \r\n
    \r\n
    \r\n \r\n \"download\r\n \r\n
    \r\n
    \r\n ${card.views}\r\n views icon\r\n
    \r\n \r\n
    \r\n
    \r\n `;\r\n\r\n // loop through and add child images\r\n const otherimages = cardElement.querySelector('.otherimages') as HTMLDivElement;\r\n\r\n card.otherImageURL?.forEach((otherImageLink) => {\r\n const childImageElement = document.createElement('div');\r\n childImageElement.className = 'modal__image-small-container';\r\n childImageElement.innerHTML = `\"this`;\r\n otherimages.appendChild(childImageElement);\r\n });\r\n\r\n infoGrid.appendChild(cardElement);\r\n });\r\n\r\n addCardListeners();\r\n enableModals();\r\n };\r\n\r\n const enableModals = () => {\r\n const modals: NodeListOf = document.querySelectorAll('.modal');\r\n const html = document.querySelector('html') as HTMLHtmlElement;\r\n\r\n if (modals.length > 0) {\r\n modals?.forEach((modalContainer, index) => {\r\n const modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog) return;\r\n\r\n const modalId = `modal-${index}`;\r\n const openButtonId = `open-button-${index}`;\r\n\r\n modalDialog.id = modalId;\r\n const openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n\r\n const closeButton = modalDialog.querySelector('.modal__close');\r\n\r\n const pageId = parseInt(modalContainer.getAttribute('data-page-id'));\r\n document.getElementById(openButtonId)?.addEventListener('click', (event) => {\r\n modalDialog.showModal();\r\n html.style.overflow = 'hidden';\r\n if (pageId > 0) {\r\n insertPageView(pageId);\r\n }\r\n });\r\n\r\n closeButton?.addEventListener('click', (event) => {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n });\r\n\r\n modalDialog.addEventListener('click', (event) => {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n }\r\n });\r\n\r\n window.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n html.style.overflow = '';\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n infoFilters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n infoFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchInfoGallery();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchInfoGallery();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchInfoGallery();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchInfoGallery();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchInfoGallery();\r\n });\r\n\r\n let timeout = null;\r\n infoGallerySearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = infoGallerySearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchInfoGallery();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = latest\r\n // 2 = oldest\r\n // 3 = mostViewed\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = infoGallery.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchInfoGallery();\r\n });\r\n });\r\n\r\n fetchInfoGallery();\r\n\r\n const addCardListeners = () => {\r\n const serviceListCards: NodeListOf = infoGrid.querySelectorAll('.image-card');\r\n\r\n if (serviceListCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.image-card__button');\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n","import saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport { ResultItem } from '../serviceResults/serviceResults.types';\r\nimport {\r\n FetchIsefWinnersStudentsListItemsPayload,\r\n FetchIsefWinnersStudentsListItemsResponse,\r\n FetchIsefWinnersStudentsTableColumnsNamesResponse,\r\n} from './isefComponent.types';\r\nimport axios from 'axios';\r\n\r\nconst isef = document.querySelector('.isef') as HTMLDivElement;\r\n\r\nif (isef) {\r\n const eventTabs: NodeListOf = isef.querySelectorAll('.isef__tab');\r\n const sections: NodeListOf = isef.querySelectorAll('.isef__section');\r\n const winnersSection: HTMLDivElement = isef.querySelector('.isef__mega-table-wrapper');\r\n let activeTab: number = 0;\r\n\r\n const resetTabs = () => {\r\n eventTabs.forEach((tab) => tab.classList.remove('isef__tab--active'));\r\n sections.forEach((tab) => tab.classList.remove('isef__section--active'));\r\n };\r\n\r\n eventTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n\r\n eventTabs[activeTab].classList.add('isef__tab--active');\r\n sections[activeTab].classList.add('isef__section--active');\r\n });\r\n });\r\n\r\n sections.forEach((section) => {\r\n const accordion = section.firstElementChild as HTMLDetailsElement;\r\n if (accordion != null) {\r\n if (accordion.classList.contains('isef__accordion')) {\r\n accordion.setAttribute('open', 'true');\r\n }\r\n const accordions = section.querySelectorAll('.isef__accordion') as NodeListOf;\r\n accordions.forEach((childAccordion) => {\r\n childAccordion.addEventListener('toggle', () => {\r\n if (childAccordion.open) {\r\n accordions.forEach((otherAccordion) => {\r\n if (otherAccordion !== childAccordion) {\r\n otherAccordion.removeAttribute('open');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n const favButtons: NodeListOf = document.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach((button) => {\r\n const dataIdAttr: string | null = button.getAttribute('data-id');\r\n const type: string | null = button.getAttribute('data-type');\r\n const favouritedIds: number[] = JSON.parse(button.getAttribute('data-ids'));\r\n\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n const dataId: number = parseInt(dataIdAttr);\r\n\r\n if (IsFavourited(dataId, favouritedIds)) {\r\n button.classList.add('active');\r\n } else {\r\n button.classList.remove('active');\r\n }\r\n\r\n button.addEventListener('click', (e) => {\r\n console.log('small button clicked - program details');\r\n saveOrRemoveFavourite(type, dataId, button);\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (winnersSection) {\r\n const studentsTableBody = isef.querySelector('.isef__mega-table-body') as HTMLDivElement;\r\n const studentsMobileTableBody = isef.querySelector('.isef__mega-table-mobile-body') as HTMLDivElement;\r\n const nextPageButton = isef.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = isef.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = isef.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = isef.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = isef.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = isef.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = isef.querySelectorAll('.sort-filter__input');\r\n const isefFilters = isef.querySelector('.isef__filters') as HTMLDivElement;\r\n const isefSearchInput = isef.querySelector('.isef__search-input') as HTMLInputElement;\r\n const dropdownFilters: NodeListOf = isef.querySelectorAll('.dropdown-filter');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const parentNodeId = winnersSection.getAttribute('data-id');\r\n\r\n let isefWinnersItems: ResultItem[] = [];\r\n let keyword = '';\r\n let educationDepartments = [];\r\n let positions = [];\r\n let years = [];\r\n let sortBy = 1;\r\n let pageNumber = 1;\r\n let pageSize = +paginationDropdown.value;\r\n let totalPages = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage = false;\r\n let hasPreviousPage = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading = false;\r\n let clickedNumber = null;\r\n\r\n let isefWinnersTableColumnsNames: FetchIsefWinnersStudentsTableColumnsNamesResponse[] = [];\r\n\r\n const fetchIsefWinnersTableColumnsNames = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/services/results/columnsNames/${parentNodeId}?currentCulture=${currentCulture}`\r\n );\r\n\r\n isefWinnersTableColumnsNames = response.data;\r\n console.log(isefWinnersTableColumnsNames);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchIsefWinnersResultsList = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchIsefWinnersStudentsListItemsPayload = {\r\n parentNodeId,\r\n keyword,\r\n educationDepartments,\r\n positions,\r\n years,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/services/results',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post(\r\n '/api/services/results',\r\n payload\r\n );\r\n }\r\n isefWinnersItems = response.data.items;\r\n if (isefWinnersItems.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n isefWinnersItems,\r\n fetchIsefWinnersResultsList\r\n );\r\n isLoading = false;\r\n updateItems();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n isefFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n isefFilters.classList.remove('disabled');\r\n };\r\n\r\n const updateItems = () => {\r\n studentsTableBody.innerHTML = '';\r\n studentsMobileTableBody.innerHTML = '';\r\n\r\n isefWinnersItems.forEach((item: ResultItem) => {\r\n const rowElement = document.createElement('tr');\r\n rowElement.className = 'isef__mega-table-row';\r\n\r\n rowElement.innerHTML = `\r\n ${\r\n isefWinnersTableColumnsNames.some((item) => item.key.toLowerCase() === 'student/team name')\r\n ? `\r\n
    \r\n
    \r\n ${item.students[0].name}\r\n
    \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n isefWinnersTableColumnsNames.some((item) => item.key.toLowerCase() === 'project title')\r\n ? `\r\n \r\n ${item.projectTitle}\r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n isefWinnersTableColumnsNames.some((item) => item.key.toLowerCase() === 'education department')\r\n ? `\r\n \r\n ${item.educationDepartment}\r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n isefWinnersTableColumnsNames.some((item) => item.key.toLowerCase() === 'school')\r\n ? `\r\n \r\n ${item.school}\r\n \r\n `\r\n : ''\r\n }\r\n ${\r\n isefWinnersTableColumnsNames.some((item) => item.key.toLowerCase() === 'search entity')\r\n ? `\r\n \r\n ${\r\n item.searchEntity !== null ? item.searchEntity : '-'\r\n }\r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n isefWinnersTableColumnsNames.some((item) => item.key.toLowerCase() === 'prize')\r\n ? `\r\n \r\n \"icon\"\r\n ${item.position}\r\n \r\n `\r\n : ''\r\n }`;\r\n\r\n var images = rowElement.querySelector('.isef__mega-table-images') as HTMLDivElement;\r\n\r\n if (images) {\r\n item.students\r\n .filter((std) => std.image !== null && std.image !== undefined && std.image !== '')\r\n .forEach((student) => {\r\n const imageItem = document.createElement('img');\r\n imageItem.alt = 'student image';\r\n imageItem.src = student.image;\r\n imageItem.classList.add('isef__mega-table-image');\r\n images.appendChild(imageItem);\r\n });\r\n }\r\n\r\n addMobileRow(item);\r\n\r\n studentsTableBody.appendChild(rowElement);\r\n });\r\n };\r\n\r\n const addMobileRow = (item: ResultItem) => {\r\n const studentName = isefWinnersTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'student/team name',\r\n );\r\n const projectTitle = isefWinnersTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'project title',\r\n );\r\n const educationDepartment = isefWinnersTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'education department',\r\n );\r\n const school = isefWinnersTableColumnsNames.find((item) => item.key.toLowerCase() === 'school');\r\n const searchEntity = isefWinnersTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'search entity'\r\n );\r\n const prize = isefWinnersTableColumnsNames.find((item) => item.key.toLowerCase() === 'prize');\r\n\r\n studentsMobileTableBody.insertAdjacentHTML(\r\n 'beforeend',\r\n `\r\n ${\r\n studentName !== undefined\r\n ? `\r\n ${studentName.value}\r\n \r\n
    \r\n
    \r\n ${item.students[0].name}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n projectTitle !== undefined\r\n ? `\r\n ${projectTitle.value}\r\n \r\n
    \r\n ${item.projectTitle}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n educationDepartment !== undefined\r\n ? `\r\n ${educationDepartment.value}\r\n \r\n
    \r\n ${item.educationDepartment}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n prize !== undefined\r\n ? `\r\n ${prize.value}\r\n \r\n
    \r\n \"alt\"\r\n ${item.position}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n school !== undefined\r\n ? `\r\n ${school.value}\r\n \r\n
    \r\n ${item.school}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n\r\n ${\r\n searchEntity !== undefined\r\n ? `\r\n ${searchEntity.value}\r\n \r\n
    \r\n ${\r\n item.searchEntity !== null ? item.searchEntity : '-'\r\n }\r\n
    \r\n \r\n `\r\n : ''\r\n }`\r\n );\r\n };\r\n\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchIsefWinnersResultsList();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchIsefWinnersResultsList();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchIsefWinnersResultsList();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchIsefWinnersResultsList();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchIsefWinnersResultsList();\r\n });\r\n\r\n let timeout = null;\r\n isefSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = isefSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchIsefWinnersResultsList();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Lowest\r\n // 2 = Highest\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = isef.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchIsefWinnersResultsList();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer =\r\n (dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement) || null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const educationDepartmentsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n educationDepartmentsOptions.push(element.textContent);\r\n });\r\n educationDepartments = educationDepartmentsOptions;\r\n break;\r\n case 1:\r\n const positionsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n positionsOptions.push(element.textContent);\r\n });\r\n positions = positionsOptions;\r\n break;\r\n case 2:\r\n const yearsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n yearsOptions.push(element.textContent);\r\n });\r\n years = yearsOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchIsefWinnersResultsList();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n fetchIsefWinnersTableColumnsNames();\r\n fetchIsefWinnersResultsList();\r\n }\r\n}\r\n","const jobCards: NodeListOf = document.querySelectorAll(\".job-card\");\r\n\r\nif (jobCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll(\".job-card__button\");\r\n\r\n jobCards.forEach(card => {\r\n card.addEventListener(\"click\", e => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains(\"button\") || target.classList.contains(\"button__image\")) {\r\n e.preventDefault()\r\n }\r\n });\r\n });\r\n\r\n cardButtons.forEach(button => {\r\n button.addEventListener(\"click\", e => {\r\n console.log(\"small button clicked\")\r\n })\r\n })\r\n}","import copyToClipboard from '../../../helpers/copyToClipboard';\r\nconst jobDetails: HTMLDivElement = document.querySelector('.job-details');\r\n\r\nif (jobDetails) {\r\n const tabs: NodeListOf = jobDetails.querySelectorAll('.job-details__tab');\r\n const tabContents: NodeListOf = jobDetails.querySelectorAll('.job-details__tab-content');\r\n const starsFill: HTMLDivElement = jobDetails.querySelector('.job-details__stars-fill');\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n\r\n let activeTabIndex: number = 0;\r\n tabContents[activeTabIndex].classList.remove('hidden');\r\n tabs[activeTabIndex].classList.add('job-details__tab--active');\r\n\r\n const resetTabs = () => {\r\n tabs.forEach((tab) => tab.classList.remove('job-details__tab--active'));\r\n tabContents.forEach((item) => item.classList.add('hidden'));\r\n };\r\n\r\n tabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n resetTabs();\r\n tab.classList.add('job-details__tab--active');\r\n activeTabIndex = index;\r\n tabContents[activeTabIndex].classList.remove('hidden');\r\n });\r\n });\r\n}\r\n\r\nconst shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n}","import { FetchJobCardSettingsResponse, FetchJobsListPayload, FetchJobsListResponse, JobCard } from './jobsList.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport axios from 'axios';\r\n\r\nconst jobsList: HTMLDivElement = document.querySelector('.jobs-list');\r\n\r\nif (jobsList) {\r\n const jobsGrid = jobsList.querySelector('.jobs-list__grid') as HTMLDivElement;\r\n const jobsFilters = jobsList.querySelector('.jobs-list__filters') as HTMLDivElement;\r\n const jobsListSearchInput = jobsList.querySelector('.jobs-list__search-input') as HTMLInputElement;\r\n const dropdownFilters: NodeListOf = jobsList.querySelectorAll('.dropdown-filter');\r\n const nextPageButton = jobsList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = jobsList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = jobsList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = jobsList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = jobsList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = jobsList.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = jobsList.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let jobCards: JobCard[] = [];\r\n let keyword: string = '';\r\n let departments: string[] = [];\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n let jobCardSettings: FetchJobCardSettingsResponse = {\r\n cardButtonText: '',\r\n availableText: '',\r\n endText: '',\r\n noJobsText: '',\r\n };\r\n\r\n const fetchJobCardSettings = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/jobs/cardsettings?currentCulture=${currentCulture}`\r\n );\r\n\r\n jobCardSettings = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchJobs = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchJobsListPayload = {\r\n keyword,\r\n departments,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/jobs',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/jobs', payload);\r\n }\r\n jobCards = response.data.items;\r\n if (jobCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n jobCards,\r\n fetchJobs\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n jobsGrid.innerHTML = '';\r\n\r\n if (jobCards.length === 0) {\r\n jobsGrid.innerHTML = `
    ${jobCardSettings.noJobsText}
    `;\r\n } else {\r\n jobCards.forEach((card: JobCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'job-card flex flex--column';\r\n\r\n cardElement.innerHTML = `\r\n ${\r\n card.isAvailable ? jobCardSettings.availableText : jobCardSettings.endText\r\n }\r\n
    \r\n

    ${card.title}

    \r\n

    ${card.description}

    \r\n
    \r\n
    \r\n

    \r\n calendar icon\r\n \r\n ${card.department}\r\n \r\n

    \r\n

    \r\n calendar icon\r\n \r\n ${formatDateString(card.publishDate)}\r\n \r\n

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n `;\r\n\r\n jobsGrid.appendChild(cardElement);\r\n });\r\n\r\n addCardListeners();\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n jobsFilters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n jobsFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchJobs();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchJobs();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchJobs();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchJobs();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchJobs();\r\n });\r\n\r\n let timeout = null;\r\n jobsListSearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = jobsListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchJobs();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = A-Z\r\n // 2 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = jobsList.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchJobs();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const departmentsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n departmentsOptions.push(element.textContent);\r\n });\r\n departments = departmentsOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchJobs();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n const initializeEventsList = async () => {\r\n await fetchJobCardSettings();\r\n await fetchJobs();\r\n };\r\n\r\n // Call the initialize function\r\n initializeEventsList();\r\n\r\n const addCardListeners = () => {\r\n const listCards: NodeListOf = jobsList.querySelectorAll('.job-card');\r\n\r\n if (listCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.job-card__button');\r\n\r\n listCards.forEach((card) => {\r\n card.addEventListener('click', (e) => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n","import Glide from '@glidejs/glide';\r\n\r\nconst latestNewsComponent: HTMLDivElement = document.querySelector(\".latest-news\");\r\n\r\nif (latestNewsComponent) {\r\n const latestNewsCarousels: NodeListOf = document.querySelectorAll(\".latest-news__carousel-inner\");\r\n const direction: string = document.querySelector(\"html\").getAttribute(\"dir\");\r\n\r\n if (latestNewsCarousels.length > 0) {\r\n const latestNewsCarouselsArray = Array.from(latestNewsCarousels) || []\r\n\r\n latestNewsCarouselsArray.forEach((item: HTMLElement) => {\r\n const glideSettings = {\r\n type: 'slider',\r\n perView: 3,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction || \"ltr\",\r\n breakpoints: {\r\n 1000: {\r\n perView: 2,\r\n gap: 16\r\n }\r\n }\r\n };\r\n\r\n const glide = new Glide(item, glideSettings);\r\n\r\n glide.mount()\r\n })\r\n }\r\n}","const mobileMenu = document.querySelector(\".menu-mobile__container\") as HTMLElement\r\n\r\nif (mobileMenu) {\r\n const mobileMenuIcon = mobileMenu.querySelector(\".menu-mobile__icon\") as HTMLElement\r\n const mobileMenuIconContainer = mobileMenu.querySelector(\".menu-mobile__icon-container\") as HTMLElement\r\n const mobileMenuButton = mobileMenu.querySelector(\".menu-mobile__icon-container\") as HTMLElement\r\n const mobileMenuOverlay = mobileMenu.querySelector(\".menu-mobile__overlay\") as HTMLElement\r\n const mobileMenuClose = mobileMenu.querySelector(\".menu-mobile__close\") as HTMLElement\r\n const accordions: NodeListOf = mobileMenu.querySelectorAll(\".menu-mobile__accordion\");\r\n const chevrons: NodeListOf = mobileMenu.querySelectorAll(\".menu-mobile__chevron\");\r\n const html = document.querySelector(\"html\") as HTMLElement\r\n const dir = document.querySelector(\"html\").getAttribute(\"dir\") as string;\r\n const title = mobileMenu.querySelector(\".menu-mobile__title\") as HTMLHeadingElement;\r\n\r\n const openMenu = () => {\r\n mobileMenuIcon.classList.add(\"menu-mobile__icon--open\")\r\n mobileMenuOverlay.classList.add(\"menu-mobile__overlay--active\")\r\n html.style.overflow = \"hidden\"\r\n }\r\n\r\n const closeMenu = () => {\r\n mobileMenuIcon.classList.remove(\"menu-mobile__icon--open\")\r\n mobileMenuOverlay.classList.remove(\"menu-mobile__overlay--active\")\r\n setTimeout(() => {\r\n closeAllAccordions()\r\n }, 500)\r\n html.style.overflow = \"auto\";\r\n }\r\n\r\n const closeAllAccordions = () => {\r\n accordions.forEach(acc => {\r\n const pan = acc.nextElementSibling as HTMLDivElement;\r\n pan.style.maxHeight = \"\";\r\n pan.classList.remove(\"menu-mobile__accordion-panel--active\");\r\n acc.classList.remove(\"menu-mobile__accordion--active\");\r\n });\r\n }\r\n\r\n const handleAccordionClick = (element) => {\r\n const panel = element.nextElementSibling as HTMLDivElement;\r\n const isActive = element.classList.contains(\"menu-mobile__accordion--active\");\r\n\r\n closeAllAccordions()\r\n\r\n if (!isActive) {\r\n panel.classList.add(\"menu-mobile__accordion-panel--active\");\r\n panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n element.classList.add(\"menu-mobile__accordion--active\");\r\n }\r\n };\r\n\r\n mobileMenuIconContainer.addEventListener(\"click\", e => {\r\n if (mobileMenuIcon.classList.contains(\"menu-mobile__icon--open\")) {\r\n closeMenu()\r\n } else {\r\n openMenu()\r\n }\r\n })\r\n\r\n mobileMenuButton.addEventListener(\"keydown\", e => {\r\n if (e.key === \"Enter\") {\r\n if (mobileMenuIcon.classList.contains(\"menu-mobile__icon--open\")) {\r\n closeMenu()\r\n } else {\r\n openMenu()\r\n }\r\n }\r\n })\r\n\r\n mobileMenuOverlay.addEventListener(\"keydown\", e => {\r\n if (e.key === \"Escape\") {\r\n closeMenu()\r\n }\r\n })\r\n\r\n mobileMenuOverlay.addEventListener(\"click\", e => {\r\n const targetElement = e.target as HTMLElement;\r\n\r\n if (targetElement.className === \"menu-mobile__overlay menu-mobile__overlay--active\") {\r\n closeMenu()\r\n }\r\n })\r\n\r\n chevrons.forEach((chevron) => {\r\n chevron.addEventListener(\"keydown\", (e) => {\r\n\r\n if (e.key === \"Enter\") {\r\n handleAccordionClick(chevron.parentElement)\r\n }\r\n })\r\n })\r\n\r\n mobileMenuClose.addEventListener(\"click\", e => {\r\n closeMenu()\r\n })\r\n\r\n mobileMenuClose.addEventListener(\"keydown\", e => {\r\n if (e.key === \"Enter\") {\r\n closeMenu()\r\n }\r\n })\r\n\r\n accordions.forEach((accordion) => {\r\n accordion.addEventListener(\"click\", function (this: HTMLElement) {\r\n if (this.nextElementSibling.classList.contains(\"menu-mobile__accordion-panel\")) {\r\n handleAccordionClick(this)\r\n }\r\n });\r\n });\r\n}","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst methodology: HTMLDivElement = document.querySelector('.methodology');\r\n\r\nif (methodology) {\r\n const shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\n\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n })\r\n }\r\n}","import axios from 'axios';\r\nimport insertPageView from '../../../helpers/InsertPageView';\r\n\r\nconst modals: NodeListOf = document.querySelectorAll('.modal');\r\nconst html = document.querySelector('html') as HTMLHtmlElement;\r\n\r\nif (modals.length > 0) {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n modals?.forEach((modalContainer, index) => {\r\n const modalDialog = modalContainer.querySelector('dialog');\r\n if (!modalDialog) return;\r\n\r\n const modalId = `modal-${index}`;\r\n const openButtonId = `open-button-${index}`;\r\n\r\n modalDialog.id = modalId;\r\n const openButton = modalContainer.querySelector('.modal__open');\r\n if (openButton) {\r\n openButton.id = openButtonId;\r\n }\r\n\r\n const closeButton = modalDialog.querySelector('.modal__close');\r\n const pageId = parseInt(modalContainer.getAttribute('data-page-id'));\r\n\r\n document.getElementById(openButtonId)?.addEventListener('click', (event) => {\r\n modalDialog.showModal();\r\n if (pageId > 0) {\r\n insertPageView(pageId);\r\n }\r\n html.style.overflow = 'hidden';\r\n });\r\n\r\n closeButton?.addEventListener('click', (event) => {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n });\r\n\r\n modalDialog.addEventListener('click', (event) => {\r\n if (event.target === modalDialog) {\r\n modalDialog.close();\r\n html.style.overflow = '';\r\n }\r\n });\r\n\r\n window.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n html.style.overflow = '';\r\n }\r\n });\r\n });\r\n });\r\n}\r\n","import {\r\n ServiceCard,\r\n FetchServiceCardSettingsResponse,\r\n FetchServicesListingResponse,\r\n FetchServicesListingPayload,\r\n} from './navbarFavourites.types';\r\nimport axios from 'axios';\r\n\r\nconst initializeFavouritesNavComponent = (favouritesTabComponent: HTMLElement) => {\r\n const favouritesTabs: NodeListOf = favouritesTabComponent.querySelectorAll('.nav-favourites__tab');\r\n const services = favouritesTabComponent.querySelector('.nav-favourites__content_services') as HTMLElement;\r\n const others = favouritesTabComponent.querySelector('.nav-favourites__content_other') as HTMLElement;\r\n\r\n const favouritesContents: NodeListOf =\r\n favouritesTabComponent.querySelectorAll('.nav-favourites__content');\r\n let activeTab = 0;\r\n let currentType: string = '@event';\r\n let isLoading: boolean = false;\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n // let otherCards: OtherCard[] = [];\r\n let servicesCards: ServiceCard[] = [];\r\n let ids: number[] = [];\r\n\r\n if (favouritesTabComponent) {\r\n const favouritesButton = favouritesTabComponent.querySelector('.nav-favourites__button') as HTMLButtonElement;\r\n\r\n const hasFavourites = favouritesTabComponent.getAttribute('data-has-favourites')?.trim().toLowerCase();\r\n\r\n if (hasFavourites === 'true') {\r\n favouritesButton.classList.add('active');\r\n }\r\n\r\n const openFavouriteDropdown = () => {\r\n favouritesButton.nextElementSibling.classList.add('nav-favourites__inner--active');\r\n showSelectedTab(activeTab);\r\n };\r\n const closeFavouriteDropdown = () => {\r\n favouritesButton.nextElementSibling.classList.remove('nav-favourites__inner--active');\r\n };\r\n\r\n window.addEventListener('click', (event: MouseEvent) => {\r\n const targetElement = favouritesTabComponent.querySelector('.nav-favourites__inner');\r\n let clickedElement = event.target as Element;\r\n\r\n if (clickedElement.classList.contains('nav-favourites__button')) {\r\n if (clickedElement.nextElementSibling.classList.contains('nav-favourites__inner--active')) {\r\n closeFavouriteDropdown();\r\n } else {\r\n openFavouriteDropdown();\r\n }\r\n return;\r\n }\r\n\r\n if (!targetElement) return;\r\n\r\n while (clickedElement) {\r\n if (clickedElement === targetElement) {\r\n favouritesButton.nextElementSibling.classList.add('nav-favourites__inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n\r\n favouritesButton.nextElementSibling.classList.remove('nav-favourites__inner--active');\r\n });\r\n\r\n window.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n closeFavouriteDropdown();\r\n }\r\n });\r\n\r\n const showSelectedTab = (activeTab: number) => {\r\n favouritesTabs.forEach((tab, index) => {\r\n tab.classList.remove('nav-favourites__tab--active');\r\n favouritesContents[index].style.display = 'none';\r\n });\r\n\r\n const selectedTab = favouritesTabs[activeTab];\r\n\r\n selectedTab.classList.add('nav-favourites__tab--active');\r\n favouritesContents[activeTab].style.display = 'block';\r\n\r\n currentType = selectedTab.getAttribute('data-type');\r\n\r\n ids = JSON.parse(selectedTab.getAttribute('data-ids'));\r\n if (currentType == 'other') {\r\n getOtherCards();\r\n } else if (currentType == 'service') {\r\n getServiceCards();\r\n }\r\n };\r\n\r\n const handleTabClick = (index: number) => {\r\n activeTab = index;\r\n showSelectedTab(activeTab);\r\n };\r\n\r\n favouritesTabs.forEach((tab, index) => {\r\n tab.addEventListener('click', () => handleTabClick(index));\r\n });\r\n\r\n const getServiceCards = async () => {\r\n if (ids.length > 0) {\r\n const payload: FetchServicesListingPayload = {\r\n sortBy: 1,\r\n pageNumber: 1,\r\n pageSize: 3,\r\n currentCulture,\r\n ids,\r\n };\r\n\r\n isLoading = true;\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/events/byids',\r\n payload,\r\n );\r\n } else {\r\n response = await axios.post('/api/events/byids', payload);\r\n }\r\n servicesCards = response.data.items;\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n isLoading = false;\r\n updateServiceCards();\r\n }\r\n } else {\r\n // TODO - GET THIS TEXT\r\n //services.innerHTML = ``;\r\n }\r\n };\r\n\r\n const getOtherCards = async () => { };\r\n\r\n const updateServiceCards = () => {\r\n services.innerHTML = '';\r\n\r\n servicesCards.forEach((card: ServiceCard) => {\r\n const cardElement = document.createElement('a');\r\n cardElement.className = 'nav-favourites__item flex flex--align-center flex--justify-between';\r\n cardElement.setAttribute('href', card.link);\r\n\r\n cardElement.innerHTML = `\r\n \r\n \"arrow\r\n `;\r\n\r\n services.appendChild(cardElement);\r\n });\r\n };\r\n\r\n showSelectedTab(activeTab);\r\n }\r\n};\r\n\r\ndocument.querySelectorAll('.nav-favourites__wrapper').forEach((favouritesTabComponent) => {\r\n initializeFavouritesNavComponent(favouritesTabComponent as HTMLElement);\r\n});\r\n","const navbar: HTMLHeadElement = document.querySelector('.navbar');\r\n\r\nif (navbar) {\r\n const searchButton = navbar.querySelector('.navbar__button-search') as HTMLButtonElement;\r\n const linkItems: NodeListOf = navbar.querySelectorAll('.navbar__links-drop');\r\n const searchInput = navbar.querySelector('.navbar__button-search-input') as HTMLInputElement;\r\n\r\n const checkScrollPosition = () => {\r\n if (window.scrollY === 0) {\r\n navbar.classList.remove('navbar--sticky');\r\n } else {\r\n navbar.classList.add('navbar--sticky');\r\n }\r\n };\r\n\r\n const openSearchDropdown = () => {\r\n searchButton.nextElementSibling.classList.add('navbar__button-search-inner--active');\r\n };\r\n\r\n const closeSearchDropdown = () => {\r\n searchButton.nextElementSibling.classList.remove('navbar__button-search-inner--active');\r\n };\r\n\r\n\r\n\r\n linkItems.forEach((link) => {\r\n const href: string = link.getAttribute('data-url');\r\n\r\n link.addEventListener('click', () => {\r\n if (href) {\r\n window.location.href = href;\r\n }\r\n });\r\n\r\n link.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter' && href) {\r\n window.location.href = href;\r\n }\r\n });\r\n });\r\n\r\n window.addEventListener('click', (event: MouseEvent) => {\r\n const targetElement = navbar.querySelector('.navbar__button-search-inner');\r\n let clickedElement = event.target as Element;\r\n\r\n if (clickedElement.classList.contains('navbar__button-search')) {\r\n if (clickedElement.nextElementSibling.classList.contains('navbar__button-search-inner--active')) {\r\n closeSearchDropdown();\r\n } else {\r\n openSearchDropdown();\r\n }\r\n return;\r\n }\r\n\r\n if (!targetElement) return;\r\n\r\n while (clickedElement) {\r\n if (clickedElement === targetElement) {\r\n searchButton.nextElementSibling.classList.add('navbar__button-search-inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n\r\n searchButton.nextElementSibling.classList.remove('navbar__button-search-inner--active');\r\n });\r\n\r\n window.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n closeSearchDropdown();\r\n }\r\n });\r\n\r\n window.addEventListener('scroll', checkScrollPosition);\r\n\r\n checkScrollPosition();\r\n}\r\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst newsDetails: HTMLDivElement = document.querySelector('.news-details__wrapper');\r\n\r\nif (newsDetails) {\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}\r\n","import {\r\n FetchNewsListPayload,\r\n FetchNewsListResponse,\r\n NewsListCard,\r\n FetchNewsCardSettingsResponse,\r\n} from './newsList.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\n\r\nconst newsList: HTMLDivElement = document.querySelector('.news-list');\r\n\r\nif (newsList) {\r\n const Grid = newsList.querySelector('.news-list__grid') as HTMLDivElement;\r\n const Filters = newsList.querySelector('.news-list__search') as HTMLDivElement;\r\n const ListSearchInput = newsList.querySelector('.news-list__search-input') as HTMLInputElement;\r\n const DateFrom = newsList.querySelector('.date-range__input-from') as HTMLInputElement;\r\n const DateTo = newsList.querySelector('.date-range__input-to') as HTMLInputElement;\r\n const nextPageButton = newsList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = newsList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = newsList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = newsList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = newsList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = newsList.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = newsList.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const dropdownFilters: NodeListOf = newsList.querySelectorAll('.dropdown-filter');\r\n\r\n let newsCards: NewsListCard[] = [];\r\n let keyword: string = '';\r\n let dateFrom: string = '';\r\n let dateTo: string = '';\r\n let userTypes: string[] = [];\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n let newsCardSettings: FetchNewsCardSettingsResponse = {\r\n Text: '',\r\n };\r\n\r\n // Functions\r\n const fetchNewsCardSettings = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/news/cardsettings?currentCulture=${currentCulture}`\r\n );\r\n\r\n newsCardSettings = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchNews = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchNewsListPayload = {\r\n keyword,\r\n dateFrom,\r\n dateTo,\r\n userTypes,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/news',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/news', payload);\r\n }\r\n newsCards = response.data.items;\r\n if (newsCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n newsCards,\r\n fetchNews\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n Grid.innerHTML = '';\r\n\r\n newsCards.forEach((card: NewsListCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'news__card flex flex--column';\r\n\r\n cardElement.innerHTML = ` \r\n ${card.title}\r\n

    ${card.title}

    \r\n

    \r\n calendar icon\r\n \r\n ${formatDateString(card.date)}\r\n \r\n

    \r\n `;\r\n\r\n Grid.appendChild(cardElement);\r\n });\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n Filters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n Filters.classList.remove('disabled');\r\n };\r\n\r\n // Listeners\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchNews();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchNews();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchNews();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchNews();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchNews();\r\n });\r\n\r\n let timeout = null;\r\n ListSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = ListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchNews();\r\n }, 1000);\r\n });\r\n\r\n DateFrom.addEventListener('change', () => {\r\n dateFrom = DateFrom.value;\r\n fetchNews();\r\n });\r\n\r\n DateTo.addEventListener('change', () => {\r\n dateTo = DateTo.value;\r\n fetchNews();\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Latest\r\n // 2 = A-Z\r\n // 3 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = newsList.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchNews();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const userTypesOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n userTypesOptions.push(element.textContent);\r\n });\r\n userTypes = userTypesOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchNews();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n \r\n const initializeEventsList = async () => {\r\n await fetchNewsCardSettings();\r\n await fetchNews();\r\n };\r\n\r\n // Call the initialize function\r\n initializeEventsList();\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n }\r\n}\r\n","// const paginationComponent = document.querySelector(\".pagination\");\r\n\r\nconst direction: string = document.querySelector('html').getAttribute('dir');\r\nconst nextPageButton = document.querySelector('.pagination__page-next') as HTMLButtonElement;\r\nconst prevPageButton = document.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\nconst paginationMultiEnd = document.querySelector('.pagination__page-multi-end') as HTMLSelectElement;\r\nconst paginationMultiStart = document.querySelector('.pagination__page-multi-start') as HTMLSelectElement;\r\nconst paginationLast = document.querySelector('.pagination__page-last') as HTMLSelectElement;\r\nconst paginationFirst = document.querySelector('.pagination__page-first') as HTMLSelectElement;\r\nconst paginationCurrent = document.querySelector('.pagination__current') as HTMLParagraphElement;\r\nconst paginationTotal = document.querySelector('.pagination__total') as HTMLParagraphElement;\r\n\r\nlet hasPreviousPage: boolean;\r\nlet hasNextPage: boolean;\r\nlet totalPages: number;\r\nlet pageNumber: number;\r\nlet totalCount: number;\r\nlet buttonsToShow: number = 3;\r\nlet pageCards = [];\r\nlet buttons = [];\r\nlet fetchEvents = null;\r\n\r\nconst getPages = (): number[] => {\r\n const startPage = pageNumber === 1 ? 1 : pageNumber - 1;\r\n return Array.from({ length: buttonsToShow }, (_, i) => startPage + i).filter((page) => page <= totalPages);\r\n};\r\n\r\nconst removeOldButtons = () => {\r\n const oldButtons: NodeListOf = document.querySelectorAll('.pagination__page-number');\r\n oldButtons.forEach((button) => button.remove());\r\n};\r\n\r\nconst setPage = (page: number): void => {\r\n if (page < 1 || page > totalPages) return;\r\n\r\n removeOldButtons();\r\n pageNumber = page;\r\n createPaginationButtons();\r\n fetchEvents(pageNumber);\r\n};\r\n\r\nconst updatePaginationButtons = (\r\n tot: number,\r\n hasPrevPage: boolean,\r\n hasNext: boolean,\r\n pageNum: number,\r\n pageSize: number,\r\n total: number,\r\n totButtons: number,\r\n cards,\r\n fetchResults: Function,\r\n) => {\r\n hasPreviousPage = hasPrevPage;\r\n hasNextPage = hasNext;\r\n totalPages = tot;\r\n pageNumber = pageNum;\r\n totalCount = total;\r\n buttonsToShow = totButtons;\r\n pageCards = cards;\r\n fetchEvents = fetchResults;\r\n\r\n removeOldButtons();\r\n\r\n if (hasPreviousPage) {\r\n prevPageButton?.removeAttribute('disabled');\r\n } else {\r\n prevPageButton?.setAttribute('disabled', 'true');\r\n }\r\n\r\n if (hasNextPage) {\r\n nextPageButton?.removeAttribute('disabled');\r\n } else {\r\n nextPageButton?.setAttribute('disabled', 'true');\r\n }\r\n\r\n paginationLast.textContent = totalPages.toString();\r\n const offset = (pageNumber - 1) * pageSize + 1;\r\n const end = Math.min((pageNumber - 1) * pageSize + pageSize, totalCount);\r\n\r\n if (direction == 'rtl') {\r\n paginationCurrent.textContent = end.toString() + '-' + offset.toString();\r\n } else {\r\n paginationCurrent.textContent = offset.toString() + '-' + end.toString();\r\n }\r\n\r\n paginationTotal.textContent = totalCount.toString();\r\n\r\n createPaginationButtons();\r\n};\r\n\r\nconst createPaginationButtons = (): void => {\r\n const pages = getPages();\r\n\r\n buttons = [];\r\n pages.forEach((page, i) => {\r\n const button = document.createElement('button');\r\n button.className = 'pagination__page pagination__page-number flex flex--align-center flex--justify-center';\r\n if (pageNumber === page) {\r\n button.classList.add('pagination__page--active');\r\n }\r\n button.textContent = page.toString();\r\n if (page === pageNumber) {\r\n button.classList.add('active');\r\n }\r\n\r\n button.addEventListener('click', () => setPage(page));\r\n\r\n buttons.push(button);\r\n });\r\n\r\n buttons.reverse().forEach((button) => {\r\n paginationMultiStart.insertAdjacentElement('afterend', button);\r\n });\r\n\r\n if (pageNumber === totalPages) {\r\n paginationMultiEnd.classList.add('hidden');\r\n paginationLast.classList.add('hidden');\r\n } else {\r\n paginationMultiEnd.classList.remove('hidden');\r\n paginationLast.classList.remove('hidden');\r\n }\r\n\r\n if (pageNumber > 2) {\r\n paginationFirst.classList.remove('hidden');\r\n paginationMultiStart.classList.remove('hidden');\r\n } else {\r\n paginationFirst.classList.add('hidden');\r\n paginationMultiStart.classList.add('hidden');\r\n }\r\n\r\n if (pageNumber === 1 && totalCount === 0) {\r\n paginationMultiEnd.classList.add('hidden');\r\n paginationLast.classList.add('disabled');\r\n paginationLast.classList.add('pagination__page--active');\r\n paginationLast.textContent = '1';\r\n }\r\n\r\n buttons.forEach((button) => {\r\n if (paginationLast.textContent === button.textContent) {\r\n paginationLast.classList.add('hidden');\r\n paginationMultiEnd.classList.add('hidden');\r\n }\r\n });\r\n};\r\n\r\nexport { getPages, removeOldButtons, setPage, updatePaginationButtons, createPaginationButtons };\r\n","import Glide from '@glidejs/glide';\r\n\r\nconst partnersComponent: HTMLDivElement = document.querySelector('.partners');\r\n\r\nif (partnersComponent) {\r\n const partnersCarousels: NodeListOf = partnersComponent.querySelectorAll('.partners__carousel-inner');\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n const partnersTabs: NodeListOf = partnersComponent.querySelectorAll('.partners__tab');\r\n const partnersCarouselsContainer: NodeListOf =\r\n partnersComponent.querySelectorAll('.partners__carousel');\r\n let activeTab: number = 0;\r\n\r\n if (partnersCarousels.length > 0) {\r\n const partnersCarouselsArray = Array.from(partnersCarousels) || [];\r\n\r\n partnersCarouselsArray.forEach((item: HTMLElement) => {\r\n const glideSettings = {\r\n type: 'slider',\r\n perView: 4,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n hoverpause: true,\r\n direction: direction || 'ltr',\r\n breakpoints: {\r\n 1400: {\r\n perView: 4,\r\n },\r\n 1100: {\r\n perView: 3,\r\n gap: 16,\r\n },\r\n },\r\n };\r\n\r\n const glide = new Glide(item, glideSettings);\r\n\r\n glide.mount();\r\n });\r\n }\r\n\r\n const resetAll = () => {\r\n partnersCarouselsContainer.forEach((carousel) => carousel.classList.remove('partners__carousel--active'));\r\n partnersTabs.forEach((tab) => tab.classList.remove('partners__tab--active'));\r\n };\r\n\r\n const showActiveItems = (activeTabNum: number) => {\r\n resetAll();\r\n partnersTabs[activeTabNum].classList.add('partners__tab--active');\r\n partnersCarouselsContainer[activeTabNum].classList.add('partners__carousel--active');\r\n };\r\n\r\n partnersTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n showActiveItems(activeTab);\r\n });\r\n });\r\n\r\n showActiveItems(activeTab);\r\n}\r\n","const peopleComponent = document.querySelector(\".people__wrapper\") as HTMLDivElement;\r\n\r\nif (peopleComponent) {\r\n const peopleCards: NodeListOf = peopleComponent.querySelectorAll(\".people__image-container\");\r\n\r\n peopleCards.forEach(card => {\r\n card.addEventListener(\"click\", () => {\r\n card.classList.toggle(\"people__image-container--active\");\r\n })\r\n })\r\n}","const policies = document.querySelector('.policies') as HTMLDivElement;\r\n\r\nif (policies) {\r\n const policiesTabs: NodeListOf = policies.querySelectorAll('.policies__tab');\r\n const policiesSections: NodeListOf = policies.querySelectorAll('.policies__section');\r\n\r\n let activeTab: number = 0;\r\n\r\n const resetTabs = () => {\r\n policiesTabs.forEach((tab) => tab.classList.remove('policies__tab--active'));\r\n policiesSections.forEach((item) => item.classList.add('hidden'));\r\n };\r\n\r\n policiesTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n policiesTabs[activeTab].classList.add('policies__tab--active');\r\n policiesSections[activeTab].classList.remove('hidden');\r\n });\r\n });\r\n}\r\n","import Glide from '@glidejs/glide';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport addToCalendar from '../../../helpers/addToCalendar';\r\n\r\nconst programDetails = document.querySelector('.program-details') as HTMLDivElement;\r\n\r\nif (programDetails) {\r\n const eventTabs: NodeListOf = programDetails.querySelectorAll('.program-details__tab');\r\n const sections: NodeListOf = programDetails.querySelectorAll('.program-details__section');\r\n const programDetailsCarousels: NodeListOf = programDetails.querySelectorAll(\r\n '.program-details__carousel-inner',\r\n );\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n\r\n let activeTab: number = 0;\r\n\r\n const resetTabs = () => {\r\n eventTabs.forEach((tab) => tab.classList.remove('program-details__tab--active'));\r\n sections.forEach((tab) => tab.classList.remove('program-details__section--active'));\r\n };\r\n\r\n eventTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n\r\n eventTabs[activeTab].classList.add('program-details__tab--active');\r\n sections[activeTab].classList.add('program-details__section--active');\r\n });\r\n });\r\n\r\n sections.forEach((section) => {\r\n const accordion = section.firstElementChild as HTMLDetailsElement;\r\n if (accordion != null) {\r\n if (accordion.classList.contains('program-details__accordion')) {\r\n accordion.setAttribute('open', 'true');\r\n }\r\n }\r\n\r\n const accordions = section.querySelectorAll('.program-details__accordion') as NodeListOf;\r\n accordions.forEach((childAccordion) => {\r\n childAccordion.addEventListener('toggle', () => {\r\n if (childAccordion.open) {\r\n accordions.forEach((otherAccordion) => {\r\n if (otherAccordion !== childAccordion) {\r\n otherAccordion.removeAttribute('open');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n if (programDetailsCarousels.length > 0) {\r\n programDetailsCarousels.forEach((item: HTMLElement) => {\r\n const carouselType: string = item.getAttribute('data-carousel');\r\n\r\n let glideSettings;\r\n\r\n if (carouselType === 'events-carousel') {\r\n glideSettings = {\r\n type: 'slider',\r\n perView: 2,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction || 'ltr',\r\n breakpoints: {\r\n 480: {\r\n perView: 1,\r\n },\r\n },\r\n };\r\n } else if (carouselType === 'programs-carousel') {\r\n glideSettings = {\r\n type: 'slider',\r\n perView: 4,\r\n gap: 24,\r\n rewind: true,\r\n bound: true,\r\n direction: direction || 'ltr',\r\n breakpoints: {\r\n 1200: {\r\n perView: 3,\r\n },\r\n 992: {\r\n perView: 2,\r\n },\r\n 480: {\r\n perView: 1,\r\n },\r\n },\r\n };\r\n }\r\n\r\n const glide = new Glide(item, glideSettings);\r\n\r\n glide.mount();\r\n });\r\n }\r\n\r\n const favButtons: NodeListOf = document.querySelectorAll('.favouriteButton');\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach((button) => {\r\n const dataIdAttr: string | null = button.getAttribute('data-id');\r\n const type: string | null = button.getAttribute('data-type');\r\n const favouritedIds: number[] = JSON.parse(button.getAttribute('data-ids'));\r\n\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n const dataId: number = parseInt(dataIdAttr);\r\n\r\n if (IsFavourited(dataId, favouritedIds)) {\r\n button.classList.add('active');\r\n } else {\r\n button.classList.remove('active');\r\n }\r\n\r\n button.addEventListener('click', (e) => {\r\n console.log('small button clicked - program details');\r\n saveOrRemoveFavourite(type, dataId, button);\r\n });\r\n }\r\n });\r\n }\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n\r\n const calButtons: NodeListOf = document.querySelectorAll('.calButton');\r\n if (calButtons && calButtons.length > 0) {\r\n calButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n addToCalendar(button);\r\n });\r\n });\r\n }\r\n}\r\n","const initializeProgramStatsComponent = (webStatsComponent: HTMLElement) => {\r\n const programStatsTabs: NodeListOf = webStatsComponent.querySelectorAll('.program-stats__tab');\r\n const programStatsContents: NodeListOf = webStatsComponent.querySelectorAll('.program-stats__content');\r\n let activeTab = 0;\r\n\r\n // Tab logic\r\n const showSelectedItems = (activeTab: number) => {\r\n programStatsTabs.forEach((tab, index) => {\r\n tab.classList.remove('program-stats__tab--active');\r\n programStatsContents[index].style.display = 'none'; \r\n });\r\n\r\n programStatsTabs[activeTab].classList.add('program-stats__tab--active');\r\n programStatsContents[activeTab].style.display = 'block';\r\n };\r\n\r\n const handleTabClick = (index: number) => {\r\n activeTab = index;\r\n showSelectedItems(activeTab);\r\n };\r\n\r\n programStatsTabs.forEach((tab, index) => {\r\n tab.addEventListener('click', () => handleTabClick(index));\r\n });\r\n\r\n showSelectedItems(activeTab);\r\n};\r\n\r\ndocument.querySelectorAll('.program-stats').forEach((webStatsComponent) => {\r\n initializeProgramStatsComponent(webStatsComponent as HTMLElement);\r\n});\r\n","import { updatePaginationButtons } from '../pagination/pagination';\r\nimport { ProgramItem, FetchProgramsListingPayload, FetchProgramsListingResponse } from './programsList.types';\r\nimport axios from 'axios';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst programsList: HTMLDivElement = document.querySelector('.programs-list');\r\n\r\nif (programsList) {\r\n const Grid = programsList.querySelector('.programs-list__images') as HTMLDivElement;\r\n const nextPageButton = programsList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = programsList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = programsList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = programsList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = programsList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = programsList.querySelector('.pagination') as HTMLDivElement;\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let programsCards: ProgramItem[] = [];\r\n let pageNumber = 1;\r\n let pageSize = +paginationDropdown.value;\r\n let totalPages = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage = false;\r\n let hasPreviousPage = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchPrograms = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchProgramsListingPayload = {\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://mawhiba-development.azurewebsites.net/api/programs',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post(`/api/programs`, payload);\r\n }\r\n\r\n programsCards = response.data.items;\r\n\r\n if (programsCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n\r\n totalCount = response.data.totalCount;\r\n totalPages = response.data.totalPages;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n programsCards,\r\n fetchPrograms\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n Grid.innerHTML = '';\r\n\r\n programsCards.forEach((card: ProgramItem) => {\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'programs-list__item sticky flex flex--justify-between';\r\n cardElement.style.backgroundImage = `url(${card.backgroundImage})`;\r\n\r\n cardElement.innerHTML = ` \r\n
    \r\n

    ${card.title}

    \r\n

    ${card.text}

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \"share\r\n \r\n
    \r\n
    \r\n `;\r\n\r\n if (card.links.length > 0) {\r\n const list = document.createElement('ul');\r\n list.className = 'programs-list__list fade-in flex flex--column flex--align-start';\r\n\r\n card.links.forEach((link) => {\r\n const listItem = document.createElement('li');\r\n listItem.className = 'programs-list__list-item';\r\n listItem.innerHTML = `\r\n \r\n \r\n ${link.title}\r\n \r\n \"arrow\r\n \r\n `;\r\n list.appendChild(listItem);\r\n });\r\n\r\n const rightContent = cardElement.querySelector('.programs-list__item-right') as HTMLDivElement;\r\n rightContent.appendChild(list);\r\n\r\n const moreButton = document.createElement('button');\r\n moreButton.className =\r\n 'button button--transparent programs-list__item-button flex flex--justify-center flex--align-center';\r\n moreButton.innerHTML = `\r\n ${card.linkText}\r\n \"arrow\r\n `;\r\n\r\n rightContent.appendChild(moreButton);\r\n }\r\n\r\n Grid.appendChild(cardElement);\r\n });\r\n\r\n // hidden card to lock the last card\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'programs-list__item sticky';\r\n cardElement.style.opacity = '0';\r\n cardElement.style.zIndex = '-1';\r\n Grid.appendChild(cardElement);\r\n\r\n addCardListeners();\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n };\r\n\r\n // Listeners\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchPrograms();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n fetchPrograms();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n fetchPrograms();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchPrograms();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchPrograms();\r\n });\r\n\r\n fetchPrograms();\r\n\r\n const addCardListeners = () => {\r\n const listCards: NodeListOf = programsList.querySelectorAll('.programs-list__item');\r\n\r\n if (listCards.length > 0) {\r\n const cardButtons: NodeListOf = programsList.querySelectorAll('.programs-list__button');\r\n const moreButtons: NodeListOf =\r\n programsList.querySelectorAll('.programs-list__item-button');\r\n const list: NodeListOf = programsList.querySelectorAll('.programs-list__list');\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('favouriteButton')) {\r\n const t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n saveOrRemoveFavourite(t, id, button);\r\n } else if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n\r\n listCards.forEach((card, index) => {\r\n card.addEventListener('click', (e) => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (\r\n target.classList.contains('programs-list__item-button') ||\r\n target.parentElement.classList.contains('programs-list__item-button') ||\r\n target.parentElement.classList.contains('programs-list__item-button')\r\n ) {\r\n list[index].classList.toggle('programs-list__list--active');\r\n moreButtons[index].classList.add('hidden');\r\n } else {\r\n closeAllLists();\r\n }\r\n });\r\n });\r\n\r\n let top: number = 180;\r\n const headerHeight: number = 65;\r\n if (window.innerWidth < 1200) {\r\n top = 20;\r\n }\r\n const cardsCount: number = listCards.length;\r\n\r\n if (cardsCount) {\r\n listCards.forEach((card, i) => {\r\n const incValue: number = i * headerHeight;\r\n\r\n if (i === 0) {\r\n card.style.top = `${top}px`;\r\n } else {\r\n card.style.top = `${top + incValue}px`;\r\n }\r\n });\r\n }\r\n\r\n const closeAllLists = () => {\r\n const list: NodeListOf = programsList.querySelectorAll('.programs-list__list');\r\n const moreButtons: NodeListOf =\r\n programsList.querySelectorAll('.programs-list__item-button');\r\n\r\n list.forEach((item, i) => {\r\n item.classList.remove('programs-list__list--active');\r\n moreButtons[i].classList.remove('hidden');\r\n });\r\n };\r\n\r\n window.addEventListener('scroll', () => {\r\n closeAllLists();\r\n });\r\n }\r\n };\r\n}\r\n","import axios from 'axios';\r\nimport { QuickJoinDto, QuickJoinPayload } from './quickJoin.types';\r\n\r\nconst quickJoin = document.querySelector('.quick-join') as HTMLDivElement;\r\n\r\nif (quickJoin) {\r\n const trigger = quickJoin.querySelector('.quick-join__trigger') as HTMLDivElement;\r\n const triggerIcon = quickJoin.querySelector('.quick-join__trigger-close') as HTMLImageElement;\r\n const form = quickJoin.querySelector('.quick-join__form') as HTMLFormElement;\r\n const nextButtons = quickJoin.querySelectorAll('.quick-join__next') as NodeListOf;\r\n const closeButton = quickJoin.querySelector('.quick-join__close') as HTMLButtonElement;\r\n const submitButton = quickJoin.querySelector('.quick-join__submit') as HTMLButtonElement;\r\n const firstSection = quickJoin.querySelector('.quick-join__section-1') as HTMLDivElement;\r\n const secondSection = quickJoin.querySelector('.quick-join__section-2') as HTMLDivElement;\r\n const thirdSection = quickJoin.querySelector('.quick-join__section-3') as HTMLDivElement;\r\n const userEmail = quickJoin.querySelector('.quick-join__user') as HTMLSpanElement;\r\n\r\n // inputs\r\n const idInput = quickJoin.querySelector('.quick-join__id-input') as HTMLInputElement;\r\n const mobileNumberInput = quickJoin.querySelector('.country-dropdown__number') as HTMLInputElement;\r\n const emailInput = quickJoin.querySelector('.quick-join__email-input') as HTMLInputElement;\r\n const countryCode = quickJoin.querySelector('.country-dropdown__title') as HTMLSpanElement;\r\n const formidInput = quickJoin.querySelector('.quick-join-formid') as HTMLInputElement;\r\n\r\n // validations\r\n const classValidation = quickJoin.querySelector('.quick-join__classes-validation') as HTMLSpanElement;\r\n const programsValidation = quickJoin.querySelector('.quick-join__programs-validation') as HTMLSpanElement;\r\n const idValidation = quickJoin.querySelector('.quick-join__id-validation') as HTMLSpanElement;\r\n const mobileValidation = quickJoin.querySelector('.quick-join__mobile-validation') as HTMLSpanElement;\r\n const emailValidation = quickJoin.querySelector('.quick-join__email-validation') as HTMLSpanElement;\r\n\r\n // custom dropdowns\r\n const dropdownFilters: NodeListOf = firstSection.querySelectorAll('.dropdown-filter');\r\n const dropdownFilterTriggers: NodeListOf =\r\n firstSection.querySelectorAll('.dropdown-filter__trigger');\r\n const programsDropdown = firstSection.querySelector('.multi-select') as HTMLSelectElement | null;\r\n\r\n const singleDropdownFilter: HTMLDivElement = firstSection.querySelector('.single-dropdown-filter');\r\n const singleDropdownFilterTrigger: HTMLDivElement = firstSection.querySelector('.single-dropdown-filter__trigger');\r\n const singleDropdown = singleDropdownFilter.querySelector('.single-select') as HTMLSelectElement | null;\r\n const singleDropdownPlaceholder = singleDropdown.getAttribute('data-placeholder');\r\n\r\n const autocompleLists: NodeListOf = quickJoin.querySelectorAll('.multi-select');\r\n const singleAutocompleLists: NodeListOf = quickJoin.querySelectorAll('.single-select');\r\n const buttonContainers: NodeListOf = quickJoin.querySelectorAll(\r\n '.dropdown-filter__button-container'\r\n );\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let _class = '';\r\n let programs = [];\r\n\r\n const resetForm = () => {\r\n firstSection.classList.remove('hidden');\r\n secondSection.classList.add('hidden');\r\n thirdSection.classList.add('hidden');\r\n\r\n idInput.value = '';\r\n mobileNumberInput.value = '';\r\n emailInput.value = '';\r\n\r\n buttonContainers.forEach((container) => {\r\n container.innerHTML = '';\r\n });\r\n programs = [];\r\n _class = '';\r\n autocompleLists.forEach((list) => {\r\n list.querySelectorAll('option').forEach((item) => {\r\n item.removeAttribute('selected');\r\n });\r\n });\r\n dropdownFilters.forEach((filter) => {\r\n filter.classList.add('disabled');\r\n });\r\n\r\n singleDropdownFilterTrigger.innerHTML = singleDropdownPlaceholder;\r\n singleAutocompleLists.forEach((list) => {\r\n list.querySelectorAll('option').forEach((item) => {\r\n item.removeAttribute('selected');\r\n });\r\n });\r\n\r\n userEmail.textContent = '';\r\n };\r\n\r\n const resetValidations = () => {\r\n classValidation.classList.add('hidden');\r\n programsValidation.classList.add('hidden');\r\n idValidation.classList.add('hidden');\r\n mobileValidation.classList.add('hidden');\r\n emailValidation.classList.add('hidden');\r\n };\r\n\r\n const isFormValid = () => {\r\n const tenDigitsPattern = /^\\d{10}$/;\r\n const isIdValid = tenDigitsPattern.test(idInput.value);\r\n console.log(isIdValid)\r\n if (idInput.value === '' || !isIdValid) {\r\n idValidation.classList.remove('hidden');\r\n }\r\n\r\n if (mobileNumberInput.value === '') {\r\n mobileValidation.classList.remove('hidden');\r\n }\r\n\r\n if (emailInput.value === '') {\r\n emailValidation.classList.remove('hidden');\r\n }\r\n\r\n if (\r\n idInput.value !== '' &&\r\n isIdValid &&\r\n mobileNumberInput.value !== '' &&\r\n emailInput.value !== '' &&\r\n _class !== '' &&\r\n programs.length > 0 &&\r\n firstSection.classList.contains('hidden')\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const toggleSlider = () => {\r\n resetForm();\r\n resetValidations();\r\n quickJoin.classList.toggle('quick-join--open');\r\n triggerIcon.classList.toggle('hidden');\r\n };\r\n\r\n const closeSlider = () => {\r\n quickJoin.classList.remove('quick-join--open');\r\n triggerIcon.classList.add('hidden');\r\n resetForm();\r\n resetValidations();\r\n };\r\n\r\n const resetProgramsDropdown = () => {\r\n buttonContainers.forEach((container) => {\r\n container.innerHTML = '';\r\n });\r\n programs = [];\r\n autocompleLists.forEach((list) => {\r\n list.querySelectorAll('option').forEach((item) => {\r\n item.removeAttribute('selected');\r\n });\r\n });\r\n };\r\n\r\n const getServices = async (className: string) => {\r\n try {\r\n const response = await axios.get(\r\n `/api/quickjoin/services?class=${className}¤tCulture=${currentCulture}`\r\n );\r\n\r\n programsDropdown.length = 0;\r\n response.data.forEach((service) => {\r\n var opt = document.createElement('option');\r\n opt.value = service;\r\n opt.innerHTML = service;\r\n programsDropdown.appendChild(opt);\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n closeButton.addEventListener('click', () => {\r\n closeSlider();\r\n });\r\n\r\n window.addEventListener('keydown', (e) => {\r\n if (e.key === 'Escape') {\r\n closeSlider();\r\n }\r\n });\r\n\r\n dropdownFilterTriggers.forEach((trigger) => {\r\n trigger.addEventListener('keydown', (e) => {\r\n e.preventDefault();\r\n });\r\n });\r\n\r\n singleDropdownFilterTrigger.addEventListener('keydown', (e) => {\r\n e.preventDefault();\r\n });\r\n\r\n singleDropdown.addEventListener('change', () => {\r\n const selected: HTMLSelectElement = singleDropdown.querySelector('option:checked');\r\n _class = selected.value;\r\n classValidation.classList.add('hidden');\r\n getServices(selected.value);\r\n resetProgramsDropdown();\r\n dropdownFilters.forEach((filter) => {\r\n filter.classList.remove('disabled');\r\n });\r\n });\r\n\r\n trigger.addEventListener('click', () => {\r\n toggleSlider();\r\n });\r\n\r\n trigger.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter') {\r\n toggleSlider();\r\n }\r\n });\r\n\r\n nextButtons.forEach((button, index) => {\r\n button.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n\r\n if (index === 0) {\r\n if (_class === '') {\r\n classValidation.classList.remove('hidden');\r\n }\r\n\r\n if (_class !== '' && programs.length < 1) {\r\n programsValidation.classList.remove('hidden');\r\n }\r\n\r\n if (_class !== '' && programs.length > 0) {\r\n firstSection.classList.add('hidden');\r\n secondSection.classList.remove('hidden');\r\n resetValidations();\r\n }\r\n }\r\n });\r\n });\r\n\r\n form.addEventListener('submit', (e) => {\r\n e.preventDefault();\r\n\r\n submitButton.setAttribute('disabled', 'true');\r\n\r\n if (isFormValid) {\r\n userEmail.textContent = emailInput.value;\r\n\r\n secondSection.classList.add('hidden');\r\n thirdSection.classList.remove('hidden');\r\n\r\n submitButton.removeAttribute('disabled');\r\n\r\n const dataObject: QuickJoinPayload = {\r\n class: _class,\r\n programs,\r\n idNumber: idInput.value,\r\n countryCode: countryCode.textContent,\r\n mobile: mobileNumberInput.value,\r\n email: emailInput.value,\r\n formid: formidInput.value,\r\n };\r\n\r\n console.log(dataObject);\r\n\r\n // Send data to the api\r\n SendData(dataObject);\r\n }\r\n });\r\n\r\n const SendData = async (dataObject: QuickJoinPayload) => {\r\n try {\r\n const response = await axios.post(`/api/quickjoin`, dataObject);\r\n\r\n console.log(response.data);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const arr2 = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n arr2.push(element.textContent);\r\n });\r\n programsValidation.classList.add('hidden');\r\n programs = arr2;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n}\r\n","import {\r\n FetchScienceCardListPayload,\r\n FetchScienceCardListResponse,\r\n ScienceCard,\r\n FilterItem,\r\n Filters,\r\n} from './scientificPublications.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport { initStarRatings } from '../starRatings/starRatings';\r\n\r\nconst list: HTMLDivElement = document.querySelector('.science-pubs__wrapper');\r\n\r\nif (list) {\r\n const grid = list.querySelector('.science-pubs__grid') as HTMLDivElement;\r\n\r\n const filters = list.querySelector('.science-pubs__filter-content') as HTMLDivElement;\r\n const resultsnumber = list.querySelector('.science-pubs__number') as HTMLSpanElement;\r\n const filterButton = list.querySelector('.science-pubs__button') as HTMLButtonElement;\r\n const filterCount = list.querySelector('.science-pubs__button-count-content') as HTMLDivElement;\r\n\r\n const listSearchInput = list.querySelector('.science-pubs__search-input') as HTMLInputElement;\r\n const publicationsAuthorsDiv = list.querySelector('.science-pubs__sub-filters') as HTMLDivElement;\r\n const publicationsFileTypesDiv = list.querySelector('.science-pubs__summary-filetypes') as HTMLDivElement;\r\n const nextPageButton = list.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = list.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = list.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = list.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = list.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = list.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = list.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const pageId = Number(list.getAttribute('data-id'));\r\n\r\n const checkboxFiltersViews: NodeListOf = list.querySelectorAll('.science-pubs__view-checkbox');\r\n\r\n let scienceCards: ScienceCard[] = [];\r\n let scienceCardsAll: ScienceCard[] = [];\r\n let publicationsAuthors: FilterItem[] = [];\r\n let publicationsFileTypes: FilterItem[] = [];\r\n let keyword: string = '';\r\n let authors: string[] = [];\r\n let views: string[] = [];\r\n let ratings: string[] = [];\r\n let fileTypes: string[] = [];\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const addPageView = async (pageViewedId: number) => {\r\n try {\r\n await axios.post(`/api/pageview?pageId=${pageViewedId}`);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchPublicationsFilters = async () => {\r\n try {\r\n const payload: FetchScienceCardListPayload = {\r\n pageId,\r\n keyword,\r\n authors,\r\n views,\r\n ratings,\r\n fileTypes,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/scientificpublications/filters',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/scientificpublications/filters', payload);\r\n }\r\n\r\n publicationsAuthors = response.data.authors;\r\n publicationsFileTypes = response.data.fileTypes;\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n updateFilters();\r\n updateNumberCards();\r\n }\r\n };\r\n\r\n const updateFilters = () => {\r\n publicationsAuthorsDiv.innerHTML = '';\r\n\r\n publicationsAuthors.forEach((card: FilterItem) => {\r\n const cardElement = document.createElement('summary');\r\n\r\n cardElement.innerHTML = `\r\n
    \r\n \r\n \r\n
    \r\n `;\r\n\r\n publicationsAuthorsDiv.appendChild(cardElement);\r\n });\r\n\r\n const checkboxFiltersAuthors: NodeListOf = list.querySelectorAll(\r\n '.science-pubs__category-checkbox'\r\n );\r\n if (checkboxFiltersAuthors.length > 0) {\r\n checkboxFiltersAuthors.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n if (authors.includes(checkbox.value)) {\r\n authors = authors.filter((cat) => cat !== checkbox.value);\r\n } else {\r\n authors.push(checkbox.value);\r\n }\r\n\r\n fetchPublications();\r\n fetchAllPublications();\r\n });\r\n });\r\n }\r\n\r\n publicationsFileTypesDiv.innerHTML = '';\r\n\r\n publicationsFileTypes.forEach((card: FilterItem) => {\r\n const cardElement = document.createElement('div');\r\n\r\n cardElement.className = 'science-pubs__sub-filters-text flex flex--align-center';\r\n\r\n cardElement.innerHTML = `\r\n \r\n \r\n `;\r\n\r\n publicationsFileTypesDiv.appendChild(cardElement);\r\n });\r\n\r\n const checkboxFiltersFileTypes: NodeListOf = list.querySelectorAll(\r\n '.science-pubs__filetype-checkbox'\r\n );\r\n if (checkboxFiltersFileTypes.length > 0) {\r\n checkboxFiltersFileTypes.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n if (fileTypes.includes(checkbox.value)) {\r\n fileTypes = fileTypes.filter((cat) => cat !== checkbox.value);\r\n } else {\r\n fileTypes.push(checkbox.value);\r\n }\r\n\r\n fetchPublications();\r\n fetchAllPublications();\r\n });\r\n });\r\n }\r\n };\r\n\r\n const fetchPublications = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchScienceCardListPayload = {\r\n pageId,\r\n keyword,\r\n authors,\r\n views,\r\n ratings,\r\n fileTypes,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n const fCount = authors.length + views.length;\r\n filterCount.innerHTML = fCount.toString();\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/scientificpublications',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/scientificpublications', payload);\r\n }\r\n scienceCards = response.data.items;\r\n if (scienceCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n\r\n resultsnumber.innerHTML = response.data.totalCount;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n scienceCards,\r\n fetchPublications\r\n );\r\n isLoading = false;\r\n updateCards();\r\n updateNumberCards();\r\n enableInputs();\r\n }\r\n }\r\n\r\n const fetchAllPublications = async (page = null) => {\r\n const payload: FetchScienceCardListPayload = {\r\n pageId,\r\n keyword: '',\r\n authors: [],\r\n views: [],\r\n fileTypes: [],\r\n ratings: [],\r\n sortBy: 1,\r\n pageNumber: 1,\r\n pageSize: -1,\r\n currentCulture,\r\n };\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/scientificpublications',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/scientificpublications', payload);\r\n }\r\n scienceCardsAll = response.data.items;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n grid.innerHTML = '';\r\n\r\n scienceCards.forEach((card: ScienceCard) => {\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'science-card flex flex--column flex--align-start flex--justify-between fade-in';\r\n\r\n cardElement.innerHTML = `\r\n
    \r\n
    \r\n \"publciation\r\n
    \r\n
    \r\n ${\r\n card.fileType !== null && card.fileType !== ''\r\n ? `
    \r\n \"pdf\r\n
    `\r\n : ''\r\n }\r\n ${card.title}\r\n ${card.description}\r\n
    \r\n
    \r\n \"user\r\n ${card.author}\r\n
    \r\n
    \r\n
    \r\n\r\n ${card.isRated \r\n ? \r\n ''\r\n :\r\n ' '\r\n }\r\n\r\n ${card.rating}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n ${card.rating}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"eye\r\n ${card.views}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n ${card.linkTitle}\r\n \"/assets/img/img/arrow-top-left-dark.svg\"\r\n \r\n
    \r\n \r\n \r\n \"/assets/img/img/download-icon-dark.svg\"\r\n \r\n
    \r\n
    \r\n `;\r\n\r\n // cardElement.innerHTML = `\r\n //
    \r\n //
    \r\n //
    \r\n //

    ${card.title}

    \r\n // \"${card.title}\"\r\n // ${card.text}\r\n // \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // \r\n //
    \r\n // \r\n //

    ${card.category}

    \r\n //
    \r\n //
    \r\n // \r\n //

    ${card.views}

    \r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n // `;\r\n\r\n grid.appendChild(cardElement);\r\n });\r\n\r\n addCardListeners();\r\n initStarRatings();\r\n\r\n const fileButtons = grid.querySelectorAll('.science-card__link--full') as NodeListOf;\r\n fileButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n const cardId = Number(button.getAttribute('data-id'));\r\n\r\n addPageView(cardId);\r\n });\r\n });\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n filters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n filters.classList.remove('disabled');\r\n };\r\n\r\n if (checkboxFiltersViews.length > 0) {\r\n checkboxFiltersViews.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n if (views.includes(checkbox.value)) {\r\n views = views.filter((cat) => cat !== checkbox.value);\r\n } else {\r\n views.push(checkbox.value);\r\n }\r\n fetchPublications();\r\n });\r\n });\r\n }\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchPublications();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchPublications();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchPublications();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchPublications();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchPublications();\r\n });\r\n\r\n let timeout = null;\r\n listSearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = listSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchPublications();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = latest\r\n // 2 = A-Z\r\n // 3 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = list.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchPublications();\r\n });\r\n });\r\n\r\n filterButton?.addEventListener('click', () => {\r\n const filterColumn = list.querySelector('.science-pubs__accordions') as HTMLDivElement;\r\n if (filterColumn?.classList.contains('hidden')) {\r\n filterColumn?.classList.remove('hidden');\r\n } else {\r\n filterColumn?.classList.add('hidden');\r\n }\r\n });\r\n\r\n const initializeList = async () => {\r\n await fetchAllPublications();\r\n await fetchPublicationsFilters();\r\n await fetchPublications();\r\n };\r\n\r\n // Call the initialize function\r\n initializeList();\r\n\r\n // Function to update the counts\r\n const updateNumberCards = async () => {\r\n // Get all filter divs\r\n const filterDivs = document.querySelectorAll('.views-card');\r\n\r\n filterDivs.forEach((filterDiv) => {\r\n // Extract data-min and data-max values\r\n const minViews = parseInt(filterDiv.getAttribute('data-min'), 10);\r\n const maxViews = parseInt(filterDiv.getAttribute('data-max'), 10);\r\n\r\n // Count the articles within the view range\r\n const count = scienceCardsAll.filter(\r\n (article) => article.views >= minViews && article.views <= maxViews\r\n ).length;\r\n\r\n // Update the span with the count\r\n const countSpan = filterDiv.querySelector('.science-pubs__sub-filters-text-number');\r\n countSpan.textContent = count.toString();\r\n });\r\n };\r\n\r\n updateNumberCards();\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n // const updateNumberCats = () => {\r\n // // Get all filter divs\r\n // const filterDivs = document.querySelectorAll('.subcat-card');\r\n\r\n // filterDivs.forEach(filterDiv => {\r\n // // Extract data-min and data-max values\r\n // const subcardid = filterDiv.getAttribute('data-id');\r\n\r\n // // Count the articles within the view range\r\n // console.log(scienceCards);\r\n // const count = scienceCards.filter(article => article.subCategoryID == subcardid).length;\r\n\r\n // // Update the span with the count\r\n // const countSpan = filterDiv.querySelector('.science-pubs__sub-filters-text-number');\r\n // countSpan.textContent = count.toString();\r\n // });\r\n // }\r\n\r\n const addCardListeners = () => {\r\n const listCards: NodeListOf = list.querySelectorAll('.science-card');\r\n\r\n if (listCards.length > 0) {\r\n const cardButtons: NodeListOf = list.querySelectorAll('.science-card__button');\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n","import { updatePaginationButtons } from '../pagination/pagination';\r\nimport { SearchCard, FetchSearchResultsPayload, FetchSearchResultsResponse } from './searchResults.types';\r\nimport axios from 'axios';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst searchList: HTMLDivElement = document.querySelector('.search-results');\r\nconst getParameterByName = (name, url = window.location.href) => {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n};\r\n\r\nif (searchList) {\r\n const Grid = searchList.querySelector('.search-results__grid') as HTMLDivElement;\r\n const searchFilters = searchList.querySelector('.search-results__filters') as HTMLDivElement;\r\n const searchListingSearchInput = searchList.querySelector('.search-results__search-input') as HTMLInputElement;\r\n const radios: NodeListOf = searchList.querySelectorAll('.sort-filter__input');\r\n const checkboxes: NodeListOf = searchList.querySelectorAll('.search-results__category-input');\r\n const nextPageButton = searchList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = searchList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = searchList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = searchList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = searchList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = searchList.querySelector('.pagination') as HTMLDivElement;\r\n const totalSearchResults = searchList.querySelector('.search-results__number') as HTMLSpanElement;\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n const queryParam = getParameterByName('q');\r\n let searchCards: SearchCard[] = [];\r\n let keyword = queryParam;\r\n searchListingSearchInput.value = queryParam;\r\n const types: string[] = [];\r\n let sortBy = 1;\r\n let pageNumber = 1;\r\n let pageSize = +paginationDropdown.value;\r\n let totalPages = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage = false;\r\n let hasPreviousPage = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchSearchResults = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchSearchResultsPayload = {\r\n keyword,\r\n types,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/search',\r\n payload,\r\n );\r\n } else {\r\n response = await axios.post(`/api/search`, payload);\r\n }\r\n\r\n searchCards = response.data.items;\r\n\r\n if (searchCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n\r\n totalCount = response.data.totalCount;\r\n totalPages = response.data.totalPages;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n\r\n totalSearchResults.innerHTML = totalCount.toString();\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n searchCards,\r\n fetchSearchResults,\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n Grid.innerHTML = '';\r\n\r\n searchCards.forEach((card: SearchCard) => {\r\n const cardElement = document.createElement('a');\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'search-results__card';\r\n\r\n cardElement.innerHTML = `\r\n ${card.tag !== null ? `

    ${card.tag}

    ` : ''}\r\n

    ${card.title}

    \r\n
    \r\n image\r\n
    \r\n

    \r\n ${card.description !== null ? card.description : ''}\r\n

    \r\n
    \r\n \r\n
    \r\n \r\n \"share\r\n \r\n
    \r\n
    \r\n `;\r\n\r\n Grid.appendChild(cardElement);\r\n });\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n searchFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n searchFilters.classList.remove('disabled');\r\n };\r\n\r\n // Listeners\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchSearchResults();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n fetchSearchResults();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n fetchSearchResults();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchSearchResults();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchSearchResults();\r\n });\r\n\r\n let timeout = null;\r\n searchListingSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = searchListingSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchSearchResults();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Latest\r\n // 2 = Olders\r\n // 3 = A-Z\r\n // 4 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = searchList.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchSearchResults();\r\n });\r\n });\r\n\r\n checkboxes.forEach((checkbox) => {\r\n checkbox.addEventListener('change', () => {\r\n if (checkbox.checked) {\r\n types.push(checkbox.value);\r\n } else {\r\n const index = types.indexOf(checkbox.value);\r\n if (index > -1) {\r\n types.splice(index, 1);\r\n }\r\n }\r\n\r\n fetchSearchResults();\r\n });\r\n });\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n\r\n // if (checkboxes.length > 0) {\r\n // types.push(checkboxes[0].value);\r\n // fetchSearchResults();\r\n // }\r\n\r\n fetchSearchResults();\r\n}\r\n","import axios from 'axios';\r\nimport { InfoRatingDto } from './serviceDetailsSurvey.types';\r\n\r\nconst infoComponent = document.querySelector('.details-survey') as HTMLDivElement;\r\n\r\nif (infoComponent) {\r\n const pageId = parseInt(infoComponent.getAttribute('data-pageid'));\r\n const hasRating = parseInt(infoComponent.getAttribute('data-hasrating'));\r\n const positiveButton = infoComponent.querySelector('.positive') as HTMLButtonElement;\r\n const negativeButton = infoComponent.querySelector('.negative') as HTMLButtonElement;\r\n const ratingSpan = infoComponent.querySelector('.rating') as HTMLSpanElement;\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n const SubmitPositiveAPICall = () => {\r\n CreateRatingCommand(pageId, true);\r\n positiveButton.classList.remove('button--secondary');\r\n positiveButton.classList.add('button--primary');\r\n const img = positiveButton.querySelector('.button__image') as HTMLImageElement;\r\n img.src = '/assets/img/img/emoji-happy.svg';\r\n\r\n removeEventListeners();\r\n };\r\n\r\n const SubmitNegativeAPICall = () => {\r\n CreateRatingCommand(pageId, false);\r\n negativeButton.classList.remove('button--secondary');\r\n negativeButton.classList.add('button--primary');\r\n const img = negativeButton.querySelector('.button__image') as HTMLImageElement;\r\n img.src = '/assets/img/img/emoji-sad.svg';\r\n\r\n removeEventListeners();\r\n };\r\n\r\n const disableButtons = () => {\r\n positiveButton.classList.add('button--disabled');\r\n negativeButton.classList.add('button--disabled');\r\n }\r\n\r\n if (hasRating !== 1) {\r\n positiveButton.addEventListener('click', SubmitPositiveAPICall);\r\n negativeButton.addEventListener('click', SubmitNegativeAPICall);\r\n } else {\r\n disableButtons();\r\n }\r\n\r\n const CreateRatingCommand = async (pageId: number, rating: boolean) => {\r\n try {\r\n const response = await axios.post(`/api/info?pageid=${pageId}&rating=${rating}`);\r\n\r\n const string =\r\n response.data.positiveRatingsCount.toString() +\r\n ' ' +\r\n (currentCulture == 'ar' ? 'من أصل' : 'out of') +\r\n ' ' +\r\n response.data.totalRatingsCount.toString();\r\n\r\n ratingSpan.innerHTML = string;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const removeEventListeners = () => {\r\n positiveButton.removeEventListener('click', SubmitPositiveAPICall);\r\n negativeButton.removeEventListener('click', SubmitNegativeAPICall);\r\n disableButtons();\r\n };\r\n}\r\n","import saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\n\r\nconst favButtons: NodeListOf = document.querySelectorAll('.favouriteButton');\r\n\r\nconst serviceDetails: HTMLDivElement = document.querySelector('.service-details');\r\n\r\nif (serviceDetails) {\r\n const tabs: NodeListOf = serviceDetails.querySelectorAll('.service-details__tab');\r\n const tabContents: NodeListOf = serviceDetails.querySelectorAll('.service-details__tab-content');\r\n const feesButton = serviceDetails.querySelector('.service-details__tooltip') as HTMLButtonElement;\r\n const feeWaiverButton = serviceDetails.querySelector('.service-details__waiver-tooltip') as HTMLButtonElement;\r\n\r\n let activeTabIndex: number = 0;\r\n tabContents[activeTabIndex].classList.remove('hidden');\r\n tabs[activeTabIndex].classList.add('service-details__tab--active');\r\n\r\n const resetTabs = () => {\r\n tabs.forEach((tab) => tab.classList.remove('service-details__tab--active'));\r\n tabContents.forEach((item) => item.classList.add('hidden'));\r\n };\r\n\r\n tabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n resetTabs();\r\n tab.classList.add('service-details__tab--active');\r\n activeTabIndex = index;\r\n tabContents[activeTabIndex].classList.remove('hidden');\r\n });\r\n });\r\n\r\n if (favButtons && favButtons.length > 0) {\r\n favButtons.forEach((button) => {\r\n const dataIdAttr: string | null = button.getAttribute('data-id');\r\n const type: string | null = button.getAttribute('data-type');\r\n const favouritedIds: number[] = JSON.parse(button.getAttribute('data-ids'));\r\n if (dataIdAttr !== null && favouritedIds != null) {\r\n const dataId: number = parseInt(dataIdAttr);\r\n\r\n if (IsFavourited(dataId, favouritedIds)) {\r\n button.classList.add('active');\r\n } else {\r\n button.classList.remove('active');\r\n }\r\n\r\n button.addEventListener('click', (e) => {\r\n console.log('small button clicked - service details');\r\n saveOrRemoveFavourite(type, dataId, button);\r\n });\r\n }\r\n });\r\n }\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n\r\n const openFeesTooltip = () => {\r\n feesButton.nextElementSibling.classList.add('service-details__tooltip-inner--active');\r\n };\r\n const closeFeesTooltip = () => {\r\n feesButton.nextElementSibling.classList.remove('service-details__tooltip-inner--active');\r\n };\r\n\r\n const openWaiverTooltip = () => {\r\n var tooltipInnerDiv = feeWaiverButton.nextElementSibling as HTMLDivElement;\r\n tooltipInnerDiv.classList.add('service-details__waiver-tooltip-inner--active');\r\n const buttonRect = feeWaiverButton.getBoundingClientRect();\r\n const windowScrollY = window.scrollY === 0 ? -80 : window.scrollY;\r\n const buttonRectHeight = window.innerWidth < 1200 ? 0 : buttonRect.height;\r\n const buttonRectTopOrBottom = window.innerWidth < 1200 ? buttonRect.top : buttonRect.bottom;\r\n const top = buttonRectTopOrBottom + buttonRectHeight + windowScrollY - tooltipInnerDiv.offsetHeight / 2 + 10;\r\n tooltipInnerDiv.style.top = `${top}px`;\r\n };\r\n\r\n const closeWaiverTooltip = () => {\r\n feeWaiverButton.nextElementSibling.classList.remove('service-details__waiver-tooltip-inner--active');\r\n };\r\n\r\n // if fees tooltip\r\n window.addEventListener('click', (event: MouseEvent) => {\r\n let clickedElement = event.target as Element;\r\n\r\n const feesTargetElement = serviceDetails.querySelector('.service-details__tooltip-inner');\r\n if (clickedElement.classList.contains('service-details__tooltip')) {\r\n if (clickedElement.nextElementSibling.classList.contains('service-details__tooltip-inner--active')) {\r\n closeFeesTooltip();\r\n } else {\r\n openFeesTooltip();\r\n }\r\n return;\r\n }\r\n\r\n if (feesTargetElement) {\r\n while (clickedElement) {\r\n if (clickedElement === feesTargetElement) {\r\n feesButton.nextElementSibling.classList.add('service-details__tooltip-inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n feesButton.nextElementSibling.classList.remove('service-details__tooltip-inner--active');\r\n }\r\n\r\n return;\r\n });\r\n\r\n // if waiver tooltip\r\n window.addEventListener('click', (event: MouseEvent) => {\r\n let clickedElement = event.target as Element;\r\n \r\n const waiverTargetElement = serviceDetails.querySelector('.service-details__waiver-tooltip-inner');\r\n if (clickedElement.classList.contains('service-details__waiver-tooltip')) {\r\n if (clickedElement.nextElementSibling.classList.contains('service-details__waiver-tooltip-inner--active')) {\r\n closeWaiverTooltip();\r\n } else {\r\n openWaiverTooltip();\r\n }\r\n return;\r\n }\r\n\r\n if (waiverTargetElement) {\r\n while (clickedElement) {\r\n if (clickedElement === waiverTargetElement) {\r\n feeWaiverButton.nextElementSibling.classList.add('service-details__waiver-tooltip-inner--active');\r\n return;\r\n }\r\n clickedElement = clickedElement.parentElement;\r\n }\r\n\r\n feeWaiverButton.nextElementSibling.classList.remove('service-details__waiver-tooltip-inner--active');\r\n }\r\n\r\n return;\r\n });\r\n\r\n window.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n closeFeesTooltip();\r\n closeWaiverTooltip();\r\n }\r\n });\r\n}\r\n","import {\r\n FetchServiceCardSettingsResponse,\r\n FetchServicesListingPayload,\r\n FetchServicesListingResponse,\r\n ServiceCard,\r\n} from './serviceList.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport saveOrRemoveFavourite from '../../../helpers/favourites';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport { IsFavourited } from '../../../helpers/isFavourite';\r\nimport IsUserLoggedIn from '../../../helpers/isUserLoggedIn';\r\n\r\nconst servicesListing = (document.querySelector('.service-list') as HTMLDivElement) || null;\r\n\r\nif (servicesListing) {\r\n const grid = servicesListing.querySelector('.service-list__grid') as HTMLDivElement;\r\n const filterMobile = servicesListing.querySelector('.service-list__filter-mobile') as HTMLButtonElement;\r\n const nextPageButton = servicesListing.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = servicesListing.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = servicesListing.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = servicesListing.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = servicesListing.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = servicesListing.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = servicesListing.querySelectorAll('.sort-filter__input');\r\n const servicesListingSearchInput = servicesListing.querySelector('.service-list__search-input') as HTMLInputElement;\r\n const servicesFilters = servicesListing.querySelector('.service-list__filters') as HTMLDivElement;\r\n const dropdownFilters: NodeListOf = servicesListing.querySelectorAll('.dropdown-filter');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const favouritedIds: number[] = JSON.parse(grid.getAttribute('data-ids'));\r\n\r\n let servicesCards: ServiceCard[] = [];\r\n let keyword = '';\r\n let educationalLevels = [];\r\n let serviceTypes = [];\r\n let beneficiaries = [];\r\n let sortBy = 1;\r\n let pageNumber = 1;\r\n let pageSize = +paginationDropdown.value;\r\n let totalPages = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage = false;\r\n let hasPreviousPage = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading = false;\r\n let clickedNumber = null;\r\n\r\n let serviceCardSettings: FetchServiceCardSettingsResponse = {\r\n cardButtonText: '',\r\n availableText: '',\r\n endText: '',\r\n };\r\n\r\n const fetchServiceCardSettings = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/services/cardsettings?currentCulture=${currentCulture}`,\r\n );\r\n\r\n serviceCardSettings = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchServices = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchServicesListingPayload = {\r\n keyword,\r\n educationalLevels,\r\n serviceTypes,\r\n beneficiaries,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n disableInputs();\r\n\r\n try {\r\n // For developement:\r\n // const response = await axios.get('https://localhost:44323/api/services', {\r\n // params: payload,\r\n // headers: {\r\n // 'Access-Control-Allow-Origin': '*'\r\n // }\r\n // });\r\n\r\n const response = await axios.post('/api/services', payload);\r\n\r\n servicesCards = response.data.items;\r\n\r\n if (servicesCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n\r\n totalCount = response.data.totalCount;\r\n totalPages = response.data.totalPages;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n servicesCards,\r\n fetchServices,\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n servicesFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n servicesFilters.classList.remove('disabled');\r\n };\r\n\r\n const updateCards = () => {\r\n grid.innerHTML = '';\r\n\r\n servicesCards.forEach((card: ServiceCard) => {\r\n const cardElement = document.createElement('a');\r\n cardElement.className = 'service-list__card fade-in';\r\n cardElement.setAttribute('href', card.link);\r\n\r\n var _class = '';\r\n if (IsFavourited(card.id, favouritedIds)) {\r\n _class = 'active';\r\n }\r\n\r\n cardElement.innerHTML = `\r\n

    ${\r\n card.isAvailable ? serviceCardSettings.availableText : serviceCardSettings.endText\r\n }

    \r\n\t\t\t\t

    ${card.title}

    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\tcard alt\r\n\t\t\t\t
    \r\n\t\t\t\t

    \r\n\t\t\t\t\t\t${card.description}\r\n\t\t\t\t

    \r\n\t\t\t\t
    \r\n \r\n\t\t\t\t\t
    \r\n ${\r\n IsUserLoggedIn()\r\n ? ``\r\n : ''\r\n }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t`;\r\n\r\n grid.appendChild(cardElement);\r\n });\r\n\r\n addCardListeners();\r\n };\r\n\r\n // Listeners\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchServices();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchServices();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchServices();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchServices();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchServices();\r\n });\r\n\r\n let timeout = null;\r\n servicesListingSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = servicesListingSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchServices();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Latest\r\n // 2 = A-Z\r\n // 3 = Z-A\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = servicesListing.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchServices();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const beneficiariesOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n beneficiariesOptions.push(element.textContent);\r\n });\r\n beneficiaries = beneficiariesOptions;\r\n break;\r\n case 1:\r\n const serviceTypeOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n serviceTypeOptions.push(element.textContent);\r\n });\r\n serviceTypes = serviceTypeOptions;\r\n break;\r\n case 2:\r\n const educationalLevelOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n educationalLevelOptions.push(element.textContent);\r\n });\r\n educationalLevels = educationalLevelOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchServices();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n filterMobile.addEventListener('click', () => {\r\n const dropdowns = servicesListing.querySelector('.service-list__dropdowns') as HTMLDivElement;\r\n dropdowns.classList.toggle('service-list__dropdowns--active');\r\n });\r\n\r\n const initializeEventsList = async () => {\r\n await fetchServiceCardSettings();\r\n await fetchServices();\r\n };\r\n\r\n // Call the initialize function\r\n initializeEventsList();\r\n\r\n const addCardListeners = () => {\r\n const serviceListCards: NodeListOf = servicesListing.querySelectorAll('.service-list__card');\r\n\r\n if (serviceListCards.length > 0) {\r\n const cardButtons: NodeListOf = document.querySelectorAll('.service-list__button');\r\n\r\n serviceListCards.forEach((card) => {\r\n card.addEventListener('click', (e) => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (target.classList.contains('button') || target.classList.contains('button__image')) {\r\n e.preventDefault();\r\n }\r\n });\r\n });\r\n\r\n cardButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n if (button.classList.contains('favouriteButton')) {\r\n let t = button.getAttribute('data-type');\r\n var id = Number(button.getAttribute('data-id'));\r\n saveOrRemoveFavourite(t, id, button);\r\n } else if (button.classList.contains('shareButton')) {\r\n copyToClipboard(button);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n}\r\n","import {\r\n FetchServiceResultsStudentsListItemsPayload,\r\n FetchServiceResultsStudentsListItemsResponse,\r\n FetchServiceResultsStudentsTableColumnsNamesResponse,\r\n ResultItem,\r\n StudentItem,\r\n} from './serviceResults.types';\r\nimport axios from 'axios';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\n\r\nconst serviceResults = document.querySelector('.service-results') as HTMLDivElement;\r\n\r\nif (serviceResults) {\r\n const eventTabs: NodeListOf = serviceResults.querySelectorAll('.service-results__tab');\r\n const sections: NodeListOf = serviceResults.querySelectorAll('.service-results__section');\r\n const eventTabsContainer = serviceResults.querySelector('.service-results__tabs') as HTMLDivElement;\r\n const tableImagesContainer: NodeListOf = serviceResults.querySelectorAll(\r\n '.service-results__table-images'\r\n );\r\n\r\n let activeTab: number = 0;\r\n\r\n if (eventTabs.length > 1) {\r\n const resetTabs = () => {\r\n eventTabs.forEach((tab) => tab.classList.remove('service-results__tab--active'));\r\n sections.forEach((tab) => tab.classList.remove('service-results__section--active'));\r\n };\r\n\r\n eventTabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetTabs();\r\n\r\n eventTabs[activeTab].classList.add('service-results__tab--active');\r\n sections[activeTab].classList.add('service-results__section--active');\r\n });\r\n });\r\n } else {\r\n eventTabsContainer.classList.add('hidden');\r\n }\r\n\r\n tableImagesContainer.forEach((item) => {\r\n if (item.children.length > 1) {\r\n item.nextElementSibling.classList.add('service-results__table-content-title-alt');\r\n }\r\n });\r\n\r\n const studentsTableBody = serviceResults.querySelector('.service-results__table-body') as HTMLDivElement;\r\n if (studentsTableBody) {\r\n const studentsMobileTableBody = serviceResults.querySelector(\r\n '.service-results__table-mobile-body'\r\n ) as HTMLDivElement;\r\n const nextPageButton = serviceResults.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = serviceResults.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = serviceResults.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = serviceResults.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = serviceResults.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = serviceResults.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = serviceResults.querySelectorAll('.sort-filter__input');\r\n const serviceResultsFilters = serviceResults.querySelector('.service-results__filters') as HTMLDivElement;\r\n const serviceResultsSearchInput = serviceResults.querySelector(\r\n '.service-results__search-input'\r\n ) as HTMLInputElement;\r\n const dropdownFilters: NodeListOf = serviceResults.querySelectorAll('.dropdown-filter');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n const parentNodeId = serviceResults.getAttribute('data-id');\r\n\r\n let serviceResultsStudentsItems: ResultItem[] = [];\r\n let keyword = '';\r\n let educationDepartments = [];\r\n let positions = [];\r\n let years = [];\r\n let sortBy = 1;\r\n let pageNumber = 1;\r\n let pageSize = +paginationDropdown.value;\r\n let totalPages = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage = false;\r\n let hasPreviousPage = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading = false;\r\n let clickedNumber = null;\r\n\r\n let serviceResultsStudentsTableColumnsNames: FetchServiceResultsStudentsTableColumnsNamesResponse[] = [];\r\n\r\n const fetchServiceResultsStudentsTableColumnsNames = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/services/results/columnsNames/${parentNodeId}?currentCulture=${currentCulture}`\r\n );\r\n\r\n serviceResultsStudentsTableColumnsNames = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchServiceResultsStudentsList = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchServiceResultsStudentsListItemsPayload = {\r\n parentNodeId,\r\n keyword,\r\n educationDepartments,\r\n positions,\r\n years,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/services/results',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post(\r\n '/api/services/results',\r\n payload\r\n );\r\n }\r\n serviceResultsStudentsItems = response.data.items;\r\n if (serviceResultsStudentsItems.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n serviceResultsStudentsItems,\r\n fetchServiceResultsStudentsList\r\n );\r\n isLoading = false;\r\n updateItems();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n serviceResultsFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n serviceResultsFilters.classList.remove('disabled');\r\n };\r\n\r\n const updateItems = () => {\r\n studentsTableBody.innerHTML = '';\r\n studentsMobileTableBody.innerHTML = '';\r\n\r\n serviceResultsStudentsItems.forEach((item: ResultItem) => {\r\n const rowElement = document.createElement('tr');\r\n rowElement.className = 'gifted-sublist__table-row';\r\n\r\n rowElement.innerHTML = `\r\n ${\r\n serviceResultsStudentsTableColumnsNames.some(\r\n (item) => item.key.toLowerCase() === 'student/team name',\r\n )\r\n ? `\r\n
    \r\n
    \r\n ${item.students[0].name}\r\n
    \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n serviceResultsStudentsTableColumnsNames.some(\r\n (item) => item.key.toLowerCase() === 'project title'\r\n )\r\n ? `\r\n \r\n ${item.projectTitle}\r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n serviceResultsStudentsTableColumnsNames.some(\r\n (item) => item.key.toLowerCase() === 'education department',\r\n )\r\n ? `\r\n \r\n ${item.educationDepartment}\r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n serviceResultsStudentsTableColumnsNames.some((item) => item.key.toLowerCase() === 'school')\r\n ? `\r\n \r\n ${item.school}\r\n \r\n `\r\n : ''\r\n }\r\n ${\r\n serviceResultsStudentsTableColumnsNames.some(\r\n (item) => item.key.toLowerCase() === 'search entity'\r\n )\r\n ? `\r\n \r\n ${\r\n item.searchEntity !== null ? item.searchEntity : '-'\r\n }\r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n serviceResultsStudentsTableColumnsNames.some((item) => item.key.toLowerCase() === 'prize')\r\n ? `\r\n \r\n \"icon\"\r\n ${item.position}\r\n \r\n `\r\n : ''\r\n }`;\r\n\r\n var images = rowElement.querySelector('.service-results__table-images') as HTMLDivElement;\r\n\r\n if (images) {\r\n item.students\r\n .filter((std) => std.image !== null && std.image !== undefined && std.image !== '')\r\n .forEach((student) => {\r\n const imageItem = document.createElement('img');\r\n imageItem.alt = 'student image';\r\n imageItem.src = student.image;\r\n imageItem.classList.add('service-results__table-image');\r\n images.appendChild(imageItem);\r\n });\r\n }\r\n\r\n addMobileRow(item);\r\n\r\n studentsTableBody.appendChild(rowElement);\r\n });\r\n };\r\n\r\n const addMobileRow = (item: ResultItem) => {\r\n const studentName = serviceResultsStudentsTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'student/team name'\r\n );\r\n const projectTitle = serviceResultsStudentsTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'project title'\r\n );\r\n const educationDepartment = serviceResultsStudentsTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'education department'\r\n );\r\n const school = serviceResultsStudentsTableColumnsNames.find((item) => item.key.toLowerCase() === 'school');\r\n const searchEntity = serviceResultsStudentsTableColumnsNames.find(\r\n (item) => item.key.toLowerCase() === 'search entity'\r\n );\r\n const prize = serviceResultsStudentsTableColumnsNames.find((item) => item.key.toLowerCase() === 'prize');\r\n\r\n studentsMobileTableBody.insertAdjacentHTML(\r\n 'beforeend',\r\n `\r\n ${\r\n studentName !== undefined\r\n ? `\r\n ${studentName.value}\r\n \r\n
    \r\n
    \r\n ${item.students[0].name}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n projectTitle !== undefined\r\n ? `\r\n ${projectTitle.value}\r\n \r\n
    \r\n ${item.projectTitle}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n educationDepartment !== undefined\r\n ? `\r\n ${educationDepartment.value}\r\n \r\n
    \r\n ${item.educationDepartment}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n prize !== undefined\r\n ? `\r\n ${prize.value}\r\n \r\n
    \r\n \"alt\"\r\n ${item.position}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n school !== undefined\r\n ? `\r\n ${school.value}\r\n \r\n
    \r\n ${item.school}\r\n
    \r\n \r\n `\r\n : ''\r\n }\r\n \r\n ${\r\n searchEntity !== undefined\r\n ? `\r\n ${searchEntity.value}\r\n \r\n
    \r\n ${\r\n item.searchEntity !== null ? item.searchEntity : '-'\r\n }\r\n
    \r\n \r\n `\r\n : ''\r\n }`\r\n );\r\n };\r\n\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchServiceResultsStudentsList();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchServiceResultsStudentsList();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchServiceResultsStudentsList();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchServiceResultsStudentsList();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchServiceResultsStudentsList();\r\n });\r\n\r\n let timeout = null;\r\n serviceResultsSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = serviceResultsSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchServiceResultsStudentsList();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Lowest\r\n // 2 = Highest\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = serviceResults.querySelector(\r\n 'input[name=\"sort-filter\"]:checked'\r\n ) as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchServiceResultsStudentsList();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector(\r\n '.dropdown-filter__button-container'\r\n ) as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const educationDepartmentsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n educationDepartmentsOptions.push(element.textContent);\r\n });\r\n educationDepartments = educationDepartmentsOptions;\r\n break;\r\n case 1:\r\n const positionsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n positionsOptions.push(element.textContent);\r\n });\r\n positions = positionsOptions;\r\n break;\r\n case 2:\r\n const yearsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n yearsOptions.push(element.textContent);\r\n });\r\n years = yearsOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchServiceResultsStudentsList();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n const initializeList = async () => {\r\n await fetchServiceResultsStudentsTableColumnsNames();\r\n await fetchServiceResultsStudentsList();\r\n };\r\n\r\n // Call the initialize function\r\n initializeList();\r\n }\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n}\r\n","const serviceTimelineThree = document.querySelector(\".service-timeline-three\") as HTMLElement;\r\n\r\nif (serviceTimelineThree) {\r\n const getFormattedTime = (dateStr: string | null) => {\r\n if (!dateStr) return;\r\n\r\n const date = new Date(dateStr);\r\n const hour = String(date.getHours()).padStart(2, '0') as String;\r\n const minutes = String(date.getMinutes()).padStart(2, '0') as String;\r\n\r\n return `${hour}:${minutes}`;\r\n }\r\n\r\n const times: NodeListOf = serviceTimelineThree.querySelectorAll(\".service-timeline-three__table-content-time\");\r\n\r\n times.forEach(time => {\r\n time.textContent = getFormattedTime(time.textContent);\r\n });\r\n}\r\n","import formatDateString from '../../../helpers/formatDate';\r\nimport convertTime from '../../../helpers/formatTime';\r\n\r\nconst serviceTimelineTwo = document.querySelector(\".service-timeline-two\") as HTMLElement;\r\nconst html = document.querySelector(\"html\") as HTMLElement;\r\nconst dir = html.getAttribute(\"dir\") as string;\r\n\r\nif (serviceTimelineTwo) {\r\n const dates: NodeListOf = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-content-date\");\r\n const times: NodeListOf = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-content-time\");\r\n const tableRows: NodeListOf = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-row\");\r\n const datesTriggers: NodeListOf = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-content-dates-multi\");\r\n const innerTables: NodeListOf = serviceTimelineTwo.querySelectorAll(\".service-timeline-two__table-inner\");\r\n\r\n dates.forEach(date => {\r\n date.textContent = formatDateString(date.textContent)\r\n })\r\n\r\n times.forEach(time => {\r\n time.textContent = convertTime(time.textContent, dir)\r\n })\r\n\r\n tableRows.forEach(row => {\r\n const height = row.clientHeight as Number;\r\n\r\n row.setAttribute(\"data-height\", height.toString())\r\n })\r\n\r\n datesTriggers.forEach((trigger, index) => {\r\n trigger.addEventListener(\"click\", (e) => {\r\n const innerTable = innerTables[index] as HTMLElement;\r\n const icon = trigger.querySelector(\".service-timeline-two__table-content-chevron\") as HTMLElement;\r\n\r\n if (innerTable.classList.contains(\"service-timeline-two__table-inner--active\")) {\r\n innerTable.classList.remove(\"service-timeline-two__table-inner--active\");\r\n icon.classList.remove(\"service-timeline-two__table-content-chevron--rotate\")\r\n\r\n const activeRow = trigger.parentElement.parentElement.parentElement as HTMLElement;\r\n const activeRowHeight = activeRow.getAttribute(\"data-height\") as String;\r\n\r\n activeRow.style.height = `${activeRowHeight}px`;\r\n innerTable.style.top = \"0\";\r\n } else {\r\n innerTable.classList.add(\"service-timeline-two__table-inner--active\");\r\n icon.classList.add(\"service-timeline-two__table-content-chevron--rotate\")\r\n\r\n const activeRow = trigger.parentElement.parentElement.parentElement as HTMLElement;\r\n const activeRowHeight = activeRow.clientHeight;\r\n const innerTableHeight = innerTable.clientHeight;\r\n const margin = 16;\r\n\r\n activeRow.style.height = `${innerTableHeight + activeRowHeight + margin}px`;\r\n innerTable.style.top = `${activeRowHeight}px`;\r\n }\r\n })\r\n })\r\n}","import formatDateString from '../../../helpers/formatDate';\r\nimport convertTime from '../../../helpers/formatTime';\r\nimport { TooltipItem, TimelineItem } from './serviceTimeline.types';\r\nimport axios from 'axios';\r\n\r\nconst serviceTimeline = document.querySelector('.service-timeline') as HTMLDivElement;\r\nconst direction: string = document.querySelector('html').getAttribute('dir');\r\n\r\nif (serviceTimeline) {\r\n const serviceTimelineGrid = serviceTimeline.querySelector('.service-timeline__inner') as HTMLDivElement;\r\n const parentNodeId = serviceTimeline.getAttribute('data-id');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let timelineItems: TimelineItem[] = [];\r\n\r\n const fetchServiceTimeline = async () => {\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.get(\r\n `https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/services/timeline?nodeId=${parentNodeId}¤tCulture=${currentCulture}`\r\n );\r\n } else {\r\n response = await axios.get(\r\n `/api/services/timeline?nodeId=${parentNodeId}¤tCulture=${currentCulture}`\r\n );\r\n }\r\n timelineItems = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n updateItems();\r\n\r\n initializeDates();\r\n }\r\n };\r\n\r\n const updateItems = () => {\r\n serviceTimelineGrid.innerHTML = '';\r\n\r\n timelineItems.forEach((item: TimelineItem) => {\r\n const itemElement = document.createElement('div');\r\n\r\n itemElement.className = 'service-timeline__item';\r\n\r\n itemElement.innerHTML = `\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n ${item.endDate !== null\r\n ? `\r\n \r\n \r\n \r\n
    `\r\n : ''\r\n }\r\n \r\n
    \r\n
    \r\n ${item.title}\r\n ${item.tooltips !== null && item.tooltips.length !== 0\r\n ? ``\r\n : ''\r\n }\r\n
    \r\n
    \r\n ${item.description}\r\n
    \r\n
    \r\n `;\r\n\r\n if (item.tooltips !== null && item.tooltips.length !== 0) {\r\n const tooltipList = itemElement.querySelector(\r\n '.service-timeline__item-tooltip-inner'\r\n ) as HTMLDivElement;\r\n\r\n item.tooltips.forEach((tootlip: TooltipItem) => {\r\n const tooltipElement = document.createElement('li');\r\n\r\n tooltipElement.className = 'service-timeline__item-tooltip-row flex flex--align-center';\r\n\r\n tooltipElement.innerHTML = `\r\n
    ${tootlip.educationLevel}
    \r\n
    \r\n \"calendar\r\n \r\n \r\n
    \r\n
    \r\n \"clock\r\n \r\n \r\n
    `;\r\n\r\n tooltipList.appendChild(tooltipElement);\r\n });\r\n }\r\n\r\n serviceTimelineGrid.appendChild(itemElement);\r\n });\r\n };\r\n\r\n const initializeDates = () => {\r\n const serviceTimelineItems: NodeListOf =\r\n serviceTimeline.querySelectorAll('.service-timeline__item');\r\n if (serviceTimelineItems.length === 1) {\r\n serviceTimelineItems[0].classList.add('service-timeline__item--single');\r\n }\r\n\r\n const setDates = (month: HTMLSpanElement, day: HTMLSpanElement, year: HTMLSpanElement, arr: string[]) => {\r\n month.textContent = arr[1];\r\n day.textContent = arr[0];\r\n year.textContent = arr[2];\r\n };\r\n\r\n serviceTimelineItems.forEach((item) => {\r\n const dateFrom = item.querySelector('.service-timeline__date-from').getAttribute('data-dateFrom') as string;\r\n const dateTo = item.querySelector('.service-timeline__date-to')?.getAttribute('data-dateTo') as string;\r\n const monthFromElement = item.querySelector('.service-timeline__date-month-from') as HTMLSpanElement;\r\n const dayFromElement = item.querySelector('.service-timeline__date-day-from') as HTMLSpanElement;\r\n const yearFromElement = item.querySelector('.service-timeline__date-year-from') as HTMLSpanElement;\r\n const dateFromArray: string[] = formatDateString(dateFrom).split(' ');\r\n\r\n setDates(monthFromElement, dayFromElement, yearFromElement, dateFromArray);\r\n\r\n if (dateTo) {\r\n const monthToElement = item.querySelector('.service-timeline__date-month-to') as HTMLSpanElement;\r\n const dayToElement = item.querySelector('.service-timeline__date-day-to') as HTMLSpanElement;\r\n const yearToElement = item.querySelector('.service-timeline__date-year-to') as HTMLSpanElement;\r\n const dateToArray: string[] = formatDateString(dateTo).split(' ');\r\n\r\n setDates(monthToElement, dayToElement, yearToElement, dateToArray);\r\n }\r\n\r\n const tooltipDateElements: NodeListOf = item.querySelectorAll(\r\n '.service-timeline__item-tooltip-date'\r\n );\r\n const tooltipTimeElements: NodeListOf = item.querySelectorAll(\r\n '.service-timeline__item-tooltip-time'\r\n );\r\n\r\n if (tooltipDateElements.length > 0) {\r\n tooltipDateElements.forEach((tool) => {\r\n const content = tool.querySelector('.service-timeline__item-tooltip-content') as HTMLSpanElement;\r\n\r\n content.textContent = formatDateString(tool.getAttribute('data-tooltipDate'));\r\n });\r\n }\r\n\r\n if (tooltipTimeElements.length > 0) {\r\n tooltipTimeElements.forEach((tool, index) => {\r\n const timing = tool.querySelector('.service-timeline__item-tooltip-timing') as HTMLSpanElement;\r\n\r\n if (timing) {\r\n timing.textContent = convertTime(tool.getAttribute('data-tooltipTime'), direction);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n fetchServiceTimeline();\r\n}\r\n","const filters: NodeListOf = document.querySelectorAll('.single-dropdown-filter');\r\nconst direction: string = document.querySelector('html').getAttribute('dir');\r\n\r\nfilters.forEach((item) => {\r\n // get select that has the options available\r\n const selects: NodeListOf = item.querySelectorAll('.single-select');\r\n selects.forEach((select) => {\r\n init(select);\r\n });\r\n\r\n document.addEventListener('click', (e) => {\r\n // get select that has the options available\r\n const selects: NodeListOf = document.querySelectorAll('.single-select');\r\n const triggers = document.querySelectorAll('.single-dropdown-filter__trigger');\r\n\r\n for (let i = 0; i < selects.length; i++) {\r\n if (e) {\r\n var isClickInside = selects[i].parentElement.parentElement.contains(e.target as Node);\r\n\r\n if (!isClickInside) {\r\n const wrapper: HTMLDivElement = selects[i].parentElement.parentElement as HTMLDivElement;\r\n const dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n const autocomplete_list = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n //the click was outside the specifiedElement, do something\r\n dropdown.classList.remove('active');\r\n const multiSelects = document.querySelectorAll('.single-dropdown-filter__multi-select-container');\r\n multiSelects[i].classList.remove('single-dropdown-filter__multi-select-container--active');\r\n triggers[i].classList.remove('single-dropdown-filter__trigger--active');\r\n autocomplete_list.innerHTML = '';\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Show dropdown on trigger click\r\n const trigger = item.querySelector('.single-dropdown-filter__trigger');\r\n\r\n trigger.addEventListener('click', handleTrigger);\r\n trigger.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n handleTrigger(e);\r\n }\r\n });\r\n\r\n // FUNCTIONS\r\n function handleTrigger(e) {\r\n const wrapper = item.querySelector('.single-dropdown-filter__multi-select-container');\r\n\r\n if (wrapper.classList.contains('single-dropdown-filter__multi-select-container--active')) {\r\n wrapper.classList.remove('single-dropdown-filter__multi-select-container--active');\r\n trigger.classList.remove('single-dropdown-filter__trigger--active');\r\n } else {\r\n wrapper.classList.add('single-dropdown-filter__multi-select-container--active');\r\n trigger.classList.add('single-dropdown-filter__trigger--active');\r\n }\r\n\r\n const dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n\r\n function init(element: HTMLSelectElement) {\r\n const filter = item;\r\n // Create div that wraps all the elements inside (select, elements selected, search div) to put select inside\r\n const wrapper = document.createElement('div');\r\n wrapper.addEventListener('click', clickOnWrapper);\r\n wrapper.classList.add('single-dropdown-filter__multi-select-container');\r\n\r\n // Create elements of search\r\n const search_div = document.createElement('div');\r\n search_div.classList.add('single-dropdown-filter__search-container');\r\n\r\n const input = document.createElement('input');\r\n input.classList.add('selected-input');\r\n input.setAttribute('autocomplete', 'off');\r\n input.setAttribute('tabindex', '0');\r\n input.addEventListener('keyup', inputChange);\r\n input.addEventListener('click', openOptions);\r\n\r\n const dropdown_icon = document.createElement('a');\r\n dropdown_icon.classList.add('single-dropdown-filter__dropdown-icon');\r\n\r\n dropdown_icon.addEventListener('click', clickDropdown);\r\n const autocomplete_list = document.createElement('ul');\r\n autocomplete_list.classList.add('single-dropdown-filter__autocomplete-list');\r\n\r\n search_div.appendChild(input);\r\n search_div.appendChild(autocomplete_list);\r\n search_div.appendChild(dropdown_icon);\r\n\r\n // set the wrapper as child (instead of the element)\r\n element.parentNode.replaceChild(wrapper, element);\r\n // set element as child of wrapper\r\n wrapper.appendChild(element);\r\n wrapper.appendChild(search_div);\r\n\r\n addPlaceholder(wrapper);\r\n }\r\n\r\n function removePlaceholder(wrapper: HTMLDivElement) {\r\n const input_search = wrapper.querySelector('.selected-input');\r\n input_search.removeAttribute('placeholder');\r\n }\r\n\r\n function addPlaceholder(wrapper: HTMLDivElement) {\r\n const input_search = wrapper.querySelector('.selected-input');\r\n const tokens = wrapper.querySelectorAll('.single-dropdown-filter__selected-wrapper');\r\n if (!tokens.length && !(document.activeElement === input_search))\r\n input_search.setAttribute('placeholder', '---------');\r\n }\r\n\r\n // Listener of user search\r\n function inputChange(e) {\r\n const wrapper = e.target.parentNode.parentNode;\r\n const select = wrapper.querySelector('select');\r\n const dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n\r\n const input_val = e.target.value;\r\n\r\n if (input_val) {\r\n dropdown.classList.add('active');\r\n populateAutocompleteList(select, input_val.trim());\r\n } else {\r\n dropdown.classList.remove('active');\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n }\r\n\r\n // Listen for clicks on the wrapper, if click happens focus on the input\r\n function clickOnWrapper(e) {\r\n const wrapper = e.target;\r\n if (wrapper.tagName == 'DIV') {\r\n const input_search = wrapper.querySelector('.selected-input');\r\n const dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n if (!dropdown.classList.contains('active')) {\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n input_search.focus();\r\n removePlaceholder(wrapper);\r\n }\r\n }\r\n\r\n function openOptions(e) {\r\n const input_search = e.target;\r\n const wrapper = input_search.parentElement.parentElement;\r\n const dropdown = wrapper.querySelector('.single-dropdown-filter__dropdown-icon');\r\n if (!dropdown.classList.contains('active')) {\r\n const event = new Event('click');\r\n dropdown.dispatchEvent(event);\r\n }\r\n e.stopPropagation();\r\n }\r\n\r\n // Listen for clicks in the dropdown option\r\n function clickDropdown(e) {\r\n const dropdown = e.target;\r\n const wrapper = dropdown.parentNode.parentNode;\r\n const input_search = wrapper.querySelector('.selected-input');\r\n const select = wrapper.querySelector('select');\r\n dropdown.classList.toggle('active');\r\n\r\n if (dropdown.classList.contains('active')) {\r\n removePlaceholder(wrapper);\r\n input_search.focus();\r\n\r\n if (!input_search.value) {\r\n populateAutocompleteList(select, '', true);\r\n } else {\r\n populateAutocompleteList(select, input_search.value);\r\n }\r\n } else {\r\n clearAutocompleteList(select);\r\n addPlaceholder(wrapper);\r\n }\r\n }\r\n\r\n // Clears the results of the autocomplete list\r\n function clearAutocompleteList(select) {\r\n const wrapper = select.parentNode;\r\n const autocomplete_list: HTMLUListElement = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n autocomplete_list.innerHTML = '';\r\n }\r\n\r\n // Populate the autocomplete list following a given query from the user\r\n function populateAutocompleteList(select, query, dropdown = false) {\r\n const { autocomplete_options, all_options, option_selected } = getOptions(select);\r\n\r\n let options_to_show: Array;\r\n\r\n if (dropdown) options_to_show = autocomplete_options;\r\n else options_to_show = autocomplete(query, autocomplete_options);\r\n\r\n const wrapper = select.parentNode;\r\n const autocomplete_list = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n autocomplete_list.innerHTML = '';\r\n const result_size = options_to_show.length;\r\n\r\n if (result_size > 0) {\r\n for (let i = 0; i < result_size; i++) {\r\n if (options_to_show[i] === '') {\r\n // this is an empty option\r\n const emptyli = document.createElement('li');\r\n emptyli.innerText = '';\r\n emptyli.classList.add('hidden');\r\n if (result_size == 1) {\r\n const li = document.createElement('li');\r\n li.classList.add('not-cursor');\r\n if (direction === 'rtl') {\r\n li.innerText = 'لم يتم العثور على خيارات';\r\n } else {\r\n li.innerText = 'No options found';\r\n }\r\n autocomplete_list.appendChild(li);\r\n }\r\n } else {\r\n const li = document.createElement('li');\r\n li.innerText = options_to_show[i];\r\n li.setAttribute('data-value', options_to_show[i]);\r\n li.addEventListener('click', selectOption);\r\n autocomplete_list.appendChild(li);\r\n }\r\n }\r\n } else {\r\n const li = document.createElement('li');\r\n li.classList.add('not-cursor');\r\n if (direction === 'rtl') {\r\n li.innerText = 'لم يتم العثور على خيارات';\r\n } else {\r\n li.innerText = 'No options found';\r\n }\r\n autocomplete_list.appendChild(li);\r\n }\r\n\r\n handleListItems(option_selected);\r\n }\r\n\r\n // Listener to autocomplete results when clicked set the selected property in the select option\r\n function selectOption(e) {\r\n const filterComponent = item;\r\n\r\n // get selected options\r\n const select: HTMLSelectElement = filterComponent.querySelector('.single-select');\r\n\r\n const option_selected: HTMLSelectElement = select.querySelector('option:checked');\r\n option_selected.removeAttribute('selected');\r\n\r\n const wrapper = e.target.parentNode.parentNode.parentNode;\r\n const input_search: HTMLInputElement = wrapper.querySelector('.selected-input');\r\n const option: HTMLOptionElement = wrapper.querySelector(`select option[value=\"${e.target.dataset.value}\"]`);\r\n\r\n option.setAttribute('selected', '');\r\n select.dispatchEvent(new Event('change'));\r\n\r\n trigger.innerHTML = e.target.dataset.value;\r\n\r\n if (input_search.value) {\r\n input_search.value = '';\r\n }\r\n\r\n input_search.focus();\r\n\r\n const autocomplete_list: HTMLUListElement = wrapper.querySelector('.single-dropdown-filter__autocomplete-list');\r\n\r\n if (!autocomplete_list.children.length) {\r\n const li = document.createElement('li');\r\n li.classList.add('not-cursor');\r\n li.innerText = 'No options found';\r\n autocomplete_list.appendChild(li);\r\n }\r\n\r\n const event = new Event('keyup');\r\n input_search.dispatchEvent(event);\r\n e.stopPropagation();\r\n }\r\n\r\n // function that returns a list with the autcomplete list of matches\r\n function autocomplete(query, options) {\r\n // No query passed, just return entire list\r\n if (!query) {\r\n return options;\r\n }\r\n\r\n let options_return = [];\r\n\r\n for (let i = 0; i < options.length; i++) {\r\n if (options[i].toLowerCase().includes(query.toLowerCase())) {\r\n options_return.push(options[i]);\r\n }\r\n }\r\n\r\n return options_return;\r\n }\r\n\r\n // Returns the options that are selected by the user and the ones that are not\r\n function getOptions(select) {\r\n // Select all the options available\r\n const all_options = Array.from(select.querySelectorAll('option')).map((el: HTMLSelectElement) => el.value);\r\n\r\n // Get the options that are selected from the user\r\n const option_selected: HTMLSelectElement = select.querySelector('option:checked');\r\n // Create an autocomplete options array with the options that are not selected by the user\r\n let autocomplete_options = [];\r\n all_options.forEach((option) => {\r\n if (option_selected.value !== option) {\r\n autocomplete_options.push(option);\r\n }\r\n });\r\n\r\n autocomplete_options.sort();\r\n\r\n autocomplete_options = all_options;\r\n\r\n return {\r\n autocomplete_options,\r\n all_options,\r\n option_selected: option_selected.value,\r\n };\r\n }\r\n\r\n const handleListItems = (option: any) => {\r\n const list: NodeListOf = item.querySelectorAll(\r\n '.single-dropdown-filter__autocomplete-list li'\r\n );\r\n\r\n list.forEach((item) => {\r\n if (option === item.textContent) {\r\n item.classList.add('item--active');\r\n } else {\r\n item.classList.remove('item--active');\r\n }\r\n });\r\n };\r\n});\r\n","const sortFilter: HTMLDivElement = document.querySelector(\".sort-filter\");\r\n\r\nif (sortFilter) {\r\n const dateRangeFilterTrigger: HTMLDivElement = sortFilter.querySelector(\".sort-filter__icon-container\");\r\n const dateRangeInner: HTMLDivElement = sortFilter.querySelector(\".sort-filter__inner\");\r\n const dateRangeIcon: HTMLDivElement = sortFilter.querySelector(\".sort-filter__icon-container\");\r\n const radioInputLabels: NodeListOf = sortFilter.querySelectorAll(\".sort-filter__input-container\");\r\n const radioInputs: NodeListOf = sortFilter.querySelectorAll(\".sort-filter__input\");\r\n\r\n const handleTrigger = () => {\r\n dateRangeInner.classList.toggle(\"sort-filter__inner--active\");\r\n dateRangeIcon.classList.toggle(\"sort-filter__icon-container--active\");\r\n }\r\n\r\n const closeSortFilter = () => {\r\n dateRangeInner.classList.remove(\"sort-filter__inner--active\")\r\n dateRangeIcon.classList.remove(\"sort-filter__icon-container--active\")\r\n }\r\n\r\n radioInputLabels.forEach((label, index) => {\r\n label.addEventListener('click', (e) => {\r\n radioInputs.forEach(input => input.setAttribute(\"data-checked\", \"false\")); // Uncheck all radios\r\n radioInputs[index].setAttribute(\"data-checked\", \"true\") // Check the clicked one\r\n });\r\n\r\n label.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n radioInputs.forEach(input => input.setAttribute(\"data-checked\", \"false\")); // Uncheck all radios\r\n radioInputs[index].setAttribute(\"data-checked\", \"true\") // Check the clicked one\r\n }\r\n });\r\n });\r\n\r\n dateRangeFilterTrigger.addEventListener(\"click\", () => {\r\n handleTrigger()\r\n })\r\n\r\n dateRangeFilterTrigger.addEventListener('keydown', (e: KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n handleTrigger()\r\n }\r\n });\r\n\r\n document.addEventListener('click', (event: MouseEvent) => {\r\n if (event.target instanceof Element) {\r\n if (sortFilter && !sortFilter.contains(event.target)) {\r\n closeSortFilter()\r\n }\r\n }\r\n })\r\n\r\n document.addEventListener('keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n closeSortFilter()\r\n }\r\n });\r\n}","import axios from 'axios';\r\nimport { StarRatingDto } from './starRatings.types';\r\n\r\nexport const initStarRatings = () => {\r\n const starRatingComponents: NodeListOf = document.querySelectorAll('.reviews');\r\n\r\n if (starRatingComponents.length > 0) {\r\n starRatingComponents.forEach(item => {\r\n const starRating = item.querySelector('.star-rating') as HTMLDivElement;\r\n const pageId = parseInt(starRating.getAttribute('data-pageid'));\r\n const isUserRated = parseInt(starRating.getAttribute('data-user-rated'));\r\n const avgRating = parseInt(starRating.getAttribute('data-avg-rating'));\r\n const ratingValue = item.querySelector('.rating-value') as HTMLDivElement;\r\n const totalReviews = item.parentNode.querySelector('.service-details__row-title-bold') as HTMLSpanElement;\r\n\r\n // const ratingSpans = starRating.querySelectorAll('.star-rating span.rating') as NodeListOf;\r\n\r\n // ratingSpans.forEach((rating) => {\r\n // rating.addEventListener('hover', () => {\r\n // const value: number = Number(rating.getAttribute('data-value'));\r\n\r\n // starRating.className = 'star-rating ' + 'rating_' + value.toString().replace('.', '');\r\n\r\n // highlight_star(value);\r\n // });\r\n\r\n // rating.addEventListener('click', () => {\r\n // const value: number = Number(rating.getAttribute('data-value'));\r\n\r\n // ratingValue.innerHTML = value.toString();\r\n\r\n // highlight_star(value);\r\n // });\r\n // });\r\n\r\n // const starSpans = starRating.querySelectorAll('.star-rating span.star') as NodeListOf;\r\n\r\n // const highlight_star = (rating: number): void => {\r\n // starSpans.forEach((star) => {\r\n // const low: number = Number(star.getAttribute('data-low'));\r\n // const high: number = Number(star.getAttribute('data-high'));\r\n // star.classList.remove('active-high', 'active-low');\r\n // if (rating >= high) star.classList.add('active-high');\r\n // else if (rating === low) star.classList.add('active-low');\r\n // });\r\n // };\r\n\r\n const stars: NodeListOf = item.querySelectorAll('.star');\r\n\r\n const SubmitAPICall = (rating: number) => {\r\n CreateRatingCommand(pageId, rating);\r\n disableStars();\r\n };\r\n\r\n const handleMouseOver = (event) => {\r\n const value = event.target.getAttribute('data-value');\r\n highlightStars(value);\r\n };\r\n\r\n const handleMouseOut = () => {\r\n unhighlightStars();\r\n };\r\n\r\n const handleClick = (event) => {\r\n const rating = Number(event.target.getAttribute('data-value'));\r\n SubmitAPICall(rating);\r\n };\r\n\r\n const highlightStars = (value) => {\r\n stars.forEach((star) => {\r\n star.classList.toggle('hovered', star.getAttribute('data-value') <= value);\r\n });\r\n };\r\n\r\n const unhighlightStars = () => {\r\n stars.forEach((star) => {\r\n star.classList.remove('hovered');\r\n });\r\n };\r\n\r\n const selectStars = (value) => {\r\n stars.forEach((star) => {\r\n star.classList.toggle('selected', star.getAttribute('data-value') <= value);\r\n star.classList.remove('hovered');\r\n });\r\n };\r\n\r\n const updateScienceStar = (rating: number) => {\r\n const trigger = item.previousElementSibling as HTMLDivElement;\r\n const unhoveredRatingValue = trigger.querySelector('.star-rating-text') as HTMLDivElement;\r\n\r\n if (trigger && trigger.classList.contains('star-rating-trigger')) {\r\n if (unhoveredRatingValue) {\r\n unhoveredRatingValue.innerHTML = rating.toString();\r\n }\r\n\r\n trigger.parentElement.blur();\r\n trigger.firstElementChild.remove();\r\n trigger.insertAdjacentHTML(\r\n 'afterbegin',\r\n `\r\n \r\n \r\n \r\n `,\r\n );\r\n }\r\n }\r\n\r\n const CreateRatingCommand = async (pageId: number, rating: number) => {\r\n try {\r\n const response = await axios.post(`/api/rating?pageid=${pageId}&rating=${rating}`);\r\n selectStars(response.data.rating);\r\n ratingValue.innerHTML = response.data.rating.toString();\r\n\r\n if (totalReviews) {\r\n totalReviews.innerHTML = response.data.totalRatings.toString();\r\n }\r\n\r\n updateScienceStar(response.data.rating);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const disableStars = () => {\r\n starRating.classList.add('button--disabled');\r\n };\r\n\r\n if (isUserRated === 0) {\r\n stars.forEach((star) => {\r\n star.addEventListener('mouseover', handleMouseOver);\r\n star.addEventListener('mouseout', handleMouseOut);\r\n star.addEventListener('click', handleClick);\r\n });\r\n } else {\r\n selectStars(avgRating);\r\n ratingValue.innerHTML = avgRating.toString();\r\n disableStars();\r\n }\r\n })\r\n }\r\n}\r\n\r\ninitStarRatings()","google.charts.load('current', { packages: ['corechart'] });\r\nconst chartDiv = document.getElementById('bar_chart');\r\nif (chartDiv) {\r\n const chartwidth = chartDiv.parentElement.clientWidth;\r\n google.charts.setOnLoadCallback(() => {\r\n const chartDiv = document.getElementById('bar_chart');\r\n drawChart(chartDiv);\r\n });\r\n\r\n const changeChartStyles = () => {\r\n const chartColumns = chartDiv.getElementsByTagName('rect');\r\n const chartText = chartDiv.getElementsByTagName('text');\r\n\r\n // add border radius\r\n Array.prototype.forEach.call(chartColumns, function (rect) {\r\n if (parseFloat(rect.getAttribute('x')) > 0) {\r\n rect.setAttribute('rx', 5);\r\n rect.setAttribute('ry', 5);\r\n }\r\n });\r\n\r\n // add font family\r\n Array.prototype.forEach.call(chartText, function (text) {\r\n text.setAttribute('font-family', 'Alexandria,sans-serif');\r\n text.setAttribute('font-size', '10px');\r\n });\r\n };\r\n\r\n function drawChart(element: HTMLElement) {\r\n const chartData = element.getAttribute('data-chartdata');\r\n if (!chartData) {\r\n console.error('No data found in data-chartdata attribute');\r\n return;\r\n }\r\n\r\n const dataArray = JSON.parse(chartData);\r\n const data = google.visualization.arrayToDataTable(dataArray);\r\n\r\n const options = {\r\n width: chartwidth,\r\n height: 300,\r\n theme: 'material',\r\n legend: { position: 'bottom' },\r\n chartArea: {\r\n backgroundColor: '#F4F4F5',\r\n },\r\n vAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'out',\r\n baselineColor: 'grey',\r\n format: 'short',\r\n },\r\n hAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'out',\r\n baselineColor: 'transparent',\r\n },\r\n bar: { groupWidth: '25%' },\r\n backgroundColor: '#F4F4F5',\r\n colors: ['#E2A947', '#2B254B'],\r\n };\r\n\r\n var chart = new google.visualization.ColumnChart(element);\r\n\r\n var observer = new MutationObserver(changeChartStyles);\r\n google.visualization.events.addListener(chart, 'ready', function () {\r\n changeChartStyles();\r\n observer.observe(chartDiv, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n });\r\n\r\n chart.draw(data, options);\r\n }\r\n}\r\n","const strategicGoals: NodeListOf = document.querySelectorAll('.strategic-goals');\r\n\r\nstrategicGoals.forEach(strategicGoal => {\r\n if (strategicGoal) {\r\n const tabs: NodeListOf = strategicGoal.querySelectorAll('.strategic-goals__tab');\r\n const grids: NodeListOf = strategicGoal.querySelectorAll('.strategic-goals__grid');\r\n const images: NodeListOf = strategicGoal.querySelectorAll('.strategic-goals__image');\r\n\r\n let activeTab: number = 0;\r\n\r\n const resetAll = () => {\r\n tabs.forEach((tab) => tab.classList.remove('strategic-goals__tab--active'));\r\n grids.forEach((grid) => grid.classList.add('hidden'));\r\n images.forEach((image) => image.classList.add('hidden'));\r\n };\r\n\r\n tabs.forEach((tab, index: number) => {\r\n tab.addEventListener('click', () => {\r\n activeTab = index;\r\n resetAll()\r\n tabs[activeTab].classList.add('strategic-goals__tab--active');\r\n grids[activeTab].classList.remove('hidden');\r\n images[activeTab].classList.remove('hidden');\r\n });\r\n })\r\n }\r\n})\r\n\r\n\r\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n}","import { FetchSuccessStoriesListPayload, FetchSuccessStoriesListResponse, StoryCard } from './successStoriesList.types';\r\nimport Glide from '@glidejs/glide';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\nconst successStoriesList: HTMLDivElement = document.querySelector('.stories-list');\r\n\r\nif (successStoriesList) {\r\n const storiesGrid = successStoriesList.querySelector('.stories-list__grid') as HTMLDivElement;\r\n const storiesFilters = successStoriesList.querySelector('.stories-list__search') as HTMLDivElement;\r\n const storiesListSearchInput = successStoriesList.querySelector('.stories-list__search-input') as HTMLInputElement;\r\n const dropdownFilters: NodeListOf = successStoriesList.querySelectorAll('.dropdown-filter');\r\n const nextPageButton = successStoriesList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = successStoriesList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = successStoriesList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = successStoriesList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = successStoriesList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = successStoriesList.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = successStoriesList.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n const successStoriesCarousel: HTMLElement = document.querySelector('.stories-list__carousel-inner');\r\n const direction: string = document.querySelector('html').getAttribute('dir');\r\n\r\n if (successStoriesCarousel) {\r\n const generateBullets = (carousel) => {\r\n const cards = carousel.querySelectorAll('.stories-list__carousel-card');\r\n const bulletWrapper = carousel.querySelectorAll('.glide__bullets');\r\n const imageBulletWrapper = carousel.querySelectorAll('.glide__bullets--images');\r\n\r\n if (cards.length > 1) {\r\n bulletWrapper.forEach((wrapper) => {\r\n cards.forEach(() => {\r\n const button = document.createElement('button');\r\n button.className = 'glide__bullet';\r\n wrapper.appendChild(button);\r\n });\r\n });\r\n } else {\r\n const controls = successStoriesCarousel.querySelector('.stories-list__controls');\r\n controls.classList.add('hidden');\r\n }\r\n\r\n imageBulletWrapper.forEach((wrapper) => {\r\n cards.forEach((card, index) => {\r\n const button = document.createElement('button');\r\n button.className = 'glide__bullet glide__bullet--image';\r\n const backgroundImage = card.style.backgroundImage;\r\n const img = document.createElement('img');\r\n img.src = backgroundImage.replace(/url\\((['\"])?(.*?)\\1\\)/gi, '$2').split(',')[0];\r\n button.appendChild(img);\r\n\r\n button.addEventListener('click', () => {\r\n glide.go(`=${index}`);\r\n });\r\n\r\n wrapper.appendChild(button);\r\n });\r\n });\r\n };\r\n\r\n const glideSettings = {\r\n type: 'slider',\r\n perView: 1,\r\n rewind: true,\r\n bound: true,\r\n direction: direction || 'ltr',\r\n };\r\n\r\n const glide = new Glide(successStoriesCarousel, glideSettings);\r\n\r\n glide.mount();\r\n\r\n generateBullets(successStoriesCarousel);\r\n\r\n glide.on('move.after', () => {\r\n const carouselCards = successStoriesCarousel.querySelectorAll('.stories-list__carousel-card');\r\n carouselCards.forEach((card) => {\r\n const bullets = card.querySelectorAll('.glide__bullet');\r\n const imageBullets = card.querySelectorAll('.glide__bullet--image');\r\n const currentIndex = glide.index;\r\n const imageContainer = card.querySelector('.glide__bullets--images');\r\n\r\n if (direction === 'rtl') {\r\n imageContainer.scrollLeft = imageContainer.scrollWidth;\r\n imageContainer.scrollLeft -= 103 * currentIndex;\r\n } else {\r\n imageContainer.scrollLeft = 0;\r\n imageContainer.scrollLeft += 103 * currentIndex;\r\n }\r\n\r\n bullets.forEach((bullet, index) => {\r\n bullet.classList.toggle('glide__bullet--active', index === currentIndex);\r\n });\r\n\r\n imageBullets.forEach((bullet, index) => {\r\n bullet.classList.toggle('glide__bullet--image--active', index === currentIndex);\r\n });\r\n });\r\n });\r\n }\r\n\r\n let storiesCards: StoryCard[] = [];\r\n let keyword: string = '';\r\n let fields: string[] = [];\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchStories = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchSuccessStoriesListPayload = {\r\n keyword,\r\n fields,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/successStories',\r\n payload,\r\n );\r\n } else {\r\n response = await axios.post('/api/successStories', payload);\r\n }\r\n storiesCards = response.data.items;\r\n if (storiesCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n storiesCards,\r\n fetchStories,\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n storiesGrid.innerHTML = '';\r\n\r\n storiesCards.forEach((card: StoryCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'fade-in';\r\n\r\n cardElement.innerHTML = `\r\n
    \r\n image\r\n
    \r\n
    ${card.title}
    \r\n
    ${card.content}
    \r\n
    \r\n
    ${card.viewsCount}
    \r\n views-icon\r\n
    \r\n
    \r\n
    \r\n `;\r\n\r\n storiesGrid.appendChild(cardElement);\r\n });\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n storiesFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n storiesFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchStories();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchStories();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchStories();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchStories();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchStories();\r\n });\r\n\r\n let timeout = null;\r\n storiesListSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = storiesListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchStories();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Latest\r\n // 2 = Oldest\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = successStoriesList.querySelector(\r\n 'input[name=\"sort-filter\"]:checked',\r\n ) as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchStories();\r\n });\r\n });\r\n\r\n // Observe changes in dropdown filters\r\n dropdownFilters.forEach((dropdown, index) => {\r\n const optionsContainer = dropdown.querySelector('.dropdown-filter__button-container') as HTMLDivElement | null;\r\n\r\n if (optionsContainer) {\r\n const config: MutationObserverInit = { childList: true };\r\n\r\n const callback: MutationCallback = (mutationsList: MutationRecord[], observer: MutationObserver) => {\r\n for (const mutation of mutationsList) {\r\n if (mutation.type === 'childList') {\r\n switch (index) {\r\n case 0:\r\n const fieldsOptions = [];\r\n Array.from(optionsContainer.children).forEach((element) => {\r\n fieldsOptions.push(element.textContent);\r\n });\r\n fields = fieldsOptions;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n pageNumber = 1;\r\n fetchStories();\r\n }\r\n }\r\n };\r\n\r\n const observer: MutationObserver = new MutationObserver(callback);\r\n\r\n observer.observe(optionsContainer, config);\r\n }\r\n });\r\n\r\n fetchStories();\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n\r\n const showToastModal = (button: HTMLButtonElement) => {\r\n const toast = document.createElement('div');\r\n toast.className = 'toast';\r\n toast.textContent = currentCulture === 'ar' ? 'تم نسخ الرابط!' : 'Link copied to clipboard!';\r\n\r\n const parentDiv = button.closest('div').parentElement.parentElement;\r\n parentDiv.appendChild(toast);\r\n\r\n const toastWidth = 150; // Same as the min-width in the CSS\r\n const right = window.scrollX - toastWidth / 2;\r\n\r\n // Set the position\r\n toast.style.top = '-5px';\r\n if (currentCulture === 'ar') {\r\n toast.style.left = `${right}px`;\r\n } else {\r\n toast.style.right = `${right}px`;\r\n }\r\n\r\n // Trigger the show class to animate the toast\r\n setTimeout(() => {\r\n toast.classList.add('show');\r\n }, 100);\r\n\r\n // Remove the toast after 3 seconds\r\n setTimeout(() => {\r\n toast.classList.remove('show');\r\n setTimeout(() => {\r\n button.closest('div').parentElement.parentElement.removeChild(toast);\r\n }, 500); // Match this duration to the CSS transition duration for the toast fade out\r\n }, 3000);\r\n };\r\n\r\n // Modal\r\n document.addEventListener('DOMContentLoaded', () => {\r\n const openButtons = document.querySelectorAll('.stories-list__modal-open');\r\n const closeButtons = document.querySelectorAll('.stories-list__modal-close');\r\n const modal = document.querySelector('.stories-list__modal') as HTMLDialogElement;\r\n const modalCount = document.querySelector('.stories-list__modal-count') as HTMLDivElement;\r\n const modalTitle = document.querySelector('.stories-list__modal-title') as HTMLDivElement;\r\n const modalVideo = document.querySelector('.stories-list__modal-video') as HTMLIFrameElement;\r\n\r\n openButtons.forEach((button) => {\r\n button.addEventListener('click', () => {\r\n const cardId = button.getAttribute('data-card-id');\r\n const card = document.querySelector(`.stories-list__carousel-card[data-card-id='${cardId}']`);\r\n if (!card) return;\r\n\r\n const cardTitle = card.querySelector('.stories-list__carousel-card-title')?.textContent || '';\r\n const embeddedVideo = card.querySelector('.stories-list__carousel-card-video')?.textContent || '';\r\n const embeddedVideoCount = card.querySelector('.stories-list__carousel-card-count')?.textContent || '';\r\n\r\n modalCount.textContent = embeddedVideoCount;\r\n modalTitle.textContent = cardTitle;\r\n modalVideo.src = embeddedVideo;\r\n modal.showModal();\r\n\r\n const shareButtonModal: HTMLButtonElement = document.querySelector('.shareButtonModal');\r\n if (shareButtonModal) {\r\n shareButtonModal.addEventListener('click', (e) => {\r\n navigator.clipboard.writeText(window.location.href);\r\n showToastModal(shareButtonModal);\r\n });\r\n }\r\n });\r\n });\r\n\r\n closeButtons.forEach((button) => {\r\n button.addEventListener('click', () => {\r\n modal.close();\r\n modalVideo.src = '';\r\n });\r\n });\r\n\r\n if (modal) {\r\n modal.addEventListener('click', (event) => {\r\n if (event.target === modal) {\r\n modal.close();\r\n modalVideo.src = '';\r\n }\r\n });\r\n\r\n document.addEventListener('keydown', (event) => {\r\n if (event.key === 'Escape') {\r\n modal.close();\r\n modalVideo.src = '';\r\n }\r\n });\r\n }\r\n });\r\n}\r\n","import {\r\n TenderCard,\r\n FetchTendersListPayload,\r\n FetchTendersListResponse,\r\n FetchTenderCardSettingsResponse,\r\n} from './tenderList.types';\r\nimport formatDateString from '../../../helpers/formatDate';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport axios from 'axios';\r\n\r\nconst tenderList = document.querySelector('.tender-list') as HTMLDivElement;\r\n\r\nif (tenderList) {\r\n const tendersItems = tenderList.querySelector('.tender-list__items') as HTMLDivElement;\r\n const tendersFilters = tenderList.querySelector('.tender-list__filters') as HTMLDivElement;\r\n const tenderListSearchInput = tenderList.querySelector('.tender-list__search-input') as HTMLInputElement;\r\n const nextPageButton = tenderList.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = tenderList.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = tenderList.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = tenderList.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = tenderList.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = tenderList.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = tenderList.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let tenderCards: TenderCard[] = [];\r\n let keyword: string = '';\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n let tenderCardSettings: FetchTenderCardSettingsResponse = {\r\n availableText: '',\r\n expiredText: '',\r\n offeringDateText: '',\r\n submissionDeadlineText: '',\r\n lastDateToReceiveQuestionsText: '',\r\n responseDateText: '',\r\n downloadButtonText: '',\r\n noTendersText: '',\r\n };\r\n\r\n const fetchEventCardSettings = async () => {\r\n try {\r\n const response = await axios.get(\r\n `/api/tenders/cardsettings?currentCulture=${currentCulture}`\r\n );\r\n\r\n tenderCardSettings = response.data;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n const fetchTenders = async (page = null) => {\r\n clickedNumber = page;\r\n pagination.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchTendersListPayload = {\r\n keyword,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/tenders',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/tenders', payload);\r\n }\r\n tenderCards = response.data.items;\r\n if (tenderCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n tenderCards,\r\n fetchTenders\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n tendersItems.innerHTML = '';\r\n\r\n if (tenderCards.length === 0) {\r\n tendersItems.innerHTML = `
    ${tenderCardSettings.noTendersText}
    `;\r\n } else {\r\n tenderCards.forEach((card: TenderCard) => {\r\n const cardElement = document.createElement('div');\r\n cardElement.className = 'tender-list__item flex flex--column flex--align-startn';\r\n\r\n cardElement.innerHTML = `\r\n ${\r\n card.isAvailable ? tenderCardSettings.availableText : tenderCardSettings.expiredText\r\n }\r\n
    \r\n
    \r\n \"pdf\r\n
    \r\n
    \r\n

    ${card.title}

    \r\n

    ${card.description}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"calendar\r\n ${tenderCardSettings.offeringDateText}\r\n ${formatDateString(card.offeringDate)}\r\n
    \r\n
    \r\n \"calendar\r\n ${tenderCardSettings.submissionDeadlineText}\r\n ${formatDateString(card.submissionDeadline)}\r\n
    \r\n
    \r\n \"calendar\r\n ${tenderCardSettings.lastDateToReceiveQuestionsText}\r\n ${formatDateString(card.lastDateToReceiveQuestions)}\r\n
    \r\n
    \r\n \"calendar\r\n ${tenderCardSettings.responseDateText}\r\n ${formatDateString(card.responseDate)}\r\n
    \r\n
    \r\n
    \r\n \r\n ${tenderCardSettings.downloadButtonText}\r\n \r\n \r\n
    \r\n \r\n \"download\r\n \r\n \r\n \"share\r\n \r\n
    \r\n
    `;\r\n\r\n tendersItems.appendChild(cardElement);\r\n });\r\n }\r\n const fileButtons = tenderList.querySelectorAll('.tender-list__item-button') as NodeListOf;\r\n fileButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n const fileUrl = button.parentElement.getAttribute('data-file') as string;\r\n\r\n if (fileUrl) {\r\n window.open(fileUrl, '_blank');\r\n }\r\n });\r\n });\r\n\r\n const shareButtons: NodeListOf = tenderList.querySelectorAll('.shareButton');\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n }\r\n };\r\n\r\n const disableInputs = () => {\r\n pagination.classList.add('disabled');\r\n tendersFilters.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination.classList.remove('disabled');\r\n tendersFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchTenders();\r\n });\r\n\r\n nextPageButton.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchTenders();\r\n });\r\n\r\n prevPageButton.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchTenders();\r\n });\r\n\r\n paginationFirst.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchTenders();\r\n });\r\n\r\n paginationLast.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchTenders();\r\n });\r\n\r\n let timeout = null;\r\n tenderListSearchInput.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = tenderListSearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchTenders();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = Latest\r\n // 2 = Oldest\r\n // 3 = Available\r\n // 3 = Expired\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = tenderList.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchTenders();\r\n });\r\n });\r\n\r\n fetchEventCardSettings();\r\n fetchTenders();\r\n}\r\n\r\nconst shareButtons: NodeListOf = document.querySelectorAll('.shareButton');\r\nif (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button);\r\n });\r\n });\r\n}\r\n","import copyToClipboard from '../../../helpers/copyToClipboard';\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n const videoDetails = document.querySelector('.video-gallery-details') as HTMLDivElement;\r\n const videoPlayer = document.querySelectorAll('.video-gallery-details__video-container');\r\n\r\n if(videoDetails) {\r\n const youtubeVideoCards: NodeListOf = videoDetails.querySelectorAll('.video-inline-card--youtube');\r\n\r\n youtubeVideoCards.forEach((card: Element) => {\r\n const playerElement = card.querySelector(\"#player\") as HTMLIFrameElement;\r\n\r\n if (playerElement) {\r\n const player = new window['YT'].Player(playerElement, {\r\n events: {\r\n 'onReady': (event) => {\r\n event.target.mute();\r\n\r\n card.addEventListener(\"mouseenter\", () => {\r\n event.target.playVideo();\r\n });\r\n\r\n card.addEventListener(\"mouseleave\", () => {\r\n event.target.pauseVideo();\r\n event.target.seekTo(0);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n if (videoPlayer) {\r\n videoPlayer.forEach((card: Element) => {\r\n const video = card.querySelector('.video-gallery-details__video-player') as HTMLVideoElement;\r\n const playButton = card.querySelector('.video-gallery-details__video-play') as HTMLImageElement;\r\n\r\n card.addEventListener('click', async () => {\r\n if (video.paused) {\r\n await video.play();\r\n playButton.style.opacity = '0';\r\n video.controls = true;\r\n } else {\r\n video.pause();\r\n playButton.style.opacity = '1';\r\n video.controls = false;\r\n }\r\n });\r\n });\r\n }\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n }\r\n});\r\n","import { FetchVideosGalleryPayload, FetchVideosGalleryResponse, VideoCard } from './videoGallery.types';\r\nimport { updatePaginationButtons } from '../pagination/pagination';\r\nimport copyToClipboard from '../../../helpers/copyToClipboard';\r\nimport axios from 'axios';\r\n\r\nconst videosGallery: HTMLDivElement = document.querySelector('.video-gallery');\r\n\r\nif (videosGallery) {\r\n const videosGrid = videosGallery.querySelector('.video-gallery__grid') as HTMLDivElement;\r\n const videosFilters = videosGallery.querySelector('.video-gallery__filters') as HTMLDivElement;\r\n const videosGallerySearchInput = videosGallery.querySelector('.input--search') as HTMLInputElement;\r\n const nextPageButton = videosGallery.querySelector('.pagination__page-next') as HTMLButtonElement;\r\n const prevPageButton = videosGallery.querySelector('.pagination__page-prev') as HTMLButtonElement;\r\n const paginationDropdown = videosGallery.querySelector('.pagination__dropdown') as HTMLSelectElement;\r\n const paginationLast = videosGallery.querySelector('.pagination__page-last') as HTMLSelectElement;\r\n const paginationFirst = videosGallery.querySelector('.pagination__page-first') as HTMLSelectElement;\r\n const pagination = videosGallery.querySelector('.pagination') as HTMLDivElement;\r\n const radios: NodeListOf = videosGallery.querySelectorAll('.sort-filter__input');\r\n const currentCulture: string = document.documentElement.getAttribute('culture');\r\n\r\n let videosCards: VideoCard[] = [];\r\n let keyword: string = '';\r\n let sortBy: number = 1;\r\n let pageNumber: number = 1;\r\n let pageSize: number = +paginationDropdown?.value;\r\n let totalPages: number = 0;\r\n let totalCount: number = 0;\r\n let hasNextPage: boolean = false;\r\n let hasPreviousPage: boolean = false;\r\n let buttonsToShow: number = 3;\r\n let isLoading: boolean = false;\r\n let clickedNumber = null;\r\n\r\n const fetchVideosGallery = async (page = null) => {\r\n clickedNumber = page;\r\n pagination?.classList.add('hidden');\r\n\r\n if (clickedNumber) {\r\n pageNumber = page;\r\n }\r\n\r\n const payload: FetchVideosGalleryPayload = {\r\n keyword,\r\n sortBy,\r\n pageNumber,\r\n pageSize,\r\n currentCulture,\r\n };\r\n\r\n isLoading = true;\r\n\r\n disableInputs();\r\n\r\n try {\r\n let response;\r\n if (\r\n (window.location.hostname === 'localhost' && window.location.port === '2000') ||\r\n window.location.hostname === 'mawhiba-fractal.netlify.app'\r\n ) {\r\n response = await axios.post(\r\n 'https://app-prd-umbracoportal-uaenorth-mawhiba-development.azurewebsites.net/api/videosgallery',\r\n payload\r\n );\r\n } else {\r\n response = await axios.post('/api/videosgallery', payload);\r\n }\r\n videosCards = response.data.items;\r\n if (videosCards.length > 0) {\r\n pagination.classList.remove('hidden');\r\n }\r\n totalPages = response.data.totalPages;\r\n totalCount = response.data.totalCount;\r\n hasNextPage = response.data.hasNextPage;\r\n hasPreviousPage = response.data.hasPreviousPage;\r\n } catch (error) {\r\n console.error(error);\r\n enableInputs();\r\n } finally {\r\n updatePaginationButtons(\r\n totalPages,\r\n hasPreviousPage,\r\n hasNextPage,\r\n pageNumber,\r\n pageSize,\r\n totalCount,\r\n buttonsToShow,\r\n videosCards,\r\n fetchVideosGallery\r\n );\r\n isLoading = false;\r\n updateCards();\r\n enableInputs();\r\n CreatePlayEventListeners();\r\n }\r\n };\r\n\r\n const updateCards = () => {\r\n videosGrid.innerHTML = '';\r\n\r\n videosCards.forEach((card: VideoCard) => {\r\n const cardElement = document.createElement('a');\r\n\r\n cardElement.setAttribute('href', card.link);\r\n cardElement.className = 'video-inline-card flex flex--column';\r\n let formattedYoutubeVideoUrl: string;\r\n let videoContainer: string;\r\n\r\n if(card.youTubeID) {\r\n formattedYoutubeVideoUrl = `https://www.youtube.com/embed/${card.youTubeID}?enablejsapi=1;`\r\n cardElement.classList.add('video-inline-card--youtube');\r\n\r\n videoContainer = `\r\n
    \r\n \r\n \"play\r\n
    \r\n
    \r\n `\r\n } else {\r\n videoContainer = `\r\n
    \r\n \r\n \"play\r\n
    \r\n
    \r\n `\r\n }\r\n\r\n cardElement.innerHTML = `\r\n
    ${card.title}
    \r\n
    \r\n \r\n \"download\r\n \r\n
    \r\n
    \r\n views icon\r\n ${card.views}\r\n
    \r\n \r\n \"heart\r\n \r\n \r\n \"share\r\n \r\n
    \r\n
    `;\r\n\r\n const border = cardElement.querySelector('.video-inline-card__border') as HTMLDivElement;\r\n border.insertAdjacentHTML('beforebegin', videoContainer);\r\n\r\n videosGrid.appendChild(cardElement);\r\n });\r\n };\r\n\r\n const CreatePlayEventListeners = () => {\r\n const videoCards = videosGallery.querySelectorAll('.video-inline-card');\r\n\r\n if (videoCards) {\r\n const mobileBreakpoint = '(max-width: 767px)';\r\n\r\n videoCards.forEach((card: Element) => {\r\n const video = card.querySelector('.video-inline-card__video') as HTMLVideoElement;\r\n const playButton = card.querySelector('.video-inline-card__play') as HTMLImageElement;\r\n\r\n if(card.classList.contains('video-inline-card--youtube')){\r\n const playerElement = card.querySelector(\"#player\") as HTMLIFrameElement;\r\n\r\n if (playerElement) {\r\n const player = new window['YT'].Player(playerElement, {\r\n events: {\r\n 'onReady': (event) => {\r\n event.target.mute();\r\n\r\n card.addEventListener(\"mouseenter\", () => {\r\n event.target.playVideo();\r\n });\r\n \r\n card.addEventListener(\"mouseleave\", () => {\r\n event.target.pauseVideo();\r\n event.target.seekTo(0);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n card.addEventListener('click', () => {\r\n if (window.matchMedia(mobileBreakpoint).matches) {\r\n if (video.paused) {\r\n video.play();\r\n playButton.style.opacity = '0';\r\n } else {\r\n video.pause();\r\n playButton.style.opacity = '1';\r\n }\r\n }\r\n });\r\n \r\n card.addEventListener('mouseenter', () => {\r\n if (!window.matchMedia(mobileBreakpoint).matches) {\r\n video.play();\r\n }\r\n });\r\n \r\n card.addEventListener('mouseleave', () => {\r\n if (!window.matchMedia(mobileBreakpoint).matches) {\r\n video.pause();\r\n video.currentTime = 0;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n const disableInputs = () => {\r\n pagination?.classList.add('disabled');\r\n videosFilters?.classList.add('disabled');\r\n };\r\n\r\n const enableInputs = () => {\r\n pagination?.classList.remove('disabled');\r\n videosFilters.classList.remove('disabled');\r\n };\r\n\r\n paginationDropdown?.addEventListener('change', () => {\r\n pageSize = +paginationDropdown.value;\r\n pageNumber = 1;\r\n fetchVideosGallery();\r\n });\r\n\r\n nextPageButton?.addEventListener('click', () => {\r\n pageNumber++;\r\n\r\n fetchVideosGallery();\r\n });\r\n\r\n prevPageButton?.addEventListener('click', () => {\r\n pageNumber--;\r\n\r\n fetchVideosGallery();\r\n });\r\n\r\n paginationFirst?.addEventListener('click', () => {\r\n pageNumber = 1;\r\n fetchVideosGallery();\r\n });\r\n\r\n paginationLast?.addEventListener('click', () => {\r\n pageNumber = totalPages;\r\n fetchVideosGallery();\r\n });\r\n\r\n let timeout = null;\r\n videosGallerySearchInput?.addEventListener('input', (e) => {\r\n clearTimeout(timeout);\r\n\r\n timeout = setTimeout(function () {\r\n keyword = videosGallerySearchInput.value.trim();\r\n pageNumber = 1;\r\n fetchVideosGallery();\r\n }, 1000);\r\n });\r\n\r\n radios.forEach((radio) => {\r\n // 1 = latest\r\n // 2 = oldest\r\n // 3 = mostViewed\r\n\r\n radio.addEventListener('change', () => {\r\n const checkedRadio = videosGallery.querySelector('input[name=\"sort-filter\"]:checked') as HTMLInputElement;\r\n const checkedRadioValue = checkedRadio.value;\r\n sortBy = +checkedRadioValue;\r\n fetchVideosGallery();\r\n });\r\n });\r\n\r\n fetchVideosGallery();\r\n\r\n const shareButtons: NodeListOf = document.querySelectorAll(\".shareButton\");\r\n if (shareButtons && shareButtons.length > 0) {\r\n shareButtons.forEach(button => {\r\n button.addEventListener('click', (e) => {\r\n copyToClipboard(button); \r\n }); \r\n })\r\n }\r\n}\r\n","document.addEventListener('DOMContentLoaded', () => {\r\n const videoCards = document.querySelectorAll('.video-inline-card');\r\n\r\n if (videoCards) {\r\n const mobileBreakpoint = '(max-width: 767px)';\r\n\r\n videoCards.forEach((card: Element) => {\r\n if(card.classList.contains('video-inline-card--youtube')){\r\n return\r\n } else {\r\n const video = card.querySelector('.video-inline-card__video') as HTMLVideoElement;\r\n const playButton = card.querySelector('.video-inline-card__play') as HTMLImageElement;\r\n \r\n card.addEventListener('click', () => {\r\n if (window.matchMedia(mobileBreakpoint).matches) {\r\n if (video.paused) {\r\n video.play();\r\n playButton.style.opacity = '0';\r\n } else {\r\n video.pause();\r\n playButton.style.opacity = '1';\r\n }\r\n }\r\n });\r\n \r\n card.addEventListener('mouseenter', () => {\r\n if (!window.matchMedia(mobileBreakpoint).matches) {\r\n video.play();\r\n }\r\n });\r\n \r\n card.addEventListener('mouseleave', () => {\r\n if (!window.matchMedia(mobileBreakpoint).matches) {\r\n video.pause();\r\n video.currentTime = 0;\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n const videoButtons = document.querySelectorAll('.video-inline-card__download') as NodeListOf;\r\n\r\n videoButtons.forEach((button) => {\r\n button.addEventListener('click', (e) => {\r\n const fileUrl = button.parentElement.getAttribute('data-video') as string;\r\n\r\n if (fileUrl) {\r\n window.open(fileUrl, '_blank');\r\n }\r\n });\r\n });\r\n }\r\n});\r\n","\r\ngoogle.charts.load('current', { packages: ['corechart'] });\r\nconst chartDiv = document.getElementById('curve_chart1');\r\ngoogle.charts.setOnLoadCallback(() => {\r\n const chartDiv = document.getElementById('curve_chart1');\r\n if (chartDiv) {\r\n if (getComputedStyle(chartDiv).display !== 'none') {\r\n drawChart(chartDiv);\r\n } else {\r\n observeVisibility(chartDiv);\r\n }\r\n }\r\n\r\n const chartDiv2 = document.getElementById('curve_chart2');\r\n if (chartDiv2) {\r\n if (getComputedStyle(chartDiv2).display !== 'none') {\r\n drawChart(chartDiv2);\r\n } else {\r\n observeVisibility(chartDiv2);\r\n }\r\n }\r\n\r\n const chartDiv3 = document.getElementById('curve_chart3');\r\n if (chartDiv3) {\r\n if (getComputedStyle(chartDiv3).display !== 'none') {\r\n drawChart(chartDiv3);\r\n } else {\r\n observeVisibility(chartDiv3);\r\n }\r\n }\r\n });\r\n\r\nfunction drawChart(element: HTMLElement) {\r\n const chartData = element.getAttribute('data-chartdata');\r\n if (!chartData) {\r\n console.error('No data found in data-chartdata attribute');\r\n return;\r\n }\r\n\r\n const dataArray = JSON.parse(chartData);\r\n const data = google.visualization.arrayToDataTable(dataArray);\r\n \r\n const options: google.visualization.LineChartOptions = {\r\n hAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'none',\r\n baselineColor: 'transparent',\r\n },\r\n vAxis: {\r\n gridlines: { color: 'transparent' },\r\n textPosition: 'none',\r\n baselineColor: 'transparent',\r\n },\r\n curveType: 'function', // Smooth the lines\r\n legend: { position: 'none' },\r\n chartArea: { width: '100%', height: '100%' },\r\n series: {\r\n 0: { color: '#6f6f91' }\r\n },\r\n lineWidth: 3, // Adjust the line width as needed\r\n tooltip: { trigger: 'none' } // Disable tooltips\r\n };\r\n \r\n const chart1 = new google.visualization.LineChart(element);\r\n google.visualization.events.addListener(chart1, 'ready', () => addShadowEffect1());\r\n chart1.draw(data, options);\r\n }\r\n\r\n function addShadowEffect1() {\r\n const svg = document.querySelector('#curve_chart1 svg')!;\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n const filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');\r\n filter.setAttribute('id', 'shadow');\r\n filter.innerHTML = `\r\n \r\n `;\r\n defs.appendChild(filter);\r\n svg.appendChild(defs);\r\n \r\n const path = svg.querySelector('path')!;\r\n path.setAttribute('filter', 'url(#shadow)');\r\n }\r\n\r\n function addShadowEffect2() {\r\n const svg = document.querySelector('#curve_chart2 svg')!;\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n const filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');\r\n filter.setAttribute('id', 'shadow');\r\n filter.innerHTML = `\r\n \r\n `;\r\n defs.appendChild(filter);\r\n svg.appendChild(defs);\r\n \r\n const path = svg.querySelector('path')!;\r\n path.setAttribute('filter', 'url(#shadow)');\r\n }\r\n\r\n function addShadowEffect3() {\r\n const svg = document.querySelector('#curve_chart3 svg')!;\r\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\r\n const filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');\r\n filter.setAttribute('id', 'shadow');\r\n filter.innerHTML = `\r\n \r\n `;\r\n defs.appendChild(filter);\r\n svg.appendChild(defs);\r\n \r\n const path = svg.querySelector('path')!;\r\n path.setAttribute('filter', 'url(#shadow)');\r\n }\r\n\r\n function observeVisibility(element: HTMLElement) {\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.attributeName === 'style' && getComputedStyle(element).display !== 'none') {\r\n drawChart(element);\r\n }\r\n });\r\n });\r\n \r\n observer.observe(element, { attributes: true });\r\n }\r\n\r\nconst initializeWebStatsComponent = (webStatsComponent: HTMLElement) => {\r\n const webStatsTabs: NodeListOf = webStatsComponent.querySelectorAll('.web-stats__tab');\r\n const webStatsContents: NodeListOf = webStatsComponent.querySelectorAll('.web-stats__stat');\r\n let activeTab = 0;\r\n\r\n // Tab logic\r\n const showSelectedItems = (activeTab: number) => {\r\n webStatsTabs.forEach((tab, index) => {\r\n tab.classList.remove('web-stats__tab--active');\r\n webStatsContents[index].style.display = 'none'; \r\n });\r\n\r\n webStatsTabs[activeTab].classList.add('web-stats__tab--active');\r\n webStatsContents[activeTab].style.display = 'block';\r\n };\r\n\r\n const handleTabClick = (index: number) => {\r\n activeTab = index;\r\n showSelectedItems(activeTab);\r\n };\r\n\r\n webStatsTabs.forEach((tab, index) => {\r\n tab.addEventListener('click', () => handleTabClick(index));\r\n });\r\n\r\n showSelectedItems(activeTab);\r\n};\r\n\r\ndocument.querySelectorAll('.web-stats').forEach((webStatsComponent) => {\r\n initializeWebStatsComponent(webStatsComponent as HTMLElement);\r\n});\r\n","module.exports = require('./lib/axios');","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","module.exports={\n \"name\": \"axios\",\n \"version\": \"0.21.4\",\n \"description\": \"Promise based HTTP client for the browser and node.js\",\n \"main\": \"index.js\",\n \"scripts\": {\n \"test\": \"grunt test\",\n \"start\": \"node ./sandbox/server.js\",\n \"build\": \"NODE_ENV=production grunt build\",\n \"preversion\": \"npm test\",\n \"version\": \"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\",\n \"postversion\": \"git push && git push --tags\",\n \"examples\": \"node ./examples/server.js\",\n \"coveralls\": \"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\n \"fix\": \"eslint --fix lib/**/*.js\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/axios/axios.git\"\n },\n \"keywords\": [\n \"xhr\",\n \"http\",\n \"ajax\",\n \"promise\",\n \"node\"\n ],\n \"author\": \"Matt Zabriskie\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/axios/axios/issues\"\n },\n \"homepage\": \"https://axios-http.com\",\n \"devDependencies\": {\n \"coveralls\": \"^3.0.0\",\n \"es6-promise\": \"^4.2.4\",\n \"grunt\": \"^1.3.0\",\n \"grunt-banner\": \"^0.6.0\",\n \"grunt-cli\": \"^1.2.0\",\n \"grunt-contrib-clean\": \"^1.1.0\",\n \"grunt-contrib-watch\": \"^1.0.0\",\n \"grunt-eslint\": \"^23.0.0\",\n \"grunt-karma\": \"^4.0.0\",\n \"grunt-mocha-test\": \"^0.13.3\",\n \"grunt-ts\": \"^6.0.0-beta.19\",\n \"grunt-webpack\": \"^4.0.2\",\n \"istanbul-instrumenter-loader\": \"^1.0.0\",\n \"jasmine-core\": \"^2.4.1\",\n \"karma\": \"^6.3.2\",\n \"karma-chrome-launcher\": \"^3.1.0\",\n \"karma-firefox-launcher\": \"^2.1.0\",\n \"karma-jasmine\": \"^1.1.1\",\n \"karma-jasmine-ajax\": \"^0.1.13\",\n \"karma-safari-launcher\": \"^1.0.0\",\n \"karma-sauce-launcher\": \"^4.3.6\",\n \"karma-sinon\": \"^1.0.5\",\n \"karma-sourcemap-loader\": \"^0.3.8\",\n \"karma-webpack\": \"^4.0.2\",\n \"load-grunt-tasks\": \"^3.5.2\",\n \"minimist\": \"^1.2.0\",\n \"mocha\": \"^8.2.1\",\n \"sinon\": \"^4.5.0\",\n \"terser-webpack-plugin\": \"^4.2.3\",\n \"typescript\": \"^4.0.5\",\n \"url-search-params\": \"^0.10.0\",\n \"webpack\": \"^4.44.2\",\n \"webpack-dev-server\": \"^3.11.0\"\n },\n \"browser\": {\n \"./lib/adapters/http.js\": \"./lib/adapters/xhr.js\"\n },\n \"jsdelivr\": \"dist/axios.min.js\",\n \"unpkg\": \"dist/axios.min.js\",\n \"typings\": \"./index.d.ts\",\n \"dependencies\": {\n \"follow-redirects\": \"^1.14.0\"\n },\n \"bundlesize\": [\n {\n \"path\": \"./dist/axios.min.js\",\n \"threshold\": \"5kB\"\n }\n ]\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n"]}