| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807 | /*! tether 1.3.7 */(function(root, factory) {  if (typeof define === 'function' && define.amd) {    define(factory);  } else if (typeof exports === 'object') {    module.exports = factory(require, exports, module);  } else {    root.Tether = factory();  }}(this, function(require, exports, module) {'use strict';var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }var TetherBase = undefined;if (typeof TetherBase === 'undefined') {  TetherBase = { modules: [] };}var zeroElement = null;// Same as native getBoundingClientRect, except it takes into account parent <frame> offsets// if the element lies within a nested document (<frame> or <iframe>-like).function getActualBoundingClientRect(node) {  var boundingRect = node.getBoundingClientRect();  // The original object returned by getBoundingClientRect is immutable, so we clone it  // We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9  var rect = {};  for (var k in boundingRect) {    rect[k] = boundingRect[k];  }  if (node.ownerDocument !== document) {    var _frameElement = node.ownerDocument.defaultView.frameElement;    if (_frameElement) {      var frameRect = getActualBoundingClientRect(_frameElement);      rect.top += frameRect.top;      rect.bottom += frameRect.top;      rect.left += frameRect.left;      rect.right += frameRect.left;    }  }  return rect;}function getScrollParents(el) {  // In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;  // https://bugzilla.mozilla.org/show_bug.cgi?id=548397  var computedStyle = getComputedStyle(el) || {};  var position = computedStyle.position;  var parents = [];  if (position === 'fixed') {    return [el];  }  var parent = el;  while ((parent = parent.parentNode) && parent && parent.nodeType === 1) {    var style = undefined;    try {      style = getComputedStyle(parent);    } catch (err) {}    if (typeof style === 'undefined' || style === null) {      parents.push(parent);      return parents;    }    var _style = style;    var overflow = _style.overflow;    var overflowX = _style.overflowX;    var overflowY = _style.overflowY;    if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {      if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {        parents.push(parent);      }    }  }  parents.push(el.ownerDocument.body);  // If the node is within a frame, account for the parent window scroll  if (el.ownerDocument !== document) {    parents.push(el.ownerDocument.defaultView);  }  return parents;}var uniqueId = (function () {  var id = 0;  return function () {    return ++id;  };})();var zeroPosCache = {};var getOrigin = function getOrigin() {  // getBoundingClientRect is unfortunately too accurate.  It introduces a pixel or two of  // jitter as the user scrolls that messes with our ability to detect if two positions  // are equivilant or not.  We place an element at the top left of the page that will  // get the same jitter, so we can cancel the two out.  var node = zeroElement;  if (!node) {    node = document.createElement('div');    node.setAttribute('data-tether-id', uniqueId());    extend(node.style, {      top: 0,      left: 0,      position: 'absolute'    });    document.body.appendChild(node);    zeroElement = node;  }  var id = node.getAttribute('data-tether-id');  if (typeof zeroPosCache[id] === 'undefined') {    zeroPosCache[id] = getActualBoundingClientRect(node);    // Clear the cache when this position call is done    defer(function () {      delete zeroPosCache[id];    });  }  return zeroPosCache[id];};function removeUtilElements() {  if (zeroElement) {    document.body.removeChild(zeroElement);  }  zeroElement = null;};function getBounds(el) {  var doc = undefined;  if (el === document) {    doc = document;    el = document.documentElement;  } else {    doc = el.ownerDocument;  }  var docEl = doc.documentElement;  var box = getActualBoundingClientRect(el);  var origin = getOrigin();  box.top -= origin.top;  box.left -= origin.left;  if (typeof box.width === 'undefined') {    box.width = document.body.scrollWidth - box.left - box.right;  }  if (typeof box.height === 'undefined') {    box.height = document.body.scrollHeight - box.top - box.bottom;  }  box.top = box.top - docEl.clientTop;  box.left = box.left - docEl.clientLeft;  box.right = doc.body.clientWidth - box.width - box.left;  box.bottom = doc.body.clientHeight - box.height - box.top;  return box;}function getOffsetParent(el) {  return el.offsetParent || document.documentElement;}var _scrollBarSize = null;function getScrollBarSize() {  if (_scrollBarSize) {    return _scrollBarSize;  }  var inner = document.createElement('div');  inner.style.width = '100%';  inner.style.height = '200px';  var outer = document.createElement('div');  extend(outer.style, {    position: 'absolute',    top: 0,    left: 0,    pointerEvents: 'none',    visibility: 'hidden',    width: '200px',    height: '150px',    overflow: 'hidden'  });  outer.appendChild(inner);  document.body.appendChild(outer);  var widthContained = inner.offsetWidth;  outer.style.overflow = 'scroll';  var widthScroll = inner.offsetWidth;  if (widthContained === widthScroll) {    widthScroll = outer.clientWidth;  }  document.body.removeChild(outer);  var width = widthContained - widthScroll;  _scrollBarSize = { width: width, height: width };  return _scrollBarSize;}function extend() {  var out = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];  var args = [];  Array.prototype.push.apply(args, arguments);  args.slice(1).forEach(function (obj) {    if (obj) {      for (var key in obj) {        if (({}).hasOwnProperty.call(obj, key)) {          out[key] = obj[key];        }      }    }  });  return out;}function removeClass(el, name) {  if (typeof el.classList !== 'undefined') {    name.split(' ').forEach(function (cls) {      if (cls.trim()) {        el.classList.remove(cls);      }    });  } else {    var regex = new RegExp('(^| )' + name.split(' ').join('|') + '( |$)', 'gi');    var className = getClassName(el).replace(regex, ' ');    setClassName(el, className);  }}function addClass(el, name) {  if (typeof el.classList !== 'undefined') {    name.split(' ').forEach(function (cls) {      if (cls.trim()) {        el.classList.add(cls);      }    });  } else {    removeClass(el, name);    var cls = getClassName(el) + (' ' + name);    setClassName(el, cls);  }}function hasClass(el, name) {  if (typeof el.classList !== 'undefined') {    return el.classList.contains(name);  }  var className = getClassName(el);  return new RegExp('(^| )' + name + '( |$)', 'gi').test(className);}function getClassName(el) {  // Can't use just SVGAnimatedString here since nodes within a Frame in IE have  // completely separately SVGAnimatedString base classes  if (el.className instanceof el.ownerDocument.defaultView.SVGAnimatedString) {    return el.className.baseVal;  }  return el.className;}function setClassName(el, className) {  el.setAttribute('class', className);}function updateClasses(el, add, all) {  // Of the set of 'all' classes, we need the 'add' classes, and only the  // 'add' classes to be set.  all.forEach(function (cls) {    if (add.indexOf(cls) === -1 && hasClass(el, cls)) {      removeClass(el, cls);    }  });  add.forEach(function (cls) {    if (!hasClass(el, cls)) {      addClass(el, cls);    }  });}var deferred = [];var defer = function defer(fn) {  deferred.push(fn);};var flush = function flush() {  var fn = undefined;  while (fn = deferred.pop()) {    fn();  }};var Evented = (function () {  function Evented() {    _classCallCheck(this, Evented);  }  _createClass(Evented, [{    key: 'on',    value: function on(event, handler, ctx) {      var once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];      if (typeof this.bindings === 'undefined') {        this.bindings = {};      }      if (typeof this.bindings[event] === 'undefined') {        this.bindings[event] = [];      }      this.bindings[event].push({ handler: handler, ctx: ctx, once: once });    }  }, {    key: 'once',    value: function once(event, handler, ctx) {      this.on(event, handler, ctx, true);    }  }, {    key: 'off',    value: function off(event, handler) {      if (typeof this.bindings === 'undefined' || typeof this.bindings[event] === 'undefined') {        return;      }      if (typeof handler === 'undefined') {        delete this.bindings[event];      } else {        var i = 0;        while (i < this.bindings[event].length) {          if (this.bindings[event][i].handler === handler) {            this.bindings[event].splice(i, 1);          } else {            ++i;          }        }      }    }  }, {    key: 'trigger',    value: function trigger(event) {      if (typeof this.bindings !== 'undefined' && this.bindings[event]) {        var i = 0;        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {          args[_key - 1] = arguments[_key];        }        while (i < this.bindings[event].length) {          var _bindings$event$i = this.bindings[event][i];          var handler = _bindings$event$i.handler;          var ctx = _bindings$event$i.ctx;          var once = _bindings$event$i.once;          var context = ctx;          if (typeof context === 'undefined') {            context = this;          }          handler.apply(context, args);          if (once) {            this.bindings[event].splice(i, 1);          } else {            ++i;          }        }      }    }  }]);  return Evented;})();TetherBase.Utils = {  getActualBoundingClientRect: getActualBoundingClientRect,  getScrollParents: getScrollParents,  getBounds: getBounds,  getOffsetParent: getOffsetParent,  extend: extend,  addClass: addClass,  removeClass: removeClass,  hasClass: hasClass,  updateClasses: updateClasses,  defer: defer,  flush: flush,  uniqueId: uniqueId,  Evented: Evented,  getScrollBarSize: getScrollBarSize,  removeUtilElements: removeUtilElements};/* globals TetherBase, performance */'use strict';var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();var _get = function get(_x6, _x7, _x8) { var _again = true; _function: while (_again) { var object = _x6, property = _x7, receiver = _x8; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x6 = parent; _x7 = property; _x8 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }if (typeof TetherBase === 'undefined') {  throw new Error('You must include the utils.js file before tether.js');}var _TetherBase$Utils = TetherBase.Utils;var getScrollParents = _TetherBase$Utils.getScrollParents;var getBounds = _TetherBase$Utils.getBounds;var getOffsetParent = _TetherBase$Utils.getOffsetParent;var extend = _TetherBase$Utils.extend;var addClass = _TetherBase$Utils.addClass;var removeClass = _TetherBase$Utils.removeClass;var updateClasses = _TetherBase$Utils.updateClasses;var defer = _TetherBase$Utils.defer;var flush = _TetherBase$Utils.flush;var getScrollBarSize = _TetherBase$Utils.getScrollBarSize;var removeUtilElements = _TetherBase$Utils.removeUtilElements;function within(a, b) {  var diff = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2];  return a + diff >= b && b >= a - diff;}var transformKey = (function () {  if (typeof document === 'undefined') {    return '';  }  var el = document.createElement('div');  var transforms = ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform'];  for (var i = 0; i < transforms.length; ++i) {    var key = transforms[i];    if (el.style[key] !== undefined) {      return key;    }  }})();var tethers = [];var position = function position() {  tethers.forEach(function (tether) {    tether.position(false);  });  flush();};function now() {  if (typeof performance !== 'undefined' && typeof performance.now !== 'undefined') {    return performance.now();  }  return +new Date();}(function () {  var lastCall = null;  var lastDuration = null;  var pendingTimeout = null;  var tick = function tick() {    if (typeof lastDuration !== 'undefined' && lastDuration > 16) {      // We voluntarily throttle ourselves if we can't manage 60fps      lastDuration = Math.min(lastDuration - 16, 250);      // Just in case this is the last event, remember to position just once more      pendingTimeout = setTimeout(tick, 250);      return;    }    if (typeof lastCall !== 'undefined' && now() - lastCall < 10) {      // Some browsers call events a little too frequently, refuse to run more than is reasonable      return;    }    if (pendingTimeout != null) {      clearTimeout(pendingTimeout);      pendingTimeout = null;    }    lastCall = now();    position();    lastDuration = now() - lastCall;  };  if (typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {    ['resize', 'scroll', 'touchmove'].forEach(function (event) {      window.addEventListener(event, tick);    });  }})();var MIRROR_LR = {  center: 'center',  left: 'right',  right: 'left'};var MIRROR_TB = {  middle: 'middle',  top: 'bottom',  bottom: 'top'};var OFFSET_MAP = {  top: 0,  left: 0,  middle: '50%',  center: '50%',  bottom: '100%',  right: '100%'};var autoToFixedAttachment = function autoToFixedAttachment(attachment, relativeToAttachment) {  var left = attachment.left;  var top = attachment.top;  if (left === 'auto') {    left = MIRROR_LR[relativeToAttachment.left];  }  if (top === 'auto') {    top = MIRROR_TB[relativeToAttachment.top];  }  return { left: left, top: top };};var attachmentToOffset = function attachmentToOffset(attachment) {  var left = attachment.left;  var top = attachment.top;  if (typeof OFFSET_MAP[attachment.left] !== 'undefined') {    left = OFFSET_MAP[attachment.left];  }  if (typeof OFFSET_MAP[attachment.top] !== 'undefined') {    top = OFFSET_MAP[attachment.top];  }  return { left: left, top: top };};function addOffset() {  var out = { top: 0, left: 0 };  for (var _len = arguments.length, offsets = Array(_len), _key = 0; _key < _len; _key++) {    offsets[_key] = arguments[_key];  }  offsets.forEach(function (_ref) {    var top = _ref.top;    var left = _ref.left;    if (typeof top === 'string') {      top = parseFloat(top, 10);    }    if (typeof left === 'string') {      left = parseFloat(left, 10);    }    out.top += top;    out.left += left;  });  return out;}function offsetToPx(offset, size) {  if (typeof offset.left === 'string' && offset.left.indexOf('%') !== -1) {    offset.left = parseFloat(offset.left, 10) / 100 * size.width;  }  if (typeof offset.top === 'string' && offset.top.indexOf('%') !== -1) {    offset.top = parseFloat(offset.top, 10) / 100 * size.height;  }  return offset;}var parseOffset = function parseOffset(value) {  var _value$split = value.split(' ');  var _value$split2 = _slicedToArray(_value$split, 2);  var top = _value$split2[0];  var left = _value$split2[1];  return { top: top, left: left };};var parseAttachment = parseOffset;var TetherClass = (function (_Evented) {  _inherits(TetherClass, _Evented);  function TetherClass(options) {    var _this = this;    _classCallCheck(this, TetherClass);    _get(Object.getPrototypeOf(TetherClass.prototype), 'constructor', this).call(this);    this.position = this.position.bind(this);    tethers.push(this);    this.history = [];    this.setOptions(options, false);    TetherBase.modules.forEach(function (module) {      if (typeof module.initialize !== 'undefined') {        module.initialize.call(_this);      }    });    this.position();  }  _createClass(TetherClass, [{    key: 'getClass',    value: function getClass() {      var key = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];      var classes = this.options.classes;      if (typeof classes !== 'undefined' && classes[key]) {        return this.options.classes[key];      } else if (this.options.classPrefix) {        return this.options.classPrefix + '-' + key;      } else {        return key;      }    }  }, {    key: 'setOptions',    value: function setOptions(options) {      var _this2 = this;      var pos = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];      var defaults = {        offset: '0 0',        targetOffset: '0 0',        targetAttachment: 'auto auto',        classPrefix: 'tether'      };      this.options = extend(defaults, options);      var _options = this.options;      var element = _options.element;      var target = _options.target;      var targetModifier = _options.targetModifier;      this.element = element;      this.target = target;      this.targetModifier = targetModifier;      if (this.target === 'viewport') {        this.target = document.body;        this.targetModifier = 'visible';      } else if (this.target === 'scroll-handle') {        this.target = document.body;        this.targetModifier = 'scroll-handle';      }      ['element', 'target'].forEach(function (key) {        if (typeof _this2[key] === 'undefined') {          throw new Error('Tether Error: Both element and target must be defined');        }        if (typeof _this2[key].jquery !== 'undefined') {          _this2[key] = _this2[key][0];        } else if (typeof _this2[key] === 'string') {          _this2[key] = document.querySelector(_this2[key]);        }      });      addClass(this.element, this.getClass('element'));      if (!(this.options.addTargetClasses === false)) {        addClass(this.target, this.getClass('target'));      }      if (!this.options.attachment) {        throw new Error('Tether Error: You must provide an attachment');      }      this.targetAttachment = parseAttachment(this.options.targetAttachment);      this.attachment = parseAttachment(this.options.attachment);      this.offset = parseOffset(this.options.offset);      this.targetOffset = parseOffset(this.options.targetOffset);      if (typeof this.scrollParents !== 'undefined') {        this.disable();      }      if (this.targetModifier === 'scroll-handle') {        this.scrollParents = [this.target];      } else {        this.scrollParents = getScrollParents(this.target);      }      if (!(this.options.enabled === false)) {        this.enable(pos);      }    }  }, {    key: 'getTargetBounds',    value: function getTargetBounds() {      if (typeof this.targetModifier !== 'undefined') {        if (this.targetModifier === 'visible') {          if (this.target === document.body) {            return { top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth };          } else {            var bounds = getBounds(this.target);            var out = {              height: bounds.height,              width: bounds.width,              top: bounds.top,              left: bounds.left            };            out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));            out.height = Math.min(out.height, bounds.height - (bounds.top + bounds.height - (pageYOffset + innerHeight)));            out.height = Math.min(innerHeight, out.height);            out.height -= 2;            out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));            out.width = Math.min(out.width, bounds.width - (bounds.left + bounds.width - (pageXOffset + innerWidth)));            out.width = Math.min(innerWidth, out.width);            out.width -= 2;            if (out.top < pageYOffset) {              out.top = pageYOffset;            }            if (out.left < pageXOffset) {              out.left = pageXOffset;            }            return out;          }        } else if (this.targetModifier === 'scroll-handle') {          var bounds = undefined;          var target = this.target;          if (target === document.body) {            target = document.documentElement;            bounds = {              left: pageXOffset,              top: pageYOffset,              height: innerHeight,              width: innerWidth            };          } else {            bounds = getBounds(target);          }          var style = getComputedStyle(target);          var hasBottomScroll = target.scrollWidth > target.clientWidth || [style.overflow, style.overflowX].indexOf('scroll') >= 0 || this.target !== document.body;          var scrollBottom = 0;          if (hasBottomScroll) {            scrollBottom = 15;          }          var height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;          var out = {            width: 15,            height: height * 0.975 * (height / target.scrollHeight),            left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15          };          var fitAdj = 0;          if (height < 408 && this.target === document.body) {            fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;          }          if (this.target !== document.body) {            out.height = Math.max(out.height, 24);          }          var scrollPercentage = this.target.scrollTop / (target.scrollHeight - height);          out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);          if (this.target === document.body) {            out.height = Math.max(out.height, 24);          }          return out;        }      } else {        return getBounds(this.target);      }    }  }, {    key: 'clearCache',    value: function clearCache() {      this._cache = {};    }  }, {    key: 'cache',    value: function cache(k, getter) {      // More than one module will often need the same DOM info, so      // we keep a cache which is cleared on each position call      if (typeof this._cache === 'undefined') {        this._cache = {};      }      if (typeof this._cache[k] === 'undefined') {        this._cache[k] = getter.call(this);      }      return this._cache[k];    }  }, {    key: 'enable',    value: function enable() {      var _this3 = this;      var pos = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];      if (!(this.options.addTargetClasses === false)) {        addClass(this.target, this.getClass('enabled'));      }      addClass(this.element, this.getClass('enabled'));      this.enabled = true;      this.scrollParents.forEach(function (parent) {        if (parent !== _this3.target.ownerDocument) {          parent.addEventListener('scroll', _this3.position);        }      });      if (pos) {        this.position();      }    }  }, {    key: 'disable',    value: function disable() {      var _this4 = this;      removeClass(this.target, this.getClass('enabled'));      removeClass(this.element, this.getClass('enabled'));      this.enabled = false;      if (typeof this.scrollParents !== 'undefined') {        this.scrollParents.forEach(function (parent) {          parent.removeEventListener('scroll', _this4.position);        });      }    }  }, {    key: 'destroy',    value: function destroy() {      var _this5 = this;      this.disable();      tethers.forEach(function (tether, i) {        if (tether === _this5) {          tethers.splice(i, 1);        }      });      // Remove any elements we were using for convenience from the DOM      if (tethers.length === 0) {        removeUtilElements();      }    }  }, {    key: 'updateAttachClasses',    value: function updateAttachClasses(elementAttach, targetAttach) {      var _this6 = this;      elementAttach = elementAttach || this.attachment;      targetAttach = targetAttach || this.targetAttachment;      var sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];      if (typeof this._addAttachClasses !== 'undefined' && this._addAttachClasses.length) {        // updateAttachClasses can be called more than once in a position call, so        // we need to clean up after ourselves such that when the last defer gets        // ran it doesn't add any extra classes from previous calls.        this._addAttachClasses.splice(0, this._addAttachClasses.length);      }      if (typeof this._addAttachClasses === 'undefined') {        this._addAttachClasses = [];      }      var add = this._addAttachClasses;      if (elementAttach.top) {        add.push(this.getClass('element-attached') + '-' + elementAttach.top);      }      if (elementAttach.left) {        add.push(this.getClass('element-attached') + '-' + elementAttach.left);      }      if (targetAttach.top) {        add.push(this.getClass('target-attached') + '-' + targetAttach.top);      }      if (targetAttach.left) {        add.push(this.getClass('target-attached') + '-' + targetAttach.left);      }      var all = [];      sides.forEach(function (side) {        all.push(_this6.getClass('element-attached') + '-' + side);        all.push(_this6.getClass('target-attached') + '-' + side);      });      defer(function () {        if (!(typeof _this6._addAttachClasses !== 'undefined')) {          return;        }        updateClasses(_this6.element, _this6._addAttachClasses, all);        if (!(_this6.options.addTargetClasses === false)) {          updateClasses(_this6.target, _this6._addAttachClasses, all);        }        delete _this6._addAttachClasses;      });    }  }, {    key: 'position',    value: function position() {      var _this7 = this;      var flushChanges = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];      // flushChanges commits the changes immediately, leave true unless you are positioning multiple      // tethers (in which case call Tether.Utils.flush yourself when you're done)      if (!this.enabled) {        return;      }      this.clearCache();      // Turn 'auto' attachments into the appropriate corner or edge      var targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);      this.updateAttachClasses(this.attachment, targetAttachment);      var elementPos = this.cache('element-bounds', function () {        return getBounds(_this7.element);      });      var width = elementPos.width;      var height = elementPos.height;      if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {        var _lastSize = this.lastSize;        // We cache the height and width to make it possible to position elements that are        // getting hidden.        width = _lastSize.width;        height = _lastSize.height;      } else {        this.lastSize = { width: width, height: height };      }      var targetPos = this.cache('target-bounds', function () {        return _this7.getTargetBounds();      });      var targetSize = targetPos;      // Get an actual px offset from the attachment      var offset = offsetToPx(attachmentToOffset(this.attachment), { width: width, height: height });      var targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);      var manualOffset = offsetToPx(this.offset, { width: width, height: height });      var manualTargetOffset = offsetToPx(this.targetOffset, targetSize);      // Add the manually provided offset      offset = addOffset(offset, manualOffset);      targetOffset = addOffset(targetOffset, manualTargetOffset);      // It's now our goal to make (element position + offset) == (target position + target offset)      var left = targetPos.left + targetOffset.left - offset.left;      var top = targetPos.top + targetOffset.top - offset.top;      for (var i = 0; i < TetherBase.modules.length; ++i) {        var _module2 = TetherBase.modules[i];        var ret = _module2.position.call(this, {          left: left,          top: top,          targetAttachment: targetAttachment,          targetPos: targetPos,          elementPos: elementPos,          offset: offset,          targetOffset: targetOffset,          manualOffset: manualOffset,          manualTargetOffset: manualTargetOffset,          scrollbarSize: scrollbarSize,          attachment: this.attachment        });        if (ret === false) {          return false;        } else if (typeof ret === 'undefined' || typeof ret !== 'object') {          continue;        } else {          top = ret.top;          left = ret.left;        }      }      // We describe the position three different ways to give the optimizer      // a chance to decide the best possible way to position the element      // with the fewest repaints.      var next = {        // It's position relative to the page (absolute positioning when        // the element is a child of the body)        page: {          top: top,          left: left        },        // It's position relative to the viewport (fixed positioning)        viewport: {          top: top - pageYOffset,          bottom: pageYOffset - top - height + innerHeight,          left: left - pageXOffset,          right: pageXOffset - left - width + innerWidth        }      };      var doc = this.target.ownerDocument;      var win = doc.defaultView;      var scrollbarSize = undefined;      if (win.innerHeight > doc.documentElement.clientHeight) {        scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);        next.viewport.bottom -= scrollbarSize.height;      }      if (win.innerWidth > doc.documentElement.clientWidth) {        scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);        next.viewport.right -= scrollbarSize.width;      }      if (['', 'static'].indexOf(doc.body.style.position) === -1 || ['', 'static'].indexOf(doc.body.parentElement.style.position) === -1) {        // Absolute positioning in the body will be relative to the page, not the 'initial containing block'        next.page.bottom = doc.body.scrollHeight - top - height;        next.page.right = doc.body.scrollWidth - left - width;      }      if (typeof this.options.optimizations !== 'undefined' && this.options.optimizations.moveElement !== false && !(typeof this.targetModifier !== 'undefined')) {        (function () {          var offsetParent = _this7.cache('target-offsetparent', function () {            return getOffsetParent(_this7.target);          });          var offsetPosition = _this7.cache('target-offsetparent-bounds', function () {            return getBounds(offsetParent);          });          var offsetParentStyle = getComputedStyle(offsetParent);          var offsetParentSize = offsetPosition;          var offsetBorder = {};          ['Top', 'Left', 'Bottom', 'Right'].forEach(function (side) {            offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle['border' + side + 'Width']);          });          offsetPosition.right = doc.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;          offsetPosition.bottom = doc.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;          if (next.page.top >= offsetPosition.top + offsetBorder.top && next.page.bottom >= offsetPosition.bottom) {            if (next.page.left >= offsetPosition.left + offsetBorder.left && next.page.right >= offsetPosition.right) {              // We're within the visible part of the target's scroll parent              var scrollTop = offsetParent.scrollTop;              var scrollLeft = offsetParent.scrollLeft;              // It's position relative to the target's offset parent (absolute positioning when              // the element is moved to be a child of the target's offset parent).              next.offset = {                top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,                left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left              };            }          }        })();      }      // We could also travel up the DOM and try each containing context, rather than only      // looking at the body, but we're gonna get diminishing returns.      this.move(next);      this.history.unshift(next);      if (this.history.length > 3) {        this.history.pop();      }      if (flushChanges) {        flush();      }      return true;    }    // THE ISSUE  }, {    key: 'move',    value: function move(pos) {      var _this8 = this;      if (!(typeof this.element.parentNode !== 'undefined')) {        return;      }      var same = {};      for (var type in pos) {        same[type] = {};        for (var key in pos[type]) {          var found = false;          for (var i = 0; i < this.history.length; ++i) {            var point = this.history[i];            if (typeof point[type] !== 'undefined' && !within(point[type][key], pos[type][key])) {              found = true;              break;            }          }          if (!found) {            same[type][key] = true;          }        }      }      var css = { top: '', left: '', right: '', bottom: '' };      var transcribe = function transcribe(_same, _pos) {        var hasOptimizations = typeof _this8.options.optimizations !== 'undefined';        var gpu = hasOptimizations ? _this8.options.optimizations.gpu : null;        if (gpu !== false) {          var yPos = undefined,              xPos = undefined;          if (_same.top) {            css.top = 0;            yPos = _pos.top;          } else {            css.bottom = 0;            yPos = -_pos.bottom;          }          if (_same.left) {            css.left = 0;            xPos = _pos.left;          } else {            css.right = 0;            xPos = -_pos.right;          }          if (window.matchMedia) {            // HubSpot/tether#207            var retina = window.matchMedia('only screen and (min-resolution: 1.3dppx)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3)').matches;            if (!retina) {              xPos = Math.round(xPos);              yPos = Math.round(yPos);            }          }          css[transformKey] = 'translateX(' + xPos + 'px) translateY(' + yPos + 'px)';          if (transformKey !== 'msTransform') {            // The Z transform will keep this in the GPU (faster, and prevents artifacts),            // but IE9 doesn't support 3d transforms and will choke.            css[transformKey] += " translateZ(0)";          }        } else {          if (_same.top) {            css.top = _pos.top + 'px';          } else {            css.bottom = _pos.bottom + 'px';          }          if (_same.left) {            css.left = _pos.left + 'px';          } else {            css.right = _pos.right + 'px';          }        }      };      var moved = false;      if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {        css.position = 'absolute';        transcribe(same.page, pos.page);      } else if ((same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {        css.position = 'fixed';        transcribe(same.viewport, pos.viewport);      } else if (typeof same.offset !== 'undefined' && same.offset.top && same.offset.left) {        (function () {          css.position = 'absolute';          var offsetParent = _this8.cache('target-offsetparent', function () {            return getOffsetParent(_this8.target);          });          if (getOffsetParent(_this8.element) !== offsetParent) {            defer(function () {              _this8.element.parentNode.removeChild(_this8.element);              offsetParent.appendChild(_this8.element);            });          }          transcribe(same.offset, pos.offset);          moved = true;        })();      } else {        css.position = 'absolute';        transcribe({ top: true, left: true }, pos.page);      }      if (!moved) {        var offsetParentIsBody = true;        var currentNode = this.element.parentNode;        while (currentNode && currentNode.nodeType === 1 && currentNode.tagName !== 'BODY') {          if (getComputedStyle(currentNode).position !== 'static') {            offsetParentIsBody = false;            break;          }          currentNode = currentNode.parentNode;        }        if (!offsetParentIsBody) {          this.element.parentNode.removeChild(this.element);          this.element.ownerDocument.body.appendChild(this.element);        }      }      // Any css change will trigger a repaint, so let's avoid one if nothing changed      var writeCSS = {};      var write = false;      for (var key in css) {        var val = css[key];        var elVal = this.element.style[key];        if (elVal !== val) {          write = true;          writeCSS[key] = val;        }      }      if (write) {        defer(function () {          extend(_this8.element.style, writeCSS);          _this8.trigger('repositioned');        });      }    }  }]);  return TetherClass;})(Evented);TetherClass.modules = [];TetherBase.position = position;var Tether = extend(TetherClass, TetherBase);/* globals TetherBase */'use strict';var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();var _TetherBase$Utils = TetherBase.Utils;var getBounds = _TetherBase$Utils.getBounds;var extend = _TetherBase$Utils.extend;var updateClasses = _TetherBase$Utils.updateClasses;var defer = _TetherBase$Utils.defer;var BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];function getBoundingRect(tether, to) {  if (to === 'scrollParent') {    to = tether.scrollParents[0];  } else if (to === 'window') {    to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];  }  if (to === document) {    to = to.documentElement;  }  if (typeof to.nodeType !== 'undefined') {    (function () {      var node = to;      var size = getBounds(to);      var pos = size;      var style = getComputedStyle(to);      to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top];      // Account any parent Frames scroll offset      if (node.ownerDocument !== document) {        var win = node.ownerDocument.defaultView;        to[0] += win.pageXOffset;        to[1] += win.pageYOffset;        to[2] += win.pageXOffset;        to[3] += win.pageYOffset;      }      BOUNDS_FORMAT.forEach(function (side, i) {        side = side[0].toUpperCase() + side.substr(1);        if (side === 'Top' || side === 'Left') {          to[i] += parseFloat(style['border' + side + 'Width']);        } else {          to[i] -= parseFloat(style['border' + side + 'Width']);        }      });    })();  }  return to;}TetherBase.modules.push({  position: function position(_ref) {    var _this = this;    var top = _ref.top;    var left = _ref.left;    var targetAttachment = _ref.targetAttachment;    if (!this.options.constraints) {      return true;    }    var _cache = this.cache('element-bounds', function () {      return getBounds(_this.element);    });    var height = _cache.height;    var width = _cache.width;    if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {      var _lastSize = this.lastSize;      // Handle the item getting hidden as a result of our positioning without glitching      // the classes in and out      width = _lastSize.width;      height = _lastSize.height;    }    var targetSize = this.cache('target-bounds', function () {      return _this.getTargetBounds();    });    var targetHeight = targetSize.height;    var targetWidth = targetSize.width;    var allClasses = [this.getClass('pinned'), this.getClass('out-of-bounds')];    this.options.constraints.forEach(function (constraint) {      var outOfBoundsClass = constraint.outOfBoundsClass;      var pinnedClass = constraint.pinnedClass;      if (outOfBoundsClass) {        allClasses.push(outOfBoundsClass);      }      if (pinnedClass) {        allClasses.push(pinnedClass);      }    });    allClasses.forEach(function (cls) {      ['left', 'top', 'right', 'bottom'].forEach(function (side) {        allClasses.push(cls + '-' + side);      });    });    var addClasses = [];    var tAttachment = extend({}, targetAttachment);    var eAttachment = extend({}, this.attachment);    this.options.constraints.forEach(function (constraint) {      var to = constraint.to;      var attachment = constraint.attachment;      var pin = constraint.pin;      if (typeof attachment === 'undefined') {        attachment = '';      }      var changeAttachX = undefined,          changeAttachY = undefined;      if (attachment.indexOf(' ') >= 0) {        var _attachment$split = attachment.split(' ');        var _attachment$split2 = _slicedToArray(_attachment$split, 2);        changeAttachY = _attachment$split2[0];        changeAttachX = _attachment$split2[1];      } else {        changeAttachX = changeAttachY = attachment;      }      var bounds = getBoundingRect(_this, to);      if (changeAttachY === 'target' || changeAttachY === 'both') {        if (top < bounds[1] && tAttachment.top === 'top') {          top += targetHeight;          tAttachment.top = 'bottom';        }        if (top + height > bounds[3] && tAttachment.top === 'bottom') {          top -= targetHeight;          tAttachment.top = 'top';        }      }      if (changeAttachY === 'together') {        if (tAttachment.top === 'top') {          if (eAttachment.top === 'bottom' && top < bounds[1]) {            top += targetHeight;            tAttachment.top = 'bottom';            top += height;            eAttachment.top = 'top';          } else if (eAttachment.top === 'top' && top + height > bounds[3] && top - (height - targetHeight) >= bounds[1]) {            top -= height - targetHeight;            tAttachment.top = 'bottom';            eAttachment.top = 'bottom';          }        }        if (tAttachment.top === 'bottom') {          if (eAttachment.top === 'top' && top + height > bounds[3]) {            top -= targetHeight;            tAttachment.top = 'top';            top -= height;            eAttachment.top = 'bottom';          } else if (eAttachment.top === 'bottom' && top < bounds[1] && top + (height * 2 - targetHeight) <= bounds[3]) {            top += height - targetHeight;            tAttachment.top = 'top';            eAttachment.top = 'top';          }        }        if (tAttachment.top === 'middle') {          if (top + height > bounds[3] && eAttachment.top === 'top') {            top -= height;            eAttachment.top = 'bottom';          } else if (top < bounds[1] && eAttachment.top === 'bottom') {            top += height;            eAttachment.top = 'top';          }        }      }      if (changeAttachX === 'target' || changeAttachX === 'both') {        if (left < bounds[0] && tAttachment.left === 'left') {          left += targetWidth;          tAttachment.left = 'right';        }        if (left + width > bounds[2] && tAttachment.left === 'right') {          left -= targetWidth;          tAttachment.left = 'left';        }      }      if (changeAttachX === 'together') {        if (left < bounds[0] && tAttachment.left === 'left') {          if (eAttachment.left === 'right') {            left += targetWidth;            tAttachment.left = 'right';            left += width;            eAttachment.left = 'left';          } else if (eAttachment.left === 'left') {            left += targetWidth;            tAttachment.left = 'right';            left -= width;            eAttachment.left = 'right';          }        } else if (left + width > bounds[2] && tAttachment.left === 'right') {          if (eAttachment.left === 'left') {            left -= targetWidth;            tAttachment.left = 'left';            left -= width;            eAttachment.left = 'right';          } else if (eAttachment.left === 'right') {            left -= targetWidth;            tAttachment.left = 'left';            left += width;            eAttachment.left = 'left';          }        } else if (tAttachment.left === 'center') {          if (left + width > bounds[2] && eAttachment.left === 'left') {            left -= width;            eAttachment.left = 'right';          } else if (left < bounds[0] && eAttachment.left === 'right') {            left += width;            eAttachment.left = 'left';          }        }      }      if (changeAttachY === 'element' || changeAttachY === 'both') {        if (top < bounds[1] && eAttachment.top === 'bottom') {          top += height;          eAttachment.top = 'top';        }        if (top + height > bounds[3] && eAttachment.top === 'top') {          top -= height;          eAttachment.top = 'bottom';        }      }      if (changeAttachX === 'element' || changeAttachX === 'both') {        if (left < bounds[0]) {          if (eAttachment.left === 'right') {            left += width;            eAttachment.left = 'left';          } else if (eAttachment.left === 'center') {            left += width / 2;            eAttachment.left = 'left';          }        }        if (left + width > bounds[2]) {          if (eAttachment.left === 'left') {            left -= width;            eAttachment.left = 'right';          } else if (eAttachment.left === 'center') {            left -= width / 2;            eAttachment.left = 'right';          }        }      }      if (typeof pin === 'string') {        pin = pin.split(',').map(function (p) {          return p.trim();        });      } else if (pin === true) {        pin = ['top', 'left', 'right', 'bottom'];      }      pin = pin || [];      var pinned = [];      var oob = [];      if (top < bounds[1]) {        if (pin.indexOf('top') >= 0) {          top = bounds[1];          pinned.push('top');        } else {          oob.push('top');        }      }      if (top + height > bounds[3]) {        if (pin.indexOf('bottom') >= 0) {          top = bounds[3] - height;          pinned.push('bottom');        } else {          oob.push('bottom');        }      }      if (left < bounds[0]) {        if (pin.indexOf('left') >= 0) {          left = bounds[0];          pinned.push('left');        } else {          oob.push('left');        }      }      if (left + width > bounds[2]) {        if (pin.indexOf('right') >= 0) {          left = bounds[2] - width;          pinned.push('right');        } else {          oob.push('right');        }      }      if (pinned.length) {        (function () {          var pinnedClass = undefined;          if (typeof _this.options.pinnedClass !== 'undefined') {            pinnedClass = _this.options.pinnedClass;          } else {            pinnedClass = _this.getClass('pinned');          }          addClasses.push(pinnedClass);          pinned.forEach(function (side) {            addClasses.push(pinnedClass + '-' + side);          });        })();      }      if (oob.length) {        (function () {          var oobClass = undefined;          if (typeof _this.options.outOfBoundsClass !== 'undefined') {            oobClass = _this.options.outOfBoundsClass;          } else {            oobClass = _this.getClass('out-of-bounds');          }          addClasses.push(oobClass);          oob.forEach(function (side) {            addClasses.push(oobClass + '-' + side);          });        })();      }      if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {        eAttachment.left = tAttachment.left = false;      }      if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {        eAttachment.top = tAttachment.top = false;      }      if (tAttachment.top !== targetAttachment.top || tAttachment.left !== targetAttachment.left || eAttachment.top !== _this.attachment.top || eAttachment.left !== _this.attachment.left) {        _this.updateAttachClasses(eAttachment, tAttachment);        _this.trigger('update', {          attachment: eAttachment,          targetAttachment: tAttachment        });      }    });    defer(function () {      if (!(_this.options.addTargetClasses === false)) {        updateClasses(_this.target, addClasses, allClasses);      }      updateClasses(_this.element, addClasses, allClasses);    });    return { top: top, left: left };  }});/* globals TetherBase */'use strict';var _TetherBase$Utils = TetherBase.Utils;var getBounds = _TetherBase$Utils.getBounds;var updateClasses = _TetherBase$Utils.updateClasses;var defer = _TetherBase$Utils.defer;TetherBase.modules.push({  position: function position(_ref) {    var _this = this;    var top = _ref.top;    var left = _ref.left;    var _cache = this.cache('element-bounds', function () {      return getBounds(_this.element);    });    var height = _cache.height;    var width = _cache.width;    var targetPos = this.getTargetBounds();    var bottom = top + height;    var right = left + width;    var abutted = [];    if (top <= targetPos.bottom && bottom >= targetPos.top) {      ['left', 'right'].forEach(function (side) {        var targetPosSide = targetPos[side];        if (targetPosSide === left || targetPosSide === right) {          abutted.push(side);        }      });    }    if (left <= targetPos.right && right >= targetPos.left) {      ['top', 'bottom'].forEach(function (side) {        var targetPosSide = targetPos[side];        if (targetPosSide === top || targetPosSide === bottom) {          abutted.push(side);        }      });    }    var allClasses = [];    var addClasses = [];    var sides = ['left', 'top', 'right', 'bottom'];    allClasses.push(this.getClass('abutted'));    sides.forEach(function (side) {      allClasses.push(_this.getClass('abutted') + '-' + side);    });    if (abutted.length) {      addClasses.push(this.getClass('abutted'));    }    abutted.forEach(function (side) {      addClasses.push(_this.getClass('abutted') + '-' + side);    });    defer(function () {      if (!(_this.options.addTargetClasses === false)) {        updateClasses(_this.target, addClasses, allClasses);      }      updateClasses(_this.element, addClasses, allClasses);    });    return true;  }});/* globals TetherBase */'use strict';var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();TetherBase.modules.push({  position: function position(_ref) {    var top = _ref.top;    var left = _ref.left;    if (!this.options.shift) {      return;    }    var shift = this.options.shift;    if (typeof this.options.shift === 'function') {      shift = this.options.shift.call(this, { top: top, left: left });    }    var shiftTop = undefined,        shiftLeft = undefined;    if (typeof shift === 'string') {      shift = shift.split(' ');      shift[1] = shift[1] || shift[0];      var _shift = shift;      var _shift2 = _slicedToArray(_shift, 2);      shiftTop = _shift2[0];      shiftLeft = _shift2[1];      shiftTop = parseFloat(shiftTop, 10);      shiftLeft = parseFloat(shiftLeft, 10);    } else {      shiftTop = shift.top;      shiftLeft = shift.left;    }    top += shiftTop;    left += shiftLeft;    return { top: top, left: left };  }});return Tether;}));
 |