{"version":3,"file":"chunk-foundation.orbit-ea22eba6-esm.js","sources":["node_modules/foundation-sites/js/foundation.util.timer.js","node_modules/foundation-sites/js/foundation.orbit.js"],"sourcesContent":["function Timer(elem, options, cb) {\n var _this = this,\n duration = options.duration,//options is an object for easily adding features later.\n nameSpace = Object.keys(elem.data())[0] || 'timer',\n remain = -1,\n start,\n timer;\n\n this.isPaused = false;\n\n this.restart = function() {\n remain = -1;\n clearTimeout(timer);\n this.start();\n }\n\n this.start = function() {\n this.isPaused = false;\n // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n remain = remain <= 0 ? duration : remain;\n elem.data('paused', false);\n start = Date.now();\n timer = setTimeout(function(){\n if(options.infinite){\n _this.restart();//rerun the timer.\n }\n if (cb && typeof cb === 'function') { cb(); }\n }, remain);\n elem.trigger(`timerstart.zf.${nameSpace}`);\n }\n\n this.pause = function() {\n this.isPaused = true;\n //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n elem.data('paused', true);\n var end = Date.now();\n remain = remain - (end - start);\n elem.trigger(`timerpaused.zf.${nameSpace}`);\n }\n}\n\nexport {Timer};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Motion } from './foundation.util.motion';\nimport { Timer } from './foundation.util.timer';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * Orbit module.\n * @module foundation.orbit\n * @requires foundation.util.keyboard\n * @requires foundation.util.motion\n * @requires foundation.util.timer\n * @requires foundation.util.imageLoader\n * @requires foundation.util.touch\n */\n\nclass Orbit extends Plugin {\n /**\n * Creates a new instance of an orbit carousel.\n * @class\n * @name Orbit\n * @param {jQuery} element - jQuery object to make into an Orbit Carousel.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options){\n this.$element = element;\n this.options = $.extend({}, Orbit.defaults, this.$element.data(), options);\n this.className = 'Orbit'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('Orbit', {\n 'ltr': {\n 'ARROW_RIGHT': 'next',\n 'ARROW_LEFT': 'previous'\n },\n 'rtl': {\n 'ARROW_LEFT': 'next',\n 'ARROW_RIGHT': 'previous'\n }\n });\n }\n\n /**\n * Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.\n * @function\n * @private\n */\n _init() {\n // @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide\n this._reset();\n\n this.$wrapper = this.$element.find(`.${this.options.containerClass}`);\n this.$slides = this.$element.find(`.${this.options.slideClass}`);\n\n var $images = this.$element.find('img'),\n initActive = this.$slides.filter('.is-active'),\n id = this.$element[0].id || GetYoDigits(6, 'orbit');\n\n this.$element.attr({\n 'data-resize': id,\n 'id': id\n });\n\n if (!initActive.length) {\n this.$slides.eq(0).addClass('is-active');\n }\n\n if (!this.options.useMUI) {\n this.$slides.addClass('no-motionui');\n }\n\n if ($images.length) {\n onImagesLoaded($images, this._prepareForOrbit.bind(this));\n } else {\n this._prepareForOrbit();//hehe\n }\n\n if (this.options.bullets) {\n this._loadBullets();\n }\n\n this._events();\n\n if (this.options.autoPlay && this.$slides.length > 1) {\n this.geoSync();\n }\n\n if (this.options.accessible) { // allow wrapper to be focusable to enable arrow navigation\n this.$wrapper.attr('tabindex', 0);\n }\n }\n\n /**\n * Creates a jQuery collection of bullets, if they are being used.\n * @function\n * @private\n */\n _loadBullets() {\n this.$bullets = this.$element.find(`.${this.options.boxOfBullets}`).find('button');\n }\n\n /**\n * Sets a `timer` object on the orbit, and starts the counter for the next slide.\n * @function\n */\n geoSync() {\n var _this = this;\n this.timer = new Timer(\n this.$element,\n {\n duration: this.options.timerDelay,\n infinite: false\n },\n function() {\n _this.changeSlide(true);\n });\n this.timer.start();\n }\n\n /**\n * Sets wrapper and slide heights for the orbit.\n * @function\n * @private\n */\n _prepareForOrbit() {\n this._setWrapperHeight();\n }\n\n /**\n * Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.\n * @function\n * @private\n * @param {Function} cb - a callback function to fire when complete.\n */\n _setWrapperHeight(cb) {//rewrite this to `for` loop\n var max = 0, temp, counter = 0, _this = this;\n\n this.$slides.each(function() {\n temp = this.getBoundingClientRect().height;\n $(this).attr('data-slide', counter);\n\n // hide all slides but the active one\n if (!/mui/g.test($(this)[0].className) && _this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {\n $(this).css({'display': 'none'});\n }\n max = temp > max ? temp : max;\n counter++;\n });\n\n if (counter === this.$slides.length) {\n this.$wrapper.css({'height': max}); //only change the wrapper height property once.\n if(cb) {cb(max);} //fire callback with max height dimension.\n }\n }\n\n /**\n * Sets the max-height of each slide.\n * @function\n * @private\n */\n _setSlideHeight(height) {\n this.$slides.each(function() {\n $(this).css('max-height', height);\n });\n }\n\n /**\n * Adds event listeners to basically everything within the element.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n //***************************************\n //**Now using custom event - thanks to:**\n //** Yohai Ararat of Toronto **\n //***************************************\n //\n this.$element.off('.resizeme.zf.trigger').on({\n 'resizeme.zf.trigger': this._prepareForOrbit.bind(this)\n })\n if (this.$slides.length > 1) {\n\n if (this.options.swipe) {\n this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit')\n .on('swipeleft.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(true);\n }).on('swiperight.zf.orbit', function(e){\n e.preventDefault();\n _this.changeSlide(false);\n });\n }\n //***************************************\n\n if (this.options.autoPlay) {\n this.$slides.on('click.zf.orbit', function() {\n _this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);\n _this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();\n });\n\n if (this.options.pauseOnHover) {\n this.$element.on('mouseenter.zf.orbit', function() {\n _this.timer.pause();\n }).on('mouseleave.zf.orbit', function() {\n if (!_this.$element.data('clickedOn')) {\n _this.timer.start();\n }\n });\n }\n }\n\n if (this.options.navButtons) {\n var $controls = this.$element.find(`.${this.options.nextClass}, .${this.options.prevClass}`);\n $controls.attr('tabindex', 0)\n //also need to handle enter/return and spacebar key presses\n .on('click.zf.orbit touchend.zf.orbit', function(e){\n\t e.preventDefault();\n _this.changeSlide($(this).hasClass(_this.options.nextClass));\n });\n }\n\n if (this.options.bullets) {\n this.$bullets.on('click.zf.orbit touchend.zf.orbit', function() {\n if (/is-active/g.test(this.className)) { return false; }//if this is active, kick out of function.\n var idx = $(this).data('slide'),\n ltr = idx > _this.$slides.filter('.is-active').data('slide'),\n $slide = _this.$slides.eq(idx);\n\n _this.changeSlide(ltr, $slide, idx);\n });\n }\n\n if (this.options.accessible) {\n this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) {\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Orbit', {\n next: function() {\n _this.changeSlide(true);\n },\n previous: function() {\n _this.changeSlide(false);\n },\n handled: function() { // if bullet is focused, make sure focus moves\n if ($(e.target).is(_this.$bullets)) {\n _this.$bullets.filter('.is-active').focus();\n }\n }\n });\n });\n }\n }\n }\n\n /**\n * Resets Orbit so it can be reinitialized\n */\n _reset() {\n // Don't do anything if there are no slides (first run)\n if (typeof this.$slides === 'undefined') {\n return;\n }\n\n if (this.$slides.length > 1) {\n // Remove old events\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit')\n\n // Restart timer if autoPlay is enabled\n if (this.options.autoPlay) {\n this.timer.restart();\n }\n\n // Reset all sliddes\n this.$slides.each(function(el) {\n $(el).removeClass('is-active is-active is-in')\n .removeAttr('aria-live')\n .hide();\n });\n\n // Show the first slide\n this.$slides.first().addClass('is-active').show();\n\n // Triggers when the slide has finished animating\n this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]);\n\n // Select first bullet if bullets are present\n if (this.options.bullets) {\n this._updateBullets(0);\n }\n }\n }\n\n /**\n * Changes the current slide to a new one.\n * @function\n * @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.\n * @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.\n * @param {Number} idx - the index of the new slide in its collection, if one chosen.\n * @fires Orbit#slidechange\n */\n changeSlide(isLTR, chosenSlide, idx) {\n if (!this.$slides) {return; } // Don't freak out if we're in the middle of cleanup\n var $curSlide = this.$slides.filter('.is-active').eq(0);\n\n if (/mui/g.test($curSlide[0].className)) { return false; } //if the slide is currently animating, kick out of the function\n\n var $firstSlide = this.$slides.first(),\n $lastSlide = this.$slides.last(),\n dirIn = isLTR ? 'Right' : 'Left',\n dirOut = isLTR ? 'Left' : 'Right',\n _this = this,\n $newSlide;\n\n if (!chosenSlide) { //most of the time, this will be auto played or clicked from the navButtons.\n $newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!\n (this.options.infiniteWrap ? $curSlide.next(`.${this.options.slideClass}`).length ? $curSlide.next(`.${this.options.slideClass}`) : $firstSlide : $curSlide.next(`.${this.options.slideClass}`))//pick next slide if moving left to right\n :\n (this.options.infiniteWrap ? $curSlide.prev(`.${this.options.slideClass}`).length ? $curSlide.prev(`.${this.options.slideClass}`) : $lastSlide : $curSlide.prev(`.${this.options.slideClass}`));//pick prev slide if moving right to left\n } else {\n $newSlide = chosenSlide;\n }\n\n if ($newSlide.length) {\n /**\n * Triggers before the next slide starts animating in and only if a next slide has been found.\n * @event Orbit#beforeslidechange\n */\n this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);\n\n if (this.options.bullets) {\n idx = idx || this.$slides.index($newSlide); //grab index to update bullets\n this._updateBullets(idx);\n }\n\n if (this.options.useMUI && !this.$element.is(':hidden')) {\n Motion.animateIn(\n $newSlide.addClass('is-active'),\n this.options[`animInFrom${dirIn}`],\n function(){\n $newSlide.css({'display': 'block'}).attr('aria-live', 'polite');\n });\n\n Motion.animateOut(\n $curSlide.removeClass('is-active'),\n this.options[`animOutTo${dirOut}`],\n function(){\n $curSlide.removeAttr('aria-live');\n if(_this.options.autoPlay && !_this.timer.isPaused){\n _this.timer.restart();\n }\n //do stuff?\n });\n } else {\n $curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();\n $newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();\n if (this.options.autoPlay && !this.timer.isPaused) {\n this.timer.restart();\n }\n }\n /**\n * Triggers when the slide has finished animating in.\n * @event Orbit#slidechange\n */\n this.$element.trigger('slidechange.zf.orbit', [$newSlide]);\n }\n }\n\n /**\n * Updates the active state of the bullets, if displayed.\n * Move the descriptor of the current slide `[data-slide-active-label]` to the newly active bullet.\n * If no `[data-slide-active-label]` is set, will move the exceeding `span` element.\n *\n * @function\n * @private\n * @param {Number} idx - the index of the current slide.\n */\n _updateBullets(idx) {\n var $oldBullet = this.$bullets.filter('.is-active');\n var $othersBullets = this.$bullets.not('.is-active');\n var $newBullet = this.$bullets.eq(idx);\n\n $oldBullet.removeClass('is-active').blur();\n $newBullet.addClass('is-active');\n\n // Find the descriptor for the current slide to move it to the new slide button\n var activeStateDescriptor = $oldBullet.children('[data-slide-active-label]').last();\n\n // If not explicitely given, search for the last \"exceeding\" span element (compared to others bullets).\n if (!activeStateDescriptor.length) {\n var spans = $oldBullet.children('span');\n var spanCountInOthersBullets = $othersBullets.toArray().map(b => $(b).children('span').length);\n\n // If there is an exceeding span element, use it as current slide descriptor\n if (spanCountInOthersBullets.every(count => count < spans.length)) {\n activeStateDescriptor = spans.last();\n activeStateDescriptor.attr('data-slide-active-label', '');\n }\n }\n\n // Move the current slide descriptor to the new slide button\n if (activeStateDescriptor.length) {\n activeStateDescriptor.detach();\n $newBullet.append(activeStateDescriptor);\n }\n }\n\n /**\n * Destroys the carousel and hides the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();\n }\n}\n\nOrbit.defaults = {\n /**\n * Tells the JS to look for and loadBullets.\n * @option\n * @type {boolean}\n * @default true\n */\n bullets: true,\n /**\n * Tells the JS to apply event listeners to nav buttons\n * @option\n * @type {boolean}\n * @default true\n */\n navButtons: true,\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-right'\n */\n animInFromRight: 'slide-in-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-right'\n */\n animOutToRight: 'slide-out-right',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-in-left'\n *\n */\n animInFromLeft: 'slide-in-left',\n /**\n * motion-ui animation class to apply\n * @option\n * @type {string}\n * @default 'slide-out-left'\n */\n animOutToLeft: 'slide-out-left',\n /**\n * Allows Orbit to automatically animate on page load.\n * @option\n * @type {boolean}\n * @default true\n */\n autoPlay: true,\n /**\n * Amount of time, in ms, between slide transitions\n * @option\n * @type {number}\n * @default 5000\n */\n timerDelay: 5000,\n /**\n * Allows Orbit to infinitely loop through the slides\n * @option\n * @type {boolean}\n * @default true\n */\n infiniteWrap: true,\n /**\n * Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library\n * @option\n * @type {boolean}\n * @default true\n */\n swipe: true,\n /**\n * Allows the timing function to pause animation on hover.\n * @option\n * @type {boolean}\n * @default true\n */\n pauseOnHover: true,\n /**\n * Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys\n * @option\n * @type {boolean}\n * @default true\n */\n accessible: true,\n /**\n * Class applied to the container of Orbit\n * @option\n * @type {string}\n * @default 'orbit-container'\n */\n containerClass: 'orbit-container',\n /**\n * Class applied to individual slides.\n * @option\n * @type {string}\n * @default 'orbit-slide'\n */\n slideClass: 'orbit-slide',\n /**\n * Class applied to the bullet container. You're welcome.\n * @option\n * @type {string}\n * @default 'orbit-bullets'\n */\n boxOfBullets: 'orbit-bullets',\n /**\n * Class applied to the `next` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-next'\n */\n nextClass: 'orbit-next',\n /**\n * Class applied to the `previous` navigation button.\n * @option\n * @type {string}\n * @default 'orbit-previous'\n */\n prevClass: 'orbit-previous',\n /**\n * Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatibility.\n * @option\n * @type {boolean}\n * @default true\n */\n useMUI: true\n};\n\nexport {Orbit};\n"],"names":["Timer","elem","options","cb","_this","duration","nameSpace","Object","keys","data","remain","start","timer","isPaused","restart","clearTimeout","Date","now","setTimeout","infinite","trigger","pause","end","Orbit","Plugin","_setup","element","$element","$","extend","defaults","className","Touch","init","_init","Keyboard","register","_reset","$wrapper","find","containerClass","$slides","slideClass","$images","initActive","filter","id","GetYoDigits","attr","length","eq","addClass","useMUI","onImagesLoaded","_prepareForOrbit","bind","bullets","_loadBullets","_events","autoPlay","geoSync","accessible","$bullets","boxOfBullets","timerDelay","changeSlide","_setWrapperHeight","max","temp","counter","each","getBoundingClientRect","height","test","css","_setSlideHeight","off","on","swipe","e","preventDefault","pauseOnHover","navButtons","$controls","nextClass","prevClass","hasClass","idx","ltr","$slide","add","handleKey","next","previous","handled","target","is","focus","el","removeClass","removeAttr","hide","first","show","_updateBullets","isLTR","chosenSlide","$curSlide","$firstSlide","$lastSlide","last","dirIn","dirOut","$newSlide","infiniteWrap","prev","index","Motion","animateIn","animateOut","$oldBullet","$othersBullets","not","$newBullet","blur","activeStateDescriptor","children","spans","spanCountInOthersBullets","toArray","map","b","every","count","detach","append","_destroy","animInFromRight","animOutToRight","animInFromLeft","animOutToLeft"],"mappings":"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"}