{"version":3,"sources":["webpack://__FOUNDATION_EXTERNAL__.[name]/webpack/universalModuleDefinition","webpack://__FOUNDATION_EXTERNAL__.[name]/webpack/bootstrap","webpack:/__FOUNDATION_EXTERNAL__.[name]/external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"}","webpack:/__FOUNDATION_EXTERNAL__.[name]/external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.keyboard\"],\"amd\":\"./foundation.util.keyboard\",\"commonjs\":\"./foundation.util.keyboard\",\"commonjs2\":\"./foundation.util.keyboard\"}","webpack:/__FOUNDATION_EXTERNAL__.[name]/external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.mediaQuery\"],\"amd\":\"./foundation.util.mediaQuery\",\"commonjs\":\"./foundation.util.mediaQuery\",\"commonjs2\":\"./foundation.util.mediaQuery\"}","webpack:/__FOUNDATION_EXTERNAL__.[name]/external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.util.motion\"],\"amd\":\"./foundation.util.motion\",\"commonjs\":\"./foundation.util.motion\",\"commonjs2\":\"./foundation.util.motion\"}","webpack://__FOUNDATION_EXTERNAL__.[name]/js/entries/plugins/foundation.offcanvas.js","webpack://__FOUNDATION_EXTERNAL__.[name]/js/foundation.offcanvas.js","webpack://__FOUNDATION_EXTERNAL__.[name]/js/foundation.util.triggers.js","webpack:/__FOUNDATION_EXTERNAL__.[name]/external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"}"],"names":["root","factory","exports","module","require","define","amd","window","__WEBPACK_EXTERNAL_MODULE__foundation_core__","__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__","__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__","__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__","__WEBPACK_EXTERNAL_MODULE_jquery__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","_foundation_core__WEBPACK_IMPORTED_MODULE_0__","_foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__","Foundation","plugin","OffCanvas","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__","_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__","_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__","_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__","Plugin","element","options","_this2","this","className","$element","$","extend","defaults","data","contentClasses","base","reveal","$lastTrigger","$triggers","position","$content","nested","each","index","val","push","Triggers","init","MediaQuery","_init","_events","Keyboard","register","ESCAPE","id","attr","contentId","siblings","length","first","closest","console","warn","transition","removeClass","addClass","concat","document","find","is","match","contentOverlay","overlay","createElement","overlayPosition","css","setAttribute","$overlay","insertAfter","append","revealOnClass","RegExp","RegExpEscape","revealClass","exec","isRevealed","revealOn","_setMQChecker","transitionTime","_removeContentClasses","off","on","open.zf.trigger","open","close.zf.trigger","close","toggle.zf.trigger","toggle","keydown.zf.offcanvas","_handleKeyboard","closeOnClick","click.zf.offcanvas","_this","onLoadListener","onLoad","atLeast","hasReveal","join","_addContentClasses","event","elem","scrollHeight","clientHeight","scrollTop","allowUp","allowDown","lastY","originalEvent","pageY","up","down","stopPropagation","preventDefault","trigger","hasClass","forceTo","scrollTo","body","contentScroll","_stopScrolling","_recordScrollable","_stopScrollPropagation","autoFocus","one","transitionend","canvasFocus","eq","focus","trapFocus","cb","removeAttr","releaseFocus","e","_this3","handleKey","handled","_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__","MutationObserver","prefixes","triggers","el","type","split","forEach","Listeners","Basic","Global","Initializers","debounceGlobalListener","debounce","listener","timer","args","Array","slice","arguments","clearTimeout","setTimeout","apply","openListener","closeListener","toggleListener","closeableListener","animation","Motion","animateOut","fadeOut","toggleFocusListener","triggerHandler","addOpenListener","$elem","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","scrollListener","closeMeListener","pluginId","namespace","not","addClosemeListener","pluginName","yetiBoxes","plugNames","_typeof","error","listeners","map","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","$target","target","attributeName","pageYOffset","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","triggersInitialized","IHearYou"],"mappings":"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","file":"foundation.offcanvas.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"./foundation.core\"), require(\"./foundation.util.keyboard\"), require(\"./foundation.util.mediaQuery\"), require(\"./foundation.util.motion\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"./foundation.core\", \"./foundation.util.keyboard\", \"./foundation.util.mediaQuery\", \"./foundation.util.motion\", \"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"foundation.offcanvas\"] = factory(require(\"./foundation.core\"), require(\"./foundation.util.keyboard\"), require(\"./foundation.util.mediaQuery\"), require(\"./foundation.util.motion\"), require(\"jquery\"));\n\telse\n\t\troot[\"__FOUNDATION_EXTERNAL__\"] = root[\"__FOUNDATION_EXTERNAL__\"] || {}, root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.offcanvas\"] = factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"], root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.keyboard\"], root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.mediaQuery\"], root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.motion\"], root[\"jQuery\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;","import { Foundation } from './foundation.core';\n\nimport { OffCanvas } from '../../foundation.offcanvas';\nFoundation.plugin(OffCanvas, 'OffCanvas');\n\nexport { Foundation, OffCanvas };\n","'use strict';\n\nimport $ from 'jquery';\nimport { onLoad, transitionend, RegExpEscape } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * OffCanvas module.\n * @module foundation.offcanvas\n * @requires foundation.util.keyboard\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass OffCanvas extends Plugin {\n /**\n * Creates a new instance of an off-canvas wrapper.\n * @class\n * @name OffCanvas\n * @fires OffCanvas#init\n * @param {Object} element - jQuery object to initialize.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.className = 'OffCanvas'; // ie9 back compat\n this.$element = element;\n this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);\n this.contentClasses = { base: [], reveal: [] };\n this.$lastTrigger = $();\n this.$triggers = $();\n this.position = 'left';\n this.$content = $();\n this.nested = !!(this.options.nested);\n\n // Defines the CSS transition/position classes of the off-canvas content container.\n $(['push', 'overlap']).each((index, val) => {\n this.contentClasses.base.push('has-transition-'+val);\n });\n $(['left', 'right', 'top', 'bottom']).each((index, val) => {\n this.contentClasses.base.push('has-position-'+val);\n this.contentClasses.reveal.push('has-reveal-'+val);\n });\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n MediaQuery._init();\n\n this._init();\n this._events();\n\n Keyboard.register('OffCanvas', {\n 'ESCAPE': 'close'\n });\n\n }\n\n /**\n * Initializes the off-canvas wrapper by adding the exit overlay (if needed).\n * @function\n * @private\n */\n _init() {\n var id = this.$element.attr('id');\n\n this.$element.attr('aria-hidden', 'true');\n\n // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)\n if (this.options.contentId) {\n this.$content = $('#'+this.options.contentId);\n } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n } else {\n this.$content = this.$element.closest('[data-off-canvas-content]').first();\n }\n\n if (!this.options.contentId) {\n // Assume that the off-canvas element is nested if it isn't a sibling of the content\n this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n\n } else if (this.options.contentId && this.options.nested === null) {\n // Warning if using content ID without setting the nested option\n // Once the element is nested it is required to work properly in this case\n console.warn('Remember to use the nested option if using the content ID option!');\n }\n\n if (this.nested === true) {\n // Force transition overlap if nested\n this.options.transition = 'overlap';\n // Remove appropriate classes if already assigned in markup\n this.$element.removeClass('is-transition-push');\n }\n\n this.$element.addClass(`is-transition-${this.options.transition} is-closed`);\n\n // Find triggers that affect this element and add aria-expanded to them\n this.$triggers = $(document)\n .find('[data-open=\"'+id+'\"], [data-close=\"'+id+'\"], [data-toggle=\"'+id+'\"]')\n .attr('aria-expanded', 'false')\n .attr('aria-controls', id);\n\n // Get position by checking for related CSS class\n this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n // Add an overlay over the content if necessary\n if (this.options.contentOverlay === true) {\n var overlay = document.createElement('div');\n var overlayPosition = $(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n this.$overlay = $(overlay);\n if(overlayPosition === 'is-overlay-fixed') {\n $(this.$overlay).insertAfter(this.$element);\n } else {\n this.$content.append(this.$overlay);\n }\n }\n\n // Get the revealOn option from the class.\n var revealOnRegExp = new RegExp(RegExpEscape(this.options.revealClass) + '([^\\\\s]+)', 'g');\n var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n if (revealOnClass) {\n this.options.isRevealed = true;\n this.options.revealOn = this.options.revealOn || revealOnClass[1];\n }\n\n // Ensure the `reveal-on-*` class is set.\n if (this.options.isRevealed === true && this.options.revealOn) {\n this.$element.first().addClass(`${this.options.revealClass}${this.options.revealOn}`);\n this._setMQChecker();\n }\n\n if (this.options.transitionTime) {\n this.$element.css('transition-duration', this.options.transitionTime);\n }\n\n // Initally remove all transition/position CSS classes from off-canvas content container.\n this._removeContentClasses();\n }\n\n /**\n * Adds event handlers to the off-canvas wrapper and the exit overlay.\n * @function\n * @private\n */\n _events() {\n this.$element.off('.zf.trigger .zf.offcanvas').on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'keydown.zf.offcanvas': this._handleKeyboard.bind(this)\n });\n\n if (this.options.closeOnClick === true) {\n var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n $target.on({'click.zf.offcanvas': this.close.bind(this)});\n }\n }\n\n /**\n * Applies event listener for elements that will reveal at certain breakpoints.\n * @private\n */\n _setMQChecker() {\n var _this = this;\n\n this.onLoadListener = onLoad($(window), function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n }\n });\n\n $(window).on('changed.zf.mediaquery', function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n } else {\n _this.reveal(false);\n }\n });\n }\n\n /**\n * Removes the CSS transition/position classes of the off-canvas content container.\n * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _removeContentClasses(hasReveal) {\n if (typeof hasReveal !== 'boolean') {\n this.$content.removeClass(this.contentClasses.base.join(' '));\n } else if (hasReveal === false) {\n this.$content.removeClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n * Beforehand any transition/position class gets removed.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _addContentClasses(hasReveal) {\n this._removeContentClasses(hasReveal);\n if (typeof hasReveal !== 'boolean') {\n this.$content.addClass(`has-transition-${this.options.transition} has-position-${this.position}`);\n } else if (hasReveal === true) {\n this.$content.addClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n * @param {Boolean} isRevealed - true if element should be revealed.\n * @function\n */\n reveal(isRevealed) {\n if (isRevealed) {\n this.close();\n this.isRevealed = true;\n this.$element.attr('aria-hidden', 'false');\n this.$element.off('open.zf.trigger toggle.zf.trigger');\n this.$element.removeClass('is-closed');\n } else {\n this.isRevealed = false;\n this.$element.attr('aria-hidden', 'true');\n this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n 'open.zf.trigger': this.open.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this)\n });\n this.$element.addClass('is-closed');\n }\n this._addContentClasses(isRevealed);\n }\n\n /**\n * Stops scrolling of the body when offcanvas is open on mobile Safari and other troublesome browsers.\n * @private\n */\n _stopScrolling(event) {\n return false;\n }\n\n // Taken and adapted from http://stackoverflow.com/questions/16889447/prevent-full-page-scrolling-ios\n // Only really works for y, not sure how to extend to x or if we need to.\n _recordScrollable(event) {\n let elem = this; // called from event handler context with this as elem\n\n // If the element is scrollable (content overflows), then...\n if (elem.scrollHeight !== elem.clientHeight) {\n // If we're at the top, scroll down one pixel to allow scrolling up\n if (elem.scrollTop === 0) {\n elem.scrollTop = 1;\n }\n // If we're at the bottom, scroll up one pixel to allow scrolling down\n if (elem.scrollTop === elem.scrollHeight - elem.clientHeight) {\n elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1;\n }\n }\n elem.allowUp = elem.scrollTop > 0;\n elem.allowDown = elem.scrollTop < (elem.scrollHeight - elem.clientHeight);\n elem.lastY = event.originalEvent.pageY;\n }\n\n _stopScrollPropagation(event) {\n let elem = this; // called from event handler context with this as elem\n let up = event.pageY < elem.lastY;\n let down = !up;\n elem.lastY = event.pageY;\n\n if((up && elem.allowUp) || (down && elem.allowDown)) {\n event.stopPropagation();\n } else {\n event.preventDefault();\n }\n }\n\n /**\n * Opens the off-canvas menu.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n * @fires Offcanvas#opened\n * @todo also trigger 'open' event?\n */\n open(event, trigger) {\n if (this.$element.hasClass('is-open') || this.isRevealed) { return; }\n var _this = this;\n\n if (trigger) {\n this.$lastTrigger = trigger;\n }\n\n if (this.options.forceTo === 'top') {\n window.scrollTo(0, 0);\n } else if (this.options.forceTo === 'bottom') {\n window.scrollTo(0,document.body.scrollHeight);\n }\n\n if (this.options.transitionTime && this.options.transition !== 'overlap') {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n } else {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n }\n\n this.$element.addClass('is-open').removeClass('is-closed');\n\n this.$triggers.attr('aria-expanded', 'true');\n this.$element.attr('aria-hidden', 'false');\n\n this.$content.addClass('is-open-' + this.position);\n\n // If `contentScroll` is set to false, add class and disable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n this.$element.on('touchstart', this._recordScrollable);\n this.$element.on('touchmove', this._stopScrollPropagation);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.addClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.addClass('is-closable');\n }\n\n if (this.options.autoFocus === true) {\n this.$element.one(transitionend(this.$element), function() {\n if (!_this.$element.hasClass('is-open')) {\n return; // exit if prematurely closed\n }\n var canvasFocus = _this.$element.find('[data-autofocus]');\n if (canvasFocus.length) {\n canvasFocus.eq(0).focus();\n } else {\n _this.$element.find('a, button').eq(0).focus();\n }\n });\n }\n\n if (this.options.trapFocus === true) {\n this.$content.attr('tabindex', '-1');\n Keyboard.trapFocus(this.$element);\n }\n\n this._addContentClasses();\n\n /**\n * Fires when the off-canvas menu opens.\n * @event Offcanvas#opened\n */\n this.$element.trigger('opened.zf.offcanvas');\n }\n\n /**\n * Closes the off-canvas menu.\n * @function\n * @param {Function} cb - optional cb to fire after closure.\n * @fires Offcanvas#closed\n */\n close(cb) {\n if (!this.$element.hasClass('is-open') || this.isRevealed) { return; }\n\n var _this = this;\n\n this.$element.removeClass('is-open');\n\n this.$element.attr('aria-hidden', 'true')\n /**\n * Fires when the off-canvas menu opens.\n * @event Offcanvas#closed\n */\n .trigger('closed.zf.offcanvas');\n\n this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);\n this.$element.off('touchstart', this._recordScrollable);\n this.$element.off('touchmove', this._stopScrollPropagation);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-closable');\n }\n\n this.$triggers.attr('aria-expanded', 'false');\n\n if (this.options.trapFocus === true) {\n this.$content.removeAttr('tabindex');\n Keyboard.releaseFocus(this.$element);\n }\n\n // Listen to transitionEnd and add class when done.\n this.$element.one(transitionend(this.$element), function(e) {\n _this.$element.addClass('is-closed');\n _this._removeContentClasses();\n });\n }\n\n /**\n * Toggles the off-canvas menu open or closed.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n */\n toggle(event, trigger) {\n if (this.$element.hasClass('is-open')) {\n this.close(event, trigger);\n }\n else {\n this.open(event, trigger);\n }\n }\n\n /**\n * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.\n * @function\n * @private\n */\n _handleKeyboard(e) {\n Keyboard.handleKey(e, 'OffCanvas', {\n close: () => {\n this.close();\n this.$lastTrigger.focus();\n return true;\n },\n handled: () => {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n }\n\n /**\n * Destroys the offcanvas plugin.\n * @function\n */\n _destroy() {\n this.close();\n this.$element.off('.zf.trigger .zf.offcanvas');\n this.$overlay.off('.zf.offcanvas');\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\nOffCanvas.defaults = {\n /**\n * Allow the user to click outside of the menu to close it.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n\n /**\n * Adds an overlay on top of `[data-off-canvas-content]`.\n * @option\n * @type {boolean}\n * @default true\n */\n contentOverlay: true,\n\n /**\n * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.\n * @option\n * @type {?string}\n * @default null\n */\n contentId: null,\n\n /**\n * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.\n * @option\n * @type {boolean}\n * @default null\n */\n nested: null,\n\n /**\n * Enable/disable scrolling of the main content when an off canvas panel is open.\n * @option\n * @type {boolean}\n * @default true\n */\n contentScroll: true,\n\n /**\n * Amount of time in ms the open and close transition requires. If none selected, pulls from body style.\n * @option\n * @type {number}\n * @default null\n */\n transitionTime: null,\n\n /**\n * Type of transition for the offcanvas menu. Options are 'push', 'detached' or 'slide'.\n * @option\n * @type {string}\n * @default push\n */\n transition: 'push',\n\n /**\n * Force the page to scroll to top or bottom on open.\n * @option\n * @type {?string}\n * @default null\n */\n forceTo: null,\n\n /**\n * Allow the offcanvas to remain open for certain breakpoints.\n * @option\n * @type {boolean}\n * @default false\n */\n isRevealed: false,\n\n /**\n * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.\n * @option\n * @type {?string}\n * @default null\n */\n revealOn: null,\n\n /**\n * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.\n * @option\n * @type {boolean}\n * @default true\n */\n autoFocus: true,\n\n /**\n * Class used to force an offcanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.\n * @option\n * @type {string}\n * @default reveal-for-\n * @todo improve the regex testing for this.\n */\n revealClass: 'reveal-for-',\n\n /**\n * Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false\n}\n\nexport {OffCanvas};\n","'use strict';\n\nimport $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n}());\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n e.stopPropagation();\n let animation = $(this).data('closable');\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).off(trigger).on(trigger, function(e) {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10);//default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener();\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function ($, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;"]}