react-tooltip 4.2.14 → 4.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/constant.js","../src/decorators/staticMethods.js","../src/decorators/windowListener.js","../src/decorators/customEvent.js","../src/decorators/isCapture.js","../src/decorators/getEffect.js","../src/decorators/bodyMode.js","../src/decorators/trackRemoval.js","../src/utils/getPosition.js","../src/utils/getTipContent.js","../src/utils/aria.js","../src/utils/nodeListToArray.js","../src/utils/uuid.js","../src/decorators/defaultStyles.js","../src/decorators/styler.js","../src/index.js"],"sourcesContent":["export default {\n GLOBAL: {\n HIDE: '__react_tooltip_hide_event',\n REBUILD: '__react_tooltip_rebuild_event',\n SHOW: '__react_tooltip_show_event'\n }\n};\n","/**\n * Static methods for react-tooltip\n */\nimport CONSTANT from '../constant';\n\nconst dispatchGlobalEvent = (eventName, opts) => {\n // Compatible with IE\n // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n let event;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventName, { detail: opts });\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, false, true, opts);\n }\n\n window.dispatchEvent(event);\n};\n\nexport default function(target) {\n /**\n * Hide all tooltip\n * @trigger ReactTooltip.hide()\n */\n target.hide = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.HIDE, { target });\n };\n\n /**\n * Rebuild all tooltip\n * @trigger ReactTooltip.rebuild()\n */\n target.rebuild = () => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.REBUILD);\n };\n\n /**\n * Show specific tooltip\n * @trigger ReactTooltip.show()\n */\n target.show = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.SHOW, { target });\n };\n\n target.prototype.globalRebuild = function() {\n if (this.mount) {\n this.unbindListener();\n this.bindListener();\n }\n };\n\n target.prototype.globalShow = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n // Create a fake event, specific show will limit the type to `solid`\n // only `float` type cares e.clientX e.clientY\n this.showTooltip(\n { currentTarget: hasTarget && event.detail.target },\n true\n );\n }\n };\n\n target.prototype.globalHide = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n this.hideTooltip(\n { currentTarget: hasTarget && event.detail.target },\n hasTarget\n );\n }\n };\n}\n","/**\n * Events that should be bound to the window\n */\nimport CONSTANT from '../constant';\n\nexport default function(target) {\n target.prototype.bindWindowEvents = function(resizeHide) {\n // ReactTooltip.hide\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.addEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide, false);\n\n // ReactTooltip.rebuild\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.addEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild, false);\n\n // ReactTooltip.show\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.addEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow, false);\n\n // Resize\n if (resizeHide) {\n window.removeEventListener('resize', this.onWindowResize);\n window.addEventListener('resize', this.onWindowResize, false);\n }\n };\n\n target.prototype.unbindWindowEvents = function() {\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.removeEventListener('resize', this.onWindowResize);\n };\n\n /**\n * invoked by resize event of window\n */\n target.prototype.onWindowResize = function() {\n if (!this.mount) return;\n this.hideTooltip();\n };\n}\n","/**\n * Custom events to control showing and hiding of tooltip\n *\n * @attributes\n * - `event` {String}\n * - `eventOff` {String}\n */\n\nexport const checkStatus = function(dataEventOff, e) {\n const { show } = this.state;\n const { id } = this.props;\n const isCapture = this.isCapture(e.currentTarget);\n const currentItem = e.currentTarget.getAttribute('currentItem');\n\n if (!isCapture) e.stopPropagation();\n if (show && currentItem === 'true') {\n if (!dataEventOff) this.hideTooltip(e);\n } else {\n e.currentTarget.setAttribute('currentItem', 'true');\n setUntargetItems(e.currentTarget, this.getTargetArray(id));\n this.showTooltip(e);\n }\n};\n\nconst setUntargetItems = function(currentTarget, targetArray) {\n for (let i = 0; i < targetArray.length; i++) {\n if (currentTarget !== targetArray[i]) {\n targetArray[i].setAttribute('currentItem', 'false');\n } else {\n targetArray[i].setAttribute('currentItem', 'true');\n }\n }\n};\n\nconst customListeners = {\n id: '9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf',\n set(target, event, listener) {\n if (this.id in target) {\n const map = target[this.id];\n map[event] = listener;\n } else {\n // this is workaround for WeakMap, which is not supported in older browsers, such as IE\n Object.defineProperty(target, this.id, {\n configurable: true,\n value: { [event]: listener }\n });\n }\n },\n get(target, event) {\n const map = target[this.id];\n if (map !== undefined) {\n return map[event];\n }\n }\n};\n\nexport default function(target) {\n target.prototype.isCustomEvent = function(ele) {\n const { event } = this.state;\n return event || !!ele.getAttribute('data-event');\n };\n\n /* Bind listener for custom event */\n target.prototype.customBindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = ele.getAttribute('data-event') || event;\n const dataEventOff = ele.getAttribute('data-event-off') || eventOff;\n\n dataEvent.split(' ').forEach(event => {\n ele.removeEventListener(event, customListeners.get(ele, event));\n const customListener = checkStatus.bind(this, dataEventOff);\n customListeners.set(ele, event, customListener);\n ele.addEventListener(event, customListener, false);\n });\n if (dataEventOff) {\n dataEventOff.split(' ').forEach(event => {\n ele.removeEventListener(event, this.hideTooltip);\n ele.addEventListener(event, this.hideTooltip, false);\n });\n }\n };\n\n /* Unbind listener for custom event */\n target.prototype.customUnbindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = event || ele.getAttribute('data-event');\n const dataEventOff = eventOff || ele.getAttribute('data-event-off');\n\n ele.removeEventListener(dataEvent, customListeners.get(ele, event));\n if (dataEventOff) ele.removeEventListener(dataEventOff, this.hideTooltip);\n };\n}\n","/**\n * Util method to judge if it should follow capture model\n */\n\nexport default function(target) {\n target.prototype.isCapture = function(currentTarget) {\n return (\n (currentTarget &&\n currentTarget.getAttribute('data-iscapture') === 'true') ||\n this.props.isCapture ||\n false\n );\n };\n}\n","/**\n * Util method to get effect\n */\n\nexport default function(target) {\n target.prototype.getEffect = function(currentTarget) {\n const dataEffect = currentTarget.getAttribute('data-effect');\n return dataEffect || this.props.effect || 'float';\n };\n}\n","/**\n * Util method to get effect\n */\nimport { checkStatus } from './customEvent';\n\nconst makeProxy = e => {\n const proxy = {};\n for (const key in e) {\n if (typeof e[key] === 'function') {\n proxy[key] = e[key].bind(e);\n } else {\n proxy[key] = e[key];\n }\n }\n return proxy;\n};\n\nconst bodyListener = function(callback, options, e) {\n const { respectEffect = false, customEvent = false } = options;\n const { id } = this.props;\n\n const tip = e.target.getAttribute('data-tip') || null;\n const forId = e.target.getAttribute('data-for') || null;\n\n const target = e.target;\n if (this.isCustomEvent(target) && !customEvent) {\n return;\n }\n\n const isTargetBelongsToTooltip =\n (id == null && forId == null) || forId === id;\n\n if (\n tip != null &&\n (!respectEffect || this.getEffect(target) === 'float') &&\n isTargetBelongsToTooltip\n ) {\n const proxy = makeProxy(e);\n proxy.currentTarget = target;\n callback(proxy);\n }\n};\n\nconst findCustomEvents = (targetArray, dataAttribute) => {\n const events = {};\n targetArray.forEach(target => {\n const event = target.getAttribute(dataAttribute);\n if (event) event.split(' ').forEach(event => (events[event] = true));\n });\n\n return events;\n};\n\nconst getBody = () => document.getElementsByTagName('body')[0];\n\nexport default function(target) {\n target.prototype.isBodyMode = function() {\n return !!this.props.bodyMode;\n };\n\n target.prototype.bindBodyListener = function(targetArray) {\n const {\n event,\n eventOff,\n possibleCustomEvents,\n possibleCustomEventsOff\n } = this.state;\n const body = getBody();\n\n const customEvents = findCustomEvents(targetArray, 'data-event');\n const customEventsOff = findCustomEvents(targetArray, 'data-event-off');\n\n if (event != null) customEvents[event] = true;\n if (eventOff != null) customEventsOff[eventOff] = true;\n possibleCustomEvents\n .split(' ')\n .forEach(event => (customEvents[event] = true));\n possibleCustomEventsOff\n .split(' ')\n .forEach(event => (customEventsOff[event] = true));\n\n this.unbindBodyListener(body);\n\n const listeners = (this.bodyModeListeners = {});\n if (event == null) {\n listeners.mouseover = bodyListener.bind(this, this.showTooltip, {});\n listeners.mousemove = bodyListener.bind(this, this.updateTooltip, {\n respectEffect: true\n });\n listeners.mouseout = bodyListener.bind(this, this.hideTooltip, {});\n }\n\n for (const event in customEvents) {\n listeners[event] = bodyListener.bind(\n this,\n e => {\n const targetEventOff =\n e.currentTarget.getAttribute('data-event-off') || eventOff;\n checkStatus.call(this, targetEventOff, e);\n },\n { customEvent: true }\n );\n }\n for (const event in customEventsOff) {\n listeners[event] = bodyListener.bind(this, this.hideTooltip, {\n customEvent: true\n });\n }\n for (const event in listeners) {\n body.addEventListener(event, listeners[event]);\n }\n };\n\n target.prototype.unbindBodyListener = function(body) {\n body = body || getBody();\n\n const listeners = this.bodyModeListeners;\n for (const event in listeners) {\n body.removeEventListener(event, listeners[event]);\n }\n };\n}\n","/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nconst getMutationObserverClass = () => {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n );\n};\n\nexport default function(target) {\n target.prototype.bindRemovalTracker = function() {\n const MutationObserver = getMutationObserverClass();\n if (MutationObserver == null) return;\n\n const observer = new MutationObserver(mutations => {\n for (let m1 = 0; m1 < mutations.length; m1++) {\n const mutation = mutations[m1];\n for (let m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n const element = mutation.removedNodes[m2];\n if (element === this.state.currentTarget) {\n this.hideTooltip();\n return;\n }\n }\n }\n });\n\n observer.observe(window.document, { childList: true, subtree: true });\n\n this.removalTracker = observer;\n };\n\n target.prototype.unbindRemovalTracker = function() {\n if (this.removalTracker) {\n this.removalTracker.disconnect();\n this.removalTracker = null;\n }\n };\n}\n","/**\n * Calculate the position of tooltip\n *\n * @params\n * - `e` {Event} the event of current mouse\n * - `target` {Element} the currentTarget of the event\n * - `node` {DOM} the react-tooltip object\n * - `place` {String} top / right / bottom / left\n * - `effect` {String} float / solid\n * - `offset` {Object} the offset to default position\n *\n * @return {Object}\n * - `isNewState` {Bool} required\n * - `newState` {Object}\n * - `position` {Object} {left: {Number}, top: {Number}}\n */\nexport default function(e, target, node, place, desiredPlace, effect, offset) {\n const { width: tipWidth, height: tipHeight } = getDimensions(node);\n\n const { width: targetWidth, height: targetHeight } = getDimensions(target);\n\n const { mouseX, mouseY } = getCurrentOffset(e, target, effect);\n const defaultOffset = getDefaultPosition(\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n );\n const { extraOffsetX, extraOffsetY } = calculateOffset(offset);\n\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const { parentTop, parentLeft } = getParent(node);\n\n // Get the edge offset of the tooltip\n const getTipOffsetLeft = place => {\n const offsetX = defaultOffset[place].l;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetRight = place => {\n const offsetX = defaultOffset[place].r;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetTop = place => {\n const offsetY = defaultOffset[place].t;\n return mouseY + offsetY + extraOffsetY;\n };\n const getTipOffsetBottom = place => {\n const offsetY = defaultOffset[place].b;\n return mouseY + offsetY + extraOffsetY;\n };\n\n //\n // Functions to test whether the tooltip's sides are inside\n // the client window for a given orientation p\n //\n // _____________\n // | | <-- Right side\n // | p = 'left' |\\\n // | |/ |\\\n // |_____________| |_\\ <-- Mouse\n // / \\ |\n // |\n // |\n // Bottom side\n //\n const outsideLeft = p => getTipOffsetLeft(p) < 0;\n const outsideRight = p => getTipOffsetRight(p) > windowWidth;\n const outsideTop = p => getTipOffsetTop(p) < 0;\n const outsideBottom = p => getTipOffsetBottom(p) > windowHeight;\n\n // Check whether the tooltip with orientation p is completely inside the client window\n const outside = p =>\n outsideLeft(p) || outsideRight(p) || outsideTop(p) || outsideBottom(p);\n const inside = p => !outside(p);\n\n const placesList = ['top', 'bottom', 'left', 'right'];\n const insideList = [];\n for (let i = 0; i < 4; i++) {\n const p = placesList[i];\n if (inside(p)) {\n insideList.push(p);\n }\n }\n\n let isNewState = false;\n let newPlace;\n const shouldUpdatePlace = desiredPlace !== place;\n if (inside(desiredPlace) && shouldUpdatePlace) {\n isNewState = true;\n newPlace = desiredPlace;\n } else if (insideList.length > 0 && outside(desiredPlace) && outside(place)) {\n isNewState = true;\n newPlace = insideList[0];\n }\n\n if (isNewState) {\n return {\n isNewState: true,\n newState: { place: newPlace }\n };\n }\n\n return {\n isNewState: false,\n position: {\n left: parseInt(getTipOffsetLeft(place) - parentLeft, 10),\n top: parseInt(getTipOffsetTop(place) - parentTop, 10)\n }\n };\n}\n\nconst getDimensions = node => {\n const { height, width } = node.getBoundingClientRect();\n return {\n height: parseInt(height, 10),\n width: parseInt(width, 10)\n };\n};\n\n// Get current mouse offset\nconst getCurrentOffset = (e, currentTarget, effect) => {\n const boundingClientRect = currentTarget.getBoundingClientRect();\n const targetTop = boundingClientRect.top;\n const targetLeft = boundingClientRect.left;\n const { width: targetWidth, height: targetHeight } = getDimensions(\n currentTarget\n );\n\n if (effect === 'float') {\n return {\n mouseX: e.clientX,\n mouseY: e.clientY\n };\n }\n return {\n mouseX: targetLeft + targetWidth / 2,\n mouseY: targetTop + targetHeight / 2\n };\n};\n\n// List all possibility of tooltip final offset\n// This is useful in judging if it is necessary for tooltip to switch position when out of window\nconst getDefaultPosition = (\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n) => {\n let top;\n let right;\n let bottom;\n let left;\n const disToMouse = 3;\n const triangleHeight = 2;\n const cursorHeight = 12; // Optimize for float bottom only, cause the cursor will hide the tooltip\n\n if (effect === 'float') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(tipHeight + disToMouse + triangleHeight),\n b: -disToMouse\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: disToMouse + cursorHeight,\n b: tipHeight + disToMouse + triangleHeight + cursorHeight\n };\n left = {\n l: -(tipWidth + disToMouse + triangleHeight),\n r: -disToMouse,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: disToMouse,\n r: tipWidth + disToMouse + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n } else if (effect === 'solid') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(targetHeight / 2 + tipHeight + triangleHeight),\n b: -(targetHeight / 2)\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: targetHeight / 2,\n b: targetHeight / 2 + tipHeight + triangleHeight\n };\n left = {\n l: -(tipWidth + targetWidth / 2 + triangleHeight),\n r: -(targetWidth / 2),\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: targetWidth / 2,\n r: tipWidth + targetWidth / 2 + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n }\n\n return { top, bottom, left, right };\n};\n\n// Consider additional offset into position calculation\nconst calculateOffset = offset => {\n let extraOffsetX = 0;\n let extraOffsetY = 0;\n\n if (Object.prototype.toString.apply(offset) === '[object String]') {\n offset = JSON.parse(offset.toString().replace(/'/g, '\"'));\n }\n for (const key in offset) {\n if (key === 'top') {\n extraOffsetY -= parseInt(offset[key], 10);\n } else if (key === 'bottom') {\n extraOffsetY += parseInt(offset[key], 10);\n } else if (key === 'left') {\n extraOffsetX -= parseInt(offset[key], 10);\n } else if (key === 'right') {\n extraOffsetX += parseInt(offset[key], 10);\n }\n }\n\n return { extraOffsetX, extraOffsetY };\n};\n\n// Get the offset of the parent elements\nconst getParent = currentTarget => {\n let currentParent = currentTarget;\n while (currentParent) {\n const computedStyle = window.getComputedStyle(currentParent);\n // transform and will-change: transform change the containing block\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_Block\n if (\n computedStyle.getPropertyValue('transform') !== 'none' ||\n computedStyle.getPropertyValue('will-change') === 'transform'\n )\n break;\n currentParent = currentParent.parentElement;\n }\n\n const parentTop =\n (currentParent && currentParent.getBoundingClientRect().top) || 0;\n const parentLeft =\n (currentParent && currentParent.getBoundingClientRect().left) || 0;\n\n return { parentTop, parentLeft };\n};\n","/**\n * To get the tooltip content\n * it may comes from data-tip or this.props.children\n * it should support multiline\n *\n * @params\n * - `tip` {String} value of data-tip\n * - `children` {ReactElement} this.props.children\n * - `multiline` {Any} could be Bool(true/false) or String('true'/'false')\n *\n * @return\n * - String or react component\n */\nimport React from 'react';\n\nexport default function(tip, children, getContent, multiline) {\n if (children) return children;\n if (getContent !== undefined && getContent !== null) return getContent; // getContent can be 0, '', etc.\n if (getContent === null) return null; // Tip not exist and children is null or undefined\n\n const regexp = /<br\\s*\\/?>/;\n if (!multiline || multiline === 'false' || !regexp.test(tip)) {\n // No trim(), so that user can keep their input\n return tip;\n }\n\n // Multiline tooltip content\n return tip.split(regexp).map((d, i) => {\n return (\n <span key={i} className=\"multi-line\">\n {d}\n </span>\n );\n });\n}\n","/**\n * Support aria- and role in ReactTooltip\n *\n * @params props {Object}\n * @return {Object}\n */\nexport function parseAria(props) {\n const ariaObj = {};\n Object.keys(props)\n .filter(prop => {\n // aria-xxx and role is acceptable\n return /(^aria-\\w+$|^role$)/.test(prop);\n })\n .forEach(prop => {\n ariaObj[prop] = props[prop];\n });\n\n return ariaObj;\n}\n","/**\n * Convert nodelist to array\n * @see https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/core/createArrayFromMixed.js#L24\n * NodeLists are functions in Safari\n */\n\nexport default function(nodeList) {\n const length = nodeList.length;\n if (nodeList.hasOwnProperty) {\n return Array.prototype.slice.call(nodeList);\n }\n return new Array(length).fill().map(index => nodeList[index]);\n}\n","import { v4 as uuid } from 'uuid';\n\nexport function generateUUID() {\n return 't' + uuid();\n}\n","/**\n * Default pop-up style values (text color, background color).\n */\nconst defaultColors = {\n dark: {\n text: '#fff',\n background: '#222',\n border: 'transparent',\n arrow: '#222'\n },\n success: {\n text: '#fff',\n background: '#8DC572',\n border: 'transparent',\n arrow: '#8DC572'\n },\n warning: {\n text: '#fff',\n background: '#F0AD4E',\n border: 'transparent',\n arrow: '#F0AD4E'\n },\n error: {\n text: '#fff',\n background: '#BE6464',\n border: 'transparent',\n arrow: '#BE6464'\n },\n info: {\n text: '#fff',\n background: '#337AB7',\n border: 'transparent',\n arrow: '#337AB7'\n },\n light: {\n text: '#222',\n background: '#fff',\n border: 'transparent',\n arrow: '#fff'\n }\n};\n\nexport function getDefaultPopupColors(type) {\n return defaultColors[type] ? { ...defaultColors[type] } : undefined;\n}\n","import { getDefaultPopupColors } from './defaultStyles';\n\n/**\n * Generates the specific tooltip style for use on render.\n */\nexport function generateTooltipStyle(uuid, customColors, type, hasBorder) {\n return generateStyle(uuid, getPopupColors(customColors, type, hasBorder));\n}\n\n/**\n * Generates the tooltip style rules based on the element-specified \"data-type\" property.\n */\nfunction generateStyle(uuid, colors) {\n const textColor = colors.text;\n const backgroundColor = colors.background;\n const borderColor = colors.border;\n const arrowColor = colors.arrow;\n\n return `\n \t.${uuid} {\n\t color: ${textColor};\n\t background: ${backgroundColor};\n\t border: 1px solid ${borderColor};\n \t}\n\n \t.${uuid}.place-top {\n margin-top: -10px;\n }\n .${uuid}.place-top::before {\n border-top: 8px solid ${borderColor};\n }\n .${uuid}.place-top::after {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n bottom: -6px;\n left: 50%;\n margin-left: -8px;\n border-top-color: ${arrowColor};\n border-top-style: solid;\n border-top-width: 6px;\n }\n\n .${uuid}.place-bottom {\n margin-top: 10px;\n }\n .${uuid}.place-bottom::before {\n border-bottom: 8px solid ${borderColor};\n }\n .${uuid}.place-bottom::after {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n top: -6px;\n left: 50%;\n margin-left: -8px;\n border-bottom-color: ${arrowColor};\n border-bottom-style: solid;\n border-bottom-width: 6px;\n }\n\n .${uuid}.place-left {\n margin-left: -10px;\n }\n .${uuid}.place-left::before {\n border-left: 8px solid ${borderColor};\n }\n .${uuid}.place-left::after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n right: -6px;\n top: 50%;\n margin-top: -4px;\n border-left-color: ${arrowColor};\n border-left-style: solid;\n border-left-width: 6px;\n }\n\n .${uuid}.place-right {\n margin-left: 10px;\n }\n .${uuid}.place-right::before {\n border-right: 8px solid ${borderColor};\n }\n .${uuid}.place-right::after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n left: -6px;\n top: 50%;\n margin-top: -4px;\n border-right-color: ${arrowColor};\n border-right-style: solid;\n border-right-width: 6px;\n }\n `;\n}\n\nfunction getPopupColors(customColors, type, hasBorder) {\n const textColor = customColors.text;\n const backgroundColor = customColors.background;\n const borderColor = customColors.border;\n const arrowColor = customColors.arrow\n ? customColors.arrow\n : customColors.background;\n\n const colors = getDefaultPopupColors(type);\n\n if (textColor) {\n colors.text = textColor;\n }\n\n if (backgroundColor) {\n colors.background = backgroundColor;\n }\n\n if (hasBorder) {\n if (borderColor) {\n colors.border = borderColor;\n } else {\n colors.border = type === 'light' ? 'black' : 'white';\n }\n }\n\n if (arrowColor) {\n colors.arrow = arrowColor;\n }\n\n return colors;\n}\n","/* eslint-disable no-unused-vars, dot-notation */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n/* Decorators */\nimport staticMethods from './decorators/staticMethods';\nimport windowListener from './decorators/windowListener';\nimport customEvent from './decorators/customEvent';\nimport isCapture from './decorators/isCapture';\nimport getEffect from './decorators/getEffect';\nimport bodyMode from './decorators/bodyMode';\nimport trackRemoval from './decorators/trackRemoval';\n\n/* Utils */\nimport getPosition from './utils/getPosition';\nimport getTipContent from './utils/getTipContent';\nimport { parseAria } from './utils/aria';\nimport nodeListToArray from './utils/nodeListToArray';\nimport { generateUUID } from './utils/uuid';\n\n/* CSS */\nimport baseCss from './index.scss';\nimport { generateTooltipStyle } from './decorators/styler';\n\n@staticMethods\n@windowListener\n@customEvent\n@isCapture\n@getEffect\n@bodyMode\n@trackRemoval\nclass ReactTooltip extends React.Component {\n static get propTypes() {\n return {\n uuid: PropTypes.string,\n children: PropTypes.any,\n place: PropTypes.string,\n type: PropTypes.string,\n effect: PropTypes.string,\n offset: PropTypes.object,\n multiline: PropTypes.bool,\n border: PropTypes.bool,\n textColor: PropTypes.string,\n backgroundColor: PropTypes.string,\n borderColor: PropTypes.string,\n arrowColor: PropTypes.string,\n insecure: PropTypes.bool,\n class: PropTypes.string,\n className: PropTypes.string,\n id: PropTypes.string,\n html: PropTypes.bool,\n delayHide: PropTypes.number,\n delayUpdate: PropTypes.number,\n delayShow: PropTypes.number,\n event: PropTypes.string,\n eventOff: PropTypes.string,\n isCapture: PropTypes.bool,\n globalEventOff: PropTypes.string,\n getContent: PropTypes.any,\n afterShow: PropTypes.func,\n afterHide: PropTypes.func,\n overridePosition: PropTypes.func,\n disable: PropTypes.bool,\n scrollHide: PropTypes.bool,\n resizeHide: PropTypes.bool,\n wrapper: PropTypes.string,\n bodyMode: PropTypes.bool,\n possibleCustomEvents: PropTypes.string,\n possibleCustomEventsOff: PropTypes.string,\n clickable: PropTypes.bool\n };\n }\n\n static defaultProps = {\n insecure: true,\n resizeHide: true,\n wrapper: 'div',\n clickable: false\n };\n\n static supportedWrappers = ['div', 'span'];\n\n static displayName = 'ReactTooltip';\n\n constructor(props) {\n super(props);\n\n this.state = {\n uuid: props.uuid || generateUUID(),\n place: props.place || 'top', // Direction of tooltip\n desiredPlace: props.place || 'top',\n type: 'dark', // Color theme of tooltip\n effect: 'float', // float or fixed\n show: false,\n border: false,\n customColors: {},\n offset: {},\n extraClass: '',\n html: false,\n delayHide: 0,\n delayShow: 0,\n event: props.event || null,\n eventOff: props.eventOff || null,\n currentEvent: null, // Current mouse event\n currentTarget: null, // Current target of mouse event\n ariaProps: parseAria(props), // aria- and role attributes\n isEmptyTip: false,\n disable: false,\n possibleCustomEvents: props.possibleCustomEvents || '',\n possibleCustomEventsOff: props.possibleCustomEventsOff || '',\n originTooltip: null,\n isMultiline: false\n };\n\n this.bind([\n 'showTooltip',\n 'updateTooltip',\n 'hideTooltip',\n 'hideTooltipOnScroll',\n 'getTooltipContent',\n 'globalRebuild',\n 'globalShow',\n 'globalHide',\n 'onWindowResize',\n 'mouseOnToolTip'\n ]);\n\n this.mount = true;\n this.delayShowLoop = null;\n this.delayHideLoop = null;\n this.delayReshow = null;\n this.intervalUpdateContent = null;\n }\n\n /**\n * For unify the bind and unbind listener\n */\n bind(methodArray) {\n methodArray.forEach(method => {\n this[method] = this[method].bind(this);\n });\n }\n\n componentDidMount() {\n const { insecure, resizeHide } = this.props;\n\n this.bindListener(); // Bind listener for tooltip\n this.bindWindowEvents(resizeHide); // Bind global event for static method\n this.injectStyles(); // Inject styles for each DOM root having tooltip.\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { ariaProps } = prevState;\n const newAriaProps = parseAria(nextProps);\n const isChanged = Object.keys(newAriaProps).some(props => {\n return newAriaProps[props] !== ariaProps[props];\n });\n if (!isChanged) {\n return null;\n }\n return {\n ...prevState,\n ariaProps: newAriaProps\n };\n }\n\n componentWillUnmount() {\n this.mount = false;\n\n this.clearTimer();\n\n this.unbindListener();\n this.removeScrollListener(this.state.currentTarget);\n this.unbindWindowEvents();\n }\n\n /* Look for the closest DOM root having tooltip and inject styles. */\n injectStyles() {\n const { tooltipRef } = this;\n if (!tooltipRef) {\n return;\n }\n\n let parentNode = tooltipRef.parentNode;\n while (parentNode.parentNode) {\n parentNode = parentNode.parentNode;\n }\n\n let domRoot;\n\n switch (parentNode.constructor.name) {\n case 'HTMLDocument':\n domRoot = parentNode.head;\n break;\n case 'ShadowRoot':\n default:\n domRoot = parentNode;\n break;\n }\n\n // Prevent styles duplication.\n if (!domRoot.querySelector('style[data-react-tooltip]')) {\n const style = document.createElement('style');\n style.textContent = baseCss;\n style.setAttribute('data-react-tooltip', 'true');\n\n domRoot.appendChild(style);\n }\n }\n\n /**\n * Return if the mouse is on the tooltip.\n * @returns {boolean} true - mouse is on the tooltip\n */\n mouseOnToolTip() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n /* old IE or Firefox work around */\n if (!this.tooltipRef.matches) {\n /* old IE work around */\n if (this.tooltipRef.msMatchesSelector) {\n this.tooltipRef.matches = this.tooltipRef.msMatchesSelector;\n } else {\n /* old Firefox work around */\n this.tooltipRef.matches = this.tooltipRef.mozMatchesSelector;\n }\n }\n return this.tooltipRef.matches(':hover');\n }\n return false;\n }\n\n /**\n * Pick out corresponded target elements\n */\n getTargetArray(id) {\n let targetArray = [];\n let selector;\n if (!id) {\n selector = '[data-tip]:not([data-for])';\n } else {\n const escaped = id.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n selector = `[data-tip][data-for=\"${escaped}\"]`;\n }\n\n // Scan document for shadow DOM elements\n nodeListToArray(document.getElementsByTagName('*'))\n .filter(element => element.shadowRoot)\n .forEach(element => {\n targetArray = targetArray.concat(\n nodeListToArray(element.shadowRoot.querySelectorAll(selector))\n );\n });\n return targetArray.concat(\n nodeListToArray(document.querySelectorAll(selector))\n );\n }\n\n /**\n * Bind listener to the target elements\n * These listeners used to trigger showing or hiding the tooltip\n */\n bindListener() {\n const { id, globalEventOff, isCapture } = this.props;\n const targetArray = this.getTargetArray(id);\n\n targetArray.forEach(target => {\n if (target.getAttribute('currentItem') === null) {\n target.setAttribute('currentItem', 'false');\n }\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) {\n this.customUnbindListener(target);\n }\n });\n\n if (this.isBodyMode()) {\n this.bindBodyListener(targetArray);\n } else {\n targetArray.forEach(target => {\n const isCaptureMode = this.isCapture(target);\n const effect = this.getEffect(target);\n if (this.isCustomEvent(target)) {\n this.customBindListener(target);\n return;\n }\n\n target.addEventListener('mouseenter', this.showTooltip, isCaptureMode);\n if (effect === 'float') {\n target.addEventListener(\n 'mousemove',\n this.updateTooltip,\n isCaptureMode\n );\n }\n target.addEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n });\n }\n\n // Global event to hide tooltip\n if (globalEventOff) {\n window.removeEventListener(globalEventOff, this.hideTooltip);\n window.addEventListener(globalEventOff, this.hideTooltip, isCapture);\n }\n\n // Track removal of targetArray elements from DOM\n this.bindRemovalTracker();\n }\n\n /**\n * Unbind listeners on target elements\n */\n unbindListener() {\n const { id, globalEventOff } = this.props;\n if (this.isBodyMode()) {\n this.unbindBodyListener();\n } else {\n const targetArray = this.getTargetArray(id);\n targetArray.forEach(target => {\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) this.customUnbindListener(target);\n });\n }\n\n if (globalEventOff)\n window.removeEventListener(globalEventOff, this.hideTooltip);\n this.unbindRemovalTracker();\n }\n\n /**\n * Invoke this before bind listener and unmount the component\n * it is necessary to invoke this even when binding custom event\n * so that the tooltip can switch between custom and default listener\n */\n unbindBasicListener(target) {\n const isCaptureMode = this.isCapture(target);\n target.removeEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.removeEventListener('mousemove', this.updateTooltip, isCaptureMode);\n target.removeEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n }\n\n getTooltipContent() {\n const { getContent, children } = this.props;\n\n // Generate tooltip content\n let content;\n if (getContent) {\n if (Array.isArray(getContent)) {\n content = getContent[0] && getContent[0](this.state.originTooltip);\n } else {\n content = getContent(this.state.originTooltip);\n }\n }\n\n return getTipContent(\n this.state.originTooltip,\n children,\n content,\n this.state.isMultiline\n );\n }\n\n isEmptyTip(placeholder) {\n return (\n (typeof placeholder === 'string' && placeholder === '') ||\n placeholder === null\n );\n }\n\n /**\n * When mouse enter, show the tooltip\n */\n showTooltip(e, isGlobalCall) {\n if (!this.tooltipRef) {\n return;\n }\n\n if (isGlobalCall) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some(ele => ele === e.currentTarget);\n if (!isMyElement) return;\n }\n // Get the tooltip content\n // calculate in this phrase so that tip width height can be detected\n const { multiline, getContent } = this.props;\n const originTooltip = e.currentTarget.getAttribute('data-tip');\n const isMultiline =\n e.currentTarget.getAttribute('data-multiline') || multiline || false;\n\n // If it is focus event or called by ReactTooltip.show, switch to `solid` effect\n const switchToSolid = e instanceof window.FocusEvent || isGlobalCall;\n\n // if it needs to skip adding hide listener to scroll\n let scrollHide = true;\n if (e.currentTarget.getAttribute('data-scroll-hide')) {\n scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';\n } else if (this.props.scrollHide != null) {\n scrollHide = this.props.scrollHide;\n }\n\n // Make sure the correct place is set\n const desiredPlace =\n e.currentTarget.getAttribute('data-place') || this.props.place || 'top';\n const effect =\n (switchToSolid && 'solid') || this.getEffect(e.currentTarget);\n const offset =\n e.currentTarget.getAttribute('data-offset') || this.props.offset || {};\n const result = getPosition(\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace,\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace,\n desiredPlace,\n effect,\n offset\n );\n }\n\n const place = result.isNewState ? result.newState.place : desiredPlace;\n\n // To prevent previously created timers from triggering\n this.clearTimer();\n\n const target = e.currentTarget;\n\n const reshowDelay = this.state.show\n ? target.getAttribute('data-delay-update') || this.props.delayUpdate\n : 0;\n\n const self = this;\n\n const updateState = function updateState() {\n self.setState(\n {\n originTooltip: originTooltip,\n isMultiline: isMultiline,\n desiredPlace: desiredPlace,\n place: place,\n type: target.getAttribute('data-type') || self.props.type || 'dark',\n customColors: {\n text:\n target.getAttribute('data-text-color') ||\n self.props.textColor ||\n null,\n background:\n target.getAttribute('data-background-color') ||\n self.props.backgroundColor ||\n null,\n border:\n target.getAttribute('data-border-color') ||\n self.props.borderColor ||\n null,\n arrow:\n target.getAttribute('data-arrow-color') ||\n self.props.arrowColor ||\n null\n },\n effect: effect,\n offset: offset,\n html:\n (target.getAttribute('data-html')\n ? target.getAttribute('data-html') === 'true'\n : self.props.html) || false,\n delayShow:\n target.getAttribute('data-delay-show') || self.props.delayShow || 0,\n delayHide:\n target.getAttribute('data-delay-hide') || self.props.delayHide || 0,\n delayUpdate:\n target.getAttribute('data-delay-update') ||\n self.props.delayUpdate ||\n 0,\n border:\n (target.getAttribute('data-border')\n ? target.getAttribute('data-border') === 'true'\n : self.props.border) || false,\n extraClass:\n target.getAttribute('data-class') ||\n self.props.class ||\n self.props.className ||\n '',\n disable:\n (target.getAttribute('data-tip-disable')\n ? target.getAttribute('data-tip-disable') === 'true'\n : self.props.disable) || false,\n currentTarget: target\n },\n () => {\n if (scrollHide) {\n self.addScrollListener(self.state.currentTarget);\n }\n\n self.updateTooltip(e);\n\n if (getContent && Array.isArray(getContent)) {\n self.intervalUpdateContent = setInterval(() => {\n if (self.mount) {\n const { getContent } = self.props;\n const placeholder = getTipContent(\n originTooltip,\n '',\n getContent[0](),\n isMultiline\n );\n const isEmptyTip = self.isEmptyTip(placeholder);\n self.setState({ isEmptyTip });\n self.updatePosition();\n }\n }, getContent[1]);\n }\n }\n );\n };\n\n // If there is no delay call immediately, don't allow events to get in first.\n if (reshowDelay) {\n this.delayReshow = setTimeout(updateState, reshowDelay);\n } else {\n updateState();\n }\n }\n\n /**\n * When mouse hover, update tool tip\n */\n updateTooltip(e) {\n const { delayShow, disable } = this.state;\n const { afterShow } = this.props;\n const placeholder = this.getTooltipContent();\n const delayTime = parseInt(delayShow, 10);\n const eventTarget = e.currentTarget || e.target;\n\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n return;\n }\n\n // if the tooltip is empty, disable the tooltip\n if (this.isEmptyTip(placeholder) || disable) {\n return;\n }\n\n const updateState = () => {\n if (\n (Array.isArray(placeholder) && placeholder.length > 0) ||\n placeholder\n ) {\n const isInvisible = !this.state.show;\n this.setState(\n {\n currentEvent: e,\n currentTarget: eventTarget,\n show: true\n },\n () => {\n this.updatePosition();\n if (isInvisible && afterShow) {\n afterShow(e);\n }\n }\n );\n }\n };\n\n clearTimeout(this.delayShowLoop);\n if (delayShow) {\n this.delayShowLoop = setTimeout(updateState, delayTime);\n } else {\n updateState();\n }\n }\n\n /*\n * If we're mousing over the tooltip remove it when we leave.\n */\n listenForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.addEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n removeListenerForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.removeEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n /**\n * When mouse leave, hide tooltip\n */\n hideTooltip(e, hasTarget, options = { isScroll: false }) {\n const { disable } = this.state;\n const { isScroll } = options;\n const delayHide = isScroll ? 0 : this.state.delayHide;\n const { afterHide } = this.props;\n const placeholder = this.getTooltipContent();\n if (!this.mount) return;\n if (this.isEmptyTip(placeholder) || disable) return; // if the tooltip is empty, disable the tooltip\n if (hasTarget) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some(ele => ele === e.currentTarget);\n if (!isMyElement || !this.state.show) return;\n }\n\n const resetState = () => {\n const isVisible = this.state.show;\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n this.listenForTooltipExit();\n return;\n }\n\n this.removeListenerForTooltipExit();\n\n this.setState({ show: false }, () => {\n this.removeScrollListener(this.state.currentTarget);\n if (isVisible && afterHide) {\n afterHide(e);\n }\n });\n };\n\n this.clearTimer();\n if (delayHide) {\n this.delayHideLoop = setTimeout(resetState, parseInt(delayHide, 10));\n } else {\n resetState();\n }\n }\n\n /**\n * When scroll, hide tooltip\n */\n hideTooltipOnScroll(event, hasTarget) {\n this.hideTooltip(event, hasTarget, { isScroll: true });\n }\n\n /**\n * Add scroll event listener when tooltip show\n * automatically hide the tooltip when scrolling\n */\n addScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.addEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n }\n\n removeScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.removeEventListener(\n 'scroll',\n this.hideTooltipOnScroll,\n isCaptureMode\n );\n }\n\n // Calculation the position\n updatePosition() {\n const {\n currentEvent,\n currentTarget,\n place,\n desiredPlace,\n effect,\n offset\n } = this.state;\n const node = this.tooltipRef;\n const result = getPosition(\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n }\n\n if (result.isNewState) {\n // Switch to reverse placement\n return this.setState(result.newState, () => {\n this.updatePosition();\n });\n }\n\n // Set tooltip position\n node.style.left = result.position.left + 'px';\n node.style.top = result.position.top + 'px';\n }\n\n /**\n * CLear all kinds of timeout of interval\n */\n clearTimer() {\n clearTimeout(this.delayShowLoop);\n clearTimeout(this.delayHideLoop);\n clearTimeout(this.delayReshow);\n clearInterval(this.intervalUpdateContent);\n }\n\n hasCustomColors() {\n return Boolean(\n Object.keys(this.state.customColors).find(\n color => color !== 'border' && this.state.customColors[color]\n ) ||\n (this.state.border && this.state.customColors['border'])\n );\n }\n\n render() {\n const { extraClass, html, ariaProps, disable } = this.state;\n const content = this.getTooltipContent();\n const isEmptyTip = this.isEmptyTip(content);\n const style = generateTooltipStyle(\n this.state.uuid,\n this.state.customColors,\n this.state.type,\n this.state.border\n );\n\n const tooltipClass =\n '__react_component_tooltip' +\n ` ${this.state.uuid}` +\n (this.state.show && !disable && !isEmptyTip ? ' show' : '') +\n (this.state.border ? ' border' : '') +\n ` place-${this.state.place}` + // top, bottom, left, right\n ` type-${this.hasCustomColors() ? 'custom' : this.state.type}` + // dark, success, warning, error, info, light, custom\n (this.props.delayUpdate ? ' allow_hover' : '') +\n (this.props.clickable ? ' allow_click' : '');\n\n let Wrapper = this.props.wrapper;\n\n if (ReactTooltip.supportedWrappers.indexOf(Wrapper) < 0) {\n Wrapper = ReactTooltip.defaultProps.wrapper;\n }\n\n const wrapperClassName = [tooltipClass, extraClass]\n .filter(Boolean)\n .join(' ');\n\n if (html) {\n const htmlContent = `${content}\\n<style>${style}</style>`;\n\n return (\n <Wrapper\n className={`${wrapperClassName}`}\n id={this.props.id}\n ref={ref => (this.tooltipRef = ref)}\n {...ariaProps}\n data-id=\"tooltip\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n );\n } else {\n return (\n <Wrapper\n className={`${wrapperClassName}`}\n id={this.props.id}\n {...ariaProps}\n ref={ref => (this.tooltipRef = ref)}\n data-id=\"tooltip\"\n >\n <style dangerouslySetInnerHTML={{ __html: style }} />\n {content}\n </Wrapper>\n );\n }\n }\n}\n\nexport default ReactTooltip;\n"],"names":["GLOBAL","HIDE","REBUILD","SHOW","dispatchGlobalEvent","eventName","opts","event","window","CustomEvent","detail","document","createEvent","initEvent","dispatchEvent","target","hide","CONSTANT","rebuild","show","prototype","globalRebuild","mount","unbindListener","bindListener","globalShow","hasTarget","showTooltip","currentTarget","globalHide","hideTooltip","bindWindowEvents","resizeHide","removeEventListener","addEventListener","onWindowResize","unbindWindowEvents","checkStatus","dataEventOff","e","state","id","props","isCapture","currentItem","getAttribute","stopPropagation","setAttribute","setUntargetItems","getTargetArray","targetArray","i","length","customListeners","set","listener","map","Object","defineProperty","configurable","value","get","undefined","isCustomEvent","ele","customBindListener","eventOff","dataEvent","split","forEach","customListener","bind","customUnbindListener","getEffect","dataEffect","effect","makeProxy","proxy","key","bodyListener","callback","options","respectEffect","customEvent","tip","forId","isTargetBelongsToTooltip","findCustomEvents","dataAttribute","events","getBody","getElementsByTagName","isBodyMode","bodyMode","bindBodyListener","possibleCustomEvents","possibleCustomEventsOff","body","customEvents","customEventsOff","unbindBodyListener","listeners","bodyModeListeners","mouseover","mousemove","updateTooltip","mouseout","targetEventOff","call","getMutationObserverClass","MutationObserver","WebKitMutationObserver","MozMutationObserver","bindRemovalTracker","observer","mutations","m1","mutation","m2","removedNodes","element","observe","childList","subtree","removalTracker","unbindRemovalTracker","disconnect","node","place","desiredPlace","offset","getDimensions","tipWidth","width","tipHeight","height","targetWidth","targetHeight","getCurrentOffset","mouseX","mouseY","defaultOffset","getDefaultPosition","calculateOffset","extraOffsetX","extraOffsetY","windowWidth","innerWidth","windowHeight","innerHeight","getParent","parentTop","parentLeft","getTipOffsetLeft","offsetX","l","getTipOffsetRight","r","getTipOffsetTop","offsetY","t","getTipOffsetBottom","b","outsideLeft","p","outsideRight","outsideTop","outsideBottom","outside","inside","placesList","insideList","push","isNewState","newPlace","shouldUpdatePlace","newState","position","left","parseInt","top","getBoundingClientRect","boundingClientRect","targetTop","targetLeft","clientX","clientY","right","bottom","disToMouse","triangleHeight","cursorHeight","toString","apply","JSON","parse","replace","currentParent","computedStyle","getComputedStyle","getPropertyValue","parentElement","children","getContent","multiline","regexp","test","d","parseAria","ariaObj","keys","filter","prop","nodeList","hasOwnProperty","Array","slice","fill","index","generateUUID","uuid","defaultColors","dark","text","background","border","arrow","success","warning","error","info","light","getDefaultPopupColors","type","generateTooltipStyle","customColors","hasBorder","generateStyle","getPopupColors","colors","textColor","backgroundColor","borderColor","arrowColor","ReactTooltip","staticMethods","windowListener","trackRemoval","PropTypes","string","any","object","bool","insecure","className","html","delayHide","number","delayUpdate","delayShow","globalEventOff","afterShow","func","afterHide","overridePosition","disable","scrollHide","wrapper","clickable","extraClass","currentEvent","ariaProps","isEmptyTip","originTooltip","isMultiline","delayShowLoop","delayHideLoop","delayReshow","intervalUpdateContent","methodArray","method","injectStyles","clearTimer","removeScrollListener","tooltipRef","parentNode","domRoot","constructor","name","head","querySelector","style","createElement","textContent","baseCss","appendChild","matches","msMatchesSelector","mozMatchesSelector","selector","escaped","nodeListToArray","shadowRoot","concat","querySelectorAll","unbindBasicListener","isCaptureMode","content","isArray","getTipContent","placeholder","isGlobalCall","isMyElement","some","switchToSolid","FocusEvent","result","getPosition","reshowDelay","self","updateState","setState","addScrollListener","setInterval","updatePosition","setTimeout","getTooltipContent","delayTime","eventTarget","mouseOnToolTip","isInvisible","clearTimeout","isScroll","resetState","isVisible","listenForTooltipExit","removeListenerForTooltipExit","hideTooltipOnScroll","clearInterval","Boolean","find","color","tooltipClass","hasCustomColors","Wrapper","supportedWrappers","indexOf","defaultProps","wrapperClassName","join","htmlContent","ref","__html","nextProps","prevState","newAriaProps","isChanged","React","Component"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/constant.js","../src/decorators/staticMethods.js","../src/decorators/windowListener.js","../src/decorators/customEvent.js","../src/decorators/isCapture.js","../src/decorators/getEffect.js","../src/decorators/bodyMode.js","../src/decorators/trackRemoval.js","../src/utils/getPosition.js","../src/utils/getTipContent.js","../src/utils/aria.js","../src/utils/nodeListToArray.js","../src/utils/uuid.js","../src/decorators/defaultStyles.js","../src/decorators/styler.js","../src/index.js"],"sourcesContent":["export default {\n GLOBAL: {\n HIDE: '__react_tooltip_hide_event',\n REBUILD: '__react_tooltip_rebuild_event',\n SHOW: '__react_tooltip_show_event'\n }\n};\n","/**\n * Static methods for react-tooltip\n */\nimport CONSTANT from '../constant';\n\nconst dispatchGlobalEvent = (eventName, opts) => {\n // Compatible with IE\n // @see http://stackoverflow.com/questions/26596123/internet-explorer-9-10-11-event-constructor-doesnt-work\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n let event;\n\n if (typeof window.CustomEvent === 'function') {\n event = new window.CustomEvent(eventName, { detail: opts });\n } else {\n event = document.createEvent('Event');\n event.initEvent(eventName, false, true, opts);\n }\n\n window.dispatchEvent(event);\n};\n\nexport default function(target) {\n /**\n * Hide all tooltip\n * @trigger ReactTooltip.hide()\n */\n target.hide = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.HIDE, { target });\n };\n\n /**\n * Rebuild all tooltip\n * @trigger ReactTooltip.rebuild()\n */\n target.rebuild = () => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.REBUILD);\n };\n\n /**\n * Show specific tooltip\n * @trigger ReactTooltip.show()\n */\n target.show = target => {\n dispatchGlobalEvent(CONSTANT.GLOBAL.SHOW, { target });\n };\n\n target.prototype.globalRebuild = function() {\n if (this.mount) {\n this.unbindListener();\n this.bindListener();\n }\n };\n\n target.prototype.globalShow = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n // Create a fake event, specific show will limit the type to `solid`\n // only `float` type cares e.clientX e.clientY\n this.showTooltip(\n { currentTarget: hasTarget && event.detail.target },\n true\n );\n }\n };\n\n target.prototype.globalHide = function(event) {\n if (this.mount) {\n const hasTarget =\n (event && event.detail && event.detail.target && true) || false;\n this.hideTooltip(\n { currentTarget: hasTarget && event.detail.target },\n hasTarget\n );\n }\n };\n}\n","/**\n * Events that should be bound to the window\n */\nimport CONSTANT from '../constant';\n\nexport default function(target) {\n target.prototype.bindWindowEvents = function(resizeHide) {\n // ReactTooltip.hide\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.addEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide, false);\n\n // ReactTooltip.rebuild\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.addEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild, false);\n\n // ReactTooltip.show\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.addEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow, false);\n\n // Resize\n if (resizeHide) {\n window.removeEventListener('resize', this.onWindowResize);\n window.addEventListener('resize', this.onWindowResize, false);\n }\n };\n\n target.prototype.unbindWindowEvents = function() {\n window.removeEventListener(CONSTANT.GLOBAL.HIDE, this.globalHide);\n window.removeEventListener(CONSTANT.GLOBAL.REBUILD, this.globalRebuild);\n window.removeEventListener(CONSTANT.GLOBAL.SHOW, this.globalShow);\n window.removeEventListener('resize', this.onWindowResize);\n };\n\n /**\n * invoked by resize event of window\n */\n target.prototype.onWindowResize = function() {\n if (!this.mount) return;\n this.hideTooltip();\n };\n}\n","/**\n * Custom events to control showing and hiding of tooltip\n *\n * @attributes\n * - `event` {String}\n * - `eventOff` {String}\n */\n\nexport const checkStatus = function(dataEventOff, e) {\n const { show } = this.state;\n const { id } = this.props;\n const isCapture = this.isCapture(e.currentTarget);\n const currentItem = e.currentTarget.getAttribute('currentItem');\n\n if (!isCapture) e.stopPropagation();\n if (show && currentItem === 'true') {\n if (!dataEventOff) this.hideTooltip(e);\n } else {\n e.currentTarget.setAttribute('currentItem', 'true');\n setUntargetItems(e.currentTarget, this.getTargetArray(id));\n this.showTooltip(e);\n }\n};\n\nconst setUntargetItems = function(currentTarget, targetArray) {\n for (let i = 0; i < targetArray.length; i++) {\n if (currentTarget !== targetArray[i]) {\n targetArray[i].setAttribute('currentItem', 'false');\n } else {\n targetArray[i].setAttribute('currentItem', 'true');\n }\n }\n};\n\nconst customListeners = {\n id: '9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf',\n set(target, event, listener) {\n if (this.id in target) {\n const map = target[this.id];\n map[event] = listener;\n } else {\n // this is workaround for WeakMap, which is not supported in older browsers, such as IE\n Object.defineProperty(target, this.id, {\n configurable: true,\n value: { [event]: listener }\n });\n }\n },\n get(target, event) {\n const map = target[this.id];\n if (map !== undefined) {\n return map[event];\n }\n }\n};\n\nexport default function(target) {\n target.prototype.isCustomEvent = function(ele) {\n const { event } = this.state;\n return event || !!ele.getAttribute('data-event');\n };\n\n /* Bind listener for custom event */\n target.prototype.customBindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = ele.getAttribute('data-event') || event;\n const dataEventOff = ele.getAttribute('data-event-off') || eventOff;\n\n dataEvent.split(' ').forEach(event => {\n ele.removeEventListener(event, customListeners.get(ele, event));\n const customListener = checkStatus.bind(this, dataEventOff);\n customListeners.set(ele, event, customListener);\n ele.addEventListener(event, customListener, false);\n });\n if (dataEventOff) {\n dataEventOff.split(' ').forEach(event => {\n ele.removeEventListener(event, this.hideTooltip);\n ele.addEventListener(event, this.hideTooltip, false);\n });\n }\n };\n\n /* Unbind listener for custom event */\n target.prototype.customUnbindListener = function(ele) {\n const { event, eventOff } = this.state;\n const dataEvent = event || ele.getAttribute('data-event');\n const dataEventOff = eventOff || ele.getAttribute('data-event-off');\n\n ele.removeEventListener(dataEvent, customListeners.get(ele, event));\n if (dataEventOff) ele.removeEventListener(dataEventOff, this.hideTooltip);\n };\n}\n","/**\n * Util method to judge if it should follow capture model\n */\n\nexport default function(target) {\n target.prototype.isCapture = function(currentTarget) {\n return (\n (currentTarget &&\n currentTarget.getAttribute('data-iscapture') === 'true') ||\n this.props.isCapture ||\n false\n );\n };\n}\n","/**\n * Util method to get effect\n */\n\nexport default function(target) {\n target.prototype.getEffect = function(currentTarget) {\n const dataEffect = currentTarget.getAttribute('data-effect');\n return dataEffect || this.props.effect || 'float';\n };\n}\n","/**\n * Util method to get effect\n */\nimport { checkStatus } from './customEvent';\n\nconst makeProxy = e => {\n const proxy = {};\n for (const key in e) {\n if (typeof e[key] === 'function') {\n proxy[key] = e[key].bind(e);\n } else {\n proxy[key] = e[key];\n }\n }\n return proxy;\n};\n\nconst bodyListener = function(callback, options, e) {\n const { respectEffect = false, customEvent = false } = options;\n const { id } = this.props;\n\n const tip = e.target.getAttribute('data-tip') || null;\n const forId = e.target.getAttribute('data-for') || null;\n\n const target = e.target;\n if (this.isCustomEvent(target) && !customEvent) {\n return;\n }\n\n const isTargetBelongsToTooltip =\n (id == null && forId == null) || forId === id;\n\n if (\n tip != null &&\n (!respectEffect || this.getEffect(target) === 'float') &&\n isTargetBelongsToTooltip\n ) {\n const proxy = makeProxy(e);\n proxy.currentTarget = target;\n callback(proxy);\n }\n};\n\nconst findCustomEvents = (targetArray, dataAttribute) => {\n const events = {};\n targetArray.forEach(target => {\n const event = target.getAttribute(dataAttribute);\n if (event) event.split(' ').forEach(event => (events[event] = true));\n });\n\n return events;\n};\n\nconst getBody = () => document.getElementsByTagName('body')[0];\n\nexport default function(target) {\n target.prototype.isBodyMode = function() {\n return !!this.props.bodyMode;\n };\n\n target.prototype.bindBodyListener = function(targetArray) {\n const {\n event,\n eventOff,\n possibleCustomEvents,\n possibleCustomEventsOff\n } = this.state;\n const body = getBody();\n\n const customEvents = findCustomEvents(targetArray, 'data-event');\n const customEventsOff = findCustomEvents(targetArray, 'data-event-off');\n\n if (event != null) customEvents[event] = true;\n if (eventOff != null) customEventsOff[eventOff] = true;\n possibleCustomEvents\n .split(' ')\n .forEach(event => (customEvents[event] = true));\n possibleCustomEventsOff\n .split(' ')\n .forEach(event => (customEventsOff[event] = true));\n\n this.unbindBodyListener(body);\n\n const listeners = (this.bodyModeListeners = {});\n if (event == null) {\n listeners.mouseover = bodyListener.bind(this, this.showTooltip, {});\n listeners.mousemove = bodyListener.bind(this, this.updateTooltip, {\n respectEffect: true\n });\n listeners.mouseout = bodyListener.bind(this, this.hideTooltip, {});\n }\n\n for (const event in customEvents) {\n listeners[event] = bodyListener.bind(\n this,\n e => {\n const targetEventOff =\n e.currentTarget.getAttribute('data-event-off') || eventOff;\n checkStatus.call(this, targetEventOff, e);\n },\n { customEvent: true }\n );\n }\n for (const event in customEventsOff) {\n listeners[event] = bodyListener.bind(this, this.hideTooltip, {\n customEvent: true\n });\n }\n for (const event in listeners) {\n body.addEventListener(event, listeners[event]);\n }\n };\n\n target.prototype.unbindBodyListener = function(body) {\n body = body || getBody();\n\n const listeners = this.bodyModeListeners;\n for (const event in listeners) {\n body.removeEventListener(event, listeners[event]);\n }\n };\n}\n","/**\n * Tracking target removing from DOM.\n * It's necessary to hide tooltip when it's target disappears.\n * Otherwise, the tooltip would be shown forever until another target\n * is triggered.\n *\n * If MutationObserver is not available, this feature just doesn't work.\n */\n\n// https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/\nconst getMutationObserverClass = () => {\n return (\n window.MutationObserver ||\n window.WebKitMutationObserver ||\n window.MozMutationObserver\n );\n};\n\nexport default function(target) {\n target.prototype.bindRemovalTracker = function() {\n const MutationObserver = getMutationObserverClass();\n if (MutationObserver == null) return;\n\n const observer = new MutationObserver(mutations => {\n for (let m1 = 0; m1 < mutations.length; m1++) {\n const mutation = mutations[m1];\n for (let m2 = 0; m2 < mutation.removedNodes.length; m2++) {\n const element = mutation.removedNodes[m2];\n if (element === this.state.currentTarget) {\n this.hideTooltip();\n return;\n }\n }\n }\n });\n\n observer.observe(window.document, { childList: true, subtree: true });\n\n this.removalTracker = observer;\n };\n\n target.prototype.unbindRemovalTracker = function() {\n if (this.removalTracker) {\n this.removalTracker.disconnect();\n this.removalTracker = null;\n }\n };\n}\n","/**\n * Calculate the position of tooltip\n *\n * @params\n * - `e` {Event} the event of current mouse\n * - `target` {Element} the currentTarget of the event\n * - `node` {DOM} the react-tooltip object\n * - `place` {String} top / right / bottom / left\n * - `effect` {String} float / solid\n * - `offset` {Object} the offset to default position\n *\n * @return {Object}\n * - `isNewState` {Bool} required\n * - `newState` {Object}\n * - `position` {Object} {left: {Number}, top: {Number}}\n */\nexport default function(e, target, node, place, desiredPlace, effect, offset) {\n const { width: tipWidth, height: tipHeight } = getDimensions(node);\n\n const { width: targetWidth, height: targetHeight } = getDimensions(target);\n\n const { mouseX, mouseY } = getCurrentOffset(e, target, effect);\n const defaultOffset = getDefaultPosition(\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n );\n const { extraOffsetX, extraOffsetY } = calculateOffset(offset);\n\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n const { parentTop, parentLeft } = getParent(node);\n\n // Get the edge offset of the tooltip\n const getTipOffsetLeft = place => {\n const offsetX = defaultOffset[place].l;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetRight = place => {\n const offsetX = defaultOffset[place].r;\n return mouseX + offsetX + extraOffsetX;\n };\n const getTipOffsetTop = place => {\n const offsetY = defaultOffset[place].t;\n return mouseY + offsetY + extraOffsetY;\n };\n const getTipOffsetBottom = place => {\n const offsetY = defaultOffset[place].b;\n return mouseY + offsetY + extraOffsetY;\n };\n\n //\n // Functions to test whether the tooltip's sides are inside\n // the client window for a given orientation p\n //\n // _____________\n // | | <-- Right side\n // | p = 'left' |\\\n // | |/ |\\\n // |_____________| |_\\ <-- Mouse\n // / \\ |\n // |\n // |\n // Bottom side\n //\n const outsideLeft = p => getTipOffsetLeft(p) < 0;\n const outsideRight = p => getTipOffsetRight(p) > windowWidth;\n const outsideTop = p => getTipOffsetTop(p) < 0;\n const outsideBottom = p => getTipOffsetBottom(p) > windowHeight;\n\n // Check whether the tooltip with orientation p is completely inside the client window\n const outside = p =>\n outsideLeft(p) || outsideRight(p) || outsideTop(p) || outsideBottom(p);\n const inside = p => !outside(p);\n\n const placesList = ['top', 'bottom', 'left', 'right'];\n const insideList = [];\n for (let i = 0; i < 4; i++) {\n const p = placesList[i];\n if (inside(p)) {\n insideList.push(p);\n }\n }\n\n let isNewState = false;\n let newPlace;\n const shouldUpdatePlace = desiredPlace !== place;\n if (inside(desiredPlace) && shouldUpdatePlace) {\n isNewState = true;\n newPlace = desiredPlace;\n } else if (insideList.length > 0 && outside(desiredPlace) && outside(place)) {\n isNewState = true;\n newPlace = insideList[0];\n }\n\n if (isNewState) {\n return {\n isNewState: true,\n newState: { place: newPlace }\n };\n }\n\n return {\n isNewState: false,\n position: {\n left: parseInt(getTipOffsetLeft(place) - parentLeft, 10),\n top: parseInt(getTipOffsetTop(place) - parentTop, 10)\n }\n };\n}\n\nconst getDimensions = node => {\n const { height, width } = node.getBoundingClientRect();\n return {\n height: parseInt(height, 10),\n width: parseInt(width, 10)\n };\n};\n\n// Get current mouse offset\nconst getCurrentOffset = (e, currentTarget, effect) => {\n const boundingClientRect = currentTarget.getBoundingClientRect();\n const targetTop = boundingClientRect.top;\n const targetLeft = boundingClientRect.left;\n const { width: targetWidth, height: targetHeight } = getDimensions(\n currentTarget\n );\n\n if (effect === 'float') {\n return {\n mouseX: e.clientX,\n mouseY: e.clientY\n };\n }\n return {\n mouseX: targetLeft + targetWidth / 2,\n mouseY: targetTop + targetHeight / 2\n };\n};\n\n// List all possibility of tooltip final offset\n// This is useful in judging if it is necessary for tooltip to switch position when out of window\nconst getDefaultPosition = (\n effect,\n targetWidth,\n targetHeight,\n tipWidth,\n tipHeight\n) => {\n let top;\n let right;\n let bottom;\n let left;\n const disToMouse = 3;\n const triangleHeight = 2;\n const cursorHeight = 12; // Optimize for float bottom only, cause the cursor will hide the tooltip\n\n if (effect === 'float') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(tipHeight + disToMouse + triangleHeight),\n b: -disToMouse\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: disToMouse + cursorHeight,\n b: tipHeight + disToMouse + triangleHeight + cursorHeight\n };\n left = {\n l: -(tipWidth + disToMouse + triangleHeight),\n r: -disToMouse,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: disToMouse,\n r: tipWidth + disToMouse + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n } else if (effect === 'solid') {\n top = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: -(targetHeight / 2 + tipHeight + triangleHeight),\n b: -(targetHeight / 2)\n };\n bottom = {\n l: -(tipWidth / 2),\n r: tipWidth / 2,\n t: targetHeight / 2,\n b: targetHeight / 2 + tipHeight + triangleHeight\n };\n left = {\n l: -(tipWidth + targetWidth / 2 + triangleHeight),\n r: -(targetWidth / 2),\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n right = {\n l: targetWidth / 2,\n r: tipWidth + targetWidth / 2 + triangleHeight,\n t: -(tipHeight / 2),\n b: tipHeight / 2\n };\n }\n\n return { top, bottom, left, right };\n};\n\n// Consider additional offset into position calculation\nconst calculateOffset = offset => {\n let extraOffsetX = 0;\n let extraOffsetY = 0;\n\n if (Object.prototype.toString.apply(offset) === '[object String]') {\n offset = JSON.parse(offset.toString().replace(/'/g, '\"'));\n }\n for (const key in offset) {\n if (key === 'top') {\n extraOffsetY -= parseInt(offset[key], 10);\n } else if (key === 'bottom') {\n extraOffsetY += parseInt(offset[key], 10);\n } else if (key === 'left') {\n extraOffsetX -= parseInt(offset[key], 10);\n } else if (key === 'right') {\n extraOffsetX += parseInt(offset[key], 10);\n }\n }\n\n return { extraOffsetX, extraOffsetY };\n};\n\n// Get the offset of the parent elements\nconst getParent = currentTarget => {\n let currentParent = currentTarget;\n while (currentParent) {\n const computedStyle = window.getComputedStyle(currentParent);\n // transform and will-change: transform change the containing block\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_Block\n if (\n computedStyle.getPropertyValue('transform') !== 'none' ||\n computedStyle.getPropertyValue('will-change') === 'transform'\n )\n break;\n currentParent = currentParent.parentElement;\n }\n\n const parentTop =\n (currentParent && currentParent.getBoundingClientRect().top) || 0;\n const parentLeft =\n (currentParent && currentParent.getBoundingClientRect().left) || 0;\n\n return { parentTop, parentLeft };\n};\n","/**\n * To get the tooltip content\n * it may comes from data-tip or this.props.children\n * it should support multiline\n *\n * @params\n * - `tip` {String} value of data-tip\n * - `children` {ReactElement} this.props.children\n * - `multiline` {Any} could be Bool(true/false) or String('true'/'false')\n *\n * @return\n * - String or react component\n */\nimport React from 'react';\n\nexport default function(tip, children, getContent, multiline) {\n if (children) return children;\n if (getContent !== undefined && getContent !== null) return getContent; // getContent can be 0, '', etc.\n if (getContent === null) return null; // Tip not exist and children is null or undefined\n\n const regexp = /<br\\s*\\/?>/;\n if (!multiline || multiline === 'false' || !regexp.test(tip)) {\n // No trim(), so that user can keep their input\n return tip;\n }\n\n // Multiline tooltip content\n return tip.split(regexp).map((d, i) => {\n return (\n <span key={i} className=\"multi-line\">\n {d}\n </span>\n );\n });\n}\n","/**\n * Support aria- and role in ReactTooltip\n *\n * @params props {Object}\n * @return {Object}\n */\nexport function parseAria(props) {\n const ariaObj = {};\n Object.keys(props)\n .filter(prop => {\n // aria-xxx and role is acceptable\n return /(^aria-\\w+$|^role$)/.test(prop);\n })\n .forEach(prop => {\n ariaObj[prop] = props[prop];\n });\n\n return ariaObj;\n}\n","/**\n * Convert nodelist to array\n * @see https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/core/createArrayFromMixed.js#L24\n * NodeLists are functions in Safari\n */\n\nexport default function(nodeList) {\n const length = nodeList.length;\n if (nodeList.hasOwnProperty) {\n return Array.prototype.slice.call(nodeList);\n }\n return new Array(length).fill().map(index => nodeList[index]);\n}\n","import { v4 as uuid } from 'uuid';\n\nexport function generateUUID() {\n return 't' + uuid();\n}\n","/**\n * Default pop-up style values (text color, background color).\n */\nconst defaultColors = {\n dark: {\n text: '#fff',\n background: '#222',\n border: 'transparent',\n arrow: '#222'\n },\n success: {\n text: '#fff',\n background: '#8DC572',\n border: 'transparent',\n arrow: '#8DC572'\n },\n warning: {\n text: '#fff',\n background: '#F0AD4E',\n border: 'transparent',\n arrow: '#F0AD4E'\n },\n error: {\n text: '#fff',\n background: '#BE6464',\n border: 'transparent',\n arrow: '#BE6464'\n },\n info: {\n text: '#fff',\n background: '#337AB7',\n border: 'transparent',\n arrow: '#337AB7'\n },\n light: {\n text: '#222',\n background: '#fff',\n border: 'transparent',\n arrow: '#fff'\n }\n};\n\nexport function getDefaultPopupColors(type) {\n return defaultColors[type] ? { ...defaultColors[type] } : undefined;\n}\n","import { getDefaultPopupColors } from './defaultStyles';\n\n/**\n * Generates the specific tooltip style for use on render.\n */\nexport function generateTooltipStyle(uuid, customColors, type, hasBorder) {\n return generateStyle(uuid, getPopupColors(customColors, type, hasBorder));\n}\n\n/**\n * Generates the tooltip style rules based on the element-specified \"data-type\" property.\n */\nfunction generateStyle(uuid, colors) {\n const textColor = colors.text;\n const backgroundColor = colors.background;\n const borderColor = colors.border;\n const arrowColor = colors.arrow;\n\n return `\n \t.${uuid} {\n\t color: ${textColor};\n\t background: ${backgroundColor};\n\t border: 1px solid ${borderColor};\n \t}\n\n \t.${uuid}.place-top {\n margin-top: -10px;\n }\n .${uuid}.place-top::before {\n border-top: 8px solid ${borderColor};\n }\n .${uuid}.place-top::after {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n bottom: -6px;\n left: 50%;\n margin-left: -8px;\n border-top-color: ${arrowColor};\n border-top-style: solid;\n border-top-width: 6px;\n }\n\n .${uuid}.place-bottom {\n margin-top: 10px;\n }\n .${uuid}.place-bottom::before {\n border-bottom: 8px solid ${borderColor};\n }\n .${uuid}.place-bottom::after {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n top: -6px;\n left: 50%;\n margin-left: -8px;\n border-bottom-color: ${arrowColor};\n border-bottom-style: solid;\n border-bottom-width: 6px;\n }\n\n .${uuid}.place-left {\n margin-left: -10px;\n }\n .${uuid}.place-left::before {\n border-left: 8px solid ${borderColor};\n }\n .${uuid}.place-left::after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n right: -6px;\n top: 50%;\n margin-top: -4px;\n border-left-color: ${arrowColor};\n border-left-style: solid;\n border-left-width: 6px;\n }\n\n .${uuid}.place-right {\n margin-left: 10px;\n }\n .${uuid}.place-right::before {\n border-right: 8px solid ${borderColor};\n }\n .${uuid}.place-right::after {\n border-top: 5px solid transparent;\n border-bottom: 5px solid transparent;\n left: -6px;\n top: 50%;\n margin-top: -4px;\n border-right-color: ${arrowColor};\n border-right-style: solid;\n border-right-width: 6px;\n }\n `;\n}\n\nfunction getPopupColors(customColors, type, hasBorder) {\n const textColor = customColors.text;\n const backgroundColor = customColors.background;\n const borderColor = customColors.border;\n const arrowColor = customColors.arrow\n ? customColors.arrow\n : customColors.background;\n\n const colors = getDefaultPopupColors(type);\n\n if (textColor) {\n colors.text = textColor;\n }\n\n if (backgroundColor) {\n colors.background = backgroundColor;\n }\n\n if (hasBorder) {\n if (borderColor) {\n colors.border = borderColor;\n } else {\n colors.border = type === 'light' ? 'black' : 'white';\n }\n }\n\n if (arrowColor) {\n colors.arrow = arrowColor;\n }\n\n return colors;\n}\n","/* eslint-disable no-unused-vars, dot-notation */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\n/* Decorators */\nimport staticMethods from './decorators/staticMethods';\nimport windowListener from './decorators/windowListener';\nimport customEvent from './decorators/customEvent';\nimport isCapture from './decorators/isCapture';\nimport getEffect from './decorators/getEffect';\nimport bodyMode from './decorators/bodyMode';\nimport trackRemoval from './decorators/trackRemoval';\n\n/* Utils */\nimport getPosition from './utils/getPosition';\nimport getTipContent from './utils/getTipContent';\nimport { parseAria } from './utils/aria';\nimport nodeListToArray from './utils/nodeListToArray';\nimport { generateUUID } from './utils/uuid';\n\n/* CSS */\nimport baseCss from './index.scss';\nimport { generateTooltipStyle } from './decorators/styler';\n\n@staticMethods\n@windowListener\n@customEvent\n@isCapture\n@getEffect\n@bodyMode\n@trackRemoval\nclass ReactTooltip extends React.Component {\n static get propTypes() {\n return {\n uuid: PropTypes.string,\n children: PropTypes.any,\n place: PropTypes.string,\n type: PropTypes.string,\n effect: PropTypes.string,\n offset: PropTypes.object,\n multiline: PropTypes.bool,\n border: PropTypes.bool,\n textColor: PropTypes.string,\n backgroundColor: PropTypes.string,\n borderColor: PropTypes.string,\n arrowColor: PropTypes.string,\n insecure: PropTypes.bool,\n class: PropTypes.string,\n className: PropTypes.string,\n id: PropTypes.string,\n html: PropTypes.bool,\n delayHide: PropTypes.number,\n delayUpdate: PropTypes.number,\n delayShow: PropTypes.number,\n event: PropTypes.string,\n eventOff: PropTypes.string,\n isCapture: PropTypes.bool,\n globalEventOff: PropTypes.string,\n getContent: PropTypes.any,\n afterShow: PropTypes.func,\n afterHide: PropTypes.func,\n overridePosition: PropTypes.func,\n disable: PropTypes.bool,\n scrollHide: PropTypes.bool,\n resizeHide: PropTypes.bool,\n wrapper: PropTypes.string,\n bodyMode: PropTypes.bool,\n possibleCustomEvents: PropTypes.string,\n possibleCustomEventsOff: PropTypes.string,\n clickable: PropTypes.bool\n };\n }\n\n static defaultProps = {\n insecure: true,\n resizeHide: true,\n wrapper: 'div',\n clickable: false\n };\n\n static supportedWrappers = ['div', 'span'];\n\n static displayName = 'ReactTooltip';\n\n constructor(props) {\n super(props);\n\n this.state = {\n uuid: props.uuid || generateUUID(),\n place: props.place || 'top', // Direction of tooltip\n desiredPlace: props.place || 'top',\n type: 'dark', // Color theme of tooltip\n effect: 'float', // float or fixed\n show: false,\n border: false,\n customColors: {},\n offset: {},\n extraClass: '',\n html: false,\n delayHide: 0,\n delayShow: 0,\n event: props.event || null,\n eventOff: props.eventOff || null,\n currentEvent: null, // Current mouse event\n currentTarget: null, // Current target of mouse event\n ariaProps: parseAria(props), // aria- and role attributes\n isEmptyTip: false,\n disable: false,\n possibleCustomEvents: props.possibleCustomEvents || '',\n possibleCustomEventsOff: props.possibleCustomEventsOff || '',\n originTooltip: null,\n isMultiline: false\n };\n\n this.bind([\n 'showTooltip',\n 'updateTooltip',\n 'hideTooltip',\n 'hideTooltipOnScroll',\n 'getTooltipContent',\n 'globalRebuild',\n 'globalShow',\n 'globalHide',\n 'onWindowResize',\n 'mouseOnToolTip'\n ]);\n\n this.mount = true;\n this.delayShowLoop = null;\n this.delayHideLoop = null;\n this.delayReshow = null;\n this.intervalUpdateContent = null;\n }\n\n /**\n * For unify the bind and unbind listener\n */\n bind(methodArray) {\n methodArray.forEach(method => {\n this[method] = this[method].bind(this);\n });\n }\n\n componentDidMount() {\n const { insecure, resizeHide } = this.props;\n\n this.bindListener(); // Bind listener for tooltip\n this.bindWindowEvents(resizeHide); // Bind global event for static method\n this.injectStyles(); // Inject styles for each DOM root having tooltip.\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const { ariaProps } = prevState;\n const newAriaProps = parseAria(nextProps);\n const isChanged = Object.keys(newAriaProps).some(props => {\n return newAriaProps[props] !== ariaProps[props];\n });\n if (!isChanged) {\n return null;\n }\n return {\n ...prevState,\n ariaProps: newAriaProps\n };\n }\n\n componentWillUnmount() {\n this.mount = false;\n\n this.clearTimer();\n\n this.unbindListener();\n this.removeScrollListener(this.state.currentTarget);\n this.unbindWindowEvents();\n }\n\n /* Look for the closest DOM root having tooltip and inject styles. */\n injectStyles() {\n const { tooltipRef } = this;\n if (!tooltipRef) {\n return;\n }\n\n let parentNode = tooltipRef.parentNode;\n while (parentNode.parentNode) {\n parentNode = parentNode.parentNode;\n }\n\n let domRoot;\n\n switch (parentNode.constructor.name) {\n case 'Document':\n case 'HTMLDocument':\n domRoot = parentNode.head;\n break;\n case 'ShadowRoot':\n default:\n domRoot = parentNode;\n break;\n }\n\n // Prevent styles duplication.\n if (!domRoot.querySelector('style[data-react-tooltip]')) {\n const style = document.createElement('style');\n style.textContent = baseCss;\n style.setAttribute('data-react-tooltip', 'true');\n\n domRoot.appendChild(style);\n }\n }\n\n /**\n * Return if the mouse is on the tooltip.\n * @returns {boolean} true - mouse is on the tooltip\n */\n mouseOnToolTip() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n /* old IE or Firefox work around */\n if (!this.tooltipRef.matches) {\n /* old IE work around */\n if (this.tooltipRef.msMatchesSelector) {\n this.tooltipRef.matches = this.tooltipRef.msMatchesSelector;\n } else {\n /* old Firefox work around */\n this.tooltipRef.matches = this.tooltipRef.mozMatchesSelector;\n }\n }\n return this.tooltipRef.matches(':hover');\n }\n return false;\n }\n\n /**\n * Pick out corresponded target elements\n */\n getTargetArray(id) {\n let targetArray = [];\n let selector;\n if (!id) {\n selector = '[data-tip]:not([data-for])';\n } else {\n const escaped = id.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n selector = `[data-tip][data-for=\"${escaped}\"]`;\n }\n\n // Scan document for shadow DOM elements\n nodeListToArray(document.getElementsByTagName('*'))\n .filter(element => element.shadowRoot)\n .forEach(element => {\n targetArray = targetArray.concat(\n nodeListToArray(element.shadowRoot.querySelectorAll(selector))\n );\n });\n return targetArray.concat(\n nodeListToArray(document.querySelectorAll(selector))\n );\n }\n\n /**\n * Bind listener to the target elements\n * These listeners used to trigger showing or hiding the tooltip\n */\n bindListener() {\n const { id, globalEventOff, isCapture } = this.props;\n const targetArray = this.getTargetArray(id);\n\n targetArray.forEach(target => {\n if (target.getAttribute('currentItem') === null) {\n target.setAttribute('currentItem', 'false');\n }\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) {\n this.customUnbindListener(target);\n }\n });\n\n if (this.isBodyMode()) {\n this.bindBodyListener(targetArray);\n } else {\n targetArray.forEach(target => {\n const isCaptureMode = this.isCapture(target);\n const effect = this.getEffect(target);\n if (this.isCustomEvent(target)) {\n this.customBindListener(target);\n return;\n }\n\n target.addEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.addEventListener('focus', this.showTooltip, isCaptureMode);\n if (effect === 'float') {\n target.addEventListener(\n 'mousemove',\n this.updateTooltip,\n isCaptureMode\n );\n }\n target.addEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n target.addEventListener('blur', this.showTooltip, isCaptureMode);\n });\n }\n\n // Global event to hide tooltip\n if (globalEventOff) {\n window.removeEventListener(globalEventOff, this.hideTooltip);\n window.addEventListener(globalEventOff, this.hideTooltip, isCapture);\n }\n\n // Track removal of targetArray elements from DOM\n this.bindRemovalTracker();\n }\n\n /**\n * Unbind listeners on target elements\n */\n unbindListener() {\n const { id, globalEventOff } = this.props;\n if (this.isBodyMode()) {\n this.unbindBodyListener();\n } else {\n const targetArray = this.getTargetArray(id);\n targetArray.forEach(target => {\n this.unbindBasicListener(target);\n if (this.isCustomEvent(target)) this.customUnbindListener(target);\n });\n }\n\n if (globalEventOff)\n window.removeEventListener(globalEventOff, this.hideTooltip);\n this.unbindRemovalTracker();\n }\n\n /**\n * Invoke this before bind listener and unmount the component\n * it is necessary to invoke this even when binding custom event\n * so that the tooltip can switch between custom and default listener\n */\n unbindBasicListener(target) {\n const isCaptureMode = this.isCapture(target);\n target.removeEventListener('mouseenter', this.showTooltip, isCaptureMode);\n target.removeEventListener('mousemove', this.updateTooltip, isCaptureMode);\n target.removeEventListener('mouseleave', this.hideTooltip, isCaptureMode);\n }\n\n getTooltipContent() {\n const { getContent, children } = this.props;\n\n // Generate tooltip content\n let content;\n if (getContent) {\n if (Array.isArray(getContent)) {\n content = getContent[0] && getContent[0](this.state.originTooltip);\n } else {\n content = getContent(this.state.originTooltip);\n }\n }\n\n return getTipContent(\n this.state.originTooltip,\n children,\n content,\n this.state.isMultiline\n );\n }\n\n isEmptyTip(placeholder) {\n return (\n (typeof placeholder === 'string' && placeholder === '') ||\n placeholder === null\n );\n }\n\n /**\n * When mouse enter, show the tooltip\n */\n showTooltip(e, isGlobalCall) {\n if (!this.tooltipRef) {\n return;\n }\n\n if (isGlobalCall) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some(ele => ele === e.currentTarget);\n if (!isMyElement) return;\n }\n // Get the tooltip content\n // calculate in this phrase so that tip width height can be detected\n const { multiline, getContent } = this.props;\n const originTooltip = e.currentTarget.getAttribute('data-tip');\n const isMultiline =\n e.currentTarget.getAttribute('data-multiline') || multiline || false;\n\n // If it is focus event or called by ReactTooltip.show, switch to `solid` effect\n const switchToSolid = e instanceof window.FocusEvent || isGlobalCall;\n\n // if it needs to skip adding hide listener to scroll\n let scrollHide = true;\n if (e.currentTarget.getAttribute('data-scroll-hide')) {\n scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';\n } else if (this.props.scrollHide != null) {\n scrollHide = this.props.scrollHide;\n }\n\n // adding aria-describedby to target to make tooltips read by screen readers\n if (e && e.currentTarget && e.currentTarget.setAttribute) {\n e.currentTarget.setAttribute('aria-describedby', this.state.uuid);\n }\n\n // Make sure the correct place is set\n const desiredPlace =\n e.currentTarget.getAttribute('data-place') || this.props.place || 'top';\n const effect =\n (switchToSolid && 'solid') || this.getEffect(e.currentTarget);\n const offset =\n e.currentTarget.getAttribute('data-offset') || this.props.offset || {};\n const result = getPosition(\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace,\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n e,\n e.currentTarget,\n this.tooltipRef,\n desiredPlace,\n desiredPlace,\n effect,\n offset\n );\n }\n\n const place = result.isNewState ? result.newState.place : desiredPlace;\n\n // To prevent previously created timers from triggering\n this.clearTimer();\n\n const target = e.currentTarget;\n\n const reshowDelay = this.state.show\n ? target.getAttribute('data-delay-update') || this.props.delayUpdate\n : 0;\n\n const self = this;\n\n const updateState = function updateState() {\n self.setState(\n {\n originTooltip: originTooltip,\n isMultiline: isMultiline,\n desiredPlace: desiredPlace,\n place: place,\n type: target.getAttribute('data-type') || self.props.type || 'dark',\n customColors: {\n text:\n target.getAttribute('data-text-color') ||\n self.props.textColor ||\n null,\n background:\n target.getAttribute('data-background-color') ||\n self.props.backgroundColor ||\n null,\n border:\n target.getAttribute('data-border-color') ||\n self.props.borderColor ||\n null,\n arrow:\n target.getAttribute('data-arrow-color') ||\n self.props.arrowColor ||\n null\n },\n effect: effect,\n offset: offset,\n html:\n (target.getAttribute('data-html')\n ? target.getAttribute('data-html') === 'true'\n : self.props.html) || false,\n delayShow:\n target.getAttribute('data-delay-show') || self.props.delayShow || 0,\n delayHide:\n target.getAttribute('data-delay-hide') || self.props.delayHide || 0,\n delayUpdate:\n target.getAttribute('data-delay-update') ||\n self.props.delayUpdate ||\n 0,\n border:\n (target.getAttribute('data-border')\n ? target.getAttribute('data-border') === 'true'\n : self.props.border) || false,\n extraClass:\n target.getAttribute('data-class') ||\n self.props.class ||\n self.props.className ||\n '',\n disable:\n (target.getAttribute('data-tip-disable')\n ? target.getAttribute('data-tip-disable') === 'true'\n : self.props.disable) || false,\n currentTarget: target\n },\n () => {\n if (scrollHide) {\n self.addScrollListener(self.state.currentTarget);\n }\n\n self.updateTooltip(e);\n\n if (getContent && Array.isArray(getContent)) {\n self.intervalUpdateContent = setInterval(() => {\n if (self.mount) {\n const { getContent } = self.props;\n const placeholder = getTipContent(\n originTooltip,\n '',\n getContent[0](),\n isMultiline\n );\n const isEmptyTip = self.isEmptyTip(placeholder);\n self.setState({ isEmptyTip });\n self.updatePosition();\n }\n }, getContent[1]);\n }\n }\n );\n };\n\n // If there is no delay call immediately, don't allow events to get in first.\n if (reshowDelay) {\n this.delayReshow = setTimeout(updateState, reshowDelay);\n } else {\n updateState();\n }\n }\n\n /**\n * When mouse hover, update tool tip\n */\n updateTooltip(e) {\n const { delayShow, disable } = this.state;\n const { afterShow } = this.props;\n const placeholder = this.getTooltipContent();\n const eventTarget = e.currentTarget || e.target;\n\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n return;\n }\n\n // if the tooltip is empty, disable the tooltip\n if (this.isEmptyTip(placeholder) || disable) {\n return;\n }\n\n const delayTime = !this.state.show ? parseInt(delayShow, 10) : 0;\n\n const updateState = () => {\n if (\n (Array.isArray(placeholder) && placeholder.length > 0) ||\n placeholder\n ) {\n const isInvisible = !this.state.show;\n this.setState(\n {\n currentEvent: e,\n currentTarget: eventTarget,\n show: true\n },\n () => {\n this.updatePosition();\n if (isInvisible && afterShow) {\n afterShow(e);\n }\n }\n );\n }\n };\n\n clearTimeout(this.delayShowLoop);\n if (delayTime) {\n this.delayShowLoop = setTimeout(updateState, delayTime);\n } else {\n updateState();\n }\n }\n\n /*\n * If we're mousing over the tooltip remove it when we leave.\n */\n listenForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.addEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n removeListenerForTooltipExit() {\n const { show } = this.state;\n\n if (show && this.tooltipRef) {\n this.tooltipRef.removeEventListener('mouseleave', this.hideTooltip);\n }\n }\n\n /**\n * When mouse leave, hide tooltip\n */\n hideTooltip(e, hasTarget, options = { isScroll: false }) {\n const { disable } = this.state;\n const { isScroll } = options;\n const delayHide = isScroll ? 0 : this.state.delayHide;\n const { afterHide } = this.props;\n const placeholder = this.getTooltipContent();\n if (!this.mount) return;\n if (this.isEmptyTip(placeholder) || disable) return; // if the tooltip is empty, disable the tooltip\n if (hasTarget) {\n // Don't trigger other elements belongs to other ReactTooltip\n const targetArray = this.getTargetArray(this.props.id);\n const isMyElement = targetArray.some(ele => ele === e.currentTarget);\n if (!isMyElement || !this.state.show) return;\n }\n\n // clean up aria-describedby when hiding tooltip\n if (e && e.currentTarget && e.currentTarget.removeAttribute) {\n e.currentTarget.removeAttribute('aria-describedby');\n }\n\n const resetState = () => {\n const isVisible = this.state.show;\n // Check if the mouse is actually over the tooltip, if so don't hide the tooltip\n if (this.mouseOnToolTip()) {\n this.listenForTooltipExit();\n return;\n }\n\n this.removeListenerForTooltipExit();\n\n this.setState({ show: false }, () => {\n this.removeScrollListener(this.state.currentTarget);\n if (isVisible && afterHide) {\n afterHide(e);\n }\n });\n };\n\n this.clearTimer();\n if (delayHide) {\n this.delayHideLoop = setTimeout(resetState, parseInt(delayHide, 10));\n } else {\n resetState();\n }\n }\n\n /**\n * When scroll, hide tooltip\n */\n hideTooltipOnScroll(event, hasTarget) {\n this.hideTooltip(event, hasTarget, { isScroll: true });\n }\n\n /**\n * Add scroll event listener when tooltip show\n * automatically hide the tooltip when scrolling\n */\n addScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.addEventListener('scroll', this.hideTooltipOnScroll, isCaptureMode);\n }\n\n removeScrollListener(currentTarget) {\n const isCaptureMode = this.isCapture(currentTarget);\n window.removeEventListener(\n 'scroll',\n this.hideTooltipOnScroll,\n isCaptureMode\n );\n }\n\n // Calculation the position\n updatePosition() {\n const {\n currentEvent,\n currentTarget,\n place,\n desiredPlace,\n effect,\n offset\n } = this.state;\n const node = this.tooltipRef;\n const result = getPosition(\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n if (result.position && this.props.overridePosition) {\n result.position = this.props.overridePosition(\n result.position,\n currentEvent,\n currentTarget,\n node,\n place,\n desiredPlace,\n effect,\n offset\n );\n }\n\n if (result.isNewState) {\n // Switch to reverse placement\n return this.setState(result.newState, () => {\n this.updatePosition();\n });\n }\n\n // Set tooltip position\n node.style.left = result.position.left + 'px';\n node.style.top = result.position.top + 'px';\n }\n\n /**\n * CLear all kinds of timeout of interval\n */\n clearTimer() {\n clearTimeout(this.delayShowLoop);\n clearTimeout(this.delayHideLoop);\n clearTimeout(this.delayReshow);\n clearInterval(this.intervalUpdateContent);\n }\n\n hasCustomColors() {\n return Boolean(\n Object.keys(this.state.customColors).find(\n color => color !== 'border' && this.state.customColors[color]\n ) ||\n (this.state.border && this.state.customColors['border'])\n );\n }\n\n render() {\n const { extraClass, html, ariaProps, disable, uuid } = this.state;\n const content = this.getTooltipContent();\n const isEmptyTip = this.isEmptyTip(content);\n const style = generateTooltipStyle(\n this.state.uuid,\n this.state.customColors,\n this.state.type,\n this.state.border\n );\n\n const tooltipClass =\n '__react_component_tooltip' +\n ` ${this.state.uuid}` +\n (this.state.show && !disable && !isEmptyTip ? ' show' : '') +\n (this.state.border ? ' border' : '') +\n ` place-${this.state.place}` + // top, bottom, left, right\n ` type-${this.hasCustomColors() ? 'custom' : this.state.type}` + // dark, success, warning, error, info, light, custom\n (this.props.delayUpdate ? ' allow_hover' : '') +\n (this.props.clickable ? ' allow_click' : '');\n\n let Wrapper = this.props.wrapper;\n\n if (ReactTooltip.supportedWrappers.indexOf(Wrapper) < 0) {\n Wrapper = ReactTooltip.defaultProps.wrapper;\n }\n\n const wrapperClassName = [tooltipClass, extraClass]\n .filter(Boolean)\n .join(' ');\n\n if (html) {\n const htmlContent = `${content}\\n<style>${style}</style>`;\n\n return (\n <Wrapper\n className={`${wrapperClassName}`}\n id={this.props.id || uuid}\n ref={ref => (this.tooltipRef = ref)}\n {...ariaProps}\n data-id=\"tooltip\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n );\n } else {\n return (\n <Wrapper\n className={`${wrapperClassName}`}\n id={this.props.id || uuid}\n {...ariaProps}\n ref={ref => (this.tooltipRef = ref)}\n data-id=\"tooltip\"\n >\n <style dangerouslySetInnerHTML={{ __html: style }} />\n {content}\n </Wrapper>\n );\n }\n }\n}\n\nexport default ReactTooltip;\n"],"names":["GLOBAL","HIDE","REBUILD","SHOW","dispatchGlobalEvent","eventName","opts","event","window","CustomEvent","detail","document","createEvent","initEvent","dispatchEvent","target","hide","CONSTANT","rebuild","show","prototype","globalRebuild","mount","unbindListener","bindListener","globalShow","hasTarget","showTooltip","currentTarget","globalHide","hideTooltip","bindWindowEvents","resizeHide","removeEventListener","addEventListener","onWindowResize","unbindWindowEvents","checkStatus","dataEventOff","e","state","id","props","isCapture","currentItem","getAttribute","stopPropagation","setAttribute","setUntargetItems","getTargetArray","targetArray","i","length","customListeners","set","listener","map","Object","defineProperty","configurable","value","get","undefined","isCustomEvent","ele","customBindListener","eventOff","dataEvent","split","forEach","customListener","bind","customUnbindListener","getEffect","dataEffect","effect","makeProxy","proxy","key","bodyListener","callback","options","respectEffect","customEvent","tip","forId","isTargetBelongsToTooltip","findCustomEvents","dataAttribute","events","getBody","getElementsByTagName","isBodyMode","bodyMode","bindBodyListener","possibleCustomEvents","possibleCustomEventsOff","body","customEvents","customEventsOff","unbindBodyListener","listeners","bodyModeListeners","mouseover","mousemove","updateTooltip","mouseout","targetEventOff","call","getMutationObserverClass","MutationObserver","WebKitMutationObserver","MozMutationObserver","bindRemovalTracker","observer","mutations","m1","mutation","m2","removedNodes","element","observe","childList","subtree","removalTracker","unbindRemovalTracker","disconnect","node","place","desiredPlace","offset","getDimensions","tipWidth","width","tipHeight","height","targetWidth","targetHeight","getCurrentOffset","mouseX","mouseY","defaultOffset","getDefaultPosition","calculateOffset","extraOffsetX","extraOffsetY","windowWidth","innerWidth","windowHeight","innerHeight","getParent","parentTop","parentLeft","getTipOffsetLeft","offsetX","l","getTipOffsetRight","r","getTipOffsetTop","offsetY","t","getTipOffsetBottom","b","outsideLeft","p","outsideRight","outsideTop","outsideBottom","outside","inside","placesList","insideList","push","isNewState","newPlace","shouldUpdatePlace","newState","position","left","parseInt","top","getBoundingClientRect","boundingClientRect","targetTop","targetLeft","clientX","clientY","right","bottom","disToMouse","triangleHeight","cursorHeight","toString","apply","JSON","parse","replace","currentParent","computedStyle","getComputedStyle","getPropertyValue","parentElement","children","getContent","multiline","regexp","test","d","parseAria","ariaObj","keys","filter","prop","nodeList","hasOwnProperty","Array","slice","fill","index","generateUUID","uuid","defaultColors","dark","text","background","border","arrow","success","warning","error","info","light","getDefaultPopupColors","type","generateTooltipStyle","customColors","hasBorder","generateStyle","getPopupColors","colors","textColor","backgroundColor","borderColor","arrowColor","ReactTooltip","staticMethods","windowListener","trackRemoval","PropTypes","string","any","object","bool","insecure","className","html","delayHide","number","delayUpdate","delayShow","globalEventOff","afterShow","func","afterHide","overridePosition","disable","scrollHide","wrapper","clickable","extraClass","currentEvent","ariaProps","isEmptyTip","originTooltip","isMultiline","delayShowLoop","delayHideLoop","delayReshow","intervalUpdateContent","methodArray","method","injectStyles","clearTimer","removeScrollListener","tooltipRef","parentNode","domRoot","constructor","name","head","querySelector","style","createElement","textContent","baseCss","appendChild","matches","msMatchesSelector","mozMatchesSelector","selector","escaped","nodeListToArray","shadowRoot","concat","querySelectorAll","unbindBasicListener","isCaptureMode","content","isArray","getTipContent","placeholder","isGlobalCall","isMyElement","some","switchToSolid","FocusEvent","result","getPosition","reshowDelay","self","updateState","setState","addScrollListener","setInterval","updatePosition","setTimeout","getTooltipContent","eventTarget","mouseOnToolTip","delayTime","isInvisible","clearTimeout","isScroll","removeAttribute","resetState","isVisible","listenForTooltipExit","removeListenerForTooltipExit","hideTooltipOnScroll","clearInterval","Boolean","find","color","tooltipClass","hasCustomColors","Wrapper","supportedWrappers","indexOf","defaultProps","wrapperClassName","join","htmlContent","ref","__html","nextProps","prevState","newAriaProps","isChanged","React","Component"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1175,6 +1175,7 @@ function (_React$Component) {
1175
1175
  var domRoot;
1176
1176
 
1177
1177
  switch (parentNode.constructor.name) {
1178
+ case 'Document':
1178
1179
  case 'HTMLDocument':
1179
1180
  domRoot = parentNode.head;
1180
1181
  break;
@@ -1287,12 +1288,14 @@ function (_React$Component) {
1287
1288
  }
1288
1289
 
1289
1290
  target.addEventListener('mouseenter', _this3.showTooltip, isCaptureMode);
1291
+ target.addEventListener('focus', _this3.showTooltip, isCaptureMode);
1290
1292
 
1291
1293
  if (effect === 'float') {
1292
1294
  target.addEventListener('mousemove', _this3.updateTooltip, isCaptureMode);
1293
1295
  }
1294
1296
 
1295
1297
  target.addEventListener('mouseleave', _this3.hideTooltip, isCaptureMode);
1298
+ target.addEventListener('blur', _this3.showTooltip, isCaptureMode);
1296
1299
  });
1297
1300
  } // Global event to hide tooltip
1298
1301
 
@@ -1406,6 +1409,11 @@ function (_React$Component) {
1406
1409
  scrollHide = e.currentTarget.getAttribute('data-scroll-hide') === 'true';
1407
1410
  } else if (this.props.scrollHide != null) {
1408
1411
  scrollHide = this.props.scrollHide;
1412
+ } // adding aria-describedby to target to make tooltips read by screen readers
1413
+
1414
+
1415
+ if (e && e.currentTarget && e.currentTarget.setAttribute) {
1416
+ e.currentTarget.setAttribute('aria-describedby', this.state.uuid);
1409
1417
  } // Make sure the correct place is set
1410
1418
 
1411
1419
 
@@ -1492,7 +1500,6 @@ function (_React$Component) {
1492
1500
  disable = _this$state.disable;
1493
1501
  var afterShow = this.props.afterShow;
1494
1502
  var placeholder = this.getTooltipContent();
1495
- var delayTime = parseInt(delayShow, 10);
1496
1503
  var eventTarget = e.currentTarget || e.target; // Check if the mouse is actually over the tooltip, if so don't hide the tooltip
1497
1504
 
1498
1505
  if (this.mouseOnToolTip()) {
@@ -1504,6 +1511,8 @@ function (_React$Component) {
1504
1511
  return;
1505
1512
  }
1506
1513
 
1514
+ var delayTime = !this.state.show ? parseInt(delayShow, 10) : 0;
1515
+
1507
1516
  var updateState = function updateState() {
1508
1517
  if (Array.isArray(placeholder) && placeholder.length > 0 || placeholder) {
1509
1518
  var isInvisible = !_this5.state.show;
@@ -1524,7 +1533,7 @@ function (_React$Component) {
1524
1533
 
1525
1534
  clearTimeout(this.delayShowLoop);
1526
1535
 
1527
- if (delayShow) {
1536
+ if (delayTime) {
1528
1537
  this.delayShowLoop = setTimeout(updateState, delayTime);
1529
1538
  } else {
1530
1539
  updateState();
@@ -1579,6 +1588,11 @@ function (_React$Component) {
1579
1588
  return ele === e.currentTarget;
1580
1589
  });
1581
1590
  if (!isMyElement || !this.state.show) return;
1591
+ } // clean up aria-describedby when hiding tooltip
1592
+
1593
+
1594
+ if (e && e.currentTarget && e.currentTarget.removeAttribute) {
1595
+ e.currentTarget.removeAttribute('aria-describedby');
1582
1596
  }
1583
1597
 
1584
1598
  var resetState = function resetState() {
@@ -1700,7 +1714,8 @@ function (_React$Component) {
1700
1714
  extraClass = _this$state3.extraClass,
1701
1715
  html = _this$state3.html,
1702
1716
  ariaProps = _this$state3.ariaProps,
1703
- disable = _this$state3.disable;
1717
+ disable = _this$state3.disable,
1718
+ uuid = _this$state3.uuid;
1704
1719
  var content = this.getTooltipContent();
1705
1720
  var isEmptyTip = this.isEmptyTip(content);
1706
1721
  var style = generateTooltipStyle(this.state.uuid, this.state.customColors, this.state.type, this.state.border);
@@ -1719,7 +1734,7 @@ function (_React$Component) {
1719
1734
  var htmlContent = "".concat(content, "\n<style>").concat(style, "</style>");
1720
1735
  return React.createElement(Wrapper, _extends({
1721
1736
  className: "".concat(wrapperClassName),
1722
- id: this.props.id,
1737
+ id: this.props.id || uuid,
1723
1738
  ref: function ref(_ref) {
1724
1739
  return _this9.tooltipRef = _ref;
1725
1740
  }
@@ -1732,7 +1747,7 @@ function (_React$Component) {
1732
1747
  } else {
1733
1748
  return React.createElement(Wrapper, _extends({
1734
1749
  className: "".concat(wrapperClassName),
1735
- id: this.props.id
1750
+ id: this.props.id || uuid
1736
1751
  }, ariaProps, {
1737
1752
  ref: function ref(_ref2) {
1738
1753
  return _this9.tooltipRef = _ref2;