shepherdjs_rails 2.3.2 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
- /*! shepherd.js 2.3.2 */
1
+ /*! shepherd.js 2.4.0 */
2
2
 
3
3
  function _typeof(obj) {
4
4
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
@@ -1763,7 +1763,7 @@ function zipObject(props, values) {
1763
1763
 
1764
1764
  /**!
1765
1765
  * @fileOverview Kickass library to create and place poppers near their reference elements.
1766
- * @version 1.14.6
1766
+ * @version 1.14.7
1767
1767
  * @license
1768
1768
  * Copyright (c) 2016 Federico Zivolo and contributors
1769
1769
  *
@@ -2331,7 +2331,11 @@ function isFixed(element) {
2331
2331
  if (getStyleComputedProperty(element, 'position') === 'fixed') {
2332
2332
  return true;
2333
2333
  }
2334
- return isFixed(getParentNode(element));
2334
+ var parentNode = getParentNode(element);
2335
+ if (!parentNode) {
2336
+ return false;
2337
+ }
2338
+ return isFixed(parentNode);
2335
2339
  }
2336
2340
 
2337
2341
  /**
@@ -2987,18 +2991,23 @@ function getRoundedOffsets(data, shouldRound) {
2987
2991
  var _data$offsets = data.offsets,
2988
2992
  popper = _data$offsets.popper,
2989
2993
  reference = _data$offsets.reference;
2994
+ var round = Math.round,
2995
+ floor = Math.floor;
2990
2996
 
2991
-
2992
- var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
2993
- var isVariation = data.placement.indexOf('-') !== -1;
2994
- var sameWidthOddness = reference.width % 2 === popper.width % 2;
2995
- var bothOddWidth = reference.width % 2 === 1 && popper.width % 2 === 1;
2996
2997
  var noRound = function noRound(v) {
2997
2998
  return v;
2998
2999
  };
2999
3000
 
3000
- var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthOddness ? Math.round : Math.floor;
3001
- var verticalToInteger = !shouldRound ? noRound : Math.round;
3001
+ var referenceWidth = round(reference.width);
3002
+ var popperWidth = round(popper.width);
3003
+
3004
+ var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
3005
+ var isVariation = data.placement.indexOf('-') !== -1;
3006
+ var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
3007
+ var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
3008
+
3009
+ var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
3010
+ var verticalToInteger = !shouldRound ? noRound : round;
3002
3011
 
3003
3012
  return {
3004
3013
  left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
@@ -4331,23 +4340,37 @@ Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
4331
4340
  Popper.placements = placements;
4332
4341
  Popper.Defaults = Defaults;
4333
4342
 
4334
- /*!
4335
- * Tippy.js v3.4.1
4343
+ /**!
4344
+ * tippy.js v4.0.1
4336
4345
  * (c) 2017-2019 atomiks
4337
- * MIT
4346
+ * MIT License
4338
4347
  */
4339
4348
 
4340
- var version = "3.4.1";
4349
+ var css = ".tippy-iOS{cursor:pointer!important}.tippy-notransition{transition:none}.tippy-popper{transition-timing-function:cubic-bezier(.165,.84,.44,1);max-width:calc(100% - 10px);pointer-events:none;outline:0}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-8px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;bottom:-7px;margin:0 6px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 25%;transform-origin:0 25%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-55%);transform:scale(1) translate(-50%,-55%)}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%,-45%);transform:scale(.2) translate(-50%,-45%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateY(-10px) rotateX(0);transform:perspective(700px) translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateY(0) rotateX(60deg);transform:perspective(700px) translateY(0) rotateX(60deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px) scale(.5);transform:translateY(-10px) scale(.5)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-8px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;top:-7px;margin:0 6px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -50%;transform-origin:0 -50%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-45%);transform:scale(1) translate(-50%,-45%)}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%);transform:scale(.2) translate(-50%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateY(10px) rotateX(0);transform:perspective(700px) translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateY(0) rotateX(-60deg);transform:perspective(700px) translateY(0) rotateX(-60deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px) scale(.5);transform:translateY(10px) scale(.5)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-16px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-75%,-50%);transform:scale(.2) translate(-75%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateX(-10px) rotateY(0);transform:perspective(700px) translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateX(0) rotateY(-60deg);transform:perspective(700px) translateX(0) rotateY(-60deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px) scale(.5);transform:translateX(-10px) scale(.5)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-16px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-50% 0;transform-origin:-50% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-25%,-50%);transform:scale(.2) translate(-25%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateX(10px) rotateY(0);transform:perspective(700px) translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateX(0) rotateY(60deg);transform:perspective(700px) translateX(0) rotateY(60deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px) scale(.5);transform:translateX(10px) scale(.5)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;line-height:1.4;text-align:center;will-change:transform;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:24px;height:8px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:calc(110% + 2rem);left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:\"\";float:left;padding-top:100%}.tippy-backdrop+.tippy-content{transition-property:opacity;will-change:opacity}.tippy-backdrop+.tippy-content[data-state=visible]{opacity:1}.tippy-backdrop+.tippy-content[data-state=hidden]{opacity:0}";
4341
4350
 
4342
- var isBrowser$1 = typeof window !== 'undefined';
4351
+ function _extends$2() {
4352
+ _extends$2 = Object.assign || function (target) {
4353
+ for (var i = 1; i < arguments.length; i++) {
4354
+ var source = arguments[i];
4355
+
4356
+ for (var key in source) {
4357
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
4358
+ target[key] = source[key];
4359
+ }
4360
+ }
4361
+ }
4343
4362
 
4344
- var nav = isBrowser$1 ? navigator : {};
4345
- var win = isBrowser$1 ? window : {};
4363
+ return target;
4364
+ };
4365
+
4366
+ return _extends$2.apply(this, arguments);
4367
+ }
4346
4368
 
4369
+ var version = "4.0.1";
4347
4370
 
4348
- var isIE$1 = /MSIE |Trident\//.test(nav.userAgent);
4349
- var isIOS = /iPhone|iPad|iPod/.test(nav.platform) && !win.MSStream;
4350
- var supportsTouch = 'ontouchstart' in win;
4371
+ var isBrowser$1 = typeof window !== 'undefined';
4372
+ var isIE$1 = isBrowser$1 && /MSIE |Trident\//.test(navigator.userAgent);
4373
+ var isIOS = isBrowser$1 && /iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream;
4351
4374
 
4352
4375
  var Defaults$1 = {
4353
4376
  a11y: true,
@@ -4359,9 +4382,7 @@ var Defaults$1 = {
4359
4382
  },
4360
4383
  aria: 'describedby',
4361
4384
  arrow: false,
4362
- arrowTransform: '',
4363
4385
  arrowType: 'sharp',
4364
- autoFocus: true,
4365
4386
  boundary: 'scrollParent',
4366
4387
  content: '',
4367
4388
  delay: [0, 20],
@@ -4369,15 +4390,16 @@ var Defaults$1 = {
4369
4390
  duration: [325, 275],
4370
4391
  flip: true,
4371
4392
  flipBehavior: 'flip',
4393
+ flipOnUpdate: false,
4372
4394
  followCursor: false,
4373
4395
  hideOnClick: true,
4396
+ ignoreAttributes: false,
4374
4397
  inertia: false,
4375
4398
  interactive: false,
4376
4399
  interactiveBorder: 2,
4377
4400
  interactiveDebounce: 0,
4378
4401
  lazy: true,
4379
- livePlacement: true,
4380
- maxWidth: '',
4402
+ maxWidth: 350,
4381
4403
  multiple: false,
4382
4404
  offset: 0,
4383
4405
  onHidden: function onHidden() {},
@@ -4385,13 +4407,9 @@ var Defaults$1 = {
4385
4407
  onMount: function onMount() {},
4386
4408
  onShow: function onShow() {},
4387
4409
  onShown: function onShown() {},
4388
-
4389
- performance: false,
4390
4410
  placement: 'top',
4391
4411
  popperOptions: {},
4392
- shouldPopperHideOnBlur: function shouldPopperHideOnBlur() {
4393
- return true;
4394
- },
4412
+ role: 'tooltip',
4395
4413
  showOnInit: false,
4396
4414
  size: 'regular',
4397
4415
  sticky: false,
@@ -4400,15 +4418,16 @@ var Defaults$1 = {
4400
4418
  touch: true,
4401
4419
  touchHold: false,
4402
4420
  trigger: 'mouseenter focus',
4403
- updateDuration: 200,
4421
+ updateDuration: 0,
4404
4422
  wait: null,
4405
4423
  zIndex: 9999
4406
-
4407
4424
  /**
4408
4425
  * If the set() method encounters one of these, the popperInstance must be
4409
4426
  * recreated
4410
4427
  */
4411
- };var POPPER_INSTANCE_RELATED_PROPS = ['arrow', 'arrowType', 'distance', 'flip', 'flipBehavior', 'offset', 'placement', 'popperOptions'];
4428
+
4429
+ };
4430
+ var POPPER_INSTANCE_DEPENDENCIES = ['arrow', 'arrowType', 'boundary', 'distance', 'flip', 'flipBehavior', 'flipOnUpdate', 'offset', 'placement', 'popperOptions'];
4412
4431
 
4413
4432
  var Selectors = {
4414
4433
  POPPER: '.tippy-popper',
@@ -4420,40 +4439,40 @@ var Selectors = {
4420
4439
  };
4421
4440
 
4422
4441
  var elementProto = isBrowser$1 ? Element.prototype : {};
4423
-
4424
4442
  var matches = elementProto.matches || elementProto.matchesSelector || elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector;
4425
-
4426
4443
  /**
4427
4444
  * Ponyfill for Array.from - converts iterable values to an array
4428
4445
  * @param {Array-like} value
4429
4446
  * @return {Array}
4430
4447
  */
4448
+
4431
4449
  function arrayFrom(value) {
4432
4450
  return [].slice.call(value);
4433
4451
  }
4434
-
4435
4452
  /**
4436
4453
  * Ponyfill for Element.prototype.closest
4437
4454
  * @param {Element} element
4438
4455
  * @param {String} parentSelector
4439
4456
  * @return {Element}
4440
4457
  */
4458
+
4441
4459
  function closest(element, parentSelector) {
4442
4460
  return (elementProto.closest || function (selector) {
4443
4461
  var el = this;
4462
+
4444
4463
  while (el) {
4445
4464
  if (matches.call(el, selector)) return el;
4446
4465
  el = el.parentElement;
4447
4466
  }
4448
4467
  }).call(element, parentSelector);
4449
4468
  }
4450
-
4451
4469
  /**
4452
4470
  * Works like Element.prototype.closest, but uses a callback instead
4453
4471
  * @param {Element} element
4454
4472
  * @param {Function} callback
4455
4473
  * @return {Element}
4456
4474
  */
4475
+
4457
4476
  function closestCallback(element, callback) {
4458
4477
  while (element) {
4459
4478
  if (callback(element)) return element;
@@ -4461,30 +4480,166 @@ function closestCallback(element, callback) {
4461
4480
  }
4462
4481
  }
4463
4482
 
4464
- var PASSIVE = { passive: true };
4483
+ /**
4484
+ * Determines if a value is a plain object
4485
+ * @param {any} value
4486
+ * @return {Boolean}
4487
+ */
4488
+
4489
+ function isPlainObject$1(value) {
4490
+ return {}.toString.call(value) === '[object Object]';
4491
+ }
4492
+ /**
4493
+ * Safe .hasOwnProperty check, for prototype-less objects
4494
+ * @param {Object} obj
4495
+ * @param {String} key
4496
+ * @return {Boolean}
4497
+ */
4498
+
4499
+ function hasOwnProperty$8(obj, key) {
4500
+ return {}.hasOwnProperty.call(obj, key);
4501
+ }
4502
+ /**
4503
+ * Returns an array of elements based on the value
4504
+ * @param {any} value
4505
+ * @return {Array}
4506
+ */
4507
+
4508
+ function getArrayOfElements(value) {
4509
+ if (isSingular(value)) {
4510
+ return [value];
4511
+ }
4512
+
4513
+ if (value instanceof NodeList) {
4514
+ return arrayFrom(value);
4515
+ }
4516
+
4517
+ if (Array.isArray(value)) {
4518
+ return value;
4519
+ }
4520
+
4521
+ try {
4522
+ return arrayFrom(document.querySelectorAll(value));
4523
+ } catch (e) {
4524
+ return [];
4525
+ }
4526
+ }
4527
+ /**
4528
+ * Returns a value at a given index depending on if it's an array or number
4529
+ * @param {any} value
4530
+ * @param {Number} index
4531
+ * @param {any} defaultValue
4532
+ */
4533
+
4534
+ function getValue$1(value, index, defaultValue) {
4535
+ if (Array.isArray(value)) {
4536
+ var v = value[index];
4537
+ return v == null ? defaultValue : v;
4538
+ }
4539
+
4540
+ return value;
4541
+ }
4542
+ /**
4543
+ * Debounce utility
4544
+ * @param {Function} fn
4545
+ * @param {Number} ms
4546
+ */
4547
+
4548
+ function debounce$1(fn, ms) {
4549
+ var timeoutId;
4550
+ return function () {
4551
+ var _this = this,
4552
+ _arguments = arguments;
4553
+
4554
+ clearTimeout(timeoutId);
4555
+ timeoutId = setTimeout(function () {
4556
+ return fn.apply(_this, _arguments);
4557
+ }, ms);
4558
+ };
4559
+ }
4560
+ /**
4561
+ * Prevents errors from being thrown while accessing nested modifier objects
4562
+ * in `popperOptions`
4563
+ * @param {Object} obj
4564
+ * @param {String} key
4565
+ * @return {Object|undefined}
4566
+ */
4567
+
4568
+ function getModifier(obj, key) {
4569
+ return obj && obj.modifiers && obj.modifiers[key];
4570
+ }
4571
+ /**
4572
+ * Determines if an array or string includes a value
4573
+ * @param {Array|String} a
4574
+ * @param {any} b
4575
+ * @return {Boolean}
4576
+ */
4577
+
4578
+ function includes(a, b) {
4579
+ return a.indexOf(b) > -1;
4580
+ }
4581
+ /**
4582
+ * Determines if the value is singular-like
4583
+ * @param {any} value
4584
+ * @return {Boolean}
4585
+ */
4586
+
4587
+ function isSingular(value) {
4588
+ return isPlainObject$1(value) || value instanceof Element;
4589
+ }
4590
+ /**
4591
+ * Tricking bundlers, linters, and minifiers
4592
+ * @return {String}
4593
+ */
4594
+
4595
+ function innerHTML() {
4596
+ return 'innerHTML';
4597
+ }
4598
+ /**
4599
+ * Evaluates a function if one, or returns the value
4600
+ * @param {any} value
4601
+ * @param {any[]} args
4602
+ * @return {Boolean}
4603
+ */
4604
+
4605
+ function evaluateValue(value, args) {
4606
+ return typeof value === 'function' ? value.apply(null, args) : value;
4607
+ }
4608
+ /**
4609
+ * Sets a popperInstance `flip` modifier's enabled state
4610
+ * @param {Object[]} modifiers
4611
+ * @param {any} value
4612
+ */
4613
+
4614
+ function setFlipModifierEnabled(modifiers, value) {
4615
+ modifiers.filter(function (m) {
4616
+ return m.name === 'flip';
4617
+ })[0].enabled = value;
4618
+ }
4465
4619
 
4466
4620
  /**
4467
4621
  * Returns a new `div` element
4468
4622
  * @return {HTMLDivElement}
4469
4623
  */
4624
+
4470
4625
  function div() {
4471
4626
  return document.createElement('div');
4472
4627
  }
4473
-
4474
4628
  /**
4475
4629
  * Sets the innerHTML of an element while tricking linters & minifiers
4476
4630
  * @param {HTMLElement} el
4477
4631
  * @param {Element|String} html
4478
4632
  */
4633
+
4479
4634
  function setInnerHTML(el, html) {
4480
- el['innerHTML'] = html instanceof Element ? html['innerHTML'] : html;
4635
+ el[innerHTML()] = html instanceof Element ? html[innerHTML()] : html;
4481
4636
  }
4482
-
4483
4637
  /**
4484
4638
  * Sets the content of a tooltip
4485
4639
  * @param {HTMLElement} contentEl
4486
4640
  * @param {Object} props
4487
4641
  */
4642
+
4488
4643
  function setContent(contentEl, props) {
4489
4644
  if (props.content instanceof Element) {
4490
4645
  setInnerHTML(contentEl, '');
@@ -4493,11 +4648,11 @@ function setContent(contentEl, props) {
4493
4648
  contentEl[props.allowHTML ? 'innerHTML' : 'textContent'] = props.content;
4494
4649
  }
4495
4650
  }
4496
-
4497
4651
  /**
4498
4652
  * Returns the child elements of a popper element
4499
4653
  * @param {HTMLElement} popper
4500
4654
  */
4655
+
4501
4656
  function getChildren(popper) {
4502
4657
  return {
4503
4658
  tooltip: popper.querySelector(Selectors.TOOLTIP),
@@ -4506,105 +4661,107 @@ function getChildren(popper) {
4506
4661
  arrow: popper.querySelector(Selectors.ARROW) || popper.querySelector(Selectors.ROUND_ARROW)
4507
4662
  };
4508
4663
  }
4509
-
4510
4664
  /**
4511
4665
  * Adds `data-inertia` attribute
4512
4666
  * @param {HTMLElement} tooltip
4513
4667
  */
4668
+
4514
4669
  function addInertia(tooltip) {
4515
4670
  tooltip.setAttribute('data-inertia', '');
4516
4671
  }
4517
-
4518
4672
  /**
4519
4673
  * Removes `data-inertia` attribute
4520
4674
  * @param {HTMLElement} tooltip
4521
4675
  */
4676
+
4522
4677
  function removeInertia(tooltip) {
4523
4678
  tooltip.removeAttribute('data-inertia');
4524
4679
  }
4525
-
4526
4680
  /**
4527
4681
  * Creates an arrow element and returns it
4528
4682
  */
4683
+
4529
4684
  function createArrowElement(arrowType) {
4530
4685
  var arrow = div();
4686
+
4531
4687
  if (arrowType === 'round') {
4532
4688
  arrow.className = 'tippy-roundarrow';
4533
4689
  setInnerHTML(arrow, '<svg viewBox="0 0 24 8" xmlns="http://www.w3.org/2000/svg"><path d="M3 8s2.021-.015 5.253-4.218C9.584 2.051 10.797 1.007 12 1c1.203-.007 2.416 1.035 3.761 2.782C19.012 8.005 21 8 21 8H3z"/></svg>');
4534
4690
  } else {
4535
4691
  arrow.className = 'tippy-arrow';
4536
4692
  }
4693
+
4537
4694
  return arrow;
4538
4695
  }
4539
-
4540
4696
  /**
4541
4697
  * Creates a backdrop element and returns it
4542
4698
  */
4699
+
4543
4700
  function createBackdropElement() {
4544
4701
  var backdrop = div();
4545
4702
  backdrop.className = 'tippy-backdrop';
4546
4703
  backdrop.setAttribute('data-state', 'hidden');
4547
4704
  return backdrop;
4548
4705
  }
4549
-
4550
4706
  /**
4551
4707
  * Adds interactive-related attributes
4552
4708
  * @param {HTMLElement} popper
4553
4709
  * @param {HTMLElement} tooltip
4554
4710
  */
4711
+
4555
4712
  function addInteractive(popper, tooltip) {
4556
4713
  popper.setAttribute('tabindex', '-1');
4557
4714
  tooltip.setAttribute('data-interactive', '');
4558
4715
  }
4559
-
4560
4716
  /**
4561
4717
  * Removes interactive-related attributes
4562
4718
  * @param {HTMLElement} popper
4563
4719
  * @param {HTMLElement} tooltip
4564
4720
  */
4721
+
4565
4722
  function removeInteractive(popper, tooltip) {
4566
4723
  popper.removeAttribute('tabindex');
4567
4724
  tooltip.removeAttribute('data-interactive');
4568
4725
  }
4569
-
4570
4726
  /**
4571
4727
  * Applies a transition duration to a list of elements
4572
4728
  * @param {Array} els
4573
4729
  * @param {Number} value
4574
4730
  */
4731
+
4575
4732
  function applyTransitionDuration(els, value) {
4576
4733
  els.forEach(function (el) {
4577
4734
  if (el) {
4578
- el.style.transitionDuration = value + 'ms';
4735
+ el.style.transitionDuration = "".concat(value, "ms");
4579
4736
  }
4580
4737
  });
4581
4738
  }
4582
-
4583
4739
  /**
4584
4740
  * Add/remove transitionend listener from tooltip
4585
4741
  * @param {Element} tooltip
4586
4742
  * @param {String} action
4587
4743
  * @param {Function} listener
4588
4744
  */
4745
+
4589
4746
  function toggleTransitionEndListener(tooltip, action, listener) {
4590
4747
  tooltip[action + 'EventListener']('transitionend', listener);
4591
4748
  }
4592
-
4593
4749
  /**
4594
4750
  * Returns the popper's placement, ignoring shifting (top-start, etc)
4595
4751
  * @param {Element} popper
4596
4752
  * @return {String}
4597
4753
  */
4754
+
4598
4755
  function getPopperPlacement(popper) {
4599
4756
  var fullPlacement = popper.getAttribute('x-placement');
4600
4757
  return fullPlacement ? fullPlacement.split('-')[0] : '';
4601
4758
  }
4602
-
4603
4759
  /**
4604
4760
  * Sets the visibility state to elements so they can begin to transition
4605
4761
  * @param {Array} els
4606
4762
  * @param {String} state
4607
4763
  */
4764
+
4608
4765
  function setVisibilityState(els, state) {
4609
4766
  els.forEach(function (el) {
4610
4767
  if (el) {
@@ -4612,37 +4769,49 @@ function setVisibilityState(els, state) {
4612
4769
  }
4613
4770
  });
4614
4771
  }
4615
-
4616
4772
  /**
4617
4773
  * Triggers reflow
4618
4774
  * @param {Element} popper
4619
4775
  */
4776
+
4620
4777
  function reflow(popper) {
4621
4778
  void popper.offsetHeight;
4622
4779
  }
4780
+ /**
4781
+ * Adds/removes theme from tooltip's classList
4782
+ * @param {HTMLDivElement} tooltip
4783
+ * @param {String} action
4784
+ * @param {String} theme
4785
+ */
4623
4786
 
4787
+ function toggleTheme(tooltip, action, theme) {
4788
+ theme.split(' ').forEach(function (themeName) {
4789
+ tooltip.classList[action](themeName + '-theme');
4790
+ });
4791
+ }
4624
4792
  /**
4625
4793
  * Constructs the popper element and returns it
4626
4794
  * @param {Number} id
4627
4795
  * @param {Object} props
4628
4796
  */
4797
+
4629
4798
  function createPopperElement(id, props) {
4630
4799
  var popper = div();
4631
4800
  popper.className = 'tippy-popper';
4632
- popper.setAttribute('role', 'tooltip');
4633
- popper.id = 'tippy-' + id;
4801
+ popper.id = "tippy-".concat(id);
4634
4802
  popper.style.zIndex = props.zIndex;
4635
4803
 
4804
+ if (props.role) {
4805
+ popper.setAttribute('role', props.role);
4806
+ }
4807
+
4636
4808
  var tooltip = div();
4637
4809
  tooltip.className = 'tippy-tooltip';
4638
4810
  tooltip.style.maxWidth = props.maxWidth + (typeof props.maxWidth === 'number' ? 'px' : '');
4639
4811
  tooltip.setAttribute('data-size', props.size);
4640
4812
  tooltip.setAttribute('data-animation', props.animation);
4641
4813
  tooltip.setAttribute('data-state', 'hidden');
4642
- props.theme.split(' ').forEach(function (t) {
4643
- tooltip.classList.add(t + '-theme');
4644
- });
4645
-
4814
+ toggleTheme(tooltip, 'add', props.theme);
4646
4815
  var content = div();
4647
4816
  content.className = 'tippy-content';
4648
4817
  content.setAttribute('data-state', 'hidden');
@@ -4665,27 +4834,17 @@ function createPopperElement(id, props) {
4665
4834
  }
4666
4835
 
4667
4836
  setContent(content, props);
4668
-
4669
4837
  tooltip.appendChild(content);
4670
4838
  popper.appendChild(tooltip);
4671
-
4672
- popper.addEventListener('focusout', function (e) {
4673
- if (e.relatedTarget && popper._tippy && !closestCallback(e.relatedTarget, function (el) {
4674
- return el === popper;
4675
- }) && e.relatedTarget !== popper._tippy.reference && popper._tippy.props.shouldPopperHideOnBlur(e)) {
4676
- popper._tippy.hide();
4677
- }
4678
- });
4679
-
4680
4839
  return popper;
4681
4840
  }
4682
-
4683
4841
  /**
4684
4842
  * Updates the popper element based on the new props
4685
4843
  * @param {HTMLElement} popper
4686
4844
  * @param {Object} prevProps
4687
4845
  * @param {Object} nextProps
4688
4846
  */
4847
+
4689
4848
  function updatePopperElement(popper, prevProps, nextProps) {
4690
4849
  var _getChildren = getChildren(popper),
4691
4850
  tooltip = _getChildren.tooltip,
@@ -4698,56 +4857,57 @@ function updatePopperElement(popper, prevProps, nextProps) {
4698
4857
  tooltip.setAttribute('data-animation', nextProps.animation);
4699
4858
  tooltip.style.maxWidth = nextProps.maxWidth + (typeof nextProps.maxWidth === 'number' ? 'px' : '');
4700
4859
 
4860
+ if (nextProps.role) {
4861
+ popper.setAttribute('role', nextProps.role);
4862
+ } else {
4863
+ popper.removeAttribute('role');
4864
+ }
4865
+
4701
4866
  if (prevProps.content !== nextProps.content) {
4702
4867
  setContent(content, nextProps);
4703
- }
4868
+ } // animateFill
4869
+
4704
4870
 
4705
- // animateFill
4706
4871
  if (!prevProps.animateFill && nextProps.animateFill) {
4707
4872
  tooltip.appendChild(createBackdropElement());
4708
4873
  tooltip.setAttribute('data-animatefill', '');
4709
4874
  } else if (prevProps.animateFill && !nextProps.animateFill) {
4710
4875
  tooltip.removeChild(backdrop);
4711
4876
  tooltip.removeAttribute('data-animatefill');
4712
- }
4877
+ } // arrow
4878
+
4713
4879
 
4714
- // arrow
4715
4880
  if (!prevProps.arrow && nextProps.arrow) {
4716
4881
  tooltip.appendChild(createArrowElement(nextProps.arrowType));
4717
4882
  } else if (prevProps.arrow && !nextProps.arrow) {
4718
4883
  tooltip.removeChild(arrow);
4719
- }
4884
+ } // arrowType
4885
+
4720
4886
 
4721
- // arrowType
4722
4887
  if (prevProps.arrow && nextProps.arrow && prevProps.arrowType !== nextProps.arrowType) {
4723
4888
  tooltip.replaceChild(createArrowElement(nextProps.arrowType), arrow);
4724
- }
4889
+ } // interactive
4890
+
4725
4891
 
4726
- // interactive
4727
4892
  if (!prevProps.interactive && nextProps.interactive) {
4728
4893
  addInteractive(popper, tooltip);
4729
4894
  } else if (prevProps.interactive && !nextProps.interactive) {
4730
4895
  removeInteractive(popper, tooltip);
4731
- }
4896
+ } // inertia
4897
+
4732
4898
 
4733
- // inertia
4734
4899
  if (!prevProps.inertia && nextProps.inertia) {
4735
4900
  addInertia(tooltip);
4736
4901
  } else if (prevProps.inertia && !nextProps.inertia) {
4737
4902
  removeInertia(tooltip);
4738
- }
4903
+ } // theme
4904
+
4739
4905
 
4740
- // theme
4741
4906
  if (prevProps.theme !== nextProps.theme) {
4742
- prevProps.theme.split(' ').forEach(function (theme) {
4743
- tooltip.classList.remove(theme + '-theme');
4744
- });
4745
- nextProps.theme.split(' ').forEach(function (theme) {
4746
- tooltip.classList.add(theme + '-theme');
4747
- });
4907
+ toggleTheme(tooltip, 'remove', prevProps.theme);
4908
+ toggleTheme(tooltip, 'add', nextProps.theme);
4748
4909
  }
4749
4910
  }
4750
-
4751
4911
  /**
4752
4912
  * Runs the callback after the popper's position has been updated
4753
4913
  * update() is debounced with Promise.resolve() or setTimeout()
@@ -4755,13 +4915,13 @@ function updatePopperElement(popper, prevProps, nextProps) {
4755
4915
  * @param {Popper} popperInstance
4756
4916
  * @param {Function} callback
4757
4917
  */
4918
+
4758
4919
  function afterPopperPositionUpdates(popperInstance, callback) {
4759
4920
  var popper = popperInstance.popper,
4760
4921
  options = popperInstance.options;
4761
4922
  var onCreate = options.onCreate,
4762
4923
  onUpdate = options.onUpdate;
4763
4924
 
4764
-
4765
4925
  options.onCreate = options.onUpdate = function () {
4766
4926
  reflow(popper);
4767
4927
  callback();
@@ -4770,20 +4930,25 @@ function afterPopperPositionUpdates(popperInstance, callback) {
4770
4930
  options.onUpdate = onUpdate;
4771
4931
  };
4772
4932
  }
4773
-
4774
4933
  /**
4775
- * Hides all visible poppers on the document, optionally excluding one
4776
- * @param {Tippy} tippyInstanceToExclude
4934
+ * Hides all visible poppers on the document
4935
+ * @param {Object} options
4777
4936
  */
4778
- function hideAllPoppers(tippyInstanceToExclude) {
4937
+
4938
+ function hideAll() {
4939
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
4940
+ checkHideOnClick = _ref.checkHideOnClick,
4941
+ exclude = _ref.exclude,
4942
+ duration = _ref.duration;
4943
+
4779
4944
  arrayFrom(document.querySelectorAll(Selectors.POPPER)).forEach(function (popper) {
4780
- var tip = popper._tippy;
4781
- if (tip && tip.props.hideOnClick === true && (!tippyInstanceToExclude || popper !== tippyInstanceToExclude.popper)) {
4782
- tip.hide();
4945
+ var instance = popper._tippy;
4946
+
4947
+ if (instance && (checkHideOnClick ? instance.props.hideOnClick === true : true) && (!exclude || popper !== exclude.popper)) {
4948
+ instance.hide(duration);
4783
4949
  }
4784
4950
  });
4785
4951
  }
4786
-
4787
4952
  /**
4788
4953
  * Determines if the mouse cursor is outside of the popper's interactive border
4789
4954
  * region
@@ -4792,6 +4957,7 @@ function hideAllPoppers(tippyInstanceToExclude) {
4792
4957
  * @param {MouseEvent} event
4793
4958
  * @param {Object} props
4794
4959
  */
4960
+
4795
4961
  function isCursorOutsideInteractiveBorder(popperPlacement, popperRect, event, props) {
4796
4962
  if (!popperPlacement) {
4797
4963
  return true;
@@ -4801,155 +4967,29 @@ function isCursorOutsideInteractiveBorder(popperPlacement, popperRect, event, pr
4801
4967
  y = event.clientY;
4802
4968
  var interactiveBorder = props.interactiveBorder,
4803
4969
  distance = props.distance;
4804
-
4805
-
4806
4970
  var exceedsTop = popperRect.top - y > (popperPlacement === 'top' ? interactiveBorder + distance : interactiveBorder);
4807
-
4808
4971
  var exceedsBottom = y - popperRect.bottom > (popperPlacement === 'bottom' ? interactiveBorder + distance : interactiveBorder);
4809
-
4810
4972
  var exceedsLeft = popperRect.left - x > (popperPlacement === 'left' ? interactiveBorder + distance : interactiveBorder);
4811
-
4812
4973
  var exceedsRight = x - popperRect.right > (popperPlacement === 'right' ? interactiveBorder + distance : interactiveBorder);
4813
-
4814
4974
  return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;
4815
4975
  }
4816
-
4817
4976
  /**
4818
4977
  * Returns the distance offset, taking into account the default offset due to
4819
4978
  * the transform: translate() rule in CSS
4820
4979
  * @param {Number} distance
4821
4980
  * @param {Number} defaultDistance
4822
4981
  */
4982
+
4823
4983
  function getOffsetDistanceInPx(distance, defaultDistance) {
4824
4984
  return -(distance - defaultDistance) + 'px';
4825
4985
  }
4826
4986
 
4827
- /**
4828
- * Determines if a value is a plain object
4829
- * @param {any} value
4830
- * @return {Boolean}
4831
- */
4832
- function isPlainObject$1(value) {
4833
- return {}.toString.call(value) === '[object Object]';
4834
- }
4835
-
4836
- /**
4837
- * Safe .hasOwnProperty check, for prototype-less objects
4838
- * @param {Object} obj
4839
- * @param {String} key
4840
- * @return {Boolean}
4841
- */
4842
- function hasOwnProperty$8(obj, key) {
4843
- return {}.hasOwnProperty.call(obj, key);
4844
- }
4845
-
4846
- /**
4847
- * Determines if a value is numeric
4848
- * @param {any} value
4849
- * @return {Boolean}
4850
- */
4851
- function isNumeric$1(value) {
4852
- return !isNaN(value) && !isNaN(parseFloat(value));
4853
- }
4854
-
4855
- /**
4856
- * Returns an array of elements based on the value
4857
- * @param {any} value
4858
- * @return {Array}
4859
- */
4860
- function getArrayOfElements(value) {
4861
- if (value instanceof Element || isPlainObject$1(value)) {
4862
- return [value];
4863
- }
4864
- if (value instanceof NodeList) {
4865
- return arrayFrom(value);
4866
- }
4867
- if (Array.isArray(value)) {
4868
- return value;
4869
- }
4870
-
4871
- try {
4872
- return arrayFrom(document.querySelectorAll(value));
4873
- } catch (e) {
4874
- return [];
4875
- }
4876
- }
4877
-
4878
- /**
4879
- * Returns a value at a given index depending on if it's an array or number
4880
- * @param {any} value
4881
- * @param {Number} index
4882
- * @param {any} defaultValue
4883
- */
4884
- function getValue$1(value, index, defaultValue) {
4885
- if (Array.isArray(value)) {
4886
- var v = value[index];
4887
- return v == null ? defaultValue : v;
4888
- }
4889
- return value;
4890
- }
4891
-
4892
- /**
4893
- * Focuses an element while preventing a scroll jump if it's not within the
4894
- * viewport
4895
- * @param {Element} el
4896
- */
4897
- function focus(el) {
4898
- var x = window.scrollX || window.pageXOffset;
4899
- var y = window.scrollY || window.pageYOffset;
4900
- el.focus();
4901
- scroll(x, y);
4902
- }
4903
-
4904
- /**
4905
- * Defers a function's execution until the call stack has cleared
4906
- * @param {Function} fn
4907
- */
4908
- function defer(fn) {
4909
- setTimeout(fn, 1);
4910
- }
4911
-
4912
- /**
4913
- * Debounce utility
4914
- * @param {Function} fn
4915
- * @param {Number} ms
4916
- */
4917
- function debounce$1(fn, ms) {
4918
- var timeoutId = void 0;
4919
- return function () {
4920
- var _this = this,
4921
- _arguments = arguments;
4922
-
4923
- clearTimeout(timeoutId);
4924
- timeoutId = setTimeout(function () {
4925
- return fn.apply(_this, _arguments);
4926
- }, ms);
4927
- };
4928
- }
4929
-
4930
- /**
4931
- * Prevents errors from being thrown while accessing nested modifier objects
4932
- * in `popperOptions`
4933
- * @param {Object} obj
4934
- * @param {String} key
4935
- * @return {Object|undefined}
4936
- */
4937
- function getModifier(obj, key) {
4938
- return obj && obj.modifiers && obj.modifiers[key];
4939
- }
4940
-
4941
- /**
4942
- * Determines if an array or string includes a value
4943
- * @param {Array|String} a
4944
- * @param {any} b
4945
- * @return {Boolean}
4946
- */
4947
- function includes(a, b) {
4948
- return a.indexOf(b) > -1;
4949
- }
4987
+ var PASSIVE = {
4988
+ passive: true
4989
+ };
4990
+ var PADDING = 3;
4950
4991
 
4951
4992
  var isUsingTouch = false;
4952
-
4953
4993
  function onDocumentTouch() {
4954
4994
  if (isUsingTouch) {
4955
4995
  return;
@@ -4965,15 +5005,14 @@ function onDocumentTouch() {
4965
5005
  document.addEventListener('mousemove', onDocumentMouseMove);
4966
5006
  }
4967
5007
  }
4968
-
4969
5008
  var lastMouseMoveTime = 0;
4970
5009
  function onDocumentMouseMove() {
4971
- var now = performance.now();
5010
+ var now = performance.now(); // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference
4972
5011
 
4973
- // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference
4974
5012
  if (now - lastMouseMoveTime < 20) {
4975
5013
  isUsingTouch = false;
4976
5014
  document.removeEventListener('mousemove', onDocumentMouseMove);
5015
+
4977
5016
  if (!isIOS) {
4978
5017
  document.body.classList.remove('tippy-iOS');
4979
5018
  }
@@ -4981,43 +5020,48 @@ function onDocumentMouseMove() {
4981
5020
 
4982
5021
  lastMouseMoveTime = now;
4983
5022
  }
4984
-
4985
5023
  function onDocumentClick(_ref) {
4986
5024
  var target = _ref.target;
4987
5025
 
4988
5026
  // Simulated events dispatched on the document
4989
5027
  if (!(target instanceof Element)) {
4990
- return hideAllPoppers();
4991
- }
5028
+ return hideAll();
5029
+ } // Clicked on an interactive popper
5030
+
4992
5031
 
4993
- // Clicked on an interactive popper
4994
5032
  var popper = closest(target, Selectors.POPPER);
5033
+
4995
5034
  if (popper && popper._tippy && popper._tippy.props.interactive) {
4996
5035
  return;
4997
- }
5036
+ } // Clicked on a reference
5037
+
4998
5038
 
4999
- // Clicked on a reference
5000
5039
  var reference = closestCallback(target, function (el) {
5001
5040
  return el._tippy && el._tippy.reference === el;
5002
5041
  });
5042
+
5003
5043
  if (reference) {
5004
- var tip = reference._tippy;
5005
- var isClickTrigger = includes(tip.props.trigger, 'click');
5044
+ var instance = reference._tippy;
5045
+ var isClickTrigger = includes(instance.props.trigger, 'click');
5006
5046
 
5007
5047
  if (isUsingTouch || isClickTrigger) {
5008
- return hideAllPoppers(tip);
5048
+ return hideAll({
5049
+ exclude: instance,
5050
+ checkHideOnClick: true
5051
+ });
5009
5052
  }
5010
5053
 
5011
- if (tip.props.hideOnClick !== true || isClickTrigger) {
5054
+ if (instance.props.hideOnClick !== true || isClickTrigger) {
5012
5055
  return;
5013
5056
  }
5014
5057
 
5015
- tip.clearDelayTimeouts();
5058
+ instance.clearDelayTimeouts();
5016
5059
  }
5017
5060
 
5018
- hideAllPoppers();
5061
+ hideAll({
5062
+ checkHideOnClick: true
5063
+ });
5019
5064
  }
5020
-
5021
5065
  function onWindowBlur() {
5022
5066
  var _document = document,
5023
5067
  activeElement = _document.activeElement;
@@ -5026,49 +5070,35 @@ function onWindowBlur() {
5026
5070
  activeElement.blur();
5027
5071
  }
5028
5072
  }
5029
-
5030
- function onWindowResize() {
5031
- arrayFrom(document.querySelectorAll(Selectors.POPPER)).forEach(function (popper) {
5032
- var tippyInstance = popper._tippy;
5033
- if (!tippyInstance.props.livePlacement) {
5034
- tippyInstance.popperInstance.scheduleUpdate();
5035
- }
5036
- });
5037
- }
5038
-
5039
5073
  /**
5040
5074
  * Adds the needed global event listeners
5041
5075
  */
5076
+
5042
5077
  function bindGlobalEventListeners() {
5043
5078
  document.addEventListener('click', onDocumentClick, true);
5044
5079
  document.addEventListener('touchstart', onDocumentTouch, PASSIVE);
5045
5080
  window.addEventListener('blur', onWindowBlur);
5046
- window.addEventListener('resize', onWindowResize);
5047
-
5048
- if (!supportsTouch && (navigator.maxTouchPoints || navigator.msMaxTouchPoints)) {
5049
- document.addEventListener('pointerdown', onDocumentTouch);
5050
- }
5051
5081
  }
5052
5082
 
5053
5083
  var keys$1 = Object.keys(Defaults$1);
5054
-
5055
5084
  /**
5056
5085
  * Determines if an element can receive focus
5057
5086
  * @param {Element} el
5058
5087
  * @return {Boolean}
5059
5088
  */
5089
+
5060
5090
  function canReceiveFocus(el) {
5061
5091
  return el instanceof Element ? matches.call(el, 'a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]') && !el.hasAttribute('disabled') : true;
5062
5092
  }
5063
-
5064
5093
  /**
5065
5094
  * Returns an object of optional props from data-tippy-* attributes
5066
5095
  * @param {Element} reference
5067
5096
  * @return {Object}
5068
5097
  */
5098
+
5069
5099
  function getDataAttributeOptions(reference) {
5070
5100
  return keys$1.reduce(function (acc, key) {
5071
- var valueAsString = (reference.getAttribute('data-tippy-' + key) || '').trim();
5101
+ var valueAsString = (reference.getAttribute("data-tippy-".concat(key)) || '').trim();
5072
5102
 
5073
5103
  if (!valueAsString) {
5074
5104
  return acc;
@@ -5076,28 +5106,24 @@ function getDataAttributeOptions(reference) {
5076
5106
 
5077
5107
  if (key === 'content') {
5078
5108
  acc[key] = valueAsString;
5079
- } else if (valueAsString === 'true') {
5080
- acc[key] = true;
5081
- } else if (valueAsString === 'false') {
5082
- acc[key] = false;
5083
- } else if (isNumeric$1(valueAsString)) {
5084
- acc[key] = Number(valueAsString);
5085
- } else if (valueAsString[0] === '[' || valueAsString[0] === '{') {
5086
- acc[key] = JSON.parse(valueAsString);
5087
5109
  } else {
5088
- acc[key] = valueAsString;
5110
+ try {
5111
+ acc[key] = JSON.parse(valueAsString);
5112
+ } catch (e) {
5113
+ acc[key] = valueAsString;
5114
+ }
5089
5115
  }
5090
5116
 
5091
5117
  return acc;
5092
5118
  }, {});
5093
5119
  }
5094
-
5095
5120
  /**
5096
5121
  * Polyfills the virtual reference (plain object) with Element.prototype props
5097
5122
  * Mutating because DOM elements are mutated, adds `_tippy` property
5098
5123
  * @param {Object} virtualReference
5099
5124
  * @return {Object}
5100
5125
  */
5126
+
5101
5127
  function polyfillElementPrototypeProperties(virtualReference) {
5102
5128
  var polyfills = {
5103
5129
  isVirtual: true,
@@ -5116,7 +5142,6 @@ function polyfillElementPrototypeProperties(virtualReference) {
5116
5142
  },
5117
5143
  addEventListener: function addEventListener() {},
5118
5144
  removeEventListener: function removeEventListener() {},
5119
-
5120
5145
  classList: {
5121
5146
  classNames: {},
5122
5147
  add: function add(key) {
@@ -5136,161 +5161,42 @@ function polyfillElementPrototypeProperties(virtualReference) {
5136
5161
  }
5137
5162
  }
5138
5163
 
5139
- var _extends$2 = Object.assign || function (target) {
5140
- for (var i = 1; i < arguments.length; i++) {
5141
- var source = arguments[i];
5142
-
5143
- for (var key in source) {
5144
- if (Object.prototype.hasOwnProperty.call(source, key)) {
5145
- target[key] = source[key];
5146
- }
5147
- }
5148
- }
5149
-
5150
- return target;
5151
- };
5152
-
5153
5164
  /**
5154
- * Evaluates the props object
5165
+ * Evaluates the props object by merging data attributes and
5166
+ * disabling conflicting options where necessary
5155
5167
  * @param {Element} reference
5156
5168
  * @param {Object} props
5157
5169
  * @return {Object}
5158
5170
  */
5171
+
5159
5172
  function evaluateProps(reference, props) {
5160
- var out = _extends$2({}, props, props.performance ? {} : getDataAttributeOptions(reference));
5173
+ var out = _extends$2({}, props, {
5174
+ content: evaluateValue(props.content, [reference])
5175
+ }, props.ignoreAttributes ? {} : getDataAttributeOptions(reference));
5161
5176
 
5162
5177
  if (out.arrow) {
5163
5178
  out.animateFill = false;
5164
5179
  }
5165
5180
 
5166
- if (typeof out.appendTo === 'function') {
5167
- out.appendTo = props.appendTo(reference);
5168
- }
5169
-
5170
- if (typeof out.content === 'function') {
5171
- out.content = props.content(reference);
5172
- }
5173
-
5174
5181
  return out;
5175
5182
  }
5176
-
5177
5183
  /**
5178
5184
  * Validates an object of options with the valid default props object
5179
5185
  * @param {Object} options
5180
5186
  * @param {Object} defaults
5181
5187
  */
5188
+
5182
5189
  function validateOptions() {
5183
5190
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5184
- var defaults$$1 = arguments[1];
5185
-
5191
+ var defaults = arguments.length > 1 ? arguments[1] : undefined;
5186
5192
  Object.keys(options).forEach(function (option) {
5187
- if (!hasOwnProperty$8(defaults$$1, option)) {
5188
- throw new Error('[tippy]: `' + option + '` is not a valid option');
5193
+ if (!hasOwnProperty$8(defaults, option)) {
5194
+ throw new Error("[tippy]: `".concat(option, "` is not a valid option"));
5189
5195
  }
5190
5196
  });
5191
5197
  }
5192
5198
 
5193
- // =============================================================================
5194
- // DEPRECATED
5195
- // All of this code (for the `arrowTransform` option) will be removed in v4
5196
- // =============================================================================
5197
- var TRANSFORM_NUMBER_RE = {
5198
- translate: /translateX?Y?\(([^)]+)\)/,
5199
- scale: /scaleX?Y?\(([^)]+)\)/
5200
-
5201
- /**
5202
- * Transforms the x/y axis based on the placement
5203
- */
5204
- };function transformAxisBasedOnPlacement(axis, isVertical) {
5205
- return (isVertical ? axis : {
5206
- X: 'Y',
5207
- Y: 'X'
5208
- }[axis]) || '';
5209
- }
5210
-
5211
- /**
5212
- * Transforms the scale/translate numbers based on the placement
5213
- */
5214
- function transformNumbersBasedOnPlacement(type, numbers, isVertical, isReverse) {
5215
- /**
5216
- * Avoid destructuring because a large boilerplate function is generated
5217
- * by Babel
5218
- */
5219
- var a = numbers[0];
5220
- var b = numbers[1];
5221
-
5222
- if (!a && !b) {
5223
- return '';
5224
- }
5225
-
5226
- var transforms = {
5227
- scale: function () {
5228
- if (!b) {
5229
- return '' + a;
5230
- } else {
5231
- return isVertical ? a + ', ' + b : b + ', ' + a;
5232
- }
5233
- }(),
5234
- translate: function () {
5235
- if (!b) {
5236
- return isReverse ? -a + 'px' : a + 'px';
5237
- } else {
5238
- if (isVertical) {
5239
- return isReverse ? a + 'px, ' + -b + 'px' : a + 'px, ' + b + 'px';
5240
- } else {
5241
- return isReverse ? -b + 'px, ' + a + 'px' : b + 'px, ' + a + 'px';
5242
- }
5243
- }
5244
- }()
5245
- };
5246
-
5247
- return transforms[type];
5248
- }
5249
-
5250
- /**
5251
- * Returns the axis for a CSS function (translate or scale)
5252
- */
5253
- function getTransformAxis(str, cssFunction) {
5254
- var match = str.match(new RegExp(cssFunction + '([XY])'));
5255
- return match ? match[1] : '';
5256
- }
5257
-
5258
- /**
5259
- * Returns the numbers given to the CSS function
5260
- */
5261
- function getTransformNumbers(str, regex) {
5262
- var match = str.match(regex);
5263
- return match ? match[1].split(',').map(function (n) {
5264
- return parseFloat(n, 10);
5265
- }) : [];
5266
- }
5267
-
5268
- /**
5269
- * Computes the arrow's transform so that it is correct for any placement
5270
- */
5271
- function computeArrowTransform(arrow, arrowTransform) {
5272
- var placement = getPopperPlacement(closest(arrow, Selectors.POPPER));
5273
- var isVertical = includes(['top', 'bottom'], placement);
5274
- var isReverse = includes(['right', 'bottom'], placement);
5275
-
5276
- var matches$$1 = {
5277
- translate: {
5278
- axis: getTransformAxis(arrowTransform, 'translate'),
5279
- numbers: getTransformNumbers(arrowTransform, TRANSFORM_NUMBER_RE.translate)
5280
- },
5281
- scale: {
5282
- axis: getTransformAxis(arrowTransform, 'scale'),
5283
- numbers: getTransformNumbers(arrowTransform, TRANSFORM_NUMBER_RE.scale)
5284
- }
5285
- };
5286
-
5287
- var computedTransform = arrowTransform.replace(TRANSFORM_NUMBER_RE.translate, 'translate' + transformAxisBasedOnPlacement(matches$$1.translate.axis, isVertical) + '(' + transformNumbersBasedOnPlacement('translate', matches$$1.translate.numbers, isVertical, isReverse) + ')').replace(TRANSFORM_NUMBER_RE.scale, 'scale' + transformAxisBasedOnPlacement(matches$$1.scale.axis, isVertical) + '(' + transformNumbersBasedOnPlacement('scale', matches$$1.scale.numbers, isVertical, isReverse) + ')');
5288
-
5289
- arrow.style[typeof document.body.style.transform !== 'undefined' ? 'transform' : 'webkitTransform'] = computedTransform;
5290
- }
5291
-
5292
5199
  var idCounter = 1;
5293
-
5294
5200
  /**
5295
5201
  * Creates and returns a Tippy object. We're using a closure pattern instead of
5296
5202
  * a class so that the exposed object API is clean without private members
@@ -5299,69 +5205,56 @@ var idCounter = 1;
5299
5205
  * @param {Object} collectionProps
5300
5206
  * @return {Object} instance
5301
5207
  */
5208
+
5302
5209
  function createTippy(reference, collectionProps) {
5303
- var props = evaluateProps(reference, collectionProps);
5210
+ var props = evaluateProps(reference, collectionProps); // If the reference shouldn't have multiple tippys, return null early
5304
5211
 
5305
- // If the reference shouldn't have multiple tippys, return null early
5306
5212
  if (!props.multiple && reference._tippy) {
5307
5213
  return null;
5308
5214
  }
5309
-
5310
5215
  /* ======================= 🔒 Private members 🔒 ======================= */
5311
- // The popper element's mutation observer
5312
- var popperMutationObserver = null;
5313
-
5314
5216
  // The last trigger event object that caused the tippy to show
5315
- var lastTriggerEvent = {};
5316
5217
 
5317
- // The last mousemove event object created by the document mousemove event
5318
- var lastMouseMoveEvent = null;
5319
5218
 
5320
- // Timeout created by the show delay
5321
- var showTimeoutId = 0;
5219
+ var lastTriggerEvent = {}; // The last mousemove event object created by the document mousemove event
5220
+
5221
+ var lastMouseMoveEvent = null; // Timeout created by the show delay
5222
+
5223
+ var showTimeoutId = 0; // Timeout created by the hide delay
5322
5224
 
5323
- // Timeout created by the hide delay
5324
- var hideTimeoutId = 0;
5225
+ var hideTimeoutId = 0; // Flag to determine if the tippy is preparing to show due to the show timeout
5325
5226
 
5326
- // Flag to determine if the tippy is preparing to show due to the show timeout
5327
- var isPreparingToShow = false;
5227
+ var isPreparingToShow = false; // The current `transitionend` callback reference
5328
5228
 
5329
- // The current `transitionend` callback reference
5330
- var transitionEndListener = function transitionEndListener() {};
5229
+ var transitionEndListener = function transitionEndListener() {}; // Array of event listeners currently attached to the reference element
5331
5230
 
5332
- // Array of event listeners currently attached to the reference element
5333
- var listeners = [];
5334
5231
 
5335
- // Flag to determine if the reference was recently programmatically focused
5336
- var referenceJustProgrammaticallyFocused = false;
5232
+ var listeners = []; // Private onMouseMove handler reference, debounced or not
5337
5233
 
5338
- // Private onMouseMove handler reference, debounced or not
5339
- var debouncedOnMouseMove = props.interactiveDebounce > 0 ? debounce$1(onMouseMove, props.interactiveDebounce) : onMouseMove;
5234
+ var debouncedOnMouseMove = props.interactiveDebounce > 0 ? debounce$1(onMouseMove, props.interactiveDebounce) : onMouseMove; // Node the tippy is currently appended to
5340
5235
 
5236
+ var parentNode = null;
5341
5237
  /* ======================= 🔑 Public members 🔑 ======================= */
5342
5238
  // id used for the `aria-describedby` / `aria-labelledby` attribute
5343
- var id = idCounter++;
5344
5239
 
5345
- // Popper element reference
5346
- var popper = createPopperElement(id, props);
5240
+ var id = idCounter++; // Popper element reference
5347
5241
 
5348
- // Prevent a tippy with a delay from hiding if the cursor left then returned
5242
+ var popper = createPopperElement(id, props); // Prevent a tippy with a delay from hiding if the cursor left then returned
5349
5243
  // before it started hiding
5244
+
5350
5245
  popper.addEventListener('mouseenter', function (event) {
5351
- if (tip.props.interactive && tip.state.isVisible && lastTriggerEvent.type === 'mouseenter') {
5246
+ if (instance.props.interactive && instance.state.isVisible && lastTriggerEvent.type === 'mouseenter') {
5352
5247
  prepareShow(event);
5353
5248
  }
5354
5249
  });
5355
- popper.addEventListener('mouseleave', function (event) {
5356
- if (tip.props.interactive && lastTriggerEvent.type === 'mouseenter' && tip.props.interactiveDebounce === 0 && isCursorOutsideInteractiveBorder(getPopperPlacement(popper), popper.getBoundingClientRect(), event, tip.props)) {
5357
- prepareHide();
5250
+ popper.addEventListener('mouseleave', function () {
5251
+ if (instance.props.interactive && lastTriggerEvent.type === 'mouseenter') {
5252
+ document.addEventListener('mousemove', debouncedOnMouseMove);
5358
5253
  }
5359
- });
5254
+ }); // Popper element children: { arrow, backdrop, content, tooltip }
5360
5255
 
5361
- // Popper element children: { arrow, backdrop, content, tooltip }
5362
- var popperChildren = getChildren(popper);
5256
+ var popperChildren = getChildren(popper); // The state of the tippy
5363
5257
 
5364
- // The state of the tippy
5365
5258
  var state = {
5366
5259
  // If the tippy is currently enabled
5367
5260
  isEnabled: true,
@@ -5372,13 +5265,12 @@ function createTippy(reference, collectionProps) {
5372
5265
  // If the tippy is on the DOM (transitioning out or in)
5373
5266
  isMounted: false,
5374
5267
  // show() transition finished
5375
- isShown: false
5268
+ isShown: false // Popper.js instance for the tippy is lazily created
5376
5269
 
5377
- // Popper.js instance for the tippy is lazily created
5378
- };var popperInstance = null;
5270
+ };
5271
+ var popperInstance = null; // 🌟 tippy instance
5379
5272
 
5380
- // 🌟 tippy instance
5381
- var tip = {
5273
+ var instance = {
5382
5274
  // properties
5383
5275
  id: id,
5384
5276
  reference: reference,
@@ -5389,7 +5281,7 @@ function createTippy(reference, collectionProps) {
5389
5281
  state: state,
5390
5282
  // methods
5391
5283
  clearDelayTimeouts: clearDelayTimeouts,
5392
- set: set$$1,
5284
+ set: set,
5393
5285
  setContent: setContent$$1,
5394
5286
  show: show,
5395
5287
  hide: hide,
@@ -5397,95 +5289,64 @@ function createTippy(reference, collectionProps) {
5397
5289
  disable: disable,
5398
5290
  destroy: destroy
5399
5291
  };
5400
-
5401
5292
  addTriggersToReference();
5402
5293
 
5403
- reference.addEventListener('click', onReferenceClick);
5404
-
5405
5294
  if (!props.lazy) {
5406
- tip.popperInstance = createPopperInstance();
5407
- tip.popperInstance.disableEventListeners();
5295
+ createPopperInstance();
5296
+ instance.popperInstance.disableEventListeners();
5408
5297
  }
5409
5298
 
5410
5299
  if (props.showOnInit) {
5411
5300
  prepareShow();
5412
- }
5301
+ } // Ensure the reference element can receive focus (and is not a delegate)
5302
+
5413
5303
 
5414
- // Ensure the reference element can receive focus (and is not a delegate)
5415
5304
  if (props.a11y && !props.target && !canReceiveFocus(reference)) {
5416
5305
  reference.setAttribute('tabindex', '0');
5417
- }
5418
-
5419
- // Install shortcuts
5420
- reference._tippy = tip;
5421
- popper._tippy = tip;
5306
+ } // Install shortcuts
5422
5307
 
5423
- return tip;
5424
5308
 
5309
+ reference._tippy = instance;
5310
+ popper._tippy = instance;
5311
+ return instance;
5425
5312
  /* ======================= 🔒 Private methods 🔒 ======================= */
5426
- /**
5427
- * If the reference was clicked, it also receives focus
5428
- */
5429
- function onReferenceClick() {
5430
- defer(function () {
5431
- referenceJustProgrammaticallyFocused = false;
5432
- });
5433
- }
5434
-
5435
- /**
5436
- * Ensure the popper's position stays correct if its dimensions change. Use
5437
- * update() over .scheduleUpdate() so there is no 1 frame flash due to
5438
- * async update
5439
- */
5440
- function addMutationObserver() {
5441
- popperMutationObserver = new MutationObserver(function () {
5442
- tip.popperInstance.update();
5443
- });
5444
- popperMutationObserver.observe(popper, {
5445
- childList: true,
5446
- subtree: true,
5447
- characterData: true
5448
- });
5449
- }
5450
5313
 
5451
5314
  /**
5452
5315
  * Positions the virtual reference near the mouse cursor
5453
5316
  */
5317
+
5454
5318
  function positionVirtualReferenceNearCursor(event) {
5455
5319
  var _lastMouseMoveEvent = lastMouseMoveEvent = event,
5456
5320
  clientX = _lastMouseMoveEvent.clientX,
5457
5321
  clientY = _lastMouseMoveEvent.clientY;
5458
5322
 
5459
- if (!tip.popperInstance) {
5323
+ if (!instance.popperInstance) {
5460
5324
  return;
5461
- }
5462
-
5463
- // Ensure virtual reference is padded by 5px to prevent tooltip from
5325
+ } // Ensure virtual reference is padded to prevent tooltip from
5464
5326
  // overflowing. Maybe Popper.js issue?
5465
- var placement = getPopperPlacement(tip.popper);
5466
- var padding = tip.popperChildren.arrow ? 20 : 5;
5327
+
5328
+
5329
+ var placement = getPopperPlacement(instance.popper);
5330
+ var padding = instance.popperChildren.arrow ? PADDING + 16 : PADDING;
5467
5331
  var isVerticalPlacement = includes(['top', 'bottom'], placement);
5468
- var isHorizontalPlacement = includes(['left', 'right'], placement);
5332
+ var isHorizontalPlacement = includes(['left', 'right'], placement); // Top / left boundary
5469
5333
 
5470
- // Top / left boundary
5471
5334
  var x = isVerticalPlacement ? Math.max(padding, clientX) : clientX;
5472
- var y = isHorizontalPlacement ? Math.max(padding, clientY) : clientY;
5335
+ var y = isHorizontalPlacement ? Math.max(padding, clientY) : clientY; // Bottom / right boundary
5473
5336
 
5474
- // Bottom / right boundary
5475
5337
  if (isVerticalPlacement && x > padding) {
5476
5338
  x = Math.min(clientX, window.innerWidth - padding);
5477
5339
  }
5340
+
5478
5341
  if (isHorizontalPlacement && y > padding) {
5479
5342
  y = Math.min(clientY, window.innerHeight - padding);
5480
5343
  }
5481
5344
 
5482
- var rect = tip.reference.getBoundingClientRect();
5483
- var followCursor = tip.props.followCursor;
5484
-
5345
+ var rect = instance.reference.getBoundingClientRect();
5346
+ var followCursor = instance.props.followCursor;
5485
5347
  var isHorizontal = followCursor === 'horizontal';
5486
5348
  var isVertical = followCursor === 'vertical';
5487
-
5488
- tip.popperInstance.reference = {
5349
+ instance.popperInstance.reference = {
5489
5350
  getBoundingClientRect: function getBoundingClientRect() {
5490
5351
  return {
5491
5352
  width: 0,
@@ -5499,59 +5360,63 @@ function createTippy(reference, collectionProps) {
5499
5360
  clientWidth: 0,
5500
5361
  clientHeight: 0
5501
5362
  };
5363
+ instance.popperInstance.scheduleUpdate();
5502
5364
 
5503
- tip.popperInstance.scheduleUpdate();
5504
-
5505
- if (followCursor === 'initial' && tip.state.isVisible) {
5365
+ if (followCursor === 'initial' && instance.state.isVisible) {
5506
5366
  removeFollowCursorListener();
5507
5367
  }
5508
5368
  }
5509
-
5510
5369
  /**
5511
5370
  * Creates the tippy instance for a delegate when it's been triggered
5512
5371
  */
5372
+
5373
+
5513
5374
  function createDelegateChildTippy(event) {
5514
- var targetEl = closest(event.target, tip.props.target);
5375
+ var targetEl = closest(event.target, instance.props.target);
5376
+
5515
5377
  if (targetEl && !targetEl._tippy) {
5516
- createTippy(targetEl, _extends$2({}, tip.props, {
5378
+ createTippy(targetEl, _extends$2({}, instance.props, {
5379
+ content: evaluateValue(collectionProps.content, [targetEl]),
5380
+ appendTo: collectionProps.appendTo,
5517
5381
  target: '',
5518
5382
  showOnInit: true
5519
5383
  }));
5520
5384
  prepareShow(event);
5521
5385
  }
5522
5386
  }
5523
-
5524
5387
  /**
5525
5388
  * Setup before show() is invoked (delays, etc.)
5526
5389
  */
5390
+
5391
+
5527
5392
  function prepareShow(event) {
5528
5393
  clearDelayTimeouts();
5529
5394
 
5530
- if (tip.state.isVisible) {
5395
+ if (instance.state.isVisible) {
5531
5396
  return;
5532
- }
5397
+ } // Is a delegate, create an instance for the child target
5398
+
5533
5399
 
5534
- // Is a delegate, create an instance for the child target
5535
- if (tip.props.target) {
5400
+ if (instance.props.target) {
5536
5401
  return createDelegateChildTippy(event);
5537
5402
  }
5538
5403
 
5539
5404
  isPreparingToShow = true;
5540
5405
 
5541
- if (tip.props.wait) {
5542
- return tip.props.wait(tip, event);
5543
- }
5544
-
5545
- // If the tooltip has a delay, we need to be listening to the mousemove as
5406
+ if (instance.props.wait) {
5407
+ return instance.props.wait(instance, event);
5408
+ } // If the tooltip has a delay, we need to be listening to the mousemove as
5546
5409
  // soon as the trigger event is fired, so that it's in the correct position
5547
5410
  // upon mount.
5548
5411
  // Edge case: if the tooltip is still mounted, but then prepareShow() is
5549
5412
  // called, it causes a jump.
5550
- if (hasFollowCursorBehavior() && !tip.state.isMounted) {
5413
+
5414
+
5415
+ if (hasFollowCursorBehavior() && !instance.state.isMounted) {
5551
5416
  document.addEventListener('mousemove', positionVirtualReferenceNearCursor);
5552
5417
  }
5553
5418
 
5554
- var delay = getValue$1(tip.props.delay, 0, Defaults$1.delay);
5419
+ var delay = getValue$1(instance.props.delay, 0, Defaults$1.delay);
5555
5420
 
5556
5421
  if (delay) {
5557
5422
  showTimeoutId = setTimeout(function () {
@@ -5561,24 +5426,24 @@ function createTippy(reference, collectionProps) {
5561
5426
  show();
5562
5427
  }
5563
5428
  }
5564
-
5565
5429
  /**
5566
5430
  * Setup before hide() is invoked (delays, etc.)
5567
5431
  */
5432
+
5433
+
5568
5434
  function prepareHide() {
5569
5435
  clearDelayTimeouts();
5570
5436
 
5571
- if (!tip.state.isVisible) {
5437
+ if (!instance.state.isVisible) {
5572
5438
  return removeFollowCursorListener();
5573
5439
  }
5574
5440
 
5575
5441
  isPreparingToShow = false;
5576
-
5577
- var delay = getValue$1(tip.props.delay, 1, Defaults$1.delay);
5442
+ var delay = getValue$1(instance.props.delay, 1, Defaults$1.delay);
5578
5443
 
5579
5444
  if (delay) {
5580
5445
  hideTimeoutId = setTimeout(function () {
5581
- if (tip.state.isVisible) {
5446
+ if (instance.state.isVisible) {
5582
5447
  hide();
5583
5448
  }
5584
5449
  }, delay);
@@ -5586,74 +5451,83 @@ function createTippy(reference, collectionProps) {
5586
5451
  hide();
5587
5452
  }
5588
5453
  }
5589
-
5590
5454
  /**
5591
5455
  * Removes the follow cursor listener
5592
5456
  */
5457
+
5458
+
5593
5459
  function removeFollowCursorListener() {
5594
5460
  document.removeEventListener('mousemove', positionVirtualReferenceNearCursor);
5595
5461
  lastMouseMoveEvent = null;
5596
5462
  }
5597
-
5598
5463
  /**
5599
5464
  * Cleans up old listeners
5600
5465
  */
5466
+
5467
+
5601
5468
  function cleanupOldMouseListeners() {
5602
5469
  document.body.removeEventListener('mouseleave', prepareHide);
5603
5470
  document.removeEventListener('mousemove', debouncedOnMouseMove);
5604
5471
  }
5605
-
5606
5472
  /**
5607
5473
  * Event listener invoked upon trigger
5608
5474
  */
5475
+
5476
+
5609
5477
  function onTrigger(event) {
5610
- if (!tip.state.isEnabled || isEventListenerStopped(event)) {
5478
+ if (!instance.state.isEnabled || isEventListenerStopped(event)) {
5611
5479
  return;
5612
5480
  }
5613
5481
 
5614
- if (!tip.state.isVisible) {
5615
- lastTriggerEvent = event;
5616
- }
5482
+ if (!instance.state.isVisible) {
5483
+ lastTriggerEvent = event; // Use the `mouseenter` event as a "mock" mousemove event for touch
5484
+ // devices
5485
+
5486
+ if (isUsingTouch && includes(event.type, 'mouse')) {
5487
+ lastMouseMoveEvent = event;
5488
+ }
5489
+ } // Toggle show/hide when clicking click-triggered tooltips
5617
5490
 
5618
- // Toggle show/hide when clicking click-triggered tooltips
5619
- if (event.type === 'click' && tip.props.hideOnClick !== false && tip.state.isVisible) {
5491
+
5492
+ if (event.type === 'click' && instance.props.hideOnClick !== false && instance.state.isVisible) {
5620
5493
  prepareHide();
5621
5494
  } else {
5622
5495
  prepareShow(event);
5623
5496
  }
5624
5497
  }
5625
-
5626
5498
  /**
5627
5499
  * Event listener used for interactive tooltips to detect when they should
5628
5500
  * hide
5629
5501
  */
5502
+
5503
+
5630
5504
  function onMouseMove(event) {
5631
5505
  var referenceTheCursorIsOver = closestCallback(event.target, function (el) {
5632
5506
  return el._tippy;
5633
5507
  });
5634
-
5635
- var isCursorOverPopper = closest(event.target, Selectors.POPPER) === tip.popper;
5636
- var isCursorOverReference = referenceTheCursorIsOver === tip.reference;
5508
+ var isCursorOverPopper = closest(event.target, Selectors.POPPER) === instance.popper;
5509
+ var isCursorOverReference = referenceTheCursorIsOver === instance.reference;
5637
5510
 
5638
5511
  if (isCursorOverPopper || isCursorOverReference) {
5639
5512
  return;
5640
5513
  }
5641
5514
 
5642
- if (isCursorOutsideInteractiveBorder(getPopperPlacement(tip.popper), tip.popper.getBoundingClientRect(), event, tip.props)) {
5515
+ if (isCursorOutsideInteractiveBorder(getPopperPlacement(instance.popper), instance.popper.getBoundingClientRect(), event, instance.props)) {
5643
5516
  cleanupOldMouseListeners();
5644
5517
  prepareHide();
5645
5518
  }
5646
5519
  }
5647
-
5648
5520
  /**
5649
5521
  * Event listener invoked upon mouseleave
5650
5522
  */
5523
+
5524
+
5651
5525
  function onMouseLeave(event) {
5652
5526
  if (isEventListenerStopped(event)) {
5653
5527
  return;
5654
5528
  }
5655
5529
 
5656
- if (tip.props.interactive) {
5530
+ if (instance.props.interactive) {
5657
5531
  document.body.addEventListener('mouseleave', prepareHide);
5658
5532
  document.addEventListener('mousemove', debouncedOnMouseMove);
5659
5533
  return;
@@ -5661,140 +5535,148 @@ function createTippy(reference, collectionProps) {
5661
5535
 
5662
5536
  prepareHide();
5663
5537
  }
5664
-
5665
5538
  /**
5666
5539
  * Event listener invoked upon blur
5667
5540
  */
5541
+
5542
+
5668
5543
  function onBlur(event) {
5669
- if (event.target !== tip.reference) {
5544
+ if (event.target !== instance.reference) {
5670
5545
  return;
5671
5546
  }
5672
5547
 
5673
- if (tip.props.interactive) {
5674
- if (!event.relatedTarget) {
5675
- return;
5676
- }
5677
- if (closest(event.relatedTarget, Selectors.POPPER)) {
5678
- return;
5679
- }
5548
+ if (instance.props.interactive && event.relatedTarget && instance.popper.contains(event.relatedTarget)) {
5549
+ return;
5680
5550
  }
5681
5551
 
5682
5552
  prepareHide();
5683
5553
  }
5684
-
5685
5554
  /**
5686
5555
  * Event listener invoked when a child target is triggered
5687
5556
  */
5557
+
5558
+
5688
5559
  function onDelegateShow(event) {
5689
- if (closest(event.target, tip.props.target)) {
5560
+ if (closest(event.target, instance.props.target)) {
5690
5561
  prepareShow(event);
5691
5562
  }
5692
5563
  }
5693
-
5694
5564
  /**
5695
5565
  * Event listener invoked when a child target should hide
5696
5566
  */
5567
+
5568
+
5697
5569
  function onDelegateHide(event) {
5698
- if (closest(event.target, tip.props.target)) {
5570
+ if (closest(event.target, instance.props.target)) {
5699
5571
  prepareHide();
5700
5572
  }
5701
5573
  }
5702
-
5703
5574
  /**
5704
5575
  * Determines if an event listener should stop further execution due to the
5705
5576
  * `touchHold` option
5706
5577
  */
5578
+
5579
+
5707
5580
  function isEventListenerStopped(event) {
5581
+ var supportsTouch = 'ontouchstart' in window;
5708
5582
  var isTouchEvent = includes(event.type, 'touch');
5709
- var caseA = supportsTouch && isUsingTouch && tip.props.touchHold && !isTouchEvent;
5710
- var caseB = isUsingTouch && !tip.props.touchHold && isTouchEvent;
5711
- return caseA || caseB;
5583
+ var touchHold = instance.props.touchHold;
5584
+ return supportsTouch && isUsingTouch && touchHold && !isTouchEvent || isUsingTouch && !touchHold && isTouchEvent;
5712
5585
  }
5713
-
5714
5586
  /**
5715
- * Creates the popper instance for the tip
5587
+ * Creates the popper instance for the instance
5716
5588
  */
5717
- function createPopperInstance() {
5718
- var popperOptions = tip.props.popperOptions;
5719
- var _tip$popperChildren = tip.popperChildren,
5720
- tooltip = _tip$popperChildren.tooltip,
5721
- arrow = _tip$popperChildren.arrow;
5722
5589
 
5723
5590
 
5724
- return new Popper(tip.reference, tip.popper, _extends$2({
5725
- placement: tip.props.placement
5591
+ function createPopperInstance() {
5592
+ var popperOptions = instance.props.popperOptions;
5593
+ var _instance$popperChild = instance.popperChildren,
5594
+ tooltip = _instance$popperChild.tooltip,
5595
+ arrow = _instance$popperChild.arrow;
5596
+ instance.popperInstance = new Popper(instance.reference, instance.popper, _extends$2({
5597
+ placement: instance.props.placement
5726
5598
  }, popperOptions, {
5727
5599
  modifiers: _extends$2({}, popperOptions ? popperOptions.modifiers : {}, {
5728
5600
  preventOverflow: _extends$2({
5729
- boundariesElement: tip.props.boundary
5601
+ boundariesElement: instance.props.boundary,
5602
+ padding: PADDING
5730
5603
  }, getModifier(popperOptions, 'preventOverflow')),
5731
5604
  arrow: _extends$2({
5732
5605
  element: arrow,
5733
5606
  enabled: !!arrow
5734
5607
  }, getModifier(popperOptions, 'arrow')),
5735
5608
  flip: _extends$2({
5736
- enabled: tip.props.flip,
5737
- padding: tip.props.distance + 5 /* 5px from viewport boundary */
5738
- , behavior: tip.props.flipBehavior
5609
+ enabled: instance.props.flip,
5610
+ // The tooltip is offset by 10px from the popper in CSS,
5611
+ // we need to account for its distance
5612
+ padding: instance.props.distance + PADDING,
5613
+ behavior: instance.props.flipBehavior
5739
5614
  }, getModifier(popperOptions, 'flip')),
5740
5615
  offset: _extends$2({
5741
- offset: tip.props.offset
5616
+ offset: instance.props.offset
5742
5617
  }, getModifier(popperOptions, 'offset'))
5743
5618
  }),
5744
5619
  onCreate: function onCreate() {
5745
- tooltip.style[getPopperPlacement(tip.popper)] = getOffsetDistanceInPx(tip.props.distance, Defaults$1.distance);
5620
+ tooltip.style[getPopperPlacement(instance.popper)] = getOffsetDistanceInPx(instance.props.distance, Defaults$1.distance);
5621
+ },
5622
+ onUpdate: function onUpdate(data) {
5623
+ if (data && !instance.props.flipOnUpdate) {
5624
+ if (data.flipped) {
5625
+ instance.popperInstance.options.placement = data.placement;
5626
+ }
5746
5627
 
5747
- if (arrow && tip.props.arrowTransform) {
5748
- computeArrowTransform(arrow, tip.props.arrowTransform);
5628
+ setFlipModifierEnabled(instance.popperInstance.modifiers, false);
5749
5629
  }
5750
- },
5751
- onUpdate: function onUpdate() {
5630
+
5752
5631
  var styles = tooltip.style;
5753
5632
  styles.top = '';
5754
5633
  styles.bottom = '';
5755
5634
  styles.left = '';
5756
5635
  styles.right = '';
5757
- styles[getPopperPlacement(tip.popper)] = getOffsetDistanceInPx(tip.props.distance, Defaults$1.distance);
5758
-
5759
- if (arrow && tip.props.arrowTransform) {
5760
- computeArrowTransform(arrow, tip.props.arrowTransform);
5761
- }
5636
+ styles[getPopperPlacement(instance.popper)] = getOffsetDistanceInPx(instance.props.distance, Defaults$1.distance);
5762
5637
  }
5763
5638
  }));
5764
5639
  }
5765
-
5766
5640
  /**
5767
5641
  * Mounts the tooltip to the DOM, callback to show tooltip is run **after**
5768
5642
  * popper's position has updated
5769
5643
  */
5644
+
5645
+
5770
5646
  function mount(callback) {
5771
- if (!tip.popperInstance) {
5772
- tip.popperInstance = createPopperInstance();
5773
- addMutationObserver();
5774
- if (!tip.props.livePlacement || hasFollowCursorBehavior()) {
5775
- tip.popperInstance.disableEventListeners();
5647
+ var shouldEnableListeners = !hasFollowCursorBehavior() && !(instance.props.followCursor === 'initial' && isUsingTouch);
5648
+
5649
+ if (!instance.popperInstance) {
5650
+ createPopperInstance();
5651
+
5652
+ if (!shouldEnableListeners) {
5653
+ instance.popperInstance.disableEventListeners();
5776
5654
  }
5777
5655
  } else {
5778
5656
  if (!hasFollowCursorBehavior()) {
5779
- tip.popperInstance.scheduleUpdate();
5780
- if (tip.props.livePlacement) {
5781
- tip.popperInstance.enableEventListeners();
5657
+ instance.popperInstance.scheduleUpdate();
5658
+
5659
+ if (shouldEnableListeners) {
5660
+ instance.popperInstance.enableEventListeners();
5782
5661
  }
5783
5662
  }
5784
- }
5785
5663
 
5786
- // If the instance previously had followCursor behavior, it will be
5664
+ setFlipModifierEnabled(instance.popperInstance.modifiers, true);
5665
+ } // If the instance previously had followCursor behavior, it will be
5787
5666
  // positioned incorrectly if triggered by `focus` afterwards.
5788
5667
  // Update the reference back to the real DOM element
5789
- tip.popperInstance.reference = tip.reference;
5790
- var arrow = tip.popperChildren.arrow;
5791
5668
 
5792
5669
 
5670
+ instance.popperInstance.reference = instance.reference;
5671
+ var arrow = instance.popperChildren.arrow;
5672
+
5793
5673
  if (hasFollowCursorBehavior()) {
5794
5674
  if (arrow) {
5795
5675
  arrow.style.margin = '0';
5796
5676
  }
5797
- var delay = getValue$1(tip.props.delay, 0, Defaults$1.delay);
5677
+
5678
+ var delay = getValue$1(instance.props.delay, 0, Defaults$1.delay);
5679
+
5798
5680
  if (lastTriggerEvent.type) {
5799
5681
  positionVirtualReferenceNearCursor(delay && lastMouseMoveEvent ? lastMouseMoveEvent : lastTriggerEvent);
5800
5682
  }
@@ -5802,72 +5684,78 @@ function createTippy(reference, collectionProps) {
5802
5684
  arrow.style.margin = '';
5803
5685
  }
5804
5686
 
5805
- afterPopperPositionUpdates(tip.popperInstance, callback);
5687
+ afterPopperPositionUpdates(instance.popperInstance, callback);
5688
+ var appendTo = instance.props.appendTo;
5689
+ parentNode = appendTo === 'parent' ? instance.reference.parentNode : evaluateValue(appendTo, [instance.reference]);
5806
5690
 
5807
- if (!tip.props.appendTo.contains(tip.popper)) {
5808
- tip.props.appendTo.appendChild(tip.popper);
5809
- tip.props.onMount(tip);
5810
- tip.state.isMounted = true;
5691
+ if (!parentNode.contains(instance.popper)) {
5692
+ parentNode.appendChild(instance.popper);
5693
+ instance.props.onMount(instance);
5694
+ instance.state.isMounted = true;
5811
5695
  }
5812
5696
  }
5813
-
5814
5697
  /**
5815
5698
  * Determines if the instance is in `followCursor` mode
5816
5699
  */
5700
+
5701
+
5817
5702
  function hasFollowCursorBehavior() {
5818
- return tip.props.followCursor && !isUsingTouch && lastTriggerEvent.type !== 'focus';
5703
+ return instance.props.followCursor && !isUsingTouch && lastTriggerEvent.type !== 'focus';
5819
5704
  }
5820
-
5821
5705
  /**
5822
5706
  * Updates the tooltip's position on each animation frame + timeout
5823
5707
  */
5708
+
5709
+
5824
5710
  function makeSticky() {
5825
- applyTransitionDuration([tip.popper], isIE$1 ? 0 : tip.props.updateDuration);
5711
+ applyTransitionDuration([instance.popper], isIE$1 ? 0 : instance.props.updateDuration);
5826
5712
 
5827
5713
  var updatePosition = function updatePosition() {
5828
- if (tip.popperInstance) {
5829
- tip.popperInstance.scheduleUpdate();
5714
+ if (instance.popperInstance) {
5715
+ instance.popperInstance.scheduleUpdate();
5830
5716
  }
5831
5717
 
5832
- if (tip.state.isMounted) {
5718
+ if (instance.state.isMounted) {
5833
5719
  requestAnimationFrame(updatePosition);
5834
5720
  } else {
5835
- applyTransitionDuration([tip.popper], 0);
5721
+ applyTransitionDuration([instance.popper], 0);
5836
5722
  }
5837
5723
  };
5838
5724
 
5839
5725
  updatePosition();
5840
5726
  }
5841
-
5842
5727
  /**
5843
5728
  * Invokes a callback once the tooltip has fully transitioned out
5844
5729
  */
5730
+
5731
+
5845
5732
  function onTransitionedOut(duration, callback) {
5846
5733
  onTransitionEnd(duration, function () {
5847
- if (!tip.state.isVisible && tip.props.appendTo.contains(tip.popper)) {
5734
+ if (!instance.state.isVisible && parentNode && parentNode.contains(instance.popper)) {
5848
5735
  callback();
5849
5736
  }
5850
5737
  });
5851
5738
  }
5852
-
5853
5739
  /**
5854
5740
  * Invokes a callback once the tooltip has fully transitioned in
5855
5741
  */
5742
+
5743
+
5856
5744
  function onTransitionedIn(duration, callback) {
5857
5745
  onTransitionEnd(duration, callback);
5858
5746
  }
5859
-
5860
5747
  /**
5861
5748
  * Invokes a callback once the tooltip's CSS transition ends
5862
5749
  */
5750
+
5751
+
5863
5752
  function onTransitionEnd(duration, callback) {
5864
5753
  // Make callback synchronous if duration is 0
5865
5754
  if (duration === 0) {
5866
5755
  return callback();
5867
5756
  }
5868
5757
 
5869
- var tooltip = tip.popperChildren.tooltip;
5870
-
5758
+ var tooltip = instance.popperChildren.tooltip;
5871
5759
 
5872
5760
  var listener = function listener(e) {
5873
5761
  if (e.target === tooltip) {
@@ -5878,40 +5766,46 @@ function createTippy(reference, collectionProps) {
5878
5766
 
5879
5767
  toggleTransitionEndListener(tooltip, 'remove', transitionEndListener);
5880
5768
  toggleTransitionEndListener(tooltip, 'add', listener);
5881
-
5882
5769
  transitionEndListener = listener;
5883
5770
  }
5884
-
5885
5771
  /**
5886
5772
  * Adds an event listener to the reference and stores it in `listeners`
5887
5773
  */
5774
+
5775
+
5888
5776
  function on(eventType, handler) {
5889
5777
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
5890
-
5891
- tip.reference.addEventListener(eventType, handler, options);
5892
- listeners.push({ eventType: eventType, handler: handler, options: options });
5778
+ instance.reference.addEventListener(eventType, handler, options);
5779
+ listeners.push({
5780
+ eventType: eventType,
5781
+ handler: handler,
5782
+ options: options
5783
+ });
5893
5784
  }
5894
-
5895
5785
  /**
5896
5786
  * Adds event listeners to the reference based on the `trigger` prop
5897
5787
  */
5788
+
5789
+
5898
5790
  function addTriggersToReference() {
5899
- if (tip.props.touchHold && !tip.props.target) {
5791
+ if (instance.props.touchHold && !instance.props.target) {
5900
5792
  on('touchstart', onTrigger, PASSIVE);
5901
5793
  on('touchend', onMouseLeave, PASSIVE);
5902
5794
  }
5903
5795
 
5904
- tip.props.trigger.trim().split(' ').forEach(function (eventType) {
5796
+ instance.props.trigger.trim().split(' ').forEach(function (eventType) {
5905
5797
  if (eventType === 'manual') {
5906
5798
  return;
5907
5799
  }
5908
5800
 
5909
- if (!tip.props.target) {
5801
+ if (!instance.props.target) {
5910
5802
  on(eventType, onTrigger);
5803
+
5911
5804
  switch (eventType) {
5912
5805
  case 'mouseenter':
5913
5806
  on('mouseleave', onMouseLeave);
5914
5807
  break;
5808
+
5915
5809
  case 'focus':
5916
5810
  on(isIE$1 ? 'focusout' : 'blur', onBlur);
5917
5811
  break;
@@ -5922,10 +5816,12 @@ function createTippy(reference, collectionProps) {
5922
5816
  on('mouseover', onDelegateShow);
5923
5817
  on('mouseout', onDelegateHide);
5924
5818
  break;
5819
+
5925
5820
  case 'focus':
5926
5821
  on('focusin', onDelegateShow);
5927
5822
  on('focusout', onDelegateHide);
5928
5823
  break;
5824
+
5929
5825
  case 'click':
5930
5826
  on(eventType, onDelegateShow);
5931
5827
  break;
@@ -5933,58 +5829,69 @@ function createTippy(reference, collectionProps) {
5933
5829
  }
5934
5830
  });
5935
5831
  }
5936
-
5937
5832
  /**
5938
5833
  * Removes event listeners from the reference
5939
5834
  */
5835
+
5836
+
5940
5837
  function removeTriggersFromReference() {
5941
5838
  listeners.forEach(function (_ref) {
5942
5839
  var eventType = _ref.eventType,
5943
5840
  handler = _ref.handler,
5944
5841
  options = _ref.options;
5945
-
5946
- tip.reference.removeEventListener(eventType, handler, options);
5842
+ instance.reference.removeEventListener(eventType, handler, options);
5947
5843
  });
5948
5844
  listeners = [];
5949
5845
  }
5846
+ /**
5847
+ * Returns inner elements used in show/hide methods
5848
+ */
5849
+
5950
5850
 
5851
+ function getInnerElements() {
5852
+ return [instance.popperChildren.tooltip, instance.popperChildren.backdrop, instance.popperChildren.content];
5853
+ }
5951
5854
  /* ======================= 🔑 Public methods 🔑 ======================= */
5855
+
5952
5856
  /**
5953
5857
  * Enables the instance to allow it to show or hide
5954
5858
  */
5859
+
5860
+
5955
5861
  function enable() {
5956
- tip.state.isEnabled = true;
5862
+ instance.state.isEnabled = true;
5957
5863
  }
5958
-
5959
5864
  /**
5960
5865
  * Disables the instance to disallow it to show or hide
5961
5866
  */
5867
+
5868
+
5962
5869
  function disable() {
5963
- tip.state.isEnabled = false;
5870
+ instance.state.isEnabled = false;
5964
5871
  }
5965
-
5966
5872
  /**
5967
5873
  * Clears pending timeouts related to the `delay` prop if any
5968
5874
  */
5875
+
5876
+
5969
5877
  function clearDelayTimeouts() {
5970
5878
  clearTimeout(showTimeoutId);
5971
5879
  clearTimeout(hideTimeoutId);
5972
5880
  }
5973
-
5974
5881
  /**
5975
5882
  * Sets new props for the instance and redraws the tooltip
5976
5883
  */
5977
- function set$$1() {
5978
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5979
5884
 
5980
- validateOptions(options, Defaults$1);
5981
5885
 
5982
- var prevProps = tip.props;
5983
- var nextProps = evaluateProps(tip.reference, _extends$2({}, tip.props, options, {
5984
- performance: true
5886
+ function set() {
5887
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5888
+ validateOptions(options, Defaults$1);
5889
+ var prevProps = instance.props;
5890
+ var nextProps = evaluateProps(instance.reference, _extends$2({}, instance.props, options, {
5891
+ ignoreAttributes: true
5985
5892
  }));
5986
- nextProps.performance = hasOwnProperty$8(options, 'performance') ? options.performance : prevProps.performance;
5987
- tip.props = nextProps;
5893
+ nextProps.ignoreAttributes = hasOwnProperty$8(options, 'ignoreAttributes') ? options.ignoreAttributes : prevProps.ignoreAttributes;
5894
+ instance.props = nextProps;
5988
5895
 
5989
5896
  if (hasOwnProperty$8(options, 'trigger') || hasOwnProperty$8(options, 'touchHold')) {
5990
5897
  removeTriggersFromReference();
@@ -5996,214 +5903,262 @@ function createTippy(reference, collectionProps) {
5996
5903
  debouncedOnMouseMove = debounce$1(onMouseMove, options.interactiveDebounce);
5997
5904
  }
5998
5905
 
5999
- updatePopperElement(tip.popper, prevProps, nextProps);
6000
- tip.popperChildren = getChildren(tip.popper);
5906
+ updatePopperElement(instance.popper, prevProps, nextProps);
5907
+ instance.popperChildren = getChildren(instance.popper);
6001
5908
 
6002
- if (tip.popperInstance && POPPER_INSTANCE_RELATED_PROPS.some(function (prop) {
6003
- return hasOwnProperty$8(options, prop);
6004
- })) {
6005
- tip.popperInstance.destroy();
6006
- tip.popperInstance = createPopperInstance();
6007
- if (!tip.state.isVisible) {
6008
- tip.popperInstance.disableEventListeners();
6009
- }
6010
- if (tip.props.followCursor && lastMouseMoveEvent) {
6011
- positionVirtualReferenceNearCursor(lastMouseMoveEvent);
5909
+ if (instance.popperInstance) {
5910
+ instance.popperInstance.update();
5911
+
5912
+ if (POPPER_INSTANCE_DEPENDENCIES.some(function (prop) {
5913
+ return hasOwnProperty$8(options, prop);
5914
+ })) {
5915
+ instance.popperInstance.destroy();
5916
+ createPopperInstance();
5917
+
5918
+ if (!instance.state.isVisible) {
5919
+ instance.popperInstance.disableEventListeners();
5920
+ }
5921
+
5922
+ if (instance.props.followCursor && lastMouseMoveEvent) {
5923
+ positionVirtualReferenceNearCursor(lastMouseMoveEvent);
5924
+ }
6012
5925
  }
6013
5926
  }
6014
5927
  }
6015
-
6016
5928
  /**
6017
5929
  * Shortcut for .set({ content: newContent })
6018
5930
  */
5931
+
5932
+
6019
5933
  function setContent$$1(content) {
6020
- set$$1({ content: content });
5934
+ set({
5935
+ content: content
5936
+ });
6021
5937
  }
6022
-
6023
5938
  /**
6024
5939
  * Shows the tooltip
6025
5940
  */
5941
+
5942
+
6026
5943
  function show() {
6027
- var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue$1(tip.props.duration, 0, Defaults$1.duration[0]);
5944
+ var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue$1(instance.props.duration, 0, Defaults$1.duration[0]);
6028
5945
 
6029
- if (tip.state.isDestroyed || !tip.state.isEnabled || isUsingTouch && !tip.props.touch) {
5946
+ if (instance.state.isDestroyed || !instance.state.isEnabled || isUsingTouch && !instance.props.touch) {
6030
5947
  return;
6031
- }
5948
+ } // Destroy tooltip if the reference element is no longer on the DOM
5949
+
6032
5950
 
6033
- // Destroy tooltip if the reference element is no longer on the DOM
6034
- if (!tip.reference.isVirtual && !document.documentElement.contains(tip.reference)) {
5951
+ if (!instance.reference.isVirtual && !document.documentElement.contains(instance.reference)) {
6035
5952
  return destroy();
6036
- }
5953
+ } // Do not show tooltip if the reference element has a `disabled` attribute
6037
5954
 
6038
- // Do not show tooltip if the reference element has a `disabled` attribute
6039
- if (tip.reference.hasAttribute('disabled')) {
6040
- return;
6041
- }
6042
5955
 
6043
- // If the reference was just programmatically focused for accessibility
6044
- // reasons
6045
- if (referenceJustProgrammaticallyFocused) {
6046
- referenceJustProgrammaticallyFocused = false;
5956
+ if (instance.reference.hasAttribute('disabled')) {
6047
5957
  return;
6048
5958
  }
6049
5959
 
6050
- if (tip.props.onShow(tip) === false) {
5960
+ if (instance.props.onShow(instance) === false) {
6051
5961
  return;
6052
5962
  }
6053
5963
 
6054
- tip.popper.style.visibility = 'visible';
6055
- tip.state.isVisible = true;
5964
+ instance.popper.style.visibility = 'visible';
5965
+ instance.state.isVisible = true;
5966
+
5967
+ if (instance.props.interactive) {
5968
+ instance.reference.classList.add('tippy-active');
5969
+ } // Prevent a transition if the popper is at the opposite placement
6056
5970
 
6057
- // Prevent a transition if the popper is at the opposite placement
6058
- applyTransitionDuration([tip.popper, tip.popperChildren.tooltip, tip.popperChildren.backdrop], 0);
6059
5971
 
5972
+ applyTransitionDuration([instance.popper, instance.popperChildren.tooltip, instance.popperChildren.backdrop], 0);
6060
5973
  mount(function () {
6061
- if (!tip.state.isVisible) {
5974
+ if (!instance.state.isVisible) {
6062
5975
  return;
6063
- }
5976
+ } // Arrow will sometimes not be positioned correctly. Force another update
5977
+
6064
5978
 
6065
- // Arrow will sometimes not be positioned correctly. Force another update
6066
5979
  if (!hasFollowCursorBehavior()) {
6067
- tip.popperInstance.update();
6068
- }
5980
+ instance.popperInstance.update();
5981
+ } // Allow followCursor: 'initial' on touch devices
5982
+
6069
5983
 
6070
- applyTransitionDuration([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], duration);
6071
- if (tip.popperChildren.backdrop) {
6072
- tip.popperChildren.content.style.transitionDelay = Math.round(duration / 6) + 'ms';
5984
+ if (isUsingTouch && instance.props.followCursor === 'initial') {
5985
+ positionVirtualReferenceNearCursor(lastMouseMoveEvent);
6073
5986
  }
6074
5987
 
6075
- if (tip.props.interactive) {
6076
- tip.reference.classList.add('tippy-active');
5988
+ applyTransitionDuration([instance.popper], props.updateDuration);
5989
+ applyTransitionDuration(getInnerElements(), duration);
5990
+
5991
+ if (instance.popperChildren.backdrop) {
5992
+ instance.popperChildren.content.style.transitionDelay = Math.round(duration / 12) + 'ms';
6077
5993
  }
6078
5994
 
6079
- if (tip.props.sticky) {
5995
+ if (instance.props.sticky) {
6080
5996
  makeSticky();
6081
5997
  }
6082
5998
 
6083
- setVisibilityState([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], 'visible');
6084
-
5999
+ setVisibilityState(getInnerElements(), 'visible');
6085
6000
  onTransitionedIn(duration, function () {
6086
- if (tip.props.updateDuration === 0) {
6087
- tip.popperChildren.tooltip.classList.add('tippy-notransition');
6088
- }
6089
-
6090
- if (tip.props.autoFocus && tip.props.interactive && includes(['focus', 'click'], lastTriggerEvent.type)) {
6091
- focus(tip.popper);
6092
- }
6001
+ instance.popperChildren.tooltip.classList.add('tippy-notransition');
6093
6002
 
6094
- if (tip.props.aria) {
6095
- tip.reference.setAttribute('aria-' + tip.props.aria, tip.popper.id);
6003
+ if (instance.props.aria) {
6004
+ instance.reference.setAttribute("aria-".concat(instance.props.aria), instance.popper.id);
6096
6005
  }
6097
6006
 
6098
- tip.props.onShown(tip);
6099
- tip.state.isShown = true;
6007
+ instance.props.onShown(instance);
6008
+ instance.state.isShown = true;
6100
6009
  });
6101
6010
  });
6102
6011
  }
6103
-
6104
6012
  /**
6105
6013
  * Hides the tooltip
6106
6014
  */
6015
+
6016
+
6107
6017
  function hide() {
6108
- var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue$1(tip.props.duration, 1, Defaults$1.duration[1]);
6018
+ var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue$1(instance.props.duration, 1, Defaults$1.duration[1]);
6109
6019
 
6110
- if (tip.state.isDestroyed || !tip.state.isEnabled) {
6020
+ if (instance.state.isDestroyed || !instance.state.isEnabled) {
6111
6021
  return;
6112
6022
  }
6113
6023
 
6114
- if (tip.props.onHide(tip) === false) {
6024
+ if (instance.props.onHide(instance) === false) {
6115
6025
  return;
6116
6026
  }
6117
6027
 
6118
- if (tip.props.updateDuration === 0) {
6119
- tip.popperChildren.tooltip.classList.remove('tippy-notransition');
6120
- }
6028
+ instance.popperChildren.tooltip.classList.remove('tippy-notransition');
6121
6029
 
6122
- if (tip.props.interactive) {
6123
- tip.reference.classList.remove('tippy-active');
6124
- }
6125
-
6126
- tip.popper.style.visibility = 'hidden';
6127
- tip.state.isVisible = false;
6128
- tip.state.isShown = false;
6129
-
6130
- applyTransitionDuration([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], duration);
6131
-
6132
- setVisibilityState([tip.popperChildren.tooltip, tip.popperChildren.backdrop, tip.popperChildren.content], 'hidden');
6133
-
6134
- if (tip.props.autoFocus && tip.props.interactive && !referenceJustProgrammaticallyFocused && includes(['focus', 'click'], lastTriggerEvent.type)) {
6135
- if (lastTriggerEvent.type === 'focus') {
6136
- referenceJustProgrammaticallyFocused = true;
6137
- }
6138
- focus(tip.reference);
6030
+ if (instance.props.interactive) {
6031
+ instance.reference.classList.remove('tippy-active');
6139
6032
  }
6140
6033
 
6034
+ instance.popper.style.visibility = 'hidden';
6035
+ instance.state.isVisible = false;
6036
+ instance.state.isShown = false;
6037
+ applyTransitionDuration(getInnerElements(), duration);
6038
+ setVisibilityState(getInnerElements(), 'hidden');
6141
6039
  onTransitionedOut(duration, function () {
6142
6040
  if (!isPreparingToShow) {
6143
6041
  removeFollowCursorListener();
6144
6042
  }
6145
6043
 
6146
- if (tip.props.aria) {
6147
- tip.reference.removeAttribute('aria-' + tip.props.aria);
6044
+ if (instance.props.aria) {
6045
+ instance.reference.removeAttribute("aria-".concat(instance.props.aria));
6148
6046
  }
6149
6047
 
6150
- tip.popperInstance.disableEventListeners();
6151
-
6152
- tip.props.appendTo.removeChild(tip.popper);
6153
- tip.state.isMounted = false;
6154
-
6155
- tip.props.onHidden(tip);
6048
+ instance.popperInstance.disableEventListeners();
6049
+ instance.popperInstance.options.placement = instance.props.placement;
6050
+ parentNode.removeChild(instance.popper);
6051
+ instance.props.onHidden(instance);
6052
+ instance.state.isMounted = false;
6156
6053
  });
6157
6054
  }
6158
-
6159
6055
  /**
6160
6056
  * Destroys the tooltip
6161
6057
  */
6058
+
6059
+
6162
6060
  function destroy(destroyTargetInstances) {
6163
- if (tip.state.isDestroyed) {
6061
+ if (instance.state.isDestroyed) {
6164
6062
  return;
6165
- }
6166
-
6167
- // If the popper is currently mounted to the DOM, we want to ensure it gets
6063
+ } // If the popper is currently mounted to the DOM, we want to ensure it gets
6168
6064
  // hidden and unmounted instantly upon destruction
6169
- if (tip.state.isMounted) {
6065
+
6066
+
6067
+ if (instance.state.isMounted) {
6170
6068
  hide(0);
6171
6069
  }
6172
6070
 
6173
6071
  removeTriggersFromReference();
6072
+ delete instance.reference._tippy;
6174
6073
 
6175
- tip.reference.removeEventListener('click', onReferenceClick);
6176
-
6177
- delete tip.reference._tippy;
6178
-
6179
- if (tip.props.target && destroyTargetInstances) {
6180
- arrayFrom(tip.reference.querySelectorAll(tip.props.target)).forEach(function (child) {
6181
- return child._tippy && child._tippy.destroy();
6074
+ if (instance.props.target && destroyTargetInstances) {
6075
+ arrayFrom(instance.reference.querySelectorAll(instance.props.target)).forEach(function (child) {
6076
+ if (child._tippy) {
6077
+ child._tippy.destroy();
6078
+ }
6182
6079
  });
6183
6080
  }
6184
6081
 
6185
- if (tip.popperInstance) {
6186
- tip.popperInstance.destroy();
6082
+ if (instance.popperInstance) {
6083
+ instance.popperInstance.destroy();
6187
6084
  }
6188
6085
 
6189
- if (popperMutationObserver) {
6190
- popperMutationObserver.disconnect();
6191
- }
6086
+ instance.state.isDestroyed = true;
6087
+ }
6088
+ }
6089
+
6090
+ function group(instances) {
6091
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
6092
+ _ref$delay = _ref.delay,
6093
+ delay = _ref$delay === void 0 ? instances[0].props.delay : _ref$delay,
6094
+ _ref$duration = _ref.duration,
6095
+ duration = _ref$duration === void 0 ? 0 : _ref$duration;
6096
+
6097
+ var isAnyTippyOpen = false;
6098
+ instances.forEach(function (instance) {
6099
+ instance._originalProps = {
6100
+ duration: instance.props.duration,
6101
+ onHide: instance.props.onHide,
6102
+ onShow: instance.props.onShow,
6103
+ onShown: instance.props.onShown
6104
+ };
6105
+ });
6106
+
6107
+ function setIsAnyTippyOpen(value) {
6108
+ isAnyTippyOpen = value;
6109
+ updateInstances();
6110
+ }
6111
+
6112
+ function onShow(instance) {
6113
+ instance._originalProps.onShow(instance);
6114
+
6115
+ instances.forEach(function (instance) {
6116
+ instance.set({
6117
+ duration: duration
6118
+ });
6119
+ instance.hide();
6120
+ });
6121
+ setIsAnyTippyOpen(true);
6122
+ }
6123
+
6124
+ function onHide(instance) {
6125
+ instance._originalProps.onHide(instance);
6126
+
6127
+ setIsAnyTippyOpen(false);
6128
+ }
6129
+
6130
+ function onShown(instance) {
6131
+ instance._originalProps.onShown(instance);
6132
+
6133
+ instance.set({
6134
+ duration: instance._originalProps.duration
6135
+ });
6136
+ }
6192
6137
 
6193
- tip.state.isDestroyed = true;
6138
+ function updateInstances() {
6139
+ instances.forEach(function (instance) {
6140
+ instance.set({
6141
+ onShow: onShow,
6142
+ onShown: onShown,
6143
+ onHide: onHide,
6144
+ delay: isAnyTippyOpen ? [0, Array.isArray(delay) ? delay[1] : delay] : delay,
6145
+ duration: isAnyTippyOpen ? duration : instance._originalProps.duration
6146
+ });
6147
+ });
6194
6148
  }
6149
+
6150
+ updateInstances();
6195
6151
  }
6196
6152
 
6197
6153
  var globalEventListenersBound = false;
6198
-
6199
6154
  /**
6200
6155
  * Exported module
6201
6156
  * @param {String|Element|Element[]|NodeList|Object} targets
6202
6157
  * @param {Object} options
6203
- * @param {Boolean} one
6204
6158
  * @return {Object}
6205
6159
  */
6206
- function tippy$1(targets, options, one) {
6160
+
6161
+ function tippy(targets, options) {
6207
6162
  validateOptions(options, Defaults$1);
6208
6163
 
6209
6164
  if (!globalEventListenersBound) {
@@ -6211,85 +6166,80 @@ function tippy$1(targets, options, one) {
6211
6166
  globalEventListenersBound = true;
6212
6167
  }
6213
6168
 
6214
- var props = _extends$2({}, Defaults$1, options);
6169
+ var props = _extends$2({}, Defaults$1, options); // If they are specifying a virtual positioning reference, we need to polyfill
6170
+ // some native DOM props
6171
+
6215
6172
 
6216
- /**
6217
- * If they are specifying a virtual positioning reference, we need to polyfill
6218
- * some native DOM props
6219
- */
6220
6173
  if (isPlainObject$1(targets)) {
6221
6174
  polyfillElementPrototypeProperties(targets);
6222
6175
  }
6223
6176
 
6224
- var references = getArrayOfElements(targets);
6225
- var firstReference = references[0];
6177
+ var instances = getArrayOfElements(targets).reduce(function (acc, reference) {
6178
+ var instance = reference && createTippy(reference, props);
6226
6179
 
6227
- var instances = (one && firstReference ? [firstReference] : references).reduce(function (acc, reference) {
6228
- var tip = reference && createTippy(reference, props);
6229
- if (tip) {
6230
- acc.push(tip);
6180
+ if (instance) {
6181
+ acc.push(instance);
6231
6182
  }
6183
+
6232
6184
  return acc;
6233
6185
  }, []);
6234
-
6235
- var collection = {
6236
- targets: targets,
6237
- props: props,
6238
- instances: instances,
6239
- destroyAll: function destroyAll() {
6240
- collection.instances.forEach(function (instance) {
6241
- instance.destroy();
6242
- });
6243
- collection.instances = [];
6244
- }
6245
- };
6246
-
6247
- return collection;
6186
+ return isSingular(targets) ? instances[0] : instances;
6248
6187
  }
6249
-
6250
6188
  /**
6251
6189
  * Static props
6252
6190
  */
6253
- tippy$1.version = version;
6254
- tippy$1.defaults = Defaults$1;
6255
6191
 
6192
+
6193
+ tippy.version = version;
6194
+ tippy.defaults = Defaults$1;
6256
6195
  /**
6257
6196
  * Static methods
6258
6197
  */
6259
- tippy$1.one = function (targets, options) {
6260
- return tippy$1(targets, options, true).instances[0];
6261
- };
6262
- tippy$1.setDefaults = function (partialDefaults) {
6198
+
6199
+ tippy.setDefaults = function (partialDefaults) {
6263
6200
  Object.keys(partialDefaults).forEach(function (key) {
6264
6201
  Defaults$1[key] = partialDefaults[key];
6265
6202
  });
6266
6203
  };
6267
- tippy$1.disableAnimations = function () {
6268
- tippy$1.setDefaults({
6269
- duration: 0,
6270
- updateDuration: 0,
6271
- animateFill: false
6272
- });
6273
- };
6274
- tippy$1.hideAllPoppers = hideAllPoppers;
6275
- // noop: deprecated static method as capture phase is now default
6276
- tippy$1.useCapture = function () {};
6277
6204
 
6205
+ tippy.hideAll = hideAll;
6206
+ tippy.group = group;
6278
6207
  /**
6279
6208
  * Auto-init tooltips for elements with a `data-tippy="..."` attribute
6280
6209
  */
6281
- var autoInit = function autoInit() {
6210
+
6211
+ function autoInit() {
6282
6212
  arrayFrom(document.querySelectorAll('[data-tippy]')).forEach(function (el) {
6283
6213
  var content = el.getAttribute('data-tippy');
6214
+
6284
6215
  if (content) {
6285
- tippy$1(el, { content: content });
6216
+ tippy(el, {
6217
+ content: content
6218
+ });
6286
6219
  }
6287
6220
  });
6288
- };
6221
+ }
6222
+
6289
6223
  if (isBrowser$1) {
6290
6224
  setTimeout(autoInit);
6291
6225
  }
6292
6226
 
6227
+ /**
6228
+ * Injects a string of CSS styles to a style node in <head>
6229
+ * @param {String} css
6230
+ */
6231
+
6232
+ function injectCSS(css) {
6233
+ if (isBrowser$1) {
6234
+ var style = document.createElement('style');
6235
+ style.type = 'text/css';
6236
+ style.textContent = css;
6237
+ document.head.insertBefore(style, document.head.firstChild);
6238
+ }
6239
+ }
6240
+
6241
+ injectCSS(css);
6242
+
6293
6243
  var missingTippy = 'Using the attachment feature of Shepherd requires the Tippy.js library';
6294
6244
 
6295
6245
  var centeredStylePopperModifier = {
@@ -6370,7 +6320,7 @@ function parseShorthand(obj, props) {
6370
6320
  */
6371
6321
 
6372
6322
  function setupTooltip() {
6373
- if (isUndefined(tippy$1)) {
6323
+ if (isUndefined(tippy)) {
6374
6324
  throw new Error(missingTippy);
6375
6325
  }
6376
6326
 
@@ -6424,7 +6374,7 @@ function _makeTippyInstance(attachToOptions) {
6424
6374
 
6425
6375
  var tippyOptions = _makeAttachedTippyOptions.call(this, attachToOptions);
6426
6376
 
6427
- return tippy$1.one(attachToOptions.element, tippyOptions);
6377
+ return tippy(attachToOptions.element, tippyOptions);
6428
6378
  }
6429
6379
  /**
6430
6380
  * Generates the hash of options that will be passed to `Tippy` instances
@@ -6473,7 +6423,7 @@ function _makeCenteredTippy() {
6473
6423
  });
6474
6424
 
6475
6425
  tippyOptions.popperOptions = finalPopperOptions;
6476
- return tippy$1.one(document.body, tippyOptions);
6426
+ return tippy(document.body, tippyOptions);
6477
6427
  }
6478
6428
 
6479
6429
  /**
@@ -6703,7 +6653,7 @@ function (_Evented) {
6703
6653
  var buttons = createFromHTML('<ul class="shepherd-buttons"></ul>');
6704
6654
  footer.classList.add('shepherd-footer');
6705
6655
  this.options.buttons.map(function (cfg) {
6706
- var button = createFromHTML("<li><a class=\"shepherd-button ".concat(cfg.classes || '', "\">").concat(cfg.text, "</a>"));
6656
+ var button = createFromHTML("<li><a class=\"shepherd-button ".concat(cfg.classes || '', "\" tabindex=\"0\">").concat(cfg.text, "</a>"));
6707
6657
  buttons.appendChild(button);
6708
6658
 
6709
6659
  _this2.bindButtonEvents(cfg, button.querySelector('a'));
@@ -7006,27 +6956,6 @@ function (_Evented) {
7006
6956
  return Step;
7007
6957
  }(Evented);
7008
6958
 
7009
- var isBrowser$2 = typeof window !== 'undefined';
7010
- var nav$1 = isBrowser$2 ? navigator : {};
7011
- var win$1 = isBrowser$2 ? window : {};
7012
- var isBrowserSupported = 'MutationObserver' in win$1;
7013
- var isIE$2 = /MSIE |Trident\//.test(nav$1.userAgent);
7014
- var isIOS$1 = /iPhone|iPad|iPod/.test(nav$1.platform) && !win$1.MSStream;
7015
-
7016
- /**
7017
- * Injects a string of CSS styles to a style node in <head>
7018
- * @param {String} css
7019
- */
7020
-
7021
- function injectCSS(css) {
7022
- if (isBrowserSupported) {
7023
- var style = document.createElement('style');
7024
- style.type = 'text/css';
7025
- style.textContent = css;
7026
- document.head.insertBefore(style, document.head.firstChild);
7027
- }
7028
- }
7029
-
7030
6959
  /** `Object#toString` result references. */
7031
6960
  var numberTag$1 = '[object Number]';
7032
6961
 
@@ -7201,11 +7130,14 @@ function positionModalOpening(targetElement, openingElement) {
7201
7130
  x = _targetElement$getBou.x,
7202
7131
  y = _targetElement$getBou.y,
7203
7132
  width = _targetElement$getBou.width,
7204
- height = _targetElement$getBou.height;
7133
+ height = _targetElement$getBou.height,
7134
+ left = _targetElement$getBou.left,
7135
+ top = _targetElement$getBou.top; // getBoundingClientRect is not consistent. Some browsers use x and y, while others use left and top
7136
+
7205
7137
 
7206
7138
  _setAttributes(openingElement, {
7207
- x: x,
7208
- y: y,
7139
+ x: x || left,
7140
+ y: y || top,
7209
7141
  width: width,
7210
7142
  height: height
7211
7143
  });
@@ -7747,7 +7679,7 @@ function baseRest(func, start) {
7747
7679
  * }, 'deferred');
7748
7680
  * // => Logs 'deferred' after one millisecond.
7749
7681
  */
7750
- var defer$1 = baseRest(function(func, args) {
7682
+ var defer = baseRest(function(func, args) {
7751
7683
  return baseDelay(func, 1, args);
7752
7684
  });
7753
7685
 
@@ -7778,7 +7710,7 @@ function () {
7778
7710
  value: function cleanup() {
7779
7711
  var _this = this;
7780
7712
 
7781
- defer$1(function () {
7713
+ defer(function () {
7782
7714
  var element = _this._modalOverlayElem;
7783
7715
 
7784
7716
  if (element && element instanceof SVGElement) {
@@ -7860,12 +7792,9 @@ function () {
7860
7792
  return Modal;
7861
7793
  }();
7862
7794
 
7863
- var tippyStyles = ".tippy-iOS{cursor:pointer!important}.tippy-notransition{transition:none!important}.tippy-popper{-webkit-perspective:700px;perspective:700px;z-index:9999;outline:0;transition-timing-function:cubic-bezier(.165,.84,.44,1);pointer-events:none;line-height:1.4;max-width:calc(100% - 10px)}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-8px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;bottom:-7px;margin:0 6px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 25%;transform-origin:0 25%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-55%);transform:scale(1) translate(-50%,-55%)}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%,-45%);transform:scale(.2) translate(-50%,-45%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(60deg);transform:translateY(0) rotateX(60deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(.5);transform:translateY(0) scale(.5)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-8px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;top:-7px;margin:0 6px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -50%;transform-origin:0 -50%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-45%);transform:scale(1) translate(-50%,-45%)}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%);transform:scale(.2) translate(-50%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(-60deg);transform:translateY(0) rotateX(-60deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(.5);transform:translateY(0) scale(.5)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-16px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-75%,-50%);transform:scale(.2) translate(-75%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(-60deg);transform:translateX(0) rotateY(-60deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(.5);transform:translateX(0) scale(.5)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-16px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-50% 0;transform-origin:-50% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-25%,-50%);transform:scale(.2) translate(-25%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(60deg);transform:translateX(0) rotateY(60deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(.5);transform:translateX(0) scale(.5)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;max-width:350px;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:24px;height:8px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:calc(110% + 2rem);left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:\"\";float:left;padding-top:100%}.tippy-backdrop+.tippy-content{transition-property:opacity;will-change:opacity}.tippy-backdrop+.tippy-content[data-state=visible]{opacity:1}.tippy-backdrop+.tippy-content[data-state=hidden]{opacity:0}";
7864
-
7865
7795
  var defaults = {
7866
7796
  trigger: 'manual',
7867
7797
  arrow: true,
7868
- arrowTransform: 'scale(2)',
7869
7798
  animation: 'fade',
7870
7799
  duration: 420,
7871
7800
  flip: true,
@@ -7959,7 +7888,7 @@ function (_Evented) {
7959
7888
  _classCallCheck(this, Tour);
7960
7889
 
7961
7890
  _this = _possibleConstructorReturn(this, _getPrototypeOf(Tour).call(this, options));
7962
- bindMethods.call(_assertThisInitialized(_assertThisInitialized(_this)), ['back', 'cancel', 'complete', 'next']);
7891
+ bindMethods.call(_assertThisInitialized(_assertThisInitialized(_this)), ['back', 'cancel', 'complete', 'hide', 'next']);
7963
7892
  _this.options = options;
7964
7893
  _this.steps = _this.options.steps || []; // Pass these events onto the global Shepherd object
7965
7894
 
@@ -7979,7 +7908,6 @@ function (_Evented) {
7979
7908
 
7980
7909
  _this._setTourID();
7981
7910
 
7982
- injectCSS(tippyStyles);
7983
7911
  return _possibleConstructorReturn(_this, _assertThisInitialized(_assertThisInitialized(_this)));
7984
7912
  }
7985
7913
  /**
@@ -8294,7 +8222,7 @@ function (_Evented) {
8294
8222
  }, {
8295
8223
  key: "_setTooltipDefaults",
8296
8224
  value: function _setTooltipDefaults() {
8297
- tippy$1.setDefaults(defaults);
8225
+ tippy.setDefaults(defaults);
8298
8226
  }
8299
8227
  }, {
8300
8228
  key: "_updateStateBeforeShow",