UNPKG

40.9 kBSource Map (JSON)View Raw
1{"version":3,"file":"tippy.cjs.js","sources":["../src/addons/createSingleton.ts","../src/addons/delegate.ts","../src/plugins/animateFill.ts","../src/plugins/followCursor.ts","../src/plugins/inlinePositioning.ts","../src/plugins/sticky.ts"],"sourcesContent":["import {Instance, CreateSingleton, Plugin} from '../types';\nimport tippy from '..';\nimport {defaultProps} from '../props';\nimport {errorWhen} from '../validation';\nimport {div} from '../utils';\n\n/**\n * Re-uses a single tippy element for many different tippy instances.\n * Replaces v4's `tippy.group()`.\n */\nconst createSingleton: CreateSingleton = (\n tippyInstances,\n optionalProps = {},\n /** @deprecated use Props.plugins */\n plugins = [],\n) => {\n if (__DEV__) {\n errorWhen(\n !Array.isArray(tippyInstances),\n [\n 'The first argument passed to createSingleton() must be an array of tippy',\n 'instances. The passed value was',\n String(tippyInstances),\n ].join(' '),\n );\n }\n\n plugins = optionalProps.plugins || plugins;\n\n tippyInstances.forEach(instance => {\n instance.disable();\n });\n\n let userAria = {...defaultProps, ...optionalProps}.aria;\n let currentAria: string | null | undefined;\n let currentTarget: Element;\n let shouldSkipUpdate = false;\n\n const references = tippyInstances.map(instance => instance.reference);\n\n const singleton: Plugin = {\n fn(instance) {\n function handleAriaDescribedByAttribute(isShow: boolean): void {\n if (!currentAria) {\n return;\n }\n\n const attr = `aria-${currentAria}`;\n\n if (isShow && !instance.props.interactive) {\n currentTarget.setAttribute(attr, instance.popperChildren.tooltip.id);\n } else {\n currentTarget.removeAttribute(attr);\n }\n }\n\n return {\n onAfterUpdate(_, {aria}): void {\n // Ensure `aria` for the singleton instance stays `null`, while\n // changing the `userAria` value\n if (aria !== undefined && aria !== userAria) {\n if (!shouldSkipUpdate) {\n userAria = aria;\n } else {\n shouldSkipUpdate = true;\n instance.setProps({aria: null});\n shouldSkipUpdate = false;\n }\n }\n },\n onDestroy(): void {\n tippyInstances.forEach(instance => {\n instance.enable();\n });\n },\n onMount(): void {\n handleAriaDescribedByAttribute(true);\n },\n onUntrigger(): void {\n handleAriaDescribedByAttribute(false);\n },\n onTrigger(_, event): void {\n const target = event.currentTarget as Element;\n const index = references.indexOf(target);\n\n // bail-out\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n currentAria = userAria;\n\n if (instance.state.isVisible) {\n handleAriaDescribedByAttribute(true);\n }\n\n instance.popperInstance!.reference = target;\n\n instance.setContent(tippyInstances[index].props.content);\n },\n };\n },\n };\n\n return tippy(div(), {\n ...optionalProps,\n plugins: [singleton, ...plugins],\n aria: null,\n triggerTarget: references,\n }) as Instance;\n};\n\nexport default createSingleton;\n","import {Instance, Targets, Plugin, Props} from '../types';\nimport tippy from '..';\nimport {errorWhen} from '../validation';\nimport {removeProperties, normalizeToArray, includes} from '../utils';\nimport {defaultProps} from '../props';\nimport {ListenerObject} from '../types-internal';\n\nconst BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click',\n};\n\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\nfunction delegate(\n targets: Targets,\n props: Partial<Props> & {target: string},\n /** @deprecated use Props.plugins */\n plugins: Plugin[] = [],\n): Instance | Instance[] {\n if (__DEV__) {\n errorWhen(\n !(props && props.target),\n [\n 'You must specity a `target` prop indicating a CSS selector string matching',\n 'the target elements that should receive a tippy.',\n ].join(' '),\n );\n }\n\n plugins = props.plugins || plugins;\n\n let listeners: ListenerObject[] = [];\n let childTippyInstances: Instance[] = [];\n\n const {target} = props;\n\n const nativeProps = removeProperties(props, ['target']);\n const parentProps = {...nativeProps, plugins, trigger: 'manual'};\n const childProps = {...nativeProps, plugins, showOnCreate: true};\n\n const returnValue = tippy(targets, parentProps);\n const normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event: Event): void {\n if (!event.target) {\n return;\n }\n\n const targetNode = (event.target as Element).closest(target);\n\n if (!targetNode) {\n return;\n }\n\n // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n const trigger =\n targetNode.getAttribute('data-tippy-trigger') ||\n props.trigger ||\n defaultProps.trigger;\n\n // Only create the instance if the bubbling event matches the trigger type\n if (!includes(trigger, (BUBBLING_EVENTS_MAP as any)[event.type])) {\n return;\n }\n\n const instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(\n node: Element,\n eventType: string,\n handler: EventListener,\n options: object | boolean = false,\n ): void {\n node.addEventListener(eventType, handler, options);\n listeners.push({node, eventType, handler, options});\n }\n\n function addEventListeners(instance: Instance): void {\n const {reference} = instance;\n\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners(): void {\n listeners.forEach(({node, eventType, handler, options}: ListenerObject) => {\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance: Instance): void {\n const originalDestroy = instance.destroy;\n instance.destroy = (shouldDestroyChildInstances = true): void => {\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(instance => {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n\n removeEventListeners();\n originalDestroy();\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n\n return returnValue;\n}\n\nexport default delegate;\n","import {AnimateFill} from '../types';\nimport {BACKDROP_CLASS} from '../constants';\nimport {div, setVisibilityState} from '../utils';\nimport {warnWhen} from '../validation';\n\nconst animateFill: AnimateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn(instance) {\n const {tooltip, content} = instance.popperChildren;\n\n const backdrop = instance.props.animateFill\n ? createBackdropElement()\n : null;\n\n function addBackdropToPopperChildren(): void {\n instance.popperChildren.backdrop = backdrop;\n }\n\n return {\n onCreate(): void {\n if (backdrop) {\n addBackdropToPopperChildren();\n\n tooltip.insertBefore(backdrop, tooltip.firstElementChild!);\n tooltip.setAttribute('data-animatefill', '');\n tooltip.style.overflow = 'hidden';\n\n instance.setProps({animation: 'shift-away', arrow: false});\n }\n },\n onMount(): void {\n if (backdrop) {\n const {transitionDuration} = tooltip.style;\n const duration = Number(transitionDuration.replace('ms', ''));\n\n // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n content.style.transitionDelay = `${Math.round(duration / 10)}ms`;\n\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n\n // Warn if the stylesheets are not loaded\n if (__DEV__) {\n warnWhen(\n getComputedStyle(backdrop).position !== 'absolute',\n `The \\`tippy.js/dist/backdrop.css\\` stylesheet has not been\n imported!\n \n The \\`animateFill\\` plugin requires this stylesheet to work.`,\n );\n\n warnWhen(\n getComputedStyle(tooltip).transform === 'none',\n `The \\`tippy.js/animations/shift-away.css\\` stylesheet has not\n been imported!\n \n The \\`animateFill\\` plugin requires this stylesheet to work.`,\n );\n }\n }\n },\n onShow(): void {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide(): void {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n },\n onAfterUpdate(): void {\n // With this type of prop, it's highly unlikely it will be changed\n // dynamically. We'll leave out the diff/update logic it to save bytes.\n\n // `popperChildren` is assigned a new object onAfterUpdate\n addBackdropToPopperChildren();\n },\n };\n },\n};\n\nexport default animateFill;\n\nfunction createBackdropElement(): HTMLDivElement {\n const backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n","import {\n PopperElement,\n Placement,\n FollowCursor,\n Props,\n ReferenceElement,\n} from '../types';\nimport {\n includes,\n closestCallback,\n useIfDefined,\n isMouseEvent,\n getOwnerDocument,\n} from '../utils';\nimport {getBasePlacement} from '../popper';\nimport {currentInput} from '../bindGlobalEventListeners';\nimport Popper from 'popper.js';\n\nconst followCursor: FollowCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn(instance) {\n const {reference, popper} = instance;\n\n let originalReference:\n | ReferenceElement\n | Popper.ReferenceObject\n | null = null;\n\n // Support iframe contexts\n // Static check that assumes any of the `triggerTarget` or `reference`\n // nodes will never change documents, even when they are updated\n const doc = getOwnerDocument(instance.props.triggerTarget || reference);\n\n // Internal state\n let lastMouseMoveEvent: MouseEvent;\n let mouseCoords: {clientX: number; clientY: number} | null = null;\n let isInternallySettingControlledProp = false;\n\n // These are controlled by this plugin, so we need to store the user's\n // original prop value\n const userProps = instance.props;\n\n function setUserProps(props: Partial<Props>): void {\n const keys = Object.keys(props) as Array<keyof Props>;\n keys.forEach(prop => {\n (userProps as any)[prop] = useIfDefined(props[prop], userProps[prop]);\n });\n }\n\n function getIsManual(): boolean {\n return instance.props.trigger.trim() === 'manual';\n }\n\n function getIsEnabled(): boolean {\n // #597\n const isValidMouseEvent = getIsManual()\n ? true\n : // Check if a keyboard \"click\"\n mouseCoords !== null &&\n !(mouseCoords.clientX === 0 && mouseCoords.clientY === 0);\n\n return instance.props.followCursor && isValidMouseEvent;\n }\n\n function getIsInitialBehavior(): boolean {\n return (\n currentInput.isTouch ||\n (instance.props.followCursor === 'initial' && instance.state.isVisible)\n );\n }\n\n function resetReference(): void {\n if (instance.popperInstance && originalReference) {\n instance.popperInstance.reference = originalReference;\n }\n }\n\n function handlePlacement(): void {\n // Due to `getVirtualOffsets()`, we need to reverse the placement if it's\n // shifted (start -> end, and vice-versa)\n\n // Early bail-out\n if (!getIsEnabled() && instance.props.placement === userProps.placement) {\n return;\n }\n\n const {placement} = userProps;\n const shift = placement.split('-')[1];\n\n isInternallySettingControlledProp = true;\n\n instance.setProps({\n placement: (getIsEnabled() && shift\n ? placement.replace(shift, shift === 'start' ? 'end' : 'start')\n : placement) as Placement,\n });\n\n isInternallySettingControlledProp = false;\n }\n\n function handlePopperListeners(): void {\n if (!instance.popperInstance) {\n return;\n }\n\n // Popper's scroll listeners make sense for `true` only. TODO: work out\n // how to only listen horizontal scroll for \"horizontal\" and vertical\n // scroll for \"vertical\"\n if (getIsEnabled() && getIsInitialBehavior()) {\n instance.popperInstance.disableEventListeners();\n }\n }\n\n function handleMouseMoveListener(): void {\n if (getIsEnabled()) {\n addListener();\n } else {\n resetReference();\n }\n }\n\n function triggerLastMouseMove(): void {\n if (getIsEnabled()) {\n onMouseMove(lastMouseMoveEvent);\n }\n }\n\n function addListener(): void {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener(): void {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function onMouseMove(event: MouseEvent): void {\n const {clientX, clientY} = (lastMouseMoveEvent = event);\n\n if (!instance.popperInstance || !instance.state.currentPlacement) {\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) => el === reference,\n );\n\n const {followCursor} = instance.props;\n const isHorizontal = followCursor === 'horizontal';\n const isVertical = followCursor === 'vertical';\n const isVerticalPlacement = includes(\n ['top', 'bottom'],\n getBasePlacement(instance.state.currentPlacement),\n );\n\n // The virtual reference needs some size to prevent itself from overflowing\n const {size, x, y} = getVirtualOffsets(popper, isVerticalPlacement);\n\n if (isCursorOverReference || !instance.props.interactive) {\n // Preserve custom position ReferenceObjects, which may not be the\n // original targets reference passed as an argument\n if (originalReference === null) {\n originalReference = instance.popperInstance.reference;\n }\n\n instance.popperInstance.reference = {\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 const rect = reference.getBoundingClientRect();\n return {\n width: isVerticalPlacement ? size : 0,\n height: isVerticalPlacement ? 0 : size,\n top: (isHorizontal ? rect.top : clientY) - y,\n bottom: (isHorizontal ? rect.bottom : clientY) + y,\n left: (isVertical ? rect.left : clientX) - x,\n right: (isVertical ? rect.right : clientX) + x,\n };\n },\n };\n\n instance.popperInstance.update();\n }\n\n if (getIsInitialBehavior()) {\n removeListener();\n }\n }\n\n return {\n onAfterUpdate(_, partialProps): void {\n if (!isInternallySettingControlledProp) {\n setUserProps(partialProps);\n\n if (partialProps.placement) {\n handlePlacement();\n }\n }\n\n // A new placement causes the popperInstance to be recreated\n if (partialProps.placement) {\n handlePopperListeners();\n }\n\n // Wait for `.update()` to set `instance.state.currentPlacement` to\n // the new placement\n requestAnimationFrame(triggerLastMouseMove);\n },\n onMount(): void {\n triggerLastMouseMove();\n handlePopperListeners();\n },\n onShow(): void {\n if (getIsManual()) {\n // Since there's no trigger event to use, we have to use these as\n // baseline coords\n mouseCoords = {clientX: 0, clientY: 0};\n // Ensure `lastMouseMoveEvent` doesn't access any other properties\n // of a MouseEvent here\n lastMouseMoveEvent = mouseCoords as MouseEvent;\n\n handlePlacement();\n handleMouseMoveListener();\n }\n },\n onTrigger(_, event): void {\n // Tapping on touch devices can trigger `mouseenter` then `focus`\n if (mouseCoords) {\n return;\n }\n\n if (isMouseEvent(event)) {\n mouseCoords = {clientX: event.clientX, clientY: event.clientY};\n lastMouseMoveEvent = event;\n }\n\n handlePlacement();\n handleMouseMoveListener();\n },\n onUntrigger(): void {\n // If untriggered before showing (`onHidden` will never be invoked)\n if (!instance.state.isVisible) {\n removeListener();\n mouseCoords = null;\n }\n },\n onHidden(): void {\n removeListener();\n resetReference();\n mouseCoords = null;\n },\n };\n },\n};\n\nexport default followCursor;\n\nexport function getVirtualOffsets(\n popper: PopperElement,\n isVerticalPlacement: boolean,\n): {\n size: number;\n x: number;\n y: number;\n} {\n const size = isVerticalPlacement ? popper.offsetWidth : popper.offsetHeight;\n\n return {\n size,\n x: isVerticalPlacement ? size : 0,\n y: isVerticalPlacement ? 0 : size,\n };\n}\n","import {InlinePositioning, BasePlacement} from '../types';\nimport {arrayFrom} from '../utils';\nimport {getBasePlacement} from '../popper';\n\n// TODO: Work on a \"cursor\" value so it chooses a rect optimal to the cursor\n// position. This will require the `followCursor` plugin's fixes for overflow\n// due to using event.clientX/Y values. (normalizedPlacement, getVirtualOffsets)\nconst inlinePositioning: InlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn(instance) {\n const {reference} = instance;\n\n function getIsEnabled(): boolean {\n return !!instance.props.inlinePositioning;\n }\n\n return {\n onHidden(): void {\n if (getIsEnabled()) {\n instance.popperInstance!.reference = reference;\n }\n },\n onShow(): void {\n if (!getIsEnabled()) {\n return;\n }\n\n instance.popperInstance!.reference = {\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(): ClientRect | DOMRect {\n return getInlineBoundingClientRect(\n instance.state.currentPlacement &&\n getBasePlacement(instance.state.currentPlacement),\n reference.getBoundingClientRect(),\n arrayFrom(reference.getClientRects()),\n );\n },\n };\n },\n };\n },\n};\n\nexport default inlinePositioning;\n\nexport function getInlineBoundingClientRect(\n currentBasePlacement: BasePlacement | null,\n boundingRect: ClientRect,\n clientRects: ClientRect[],\n): ClientRect {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom': {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = currentBasePlacement === 'top';\n\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n\n return {top, bottom, left, right, width, height};\n }\n case 'left':\n case 'right': {\n const minLeft = Math.min(...clientRects.map(rects => rects.left));\n const maxRight = Math.max(...clientRects.map(rects => rects.right));\n const measureRects = clientRects.filter(rect =>\n currentBasePlacement === 'left'\n ? rect.left === minLeft\n : rect.right === maxRight,\n );\n\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n\n return {top, bottom, left, right, width, height};\n }\n default: {\n return boundingRect;\n }\n }\n}\n","import {Sticky, ReferenceElement} from '../types';\nimport Popper from 'popper.js';\n\nconst sticky: Sticky = {\n name: 'sticky',\n defaultValue: false,\n fn(instance) {\n const {reference, popper} = instance;\n\n function getReference(): ReferenceElement | Popper.ReferenceObject {\n return instance.popperInstance\n ? instance.popperInstance.reference\n : reference;\n }\n\n function shouldCheck(value: 'reference' | 'popper'): boolean {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n let prevRefRect: ClientRect | null = null;\n let prevPopRect: ClientRect | null = null;\n\n function updatePosition(): void {\n const currentRefRect = shouldCheck('reference')\n ? getReference().getBoundingClientRect()\n : null;\n const currentPopRect = shouldCheck('popper')\n ? popper.getBoundingClientRect()\n : null;\n\n if (\n (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect)) ||\n (currentPopRect && areRectsDifferent(prevPopRect, currentPopRect))\n ) {\n instance.popperInstance!.update();\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount(): void {\n if (instance.props.sticky) {\n updatePosition();\n }\n },\n };\n },\n};\n\nexport default sticky;\n\nfunction areRectsDifferent(\n rectA: ClientRect | null,\n rectB: ClientRect | null,\n): boolean {\n if (rectA && rectB) {\n return (\n rectA.top !== rectB.top ||\n rectA.right !== rectB.right ||\n rectA.bottom !== rectB.bottom ||\n rectA.left !== rectB.left\n );\n }\n\n return true;\n}\n"],"names":["createSingleton","tippyInstances","optionalProps","plugins","errorWhen","Array","isArray","String","join","forEach","instance","disable","userAria","_extends","defaultProps","aria","currentAria","currentTarget","shouldSkipUpdate","references","map","reference","singleton","fn","handleAriaDescribedByAttribute","isShow","attr","props","interactive","setAttribute","popperChildren","tooltip","id","removeAttribute","onAfterUpdate","_","undefined","setProps","onDestroy","enable","onMount","onUntrigger","onTrigger","event","target","index","indexOf","state","isVisible","popperInstance","setContent","content","tippy","div","triggerTarget","BUBBLING_EVENTS_MAP","mouseover","focusin","click","delegate","targets","listeners","childTippyInstances","nativeProps","removeProperties","parentProps","trigger","childProps","showOnCreate","returnValue","normalizedReturnValue","normalizeToArray","targetNode","closest","getAttribute","includes","type","concat","on","node","eventType","handler","options","addEventListener","push","addEventListeners","removeEventListeners","removeEventListener","applyMutations","originalDestroy","destroy","shouldDestroyChildInstances","animateFill","name","defaultValue","backdrop","createBackdropElement","addBackdropToPopperChildren","onCreate","insertBefore","firstElementChild","style","overflow","animation","arrow","transitionDuration","duration","Number","replace","transitionDelay","Math","round","setVisibilityState","warnWhen","getComputedStyle","position","transform","onShow","onHide","className","BACKDROP_CLASS","followCursor","popper","originalReference","doc","getOwnerDocument","lastMouseMoveEvent","mouseCoords","isInternallySettingControlledProp","userProps","setUserProps","keys","Object","prop","useIfDefined","getIsManual","trim","getIsEnabled","isValidMouseEvent","clientX","clientY","getIsInitialBehavior","currentInput","isTouch","resetReference","handlePlacement","placement","shift","split","handlePopperListeners","disableEventListeners","handleMouseMoveListener","addListener","triggerLastMouseMove","onMouseMove","removeListener","currentPlacement","isCursorOverReference","closestCallback","el","isHorizontal","isVertical","isVerticalPlacement","getBasePlacement","getVirtualOffsets","size","x","y","referenceNode","clientWidth","clientHeight","getBoundingClientRect","rect","width","height","top","bottom","left","right","update","partialProps","requestAnimationFrame","isMouseEvent","onHidden","offsetWidth","offsetHeight","inlinePositioning","getInlineBoundingClientRect","arrayFrom","getClientRects","currentBasePlacement","boundingRect","clientRects","length","firstRect","lastRect","isTop","minLeft","min","rects","maxRight","max","measureRects","filter","sticky","getReference","shouldCheck","value","prevRefRect","prevPopRect","updatePosition","currentRefRect","currentPopRect","areRectsDifferent","isMounted","rectA","rectB"],"mappings":"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"}
\No newline at end of file