{"version":3,"file":"index.all.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","../src/css.ts","../build/all.js"],"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 = [\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 = 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[] {\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,\n): void {\n const polyfills: Record = {\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(\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 '',\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. ) 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(\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","import { isBrowser } from './browser'\n\n/**\n * Injects a string of CSS styles to a style node in \n */\nexport function injectCSS(css: string): void {\n if (isBrowser) {\n const style = document.createElement('style')\n style.type = 'text/css'\n style.textContent = css\n style.setAttribute('data-__NAMESPACE_PREFIX__-stylesheet', '')\n const head = document.head\n const firstStyleOrLinkTag = head.querySelector('style,link')\n\n if (firstStyleOrLinkTag) {\n head.insertBefore(style, firstStyleOrLinkTag)\n } else {\n head.appendChild(style)\n }\n }\n}\n","import css from '../index.css'\nimport tippy from '../src/index.ts'\nimport { injectCSS } from '../src/css'\n\ninjectCSS(css)\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","injectCSS","css","textContent","head","firstStyleOrLinkTag","insertBefore"],"mappings":"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"}