vendor/assets/js/plugins/foundation.sticky.min.js.map in foundation-rails-6.5.3.0 vs vendor/assets/js/plugins/foundation.sticky.min.js.map in foundation-rails-6.6.1.0
- old
+ new
@@ -1 +1 @@
-{"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.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.sticky.js","webpack://__FOUNDATION_EXTERNAL__.[name]/js/foundation.sticky.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_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_sticky__WEBPACK_IMPORTED_MODULE_1__","Foundation","plugin","Sticky","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__","_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__","_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__","Plugin","element","options","this","$element","$","extend","defaults","data","className","Triggers","init","_init","MediaQuery","$parent","parent","id","GetYoDigits","_this","length","$container","wasWrapped","wrap","container","addClass","containerClass","stickyClass","attr","data-resize","data-mutate","anchor","scrollCount","checkEvery","isStuck","onLoadListener","onLoad","containerHeight","css","getBoundingClientRect","height","elemHeight","$anchor","_parsePoints","_setSizes","scroll","pageYOffset","_calc","_removeSticky","topPoint","_events","split","reverse","join","pts","topAnchor","btmAnchor","document","documentElement","scrollHeight","breaks","len","pt","place","concat","offset","top","toLowerCase","points","scrollListener","isOn","canStick","off","on","e","el","_eventsHandler","_pauseListeners","trigger","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","removeClass","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","cb","is","stickyOn","newElemWidth","width","comp","getComputedStyle","pdngl","parseInt","pdngr","max-width","newContainerHeight","hasClass","_setBreakPoints","mTop","emCalc","marginTop","mBtm","marginBottom","winHeight","innerHeight","bottom","unwrap","em","body","fontSize","_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__","MutationObserver","prefixes","triggers","type","forEach","Listeners","Basic","Global","Initializers","debounceGlobalListener","debounce","listener","timer","args","Array","slice","arguments","clearTimeout","setTimeout","apply","openListener","closeListener","toggleListener","closeableListener","stopPropagation","animation","Motion","animateOut","fadeOut","toggleFocusListener","triggerHandler","addOpenListener","$elem","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","each","closeMeListener","pluginId","namespace","not","addClosemeListener","pluginName","yetiBoxes","plugNames","push","_typeof","console","error","listeners","map","addResizeListener","addScrollListener","addMutationEventsListener","find","listeningElementsMutation","mutationRecordsList","$target","target","attributeName","closest","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","triggersInitialized","IHearYou"],"mappings":"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","file":"foundation.sticky.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.mediaQuery\"), require(\"./foundation.util.motion\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"./foundation.core\", \"./foundation.util.mediaQuery\", \"./foundation.util.motion\", \"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"foundation.sticky\"] = factory(require(\"./foundation.core\"), require(\"./foundation.util.mediaQuery\"), require(\"./foundation.util.motion\"), require(\"jquery\"));\n\telse\n\t\troot[\"__FOUNDATION_EXTERNAL__\"] = root[\"__FOUNDATION_EXTERNAL__\"] || {}, root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.sticky\"] = factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"], 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_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 = 17);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;","import { Foundation } from './foundation.core';\n\nimport { Sticky } from '../../foundation.sticky';\nFoundation.plugin(Sticky, 'Sticky');\n\nexport { Foundation, Sticky };\n","'use strict';\n\nimport $ from 'jquery';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Plugin } from './foundation.core.plugin';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") == \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor == \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor== \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function(e) {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function(e, el) {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n notStuckTo = stickToTop ? 'bottom' : 'top',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css['bottom'] = 'auto';\n if(isTop) {\n css['top'] = 0;\n } else {\n css['top'] = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n var _this = this,\n newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n if (this.$element.css(\"display\") == \"none\") {\n newContainerHeight = 0;\n }\n this.containerHeight = newContainerHeight;\n this.$container.css({\n height: newContainerHeight\n });\n this.elemHeight = newContainerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(newContainerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */\n container: '<div data-sticky-container></div>',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\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__;"]}
+{"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.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.sticky.js","webpack://__FOUNDATION_EXTERNAL__.[name]/js/foundation.sticky.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_mediaQuery__","__WEBPACK_EXTERNAL_MODULE__foundation_util_motion__","__WEBPACK_EXTERNAL_MODULE_jquery__","installedModules","__webpack_require__","m","r","__webpack_exports__","_foundation_core__WEBPACK_IMPORTED_MODULE_0__","d","_foundation_sticky__WEBPACK_IMPORTED_MODULE_1__","Foundation","plugin","Sticky","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","n","_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__","_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__","_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__","Plugin","element","options","this","$element","$","extend","defaults","data","className","Triggers","init","_init","MediaQuery","$parent","parent","id","GetYoDigits","_this","length","$container","wasWrapped","wrap","container","addClass","containerClass","stickyClass","attr","data-resize","data-mutate","anchor","scrollCount","checkEvery","isStuck","onLoadListener","onLoad","containerHeight","css","getBoundingClientRect","height","elemHeight","$anchor","_parsePoints","_setSizes","scroll","pageYOffset","_calc","_removeSticky","topPoint","_events","split","reverse","join","pts","topAnchor","btmAnchor","document","documentElement","scrollHeight","breaks","i","len","pt","place","concat","offset","top","toLowerCase","points","scrollListener","isOn","canStick","off","on","e","el","_eventsHandler","_pauseListeners","trigger","checkSizes","bottomPoint","_setSticky","stickTo","mrgn","notStuckTo","removeClass","isTop","stickToTop","anchorPt","anchorHeight","topOrBottom","cb","is","stickyOn","newElemWidth","width","comp","getComputedStyle","pdngl","parseInt","pdngr","max-width","dynamicHeight","newContainerHeight","hasClass","_setBreakPoints","mTop","emCalc","marginTop","mBtm","marginBottom","winHeight","innerHeight","bottom","unwrap","em","body","fontSize","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__","_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__","triggers","type","forEach","MutationObserver","prefixes","Listeners","Basic","Global","Initializers","debounceGlobalListener","debounce","listener","timer","args","Array","prototype","slice","call","arguments","clearTimeout","setTimeout","apply","openListener","closeListener","toggleListener","closeableListener","animation","stopPropagation","Motion","animateOut","fadeOut","toggleFocusListener","triggerHandler","addOpenListener","$elem","addCloseListener","addToggleListener","addCloseableListener","addToggleFocusListener","resizeListener","$nodes","each","closeMeListener","pluginId","namespace","not","addClosemeListener","pluginName","yetiBoxes","plugNames","push","_typeof","console","error","listeners","map","name","addResizeListener","addScrollListener","addMutationEventsListener","listeningElementsMutation","mutationRecordsList","$target","target","attributeName","closest","find","observe","attributes","childList","characterData","subtree","attributeFilter","addSimpleListeners","$document","addGlobalListeners","triggersInitialized","IHearYou","c","getter","o","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","object","property","hasOwnProperty","p","s","moduleId","l","modules"],"mappings":"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","file":"foundation.sticky.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.mediaQuery\"), require(\"./foundation.util.motion\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"./foundation.core\", \"./foundation.util.mediaQuery\", \"./foundation.util.motion\", \"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"foundation.sticky\"] = factory(require(\"./foundation.core\"), require(\"./foundation.util.mediaQuery\"), require(\"./foundation.util.motion\"), require(\"jquery\"));\n\telse\n\t\troot[\"__FOUNDATION_EXTERNAL__\"] = root[\"__FOUNDATION_EXTERNAL__\"] || {}, root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.sticky\"] = factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"], 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_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 = 17);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;","module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;","import { Foundation } from './foundation.core';\n\nimport { Sticky } from '../../foundation.sticky';\nFoundation.plugin(Sticky, 'Sticky');\n\nexport { Foundation, Sticky };\n","'use strict';\n\nimport $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") == \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor == \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor== \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function(e) {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function(e, el) {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n notStuckTo = stickToTop ? 'bottom' : 'top',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css['bottom'] = 'auto';\n if(isTop) {\n css['top'] = 0;\n } else {\n css['top'] = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n var _this = this,\n newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n // Recalculate the height only if it is \"dynamic\"\n if (this.options.dynamicHeight || !this.containerHeight) {\n // Get the sticked element height and apply it to the container to \"hold the place\"\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n newContainerHeight = this.$element.css(\"display\") == \"none\" ? 0 : newContainerHeight;\n this.$container.css('height', newContainerHeight);\n this.containerHeight = newContainerHeight;\n }\n this.elemHeight = this.containerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(this.containerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */\n container: '<div data-sticky-container></div>',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */\n dynamicHeight: true,\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\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 let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\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__;"]}
\ No newline at end of file