{"version":3,"file":"foundation.util.box.min.js","sources":["foundation.util.box.min.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"./foundation.core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"./foundation.core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"__FOUNDATION_EXTERNAL__\"] = factory(require(\"./foundation.core\"));\n\telse\n\t\troot[\"__FOUNDATION_EXTERNAL__\"] = root[\"__FOUNDATION_EXTERNAL__\"] || {}, root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.box\"] = factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./js/foundation.util.box.js\":\n/*!***********************************!*\\\n !*** ./js/foundation.util.box.js ***!\n \\***********************************/\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Box: function() { return /* binding */ Box; }\n/* harmony export */ });\nvar Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n};\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver,\n bottomOver,\n leftOver,\n rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n bottomOver = parDims.height + parDims.offset.top - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = parDims.width + parDims.offset.left - (eleDims.offset.left + eleDims.width);\n } else {\n bottomOver = eleDims.windowDims.height + eleDims.windowDims.offset.top - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt(topOver * topOver + bottomOver * bottomOver + leftOver * leftOver + rightOver * rightOver);\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem) {\n elem = elem.length ? elem[0] : elem;\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n };\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n var topVal, leftVal;\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2 + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset;\n break;\n case 'center':\n topVal = $anchorDims.offset.top + vOffset + $anchorDims.height / 2 - $eleDims.height / 2;\n break;\n }\n break;\n }\n }\n return {\n top: topVal,\n left: leftVal\n };\n}\n\n\n/***/ }),\n\n/***/ \"./foundation.core\":\n/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************/\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/*!***************************************************!*\\\n !*** ./js/entries/plugins/foundation.util.box.js ***!\n \\***************************************************/\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Box: function() { return /* reexport safe */ _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__.Box; },\n/* harmony export */ Foundation: function() { return /* reexport safe */ _foundation_core__WEBPACK_IMPORTED_MODULE_0__.Foundation; }\n/* harmony export */ });\n/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ \"./foundation.core\");\n/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.box */ \"./js/foundation.util.box.js\");\n\n\n_foundation_core__WEBPACK_IMPORTED_MODULE_0__.Foundation.Box = _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__.Box;\n\n}();\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=foundation.util.box.js.map"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__foundation_core__","__webpack_modules__","./js/foundation.util.box.js","__unused_webpack_module","__webpack_exports__","__webpack_require__","r","d","Box","ImNotTouchingYou","element","parent","lrOnly","tbOnly","ignoreBottom","OverlapArea","GetDimensions","GetExplicitOffsets","anchor","position","alignment","vOffset","hOffset","isOverflow","topVal","leftVal","$eleDims","$anchorDims","offset","top","height","left","width","bottomOver","topOver","leftOver","eleDims","rightOver","parDims","windowDims","Math","min","sqrt","elem","length","window","document","Error","rect","getBoundingClientRect","parRect","parentNode","winRect","body","winY","pageYOffset","winX","pageXOffset","parentDims","./foundation.core","__webpack_module_cache__","moduleId","cachedModule","undefined","n","getter","__esModule","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_foundation_core__WEBPACK_IMPORTED_MODULE_0__","_foundation_util_box__WEBPACK_IMPORTED_MODULE_1__","Symbol","toStringTag","value","Foundation"],"mappings":"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"}