{"version":3,"file":"index.js","sources":["../src/browser.ts","../src/props.ts","../src/ponyfills.ts","../src/constants.ts","../src/bindGlobalEventListeners.ts","../src/reference.ts","../src/utils.ts","../src/popper.ts","../src/createTippy.ts","../src/group.ts","../src/index.ts"],"sourcesContent":["export const isBrowser =\n  typeof window !== 'undefined' && typeof document !== 'undefined'\n\nconst ua = isBrowser ? navigator.userAgent : ''\n\nexport const isIE = /MSIE |Trident\\//.test(ua)\nexport const isUCBrowser = /UCBrowser\\//.test(ua)\nexport const isIOS =\n  isBrowser &&\n  /iPhone|iPad|iPod/.test(navigator.platform) &&\n  !(window as any).MSStream\n","import { Props } from './types'\n\nexport const defaultProps: Props = {\n  a11y: true,\n  allowHTML: true,\n  animateFill: true,\n  animation: 'shift-away',\n  appendTo: () => document.body,\n  aria: 'describedby',\n  arrow: false,\n  arrowType: 'sharp',\n  boundary: 'scrollParent',\n  content: '',\n  delay: 0,\n  distance: 10,\n  duration: [325, 275],\n  flip: true,\n  flipBehavior: 'flip',\n  flipOnUpdate: false,\n  followCursor: false,\n  hideOnClick: true,\n  ignoreAttributes: false,\n  inertia: false,\n  interactive: false,\n  interactiveBorder: 2,\n  interactiveDebounce: 0,\n  lazy: true,\n  maxWidth: 350,\n  multiple: false,\n  offset: 0,\n  onHidden() {},\n  onHide() {},\n  onMount() {},\n  onShow() {},\n  onShown() {},\n  onTrigger() {},\n  placement: 'top',\n  popperOptions: {},\n  role: 'tooltip',\n  showOnInit: false,\n  size: 'regular',\n  sticky: false,\n  target: '',\n  theme: 'dark',\n  touch: true,\n  touchHold: false,\n  trigger: 'mouseenter focus',\n  triggerTarget: null,\n  updateDuration: 0,\n  wait: null,\n  zIndex: 9999,\n}\n\n/**\n * If the set() method encounters one of these, the popperInstance must be\n * recreated\n */\nexport const POPPER_INSTANCE_DEPENDENCIES: Array<keyof Props> = [\n  'arrow',\n  'arrowType',\n  'boundary',\n  'distance',\n  'flip',\n  'flipBehavior',\n  'flipOnUpdate',\n  'offset',\n  'placement',\n  'popperOptions',\n]\n","import { isBrowser } from './browser'\n\nconst elementProto: Record<string, any> = isBrowser ? Element.prototype : {}\n\nexport const matches =\n  elementProto.matches ||\n  elementProto.matchesSelector ||\n  elementProto.webkitMatchesSelector ||\n  elementProto.mozMatchesSelector ||\n  elementProto.msMatchesSelector\n\n/**\n * Ponyfill for Array.from - converts iterable values to an array\n */\nexport function arrayFrom(value: ArrayLike<any>): any[] {\n  return [].slice.call(value)\n}\n\n/**\n * Ponyfill for Element.prototype.closest\n */\nexport function closest(element: Element, selector: string): Element | null {\n  return closestCallback(element, (el: Element) => matches.call(el, selector))\n}\n\n/**\n * Works like Element.prototype.closest, but uses a callback instead\n */\nexport function closestCallback(\n  element: Element | null,\n  callback: Function,\n): Element | null {\n  while (element) {\n    if (callback(element)) {\n      return element\n    }\n\n    element = element.parentElement\n  }\n\n  return null\n}\n","// Passive event listener config\nexport const PASSIVE = { passive: true }\n\n// Popper `preventOverflow` padding\nexport const PADDING = 4\n\n// Popper attributes\n// In Popper v2 these will be `data-*` instead of `x-*` to adhere to HTML5 spec\nexport const PLACEMENT_ATTRIBUTE = 'x-placement'\nexport const OUT_OF_BOUNDARIES_ATTRIBUTE = 'x-out-of-boundaries'\n\n// Classes\nexport const IOS_CLASS = `__NAMESPACE_PREFIX__-iOS`\nexport const ACTIVE_CLASS = `__NAMESPACE_PREFIX__-active`\nexport const POPPER_CLASS = `__NAMESPACE_PREFIX__-popper`\nexport const TOOLTIP_CLASS = `__NAMESPACE_PREFIX__-tooltip`\nexport const CONTENT_CLASS = `__NAMESPACE_PREFIX__-content`\nexport const BACKDROP_CLASS = `__NAMESPACE_PREFIX__-backdrop`\nexport const ARROW_CLASS = `__NAMESPACE_PREFIX__-arrow`\nexport const ROUND_ARROW_CLASS = `__NAMESPACE_PREFIX__-roundarrow`\n\n// Selectors\nexport const POPPER_SELECTOR = `.${POPPER_CLASS}`\nexport const TOOLTIP_SELECTOR = `.${TOOLTIP_CLASS}`\nexport const CONTENT_SELECTOR = `.${CONTENT_CLASS}`\nexport const BACKDROP_SELECTOR = `.${BACKDROP_CLASS}`\nexport const ARROW_SELECTOR = `.${ARROW_CLASS}`\nexport const ROUND_ARROW_SELECTOR = `.${ROUND_ARROW_CLASS}`\n","import { isIOS } from './browser'\nimport { PASSIVE, IOS_CLASS } from './constants'\n\nexport let isUsingTouch = false\n\nexport function onDocumentTouch(): void {\n  if (isUsingTouch) {\n    return\n  }\n\n  isUsingTouch = true\n\n  if (isIOS) {\n    document.body.classList.add(IOS_CLASS)\n  }\n\n  if (window.performance) {\n    document.addEventListener('mousemove', onDocumentMouseMove)\n  }\n}\n\nlet lastMouseMoveTime = 0\nexport function onDocumentMouseMove(): void {\n  const now = performance.now()\n\n  // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference\n  if (now - lastMouseMoveTime < 20) {\n    isUsingTouch = false\n\n    document.removeEventListener('mousemove', onDocumentMouseMove)\n\n    if (!isIOS) {\n      document.body.classList.remove(IOS_CLASS)\n    }\n  }\n\n  lastMouseMoveTime = now\n}\n\nexport function onWindowBlur(): void {\n  const { activeElement }: { activeElement: any } = document\n\n  if (activeElement && activeElement.blur && activeElement._tippy) {\n    activeElement.blur()\n  }\n}\n\n/**\n * Adds the needed global event listeners\n */\nexport default function bindGlobalEventListeners(): void {\n  document.addEventListener('touchstart', onDocumentTouch, PASSIVE)\n  window.addEventListener('blur', onWindowBlur)\n}\n","import { Props, VirtualReference, ReferenceElement } from './types'\nimport { defaultProps } from './props'\n\nconst keys = Object.keys(defaultProps)\n\n/**\n * Returns an object of optional props from data-tippy-* attributes\n */\nexport function getDataAttributeOptions(\n  reference: ReferenceElement | VirtualReference,\n): Props {\n  return keys.reduce((acc: any, key) => {\n    const valueAsString = (\n      reference.getAttribute(`data-tippy-${key}`) || ''\n    ).trim()\n\n    if (!valueAsString) {\n      return acc\n    }\n\n    if (key === 'content') {\n      acc[key] = valueAsString\n    } else {\n      try {\n        acc[key] = JSON.parse(valueAsString)\n      } catch (e) {\n        acc[key] = valueAsString\n      }\n    }\n\n    return acc\n  }, {})\n}\n\n/**\n * Polyfills the virtual reference (plain object) with Element.prototype props\n * Mutating because DOM elements are mutated, adds `_tippy` property\n */\nexport function polyfillElementPrototypeProperties(\n  virtualReference: VirtualReference & Record<string, any>,\n): void {\n  const polyfills: Record<string, any> = {\n    isVirtual: true,\n    attributes: virtualReference.attributes || {},\n    contains() {},\n    setAttribute(key: string, value: any) {\n      virtualReference.attributes[key] = value\n    },\n    getAttribute(key: string) {\n      return virtualReference.attributes[key]\n    },\n    removeAttribute(key: string) {\n      delete virtualReference.attributes[key]\n    },\n    hasAttribute(key: string) {\n      return key in virtualReference.attributes\n    },\n    addEventListener() {},\n    removeEventListener() {},\n    classList: {\n      classNames: {},\n      add(key: string) {\n        virtualReference.classList.classNames[key] = true\n      },\n      remove(key: string) {\n        delete virtualReference.classList.classNames[key]\n      },\n      contains(key: string) {\n        return key in virtualReference.classList.classNames\n      },\n    },\n  }\n\n  for (const key in polyfills) {\n    virtualReference[key] = polyfills[key]\n  }\n}\n","import {\n  Options,\n  Props,\n  ReferenceElement,\n  Targets,\n  VirtualReference,\n} from './types'\nimport { arrayFrom, matches } from './ponyfills'\nimport { isUCBrowser } from './browser'\nimport { getDataAttributeOptions } from './reference'\nimport { POPPER_SELECTOR } from './constants'\n\n/**\n * Determines if a value is a \"bare\" virtual element (before mutations done\n * by `polyfillElementPrototypeProperties()`). JSDOM elements show up as\n * [object Object], we can check if the value is \"element-like\" if it has\n * `addEventListener`\n */\nexport function isBareVirtualElement(value: any): boolean {\n  return (\n    {}.toString.call(value) === '[object Object]' && !value.addEventListener\n  )\n}\n\n/**\n * Determines if the value is a reference element\n */\nexport function isReferenceElement(value: any): value is ReferenceElement {\n  return !!value._tippy && !matches.call(value, POPPER_SELECTOR)\n}\n\n/**\n * Safe .hasOwnProperty check, for prototype-less objects\n */\nexport function hasOwnProperty(obj: object, key: string): boolean {\n  return {}.hasOwnProperty.call(obj, key)\n}\n\n/**\n * Returns an array of elements based on the value\n */\nexport function getArrayOfElements(value: Targets): Element[] {\n  if (isSingular(value)) {\n    // TODO: VirtualReference is not compatible to type Element\n    return [value as Element]\n  }\n\n  if (value instanceof NodeList) {\n    return arrayFrom(value)\n  }\n\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  try {\n    return arrayFrom(document.querySelectorAll(value))\n  } catch (e) {\n    return []\n  }\n}\n\n/**\n * Returns a value at a given index depending on if it's an array or number\n */\nexport function getValue(value: any, index: number, defaultValue: any): any {\n  if (Array.isArray(value)) {\n    const v = value[index]\n    return v == null ? defaultValue : v\n  }\n\n  return value\n}\n\n/**\n * Debounce utility. To avoid bloating bundle size, we're only passing 1\n * argument here, a more generic function would pass all arguments. Only\n * `onMouseMove` uses this which takes the event object for now.\n */\nexport function debounce<T>(\n  fn: (arg: T) => void,\n  ms: number,\n): (arg: T) => void {\n  // Avoid wrapping in `setTimeout` if ms is 0 anyway\n  if (ms === 0) {\n    return fn\n  }\n\n  let timeout: any\n\n  return (arg): void => {\n    clearTimeout(timeout)\n    timeout = setTimeout((): void => {\n      fn(arg)\n    }, ms)\n  }\n}\n\n/**\n * Prevents errors from being thrown while accessing nested modifier objects\n * in `popperOptions`\n */\nexport function getModifier(obj: any, key: string): any {\n  return obj && obj.modifiers && obj.modifiers[key]\n}\n\n/**\n * Determines if an array or string includes a value\n */\nexport function includes(a: any[] | string, b: any): boolean {\n  return a.indexOf(b) > -1\n}\n\n/**\n * Determines if the value is a real element\n */\nexport function isRealElement(value: any): value is Element {\n  return value instanceof Element\n}\n\n/**\n * Determines if the value is singular-like\n */\nexport function isSingular(value: any): value is VirtualReference | Element {\n  return !!(value && hasOwnProperty(value, 'isVirtual')) || isRealElement(value)\n}\n\n/**\n * Firefox extensions don't allow setting .innerHTML directly, this will trick it\n */\nexport function innerHTML(): 'innerHTML' {\n  return 'innerHTML'\n}\n\n/**\n * Evaluates a function if one, or returns the value\n */\nexport function invokeWithArgsOrReturn(value: any, args: any[]): any {\n  return typeof value === 'function' ? value.apply(null, args) : value\n}\n\n/**\n * Sets a popperInstance `flip` modifier's enabled state\n */\nexport function setFlipModifierEnabled(modifiers: any[], value: any): void {\n  modifiers.filter(m => m.name === 'flip')[0].enabled = value\n}\n\n/**\n * Determines if an element can receive focus\n * Always returns true for virtual objects\n */\nexport function canReceiveFocus(element: Element | VirtualReference): boolean {\n  return isRealElement(element)\n    ? matches.call(\n        element,\n        'a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]',\n      ) && !element.hasAttribute('disabled')\n    : true\n}\n\n/**\n * Returns a new `div` element\n */\nexport function div(): HTMLDivElement {\n  return document.createElement('div')\n}\n\n/**\n * Applies a transition duration to a list of elements\n */\nexport function setTransitionDuration(\n  els: (HTMLDivElement | null)[],\n  value: number,\n): void {\n  els.forEach(el => {\n    if (el) {\n      el.style.transitionDuration = `${value}ms`\n    }\n  })\n}\n\n/**\n * Sets the visibility state to elements so they can begin to transition\n */\nexport function setVisibilityState(\n  els: (HTMLDivElement | null)[],\n  state: 'visible' | 'hidden',\n): void {\n  els.forEach(el => {\n    if (el) {\n      el.setAttribute('data-state', state)\n    }\n  })\n}\n\n/**\n * Evaluates the props object by merging data attributes and\n * disabling conflicting options where necessary\n */\nexport function evaluateProps(\n  reference: ReferenceElement | VirtualReference,\n  props: Props,\n): Props {\n  const out = {\n    ...props,\n    content: invokeWithArgsOrReturn(props.content, [reference]),\n    ...(props.ignoreAttributes ? {} : getDataAttributeOptions(reference)),\n  }\n\n  if (out.arrow || isUCBrowser) {\n    out.animateFill = false\n  }\n\n  return out\n}\n\n/**\n * Validates an object of options with the valid default props object\n */\nexport function validateOptions(options: Options, defaultProps: Props): void {\n  Object.keys(options).forEach(option => {\n    if (!hasOwnProperty(defaultProps, option)) {\n      throw new Error(`[tippy]: \\`${option}\\` is not a valid option`)\n    }\n  })\n}\n","import {\n  PopperElement,\n  Props,\n  PopperChildren,\n  HideAllOptions,\n  BasicPlacement,\n} from './types'\nimport { arrayFrom } from './ponyfills'\nimport { innerHTML, div, isReferenceElement, isRealElement } from './utils'\nimport { isUCBrowser } from './browser'\nimport {\n  POPPER_CLASS,\n  TOOLTIP_CLASS,\n  BACKDROP_CLASS,\n  CONTENT_CLASS,\n  ARROW_CLASS,\n  ROUND_ARROW_CLASS,\n  POPPER_SELECTOR,\n  TOOLTIP_SELECTOR,\n  BACKDROP_SELECTOR,\n  CONTENT_SELECTOR,\n  ARROW_SELECTOR,\n  ROUND_ARROW_SELECTOR,\n  PLACEMENT_ATTRIBUTE,\n} from './constants'\n\n/**\n * Sets the innerHTML of an element\n */\nexport function setInnerHTML(element: Element, html: string | Element): void {\n  element[innerHTML()] = isRealElement(html) ? html[innerHTML()] : html\n}\n\n/**\n * Sets the content of a tooltip\n */\nexport function setContent(\n  contentEl: PopperChildren['content'],\n  props: Props,\n): void {\n  if (isRealElement(props.content)) {\n    setInnerHTML(contentEl, '')\n    contentEl.appendChild(props.content)\n  } else if (typeof props.content !== 'function') {\n    const key: 'innerHTML' | 'textContent' = props.allowHTML\n      ? 'innerHTML'\n      : 'textContent'\n    contentEl[key] = props.content\n  }\n}\n\n/**\n * Returns the child elements of a popper element\n */\nexport function getChildren(popper: PopperElement): PopperChildren {\n  return {\n    tooltip: popper.querySelector(TOOLTIP_SELECTOR) as HTMLDivElement,\n    backdrop: popper.querySelector(BACKDROP_SELECTOR),\n    content: popper.querySelector(CONTENT_SELECTOR) as HTMLDivElement,\n    arrow:\n      popper.querySelector(ARROW_SELECTOR) ||\n      popper.querySelector(ROUND_ARROW_SELECTOR),\n  }\n}\n\n/**\n * Adds `data-inertia` attribute\n */\nexport function addInertia(tooltip: PopperChildren['tooltip']): void {\n  tooltip.setAttribute('data-inertia', '')\n}\n\n/**\n * Removes `data-inertia` attribute\n */\nexport function removeInertia(tooltip: PopperChildren['tooltip']): void {\n  tooltip.removeAttribute('data-inertia')\n}\n\n/**\n * Creates an arrow element and returns it\n */\nexport function createArrowElement(\n  arrowType: Props['arrowType'],\n): HTMLDivElement {\n  const arrow = div()\n  if (arrowType === 'round') {\n    arrow.className = ROUND_ARROW_CLASS\n    setInnerHTML(\n      arrow,\n      '<svg viewBox=\"0 0 18 7\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 7s2.021-.015 5.253-4.218C6.584 1.051 7.797.007 9 0c1.203-.007 2.416 1.035 3.761 2.782C16.012 7.005 18 7 18 7H0z\"/></svg>',\n    )\n  } else {\n    arrow.className = ARROW_CLASS\n  }\n  return arrow\n}\n\n/**\n * Creates a backdrop element and returns it\n */\nexport function createBackdropElement(): HTMLDivElement {\n  const backdrop = div()\n  backdrop.className = BACKDROP_CLASS\n  backdrop.setAttribute('data-state', 'hidden')\n  return backdrop\n}\n\n/**\n * Adds interactive-related attributes\n */\nexport function addInteractive(\n  popper: PopperElement,\n  tooltip: PopperChildren['tooltip'],\n): void {\n  popper.setAttribute('tabindex', '-1')\n  tooltip.setAttribute('data-interactive', '')\n}\n\n/**\n * Removes interactive-related attributes\n */\nexport function removeInteractive(\n  popper: PopperElement,\n  tooltip: PopperChildren['tooltip'],\n): void {\n  popper.removeAttribute('tabindex')\n  tooltip.removeAttribute('data-interactive')\n}\n\n/**\n * Add/remove transitionend listener from tooltip\n */\nexport function updateTransitionEndListener(\n  tooltip: PopperChildren['tooltip'],\n  action: 'add' | 'remove',\n  listener: (event: TransitionEvent) => void,\n): void {\n  // UC Browser hasn't adopted the `transitionend` event despite supporting\n  // unprefixed transitions...\n  const eventName =\n    isUCBrowser && document.body.style.webkitTransition !== undefined\n      ? 'webkitTransitionEnd'\n      : 'transitionend'\n  tooltip[\n    (action + 'EventListener') as 'addEventListener' | 'removeEventListener'\n  ](eventName, listener as EventListener)\n}\n\n/**\n * Returns the popper's placement, ignoring shifting (top-start, etc)\n */\nexport function getBasicPlacement(popper: PopperElement): BasicPlacement {\n  const fullPlacement = popper.getAttribute(PLACEMENT_ATTRIBUTE)\n  return (fullPlacement ? fullPlacement.split('-')[0] : '') as BasicPlacement\n}\n\n/**\n * Triggers reflow\n */\nexport function reflow(popper: PopperElement): void {\n  void popper.offsetHeight\n}\n\n/**\n * Adds/removes theme from tooltip's classList\n */\nexport function updateTheme(\n  tooltip: PopperChildren['tooltip'],\n  action: 'add' | 'remove',\n  theme: Props['theme'],\n): void {\n  theme.split(' ').forEach(themeName => {\n    tooltip.classList[action](themeName + '-theme')\n  })\n}\n\n/**\n * Constructs the popper element and returns it\n */\nexport function createPopperElement(id: number, props: Props): PopperElement {\n  const popper = div()\n  popper.className = POPPER_CLASS\n  popper.id = `__NAMESPACE_PREFIX__-${id}`\n  popper.style.zIndex = '' + props.zIndex\n  popper.style.position = 'absolute'\n  popper.style.top = '0'\n  popper.style.left = '0'\n\n  if (props.role) {\n    popper.setAttribute('role', props.role)\n  }\n\n  const tooltip = div()\n  tooltip.className = TOOLTIP_CLASS\n  tooltip.style.maxWidth =\n    props.maxWidth + (typeof props.maxWidth === 'number' ? 'px' : '')\n  tooltip.setAttribute('data-size', props.size)\n  tooltip.setAttribute('data-animation', props.animation)\n  tooltip.setAttribute('data-state', 'hidden')\n  updateTheme(tooltip, 'add', props.theme)\n\n  const content = div()\n  content.className = CONTENT_CLASS\n  content.setAttribute('data-state', 'hidden')\n\n  if (props.interactive) {\n    addInteractive(popper, tooltip)\n  }\n\n  if (props.arrow) {\n    tooltip.appendChild(createArrowElement(props.arrowType))\n  }\n\n  if (props.animateFill) {\n    tooltip.appendChild(createBackdropElement())\n    tooltip.setAttribute('data-animatefill', '')\n  }\n\n  if (props.inertia) {\n    addInertia(tooltip)\n  }\n\n  setContent(content, props)\n\n  tooltip.appendChild(content)\n  popper.appendChild(tooltip)\n\n  return popper\n}\n\n/**\n * Updates the popper element based on the new props\n */\nexport function updatePopperElement(\n  popper: PopperElement,\n  prevProps: Props,\n  nextProps: Props,\n): void {\n  const { tooltip, content, backdrop, arrow } = getChildren(popper)\n\n  popper.style.zIndex = '' + nextProps.zIndex\n  tooltip.setAttribute('data-size', nextProps.size)\n  tooltip.setAttribute('data-animation', nextProps.animation)\n  tooltip.style.maxWidth =\n    nextProps.maxWidth + (typeof nextProps.maxWidth === 'number' ? 'px' : '')\n\n  if (nextProps.role) {\n    popper.setAttribute('role', nextProps.role)\n  } else {\n    popper.removeAttribute('role')\n  }\n\n  if (prevProps.content !== nextProps.content) {\n    setContent(content, nextProps)\n  }\n\n  // animateFill\n  if (!prevProps.animateFill && nextProps.animateFill) {\n    tooltip.appendChild(createBackdropElement())\n    tooltip.setAttribute('data-animatefill', '')\n  } else if (prevProps.animateFill && !nextProps.animateFill) {\n    tooltip.removeChild(backdrop!)\n    tooltip.removeAttribute('data-animatefill')\n  }\n\n  // arrow\n  if (!prevProps.arrow && nextProps.arrow) {\n    tooltip.appendChild(createArrowElement(nextProps.arrowType))\n  } else if (prevProps.arrow && !nextProps.arrow) {\n    tooltip.removeChild(arrow!)\n  }\n\n  // arrowType\n  if (\n    prevProps.arrow &&\n    nextProps.arrow &&\n    prevProps.arrowType !== nextProps.arrowType\n  ) {\n    tooltip.replaceChild(createArrowElement(nextProps.arrowType), arrow!)\n  }\n\n  // interactive\n  if (!prevProps.interactive && nextProps.interactive) {\n    addInteractive(popper, tooltip)\n  } else if (prevProps.interactive && !nextProps.interactive) {\n    removeInteractive(popper, tooltip)\n  }\n\n  // inertia\n  if (!prevProps.inertia && nextProps.inertia) {\n    addInertia(tooltip)\n  } else if (prevProps.inertia && !nextProps.inertia) {\n    removeInertia(tooltip)\n  }\n\n  // theme\n  if (prevProps.theme !== nextProps.theme) {\n    updateTheme(tooltip, 'remove', prevProps.theme)\n    updateTheme(tooltip, 'add', nextProps.theme)\n  }\n}\n\n/**\n * Hides all visible poppers on the document\n */\nexport function hideAll({\n  exclude: excludedReferenceOrInstance,\n  duration,\n}: HideAllOptions = {}): void {\n  arrayFrom(document.querySelectorAll(POPPER_SELECTOR)).forEach(\n    (popper: PopperElement) => {\n      const instance = popper._tippy\n\n      if (instance) {\n        let isExcluded = false\n        if (excludedReferenceOrInstance) {\n          isExcluded = isReferenceElement(excludedReferenceOrInstance)\n            ? instance.reference === excludedReferenceOrInstance\n            : popper === excludedReferenceOrInstance.popper\n        }\n\n        if (!isExcluded) {\n          instance.hide(duration)\n        }\n      }\n    },\n  )\n}\n\n/**\n * Determines if the mouse cursor is outside of the popper's interactive border\n * region\n */\nexport function isCursorOutsideInteractiveBorder(\n  popperPlacement: BasicPlacement,\n  popperRect: ClientRect,\n  event: MouseEvent,\n  props: Props,\n): boolean {\n  if (!popperPlacement) {\n    return true\n  }\n\n  const { clientX: x, clientY: y } = event\n  const { interactiveBorder, distance } = props\n\n  const exceedsTop =\n    popperRect.top - y >\n    (popperPlacement === 'top'\n      ? interactiveBorder + distance\n      : interactiveBorder)\n\n  const exceedsBottom =\n    y - popperRect.bottom >\n    (popperPlacement === 'bottom'\n      ? interactiveBorder + distance\n      : interactiveBorder)\n\n  const exceedsLeft =\n    popperRect.left - x >\n    (popperPlacement === 'left'\n      ? interactiveBorder + distance\n      : interactiveBorder)\n\n  const exceedsRight =\n    x - popperRect.right >\n    (popperPlacement === 'right'\n      ? interactiveBorder + distance\n      : interactiveBorder)\n\n  return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight\n}\n\n/**\n * Returns the distance offset, taking into account the default offset due to\n * the transform: translate() rule (10px) in CSS\n */\nexport function getOffsetDistanceInPx(distance: number): string {\n  return -(distance - 10) + 'px'\n}\n","import Popper from 'popper.js'\nimport {\n  ReferenceElement,\n  PopperInstance,\n  Props,\n  Options,\n  Instance,\n  Content,\n  Listener,\n  VirtualReference,\n} from './types'\nimport { isIE } from './browser'\nimport { closest, closestCallback, arrayFrom } from './ponyfills'\nimport {\n  PASSIVE,\n  PADDING,\n  PLACEMENT_ATTRIBUTE,\n  OUT_OF_BOUNDARIES_ATTRIBUTE,\n  ACTIVE_CLASS,\n  POPPER_SELECTOR,\n} from './constants'\nimport { isUsingTouch } from './bindGlobalEventListeners'\nimport { defaultProps, POPPER_INSTANCE_DEPENDENCIES } from './props'\nimport {\n  createPopperElement,\n  updatePopperElement,\n  getChildren,\n  getBasicPlacement,\n  updateTransitionEndListener,\n  isCursorOutsideInteractiveBorder,\n  getOffsetDistanceInPx,\n  reflow,\n} from './popper'\nimport {\n  hasOwnProperty,\n  debounce,\n  getValue,\n  getModifier,\n  includes,\n  invokeWithArgsOrReturn,\n  setFlipModifierEnabled,\n  canReceiveFocus,\n  validateOptions,\n  evaluateProps,\n  setTransitionDuration,\n  setVisibilityState,\n  isRealElement,\n} from './utils'\n\nlet idCounter = 1\n// Workaround for IE11's lack of new MouseEvent constructor\nlet mouseMoveListeners: ((event: MouseEvent) => void)[] = []\n\n/**\n * Creates and returns a Tippy object. We're using a closure pattern instead of\n * a class so that the exposed object API is clean without private members\n * prefixed with `_`.\n */\nexport default function createTippy(\n  reference: ReferenceElement | VirtualReference,\n  collectionProps: Props,\n): Instance | null {\n  const props = evaluateProps(reference, collectionProps)\n\n  // If the reference shouldn't have multiple tippys, return null early\n  if (!props.multiple && reference._tippy) {\n    return null\n  }\n\n  /* ======================= 馃敀 Private members 馃敀 ======================= */\n  let lastTriggerEventType: string\n  let lastMouseMoveEvent: MouseEvent\n  let showTimeoutId: number\n  let hideTimeoutId: number\n  let scheduleHideAnimationFrameId: number\n  let isScheduledToShow = false\n  let isBeingDestroyed = false\n  let previousPlacement: string\n  let wasVisibleDuringPreviousUpdate = false\n  let hasMountCallbackRun = false\n  let currentMountCallback: () => void\n  let currentTransitionEndListener: (event: TransitionEvent) => void\n  let listeners: Listener[] = []\n  let currentComputedPadding: {\n    top: number\n    bottom: number\n    left: number\n    right: number\n    [key: string]: number\n  }\n  let debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce)\n\n  /* ======================= 馃攽 Public members 馃攽 ======================= */\n  const id = idCounter++\n  const popper = createPopperElement(id, props)\n  const popperChildren = getChildren(popper)\n  const popperInstance: PopperInstance | null = null\n\n  const state = {\n    // Is the instance currently enabled?\n    isEnabled: true,\n    // Is the tippy currently showing and not transitioning out?\n    isVisible: false,\n    // Has the instance been destroyed?\n    isDestroyed: false,\n    // Is the tippy currently mounted to the DOM?\n    isMounted: false,\n    // Has the tippy finished transitioning in?\n    isShown: false,\n  }\n\n  const instance: Instance = {\n    // properties\n    id,\n    reference,\n    popper,\n    popperChildren,\n    popperInstance,\n    props,\n    state,\n    // methods\n    clearDelayTimeouts,\n    set,\n    setContent,\n    show,\n    hide,\n    enable,\n    disable,\n    destroy,\n  }\n\n  /* ==================== Initial instance mutations =================== */\n  reference._tippy = instance\n  popper._tippy = instance\n\n  addTriggersToReference()\n\n  if (!props.lazy) {\n    createPopperInstance()\n  }\n\n  if (props.showOnInit) {\n    scheduleShow()\n  }\n\n  // Ensure the event listeners target can receive focus\n  if (\n    props.a11y &&\n    !props.target &&\n    !canReceiveFocus(getEventListenersTarget())\n  ) {\n    getEventListenersTarget().setAttribute('tabindex', '0')\n  }\n\n  // Prevent a tippy with a delay from hiding if the cursor left then returned\n  // before it started hiding\n  popper.addEventListener('mouseenter', (event: MouseEvent) => {\n    if (\n      instance.props.interactive &&\n      instance.state.isVisible &&\n      lastTriggerEventType === 'mouseenter'\n    ) {\n      // We don't want props.onTrigger() to be called here, since the `event`\n      // object is not related to the reference element\n      scheduleShow(event, true)\n    }\n  })\n  popper.addEventListener('mouseleave', () => {\n    if (instance.props.interactive && lastTriggerEventType === 'mouseenter') {\n      document.addEventListener('mousemove', debouncedOnMouseMove)\n    }\n  })\n\n  return instance\n\n  /* ======================= 馃敀 Private methods 馃敀 ======================= */\n  /**\n   * Removes the follow cursor listener\n   */\n  function removeFollowCursorListener(): void {\n    document.removeEventListener(\n      'mousemove',\n      positionVirtualReferenceNearCursor,\n    )\n  }\n\n  /**\n   * Cleans up interactive mouse listeners\n   */\n  function cleanupInteractiveMouseListeners(): void {\n    document.body.removeEventListener('mouseleave', scheduleHide)\n    document.removeEventListener('mousemove', debouncedOnMouseMove)\n    mouseMoveListeners = mouseMoveListeners.filter(\n      (listener): boolean => listener !== debouncedOnMouseMove,\n    )\n  }\n\n  /**\n   * Returns correct target used for event listeners\n   */\n  function getEventListenersTarget(): ReferenceElement | VirtualReference {\n    return instance.props.triggerTarget || reference\n  }\n\n  /**\n   * Adds the document click event listener for the instance\n   */\n  function addDocumentClickListener(): void {\n    document.addEventListener('click', onDocumentClick, true)\n  }\n\n  /**\n   * Removes the document click event listener for the instance\n   */\n  function removeDocumentClickListener(): void {\n    document.removeEventListener('click', onDocumentClick, true)\n  }\n\n  /**\n   * Returns transitionable inner elements used in show/hide methods\n   */\n  function getTransitionableElements(): (HTMLDivElement | null)[] {\n    return [\n      instance.popperChildren.tooltip,\n      instance.popperChildren.backdrop,\n      instance.popperChildren.content,\n    ]\n  }\n\n  /**\n   * Determines if the instance is in `followCursor` mode.\n   * NOTE: in v5, touch devices will use `initial` behavior no matter the value.\n   */\n  function getIsInLooseFollowCursorMode(): boolean {\n    const { followCursor } = instance.props\n    return (\n      (followCursor && lastTriggerEventType !== 'focus') ||\n      (isUsingTouch && followCursor === 'initial')\n    )\n  }\n\n  /**\n   * Updates the tooltip's position on each animation frame\n   */\n  function makeSticky(): void {\n    setTransitionDuration([popper], isIE ? 0 : instance.props.updateDuration)\n\n    let prevRefRect = reference.getBoundingClientRect()\n\n    function updatePosition(): void {\n      const currentRefRect = reference.getBoundingClientRect()\n\n      // Only schedule an update if the reference rect has changed\n      if (\n        prevRefRect.top !== currentRefRect.top ||\n        prevRefRect.right !== currentRefRect.right ||\n        prevRefRect.bottom !== currentRefRect.bottom ||\n        prevRefRect.left !== currentRefRect.left\n      ) {\n        instance.popperInstance!.scheduleUpdate()\n      }\n\n      prevRefRect = currentRefRect\n\n      if (instance.state.isMounted) {\n        requestAnimationFrame(updatePosition)\n      }\n    }\n\n    updatePosition()\n  }\n\n  /**\n   * Invokes a callback once the tooltip has fully transitioned out\n   */\n  function onTransitionedOut(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, () => {\n      if (\n        !instance.state.isVisible &&\n        popper.parentNode &&\n        popper.parentNode.contains(popper)\n      ) {\n        callback()\n      }\n    })\n  }\n\n  /**\n   * Invokes a callback once the tooltip has fully transitioned in\n   */\n  function onTransitionedIn(duration: number, callback: () => void): void {\n    onTransitionEnd(duration, callback)\n  }\n\n  /**\n   * Invokes a callback once the tooltip's CSS transition ends\n   */\n  function onTransitionEnd(duration: number, callback: () => void): void {\n    const { tooltip } = instance.popperChildren\n\n    /**\n     * Listener added as the `transitionend` handler\n     */\n    function listener(event: TransitionEvent): void {\n      if (event.target === tooltip) {\n        updateTransitionEndListener(tooltip, 'remove', listener)\n        callback()\n      }\n    }\n\n    // Make callback synchronous if duration is 0\n    // `transitionend` won't fire otherwise\n    if (duration === 0) {\n      return callback()\n    }\n\n    updateTransitionEndListener(tooltip, 'remove', currentTransitionEndListener)\n    updateTransitionEndListener(tooltip, 'add', listener)\n\n    currentTransitionEndListener = listener\n  }\n\n  /**\n   * Adds an event listener to the reference and stores it in `listeners`\n   */\n  function on(\n    eventType: string,\n    handler: EventListener,\n    options: boolean | object = false,\n  ): void {\n    getEventListenersTarget().addEventListener(eventType, handler, options)\n    listeners.push({ eventType, handler, options })\n  }\n\n  /**\n   * Adds event listeners to the reference based on the `trigger` prop\n   */\n  function addTriggersToReference(): void {\n    if (instance.props.touchHold && !instance.props.target) {\n      on('touchstart', onTrigger, PASSIVE)\n      on('touchend', onMouseLeave as EventListener, PASSIVE)\n    }\n\n    instance.props.trigger\n      .trim()\n      .split(' ')\n      .forEach(eventType => {\n        if (eventType === 'manual') {\n          return\n        }\n\n        // Non-delegates\n        if (!instance.props.target) {\n          on(eventType, onTrigger)\n          switch (eventType) {\n            case 'mouseenter':\n              on('mouseleave', onMouseLeave as EventListener)\n              break\n            case 'focus':\n              on(isIE ? 'focusout' : 'blur', onBlur as EventListener)\n              break\n          }\n        } else {\n          // Delegates\n          switch (eventType) {\n            case 'mouseenter':\n              on('mouseover', onDelegateShow)\n              on('mouseout', onDelegateHide)\n              break\n            case 'focus':\n              on('focusin', onDelegateShow)\n              on('focusout', onDelegateHide)\n              break\n            case 'click':\n              on(eventType, onDelegateShow)\n              break\n          }\n        }\n      })\n  }\n\n  /**\n   * Removes event listeners from the reference\n   */\n  function removeTriggersFromReference(): void {\n    listeners.forEach(({ eventType, handler, options }: Listener) => {\n      getEventListenersTarget().removeEventListener(eventType, handler, options)\n    })\n    listeners = []\n  }\n\n  /**\n   * Positions the virtual reference near the cursor\n   */\n  function positionVirtualReferenceNearCursor(event: MouseEvent): void {\n    const { clientX: x, clientY: y } = (lastMouseMoveEvent = event)\n\n    // Gets set once popperInstance `onCreate` has been called\n    if (!currentComputedPadding) {\n      return\n    }\n\n    // If the instance is interactive, avoid updating the position unless it's\n    // over the reference element\n    const isCursorOverReference = closestCallback(\n      event.target as Element,\n      (el: Element): boolean => el === reference,\n    )\n\n    const rect = reference.getBoundingClientRect()\n    const { followCursor } = instance.props\n    const isHorizontal = followCursor === 'horizontal'\n    const isVertical = followCursor === 'vertical'\n\n    // The virtual reference needs some size to prevent itself from overflowing\n    const isVerticalPlacement = includes(\n      ['top', 'bottom'],\n      getBasicPlacement(popper),\n    )\n    const fullPlacement = popper.getAttribute(PLACEMENT_ATTRIBUTE)\n    const isVariation = fullPlacement ? !!fullPlacement.split('-')[1] : false\n    const size = isVerticalPlacement ? popper.offsetWidth : popper.offsetHeight\n    const halfSize = size / 2\n    const verticalIncrease = isVerticalPlacement\n      ? 0\n      : isVariation\n      ? size\n      : halfSize\n    const horizontalIncrease = isVerticalPlacement\n      ? isVariation\n        ? size\n        : halfSize\n      : 0\n\n    if (isCursorOverReference || !instance.props.interactive) {\n      instance.popperInstance!.reference = {\n        ...instance.popperInstance!.reference,\n        // This will exist in next Popper.js feature release to fix #532\n        // @ts-ignore\n        referenceNode: reference,\n        // These `client` values don't get used by Popper.js if they are 0\n        clientWidth: 0,\n        clientHeight: 0,\n        getBoundingClientRect: (): DOMRect | ClientRect => ({\n          width: isVerticalPlacement ? size : 0,\n          height: isVerticalPlacement ? 0 : size,\n          top: (isHorizontal ? rect.top : y) - verticalIncrease,\n          bottom: (isHorizontal ? rect.bottom : y) + verticalIncrease,\n          left: (isVertical ? rect.left : x) - horizontalIncrease,\n          right: (isVertical ? rect.right : x) + horizontalIncrease,\n        }),\n      }\n\n      instance.popperInstance!.update()\n    }\n\n    if (followCursor === 'initial' && instance.state.isVisible) {\n      removeFollowCursorListener()\n    }\n  }\n\n  /**\n   * Creates the tippy instance for a delegate when it's been triggered\n   */\n  function createDelegateChildTippy(event?: Event): void {\n    if (event) {\n      const targetEl: ReferenceElement | null = closest(\n        event.target as Element,\n        instance.props.target,\n      )\n\n      if (targetEl && !targetEl._tippy) {\n        createTippy(targetEl, {\n          ...instance.props,\n          content: invokeWithArgsOrReturn(collectionProps.content, [targetEl]),\n          appendTo: collectionProps.appendTo,\n          target: '',\n          showOnInit: true,\n        })\n      }\n    }\n  }\n\n  /**\n   * Event listener invoked upon trigger\n   */\n  function onTrigger(event: Event): void {\n    if (!instance.state.isEnabled || isEventListenerStopped(event)) {\n      return\n    }\n\n    if (!instance.state.isVisible) {\n      lastTriggerEventType = event.type\n\n      if (event instanceof MouseEvent) {\n        lastMouseMoveEvent = event\n\n        // If scrolling, `mouseenter` events can be fired if the cursor lands\n        // over a new target, but `mousemove` events don't get fired. This\n        // causes interactive tooltips to get stuck open until the cursor is\n        // moved\n        mouseMoveListeners.forEach((listener): void => listener(event))\n      }\n    }\n\n    // Toggle show/hide when clicking click-triggered tooltips\n    if (\n      event.type === 'click' &&\n      instance.props.hideOnClick !== false &&\n      instance.state.isVisible\n    ) {\n      scheduleHide()\n    } else {\n      scheduleShow(event)\n    }\n  }\n\n  /**\n   * Event listener used for interactive tooltips to detect when they should\n   * hide\n   */\n  function onMouseMove(event: MouseEvent): void {\n    const isCursorOverPopper =\n      closest(event.target as Element, POPPER_SELECTOR) === popper\n    const isCursorOverReference = closestCallback(\n      event.target as Element,\n      (el: Element) => el === reference,\n    )\n\n    if (isCursorOverPopper || isCursorOverReference) {\n      return\n    }\n\n    if (\n      isCursorOutsideInteractiveBorder(\n        getBasicPlacement(popper),\n        popper.getBoundingClientRect(),\n        event,\n        instance.props,\n      )\n    ) {\n      cleanupInteractiveMouseListeners()\n      scheduleHide()\n    }\n  }\n\n  /**\n   * Event listener invoked upon mouseleave\n   */\n  function onMouseLeave(event: MouseEvent): void {\n    if (isEventListenerStopped(event)) {\n      return\n    }\n\n    if (instance.props.interactive) {\n      document.body.addEventListener('mouseleave', scheduleHide)\n      document.addEventListener('mousemove', debouncedOnMouseMove)\n      mouseMoveListeners.push(debouncedOnMouseMove)\n\n      return\n    }\n\n    scheduleHide()\n  }\n\n  /**\n   * Event listener invoked upon blur\n   */\n  function onBlur(event: FocusEvent): void {\n    if (event.target !== getEventListenersTarget()) {\n      return\n    }\n\n    if (\n      instance.props.interactive &&\n      event.relatedTarget &&\n      popper.contains(event.relatedTarget as Element)\n    ) {\n      return\n    }\n\n    scheduleHide()\n  }\n\n  /**\n   * Event listener invoked when a child target is triggered\n   */\n  function onDelegateShow(event: Event): void {\n    if (closest(event.target as Element, instance.props.target)) {\n      scheduleShow(event)\n    }\n  }\n\n  /**\n   * Event listener invoked when a child target should hide\n   */\n  function onDelegateHide(event: Event): void {\n    if (closest(event.target as Element, instance.props.target)) {\n      scheduleHide()\n    }\n  }\n\n  /**\n   * Determines if an event listener should stop further execution due to the\n   * `touchHold` option\n   */\n  function isEventListenerStopped(event: Event): boolean {\n    const supportsTouch = 'ontouchstart' in window\n    const isTouchEvent = includes(event.type, 'touch')\n    const { touchHold } = instance.props\n\n    return (\n      (supportsTouch && isUsingTouch && touchHold && !isTouchEvent) ||\n      (isUsingTouch && !touchHold && isTouchEvent)\n    )\n  }\n\n  /**\n   * Runs the mount callback\n   */\n  function runMountCallback(): void {\n    if (!hasMountCallbackRun && currentMountCallback) {\n      hasMountCallbackRun = true\n      reflow(popper)\n      currentMountCallback()\n    }\n  }\n\n  /**\n   * Creates the popper instance for the instance\n   */\n  function createPopperInstance(): void {\n    const { popperOptions } = instance.props\n    const { tooltip, arrow } = instance.popperChildren\n    const preventOverflowModifier = getModifier(\n      popperOptions,\n      'preventOverflow',\n    )\n\n    function applyMutations(data: Popper.Data): void {\n      if (instance.props.flip && !instance.props.flipOnUpdate) {\n        if (data.flipped) {\n          instance.popperInstance!.options.placement = data.placement\n        }\n\n        setFlipModifierEnabled(instance.popperInstance!.modifiers, false)\n      }\n\n      // Apply all of the popper's attributes to the tootip node as well.\n      // Allows users to avoid using the .tippy-popper selector for themes.\n      tooltip.setAttribute(PLACEMENT_ATTRIBUTE, data.placement)\n\n      if (data.attributes[OUT_OF_BOUNDARIES_ATTRIBUTE] !== false) {\n        tooltip.setAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE, '')\n      } else {\n        tooltip.removeAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE)\n      }\n\n      // Prevents a transition when changing placements (while tippy is visible)\n      // for scroll/resize updates\n      if (\n        previousPlacement &&\n        previousPlacement !== data.placement &&\n        wasVisibleDuringPreviousUpdate\n      ) {\n        tooltip.style.transition = 'none'\n        requestAnimationFrame(() => {\n          tooltip.style.transition = ''\n        })\n      }\n      previousPlacement = data.placement\n      wasVisibleDuringPreviousUpdate = instance.state.isVisible\n\n      const basicPlacement = getBasicPlacement(popper)\n      const styles = tooltip.style\n\n      // Account for the `distance` offset\n      styles.top = styles.bottom = styles.left = styles.right = ''\n      styles[basicPlacement] = getOffsetDistanceInPx(instance.props.distance)\n\n      const padding =\n        preventOverflowModifier && preventOverflowModifier.padding !== undefined\n          ? preventOverflowModifier.padding\n          : PADDING\n      const isPaddingNumber = typeof padding === 'number'\n\n      const computedPadding = {\n        top: isPaddingNumber ? padding : padding.top,\n        bottom: isPaddingNumber ? padding : padding.bottom,\n        left: isPaddingNumber ? padding : padding.left,\n        right: isPaddingNumber ? padding : padding.right,\n        ...(!isPaddingNumber && padding),\n      }\n\n      computedPadding[basicPlacement] = isPaddingNumber\n        ? padding + instance.props.distance\n        : (padding[basicPlacement] || 0) + instance.props.distance\n\n      instance.popperInstance!.modifiers.filter(\n        m => m.name === 'preventOverflow',\n      )[0].padding = computedPadding\n\n      currentComputedPadding = computedPadding\n    }\n\n    const config = {\n      eventsEnabled: false,\n      placement: instance.props.placement,\n      ...popperOptions,\n      modifiers: {\n        ...(popperOptions ? popperOptions.modifiers : {}),\n        preventOverflow: {\n          boundariesElement: instance.props.boundary,\n          padding: PADDING,\n          ...preventOverflowModifier,\n        },\n        arrow: {\n          element: arrow,\n          enabled: !!arrow,\n          ...getModifier(popperOptions, 'arrow'),\n        },\n        flip: {\n          enabled: instance.props.flip,\n          // The tooltip is offset by 10px from the popper in CSS,\n          // we need to account for its distance\n          padding: instance.props.distance + PADDING,\n          behavior: instance.props.flipBehavior,\n          ...getModifier(popperOptions, 'flip'),\n        },\n        offset: {\n          offset: instance.props.offset,\n          ...getModifier(popperOptions, 'offset'),\n        },\n      },\n      onCreate(data: Popper.Data) {\n        applyMutations(data)\n        runMountCallback()\n\n        if (popperOptions && popperOptions.onCreate) {\n          popperOptions.onCreate(data)\n        }\n      },\n      onUpdate(data: Popper.Data) {\n        applyMutations(data)\n        runMountCallback()\n\n        if (popperOptions && popperOptions.onUpdate) {\n          popperOptions.onUpdate(data)\n        }\n      },\n    }\n\n    instance.popperInstance = new Popper(\n      reference,\n      popper,\n      config,\n    ) as PopperInstance\n  }\n\n  /**\n   * Mounts the tooltip to the DOM\n   */\n  function mount(): void {\n    hasMountCallbackRun = false\n\n    const isInLooseFollowCursorMode = getIsInLooseFollowCursorMode()\n\n    if (instance.popperInstance) {\n      setFlipModifierEnabled(\n        instance.popperInstance.modifiers,\n        instance.props.flip,\n      )\n\n      if (!isInLooseFollowCursorMode) {\n        instance.popperInstance.reference = reference\n        instance.popperInstance.enableEventListeners()\n      }\n\n      instance.popperInstance.scheduleUpdate()\n    } else {\n      createPopperInstance()\n\n      if (!isInLooseFollowCursorMode) {\n        instance.popperInstance!.enableEventListeners()\n      }\n    }\n\n    const { appendTo } = instance.props\n    const parentNode =\n      appendTo === 'parent'\n        ? reference.parentNode\n        : invokeWithArgsOrReturn(appendTo, [reference])\n\n    if (!parentNode.contains(popper)) {\n      parentNode.appendChild(popper)\n      instance.props.onMount(instance)\n      instance.state.isMounted = true\n    }\n  }\n\n  /**\n   * Setup before show() is invoked (delays, etc.)\n   */\n  function scheduleShow(\n    event?: Event,\n    shouldAvoidCallingOnTrigger?: boolean,\n  ): void {\n    clearDelayTimeouts()\n\n    if (instance.state.isVisible) {\n      return\n    }\n\n    // Is a delegate, create an instance for the child target\n    if (instance.props.target) {\n      return createDelegateChildTippy(event)\n    }\n\n    isScheduledToShow = true\n\n    if (event && !shouldAvoidCallingOnTrigger) {\n      instance.props.onTrigger(instance, event)\n    }\n\n    if (instance.props.wait) {\n      return instance.props.wait(instance, event)\n    }\n\n    // If the tooltip has a delay, we need to be listening to the mousemove as\n    // soon as the trigger event is fired, so that it's in the correct position\n    // upon mount.\n    // Edge case: if the tooltip is still mounted, but then scheduleShow() is\n    // called, it causes a jump.\n    if (getIsInLooseFollowCursorMode() && !instance.state.isMounted) {\n      if (!instance.popperInstance) {\n        createPopperInstance()\n      }\n\n      document.addEventListener('mousemove', positionVirtualReferenceNearCursor)\n    }\n\n    addDocumentClickListener()\n\n    const delay = getValue(instance.props.delay, 0, defaultProps.delay)\n\n    if (delay) {\n      showTimeoutId = setTimeout(() => {\n        show()\n      }, delay)\n    } else {\n      show()\n    }\n  }\n\n  /**\n   * Setup before hide() is invoked (delays, etc.)\n   */\n  function scheduleHide(): void {\n    clearDelayTimeouts()\n\n    if (!instance.state.isVisible) {\n      removeFollowCursorListener()\n      removeDocumentClickListener()\n      return\n    }\n\n    isScheduledToShow = false\n\n    const delay = getValue(instance.props.delay, 1, defaultProps.delay)\n\n    if (delay) {\n      hideTimeoutId = setTimeout(() => {\n        if (instance.state.isVisible) {\n          hide()\n        }\n      }, delay)\n    } else {\n      // Fixes a `transitionend` problem when it fires 1 frame too\n      // late sometimes, we don't want hide() to be called.\n      scheduleHideAnimationFrameId = requestAnimationFrame(() => {\n        hide()\n      })\n    }\n  }\n\n  /**\n   * Listener to handle clicks on the document to determine if the\n   * instance should hide\n   */\n  function onDocumentClick(event: MouseEvent): void {\n    // Clicked on interactive popper\n    if (\n      instance.props.interactive &&\n      popper.contains(event.target as Element)\n    ) {\n      return\n    }\n\n    // Clicked on the event listeners target\n    if (getEventListenersTarget().contains(event.target as Element)) {\n      if (isUsingTouch) {\n        return\n      }\n\n      if (\n        instance.state.isVisible &&\n        includes(instance.props.trigger, 'click')\n      ) {\n        return\n      }\n    }\n\n    if (instance.props.hideOnClick === true) {\n      clearDelayTimeouts()\n      hide()\n    }\n  }\n\n  /* ======================= 馃攽 Public methods 馃攽 ======================= */\n  /**\n   * Enables the instance to allow it to show or hide\n   */\n  function enable(): void {\n    instance.state.isEnabled = true\n  }\n\n  /**\n   * Disables the instance to disallow it to show or hide\n   */\n  function disable(): void {\n    instance.state.isEnabled = false\n  }\n\n  /**\n   * Clears pending timeouts related to the `delay` prop if any\n   */\n  function clearDelayTimeouts(): void {\n    clearTimeout(showTimeoutId)\n    clearTimeout(hideTimeoutId)\n    cancelAnimationFrame(scheduleHideAnimationFrameId)\n  }\n\n  /**\n   * Sets new props for the instance and redraws the tooltip\n   */\n  function set(options: Options): void {\n    // Backwards-compatible after TypeScript change\n    options = options || {}\n\n    validateOptions(options, defaultProps)\n\n    removeTriggersFromReference()\n\n    const prevProps = instance.props\n    const nextProps = evaluateProps(reference, {\n      ...instance.props,\n      ...options,\n      ignoreAttributes: true,\n    })\n    nextProps.ignoreAttributes = hasOwnProperty(options, 'ignoreAttributes')\n      ? options.ignoreAttributes || false\n      : prevProps.ignoreAttributes\n    instance.props = nextProps\n\n    addTriggersToReference()\n\n    cleanupInteractiveMouseListeners()\n    debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce)\n\n    updatePopperElement(popper, prevProps, nextProps)\n    instance.popperChildren = getChildren(popper)\n\n    if (instance.popperInstance) {\n      if (\n        POPPER_INSTANCE_DEPENDENCIES.some(prop => {\n          return (\n            hasOwnProperty(options, prop) && options[prop] !== prevProps[prop]\n          )\n        })\n      ) {\n        instance.popperInstance.destroy()\n        createPopperInstance()\n\n        if (instance.state.isVisible) {\n          instance.popperInstance.enableEventListeners()\n        }\n\n        if (instance.props.followCursor && lastMouseMoveEvent) {\n          positionVirtualReferenceNearCursor(lastMouseMoveEvent)\n        }\n      } else {\n        instance.popperInstance.update()\n      }\n    }\n  }\n\n  /**\n   * Shortcut for .set({ content: newContent })\n   */\n  function setContent(content: Content): void {\n    set({ content })\n  }\n\n  /**\n   * Shows the tooltip\n   */\n  function show(\n    duration: number = getValue(\n      instance.props.duration,\n      0,\n      (defaultProps.duration as [number, number])[1],\n    ),\n  ): void {\n    if (\n      instance.state.isDestroyed ||\n      !instance.state.isEnabled ||\n      (isUsingTouch && !instance.props.touch)\n    ) {\n      return\n    }\n\n    // Standardize `disabled` behavior across browsers.\n    // Firefox allows events on disabled elements, but Chrome doesn't.\n    // Using a wrapper element (i.e. <span>) is recommended.\n    if (getEventListenersTarget().hasAttribute('disabled')) {\n      return\n    }\n\n    if (instance.props.onShow(instance) === false) {\n      return\n    }\n\n    addDocumentClickListener()\n\n    popper.style.visibility = 'visible'\n    instance.state.isVisible = true\n\n    if (instance.props.interactive) {\n      getEventListenersTarget().classList.add(ACTIVE_CLASS)\n    }\n\n    // Prevent a transition if the popper is at the opposite placement\n    const transitionableElements = getTransitionableElements()\n    setTransitionDuration(transitionableElements.concat(popper), 0)\n\n    currentMountCallback = (): void => {\n      if (!instance.state.isVisible) {\n        return\n      }\n\n      const isInLooseFollowCursorMode = getIsInLooseFollowCursorMode()\n\n      if (isInLooseFollowCursorMode && lastMouseMoveEvent) {\n        positionVirtualReferenceNearCursor(lastMouseMoveEvent)\n      } else if (!isInLooseFollowCursorMode) {\n        // Double update will apply correct mutations\n        instance.popperInstance!.update()\n      }\n\n      if (instance.popperChildren.backdrop) {\n        instance.popperChildren.content.style.transitionDelay =\n          Math.round(duration / 12) + 'ms'\n      }\n\n      if (instance.props.sticky) {\n        makeSticky()\n      }\n\n      setTransitionDuration([popper], instance.props.updateDuration)\n      setTransitionDuration(transitionableElements, duration)\n      setVisibilityState(transitionableElements, 'visible')\n\n      onTransitionedIn(\n        duration,\n        (): void => {\n          if (instance.props.aria) {\n            getEventListenersTarget().setAttribute(\n              `aria-${instance.props.aria}`,\n              popper.id,\n            )\n          }\n\n          instance.props.onShown(instance)\n          instance.state.isShown = true\n        },\n      )\n    }\n\n    mount()\n  }\n\n  /**\n   * Hides the tooltip\n   */\n  function hide(\n    duration: number = getValue(\n      instance.props.duration,\n      1,\n      (defaultProps.duration as [number, number])[1],\n    ),\n  ): void {\n    if (\n      instance.state.isDestroyed ||\n      (!instance.state.isEnabled && !isBeingDestroyed)\n    ) {\n      return\n    }\n\n    if (instance.props.onHide(instance) === false && !isBeingDestroyed) {\n      return\n    }\n\n    removeDocumentClickListener()\n\n    popper.style.visibility = 'hidden'\n    instance.state.isVisible = false\n    instance.state.isShown = false\n    wasVisibleDuringPreviousUpdate = false\n\n    if (instance.props.interactive) {\n      getEventListenersTarget().classList.remove(ACTIVE_CLASS)\n    }\n\n    const transitionableElements = getTransitionableElements()\n    setTransitionDuration(transitionableElements, duration)\n    setVisibilityState(transitionableElements, 'hidden')\n\n    onTransitionedOut(duration, () => {\n      if (!isScheduledToShow) {\n        removeFollowCursorListener()\n      }\n\n      if (instance.props.aria) {\n        getEventListenersTarget().removeAttribute(`aria-${instance.props.aria}`)\n      }\n\n      instance.popperInstance!.disableEventListeners()\n      instance.popperInstance!.options.placement = instance.props.placement\n\n      popper.parentNode!.removeChild(popper)\n      instance.props.onHidden(instance)\n      instance.state.isMounted = false\n    })\n  }\n\n  /**\n   * Destroys the tooltip\n   */\n  function destroy(destroyTargetInstances?: boolean): void {\n    if (instance.state.isDestroyed) {\n      return\n    }\n\n    isBeingDestroyed = true\n\n    // If the popper is currently mounted to the DOM, we want to ensure it gets\n    // hidden and unmounted instantly upon destruction\n    if (instance.state.isMounted) {\n      hide(0)\n    }\n\n    removeTriggersFromReference()\n\n    delete reference._tippy\n\n    const { target } = instance.props\n    if (target && destroyTargetInstances && isRealElement(reference)) {\n      arrayFrom(reference.querySelectorAll(target)).forEach(\n        (child: ReferenceElement) => {\n          if (child._tippy) {\n            child._tippy.destroy()\n          }\n        },\n      )\n    }\n\n    if (instance.popperInstance) {\n      instance.popperInstance.destroy()\n    }\n\n    isBeingDestroyed = false\n    instance.state.isDestroyed = true\n  }\n}\n","import { GroupedInstance, GroupOptions } from './types'\n\n/**\n * Groups an array of instances by taking control of their props during\n * certain lifecycles.\n */\nexport default function group(\n  instances: GroupedInstance[],\n  { delay = instances[0].props.delay, duration = 0 }: GroupOptions = {},\n): void {\n  let isAnyTippyOpen = false\n\n  instances.forEach(instance => {\n    if (instance._originalProps) {\n      instance.set(instance._originalProps)\n    } else {\n      instance._originalProps = { ...instance.props }\n    }\n  })\n\n  function setIsAnyTippyOpen(value: boolean): void {\n    isAnyTippyOpen = value\n    updateInstances()\n  }\n\n  function onShow(instance: GroupedInstance): void {\n    instance._originalProps.onShow(instance)\n\n    instances.forEach(instance => {\n      instance.set({ duration })\n\n      if (instance.state.isVisible) {\n        instance.hide()\n      }\n    })\n\n    setIsAnyTippyOpen(true)\n  }\n\n  function onHide(instance: GroupedInstance): void {\n    instance._originalProps.onHide(instance)\n    setIsAnyTippyOpen(false)\n  }\n\n  function onShown(instance: GroupedInstance): void {\n    instance._originalProps.onShown(instance)\n    instance.set({ duration: instance._originalProps.duration })\n  }\n\n  function updateInstances(): void {\n    instances.forEach(instance => {\n      instance.set({\n        onShow,\n        onShown,\n        onHide,\n        delay: isAnyTippyOpen\n          ? [0, Array.isArray(delay) ? delay[1] : delay]\n          : delay,\n        duration: isAnyTippyOpen ? duration : instance._originalProps.duration,\n      })\n    })\n  }\n\n  updateInstances()\n}\n","import { version } from '../package.json'\nimport { isBrowser } from './browser'\nimport { defaultProps } from './props'\nimport createTippy from './createTippy'\nimport bindGlobalEventListeners from './bindGlobalEventListeners'\nimport group from './group'\nimport { polyfillElementPrototypeProperties } from './reference'\nimport { arrayFrom } from './ponyfills'\nimport { hideAll } from './popper'\nimport {\n  isSingular,\n  isBareVirtualElement,\n  getArrayOfElements,\n  validateOptions,\n} from './utils'\nimport { Options, Props, Instance, Targets, VirtualReference } from './types'\n\nlet globalEventListenersBound = false\n\n/**\n * Exported module\n */\nfunction tippy(targets: Targets, options?: Options): Instance | Instance[] {\n  validateOptions(options || {}, defaultProps)\n\n  if (!globalEventListenersBound) {\n    bindGlobalEventListeners()\n    globalEventListenersBound = true\n  }\n\n  const props: Props = { ...defaultProps, ...options }\n\n  // If they are specifying a virtual positioning reference, we need to polyfill\n  // some native DOM props\n  if (isBareVirtualElement(targets)) {\n    polyfillElementPrototypeProperties(targets as VirtualReference)\n  }\n\n  const instances = getArrayOfElements(targets).reduce<Instance[]>(\n    (acc, reference) => {\n      const instance = reference && createTippy(reference, props)\n\n      if (instance) {\n        acc.push(instance)\n      }\n\n      return acc\n    },\n    [],\n  )\n\n  return isSingular(targets) ? instances[0] : instances\n}\n\n/**\n * Static props\n */\ntippy.version = version\ntippy.defaults = defaultProps\n\n/**\n * Static methods\n */\ntippy.setDefaults = (partialDefaults: Options) => {\n  Object.keys(partialDefaults).forEach(key => {\n    // @ts-ignore\n    defaultProps[key] = partialDefaults[key]\n  })\n}\ntippy.hideAll = hideAll\ntippy.group = group\n\n/**\n * Auto-init tooltips for elements with a `data-tippy=\"...\"` attribute\n */\nexport function autoInit(): void {\n  arrayFrom(document.querySelectorAll('[data-tippy]')).forEach(el => {\n    const content = el.getAttribute('data-tippy')\n\n    if (content) {\n      tippy(el, { content })\n    }\n  })\n}\n\nif (isBrowser) {\n  setTimeout(autoInit)\n}\n\nexport default tippy\n"],"names":["isBrowser","window","document","ua","navigator","userAgent","isIE","test","isUCBrowser","isIOS","platform","MSStream","defaultProps","a11y","allowHTML","animateFill","animation","appendTo","body","aria","arrow","arrowType","boundary","content","delay","distance","duration","flip","flipBehavior","flipOnUpdate","followCursor","hideOnClick","ignoreAttributes","inertia","interactive","interactiveBorder","interactiveDebounce","lazy","maxWidth","multiple","offset","onHidden","onHide","onMount","onShow","onShown","onTrigger","placement","popperOptions","role","showOnInit","size","sticky","target","theme","touch","touchHold","trigger","triggerTarget","updateDuration","wait","zIndex","POPPER_INSTANCE_DEPENDENCIES","elementProto","Element","prototype","matches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","arrayFrom","value","slice","call","closest","element","selector","closestCallback","el","callback","parentElement","PASSIVE","passive","PADDING","PLACEMENT_ATTRIBUTE","OUT_OF_BOUNDARIES_ATTRIBUTE","IOS_CLASS","ACTIVE_CLASS","POPPER_CLASS","TOOLTIP_CLASS","CONTENT_CLASS","BACKDROP_CLASS","ARROW_CLASS","ROUND_ARROW_CLASS","POPPER_SELECTOR","TOOLTIP_SELECTOR","CONTENT_SELECTOR","BACKDROP_SELECTOR","ARROW_SELECTOR","ROUND_ARROW_SELECTOR","isUsingTouch","onDocumentTouch","classList","add","performance","addEventListener","onDocumentMouseMove","lastMouseMoveTime","now","removeEventListener","remove","onWindowBlur","activeElement","blur","_tippy","bindGlobalEventListeners","keys","Object","getDataAttributeOptions","reference","reduce","acc","key","valueAsString","getAttribute","trim","JSON","parse","e","polyfillElementPrototypeProperties","virtualReference","polyfills","isVirtual","attributes","contains","setAttribute","removeAttribute","hasAttribute","classNames","isBareVirtualElement","toString","isReferenceElement","hasOwnProperty","obj","getArrayOfElements","isSingular","NodeList","Array","isArray","querySelectorAll","getValue","index","defaultValue","v","debounce","fn","ms","timeout","arg","clearTimeout","setTimeout","getModifier","modifiers","includes","a","b","indexOf","isRealElement","innerHTML","invokeWithArgsOrReturn","args","apply","setFlipModifierEnabled","filter","m","name","enabled","canReceiveFocus","div","createElement","setTransitionDuration","els","forEach","style","transitionDuration","setVisibilityState","state","evaluateProps","props","out","validateOptions","options","option","Error","setInnerHTML","html","setContent","contentEl","appendChild","getChildren","popper","tooltip","querySelector","backdrop","addInertia","removeInertia","createArrowElement","className","createBackdropElement","addInteractive","removeInteractive","updateTransitionEndListener","action","listener","eventName","webkitTransition","undefined","getBasicPlacement","fullPlacement","split","reflow","offsetHeight","updateTheme","themeName","createPopperElement","id","position","top","left","updatePopperElement","prevProps","nextProps","removeChild","replaceChild","hideAll","excludedReferenceOrInstance","exclude","instance","isExcluded","hide","isCursorOutsideInteractiveBorder","popperPlacement","popperRect","event","x","clientX","y","clientY","exceedsTop","exceedsBottom","bottom","exceedsLeft","exceedsRight","right","getOffsetDistanceInPx","idCounter","mouseMoveListeners","createTippy","collectionProps","lastTriggerEventType","lastMouseMoveEvent","showTimeoutId","hideTimeoutId","scheduleHideAnimationFrameId","isScheduledToShow","isBeingDestroyed","previousPlacement","wasVisibleDuringPreviousUpdate","hasMountCallbackRun","currentMountCallback","currentTransitionEndListener","listeners","currentComputedPadding","debouncedOnMouseMove","onMouseMove","popperChildren","popperInstance","isEnabled","isVisible","isDestroyed","isMounted","isShown","clearDelayTimeouts","set","show","enable","disable","destroy","addTriggersToReference","createPopperInstance","scheduleShow","getEventListenersTarget","removeFollowCursorListener","positionVirtualReferenceNearCursor","cleanupInteractiveMouseListeners","scheduleHide","addDocumentClickListener","onDocumentClick","removeDocumentClickListener","getTransitionableElements","getIsInLooseFollowCursorMode","makeSticky","prevRefRect","getBoundingClientRect","updatePosition","currentRefRect","scheduleUpdate","requestAnimationFrame","onTransitionedOut","onTransitionEnd","parentNode","onTransitionedIn","on","eventType","handler","push","onMouseLeave","onBlur","onDelegateShow","onDelegateHide","removeTriggersFromReference","isCursorOverReference","rect","isHorizontal","isVertical","isVerticalPlacement","isVariation","offsetWidth","halfSize","verticalIncrease","horizontalIncrease","referenceNode","clientWidth","clientHeight","width","height","update","createDelegateChildTippy","targetEl","isEventListenerStopped","type","MouseEvent","isCursorOverPopper","relatedTarget","supportsTouch","isTouchEvent","runMountCallback","preventOverflowModifier","applyMutations","data","flipped","transition","basicPlacement","styles","padding","isPaddingNumber","computedPadding","config","eventsEnabled","preventOverflow","boundariesElement","behavior","onCreate","onUpdate","Popper","mount","isInLooseFollowCursorMode","enableEventListeners","shouldAvoidCallingOnTrigger","cancelAnimationFrame","some","prop","visibility","transitionableElements","concat","transitionDelay","Math","round","disableEventListeners","destroyTargetInstances","child","group","instances","isAnyTippyOpen","_originalProps","setIsAnyTippyOpen","updateInstances","globalEventListenersBound","tippy","targets","version","defaults","setDefaults","partialDefaults","autoInit"],"mappings":"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"}