N°7331 - Fix cleanup script to remove all denied folders

This commit is contained in:
Molkobain
2024-03-22 11:38:02 +01:00
parent 3a990f46d3
commit e7a04e0e70
26 changed files with 2216 additions and 594 deletions

2
node_modules/tippy.js/README.md generated vendored
View File

@@ -52,7 +52,7 @@ The core CSS comes bundled with the default unpkg import.
## Usage
For detailed usage information,
[visit the docs](https://atomiks.github.io/tippyjs/v6/creation/).
[visit the docs](https://atomiks.github.io/tippyjs/v6/getting-started/).
## Component Wrappers

View File

@@ -1,6 +1,6 @@
/**!
* tippy.js v6.2.5
* (c) 2017-2020 atomiks
* tippy.js v6.3.7
* (c) 2017-2021 atomiks
* MIT License
*/
(function (global, factory) {
@@ -9,7 +9,7 @@
(global = global || self, global.tippy = factory(global.Popper));
}(this, (function (core) { 'use strict';
var css = ".tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:\"\";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}";
var css = ".tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:\"\";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}";
function injectCSS(css) {
var style = document.createElement('style');
@@ -26,8 +26,8 @@
}
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
var ua = isBrowser ? navigator.userAgent : '';
var isIE = /MSIE |Trident\//.test(ua);
var isIE11 = isBrowser ? // @ts-ignore
!!window.msCrypto : false;
var ROUND_ARROW = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>';
var BOX_CLASS = "tippy-box";
@@ -39,6 +39,9 @@
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {
return document.body;
};
function hasOwnProperty(obj, key) {
return {}.hasOwnProperty.call(obj, key);
@@ -158,10 +161,13 @@
});
}
function getOwnerDocument(elementOrElements) {
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0];
var _element$ownerDocumen;
return element ? element.ownerDocument || document : document;
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX,
@@ -197,6 +203,26 @@
box[method](event, listener);
});
}
/**
* Compared to xxx.contains, this function works for dom structures with shadow
* dom
*/
function actualContains(parent, child) {
var target = child;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
@@ -332,9 +358,7 @@
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: function appendTo() {
return document.body;
},
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
@@ -369,7 +393,7 @@
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, {}, renderProps);
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
@@ -389,12 +413,14 @@
defaultValue = plugin.defaultValue;
if (name) {
acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;
var _name;
acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, {}, pluginProps);
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
@@ -425,7 +451,7 @@
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,
content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content
@@ -586,7 +612,7 @@
var mountedInstances = [];
function createTippy(reference, passedProps) {
var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
// 🔒 Private members
// ===========================================================================
@@ -602,8 +628,7 @@
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var doc = getOwnerDocument(props.triggerTarget || reference); // ===========================================================================
var currentTarget; // ===========================================================================
// 🔑 Public members
// ===========================================================================
@@ -687,10 +712,9 @@
instance.clearDelayTimeouts();
}
});
popper.addEventListener('mouseleave', function (event) {
popper.addEventListener('mouseleave', function () {
if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {
doc.addEventListener('mousemove', debouncedOnMouseMove);
debouncedOnMouseMove(event);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}
});
return instance; // ===========================================================================
@@ -710,13 +734,18 @@
var _instance$props$rende;
// @ts-ignore
return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper);
}
@@ -732,8 +761,12 @@
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles() {
popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';
popper.style.zIndex = "" + instance.props.zIndex;
}
@@ -744,7 +777,7 @@
pluginsHooks.forEach(function (pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(void 0, args);
pluginHooks[hook].apply(pluginHooks, args);
}
});
@@ -798,7 +831,7 @@
}
function cleanupInteractiveMouseListeners() {
doc.removeEventListener('mousemove', debouncedOnMouseMove);
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function (listener) {
return listener !== debouncedOnMouseMove;
});
@@ -810,15 +843,18 @@
if (didTouchMove || event.type === 'mousedown') {
return;
}
} // Clicked on interactive popper
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper
if (instance.props.interactive && popper.contains(event.target)) {
if (instance.props.interactive && actualContains(popper, actualTarget)) {
return;
} // Clicked on the event listeners target
if (getCurrentTarget().contains(event.target)) {
if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
@@ -831,7 +867,6 @@
}
if (instance.props.hideOnClick === true) {
isVisibleFromClick = false;
instance.clearDelayTimeouts();
instance.hide(); // `mousedown` event is fired right before `focus` if pressing the
// currentTarget. This lets a tippy with `focus` trigger know that it
@@ -859,6 +894,7 @@
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -866,6 +902,7 @@
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -945,7 +982,7 @@
break;
case 'focus':
on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);
on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);
break;
case 'focusin':
@@ -1008,7 +1045,7 @@
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = reference.contains(target) || popper.contains(target);
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);
if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {
return;
@@ -1171,7 +1208,7 @@
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
@@ -1183,6 +1220,7 @@
parentNode.appendChild(popper);
}
instance.state.isMounted = true;
createPopperInstance();
/* istanbul ignore else */
@@ -1290,7 +1328,7 @@
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {
var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
@@ -1393,6 +1431,8 @@
}
onFirstUpdate = function onFirstUpdate() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
@@ -1413,8 +1453,10 @@
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
instance.state.isMounted = true;
pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the
// popper has been positioned for the first time
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
@@ -1453,6 +1495,7 @@
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper.style.visibility = 'hidden';
@@ -1460,7 +1503,7 @@
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),
@@ -1491,7 +1534,7 @@
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
doc.addEventListener('mousemove', debouncedOnMouseMove);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
@@ -1617,7 +1660,39 @@
});
};
// every time the popper is destroyed (i.e. a new target), removing the styles
// and causing transitions to break for singletons when the console is open, but
// most notably for non-transform styles being used, `gpuAcceleration: false`.
var applyStylesModifier = Object.assign({}, core.applyStyles, {
effect: function effect(_ref) {
var state = _ref.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
} // intentionally return no cleanup function
// return () => { ... }
}
});
var createSingleton = function createSingleton(tippyInstances, optionalProps) {
var _optionalProps$popper;
if (optionalProps === void 0) {
optionalProps = {};
}
@@ -1627,19 +1702,30 @@
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var mutTippyInstances = tippyInstances;
var individualInstances = tippyInstances;
var references = [];
var triggerTargets = [];
var currentTarget;
var overrides = optionalProps.overrides;
var interceptSetPropsCleanups = [];
var shownOnCreate = false;
function setTriggerTargets() {
triggerTargets = individualInstances.map(function (instance) {
return normalizeToArray(instance.props.triggerTarget || instance.reference);
}).reduce(function (acc, item) {
return acc.concat(item);
}, []);
}
function setReferences() {
references = mutTippyInstances.map(function (instance) {
references = individualInstances.map(function (instance) {
return instance.reference;
});
}
function enableInstances(isEnabled) {
mutTippyInstances.forEach(function (instance) {
individualInstances.forEach(function (instance) {
if (isEnabled) {
instance.enable();
} else {
@@ -1648,58 +1734,163 @@
});
}
function interceptSetProps(singleton) {
return individualInstances.map(function (instance) {
var originalSetProps = instance.setProps;
instance.setProps = function (props) {
originalSetProps(props);
if (instance.reference === currentTarget) {
singleton.setProps(props);
}
};
return function () {
instance.setProps = originalSetProps;
};
});
} // have to pass singleton, as it maybe undefined on first call
function prepareInstance(singleton, target) {
var index = triggerTargets.indexOf(target); // bail-out
if (target === currentTarget) {
return;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {
var _references$index;
return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();
}
}));
}
enableInstances(false);
setReferences();
var singleton = {
setTriggerTargets();
var plugin = {
fn: function fn() {
return {
onDestroy: function onDestroy() {
enableInstances(true);
},
onTrigger: function onTrigger(instance, event) {
var target = event.currentTarget;
var index = references.indexOf(target); // bail-out
if (target === currentTarget) {
return;
onHidden: function onHidden() {
currentTarget = null;
},
onClickOutside: function onClickOutside(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
currentTarget = null;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = mutTippyInstances[index].props[prop];
return acc;
}, {});
instance.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: function getReferenceClientRect() {
return target.getBoundingClientRect();
}
}));
},
onShow: function onShow(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
prepareInstance(instance, references[0]);
}
},
onTrigger: function onTrigger(instance, event) {
prepareInstance(instance, event.currentTarget);
}
};
}
};
var instance = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [singleton].concat(optionalProps.plugins || []),
triggerTarget: references
var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins || []),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])
})
}));
var originalSetProps = instance.setProps;
var originalShow = singleton.show;
instance.setProps = function (props) {
singleton.show = function (target) {
originalShow(); // first time, showOnCreate or programmatic call with no params
// default to showing first instance
if (!currentTarget && target == null) {
return prepareInstance(singleton, references[0]);
} // triggered from event (do nothing as prepareInstance already called by onTrigger)
// programmatic call with no params when already visible (do nothing again)
if (currentTarget && target == null) {
return;
} // target is index of instance
if (typeof target === 'number') {
return references[target] && prepareInstance(singleton, references[target]);
} // target is a child tippy instance
if (individualInstances.indexOf(target) >= 0) {
var ref = target.reference;
return prepareInstance(singleton, ref);
} // target is a ReferenceElement
if (references.indexOf(target) >= 0) {
return prepareInstance(singleton, target);
}
};
singleton.showNext = function () {
var first = references[0];
if (!currentTarget) {
return singleton.show(0);
}
var index = references.indexOf(currentTarget);
singleton.show(references[index + 1] || first);
};
singleton.showPrevious = function () {
var last = references[references.length - 1];
if (!currentTarget) {
return singleton.show(last);
}
var index = references.indexOf(currentTarget);
var target = references[index - 1] || last;
singleton.show(target);
};
var originalSetProps = singleton.setProps;
singleton.setProps = function (props) {
overrides = props.overrides || overrides;
originalSetProps(props);
};
instance.setInstances = function (nextInstances) {
singleton.setInstances = function (nextInstances) {
enableInstances(true);
mutTippyInstances = nextInstances;
interceptSetPropsCleanups.forEach(function (fn) {
return fn();
});
individualInstances = nextInstances;
enableInstances(false);
setReferences();
instance.setProps({
triggerTarget: references
setTriggerTargets();
interceptSetPropsCleanups = interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
return instance;
interceptSetPropsCleanups = interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP = {
@@ -1720,20 +1911,23 @@
var listeners = [];
var childTippyInstances = [];
var disabled = false;
var target = props.target;
var nativeProps = removeProperties(props, ['target']);
var parentProps = Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps = Object.assign({}, nativeProps, {
var childProps = Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue = tippy(targets, parentProps);
var normalizedReturnValue = normalizeToArray(returnValue);
function onTrigger(event) {
if (!event.target) {
if (!event.target || disabled) {
return;
}
@@ -1757,7 +1951,7 @@
return;
}
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type])) {
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {
return;
}
@@ -1784,7 +1978,7 @@
function addEventListeners(instance) {
var reference = instance.reference;
on(reference, 'touchstart', onTrigger);
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
@@ -1803,6 +1997,8 @@
function applyMutations(instance) {
var originalDestroy = instance.destroy;
var originalEnable = instance.enable;
var originalDisable = instance.disable;
instance.destroy = function (shouldDestroyChildInstances) {
if (shouldDestroyChildInstances === void 0) {
@@ -1820,6 +2016,22 @@
originalDestroy();
};
instance.enable = function () {
originalEnable();
childTippyInstances.forEach(function (instance) {
return instance.enable();
});
disabled = false;
};
instance.disable = function () {
originalDisable();
childTippyInstances.forEach(function (instance) {
return instance.disable();
});
disabled = true;
};
addEventListeners(instance);
}
@@ -1834,7 +2046,7 @@
var _instance$props$rende;
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
{
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
@@ -1959,6 +2171,7 @@
if (isCursorOverReference || !instance.props.interactive) {
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
var rect = reference.getBoundingClientRect();
var x = clientX;
@@ -2037,20 +2250,26 @@
}
},
onMount: function onMount() {
if (instance.props.followCursor) {
if (instance.props.followCursor && !wasFocusEvent) {
if (isUnmounted) {
onMouseMove(mouseCoords);
isUnmounted = false;
}
if (!wasFocusEvent && !getIsInitialBehavior()) {
if (!getIsInitialBehavior()) {
addListener();
}
}
},
onTrigger: function onTrigger(_, _ref3) {
var type = _ref3.type;
wasFocusEvent = type === 'focus';
onTrigger: function onTrigger(_, event) {
if (isMouseEvent(event)) {
mouseCoords = {
clientX: event.clientX,
clientY: event.clientY
};
}
wasFocusEvent = event.type === 'focus';
},
onHidden: function onHidden() {
if (instance.props.followCursor) {
@@ -2089,6 +2308,7 @@
var placement;
var cursorRectIndex = -1;
var isInternalUpdate = false;
var triedPlacements = [];
var modifier = {
name: 'tippyInlinePositioning',
enabled: true,
@@ -2097,8 +2317,14 @@
var state = _ref2.state;
if (isEnabled()) {
if (placement !== state.placement) {
if (triedPlacements.indexOf(state.placement) !== -1) {
triedPlacements = [];
}
if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {
triedPlacements.push(state.placement);
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
return _getReferenceClientRect(state.placement);
}
@@ -2135,10 +2361,11 @@
var cursorRect = rects.find(function (rect) {
return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;
});
cursorRectIndex = rects.indexOf(cursorRect);
var index = rects.indexOf(cursorRect);
cursorRectIndex = index > -1 ? index : cursorRectIndex;
}
},
onUntrigger: function onUntrigger() {
onHidden: function onHidden() {
cursorRectIndex = -1;
}
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
/**!
* tippy.js v6.2.5
* (c) 2017-2020 atomiks
* tippy.js v6.3.7
* (c) 2017-2021 atomiks
* MIT License
*/
'use strict';
@@ -19,6 +19,9 @@ var TOUCH_OPTIONS = {
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {
return document.body;
};
function hasOwnProperty(obj, key) {
return {}.hasOwnProperty.call(obj, key);
@@ -138,10 +141,13 @@ function setVisibilityState(els, state) {
});
}
function getOwnerDocument(elementOrElements) {
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0];
var _element$ownerDocumen;
return element ? element.ownerDocument || document : document;
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX,
@@ -177,6 +183,26 @@ function updateTransitionEndListener(box, action, listener) {
box[method](event, listener);
});
}
/**
* Compared to xxx.contains, this function works for dom structures with shadow
* dom
*/
function actualContains(parent, child) {
var target = child;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
@@ -240,8 +266,8 @@ function bindGlobalEventListeners() {
}
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
var ua = isBrowser ? navigator.userAgent : '';
var isIE = /MSIE |Trident\//.test(ua);
var isIE11 = isBrowser ? // @ts-ignore
!!window.msCrypto : false;
function createMemoryLeakWarning(method) {
var txt = method === 'destroy' ? 'n already-' : ' ';
@@ -316,9 +342,7 @@ var renderProps = {
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: function appendTo() {
return document.body;
},
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
@@ -353,7 +377,7 @@ var defaultProps = Object.assign({
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, {}, renderProps);
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
@@ -373,12 +397,14 @@ function getExtendedPassedProps(passedProps) {
defaultValue = plugin.defaultValue;
if (name) {
acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;
var _name;
acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, {}, pluginProps);
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
@@ -409,7 +435,7 @@ function evaluateProps(reference, props) {
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,
content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content
@@ -570,7 +596,7 @@ var mouseMoveListeners = []; // Used by `hideAll()`
var mountedInstances = [];
function createTippy(reference, passedProps) {
var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
// 🔒 Private members
// ===========================================================================
@@ -586,8 +612,7 @@ function createTippy(reference, passedProps) {
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var doc = getOwnerDocument(props.triggerTarget || reference); // ===========================================================================
var currentTarget; // ===========================================================================
// 🔑 Public members
// ===========================================================================
@@ -671,10 +696,9 @@ function createTippy(reference, passedProps) {
instance.clearDelayTimeouts();
}
});
popper.addEventListener('mouseleave', function (event) {
popper.addEventListener('mouseleave', function () {
if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {
doc.addEventListener('mousemove', debouncedOnMouseMove);
debouncedOnMouseMove(event);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}
});
return instance; // ===========================================================================
@@ -694,13 +718,18 @@ function createTippy(reference, passedProps) {
var _instance$props$rende;
// @ts-ignore
return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper);
}
@@ -716,8 +745,12 @@ function createTippy(reference, passedProps) {
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles() {
popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';
popper.style.zIndex = "" + instance.props.zIndex;
}
@@ -728,7 +761,7 @@ function createTippy(reference, passedProps) {
pluginsHooks.forEach(function (pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(void 0, args);
pluginHooks[hook].apply(pluginHooks, args);
}
});
@@ -782,7 +815,7 @@ function createTippy(reference, passedProps) {
}
function cleanupInteractiveMouseListeners() {
doc.removeEventListener('mousemove', debouncedOnMouseMove);
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function (listener) {
return listener !== debouncedOnMouseMove;
});
@@ -794,15 +827,18 @@ function createTippy(reference, passedProps) {
if (didTouchMove || event.type === 'mousedown') {
return;
}
} // Clicked on interactive popper
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper
if (instance.props.interactive && popper.contains(event.target)) {
if (instance.props.interactive && actualContains(popper, actualTarget)) {
return;
} // Clicked on the event listeners target
if (getCurrentTarget().contains(event.target)) {
if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
@@ -815,7 +851,6 @@ function createTippy(reference, passedProps) {
}
if (instance.props.hideOnClick === true) {
isVisibleFromClick = false;
instance.clearDelayTimeouts();
instance.hide(); // `mousedown` event is fired right before `focus` if pressing the
// currentTarget. This lets a tippy with `focus` trigger know that it
@@ -843,6 +878,7 @@ function createTippy(reference, passedProps) {
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -850,6 +886,7 @@ function createTippy(reference, passedProps) {
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -929,7 +966,7 @@ function createTippy(reference, passedProps) {
break;
case 'focus':
on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);
on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);
break;
case 'focusin':
@@ -992,7 +1029,7 @@ function createTippy(reference, passedProps) {
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = reference.contains(target) || popper.contains(target);
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);
if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {
return;
@@ -1155,7 +1192,7 @@ function createTippy(reference, passedProps) {
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
@@ -1167,6 +1204,7 @@ function createTippy(reference, passedProps) {
parentNode.appendChild(popper);
}
instance.state.isMounted = true;
createPopperInstance();
/* istanbul ignore else */
@@ -1274,7 +1312,7 @@ function createTippy(reference, passedProps) {
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {
var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
@@ -1377,6 +1415,8 @@ function createTippy(reference, passedProps) {
}
onFirstUpdate = function onFirstUpdate() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
@@ -1397,8 +1437,10 @@ function createTippy(reference, passedProps) {
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
instance.state.isMounted = true;
pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the
// popper has been positioned for the first time
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
@@ -1437,6 +1479,7 @@ function createTippy(reference, passedProps) {
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper.style.visibility = 'hidden';
@@ -1444,7 +1487,7 @@ function createTippy(reference, passedProps) {
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),
@@ -1475,7 +1518,7 @@ function createTippy(reference, passedProps) {
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
doc.addEventListener('mousemove', debouncedOnMouseMove);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
@@ -1601,7 +1644,39 @@ var hideAll = function hideAll(_temp) {
});
};
// every time the popper is destroyed (i.e. a new target), removing the styles
// and causing transitions to break for singletons when the console is open, but
// most notably for non-transform styles being used, `gpuAcceleration: false`.
var applyStylesModifier = Object.assign({}, core.applyStyles, {
effect: function effect(_ref) {
var state = _ref.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
} // intentionally return no cleanup function
// return () => { ... }
}
});
var createSingleton = function createSingleton(tippyInstances, optionalProps) {
var _optionalProps$popper;
if (optionalProps === void 0) {
optionalProps = {};
}
@@ -1611,19 +1686,30 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var mutTippyInstances = tippyInstances;
var individualInstances = tippyInstances;
var references = [];
var triggerTargets = [];
var currentTarget;
var overrides = optionalProps.overrides;
var interceptSetPropsCleanups = [];
var shownOnCreate = false;
function setTriggerTargets() {
triggerTargets = individualInstances.map(function (instance) {
return normalizeToArray(instance.props.triggerTarget || instance.reference);
}).reduce(function (acc, item) {
return acc.concat(item);
}, []);
}
function setReferences() {
references = mutTippyInstances.map(function (instance) {
references = individualInstances.map(function (instance) {
return instance.reference;
});
}
function enableInstances(isEnabled) {
mutTippyInstances.forEach(function (instance) {
individualInstances.forEach(function (instance) {
if (isEnabled) {
instance.enable();
} else {
@@ -1632,58 +1718,163 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
});
}
function interceptSetProps(singleton) {
return individualInstances.map(function (instance) {
var originalSetProps = instance.setProps;
instance.setProps = function (props) {
originalSetProps(props);
if (instance.reference === currentTarget) {
singleton.setProps(props);
}
};
return function () {
instance.setProps = originalSetProps;
};
});
} // have to pass singleton, as it maybe undefined on first call
function prepareInstance(singleton, target) {
var index = triggerTargets.indexOf(target); // bail-out
if (target === currentTarget) {
return;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {
var _references$index;
return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();
}
}));
}
enableInstances(false);
setReferences();
var singleton = {
setTriggerTargets();
var plugin = {
fn: function fn() {
return {
onDestroy: function onDestroy() {
enableInstances(true);
},
onTrigger: function onTrigger(instance, event) {
var target = event.currentTarget;
var index = references.indexOf(target); // bail-out
if (target === currentTarget) {
return;
onHidden: function onHidden() {
currentTarget = null;
},
onClickOutside: function onClickOutside(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
currentTarget = null;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = mutTippyInstances[index].props[prop];
return acc;
}, {});
instance.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: function getReferenceClientRect() {
return target.getBoundingClientRect();
}
}));
},
onShow: function onShow(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
prepareInstance(instance, references[0]);
}
},
onTrigger: function onTrigger(instance, event) {
prepareInstance(instance, event.currentTarget);
}
};
}
};
var instance = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [singleton].concat(optionalProps.plugins || []),
triggerTarget: references
var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins || []),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])
})
}));
var originalSetProps = instance.setProps;
var originalShow = singleton.show;
instance.setProps = function (props) {
singleton.show = function (target) {
originalShow(); // first time, showOnCreate or programmatic call with no params
// default to showing first instance
if (!currentTarget && target == null) {
return prepareInstance(singleton, references[0]);
} // triggered from event (do nothing as prepareInstance already called by onTrigger)
// programmatic call with no params when already visible (do nothing again)
if (currentTarget && target == null) {
return;
} // target is index of instance
if (typeof target === 'number') {
return references[target] && prepareInstance(singleton, references[target]);
} // target is a child tippy instance
if (individualInstances.indexOf(target) >= 0) {
var ref = target.reference;
return prepareInstance(singleton, ref);
} // target is a ReferenceElement
if (references.indexOf(target) >= 0) {
return prepareInstance(singleton, target);
}
};
singleton.showNext = function () {
var first = references[0];
if (!currentTarget) {
return singleton.show(0);
}
var index = references.indexOf(currentTarget);
singleton.show(references[index + 1] || first);
};
singleton.showPrevious = function () {
var last = references[references.length - 1];
if (!currentTarget) {
return singleton.show(last);
}
var index = references.indexOf(currentTarget);
var target = references[index - 1] || last;
singleton.show(target);
};
var originalSetProps = singleton.setProps;
singleton.setProps = function (props) {
overrides = props.overrides || overrides;
originalSetProps(props);
};
instance.setInstances = function (nextInstances) {
singleton.setInstances = function (nextInstances) {
enableInstances(true);
mutTippyInstances = nextInstances;
interceptSetPropsCleanups.forEach(function (fn) {
return fn();
});
individualInstances = nextInstances;
enableInstances(false);
setReferences();
instance.setProps({
triggerTarget: references
setTriggerTargets();
interceptSetPropsCleanups = interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
return instance;
interceptSetPropsCleanups = interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP = {
@@ -1704,20 +1895,23 @@ function delegate(targets, props) {
var listeners = [];
var childTippyInstances = [];
var disabled = false;
var target = props.target;
var nativeProps = removeProperties(props, ['target']);
var parentProps = Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps = Object.assign({}, nativeProps, {
var childProps = Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue = tippy(targets, parentProps);
var normalizedReturnValue = normalizeToArray(returnValue);
function onTrigger(event) {
if (!event.target) {
if (!event.target || disabled) {
return;
}
@@ -1741,7 +1935,7 @@ function delegate(targets, props) {
return;
}
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type])) {
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {
return;
}
@@ -1768,7 +1962,7 @@ function delegate(targets, props) {
function addEventListeners(instance) {
var reference = instance.reference;
on(reference, 'touchstart', onTrigger);
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
@@ -1787,6 +1981,8 @@ function delegate(targets, props) {
function applyMutations(instance) {
var originalDestroy = instance.destroy;
var originalEnable = instance.enable;
var originalDisable = instance.disable;
instance.destroy = function (shouldDestroyChildInstances) {
if (shouldDestroyChildInstances === void 0) {
@@ -1804,6 +2000,22 @@ function delegate(targets, props) {
originalDestroy();
};
instance.enable = function () {
originalEnable();
childTippyInstances.forEach(function (instance) {
return instance.enable();
});
disabled = false;
};
instance.disable = function () {
originalDisable();
childTippyInstances.forEach(function (instance) {
return instance.disable();
});
disabled = true;
};
addEventListeners(instance);
}
@@ -1818,7 +2030,7 @@ var animateFill = {
var _instance$props$rende;
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
if (process.env.NODE_ENV !== "production") {
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
@@ -1943,6 +2155,7 @@ var followCursor = {
if (isCursorOverReference || !instance.props.interactive) {
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
var rect = reference.getBoundingClientRect();
var x = clientX;
@@ -2021,20 +2234,26 @@ var followCursor = {
}
},
onMount: function onMount() {
if (instance.props.followCursor) {
if (instance.props.followCursor && !wasFocusEvent) {
if (isUnmounted) {
onMouseMove(mouseCoords);
isUnmounted = false;
}
if (!wasFocusEvent && !getIsInitialBehavior()) {
if (!getIsInitialBehavior()) {
addListener();
}
}
},
onTrigger: function onTrigger(_, _ref3) {
var type = _ref3.type;
wasFocusEvent = type === 'focus';
onTrigger: function onTrigger(_, event) {
if (isMouseEvent(event)) {
mouseCoords = {
clientX: event.clientX,
clientY: event.clientY
};
}
wasFocusEvent = event.type === 'focus';
},
onHidden: function onHidden() {
if (instance.props.followCursor) {
@@ -2073,6 +2292,7 @@ var inlinePositioning = {
var placement;
var cursorRectIndex = -1;
var isInternalUpdate = false;
var triedPlacements = [];
var modifier = {
name: 'tippyInlinePositioning',
enabled: true,
@@ -2081,8 +2301,14 @@ var inlinePositioning = {
var state = _ref2.state;
if (isEnabled()) {
if (placement !== state.placement) {
if (triedPlacements.indexOf(state.placement) !== -1) {
triedPlacements = [];
}
if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {
triedPlacements.push(state.placement);
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
return _getReferenceClientRect(state.placement);
}
@@ -2119,10 +2345,11 @@ var inlinePositioning = {
var cursorRect = rects.find(function (rect) {
return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;
});
cursorRectIndex = rects.indexOf(cursorRect);
var index = rects.indexOf(cursorRect);
cursorRectIndex = index > -1 ? index : cursorRectIndex;
}
},
onUntrigger: function onUntrigger() {
onHidden: function onHidden() {
cursorRectIndex = -1;
}
};

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}
.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}

View File

@@ -1,9 +1,9 @@
/**!
* tippy.js v6.2.5
* (c) 2017-2020 atomiks
* tippy.js v6.3.7
* (c) 2017-2021 atomiks
* MIT License
*/
import { createPopper } from '@popperjs/core';
import { createPopper, applyStyles } from '@popperjs/core';
var ROUND_ARROW = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>';
var BOX_CLASS = "tippy-box";
@@ -15,6 +15,9 @@ var TOUCH_OPTIONS = {
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {
return document.body;
};
function hasOwnProperty(obj, key) {
return {}.hasOwnProperty.call(obj, key);
@@ -134,10 +137,13 @@ function setVisibilityState(els, state) {
});
}
function getOwnerDocument(elementOrElements) {
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0];
var _element$ownerDocumen;
return element ? element.ownerDocument || document : document;
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX,
@@ -173,6 +179,26 @@ function updateTransitionEndListener(box, action, listener) {
box[method](event, listener);
});
}
/**
* Compared to xxx.contains, this function works for dom structures with shadow
* dom
*/
function actualContains(parent, child) {
var target = child;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
@@ -236,8 +262,8 @@ function bindGlobalEventListeners() {
}
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
var ua = isBrowser ? navigator.userAgent : '';
var isIE = /MSIE |Trident\//.test(ua);
var isIE11 = isBrowser ? // @ts-ignore
!!window.msCrypto : false;
function createMemoryLeakWarning(method) {
var txt = method === 'destroy' ? 'n already-' : ' ';
@@ -312,9 +338,7 @@ var renderProps = {
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: function appendTo() {
return document.body;
},
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
@@ -349,7 +373,7 @@ var defaultProps = Object.assign({
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, {}, renderProps);
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
@@ -369,12 +393,14 @@ function getExtendedPassedProps(passedProps) {
defaultValue = plugin.defaultValue;
if (name) {
acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;
var _name;
acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, {}, pluginProps);
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
@@ -405,7 +431,7 @@ function evaluateProps(reference, props) {
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,
content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content
@@ -566,7 +592,7 @@ var mouseMoveListeners = []; // Used by `hideAll()`
var mountedInstances = [];
function createTippy(reference, passedProps) {
var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
// 🔒 Private members
// ===========================================================================
@@ -582,8 +608,7 @@ function createTippy(reference, passedProps) {
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var doc = getOwnerDocument(props.triggerTarget || reference); // ===========================================================================
var currentTarget; // ===========================================================================
// 🔑 Public members
// ===========================================================================
@@ -667,10 +692,9 @@ function createTippy(reference, passedProps) {
instance.clearDelayTimeouts();
}
});
popper.addEventListener('mouseleave', function (event) {
popper.addEventListener('mouseleave', function () {
if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {
doc.addEventListener('mousemove', debouncedOnMouseMove);
debouncedOnMouseMove(event);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}
});
return instance; // ===========================================================================
@@ -690,13 +714,18 @@ function createTippy(reference, passedProps) {
var _instance$props$rende;
// @ts-ignore
return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper);
}
@@ -712,8 +741,12 @@ function createTippy(reference, passedProps) {
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles() {
popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';
popper.style.zIndex = "" + instance.props.zIndex;
}
@@ -724,7 +757,7 @@ function createTippy(reference, passedProps) {
pluginsHooks.forEach(function (pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(void 0, args);
pluginHooks[hook].apply(pluginHooks, args);
}
});
@@ -778,7 +811,7 @@ function createTippy(reference, passedProps) {
}
function cleanupInteractiveMouseListeners() {
doc.removeEventListener('mousemove', debouncedOnMouseMove);
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function (listener) {
return listener !== debouncedOnMouseMove;
});
@@ -790,15 +823,18 @@ function createTippy(reference, passedProps) {
if (didTouchMove || event.type === 'mousedown') {
return;
}
} // Clicked on interactive popper
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper
if (instance.props.interactive && popper.contains(event.target)) {
if (instance.props.interactive && actualContains(popper, actualTarget)) {
return;
} // Clicked on the event listeners target
if (getCurrentTarget().contains(event.target)) {
if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
@@ -811,7 +847,6 @@ function createTippy(reference, passedProps) {
}
if (instance.props.hideOnClick === true) {
isVisibleFromClick = false;
instance.clearDelayTimeouts();
instance.hide(); // `mousedown` event is fired right before `focus` if pressing the
// currentTarget. This lets a tippy with `focus` trigger know that it
@@ -839,6 +874,7 @@ function createTippy(reference, passedProps) {
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -846,6 +882,7 @@ function createTippy(reference, passedProps) {
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -925,7 +962,7 @@ function createTippy(reference, passedProps) {
break;
case 'focus':
on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);
on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);
break;
case 'focusin':
@@ -988,7 +1025,7 @@ function createTippy(reference, passedProps) {
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = reference.contains(target) || popper.contains(target);
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);
if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {
return;
@@ -1151,7 +1188,7 @@ function createTippy(reference, passedProps) {
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
@@ -1163,6 +1200,7 @@ function createTippy(reference, passedProps) {
parentNode.appendChild(popper);
}
instance.state.isMounted = true;
createPopperInstance();
/* istanbul ignore else */
@@ -1270,7 +1308,7 @@ function createTippy(reference, passedProps) {
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {
var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
@@ -1373,6 +1411,8 @@ function createTippy(reference, passedProps) {
}
onFirstUpdate = function onFirstUpdate() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
@@ -1393,8 +1433,10 @@ function createTippy(reference, passedProps) {
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
instance.state.isMounted = true;
pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the
// popper has been positioned for the first time
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
@@ -1433,6 +1475,7 @@ function createTippy(reference, passedProps) {
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper.style.visibility = 'hidden';
@@ -1440,7 +1483,7 @@ function createTippy(reference, passedProps) {
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),
@@ -1471,7 +1514,7 @@ function createTippy(reference, passedProps) {
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
doc.addEventListener('mousemove', debouncedOnMouseMove);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
@@ -1597,7 +1640,39 @@ var hideAll = function hideAll(_temp) {
});
};
// every time the popper is destroyed (i.e. a new target), removing the styles
// and causing transitions to break for singletons when the console is open, but
// most notably for non-transform styles being used, `gpuAcceleration: false`.
var applyStylesModifier = Object.assign({}, applyStyles, {
effect: function effect(_ref) {
var state = _ref.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
} // intentionally return no cleanup function
// return () => { ... }
}
});
var createSingleton = function createSingleton(tippyInstances, optionalProps) {
var _optionalProps$popper;
if (optionalProps === void 0) {
optionalProps = {};
}
@@ -1607,19 +1682,30 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var mutTippyInstances = tippyInstances;
var individualInstances = tippyInstances;
var references = [];
var triggerTargets = [];
var currentTarget;
var overrides = optionalProps.overrides;
var interceptSetPropsCleanups = [];
var shownOnCreate = false;
function setTriggerTargets() {
triggerTargets = individualInstances.map(function (instance) {
return normalizeToArray(instance.props.triggerTarget || instance.reference);
}).reduce(function (acc, item) {
return acc.concat(item);
}, []);
}
function setReferences() {
references = mutTippyInstances.map(function (instance) {
references = individualInstances.map(function (instance) {
return instance.reference;
});
}
function enableInstances(isEnabled) {
mutTippyInstances.forEach(function (instance) {
individualInstances.forEach(function (instance) {
if (isEnabled) {
instance.enable();
} else {
@@ -1628,58 +1714,163 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
});
}
function interceptSetProps(singleton) {
return individualInstances.map(function (instance) {
var originalSetProps = instance.setProps;
instance.setProps = function (props) {
originalSetProps(props);
if (instance.reference === currentTarget) {
singleton.setProps(props);
}
};
return function () {
instance.setProps = originalSetProps;
};
});
} // have to pass singleton, as it maybe undefined on first call
function prepareInstance(singleton, target) {
var index = triggerTargets.indexOf(target); // bail-out
if (target === currentTarget) {
return;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {
var _references$index;
return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();
}
}));
}
enableInstances(false);
setReferences();
var singleton = {
setTriggerTargets();
var plugin = {
fn: function fn() {
return {
onDestroy: function onDestroy() {
enableInstances(true);
},
onTrigger: function onTrigger(instance, event) {
var target = event.currentTarget;
var index = references.indexOf(target); // bail-out
if (target === currentTarget) {
return;
onHidden: function onHidden() {
currentTarget = null;
},
onClickOutside: function onClickOutside(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
currentTarget = null;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = mutTippyInstances[index].props[prop];
return acc;
}, {});
instance.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: function getReferenceClientRect() {
return target.getBoundingClientRect();
}
}));
},
onShow: function onShow(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
prepareInstance(instance, references[0]);
}
},
onTrigger: function onTrigger(instance, event) {
prepareInstance(instance, event.currentTarget);
}
};
}
};
var instance = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [singleton].concat(optionalProps.plugins || []),
triggerTarget: references
var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins || []),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])
})
}));
var originalSetProps = instance.setProps;
var originalShow = singleton.show;
instance.setProps = function (props) {
singleton.show = function (target) {
originalShow(); // first time, showOnCreate or programmatic call with no params
// default to showing first instance
if (!currentTarget && target == null) {
return prepareInstance(singleton, references[0]);
} // triggered from event (do nothing as prepareInstance already called by onTrigger)
// programmatic call with no params when already visible (do nothing again)
if (currentTarget && target == null) {
return;
} // target is index of instance
if (typeof target === 'number') {
return references[target] && prepareInstance(singleton, references[target]);
} // target is a child tippy instance
if (individualInstances.indexOf(target) >= 0) {
var ref = target.reference;
return prepareInstance(singleton, ref);
} // target is a ReferenceElement
if (references.indexOf(target) >= 0) {
return prepareInstance(singleton, target);
}
};
singleton.showNext = function () {
var first = references[0];
if (!currentTarget) {
return singleton.show(0);
}
var index = references.indexOf(currentTarget);
singleton.show(references[index + 1] || first);
};
singleton.showPrevious = function () {
var last = references[references.length - 1];
if (!currentTarget) {
return singleton.show(last);
}
var index = references.indexOf(currentTarget);
var target = references[index - 1] || last;
singleton.show(target);
};
var originalSetProps = singleton.setProps;
singleton.setProps = function (props) {
overrides = props.overrides || overrides;
originalSetProps(props);
};
instance.setInstances = function (nextInstances) {
singleton.setInstances = function (nextInstances) {
enableInstances(true);
mutTippyInstances = nextInstances;
interceptSetPropsCleanups.forEach(function (fn) {
return fn();
});
individualInstances = nextInstances;
enableInstances(false);
setReferences();
instance.setProps({
triggerTarget: references
setTriggerTargets();
interceptSetPropsCleanups = interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
return instance;
interceptSetPropsCleanups = interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP = {
@@ -1700,20 +1891,23 @@ function delegate(targets, props) {
var listeners = [];
var childTippyInstances = [];
var disabled = false;
var target = props.target;
var nativeProps = removeProperties(props, ['target']);
var parentProps = Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps = Object.assign({}, nativeProps, {
var childProps = Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue = tippy(targets, parentProps);
var normalizedReturnValue = normalizeToArray(returnValue);
function onTrigger(event) {
if (!event.target) {
if (!event.target || disabled) {
return;
}
@@ -1737,7 +1931,7 @@ function delegate(targets, props) {
return;
}
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type])) {
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {
return;
}
@@ -1764,7 +1958,7 @@ function delegate(targets, props) {
function addEventListeners(instance) {
var reference = instance.reference;
on(reference, 'touchstart', onTrigger);
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
@@ -1783,6 +1977,8 @@ function delegate(targets, props) {
function applyMutations(instance) {
var originalDestroy = instance.destroy;
var originalEnable = instance.enable;
var originalDisable = instance.disable;
instance.destroy = function (shouldDestroyChildInstances) {
if (shouldDestroyChildInstances === void 0) {
@@ -1800,6 +1996,22 @@ function delegate(targets, props) {
originalDestroy();
};
instance.enable = function () {
originalEnable();
childTippyInstances.forEach(function (instance) {
return instance.enable();
});
disabled = false;
};
instance.disable = function () {
originalDisable();
childTippyInstances.forEach(function (instance) {
return instance.disable();
});
disabled = true;
};
addEventListeners(instance);
}
@@ -1814,7 +2026,7 @@ var animateFill = {
var _instance$props$rende;
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
if (process.env.NODE_ENV !== "production") {
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
@@ -1939,6 +2151,7 @@ var followCursor = {
if (isCursorOverReference || !instance.props.interactive) {
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
var rect = reference.getBoundingClientRect();
var x = clientX;
@@ -2017,20 +2230,26 @@ var followCursor = {
}
},
onMount: function onMount() {
if (instance.props.followCursor) {
if (instance.props.followCursor && !wasFocusEvent) {
if (isUnmounted) {
onMouseMove(mouseCoords);
isUnmounted = false;
}
if (!wasFocusEvent && !getIsInitialBehavior()) {
if (!getIsInitialBehavior()) {
addListener();
}
}
},
onTrigger: function onTrigger(_, _ref3) {
var type = _ref3.type;
wasFocusEvent = type === 'focus';
onTrigger: function onTrigger(_, event) {
if (isMouseEvent(event)) {
mouseCoords = {
clientX: event.clientX,
clientY: event.clientY
};
}
wasFocusEvent = event.type === 'focus';
},
onHidden: function onHidden() {
if (instance.props.followCursor) {
@@ -2069,6 +2288,7 @@ var inlinePositioning = {
var placement;
var cursorRectIndex = -1;
var isInternalUpdate = false;
var triedPlacements = [];
var modifier = {
name: 'tippyInlinePositioning',
enabled: true,
@@ -2077,8 +2297,14 @@ var inlinePositioning = {
var state = _ref2.state;
if (isEnabled()) {
if (placement !== state.placement) {
if (triedPlacements.indexOf(state.placement) !== -1) {
triedPlacements = [];
}
if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {
triedPlacements.push(state.placement);
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
return _getReferenceClientRect(state.placement);
}
@@ -2115,10 +2341,11 @@ var inlinePositioning = {
var cursorRect = rects.find(function (rect) {
return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;
});
cursorRectIndex = rects.indexOf(cursorRect);
var index = rects.indexOf(cursorRect);
cursorRectIndex = index > -1 ? index : cursorRectIndex;
}
},
onUntrigger: function onUntrigger() {
onHidden: function onHidden() {
cursorRectIndex = -1;
}
};

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
/**!
* tippy.js v6.2.5
* (c) 2017-2020 atomiks
* tippy.js v6.3.7
* (c) 2017-2021 atomiks
* MIT License
*/
(function (global, factory) {
@@ -19,6 +19,9 @@
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {
return document.body;
};
function hasOwnProperty(obj, key) {
return {}.hasOwnProperty.call(obj, key);
@@ -138,10 +141,13 @@
});
}
function getOwnerDocument(elementOrElements) {
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0];
var _element$ownerDocumen;
return element ? element.ownerDocument || document : document;
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX,
@@ -177,6 +183,26 @@
box[method](event, listener);
});
}
/**
* Compared to xxx.contains, this function works for dom structures with shadow
* dom
*/
function actualContains(parent, child) {
var target = child;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
@@ -240,8 +266,8 @@
}
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
var ua = isBrowser ? navigator.userAgent : '';
var isIE = /MSIE |Trident\//.test(ua);
var isIE11 = isBrowser ? // @ts-ignore
!!window.msCrypto : false;
function createMemoryLeakWarning(method) {
var txt = method === 'destroy' ? 'n already-' : ' ';
@@ -316,9 +342,7 @@
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: function appendTo() {
return document.body;
},
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
@@ -353,7 +377,7 @@
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, {}, renderProps);
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
@@ -373,12 +397,14 @@
defaultValue = plugin.defaultValue;
if (name) {
acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;
var _name;
acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, {}, pluginProps);
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
@@ -409,7 +435,7 @@
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,
content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content
@@ -570,7 +596,7 @@
var mountedInstances = [];
function createTippy(reference, passedProps) {
var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
// 🔒 Private members
// ===========================================================================
@@ -586,8 +612,7 @@
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var doc = getOwnerDocument(props.triggerTarget || reference); // ===========================================================================
var currentTarget; // ===========================================================================
// 🔑 Public members
// ===========================================================================
@@ -671,10 +696,9 @@
instance.clearDelayTimeouts();
}
});
popper.addEventListener('mouseleave', function (event) {
popper.addEventListener('mouseleave', function () {
if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {
doc.addEventListener('mousemove', debouncedOnMouseMove);
debouncedOnMouseMove(event);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}
});
return instance; // ===========================================================================
@@ -694,13 +718,18 @@
var _instance$props$rende;
// @ts-ignore
return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper);
}
@@ -716,8 +745,12 @@
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles() {
popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';
popper.style.zIndex = "" + instance.props.zIndex;
}
@@ -728,7 +761,7 @@
pluginsHooks.forEach(function (pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(void 0, args);
pluginHooks[hook].apply(pluginHooks, args);
}
});
@@ -782,7 +815,7 @@
}
function cleanupInteractiveMouseListeners() {
doc.removeEventListener('mousemove', debouncedOnMouseMove);
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function (listener) {
return listener !== debouncedOnMouseMove;
});
@@ -794,15 +827,18 @@
if (didTouchMove || event.type === 'mousedown') {
return;
}
} // Clicked on interactive popper
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper
if (instance.props.interactive && popper.contains(event.target)) {
if (instance.props.interactive && actualContains(popper, actualTarget)) {
return;
} // Clicked on the event listeners target
if (getCurrentTarget().contains(event.target)) {
if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
@@ -815,7 +851,6 @@
}
if (instance.props.hideOnClick === true) {
isVisibleFromClick = false;
instance.clearDelayTimeouts();
instance.hide(); // `mousedown` event is fired right before `focus` if pressing the
// currentTarget. This lets a tippy with `focus` trigger know that it
@@ -843,6 +878,7 @@
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -850,6 +886,7 @@
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -929,7 +966,7 @@
break;
case 'focus':
on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);
on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);
break;
case 'focusin':
@@ -992,7 +1029,7 @@
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = reference.contains(target) || popper.contains(target);
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);
if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {
return;
@@ -1155,7 +1192,7 @@
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
@@ -1167,6 +1204,7 @@
parentNode.appendChild(popper);
}
instance.state.isMounted = true;
createPopperInstance();
/* istanbul ignore else */
@@ -1274,7 +1312,7 @@
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {
var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
@@ -1377,6 +1415,8 @@
}
onFirstUpdate = function onFirstUpdate() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
@@ -1397,8 +1437,10 @@
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
instance.state.isMounted = true;
pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the
// popper has been positioned for the first time
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
@@ -1437,6 +1479,7 @@
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper.style.visibility = 'hidden';
@@ -1444,7 +1487,7 @@
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),
@@ -1475,7 +1518,7 @@
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
doc.addEventListener('mousemove', debouncedOnMouseMove);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
@@ -1601,7 +1644,39 @@
});
};
// every time the popper is destroyed (i.e. a new target), removing the styles
// and causing transitions to break for singletons when the console is open, but
// most notably for non-transform styles being used, `gpuAcceleration: false`.
var applyStylesModifier = Object.assign({}, core.applyStyles, {
effect: function effect(_ref) {
var state = _ref.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
} // intentionally return no cleanup function
// return () => { ... }
}
});
var createSingleton = function createSingleton(tippyInstances, optionalProps) {
var _optionalProps$popper;
if (optionalProps === void 0) {
optionalProps = {};
}
@@ -1611,19 +1686,30 @@
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var mutTippyInstances = tippyInstances;
var individualInstances = tippyInstances;
var references = [];
var triggerTargets = [];
var currentTarget;
var overrides = optionalProps.overrides;
var interceptSetPropsCleanups = [];
var shownOnCreate = false;
function setTriggerTargets() {
triggerTargets = individualInstances.map(function (instance) {
return normalizeToArray(instance.props.triggerTarget || instance.reference);
}).reduce(function (acc, item) {
return acc.concat(item);
}, []);
}
function setReferences() {
references = mutTippyInstances.map(function (instance) {
references = individualInstances.map(function (instance) {
return instance.reference;
});
}
function enableInstances(isEnabled) {
mutTippyInstances.forEach(function (instance) {
individualInstances.forEach(function (instance) {
if (isEnabled) {
instance.enable();
} else {
@@ -1632,58 +1718,163 @@
});
}
function interceptSetProps(singleton) {
return individualInstances.map(function (instance) {
var originalSetProps = instance.setProps;
instance.setProps = function (props) {
originalSetProps(props);
if (instance.reference === currentTarget) {
singleton.setProps(props);
}
};
return function () {
instance.setProps = originalSetProps;
};
});
} // have to pass singleton, as it maybe undefined on first call
function prepareInstance(singleton, target) {
var index = triggerTargets.indexOf(target); // bail-out
if (target === currentTarget) {
return;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {
var _references$index;
return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();
}
}));
}
enableInstances(false);
setReferences();
var singleton = {
setTriggerTargets();
var plugin = {
fn: function fn() {
return {
onDestroy: function onDestroy() {
enableInstances(true);
},
onTrigger: function onTrigger(instance, event) {
var target = event.currentTarget;
var index = references.indexOf(target); // bail-out
if (target === currentTarget) {
return;
onHidden: function onHidden() {
currentTarget = null;
},
onClickOutside: function onClickOutside(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
currentTarget = null;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = mutTippyInstances[index].props[prop];
return acc;
}, {});
instance.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: function getReferenceClientRect() {
return target.getBoundingClientRect();
}
}));
},
onShow: function onShow(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
prepareInstance(instance, references[0]);
}
},
onTrigger: function onTrigger(instance, event) {
prepareInstance(instance, event.currentTarget);
}
};
}
};
var instance = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [singleton].concat(optionalProps.plugins || []),
triggerTarget: references
var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins || []),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])
})
}));
var originalSetProps = instance.setProps;
var originalShow = singleton.show;
instance.setProps = function (props) {
singleton.show = function (target) {
originalShow(); // first time, showOnCreate or programmatic call with no params
// default to showing first instance
if (!currentTarget && target == null) {
return prepareInstance(singleton, references[0]);
} // triggered from event (do nothing as prepareInstance already called by onTrigger)
// programmatic call with no params when already visible (do nothing again)
if (currentTarget && target == null) {
return;
} // target is index of instance
if (typeof target === 'number') {
return references[target] && prepareInstance(singleton, references[target]);
} // target is a child tippy instance
if (individualInstances.indexOf(target) >= 0) {
var ref = target.reference;
return prepareInstance(singleton, ref);
} // target is a ReferenceElement
if (references.indexOf(target) >= 0) {
return prepareInstance(singleton, target);
}
};
singleton.showNext = function () {
var first = references[0];
if (!currentTarget) {
return singleton.show(0);
}
var index = references.indexOf(currentTarget);
singleton.show(references[index + 1] || first);
};
singleton.showPrevious = function () {
var last = references[references.length - 1];
if (!currentTarget) {
return singleton.show(last);
}
var index = references.indexOf(currentTarget);
var target = references[index - 1] || last;
singleton.show(target);
};
var originalSetProps = singleton.setProps;
singleton.setProps = function (props) {
overrides = props.overrides || overrides;
originalSetProps(props);
};
instance.setInstances = function (nextInstances) {
singleton.setInstances = function (nextInstances) {
enableInstances(true);
mutTippyInstances = nextInstances;
interceptSetPropsCleanups.forEach(function (fn) {
return fn();
});
individualInstances = nextInstances;
enableInstances(false);
setReferences();
instance.setProps({
triggerTarget: references
setTriggerTargets();
interceptSetPropsCleanups = interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
return instance;
interceptSetPropsCleanups = interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP = {
@@ -1704,20 +1895,23 @@
var listeners = [];
var childTippyInstances = [];
var disabled = false;
var target = props.target;
var nativeProps = removeProperties(props, ['target']);
var parentProps = Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps = Object.assign({}, nativeProps, {
var childProps = Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue = tippy(targets, parentProps);
var normalizedReturnValue = normalizeToArray(returnValue);
function onTrigger(event) {
if (!event.target) {
if (!event.target || disabled) {
return;
}
@@ -1741,7 +1935,7 @@
return;
}
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type])) {
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {
return;
}
@@ -1768,7 +1962,7 @@
function addEventListeners(instance) {
var reference = instance.reference;
on(reference, 'touchstart', onTrigger);
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
@@ -1787,6 +1981,8 @@
function applyMutations(instance) {
var originalDestroy = instance.destroy;
var originalEnable = instance.enable;
var originalDisable = instance.disable;
instance.destroy = function (shouldDestroyChildInstances) {
if (shouldDestroyChildInstances === void 0) {
@@ -1804,6 +2000,22 @@
originalDestroy();
};
instance.enable = function () {
originalEnable();
childTippyInstances.forEach(function (instance) {
return instance.enable();
});
disabled = false;
};
instance.disable = function () {
originalDisable();
childTippyInstances.forEach(function (instance) {
return instance.disable();
});
disabled = true;
};
addEventListeners(instance);
}
@@ -1818,7 +2030,7 @@
var _instance$props$rende;
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
{
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
@@ -1943,6 +2155,7 @@
if (isCursorOverReference || !instance.props.interactive) {
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
var rect = reference.getBoundingClientRect();
var x = clientX;
@@ -2021,20 +2234,26 @@
}
},
onMount: function onMount() {
if (instance.props.followCursor) {
if (instance.props.followCursor && !wasFocusEvent) {
if (isUnmounted) {
onMouseMove(mouseCoords);
isUnmounted = false;
}
if (!wasFocusEvent && !getIsInitialBehavior()) {
if (!getIsInitialBehavior()) {
addListener();
}
}
},
onTrigger: function onTrigger(_, _ref3) {
var type = _ref3.type;
wasFocusEvent = type === 'focus';
onTrigger: function onTrigger(_, event) {
if (isMouseEvent(event)) {
mouseCoords = {
clientX: event.clientX,
clientY: event.clientY
};
}
wasFocusEvent = event.type === 'focus';
},
onHidden: function onHidden() {
if (instance.props.followCursor) {
@@ -2073,6 +2292,7 @@
var placement;
var cursorRectIndex = -1;
var isInternalUpdate = false;
var triedPlacements = [];
var modifier = {
name: 'tippyInlinePositioning',
enabled: true,
@@ -2081,8 +2301,14 @@
var state = _ref2.state;
if (isEnabled()) {
if (placement !== state.placement) {
if (triedPlacements.indexOf(state.placement) !== -1) {
triedPlacements = [];
}
if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {
triedPlacements.push(state.placement);
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
return _getReferenceClientRect(state.placement);
}
@@ -2119,10 +2345,11 @@
var cursorRect = rects.find(function (rect) {
return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;
});
cursorRectIndex = rects.indexOf(cursorRect);
var index = rects.indexOf(cursorRect);
cursorRectIndex = index > -1 ? index : cursorRectIndex;
}
},
onUntrigger: function onUntrigger() {
onHidden: function onHidden() {
cursorRectIndex = -1;
}
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
/**!
* tippy.js v6.2.5
* (c) 2017-2020 atomiks
* tippy.js v6.3.7
* (c) 2017-2021 atomiks
* MIT License
*/
'use strict';
@@ -18,6 +18,9 @@ var TOUCH_OPTIONS = {
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {
return document.body;
};
function hasOwnProperty(obj, key) {
return {}.hasOwnProperty.call(obj, key);
@@ -137,10 +140,13 @@ function setVisibilityState(els, state) {
});
}
function getOwnerDocument(elementOrElements) {
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0];
var _element$ownerDocumen;
return element ? element.ownerDocument || document : document;
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX,
@@ -176,6 +182,26 @@ function updateTransitionEndListener(box, action, listener) {
box[method](event, listener);
});
}
/**
* Compared to xxx.contains, this function works for dom structures with shadow
* dom
*/
function actualContains(parent, child) {
var target = child;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
@@ -239,8 +265,8 @@ function bindGlobalEventListeners() {
}
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
var ua = isBrowser ? navigator.userAgent : '';
var isIE = /MSIE |Trident\//.test(ua);
var isIE11 = isBrowser ? // @ts-ignore
!!window.msCrypto : false;
function createMemoryLeakWarning(method) {
var txt = method === 'destroy' ? 'n already-' : ' ';
@@ -315,9 +341,7 @@ var renderProps = {
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: function appendTo() {
return document.body;
},
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
@@ -352,7 +376,7 @@ var defaultProps = Object.assign({
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, {}, renderProps);
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
@@ -372,12 +396,14 @@ function getExtendedPassedProps(passedProps) {
defaultValue = plugin.defaultValue;
if (name) {
acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;
var _name;
acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, {}, pluginProps);
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
@@ -408,7 +434,7 @@ function evaluateProps(reference, props) {
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,
content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content
@@ -461,7 +487,7 @@ var mouseMoveListeners = []; // Used by `hideAll()`
var mountedInstances = [];
function createTippy(reference, passedProps) {
var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
// 🔒 Private members
// ===========================================================================
@@ -477,8 +503,7 @@ function createTippy(reference, passedProps) {
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var doc = getOwnerDocument(props.triggerTarget || reference); // ===========================================================================
var currentTarget; // ===========================================================================
// 🔑 Public members
// ===========================================================================
@@ -562,10 +587,9 @@ function createTippy(reference, passedProps) {
instance.clearDelayTimeouts();
}
});
popper.addEventListener('mouseleave', function (event) {
popper.addEventListener('mouseleave', function () {
if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {
doc.addEventListener('mousemove', debouncedOnMouseMove);
debouncedOnMouseMove(event);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}
});
return instance; // ===========================================================================
@@ -585,13 +609,18 @@ function createTippy(reference, passedProps) {
var _instance$props$rende;
// @ts-ignore
return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper);
}
@@ -607,8 +636,12 @@ function createTippy(reference, passedProps) {
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles() {
popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';
popper.style.zIndex = "" + instance.props.zIndex;
}
@@ -619,7 +652,7 @@ function createTippy(reference, passedProps) {
pluginsHooks.forEach(function (pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(void 0, args);
pluginHooks[hook].apply(pluginHooks, args);
}
});
@@ -673,7 +706,7 @@ function createTippy(reference, passedProps) {
}
function cleanupInteractiveMouseListeners() {
doc.removeEventListener('mousemove', debouncedOnMouseMove);
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function (listener) {
return listener !== debouncedOnMouseMove;
});
@@ -685,15 +718,18 @@ function createTippy(reference, passedProps) {
if (didTouchMove || event.type === 'mousedown') {
return;
}
} // Clicked on interactive popper
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper
if (instance.props.interactive && popper.contains(event.target)) {
if (instance.props.interactive && actualContains(popper, actualTarget)) {
return;
} // Clicked on the event listeners target
if (getCurrentTarget().contains(event.target)) {
if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
@@ -706,7 +742,6 @@ function createTippy(reference, passedProps) {
}
if (instance.props.hideOnClick === true) {
isVisibleFromClick = false;
instance.clearDelayTimeouts();
instance.hide(); // `mousedown` event is fired right before `focus` if pressing the
// currentTarget. This lets a tippy with `focus` trigger know that it
@@ -734,6 +769,7 @@ function createTippy(reference, passedProps) {
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -741,6 +777,7 @@ function createTippy(reference, passedProps) {
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -820,7 +857,7 @@ function createTippy(reference, passedProps) {
break;
case 'focus':
on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);
on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);
break;
case 'focusin':
@@ -883,7 +920,7 @@ function createTippy(reference, passedProps) {
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = reference.contains(target) || popper.contains(target);
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);
if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {
return;
@@ -1046,7 +1083,7 @@ function createTippy(reference, passedProps) {
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
@@ -1058,6 +1095,7 @@ function createTippy(reference, passedProps) {
parentNode.appendChild(popper);
}
instance.state.isMounted = true;
createPopperInstance();
/* istanbul ignore else */
@@ -1165,7 +1203,7 @@ function createTippy(reference, passedProps) {
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {
var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
@@ -1268,6 +1306,8 @@ function createTippy(reference, passedProps) {
}
onFirstUpdate = function onFirstUpdate() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
@@ -1288,8 +1328,10 @@ function createTippy(reference, passedProps) {
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
instance.state.isMounted = true;
pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the
// popper has been positioned for the first time
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
@@ -1328,6 +1370,7 @@ function createTippy(reference, passedProps) {
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper.style.visibility = 'hidden';
@@ -1335,7 +1378,7 @@ function createTippy(reference, passedProps) {
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),
@@ -1366,7 +1409,7 @@ function createTippy(reference, passedProps) {
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
doc.addEventListener('mousemove', debouncedOnMouseMove);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
@@ -1492,7 +1535,39 @@ var hideAll = function hideAll(_temp) {
});
};
// every time the popper is destroyed (i.e. a new target), removing the styles
// and causing transitions to break for singletons when the console is open, but
// most notably for non-transform styles being used, `gpuAcceleration: false`.
var applyStylesModifier = Object.assign({}, core.applyStyles, {
effect: function effect(_ref) {
var state = _ref.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
} // intentionally return no cleanup function
// return () => { ... }
}
});
var createSingleton = function createSingleton(tippyInstances, optionalProps) {
var _optionalProps$popper;
if (optionalProps === void 0) {
optionalProps = {};
}
@@ -1502,19 +1577,30 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var mutTippyInstances = tippyInstances;
var individualInstances = tippyInstances;
var references = [];
var triggerTargets = [];
var currentTarget;
var overrides = optionalProps.overrides;
var interceptSetPropsCleanups = [];
var shownOnCreate = false;
function setTriggerTargets() {
triggerTargets = individualInstances.map(function (instance) {
return normalizeToArray(instance.props.triggerTarget || instance.reference);
}).reduce(function (acc, item) {
return acc.concat(item);
}, []);
}
function setReferences() {
references = mutTippyInstances.map(function (instance) {
references = individualInstances.map(function (instance) {
return instance.reference;
});
}
function enableInstances(isEnabled) {
mutTippyInstances.forEach(function (instance) {
individualInstances.forEach(function (instance) {
if (isEnabled) {
instance.enable();
} else {
@@ -1523,58 +1609,163 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
});
}
function interceptSetProps(singleton) {
return individualInstances.map(function (instance) {
var originalSetProps = instance.setProps;
instance.setProps = function (props) {
originalSetProps(props);
if (instance.reference === currentTarget) {
singleton.setProps(props);
}
};
return function () {
instance.setProps = originalSetProps;
};
});
} // have to pass singleton, as it maybe undefined on first call
function prepareInstance(singleton, target) {
var index = triggerTargets.indexOf(target); // bail-out
if (target === currentTarget) {
return;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {
var _references$index;
return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();
}
}));
}
enableInstances(false);
setReferences();
var singleton = {
setTriggerTargets();
var plugin = {
fn: function fn() {
return {
onDestroy: function onDestroy() {
enableInstances(true);
},
onTrigger: function onTrigger(instance, event) {
var target = event.currentTarget;
var index = references.indexOf(target); // bail-out
if (target === currentTarget) {
return;
onHidden: function onHidden() {
currentTarget = null;
},
onClickOutside: function onClickOutside(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
currentTarget = null;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = mutTippyInstances[index].props[prop];
return acc;
}, {});
instance.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: function getReferenceClientRect() {
return target.getBoundingClientRect();
}
}));
},
onShow: function onShow(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
prepareInstance(instance, references[0]);
}
},
onTrigger: function onTrigger(instance, event) {
prepareInstance(instance, event.currentTarget);
}
};
}
};
var instance = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [singleton].concat(optionalProps.plugins || []),
triggerTarget: references
var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins || []),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])
})
}));
var originalSetProps = instance.setProps;
var originalShow = singleton.show;
instance.setProps = function (props) {
singleton.show = function (target) {
originalShow(); // first time, showOnCreate or programmatic call with no params
// default to showing first instance
if (!currentTarget && target == null) {
return prepareInstance(singleton, references[0]);
} // triggered from event (do nothing as prepareInstance already called by onTrigger)
// programmatic call with no params when already visible (do nothing again)
if (currentTarget && target == null) {
return;
} // target is index of instance
if (typeof target === 'number') {
return references[target] && prepareInstance(singleton, references[target]);
} // target is a child tippy instance
if (individualInstances.indexOf(target) >= 0) {
var ref = target.reference;
return prepareInstance(singleton, ref);
} // target is a ReferenceElement
if (references.indexOf(target) >= 0) {
return prepareInstance(singleton, target);
}
};
singleton.showNext = function () {
var first = references[0];
if (!currentTarget) {
return singleton.show(0);
}
var index = references.indexOf(currentTarget);
singleton.show(references[index + 1] || first);
};
singleton.showPrevious = function () {
var last = references[references.length - 1];
if (!currentTarget) {
return singleton.show(last);
}
var index = references.indexOf(currentTarget);
var target = references[index - 1] || last;
singleton.show(target);
};
var originalSetProps = singleton.setProps;
singleton.setProps = function (props) {
overrides = props.overrides || overrides;
originalSetProps(props);
};
instance.setInstances = function (nextInstances) {
singleton.setInstances = function (nextInstances) {
enableInstances(true);
mutTippyInstances = nextInstances;
interceptSetPropsCleanups.forEach(function (fn) {
return fn();
});
individualInstances = nextInstances;
enableInstances(false);
setReferences();
instance.setProps({
triggerTarget: references
setTriggerTargets();
interceptSetPropsCleanups = interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
return instance;
interceptSetPropsCleanups = interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP = {
@@ -1595,20 +1786,23 @@ function delegate(targets, props) {
var listeners = [];
var childTippyInstances = [];
var disabled = false;
var target = props.target;
var nativeProps = removeProperties(props, ['target']);
var parentProps = Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps = Object.assign({}, nativeProps, {
var childProps = Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue = tippy(targets, parentProps);
var normalizedReturnValue = normalizeToArray(returnValue);
function onTrigger(event) {
if (!event.target) {
if (!event.target || disabled) {
return;
}
@@ -1632,7 +1826,7 @@ function delegate(targets, props) {
return;
}
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type])) {
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {
return;
}
@@ -1659,7 +1853,7 @@ function delegate(targets, props) {
function addEventListeners(instance) {
var reference = instance.reference;
on(reference, 'touchstart', onTrigger);
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
@@ -1678,6 +1872,8 @@ function delegate(targets, props) {
function applyMutations(instance) {
var originalDestroy = instance.destroy;
var originalEnable = instance.enable;
var originalDisable = instance.disable;
instance.destroy = function (shouldDestroyChildInstances) {
if (shouldDestroyChildInstances === void 0) {
@@ -1695,6 +1891,22 @@ function delegate(targets, props) {
originalDestroy();
};
instance.enable = function () {
originalEnable();
childTippyInstances.forEach(function (instance) {
return instance.enable();
});
disabled = false;
};
instance.disable = function () {
originalDisable();
childTippyInstances.forEach(function (instance) {
return instance.disable();
});
disabled = true;
};
addEventListeners(instance);
}
@@ -1709,7 +1921,7 @@ var animateFill = {
var _instance$props$rende;
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
if (process.env.NODE_ENV !== "production") {
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
@@ -1834,6 +2046,7 @@ var followCursor = {
if (isCursorOverReference || !instance.props.interactive) {
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
var rect = reference.getBoundingClientRect();
var x = clientX;
@@ -1912,20 +2125,26 @@ var followCursor = {
}
},
onMount: function onMount() {
if (instance.props.followCursor) {
if (instance.props.followCursor && !wasFocusEvent) {
if (isUnmounted) {
onMouseMove(mouseCoords);
isUnmounted = false;
}
if (!wasFocusEvent && !getIsInitialBehavior()) {
if (!getIsInitialBehavior()) {
addListener();
}
}
},
onTrigger: function onTrigger(_, _ref3) {
var type = _ref3.type;
wasFocusEvent = type === 'focus';
onTrigger: function onTrigger(_, event) {
if (isMouseEvent(event)) {
mouseCoords = {
clientX: event.clientX,
clientY: event.clientY
};
}
wasFocusEvent = event.type === 'focus';
},
onHidden: function onHidden() {
if (instance.props.followCursor) {
@@ -1964,6 +2183,7 @@ var inlinePositioning = {
var placement;
var cursorRectIndex = -1;
var isInternalUpdate = false;
var triedPlacements = [];
var modifier = {
name: 'tippyInlinePositioning',
enabled: true,
@@ -1972,8 +2192,14 @@ var inlinePositioning = {
var state = _ref2.state;
if (isEnabled()) {
if (placement !== state.placement) {
if (triedPlacements.indexOf(state.placement) !== -1) {
triedPlacements = [];
}
if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {
triedPlacements.push(state.placement);
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
return _getReferenceClientRect(state.placement);
}
@@ -2010,10 +2236,11 @@ var inlinePositioning = {
var cursorRect = rects.find(function (rect) {
return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;
});
cursorRectIndex = rects.indexOf(cursorRect);
var index = rects.indexOf(cursorRect);
cursorRectIndex = index > -1 ? index : cursorRectIndex;
}
},
onUntrigger: function onUntrigger() {
onHidden: function onHidden() {
cursorRectIndex = -1;
}
};

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,9 @@
/**!
* tippy.js v6.2.5
* (c) 2017-2020 atomiks
* tippy.js v6.3.7
* (c) 2017-2021 atomiks
* MIT License
*/
import { createPopper } from '@popperjs/core';
import { createPopper, applyStyles } from '@popperjs/core';
var ROUND_ARROW = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>';
var CONTENT_CLASS = "tippy-content";
@@ -14,6 +14,9 @@ var TOUCH_OPTIONS = {
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {
return document.body;
};
function hasOwnProperty(obj, key) {
return {}.hasOwnProperty.call(obj, key);
@@ -133,10 +136,13 @@ function setVisibilityState(els, state) {
});
}
function getOwnerDocument(elementOrElements) {
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0];
var _element$ownerDocumen;
return element ? element.ownerDocument || document : document;
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX,
@@ -172,6 +178,26 @@ function updateTransitionEndListener(box, action, listener) {
box[method](event, listener);
});
}
/**
* Compared to xxx.contains, this function works for dom structures with shadow
* dom
*/
function actualContains(parent, child) {
var target = child;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
@@ -235,8 +261,8 @@ function bindGlobalEventListeners() {
}
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
var ua = isBrowser ? navigator.userAgent : '';
var isIE = /MSIE |Trident\//.test(ua);
var isIE11 = isBrowser ? // @ts-ignore
!!window.msCrypto : false;
function createMemoryLeakWarning(method) {
var txt = method === 'destroy' ? 'n already-' : ' ';
@@ -311,9 +337,7 @@ var renderProps = {
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: function appendTo() {
return document.body;
},
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
@@ -348,7 +372,7 @@ var defaultProps = Object.assign({
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, {}, renderProps);
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
@@ -368,12 +392,14 @@ function getExtendedPassedProps(passedProps) {
defaultValue = plugin.defaultValue;
if (name) {
acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;
var _name;
acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, {}, pluginProps);
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
@@ -404,7 +430,7 @@ function evaluateProps(reference, props) {
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,
content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content
@@ -457,7 +483,7 @@ var mouseMoveListeners = []; // Used by `hideAll()`
var mountedInstances = [];
function createTippy(reference, passedProps) {
var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
// 🔒 Private members
// ===========================================================================
@@ -473,8 +499,7 @@ function createTippy(reference, passedProps) {
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var doc = getOwnerDocument(props.triggerTarget || reference); // ===========================================================================
var currentTarget; // ===========================================================================
// 🔑 Public members
// ===========================================================================
@@ -558,10 +583,9 @@ function createTippy(reference, passedProps) {
instance.clearDelayTimeouts();
}
});
popper.addEventListener('mouseleave', function (event) {
popper.addEventListener('mouseleave', function () {
if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {
doc.addEventListener('mousemove', debouncedOnMouseMove);
debouncedOnMouseMove(event);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}
});
return instance; // ===========================================================================
@@ -581,13 +605,18 @@ function createTippy(reference, passedProps) {
var _instance$props$rende;
// @ts-ignore
return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper);
}
@@ -603,8 +632,12 @@ function createTippy(reference, passedProps) {
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles() {
popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';
popper.style.zIndex = "" + instance.props.zIndex;
}
@@ -615,7 +648,7 @@ function createTippy(reference, passedProps) {
pluginsHooks.forEach(function (pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(void 0, args);
pluginHooks[hook].apply(pluginHooks, args);
}
});
@@ -669,7 +702,7 @@ function createTippy(reference, passedProps) {
}
function cleanupInteractiveMouseListeners() {
doc.removeEventListener('mousemove', debouncedOnMouseMove);
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function (listener) {
return listener !== debouncedOnMouseMove;
});
@@ -681,15 +714,18 @@ function createTippy(reference, passedProps) {
if (didTouchMove || event.type === 'mousedown') {
return;
}
} // Clicked on interactive popper
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper
if (instance.props.interactive && popper.contains(event.target)) {
if (instance.props.interactive && actualContains(popper, actualTarget)) {
return;
} // Clicked on the event listeners target
if (getCurrentTarget().contains(event.target)) {
if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
@@ -702,7 +738,6 @@ function createTippy(reference, passedProps) {
}
if (instance.props.hideOnClick === true) {
isVisibleFromClick = false;
instance.clearDelayTimeouts();
instance.hide(); // `mousedown` event is fired right before `focus` if pressing the
// currentTarget. This lets a tippy with `focus` trigger know that it
@@ -730,6 +765,7 @@ function createTippy(reference, passedProps) {
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -737,6 +773,7 @@ function createTippy(reference, passedProps) {
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -816,7 +853,7 @@ function createTippy(reference, passedProps) {
break;
case 'focus':
on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);
on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);
break;
case 'focusin':
@@ -879,7 +916,7 @@ function createTippy(reference, passedProps) {
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = reference.contains(target) || popper.contains(target);
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);
if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {
return;
@@ -1042,7 +1079,7 @@ function createTippy(reference, passedProps) {
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
@@ -1054,6 +1091,7 @@ function createTippy(reference, passedProps) {
parentNode.appendChild(popper);
}
instance.state.isMounted = true;
createPopperInstance();
/* istanbul ignore else */
@@ -1161,7 +1199,7 @@ function createTippy(reference, passedProps) {
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {
var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
@@ -1264,6 +1302,8 @@ function createTippy(reference, passedProps) {
}
onFirstUpdate = function onFirstUpdate() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
@@ -1284,8 +1324,10 @@ function createTippy(reference, passedProps) {
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
instance.state.isMounted = true;
pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the
// popper has been positioned for the first time
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
@@ -1324,6 +1366,7 @@ function createTippy(reference, passedProps) {
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper.style.visibility = 'hidden';
@@ -1331,7 +1374,7 @@ function createTippy(reference, passedProps) {
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),
@@ -1362,7 +1405,7 @@ function createTippy(reference, passedProps) {
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
doc.addEventListener('mousemove', debouncedOnMouseMove);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
@@ -1488,7 +1531,39 @@ var hideAll = function hideAll(_temp) {
});
};
// every time the popper is destroyed (i.e. a new target), removing the styles
// and causing transitions to break for singletons when the console is open, but
// most notably for non-transform styles being used, `gpuAcceleration: false`.
var applyStylesModifier = Object.assign({}, applyStyles, {
effect: function effect(_ref) {
var state = _ref.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
} // intentionally return no cleanup function
// return () => { ... }
}
});
var createSingleton = function createSingleton(tippyInstances, optionalProps) {
var _optionalProps$popper;
if (optionalProps === void 0) {
optionalProps = {};
}
@@ -1498,19 +1573,30 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var mutTippyInstances = tippyInstances;
var individualInstances = tippyInstances;
var references = [];
var triggerTargets = [];
var currentTarget;
var overrides = optionalProps.overrides;
var interceptSetPropsCleanups = [];
var shownOnCreate = false;
function setTriggerTargets() {
triggerTargets = individualInstances.map(function (instance) {
return normalizeToArray(instance.props.triggerTarget || instance.reference);
}).reduce(function (acc, item) {
return acc.concat(item);
}, []);
}
function setReferences() {
references = mutTippyInstances.map(function (instance) {
references = individualInstances.map(function (instance) {
return instance.reference;
});
}
function enableInstances(isEnabled) {
mutTippyInstances.forEach(function (instance) {
individualInstances.forEach(function (instance) {
if (isEnabled) {
instance.enable();
} else {
@@ -1519,58 +1605,163 @@ var createSingleton = function createSingleton(tippyInstances, optionalProps) {
});
}
function interceptSetProps(singleton) {
return individualInstances.map(function (instance) {
var originalSetProps = instance.setProps;
instance.setProps = function (props) {
originalSetProps(props);
if (instance.reference === currentTarget) {
singleton.setProps(props);
}
};
return function () {
instance.setProps = originalSetProps;
};
});
} // have to pass singleton, as it maybe undefined on first call
function prepareInstance(singleton, target) {
var index = triggerTargets.indexOf(target); // bail-out
if (target === currentTarget) {
return;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {
var _references$index;
return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();
}
}));
}
enableInstances(false);
setReferences();
var singleton = {
setTriggerTargets();
var plugin = {
fn: function fn() {
return {
onDestroy: function onDestroy() {
enableInstances(true);
},
onTrigger: function onTrigger(instance, event) {
var target = event.currentTarget;
var index = references.indexOf(target); // bail-out
if (target === currentTarget) {
return;
onHidden: function onHidden() {
currentTarget = null;
},
onClickOutside: function onClickOutside(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
currentTarget = null;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = mutTippyInstances[index].props[prop];
return acc;
}, {});
instance.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: function getReferenceClientRect() {
return target.getBoundingClientRect();
}
}));
},
onShow: function onShow(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
prepareInstance(instance, references[0]);
}
},
onTrigger: function onTrigger(instance, event) {
prepareInstance(instance, event.currentTarget);
}
};
}
};
var instance = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [singleton].concat(optionalProps.plugins || []),
triggerTarget: references
var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins || []),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])
})
}));
var originalSetProps = instance.setProps;
var originalShow = singleton.show;
instance.setProps = function (props) {
singleton.show = function (target) {
originalShow(); // first time, showOnCreate or programmatic call with no params
// default to showing first instance
if (!currentTarget && target == null) {
return prepareInstance(singleton, references[0]);
} // triggered from event (do nothing as prepareInstance already called by onTrigger)
// programmatic call with no params when already visible (do nothing again)
if (currentTarget && target == null) {
return;
} // target is index of instance
if (typeof target === 'number') {
return references[target] && prepareInstance(singleton, references[target]);
} // target is a child tippy instance
if (individualInstances.indexOf(target) >= 0) {
var ref = target.reference;
return prepareInstance(singleton, ref);
} // target is a ReferenceElement
if (references.indexOf(target) >= 0) {
return prepareInstance(singleton, target);
}
};
singleton.showNext = function () {
var first = references[0];
if (!currentTarget) {
return singleton.show(0);
}
var index = references.indexOf(currentTarget);
singleton.show(references[index + 1] || first);
};
singleton.showPrevious = function () {
var last = references[references.length - 1];
if (!currentTarget) {
return singleton.show(last);
}
var index = references.indexOf(currentTarget);
var target = references[index - 1] || last;
singleton.show(target);
};
var originalSetProps = singleton.setProps;
singleton.setProps = function (props) {
overrides = props.overrides || overrides;
originalSetProps(props);
};
instance.setInstances = function (nextInstances) {
singleton.setInstances = function (nextInstances) {
enableInstances(true);
mutTippyInstances = nextInstances;
interceptSetPropsCleanups.forEach(function (fn) {
return fn();
});
individualInstances = nextInstances;
enableInstances(false);
setReferences();
instance.setProps({
triggerTarget: references
setTriggerTargets();
interceptSetPropsCleanups = interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
return instance;
interceptSetPropsCleanups = interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP = {
@@ -1591,20 +1782,23 @@ function delegate(targets, props) {
var listeners = [];
var childTippyInstances = [];
var disabled = false;
var target = props.target;
var nativeProps = removeProperties(props, ['target']);
var parentProps = Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps = Object.assign({}, nativeProps, {
var childProps = Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue = tippy(targets, parentProps);
var normalizedReturnValue = normalizeToArray(returnValue);
function onTrigger(event) {
if (!event.target) {
if (!event.target || disabled) {
return;
}
@@ -1628,7 +1822,7 @@ function delegate(targets, props) {
return;
}
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type])) {
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {
return;
}
@@ -1655,7 +1849,7 @@ function delegate(targets, props) {
function addEventListeners(instance) {
var reference = instance.reference;
on(reference, 'touchstart', onTrigger);
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
@@ -1674,6 +1868,8 @@ function delegate(targets, props) {
function applyMutations(instance) {
var originalDestroy = instance.destroy;
var originalEnable = instance.enable;
var originalDisable = instance.disable;
instance.destroy = function (shouldDestroyChildInstances) {
if (shouldDestroyChildInstances === void 0) {
@@ -1691,6 +1887,22 @@ function delegate(targets, props) {
originalDestroy();
};
instance.enable = function () {
originalEnable();
childTippyInstances.forEach(function (instance) {
return instance.enable();
});
disabled = false;
};
instance.disable = function () {
originalDisable();
childTippyInstances.forEach(function (instance) {
return instance.disable();
});
disabled = true;
};
addEventListeners(instance);
}
@@ -1705,7 +1917,7 @@ var animateFill = {
var _instance$props$rende;
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
if (process.env.NODE_ENV !== "production") {
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
@@ -1830,6 +2042,7 @@ var followCursor = {
if (isCursorOverReference || !instance.props.interactive) {
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
var rect = reference.getBoundingClientRect();
var x = clientX;
@@ -1908,20 +2121,26 @@ var followCursor = {
}
},
onMount: function onMount() {
if (instance.props.followCursor) {
if (instance.props.followCursor && !wasFocusEvent) {
if (isUnmounted) {
onMouseMove(mouseCoords);
isUnmounted = false;
}
if (!wasFocusEvent && !getIsInitialBehavior()) {
if (!getIsInitialBehavior()) {
addListener();
}
}
},
onTrigger: function onTrigger(_, _ref3) {
var type = _ref3.type;
wasFocusEvent = type === 'focus';
onTrigger: function onTrigger(_, event) {
if (isMouseEvent(event)) {
mouseCoords = {
clientX: event.clientX,
clientY: event.clientY
};
}
wasFocusEvent = event.type === 'focus';
},
onHidden: function onHidden() {
if (instance.props.followCursor) {
@@ -1960,6 +2179,7 @@ var inlinePositioning = {
var placement;
var cursorRectIndex = -1;
var isInternalUpdate = false;
var triedPlacements = [];
var modifier = {
name: 'tippyInlinePositioning',
enabled: true,
@@ -1968,8 +2188,14 @@ var inlinePositioning = {
var state = _ref2.state;
if (isEnabled()) {
if (placement !== state.placement) {
if (triedPlacements.indexOf(state.placement) !== -1) {
triedPlacements = [];
}
if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {
triedPlacements.push(state.placement);
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
return _getReferenceClientRect(state.placement);
}
@@ -2006,10 +2232,11 @@ var inlinePositioning = {
var cursorRect = rects.find(function (rect) {
return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;
});
cursorRectIndex = rects.indexOf(cursorRect);
var index = rects.indexOf(cursorRect);
cursorRectIndex = index > -1 ? index : cursorRectIndex;
}
},
onUntrigger: function onUntrigger() {
onHidden: function onHidden() {
cursorRectIndex = -1;
}
};

File diff suppressed because one or more lines are too long

View File

@@ -13,6 +13,9 @@
passive: true,
capture: true
};
var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {
return document.body;
};
function hasOwnProperty(obj, key) {
return {}.hasOwnProperty.call(obj, key);
@@ -132,10 +135,13 @@
});
}
function getOwnerDocument(elementOrElements) {
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0];
var _element$ownerDocumen;
return element ? element.ownerDocument || document : document;
var _normalizeToArray = normalizeToArray(elementOrElements),
element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body
return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;
}
function isCursorOutsideInteractiveBorder(popperTreeData, event) {
var clientX = event.clientX,
@@ -171,6 +177,26 @@
box[method](event, listener);
});
}
/**
* Compared to xxx.contains, this function works for dom structures with shadow
* dom
*/
function actualContains(parent, child) {
var target = child;
while (target) {
var _target$getRootNode;
if (parent.contains(target)) {
return true;
}
target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;
}
return false;
}
var currentInput = {
isTouch: false
@@ -234,8 +260,8 @@
}
var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
var ua = isBrowser ? navigator.userAgent : '';
var isIE = /MSIE |Trident\//.test(ua);
var isIE11 = isBrowser ? // @ts-ignore
!!window.msCrypto : false;
function createMemoryLeakWarning(method) {
var txt = method === 'destroy' ? 'n already-' : ' ';
@@ -310,9 +336,7 @@
zIndex: 9999
};
var defaultProps = Object.assign({
appendTo: function appendTo() {
return document.body;
},
appendTo: TIPPY_DEFAULT_APPEND_TO,
aria: {
content: 'auto',
expanded: 'auto'
@@ -347,7 +371,7 @@
touch: true,
trigger: 'mouseenter focus',
triggerTarget: null
}, pluginProps, {}, renderProps);
}, pluginProps, renderProps);
var defaultKeys = Object.keys(defaultProps);
var setDefaultProps = function setDefaultProps(partialProps) {
/* istanbul ignore else */
@@ -367,12 +391,14 @@
defaultValue = plugin.defaultValue;
if (name) {
acc[name] = passedProps[name] !== undefined ? passedProps[name] : defaultValue;
var _name;
acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;
}
return acc;
}, {});
return Object.assign({}, passedProps, {}, pluginProps);
return Object.assign({}, passedProps, pluginProps);
}
function getDataAttributeProps(reference, plugins) {
var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {
@@ -403,7 +429,7 @@
var out = Object.assign({}, props, {
content: invokeWithArgsOrReturn(props.content, [reference])
}, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));
out.aria = Object.assign({}, defaultProps.aria, {}, out.aria);
out.aria = Object.assign({}, defaultProps.aria, out.aria);
out.aria = {
expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,
content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content
@@ -456,7 +482,7 @@
var mountedInstances = [];
function createTippy(reference, passedProps) {
var props = evaluateProps(reference, Object.assign({}, defaultProps, {}, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================
// 🔒 Private members
// ===========================================================================
@@ -472,8 +498,7 @@
var onFirstUpdate;
var listeners = [];
var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);
var currentTarget;
var doc = getOwnerDocument(props.triggerTarget || reference); // ===========================================================================
var currentTarget; // ===========================================================================
// 🔑 Public members
// ===========================================================================
@@ -557,10 +582,9 @@
instance.clearDelayTimeouts();
}
});
popper.addEventListener('mouseleave', function (event) {
popper.addEventListener('mouseleave', function () {
if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {
doc.addEventListener('mousemove', debouncedOnMouseMove);
debouncedOnMouseMove(event);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
}
});
return instance; // ===========================================================================
@@ -580,13 +604,18 @@
var _instance$props$rende;
// @ts-ignore
return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);
return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);
}
function getCurrentTarget() {
return currentTarget || reference;
}
function getDocument() {
var parent = getCurrentTarget().parentNode;
return parent ? getOwnerDocument(parent) : document;
}
function getDefaultTemplateChildren() {
return getChildren(popper);
}
@@ -602,8 +631,12 @@
return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);
}
function handleStyles() {
popper.style.pointerEvents = instance.props.interactive && instance.state.isVisible ? '' : 'none';
function handleStyles(fromHide) {
if (fromHide === void 0) {
fromHide = false;
}
popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';
popper.style.zIndex = "" + instance.props.zIndex;
}
@@ -614,7 +647,7 @@
pluginsHooks.forEach(function (pluginHooks) {
if (pluginHooks[hook]) {
pluginHooks[hook].apply(void 0, args);
pluginHooks[hook].apply(pluginHooks, args);
}
});
@@ -668,7 +701,7 @@
}
function cleanupInteractiveMouseListeners() {
doc.removeEventListener('mousemove', debouncedOnMouseMove);
getDocument().removeEventListener('mousemove', debouncedOnMouseMove);
mouseMoveListeners = mouseMoveListeners.filter(function (listener) {
return listener !== debouncedOnMouseMove;
});
@@ -680,15 +713,18 @@
if (didTouchMove || event.type === 'mousedown') {
return;
}
} // Clicked on interactive popper
}
var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper
if (instance.props.interactive && popper.contains(event.target)) {
if (instance.props.interactive && actualContains(popper, actualTarget)) {
return;
} // Clicked on the event listeners target
if (getCurrentTarget().contains(event.target)) {
if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {
return actualContains(el, actualTarget);
})) {
if (currentInput.isTouch) {
return;
}
@@ -701,7 +737,6 @@
}
if (instance.props.hideOnClick === true) {
isVisibleFromClick = false;
instance.clearDelayTimeouts();
instance.hide(); // `mousedown` event is fired right before `focus` if pressing the
// currentTarget. This lets a tippy with `focus` trigger know that it
@@ -729,6 +764,7 @@
}
function addDocumentPress() {
var doc = getDocument();
doc.addEventListener('mousedown', onDocumentPress, true);
doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -736,6 +772,7 @@
}
function removeDocumentPress() {
var doc = getDocument();
doc.removeEventListener('mousedown', onDocumentPress, true);
doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);
doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);
@@ -815,7 +852,7 @@
break;
case 'focus':
on(isIE ? 'focusout' : 'blur', onBlurOrFocusOut);
on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);
break;
case 'focusin':
@@ -878,7 +915,7 @@
function onMouseMove(event) {
var target = event.target;
var isCursorOverReferenceOrPopper = reference.contains(target) || popper.contains(target);
var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);
if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {
return;
@@ -1041,7 +1078,7 @@
var node = getCurrentTarget();
if (instance.props.interactive && appendTo === defaultProps.appendTo || appendTo === 'parent') {
if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {
parentNode = node.parentNode;
} else {
parentNode = invokeWithArgsOrReturn(appendTo, [node]);
@@ -1053,6 +1090,7 @@
parentNode.appendChild(popper);
}
instance.state.isMounted = true;
createPopperInstance();
/* istanbul ignore else */
@@ -1160,7 +1198,7 @@
invokeHook('onBeforeUpdate', [instance, partialProps]);
removeListeners();
var prevProps = instance.props;
var nextProps = evaluateProps(reference, Object.assign({}, instance.props, {}, partialProps, {
var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {
ignoreAttributes: true
}));
instance.props = nextProps;
@@ -1263,6 +1301,8 @@
}
onFirstUpdate = function onFirstUpdate() {
var _instance$popperInsta2;
if (!instance.state.isVisible || ignoreOnFirstUpdate) {
return;
}
@@ -1283,8 +1323,10 @@
handleAriaContentAttribute();
handleAriaExpandedAttribute();
pushIfUnique(mountedInstances, instance);
instance.state.isMounted = true;
pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the
// popper has been positioned for the first time
(_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();
invokeHook('onMount', [instance]);
if (instance.props.animation && getIsDefaultRenderFn()) {
@@ -1323,6 +1365,7 @@
instance.state.isVisible = false;
instance.state.isShown = false;
ignoreOnFirstUpdate = false;
isVisibleFromClick = false;
if (getIsDefaultRenderFn()) {
popper.style.visibility = 'hidden';
@@ -1330,7 +1373,7 @@
cleanupInteractiveMouseListeners();
removeDocumentPress();
handleStyles();
handleStyles(true);
if (getIsDefaultRenderFn()) {
var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),
@@ -1361,7 +1404,7 @@
warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));
}
doc.addEventListener('mousemove', debouncedOnMouseMove);
getDocument().addEventListener('mousemove', debouncedOnMouseMove);
pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);
debouncedOnMouseMove(event);
}
@@ -1487,7 +1530,39 @@
});
};
// every time the popper is destroyed (i.e. a new target), removing the styles
// and causing transitions to break for singletons when the console is open, but
// most notably for non-transform styles being used, `gpuAcceleration: false`.
var applyStylesModifier = Object.assign({}, core.applyStyles, {
effect: function effect(_ref) {
var state = _ref.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: '0',
top: '0',
margin: '0'
},
arrow: {
position: 'absolute'
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
} // intentionally return no cleanup function
// return () => { ... }
}
});
var createSingleton = function createSingleton(tippyInstances, optionalProps) {
var _optionalProps$popper;
if (optionalProps === void 0) {
optionalProps = {};
}
@@ -1497,19 +1572,30 @@
errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));
}
var mutTippyInstances = tippyInstances;
var individualInstances = tippyInstances;
var references = [];
var triggerTargets = [];
var currentTarget;
var overrides = optionalProps.overrides;
var interceptSetPropsCleanups = [];
var shownOnCreate = false;
function setTriggerTargets() {
triggerTargets = individualInstances.map(function (instance) {
return normalizeToArray(instance.props.triggerTarget || instance.reference);
}).reduce(function (acc, item) {
return acc.concat(item);
}, []);
}
function setReferences() {
references = mutTippyInstances.map(function (instance) {
references = individualInstances.map(function (instance) {
return instance.reference;
});
}
function enableInstances(isEnabled) {
mutTippyInstances.forEach(function (instance) {
individualInstances.forEach(function (instance) {
if (isEnabled) {
instance.enable();
} else {
@@ -1518,58 +1604,163 @@
});
}
function interceptSetProps(singleton) {
return individualInstances.map(function (instance) {
var originalSetProps = instance.setProps;
instance.setProps = function (props) {
originalSetProps(props);
if (instance.reference === currentTarget) {
singleton.setProps(props);
}
};
return function () {
instance.setProps = originalSetProps;
};
});
} // have to pass singleton, as it maybe undefined on first call
function prepareInstance(singleton, target) {
var index = triggerTargets.indexOf(target); // bail-out
if (target === currentTarget) {
return;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = individualInstances[index].props[prop];
return acc;
}, {});
singleton.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {
var _references$index;
return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();
}
}));
}
enableInstances(false);
setReferences();
var singleton = {
setTriggerTargets();
var plugin = {
fn: function fn() {
return {
onDestroy: function onDestroy() {
enableInstances(true);
},
onTrigger: function onTrigger(instance, event) {
var target = event.currentTarget;
var index = references.indexOf(target); // bail-out
if (target === currentTarget) {
return;
onHidden: function onHidden() {
currentTarget = null;
},
onClickOutside: function onClickOutside(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
currentTarget = null;
}
currentTarget = target;
var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {
acc[prop] = mutTippyInstances[index].props[prop];
return acc;
}, {});
instance.setProps(Object.assign({}, overrideProps, {
getReferenceClientRect: function getReferenceClientRect() {
return target.getBoundingClientRect();
}
}));
},
onShow: function onShow(instance) {
if (instance.props.showOnCreate && !shownOnCreate) {
shownOnCreate = true;
prepareInstance(instance, references[0]);
}
},
onTrigger: function onTrigger(instance, event) {
prepareInstance(instance, event.currentTarget);
}
};
}
};
var instance = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [singleton].concat(optionalProps.plugins || []),
triggerTarget: references
var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {
plugins: [plugin].concat(optionalProps.plugins || []),
triggerTarget: triggerTargets,
popperOptions: Object.assign({}, optionalProps.popperOptions, {
modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])
})
}));
var originalSetProps = instance.setProps;
var originalShow = singleton.show;
instance.setProps = function (props) {
singleton.show = function (target) {
originalShow(); // first time, showOnCreate or programmatic call with no params
// default to showing first instance
if (!currentTarget && target == null) {
return prepareInstance(singleton, references[0]);
} // triggered from event (do nothing as prepareInstance already called by onTrigger)
// programmatic call with no params when already visible (do nothing again)
if (currentTarget && target == null) {
return;
} // target is index of instance
if (typeof target === 'number') {
return references[target] && prepareInstance(singleton, references[target]);
} // target is a child tippy instance
if (individualInstances.indexOf(target) >= 0) {
var ref = target.reference;
return prepareInstance(singleton, ref);
} // target is a ReferenceElement
if (references.indexOf(target) >= 0) {
return prepareInstance(singleton, target);
}
};
singleton.showNext = function () {
var first = references[0];
if (!currentTarget) {
return singleton.show(0);
}
var index = references.indexOf(currentTarget);
singleton.show(references[index + 1] || first);
};
singleton.showPrevious = function () {
var last = references[references.length - 1];
if (!currentTarget) {
return singleton.show(last);
}
var index = references.indexOf(currentTarget);
var target = references[index - 1] || last;
singleton.show(target);
};
var originalSetProps = singleton.setProps;
singleton.setProps = function (props) {
overrides = props.overrides || overrides;
originalSetProps(props);
};
instance.setInstances = function (nextInstances) {
singleton.setInstances = function (nextInstances) {
enableInstances(true);
mutTippyInstances = nextInstances;
interceptSetPropsCleanups.forEach(function (fn) {
return fn();
});
individualInstances = nextInstances;
enableInstances(false);
setReferences();
instance.setProps({
triggerTarget: references
setTriggerTargets();
interceptSetPropsCleanups = interceptSetProps(singleton);
singleton.setProps({
triggerTarget: triggerTargets
});
};
return instance;
interceptSetPropsCleanups = interceptSetProps(singleton);
return singleton;
};
var BUBBLING_EVENTS_MAP = {
@@ -1590,20 +1781,23 @@
var listeners = [];
var childTippyInstances = [];
var disabled = false;
var target = props.target;
var nativeProps = removeProperties(props, ['target']);
var parentProps = Object.assign({}, nativeProps, {
trigger: 'manual',
touch: false
});
var childProps = Object.assign({}, nativeProps, {
var childProps = Object.assign({
touch: defaultProps.touch
}, nativeProps, {
showOnCreate: true
});
var returnValue = tippy(targets, parentProps);
var normalizedReturnValue = normalizeToArray(returnValue);
function onTrigger(event) {
if (!event.target) {
if (!event.target || disabled) {
return;
}
@@ -1627,7 +1821,7 @@
return;
}
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type])) {
if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {
return;
}
@@ -1654,7 +1848,7 @@
function addEventListeners(instance) {
var reference = instance.reference;
on(reference, 'touchstart', onTrigger);
on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);
on(reference, 'mouseover', onTrigger);
on(reference, 'focusin', onTrigger);
on(reference, 'click', onTrigger);
@@ -1673,6 +1867,8 @@
function applyMutations(instance) {
var originalDestroy = instance.destroy;
var originalEnable = instance.enable;
var originalDisable = instance.disable;
instance.destroy = function (shouldDestroyChildInstances) {
if (shouldDestroyChildInstances === void 0) {
@@ -1690,6 +1886,22 @@
originalDestroy();
};
instance.enable = function () {
originalEnable();
childTippyInstances.forEach(function (instance) {
return instance.enable();
});
disabled = false;
};
instance.disable = function () {
originalDisable();
childTippyInstances.forEach(function (instance) {
return instance.disable();
});
disabled = true;
};
addEventListeners(instance);
}
@@ -1704,7 +1916,7 @@
var _instance$props$rende;
// @ts-ignore
if (!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy)) {
if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {
{
errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');
}
@@ -1829,6 +2041,7 @@
if (isCursorOverReference || !instance.props.interactive) {
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
var rect = reference.getBoundingClientRect();
var x = clientX;
@@ -1907,20 +2120,26 @@
}
},
onMount: function onMount() {
if (instance.props.followCursor) {
if (instance.props.followCursor && !wasFocusEvent) {
if (isUnmounted) {
onMouseMove(mouseCoords);
isUnmounted = false;
}
if (!wasFocusEvent && !getIsInitialBehavior()) {
if (!getIsInitialBehavior()) {
addListener();
}
}
},
onTrigger: function onTrigger(_, _ref3) {
var type = _ref3.type;
wasFocusEvent = type === 'focus';
onTrigger: function onTrigger(_, event) {
if (isMouseEvent(event)) {
mouseCoords = {
clientX: event.clientX,
clientY: event.clientY
};
}
wasFocusEvent = event.type === 'focus';
},
onHidden: function onHidden() {
if (instance.props.followCursor) {
@@ -1959,6 +2178,7 @@
var placement;
var cursorRectIndex = -1;
var isInternalUpdate = false;
var triedPlacements = [];
var modifier = {
name: 'tippyInlinePositioning',
enabled: true,
@@ -1967,8 +2187,14 @@
var state = _ref2.state;
if (isEnabled()) {
if (placement !== state.placement) {
if (triedPlacements.indexOf(state.placement) !== -1) {
triedPlacements = [];
}
if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {
triedPlacements.push(state.placement);
instance.setProps({
// @ts-ignore - unneeded DOMRect properties
getReferenceClientRect: function getReferenceClientRect() {
return _getReferenceClientRect(state.placement);
}
@@ -2005,10 +2231,11 @@
var cursorRect = rects.find(function (rect) {
return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;
});
cursorRectIndex = rects.indexOf(cursorRect);
var index = rects.indexOf(cursorRect);
cursorRectIndex = index > -1 ? index : cursorRectIndex;
}
},
onUntrigger: function onUntrigger() {
onHidden: function onHidden() {
cursorRectIndex = -1;
}
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3
node_modules/tippy.js/index.d.ts generated vendored
View File

@@ -187,6 +187,9 @@ export type CreateSingletonInstance<TProps = CreateSingletonProps> = Instance<
TProps
> & {
setInstances(instances: Instance<any>[]): void;
show(target?: ReferenceElement | Instance | number): void;
showNext(): void;
showPrevious(): void;
};
export type CreateSingleton<TProps = Props> = (

14
node_modules/tippy.js/package.json generated vendored
View File

@@ -1,6 +1,6 @@
{
"name": "tippy.js",
"version": "6.2.5",
"version": "6.3.7",
"description": "The complete tooltip, popover, dropdown, and menu solution for the web",
"main": "dist/tippy.cjs.js",
"module": "dist/tippy.esm.js",
@@ -106,11 +106,11 @@
"devDependencies": {
"@babel/core": "^7.8.3",
"@babel/preset-env": "^7.8.3",
"@babel/preset-typescript": "^7.8.3",
"@babel/preset-typescript": "^7.13.0",
"@testing-library/dom": "^6.11.0",
"@types/node": "^12.12.25",
"@typescript-eslint/eslint-plugin": "^2.21.0",
"@typescript-eslint/parser": "^2.21.0",
"@typescript-eslint/eslint-plugin": "^4.16.1",
"@typescript-eslint/parser": "^4.16.1",
"autoprefixer": "^9.7.4",
"babel-jest": "^25.3.0",
"babel-plugin-dev-expression": "^0.2.2",
@@ -148,10 +148,10 @@
"rollup-plugin-terser": "^5.2.0",
"sass": "^1.25.0",
"serve": "^11.3.0",
"tsd": "^0.11.0",
"typescript": "^3.7.5"
"tsd": "^0.14.0",
"typescript": "^4.2.2"
},
"dependencies": {
"@popperjs/core": "^2.4.4"
"@popperjs/core": "^2.9.0"
}
}

View File

@@ -33,7 +33,7 @@ abstract class AbstractFolderAnalyzer
* @since 3.2.0 N°7175 update regexp to also remove `examples` folder
* @link https://www.regular-expressions.info/alternation.html RegExp alternation reference
*/
public const QUESTIONNABLE_FOLDER_REGEXP = '/^(tests?|examples?|htdocs?|demos?|external)$/i';
public const QUESTIONNABLE_FOLDER_REGEXP = '/^(tests?|examples?|htdocs?|demos?)$/i';
/**
* @return string Relative path to the root folder of the dependencies (e.g. "lib" for composer, "node_modules" for npm, ...) from iTop app. root
@@ -134,7 +134,7 @@ abstract class AbstractFolderAnalyzer
public function ListDeniedButStillPresentFoldersAbsPaths(): array
{
$aDeniedTestDir = $this->ListDeniedFoldersAbsPaths();
$aAllTestDir = $this->ListAllowedFoldersAbsPaths();
$aAllTestDir = $this->ListAllFoldersAbsPaths();
return array_intersect($aDeniedTestDir, $aAllTestDir);
}
}

View File

@@ -25,6 +25,9 @@ use Combodo\iTop\Dependencies\AbstractFolderAnalyzer;
class iTopNPM extends AbstractFolderAnalyzer
{
/** @inheritDoc */
public const QUESTIONNABLE_FOLDER_REGEXP = '/^(tests?|examples?|htdocs?|demos?|website|external|libs?|src)$/i';
/**
* @inheritDoc
*/
@@ -39,8 +42,19 @@ class iTopNPM extends AbstractFolderAnalyzer
public function ListAllowedFoldersRelPaths(): array
{
return [
// jQuery Sizzle used by jQuery
'jquery/external',
'ace-builds/textarea/src', // Unknown usage
'cliui/build/lib', // Unknown usage
'jquery/external', // jQuery Sizzle used by jQuery
'jquery-contextmenu/src', // Used sources
'magnific-popup/libs', // Unknown usage
'toastify-js/src', // Used sources
'y18n/build/lib', // Unknown usage
'yargs/build/lib', // Unknown usage
'yargs/lib', // Unknown usage
'yargs-parser/build/lib', // Unknown usage
];
}
@@ -50,6 +64,10 @@ class iTopNPM extends AbstractFolderAnalyzer
public function ListDeniedFoldersRelPaths(): array
{
return [
'@popperjs/core/dist/cjs',
'@popperjs/core/dist/esm',
'@popperjs/core/lib',
// ACE Editor see https://www.npmjs.com/package/ace-builds for dir contents
'ace-builds/demo',
'ace-builds/src',
@@ -57,12 +75,19 @@ class iTopNPM extends AbstractFolderAnalyzer
'ace-builds/src-noconflict',
'c3/htdocs',
'c3/src',
'clipboard/demo',
'clipboard/src',
'clipboard/test',
'd3/src',
'delegate/demo',
'delegate/src',
'delegate/test',
'good-listener/demo',
'good-listener/src',
'good-listener/test',
'jquery/src',
'jquery-migrate/src',
'jquery-migrate/test',
// `jquery-ui` package is just there for vulnerability scans, so we don't want to version its files (only `jquery-ui-dist` is used within the code base)
@@ -74,9 +99,14 @@ class iTopNPM extends AbstractFolderAnalyzer
'jquery-ui/ui',
'jquery-ui-dist/external',
'magnific-popup/libs/jquery',
'magnific-popup/src',
'magnific-popup/website',
'moment/src',
'mousetrap/plugins/record/tests',
'mousetrap/tests',
'select/demo',
'select/src',
'select/test',
'selectize-plugin-a11y/examples',
'tiny-emitter/test',