{"version":3,"sources":["src/scripts/components/event-calendar.js"],"names":["$","jQuery","expandableResults","component","container","cards","css","length","initHeight","slice","each","Math","floor","outerHeight","removeClass","addClass","init","calendarVars","resultCardHover","hover","closest","setupCalendar","calendar","resultsContainer","eventCalendar","resultCard","scrubberContainer","scrubberBar","positions","calculateStickyScrubber","begin","offset","top","height","end","expandStickyScrubber","targetHeight","data","setStickyWidth","element","currentWidth","width","stickyScrubber","stickyBar","scrollPos","window","scrollTop","hasClass","animationEndHandler","event","stickyScrubberBinds","on","document","one"],"mappings":"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","file":"event-calendar.js","sourcesContent":["var $ = jQuery;\nimport {debounce} from '../utils/utilities.js';\n\n\n\nfunction expandableResults(component, container, cards) {\n container.css({\n 'height': 'auto'\n });\n\n if(cards.length > 8) {\n let initHeight = 0;\n\n cards.slice(0, 8).each(function() {\n initHeight += Math.floor($(this).outerHeight(true));\n });\n\n component.removeClass('non-expandable').addClass('expandable');\n container.css({\n 'height': initHeight+'px'\n });\n }\n else {\n component.removeClass('expandable').addClass('non-expandable');\n }\n}\n\n\n\nfunction init() {\n\n var calendarVars = {};\n\n function resultCardHover() {\n //hover effect\n $('.event-calendar .result-card__title').hover(\n function() {\n $(this).closest('.result-card').addClass('hovered');\n },\n function() {\n $(this).closest('.result-card').removeClass('hovered');\n }\n );\n }\n\n function setupCalendar() {\n //setupCalendar\n let calendar = {\n resultsContainer : $('.results-wrapper'),\n eventCalendar : $('.event-calendar'),\n resultCard : $('.result-card__event:visible'),\n scrubberContainer : $('.event-calendar__scrubber'),\n scrubberBar : $('.event-calendar__scrubber-bar'),\n positions : {}\n };\n\n return calendar;\n }\n\n function calculateStickyScrubber() {\n let begin = $(calendarVars.resultsContainer).offset().top + $(calendarVars.resultCard[0]).height();\n let end = calendarVars.resultsContainer.offset().top + calendarVars.resultsContainer.outerHeight() - $(calendarVars.resultCard[calendarVars.resultCard.length - 1]).height() - $(calendarVars.resultCard[calendarVars.resultCard.length - 2]).height();\n // console.log('begin is ' + begin + ' end is ' + end);\n calendarVars.positions.begin = begin;\n calendarVars.positions.end = end;\n }\n\n function expandStickyScrubber() {\n let targetHeight = $(calendarVars.resultsContainer).data('height');\n calendarVars.positions.end += targetHeight - calendarVars.resultsContainer.outerHeight();\n // console.log('new end is ' + calendarVars.positions.end);\n }\n\n function setStickyWidth(element) {\n let currentWidth = element.width();\n element.css({\n width: currentWidth+'px'\n });\n }\n\n function stickyScrubber() {\n calendarVars = setupCalendar();\n\n var stickyBar = debounce(function() {\n let scrollPos = $(window).scrollTop();\n if (scrollPos > calendarVars.positions.begin && scrollPos <= calendarVars.positions.end) {\n if(!$('body').hasClass('_sticky')) {\n setStickyWidth(calendarVars.scrubberBar);\n $('body').addClass('_sticky _entry');\n }\n }\n else {\n //fire exit animation\n if ($('body').hasClass('_sticky _entry')) {\n $('body').addClass('_exit');\n }\n }\n }, 10);\n\n var animationEndHandler = function(event) {\n $('body').removeClass('_sticky _exit _entry');\n };\n\n var stickyScrubberBinds = function() {\n calculateStickyScrubber();\n $(window).on('scroll', stickyBar);\n $(window).on('rerunStickyScrubber', calculateStickyScrubber);\n $(window).on('resize', calculateStickyScrubber);\n $(document).on('webkitAnimationEnd oanimationend msAnimationEnd animationend', 'body._exit .event-calendar__scrubber', animationEndHandler);\n };\n\n //bind sticky bar if more than 8 results\n if (calendarVars.resultCard.length > 5) {\n stickyScrubberBinds();\n }\n\n }\n\n if ($('.event-calendar').length) {\n calendarVars = setupCalendar();\n //bind hover state on event-result cards\n resultCardHover();\n\n stickyScrubber();\n\n //bind custom event for when we need to evaluate if there's need for stickyScrubber\n $(window).on('runStickyScrubber', stickyScrubber);\n $(window).one('readMoreStickyScrubber', expandStickyScrubber);\n\n expandableResults(calendarVars.eventCalendar, calendarVars.resultsContainer, calendarVars.resultCard);\n\n }\n\n}\n\n\nexport {init as init, expandableResults};\n\n"]}