{"version":3,"file":"../js/theme.js","names":["$","Drupal","Foundation","Vimeo","MiniMasonry","VanillaTabs","witAnimationDurations","behaviors","courseleafBubbles","attach","context","$bubble","attr","click","e","preventDefault","options","content","multiple","trigger","contentAsHTML","maxWidth","theme","animation","updateAnimation","interactive","functionBefore","instance","helper","$origin","origin","course","data","insertCourseData","keydown","which","target","tooltipster","addTooltipster","$elem","get","$data","each","$this","text","addClass","prependTo","dn","parseHTML","outerHTML","trim","on","attachBehaviors","videoDialog","$triggerImage","closeVideoBackdrop","$backdrop","removeClass","$iframe","length","contentWindow","postMessage","setTimeout","aria","closeCurrentDialog","closest","vidId","$vidElement","$vidContent","replaceWith","html","openDialog","searchDialog","$searchForm","closeSearchBackdrop","id","select","megaMenu","$mainNav","$a","find","i","li","document","createElement","clonedLink","cloneNode","append","parent","first","prepend","accessibleMegaMenu","uuidPrefix","menuClass","topNavItemClass","panelClass","panelGroupClass","hoverClass","focusClass","openClass","accordionMenu","$menu","parentLink","slideSpeed","submenuToggle","multiOpen","$accordionMenu","AccordionMenu","accordion","Accordion","allowAllClosed","multiExpand","witTabs","accessibleTabs","tabhead","tabheadClass","currentInfoClass","fxspeed","tabbody","wrapperClass","mobileNav","$menuContainer","$menuButton","enabledClass","hasClass","show","hide","focus","eventCalendar","dataHighlight","$highlight_array","datepicker_id","MediaQuery","is","split","datepicker","inline","dateFormat","onSelect","date","next_day","Date","setDate","getDate","formatted_next_day","_formatDate","val","submit","beforeShowDay","actual_date","inArray","$selected_date","date_array","monthIndex","parseInt","year","getFullYear","month","getMonth","slice","day","addToCalendar","createCalendar","$a2c","title","start","end","duration","address","description","not","myCalendar","foundation","google_cse","window","cse","__gcse","getParameterByName","url","name","match","RegExp","exec","decodeURIComponent","replace","createSnippet","result","classList","add","titleFrag","createRange","createContextualFragment","anchor","setAttribute","appendChild","urlVisible","urlValue","createTextNode","contentWrap","thumbnailImage","imgA","img","width","height","imgContainer","myResultsReadyCallback","q","promos","results","resultsDiv","list","index","noResults","noResultsText","searchCallbacks","web","ready","video_play_pause","iframe","$video","Player","querySelector","$videoControl","pauseVideo","pause","playVideo","play","readMore","$child_elements","children","readMoreHeight","$index","el","$el","elHeight","outerHeight","readmore","collapsedHeight","moreLink","lessLink","degreeCard","location","contentCard","homepageVideoContainer","$currentProjects","$videoContainer","$mediaContainer","debouncedResize","debounce","innerHeight","mediaContainerHeight","iframeHeight","css","Math","round","featuredItems","masonry","container","baseWidth","gutter","ultimateGutter","innerWidth","remove","paragraph","appendTo","layout","taggedNews","program_tabs","readyState","selector","type","responsiveBreak","activeIndex","addEventListener","homePageHeroRandomImage","settings","homepage_hero_random_image","images","key","floor","random","mini_profiles","$section","event","setActive","$slider","slick","$slide","degree_tab_animation","menu","contains","style","setProperty","offsetWidth","offsetLeft","jQuery"],"sources":["theme.js"],"sourcesContent":["/* eslint-disable no-reserved-keys */\n/* global Foundation, aria, openDialog, createCalendar */\n\n/**\n * @file\n * Sitewide javascript behaviors.\n */\n(function ($, Drupal, Foundation, Vimeo, MiniMasonry, VanillaTabs) {\n 'use strict';\n var witAnimationDurations = 300;\n Drupal.behaviors.courseleafBubbles = {\n attach: function (context) {\n\n var $bubble = $('.code_bubble', context);\n $bubble.attr('tabindex', '0');\n $bubble.attr('role', 'button');\n $bubble.click(function (e) {\n e.preventDefault();\n });\n var options = {\n content: 'Loading...',\n multiple: true,\n trigger: 'click',\n contentAsHTML: true,\n maxWidth: 500,\n theme: 'wit-tip',\n animation: 'fade',\n updateAnimation: 'fade',\n interactive: true,\n functionBefore: function (instance, helper) {\n var $origin = $(helper.origin);\n var course = $origin.data('code-bubble');\n insertCourseData(course, instance);\n }\n };\n\n // For a11y navigation with keyboard.\n $bubble.keydown(function (e) {\n // Show on Enter.\n if (e.which === 13) {\n $(e.target).tooltipster('show');\n }\n // Hide on Tab or Escape.\n if (e.which === 9 || e.which === 27) {\n $(e.target).tooltipster('hide');\n }\n });\n\n function addTooltipster($elem) {\n $elem.tooltipster(options);\n }\n\n function insertCourseData(course, instance) {\n $.get('/courseleaf/course/' + course, function (data) {\n var $data = $(data);\n $('a', $data).each(function () {\n var $this = $(this);\n $this.attr('data-code-bubble', $this.text()).attr('onclick', null).addClass('code_bubble');\n });\n\n // Add close button.\n $('')\n .prependTo($data);\n var dn = $.parseHTML($data[0].outerHTML.trim());\n dn = $(dn).get(0);\n instance.content(dn);\n $(\".tooltipClose\").on(\"click\", function () {\n $bubble.tooltipster('hide');\n });\n Drupal.attachBehaviors(dn);\n });\n }\n\n addTooltipster($bubble);\n }\n };\n\n Drupal.behaviors.videoDialog = {\n attach: function (context) {\n var $triggerImage = $('.video-dialog-toggle', context);\n\n var closeVideoBackdrop = function ($backdrop) {\n $backdrop.addClass('light-bg').removeClass('dark-bg');\n var $iframe = $('iframe', $backdrop);\n if ($iframe.length > 0) {\n $iframe[0].contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + 'pauseVideo' + '\",\"args\":\"\"}', '*');\n setTimeout(function (e) {\n aria.closeCurrentDialog();\n }, witAnimationDurations);\n }\n else {\n aria.closeCurrentDialog();\n }\n\n };\n $('button.close-video-dialog', context).click(function (e) {\n var $backdrop = $(this).closest('.dialog-backdrop');\n closeVideoBackdrop($backdrop);\n });\n $triggerImage.click(function (e) {\n e.preventDefault();\n var $this = $(this);\n var vidId = $this.data('video-id');\n var $vidElement = $('#' + vidId);\n var $backdrop = $vidElement.closest('.dialog-backdrop');\n\n // Lazy load youtube video on modal open.\n var $vidContent = $('script[type=\"application/x-lazy-video\"]', $vidElement);\n if ($vidContent.length > 0) {\n $vidContent.replaceWith('