1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | (function (global, factory) {
|
9 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
10 | typeof define === 'function' && define.amd ? define(factory) :
|
11 | (global.Tippy = factory());
|
12 | }(this, (function () { 'use strict';
|
13 |
|
14 | var nativeHints = ['native code', '[object MutationObserverConstructor]'];
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | var isNative = (function (fn) {
|
24 | return nativeHints.some(function (hint) {
|
25 | return (fn || '').toString().indexOf(hint) > -1;
|
26 | });
|
27 | });
|
28 |
|
29 | var isBrowser = typeof window !== 'undefined';
|
30 | var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
|
31 | var timeoutDuration = 0;
|
32 | for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
|
33 | if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
|
34 | timeoutDuration = 1;
|
35 | break;
|
36 | }
|
37 | }
|
38 |
|
39 | function microtaskDebounce(fn) {
|
40 | var scheduled = false;
|
41 | var i = 0;
|
42 | var elem = document.createElement('span');
|
43 |
|
44 |
|
45 |
|
46 |
|
47 | var observer = new MutationObserver(function () {
|
48 | fn();
|
49 | scheduled = false;
|
50 | });
|
51 |
|
52 | observer.observe(elem, { attributes: true });
|
53 |
|
54 | return function () {
|
55 | if (!scheduled) {
|
56 | scheduled = true;
|
57 | elem.setAttribute('x-index', i);
|
58 | i = i + 1;
|
59 | }
|
60 | };
|
61 | }
|
62 |
|
63 | function taskDebounce(fn) {
|
64 | var scheduled = false;
|
65 | return function () {
|
66 | if (!scheduled) {
|
67 | scheduled = true;
|
68 | setTimeout(function () {
|
69 | scheduled = false;
|
70 | fn();
|
71 | }, timeoutDuration);
|
72 | }
|
73 | };
|
74 | }
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 | var supportsNativeMutationObserver = isBrowser && isNative(window.MutationObserver);
|
81 |
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 | var debounce = supportsNativeMutationObserver ? microtaskDebounce : taskDebounce;
|
92 |
|
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 |
|
99 |
|
100 | function isNumeric(n) {
|
101 | return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
|
102 | }
|
103 |
|
104 |
|
105 |
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 | function setStyles(element, styles) {
|
112 | Object.keys(styles).forEach(function (prop) {
|
113 | var unit = '';
|
114 |
|
115 | if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
|
116 | unit = 'px';
|
117 | }
|
118 | element.style[prop] = styles[prop] + unit;
|
119 | });
|
120 | }
|
121 |
|
122 |
|
123 |
|
124 |
|
125 |
|
126 |
|
127 |
|
128 |
|
129 | function getSupportedPropertyName(property) {
|
130 | var prefixes = [false, 'ms', 'webkit', 'moz', 'o'];
|
131 | var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
|
132 |
|
133 | for (var i = 0; i < prefixes.length - 1; i++) {
|
134 | var prefix = prefixes[i];
|
135 | var toCheck = prefix ? '' + prefix + upperProp : property;
|
136 | if (typeof window.document.body.style[toCheck] !== 'undefined') {
|
137 | return toCheck;
|
138 | }
|
139 | }
|
140 | return null;
|
141 | }
|
142 |
|
143 | function isOffsetContainer(element) {
|
144 | var nodeName = element.nodeName;
|
145 |
|
146 | if (nodeName === 'BODY') {
|
147 | return false;
|
148 | }
|
149 | return nodeName === 'HTML' || element.firstElementChild.offsetParent === element;
|
150 | }
|
151 |
|
152 |
|
153 |
|
154 |
|
155 |
|
156 |
|
157 |
|
158 |
|
159 | function getRoot(node) {
|
160 | if (node.parentNode !== null) {
|
161 | return getRoot(node.parentNode);
|
162 | }
|
163 |
|
164 | return node;
|
165 | }
|
166 |
|
167 |
|
168 |
|
169 |
|
170 |
|
171 |
|
172 |
|
173 |
|
174 | function getOffsetParent(element) {
|
175 |
|
176 | var offsetParent = element && element.offsetParent;
|
177 | var nodeName = offsetParent && offsetParent.nodeName;
|
178 |
|
179 | if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
|
180 | return window.document.documentElement;
|
181 | }
|
182 |
|
183 | return offsetParent;
|
184 | }
|
185 |
|
186 |
|
187 |
|
188 |
|
189 |
|
190 |
|
191 |
|
192 |
|
193 |
|
194 | function findCommonOffsetParent(element1, element2) {
|
195 |
|
196 | if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
|
197 | return window.document.documentElement;
|
198 | }
|
199 |
|
200 |
|
201 | var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
|
202 | var start = order ? element1 : element2;
|
203 | var end = order ? element2 : element1;
|
204 |
|
205 |
|
206 | var range = document.createRange();
|
207 | range.setStart(start, 0);
|
208 | range.setEnd(end, 0);
|
209 | var commonAncestorContainer = range.commonAncestorContainer;
|
210 |
|
211 |
|
212 |
|
213 | if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer) {
|
214 | if (isOffsetContainer(commonAncestorContainer)) {
|
215 | return commonAncestorContainer;
|
216 | }
|
217 |
|
218 | return getOffsetParent(commonAncestorContainer);
|
219 | }
|
220 |
|
221 |
|
222 | var element1root = getRoot(element1);
|
223 | if (element1root.host) {
|
224 | return findCommonOffsetParent(element1root.host, element2);
|
225 | } else {
|
226 | return findCommonOffsetParent(element1, getRoot(element2).host);
|
227 | }
|
228 | }
|
229 |
|
230 |
|
231 |
|
232 |
|
233 |
|
234 |
|
235 |
|
236 |
|
237 | function getStyleComputedProperty(element, property) {
|
238 | if (element.nodeType !== 1) {
|
239 | return [];
|
240 | }
|
241 |
|
242 | var css = window.getComputedStyle(element, null);
|
243 | return property ? css[property] : css;
|
244 | }
|
245 |
|
246 |
|
247 |
|
248 |
|
249 |
|
250 |
|
251 |
|
252 |
|
253 |
|
254 | function getScroll(element) {
|
255 | var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';
|
256 |
|
257 | var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
|
258 | var nodeName = element.nodeName;
|
259 |
|
260 | if (nodeName === 'BODY' || nodeName === 'HTML') {
|
261 | var html = window.document.documentElement;
|
262 | var scrollingElement = window.document.scrollingElement || html;
|
263 | return scrollingElement[upperSide];
|
264 | }
|
265 |
|
266 | return element[upperSide];
|
267 | }
|
268 |
|
269 |
|
270 |
|
271 |
|
272 |
|
273 |
|
274 |
|
275 |
|
276 |
|
277 |
|
278 | function includeScroll(rect, element) {
|
279 | var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
280 |
|
281 | var scrollTop = getScroll(element, 'top');
|
282 | var scrollLeft = getScroll(element, 'left');
|
283 | var modifier = subtract ? -1 : 1;
|
284 | rect.top += scrollTop * modifier;
|
285 | rect.bottom += scrollTop * modifier;
|
286 | rect.left += scrollLeft * modifier;
|
287 | rect.right += scrollLeft * modifier;
|
288 | return rect;
|
289 | }
|
290 |
|
291 |
|
292 |
|
293 |
|
294 |
|
295 |
|
296 |
|
297 |
|
298 | function getParentNode(element) {
|
299 | if (element.nodeName === 'HTML') {
|
300 | return element;
|
301 | }
|
302 | return element.parentNode || element.host;
|
303 | }
|
304 |
|
305 |
|
306 |
|
307 |
|
308 |
|
309 |
|
310 |
|
311 |
|
312 | function getScrollParent(element) {
|
313 |
|
314 | if (!element || ['HTML', 'BODY', '#document'].indexOf(element.nodeName) !== -1) {
|
315 | return window.document.body;
|
316 | }
|
317 |
|
318 |
|
319 |
|
320 | var _getStyleComputedProp = getStyleComputedProperty(element),
|
321 | overflow = _getStyleComputedProp.overflow,
|
322 | overflowX = _getStyleComputedProp.overflowX,
|
323 | overflowY = _getStyleComputedProp.overflowY;
|
324 |
|
325 | if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {
|
326 | return element;
|
327 | }
|
328 |
|
329 | return getScrollParent(getParentNode(element));
|
330 | }
|
331 |
|
332 |
|
333 |
|
334 |
|
335 |
|
336 |
|
337 |
|
338 |
|
339 |
|
340 |
|
341 | function getBordersSize(styles, axis) {
|
342 | var sideA = axis === 'x' ? 'Left' : 'Top';
|
343 | var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
|
344 |
|
345 | return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0];
|
346 | }
|
347 |
|
348 | function getWindowSizes() {
|
349 | var body = window.document.body;
|
350 | var html = window.document.documentElement;
|
351 | return {
|
352 | height: Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight),
|
353 | width: Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth)
|
354 | };
|
355 | }
|
356 |
|
357 | var classCallCheck = function (instance, Constructor) {
|
358 | if (!(instance instanceof Constructor)) {
|
359 | throw new TypeError("Cannot call a class as a function");
|
360 | }
|
361 | };
|
362 |
|
363 | var createClass = function () {
|
364 | function defineProperties(target, props) {
|
365 | for (var i = 0; i < props.length; i++) {
|
366 | var descriptor = props[i];
|
367 | descriptor.enumerable = descriptor.enumerable || false;
|
368 | descriptor.configurable = true;
|
369 | if ("value" in descriptor) descriptor.writable = true;
|
370 | Object.defineProperty(target, descriptor.key, descriptor);
|
371 | }
|
372 | }
|
373 |
|
374 | return function (Constructor, protoProps, staticProps) {
|
375 | if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
376 | if (staticProps) defineProperties(Constructor, staticProps);
|
377 | return Constructor;
|
378 | };
|
379 | }();
|
380 |
|
381 |
|
382 |
|
383 |
|
384 |
|
385 | var defineProperty = function (obj, key, value) {
|
386 | if (key in obj) {
|
387 | Object.defineProperty(obj, key, {
|
388 | value: value,
|
389 | enumerable: true,
|
390 | configurable: true,
|
391 | writable: true
|
392 | });
|
393 | } else {
|
394 | obj[key] = value;
|
395 | }
|
396 |
|
397 | return obj;
|
398 | };
|
399 |
|
400 | var _extends = Object.assign || function (target) {
|
401 | for (var i = 1; i < arguments.length; i++) {
|
402 | var source = arguments[i];
|
403 |
|
404 | for (var key in source) {
|
405 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
406 | target[key] = source[key];
|
407 | }
|
408 | }
|
409 | }
|
410 |
|
411 | return target;
|
412 | };
|
413 |
|
414 |
|
415 |
|
416 |
|
417 |
|
418 |
|
419 |
|
420 |
|
421 | function getClientRect(offsets) {
|
422 | return _extends({}, offsets, {
|
423 | right: offsets.left + offsets.width,
|
424 | bottom: offsets.top + offsets.height
|
425 | });
|
426 | }
|
427 |
|
428 |
|
429 |
|
430 |
|
431 |
|
432 |
|
433 |
|
434 | var isIE10 = undefined;
|
435 |
|
436 | var isIE10$1 = function () {
|
437 | if (isIE10 === undefined) {
|
438 | isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;
|
439 | }
|
440 | return isIE10;
|
441 | };
|
442 |
|
443 |
|
444 |
|
445 |
|
446 |
|
447 |
|
448 |
|
449 |
|
450 | function getBoundingClientRect(element) {
|
451 | var rect = {};
|
452 |
|
453 |
|
454 |
|
455 |
|
456 | if (isIE10$1()) {
|
457 | try {
|
458 | rect = element.getBoundingClientRect();
|
459 | var scrollTop = getScroll(element, 'top');
|
460 | var scrollLeft = getScroll(element, 'left');
|
461 | rect.top += scrollTop;
|
462 | rect.left += scrollLeft;
|
463 | rect.bottom += scrollTop;
|
464 | rect.right += scrollLeft;
|
465 | } catch (err) {}
|
466 | } else {
|
467 | rect = element.getBoundingClientRect();
|
468 | }
|
469 |
|
470 | var result = {
|
471 | left: rect.left,
|
472 | top: rect.top,
|
473 | width: rect.right - rect.left,
|
474 | height: rect.bottom - rect.top
|
475 | };
|
476 |
|
477 |
|
478 | var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};
|
479 | var width = sizes.width || element.clientWidth || result.right - result.left;
|
480 | var height = sizes.height || element.clientHeight || result.bottom - result.top;
|
481 |
|
482 | var horizScrollbar = element.offsetWidth - width;
|
483 | var vertScrollbar = element.offsetHeight - height;
|
484 |
|
485 |
|
486 |
|
487 | if (horizScrollbar || vertScrollbar) {
|
488 | var styles = getStyleComputedProperty(element);
|
489 | horizScrollbar -= getBordersSize(styles, 'x');
|
490 | vertScrollbar -= getBordersSize(styles, 'y');
|
491 |
|
492 | result.width -= horizScrollbar;
|
493 | result.height -= vertScrollbar;
|
494 | }
|
495 |
|
496 | return getClientRect(result);
|
497 | }
|
498 |
|
499 | function getOffsetRectRelativeToArbitraryNode(children, parent) {
|
500 | var isIE10 = isIE10$1();
|
501 | var isHTML = parent.nodeName === 'HTML';
|
502 | var childrenRect = getBoundingClientRect(children);
|
503 | var parentRect = getBoundingClientRect(parent);
|
504 | var scrollParent = getScrollParent(children);
|
505 | var offsets = getClientRect({
|
506 | top: childrenRect.top - parentRect.top,
|
507 | left: childrenRect.left - parentRect.left,
|
508 | width: childrenRect.width,
|
509 | height: childrenRect.height
|
510 | });
|
511 |
|
512 |
|
513 |
|
514 |
|
515 |
|
516 | if (isHTML || parent.nodeName === 'BODY') {
|
517 | var styles = getStyleComputedProperty(parent);
|
518 | var borderTopWidth = isIE10 && isHTML ? 0 : +styles.borderTopWidth.split('px')[0];
|
519 | var borderLeftWidth = isIE10 && isHTML ? 0 : +styles.borderLeftWidth.split('px')[0];
|
520 | var marginTop = isIE10 && isHTML ? 0 : +styles.marginTop.split('px')[0];
|
521 | var marginLeft = isIE10 && isHTML ? 0 : +styles.marginLeft.split('px')[0];
|
522 |
|
523 | offsets.top -= borderTopWidth - marginTop;
|
524 | offsets.bottom -= borderTopWidth - marginTop;
|
525 | offsets.left -= borderLeftWidth - marginLeft;
|
526 | offsets.right -= borderLeftWidth - marginLeft;
|
527 |
|
528 |
|
529 | offsets.marginTop = marginTop;
|
530 | offsets.marginLeft = marginLeft;
|
531 | }
|
532 |
|
533 | if (parent.contains(scrollParent) && (isIE10 || scrollParent.nodeName !== 'BODY')) {
|
534 | offsets = includeScroll(offsets, parent);
|
535 | }
|
536 |
|
537 | return offsets;
|
538 | }
|
539 |
|
540 |
|
541 |
|
542 |
|
543 |
|
544 |
|
545 |
|
546 |
|
547 |
|
548 |
|
549 | function getReferenceOffsets(state, popper, reference) {
|
550 | var commonOffsetParent = findCommonOffsetParent(popper, reference);
|
551 | return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);
|
552 | }
|
553 |
|
554 |
|
555 |
|
556 |
|
557 |
|
558 |
|
559 |
|
560 |
|
561 | function getOuterSizes(element) {
|
562 | var styles = window.getComputedStyle(element);
|
563 | var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
|
564 | var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
|
565 | var result = {
|
566 | width: element.offsetWidth + y,
|
567 | height: element.offsetHeight + x
|
568 | };
|
569 | return result;
|
570 | }
|
571 |
|
572 |
|
573 |
|
574 |
|
575 |
|
576 |
|
577 |
|
578 |
|
579 | function getOppositePlacement(placement) {
|
580 | var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
|
581 | return placement.replace(/left|right|bottom|top/g, function (matched) {
|
582 | return hash[matched];
|
583 | });
|
584 | }
|
585 |
|
586 |
|
587 |
|
588 |
|
589 |
|
590 |
|
591 |
|
592 |
|
593 |
|
594 |
|
595 |
|
596 | function getPopperOffsets(position, popper, referenceOffsets, placement) {
|
597 | placement = placement.split('-')[0];
|
598 |
|
599 |
|
600 | var popperRect = getOuterSizes(popper);
|
601 |
|
602 |
|
603 | var popperOffsets = {
|
604 | position: position,
|
605 | width: popperRect.width,
|
606 | height: popperRect.height
|
607 | };
|
608 |
|
609 |
|
610 | var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
|
611 | var mainSide = isHoriz ? 'top' : 'left';
|
612 | var secondarySide = isHoriz ? 'left' : 'top';
|
613 | var measurement = isHoriz ? 'height' : 'width';
|
614 | var secondaryMeasurement = !isHoriz ? 'height' : 'width';
|
615 |
|
616 | popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
|
617 | if (placement === secondarySide) {
|
618 | popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
|
619 | } else {
|
620 | popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
|
621 | }
|
622 |
|
623 | return popperOffsets;
|
624 | }
|
625 |
|
626 |
|
627 |
|
628 |
|
629 |
|
630 |
|
631 |
|
632 |
|
633 | function isFunction(functionToCheck) {
|
634 | var getType = {};
|
635 | return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
|
636 | }
|
637 |
|
638 | function attachToScrollParents(scrollParent, event, callback, scrollParents) {
|
639 | var isBody = scrollParent.nodeName === 'BODY';
|
640 | var target = isBody ? window : scrollParent;
|
641 | target.addEventListener(event, callback, { passive: true });
|
642 |
|
643 | if (!isBody) {
|
644 | attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
|
645 | }
|
646 | scrollParents.push(target);
|
647 | }
|
648 |
|
649 |
|
650 |
|
651 |
|
652 |
|
653 |
|
654 |
|
655 | function setupEventListeners(reference, options, state, updateBound) {
|
656 |
|
657 | state.updateBound = updateBound;
|
658 | window.addEventListener('resize', state.updateBound, { passive: true });
|
659 |
|
660 |
|
661 | var scrollElement = getScrollParent(reference);
|
662 | attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
|
663 | state.scrollElement = scrollElement;
|
664 | state.eventsEnabled = true;
|
665 |
|
666 | return state;
|
667 | }
|
668 |
|
669 |
|
670 |
|
671 |
|
672 |
|
673 |
|
674 |
|
675 | function removeEventListeners(reference, state) {
|
676 |
|
677 | window.removeEventListener('resize', state.updateBound);
|
678 |
|
679 |
|
680 | state.scrollParents.forEach(function (target) {
|
681 | target.removeEventListener('scroll', state.updateBound);
|
682 | });
|
683 |
|
684 |
|
685 | state.updateBound = null;
|
686 | state.scrollParents = [];
|
687 | state.scrollElement = null;
|
688 | state.eventsEnabled = false;
|
689 | return state;
|
690 | }
|
691 |
|
692 |
|
693 |
|
694 |
|
695 |
|
696 |
|
697 |
|
698 |
|
699 |
|
700 |
|
701 | function find(arr, check) {
|
702 |
|
703 | if (Array.prototype.find) {
|
704 | return arr.find(check);
|
705 | }
|
706 |
|
707 |
|
708 | return arr.filter(check)[0];
|
709 | }
|
710 |
|
711 |
|
712 |
|
713 |
|
714 |
|
715 |
|
716 |
|
717 |
|
718 |
|
719 |
|
720 | function findIndex(arr, prop, value) {
|
721 |
|
722 | if (Array.prototype.findIndex) {
|
723 | return arr.findIndex(function (cur) {
|
724 | return cur[prop] === value;
|
725 | });
|
726 | }
|
727 |
|
728 |
|
729 | var match = find(arr, function (obj) {
|
730 | return obj[prop] === value;
|
731 | });
|
732 | return arr.indexOf(match);
|
733 | }
|
734 |
|
735 |
|
736 |
|
737 |
|
738 |
|
739 |
|
740 |
|
741 |
|
742 |
|
743 | function runModifiers(modifiers, data, ends) {
|
744 | var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));
|
745 |
|
746 | modifiersToRun.forEach(function (modifier) {
|
747 | if (modifier.function) {
|
748 | console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
|
749 | }
|
750 | var fn = modifier.function || modifier.fn;
|
751 | if (modifier.enabled && isFunction(fn)) {
|
752 | data = fn(data, modifier);
|
753 | }
|
754 | });
|
755 |
|
756 | return data;
|
757 | }
|
758 |
|
759 |
|
760 |
|
761 |
|
762 |
|
763 |
|
764 |
|
765 | function isModifierEnabled(modifiers, modifierName) {
|
766 | return modifiers.some(function (_ref) {
|
767 | var name = _ref.name,
|
768 | enabled = _ref.enabled;
|
769 | return enabled && name === modifierName;
|
770 | });
|
771 | }
|
772 |
|
773 | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
|
774 | var html = window.document.documentElement;
|
775 | var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
|
776 | var width = Math.max(html.clientWidth, window.innerWidth || 0);
|
777 | var height = Math.max(html.clientHeight, window.innerHeight || 0);
|
778 |
|
779 | var scrollTop = getScroll(html);
|
780 | var scrollLeft = getScroll(html, 'left');
|
781 |
|
782 | var offset = {
|
783 | top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
|
784 | left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
|
785 | width: width,
|
786 | height: height
|
787 | };
|
788 |
|
789 | return getClientRect(offset);
|
790 | }
|
791 |
|
792 |
|
793 |
|
794 |
|
795 |
|
796 |
|
797 |
|
798 |
|
799 |
|
800 | function isFixed(element) {
|
801 | var nodeName = element.nodeName;
|
802 | if (nodeName === 'BODY' || nodeName === 'HTML') {
|
803 | return false;
|
804 | }
|
805 | if (getStyleComputedProperty(element, 'position') === 'fixed') {
|
806 | return true;
|
807 | }
|
808 | return isFixed(getParentNode(element));
|
809 | }
|
810 |
|
811 |
|
812 |
|
813 |
|
814 |
|
815 |
|
816 |
|
817 |
|
818 |
|
819 |
|
820 | function getBoundaries(popper, reference, padding, boundariesElement) {
|
821 |
|
822 | var boundaries = { top: 0, left: 0 };
|
823 | var offsetParent = findCommonOffsetParent(popper, reference);
|
824 |
|
825 |
|
826 | if (boundariesElement === 'viewport') {
|
827 | boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);
|
828 | } else {
|
829 |
|
830 | var boundariesNode = void 0;
|
831 | if (boundariesElement === 'scrollParent') {
|
832 | boundariesNode = getScrollParent(getParentNode(popper));
|
833 | if (boundariesNode.nodeName === 'BODY') {
|
834 | boundariesNode = window.document.documentElement;
|
835 | }
|
836 | } else if (boundariesElement === 'window') {
|
837 | boundariesNode = window.document.documentElement;
|
838 | } else {
|
839 | boundariesNode = boundariesElement;
|
840 | }
|
841 |
|
842 | var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent);
|
843 |
|
844 |
|
845 | if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
|
846 | var _getWindowSizes = getWindowSizes(),
|
847 | height = _getWindowSizes.height,
|
848 | width = _getWindowSizes.width;
|
849 |
|
850 | boundaries.top += offsets.top - offsets.marginTop;
|
851 | boundaries.bottom = height + offsets.top;
|
852 | boundaries.left += offsets.left - offsets.marginLeft;
|
853 | boundaries.right = width + offsets.left;
|
854 | } else {
|
855 |
|
856 | boundaries = offsets;
|
857 | }
|
858 | }
|
859 |
|
860 |
|
861 | boundaries.left += padding;
|
862 | boundaries.top += padding;
|
863 | boundaries.right -= padding;
|
864 | boundaries.bottom -= padding;
|
865 |
|
866 | return boundaries;
|
867 | }
|
868 |
|
869 |
|
870 |
|
871 |
|
872 |
|
873 |
|
874 |
|
875 |
|
876 |
|
877 |
|
878 | function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
|
879 | if (placement.indexOf('auto') === -1) {
|
880 | return placement;
|
881 | }
|
882 |
|
883 | var boundaries = getBoundaries(popper, reference, 0, boundariesElement);
|
884 |
|
885 | var sides = {
|
886 | top: refRect.top - boundaries.top,
|
887 | right: boundaries.right - refRect.right,
|
888 | bottom: boundaries.bottom - refRect.bottom,
|
889 | left: refRect.left - boundaries.left
|
890 | };
|
891 |
|
892 | var computedPlacement = Object.keys(sides).sort(function (a, b) {
|
893 | return sides[b] - sides[a];
|
894 | })[0];
|
895 | var variation = placement.split('-')[1];
|
896 |
|
897 | return computedPlacement + (variation ? '-' + variation : '');
|
898 | }
|
899 |
|
900 | var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];
|
901 |
|
902 |
|
903 |
|
904 |
|
905 |
|
906 |
|
907 |
|
908 |
|
909 | function setAttributes(element, attributes) {
|
910 | Object.keys(attributes).forEach(function (prop) {
|
911 | var value = attributes[prop];
|
912 | if (value !== false) {
|
913 | element.setAttribute(prop, attributes[prop]);
|
914 | } else {
|
915 | element.removeAttribute(prop);
|
916 | }
|
917 | });
|
918 | }
|
919 |
|
920 |
|
921 |
|
922 |
|
923 |
|
924 |
|
925 |
|
926 |
|
927 |
|
928 |
|
929 | function applyStyle(data, options) {
|
930 |
|
931 |
|
932 | var styles = {
|
933 | position: data.offsets.popper.position
|
934 | };
|
935 |
|
936 | var attributes = {
|
937 | 'x-placement': data.placement
|
938 | };
|
939 |
|
940 |
|
941 | var left = Math.round(data.offsets.popper.left);
|
942 | var top = Math.round(data.offsets.popper.top);
|
943 |
|
944 |
|
945 |
|
946 |
|
947 | var prefixedProperty = getSupportedPropertyName('transform');
|
948 | if (options.gpuAcceleration && prefixedProperty) {
|
949 | styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
|
950 | styles.top = 0;
|
951 | styles.left = 0;
|
952 | styles.willChange = 'transform';
|
953 | } else {
|
954 |
|
955 | styles.left = left;
|
956 | styles.top = top;
|
957 | styles.willChange = 'top, left';
|
958 | }
|
959 |
|
960 |
|
961 |
|
962 |
|
963 |
|
964 | setStyles(data.instance.popper, _extends({}, styles, data.styles));
|
965 |
|
966 |
|
967 |
|
968 | setAttributes(data.instance.popper, _extends({}, attributes, data.attributes));
|
969 |
|
970 |
|
971 | if (data.offsets.arrow) {
|
972 | setStyles(data.arrowElement, data.offsets.arrow);
|
973 | }
|
974 |
|
975 | return data;
|
976 | }
|
977 |
|
978 |
|
979 |
|
980 |
|
981 |
|
982 |
|
983 |
|
984 |
|
985 |
|
986 |
|
987 | function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
|
988 |
|
989 | var referenceOffsets = getReferenceOffsets(state, popper, reference);
|
990 |
|
991 |
|
992 |
|
993 |
|
994 | var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement);
|
995 |
|
996 | popper.setAttribute('x-placement', placement);
|
997 | return options;
|
998 | }
|
999 |
|
1000 |
|
1001 |
|
1002 |
|
1003 |
|
1004 |
|
1005 |
|
1006 |
|
1007 |
|
1008 |
|
1009 |
|
1010 | function isModifierRequired(modifiers, requestingName, requestedName) {
|
1011 | var requesting = find(modifiers, function (_ref) {
|
1012 | var name = _ref.name;
|
1013 | return name === requestingName;
|
1014 | });
|
1015 |
|
1016 | var isRequired = !!requesting && modifiers.some(function (modifier) {
|
1017 | return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
|
1018 | });
|
1019 |
|
1020 | if (!isRequired) {
|
1021 | var _requesting = '`' + requestingName + '`';
|
1022 | var requested = '`' + requestedName + '`';
|
1023 | console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
|
1024 | }
|
1025 | return isRequired;
|
1026 | }
|
1027 |
|
1028 |
|
1029 |
|
1030 |
|
1031 |
|
1032 |
|
1033 |
|
1034 |
|
1035 | function arrow(data, options) {
|
1036 |
|
1037 | if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
|
1038 | return data;
|
1039 | }
|
1040 |
|
1041 | var arrowElement = options.element;
|
1042 |
|
1043 |
|
1044 | if (typeof arrowElement === 'string') {
|
1045 | arrowElement = data.instance.popper.querySelector(arrowElement);
|
1046 |
|
1047 |
|
1048 | if (!arrowElement) {
|
1049 | return data;
|
1050 | }
|
1051 | } else {
|
1052 |
|
1053 |
|
1054 | if (!data.instance.popper.contains(arrowElement)) {
|
1055 | console.warn('WARNING: `arrow.element` must be child of its popper element!');
|
1056 | return data;
|
1057 | }
|
1058 | }
|
1059 |
|
1060 | var placement = data.placement.split('-')[0];
|
1061 | var popper = getClientRect(data.offsets.popper);
|
1062 | var reference = data.offsets.reference;
|
1063 | var isVertical = ['left', 'right'].indexOf(placement) !== -1;
|
1064 |
|
1065 | var len = isVertical ? 'height' : 'width';
|
1066 | var side = isVertical ? 'top' : 'left';
|
1067 | var altSide = isVertical ? 'left' : 'top';
|
1068 | var opSide = isVertical ? 'bottom' : 'right';
|
1069 | var arrowElementSize = getOuterSizes(arrowElement)[len];
|
1070 |
|
1071 |
|
1072 |
|
1073 |
|
1074 |
|
1075 |
|
1076 | if (reference[opSide] - arrowElementSize < popper[side]) {
|
1077 | data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
|
1078 | }
|
1079 |
|
1080 | if (reference[side] + arrowElementSize > popper[opSide]) {
|
1081 | data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
|
1082 | }
|
1083 |
|
1084 |
|
1085 | var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
|
1086 |
|
1087 |
|
1088 | var sideValue = center - getClientRect(data.offsets.popper)[side];
|
1089 |
|
1090 |
|
1091 | sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
|
1092 |
|
1093 | data.arrowElement = arrowElement;
|
1094 | data.offsets.arrow = {};
|
1095 | data.offsets.arrow[side] = sideValue;
|
1096 | data.offsets.arrow[altSide] = '';
|
1097 |
|
1098 | return data;
|
1099 | }
|
1100 |
|
1101 |
|
1102 |
|
1103 |
|
1104 |
|
1105 |
|
1106 |
|
1107 |
|
1108 | function getOppositeVariation(variation) {
|
1109 | if (variation === 'end') {
|
1110 | return 'start';
|
1111 | } else if (variation === 'start') {
|
1112 | return 'end';
|
1113 | }
|
1114 | return variation;
|
1115 | }
|
1116 |
|
1117 |
|
1118 | var validPlacements = placements.slice(3);
|
1119 |
|
1120 |
|
1121 |
|
1122 |
|
1123 |
|
1124 |
|
1125 |
|
1126 |
|
1127 |
|
1128 |
|
1129 |
|
1130 | function clockwise(placement) {
|
1131 | var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
1132 |
|
1133 | var index = validPlacements.indexOf(placement);
|
1134 | var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
|
1135 | return counter ? arr.reverse() : arr;
|
1136 | }
|
1137 |
|
1138 | var BEHAVIORS = {
|
1139 | FLIP: 'flip',
|
1140 | CLOCKWISE: 'clockwise',
|
1141 | COUNTERCLOCKWISE: 'counterclockwise'
|
1142 | };
|
1143 |
|
1144 |
|
1145 |
|
1146 |
|
1147 |
|
1148 |
|
1149 |
|
1150 |
|
1151 | function flip(data, options) {
|
1152 |
|
1153 | if (isModifierEnabled(data.instance.modifiers, 'inner')) {
|
1154 | return data;
|
1155 | }
|
1156 |
|
1157 | if (data.flipped && data.placement === data.originalPlacement) {
|
1158 |
|
1159 | return data;
|
1160 | }
|
1161 |
|
1162 | var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement);
|
1163 |
|
1164 | var placement = data.placement.split('-')[0];
|
1165 | var placementOpposite = getOppositePlacement(placement);
|
1166 | var variation = data.placement.split('-')[1] || '';
|
1167 |
|
1168 | var flipOrder = [];
|
1169 |
|
1170 | switch (options.behavior) {
|
1171 | case BEHAVIORS.FLIP:
|
1172 | flipOrder = [placement, placementOpposite];
|
1173 | break;
|
1174 | case BEHAVIORS.CLOCKWISE:
|
1175 | flipOrder = clockwise(placement);
|
1176 | break;
|
1177 | case BEHAVIORS.COUNTERCLOCKWISE:
|
1178 | flipOrder = clockwise(placement, true);
|
1179 | break;
|
1180 | default:
|
1181 | flipOrder = options.behavior;
|
1182 | }
|
1183 |
|
1184 | flipOrder.forEach(function (step, index) {
|
1185 | if (placement !== step || flipOrder.length === index + 1) {
|
1186 | return data;
|
1187 | }
|
1188 |
|
1189 | placement = data.placement.split('-')[0];
|
1190 | placementOpposite = getOppositePlacement(placement);
|
1191 |
|
1192 | var popperOffsets = getClientRect(data.offsets.popper);
|
1193 | var refOffsets = data.offsets.reference;
|
1194 |
|
1195 |
|
1196 | var floor = Math.floor;
|
1197 | var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);
|
1198 |
|
1199 | var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
|
1200 | var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
|
1201 | var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
|
1202 | var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
|
1203 |
|
1204 | var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;
|
1205 |
|
1206 |
|
1207 | var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
|
1208 | var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);
|
1209 |
|
1210 | if (overlapsRef || overflowsBoundaries || flippedVariation) {
|
1211 |
|
1212 | data.flipped = true;
|
1213 |
|
1214 | if (overlapsRef || overflowsBoundaries) {
|
1215 | placement = flipOrder[index + 1];
|
1216 | }
|
1217 |
|
1218 | if (flippedVariation) {
|
1219 | variation = getOppositeVariation(variation);
|
1220 | }
|
1221 |
|
1222 | data.placement = placement + (variation ? '-' + variation : '');
|
1223 | data.offsets.popper = getPopperOffsets(data.instance.state.position, data.instance.popper, data.offsets.reference, data.placement);
|
1224 |
|
1225 | data = runModifiers(data.instance.modifiers, data, 'flip');
|
1226 | }
|
1227 | });
|
1228 | return data;
|
1229 | }
|
1230 |
|
1231 |
|
1232 |
|
1233 |
|
1234 |
|
1235 |
|
1236 |
|
1237 |
|
1238 | function keepTogether(data) {
|
1239 | var popper = getClientRect(data.offsets.popper);
|
1240 | var reference = data.offsets.reference;
|
1241 | var placement = data.placement.split('-')[0];
|
1242 | var floor = Math.floor;
|
1243 | var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
|
1244 | var side = isVertical ? 'right' : 'bottom';
|
1245 | var opSide = isVertical ? 'left' : 'top';
|
1246 | var measurement = isVertical ? 'width' : 'height';
|
1247 |
|
1248 | if (popper[side] < floor(reference[opSide])) {
|
1249 | data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
|
1250 | }
|
1251 | if (popper[opSide] > floor(reference[side])) {
|
1252 | data.offsets.popper[opSide] = floor(reference[side]);
|
1253 | }
|
1254 |
|
1255 | return data;
|
1256 | }
|
1257 |
|
1258 |
|
1259 |
|
1260 |
|
1261 |
|
1262 |
|
1263 |
|
1264 |
|
1265 |
|
1266 |
|
1267 | function offset(data, options) {
|
1268 | var placement = data.placement;
|
1269 | var popper = data.offsets.popper;
|
1270 |
|
1271 | var offsets = void 0;
|
1272 | if (isNumeric(options.offset)) {
|
1273 | offsets = [options.offset, 0];
|
1274 | } else {
|
1275 |
|
1276 |
|
1277 | offsets = options.offset.split(' ');
|
1278 |
|
1279 |
|
1280 | offsets = offsets.map(function (offset, index) {
|
1281 |
|
1282 | var split = offset.match(/(\-?\d*\.?\d*)(.*)/);
|
1283 | var value = +split[1];
|
1284 | var unit = split[2];
|
1285 |
|
1286 |
|
1287 |
|
1288 |
|
1289 | var useHeight = placement.indexOf('right') !== -1 || placement.indexOf('left') !== -1;
|
1290 |
|
1291 | if (index === 1) {
|
1292 | useHeight = !useHeight;
|
1293 | }
|
1294 |
|
1295 | var measurement = useHeight ? 'height' : 'width';
|
1296 |
|
1297 |
|
1298 |
|
1299 |
|
1300 |
|
1301 | if (unit.indexOf('%') === 0) {
|
1302 | var element = void 0;
|
1303 | switch (unit) {
|
1304 | case '%p':
|
1305 | element = data.offsets.popper;
|
1306 | break;
|
1307 | case '%':
|
1308 | case '$r':
|
1309 | default:
|
1310 | element = data.offsets.reference;
|
1311 | }
|
1312 |
|
1313 | var rect = getClientRect(element);
|
1314 | var len = rect[measurement];
|
1315 | return len / 100 * value;
|
1316 | } else if (unit === 'vh' || unit === 'vw') {
|
1317 |
|
1318 | var size = void 0;
|
1319 | if (unit === 'vh') {
|
1320 | size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
|
1321 | } else {
|
1322 | size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
|
1323 | }
|
1324 | return size / 100 * value;
|
1325 | } else if (unit === 'px') {
|
1326 |
|
1327 | return +value;
|
1328 | } else {
|
1329 |
|
1330 | return +offset;
|
1331 | }
|
1332 | });
|
1333 | }
|
1334 |
|
1335 | if (data.placement.indexOf('left') !== -1) {
|
1336 | popper.top += offsets[0];
|
1337 | popper.left -= offsets[1] || 0;
|
1338 | } else if (data.placement.indexOf('right') !== -1) {
|
1339 | popper.top += offsets[0];
|
1340 | popper.left += offsets[1] || 0;
|
1341 | } else if (data.placement.indexOf('top') !== -1) {
|
1342 | popper.left += offsets[0];
|
1343 | popper.top -= offsets[1] || 0;
|
1344 | } else if (data.placement.indexOf('bottom') !== -1) {
|
1345 | popper.left += offsets[0];
|
1346 | popper.top += offsets[1] || 0;
|
1347 | }
|
1348 | return data;
|
1349 | }
|
1350 |
|
1351 |
|
1352 |
|
1353 |
|
1354 |
|
1355 |
|
1356 |
|
1357 |
|
1358 | function preventOverflow(data, options) {
|
1359 | var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
|
1360 | var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement);
|
1361 | options.boundaries = boundaries;
|
1362 |
|
1363 | var order = options.priority;
|
1364 | var popper = getClientRect(data.offsets.popper);
|
1365 |
|
1366 | var check = {
|
1367 | primary: function primary(placement) {
|
1368 | var value = popper[placement];
|
1369 | if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
|
1370 | value = Math.max(popper[placement], boundaries[placement]);
|
1371 | }
|
1372 | return defineProperty({}, placement, value);
|
1373 | },
|
1374 | secondary: function secondary(placement) {
|
1375 | var mainSide = placement === 'right' ? 'left' : 'top';
|
1376 | var value = popper[mainSide];
|
1377 | if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
|
1378 | value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
|
1379 | }
|
1380 | return defineProperty({}, mainSide, value);
|
1381 | }
|
1382 | };
|
1383 |
|
1384 | order.forEach(function (placement) {
|
1385 | var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
|
1386 | popper = _extends({}, popper, check[side](placement));
|
1387 | });
|
1388 |
|
1389 | data.offsets.popper = popper;
|
1390 |
|
1391 | return data;
|
1392 | }
|
1393 |
|
1394 |
|
1395 |
|
1396 |
|
1397 |
|
1398 |
|
1399 |
|
1400 |
|
1401 | function shift(data) {
|
1402 | var placement = data.placement;
|
1403 | var basePlacement = placement.split('-')[0];
|
1404 | var shiftvariation = placement.split('-')[1];
|
1405 |
|
1406 |
|
1407 | if (shiftvariation) {
|
1408 | var reference = data.offsets.reference;
|
1409 | var popper = getClientRect(data.offsets.popper);
|
1410 | var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
|
1411 | var side = isVertical ? 'left' : 'top';
|
1412 | var measurement = isVertical ? 'width' : 'height';
|
1413 |
|
1414 | var shiftOffsets = {
|
1415 | start: defineProperty({}, side, reference[side]),
|
1416 | end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
|
1417 | };
|
1418 |
|
1419 | data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
|
1420 | }
|
1421 |
|
1422 | return data;
|
1423 | }
|
1424 |
|
1425 |
|
1426 |
|
1427 |
|
1428 |
|
1429 |
|
1430 |
|
1431 |
|
1432 | function hide(data) {
|
1433 | if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
|
1434 | return data;
|
1435 | }
|
1436 |
|
1437 | var refRect = data.offsets.reference;
|
1438 | var bound = find(data.instance.modifiers, function (modifier) {
|
1439 | return modifier.name === 'preventOverflow';
|
1440 | }).boundaries;
|
1441 |
|
1442 | if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
|
1443 |
|
1444 | if (data.hide === true) {
|
1445 | return data;
|
1446 | }
|
1447 |
|
1448 | data.hide = true;
|
1449 | data.attributes['x-out-of-boundaries'] = '';
|
1450 | } else {
|
1451 |
|
1452 | if (data.hide === false) {
|
1453 | return data;
|
1454 | }
|
1455 |
|
1456 | data.hide = false;
|
1457 | data.attributes['x-out-of-boundaries'] = false;
|
1458 | }
|
1459 |
|
1460 | return data;
|
1461 | }
|
1462 |
|
1463 |
|
1464 |
|
1465 |
|
1466 |
|
1467 |
|
1468 |
|
1469 |
|
1470 | function inner(data) {
|
1471 | var placement = data.placement;
|
1472 | var basePlacement = placement.split('-')[0];
|
1473 | var popper = getClientRect(data.offsets.popper);
|
1474 | var reference = getClientRect(data.offsets.reference);
|
1475 | var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
|
1476 |
|
1477 | var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
|
1478 |
|
1479 | popper[isHoriz ? 'left' : 'top'] = reference[placement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
|
1480 |
|
1481 | data.placement = getOppositePlacement(placement);
|
1482 | data.offsets.popper = getClientRect(popper);
|
1483 |
|
1484 | return data;
|
1485 | }
|
1486 |
|
1487 |
|
1488 |
|
1489 |
|
1490 |
|
1491 |
|
1492 |
|
1493 |
|
1494 |
|
1495 |
|
1496 | var modifiers = {
|
1497 | |
1498 |
|
1499 |
|
1500 |
|
1501 |
|
1502 |
|
1503 |
|
1504 | shift: {
|
1505 |
|
1506 | order: 100,
|
1507 |
|
1508 | enabled: true,
|
1509 |
|
1510 | fn: shift
|
1511 | },
|
1512 |
|
1513 | |
1514 |
|
1515 |
|
1516 |
|
1517 |
|
1518 |
|
1519 |
|
1520 |
|
1521 |
|
1522 |
|
1523 |
|
1524 |
|
1525 |
|
1526 |
|
1527 |
|
1528 |
|
1529 |
|
1530 |
|
1531 |
|
1532 |
|
1533 |
|
1534 |
|
1535 |
|
1536 |
|
1537 |
|
1538 | offset: {
|
1539 |
|
1540 | order: 200,
|
1541 |
|
1542 | enabled: true,
|
1543 |
|
1544 | fn: offset,
|
1545 | |
1546 |
|
1547 |
|
1548 | offset: 0
|
1549 | },
|
1550 |
|
1551 | |
1552 |
|
1553 |
|
1554 |
|
1555 |
|
1556 |
|
1557 |
|
1558 |
|
1559 |
|
1560 |
|
1561 |
|
1562 |
|
1563 |
|
1564 |
|
1565 |
|
1566 |
|
1567 |
|
1568 | preventOverflow: {
|
1569 |
|
1570 | order: 300,
|
1571 |
|
1572 | enabled: true,
|
1573 |
|
1574 | fn: preventOverflow,
|
1575 | |
1576 |
|
1577 |
|
1578 |
|
1579 |
|
1580 | priority: ['left', 'right', 'top', 'bottom'],
|
1581 | |
1582 |
|
1583 |
|
1584 |
|
1585 |
|
1586 |
|
1587 | padding: 5,
|
1588 | |
1589 |
|
1590 |
|
1591 |
|
1592 |
|
1593 | boundariesElement: 'scrollParent'
|
1594 | },
|
1595 |
|
1596 | |
1597 |
|
1598 |
|
1599 |
|
1600 |
|
1601 |
|
1602 |
|
1603 |
|
1604 |
|
1605 | keepTogether: {
|
1606 |
|
1607 | order: 400,
|
1608 |
|
1609 | enabled: true,
|
1610 |
|
1611 | fn: keepTogether
|
1612 | },
|
1613 |
|
1614 | |
1615 |
|
1616 |
|
1617 |
|
1618 |
|
1619 |
|
1620 |
|
1621 |
|
1622 |
|
1623 |
|
1624 | arrow: {
|
1625 |
|
1626 | order: 500,
|
1627 |
|
1628 | enabled: true,
|
1629 |
|
1630 | fn: arrow,
|
1631 |
|
1632 | element: '[x-arrow]'
|
1633 | },
|
1634 |
|
1635 | |
1636 |
|
1637 |
|
1638 |
|
1639 |
|
1640 |
|
1641 |
|
1642 |
|
1643 |
|
1644 |
|
1645 |
|
1646 | flip: {
|
1647 |
|
1648 | order: 600,
|
1649 |
|
1650 | enabled: true,
|
1651 |
|
1652 | fn: flip,
|
1653 | |
1654 |
|
1655 |
|
1656 |
|
1657 |
|
1658 |
|
1659 | behavior: 'flip',
|
1660 | |
1661 |
|
1662 |
|
1663 |
|
1664 | padding: 5,
|
1665 | |
1666 |
|
1667 |
|
1668 |
|
1669 |
|
1670 |
|
1671 | boundariesElement: 'viewport'
|
1672 | },
|
1673 |
|
1674 | |
1675 |
|
1676 |
|
1677 |
|
1678 |
|
1679 |
|
1680 |
|
1681 | inner: {
|
1682 |
|
1683 | order: 700,
|
1684 |
|
1685 | enabled: false,
|
1686 |
|
1687 | fn: inner
|
1688 | },
|
1689 |
|
1690 | |
1691 |
|
1692 |
|
1693 |
|
1694 |
|
1695 |
|
1696 |
|
1697 |
|
1698 |
|
1699 |
|
1700 | hide: {
|
1701 |
|
1702 | order: 800,
|
1703 |
|
1704 | enabled: true,
|
1705 |
|
1706 | fn: hide
|
1707 | },
|
1708 |
|
1709 | |
1710 |
|
1711 |
|
1712 |
|
1713 |
|
1714 |
|
1715 |
|
1716 |
|
1717 |
|
1718 |
|
1719 |
|
1720 |
|
1721 | applyStyle: {
|
1722 |
|
1723 | order: 900,
|
1724 |
|
1725 | enabled: true,
|
1726 |
|
1727 | fn: applyStyle,
|
1728 |
|
1729 | onLoad: applyStyleOnLoad,
|
1730 | |
1731 |
|
1732 |
|
1733 |
|
1734 |
|
1735 | gpuAcceleration: true
|
1736 | }
|
1737 | };
|
1738 |
|
1739 |
|
1740 |
|
1741 |
|
1742 |
|
1743 |
|
1744 |
|
1745 |
|
1746 |
|
1747 |
|
1748 |
|
1749 |
|
1750 |
|
1751 |
|
1752 |
|
1753 |
|
1754 |
|
1755 |
|
1756 |
|
1757 |
|
1758 |
|
1759 |
|
1760 |
|
1761 |
|
1762 |
|
1763 |
|
1764 |
|
1765 |
|
1766 |
|
1767 |
|
1768 |
|
1769 |
|
1770 |
|
1771 |
|
1772 |
|
1773 |
|
1774 |
|
1775 |
|
1776 |
|
1777 |
|
1778 |
|
1779 |
|
1780 |
|
1781 |
|
1782 |
|
1783 |
|
1784 |
|
1785 |
|
1786 |
|
1787 |
|
1788 |
|
1789 |
|
1790 |
|
1791 |
|
1792 |
|
1793 |
|
1794 |
|
1795 |
|
1796 | var DEFAULTS$1 = {
|
1797 | |
1798 |
|
1799 |
|
1800 |
|
1801 |
|
1802 | placement: 'bottom',
|
1803 |
|
1804 | |
1805 |
|
1806 |
|
1807 |
|
1808 |
|
1809 | eventsEnabled: true,
|
1810 |
|
1811 | |
1812 |
|
1813 |
|
1814 |
|
1815 |
|
1816 |
|
1817 | removeOnDestroy: false,
|
1818 |
|
1819 | |
1820 |
|
1821 |
|
1822 |
|
1823 |
|
1824 |
|
1825 |
|
1826 | onCreate: function onCreate() {},
|
1827 |
|
1828 | |
1829 |
|
1830 |
|
1831 |
|
1832 |
|
1833 |
|
1834 |
|
1835 |
|
1836 |
|
1837 | onUpdate: function onUpdate() {},
|
1838 |
|
1839 | |
1840 |
|
1841 |
|
1842 |
|
1843 |
|
1844 |
|
1845 | modifiers: modifiers
|
1846 | };
|
1847 |
|
1848 |
|
1849 |
|
1850 |
|
1851 |
|
1852 |
|
1853 |
|
1854 |
|
1855 |
|
1856 |
|
1857 | var Popper = function () {
|
1858 | function Popper(reference, popper) {
|
1859 | var _this = this;
|
1860 |
|
1861 | var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
1862 | classCallCheck(this, Popper);
|
1863 |
|
1864 | this.scheduleUpdate = function () {
|
1865 | return requestAnimationFrame(_this.update);
|
1866 | };
|
1867 |
|
1868 |
|
1869 | this.update = debounce(this.update.bind(this));
|
1870 |
|
1871 |
|
1872 | this.options = _extends({}, Popper.Defaults, options);
|
1873 |
|
1874 |
|
1875 | this.state = {
|
1876 | isDestroyed: false,
|
1877 | isCreated: false,
|
1878 | scrollParents: []
|
1879 | };
|
1880 |
|
1881 |
|
1882 | this.reference = reference.jquery ? reference[0] : reference;
|
1883 | this.popper = popper.jquery ? popper[0] : popper;
|
1884 |
|
1885 |
|
1886 | setStyles(this.popper, { position: 'absolute' });
|
1887 |
|
1888 |
|
1889 | this.modifiers = Object.keys(Popper.Defaults.modifiers).map(function (name) {
|
1890 | return _extends({
|
1891 | name: name
|
1892 | }, Popper.Defaults.modifiers[name]);
|
1893 | });
|
1894 |
|
1895 |
|
1896 |
|
1897 | this.modifiers = this.modifiers.map(function (defaultConfig) {
|
1898 | var userConfig = options.modifiers && options.modifiers[defaultConfig.name] || {};
|
1899 | return _extends({}, defaultConfig, userConfig);
|
1900 | });
|
1901 |
|
1902 |
|
1903 | if (options.modifiers) {
|
1904 | this.options.modifiers = _extends({}, Popper.Defaults.modifiers, options.modifiers);
|
1905 | Object.keys(options.modifiers).forEach(function (name) {
|
1906 |
|
1907 | if (Popper.Defaults.modifiers[name] === undefined) {
|
1908 | var modifier = options.modifiers[name];
|
1909 | modifier.name = name;
|
1910 | _this.modifiers.push(modifier);
|
1911 | }
|
1912 | });
|
1913 | }
|
1914 |
|
1915 |
|
1916 | this.modifiers = this.modifiers.sort(function (a, b) {
|
1917 | return a.order - b.order;
|
1918 | });
|
1919 |
|
1920 |
|
1921 |
|
1922 |
|
1923 |
|
1924 | this.modifiers.forEach(function (modifierOptions) {
|
1925 | if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
|
1926 | modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
|
1927 | }
|
1928 | });
|
1929 |
|
1930 |
|
1931 | this.update();
|
1932 |
|
1933 | var eventsEnabled = this.options.eventsEnabled;
|
1934 | if (eventsEnabled) {
|
1935 |
|
1936 | this.enableEventListeners();
|
1937 | }
|
1938 |
|
1939 | this.state.eventsEnabled = eventsEnabled;
|
1940 | }
|
1941 |
|
1942 |
|
1943 |
|
1944 |
|
1945 |
|
1946 | |
1947 |
|
1948 |
|
1949 |
|
1950 |
|
1951 |
|
1952 |
|
1953 |
|
1954 | createClass(Popper, [{
|
1955 | key: 'update',
|
1956 | value: function update() {
|
1957 |
|
1958 | if (this.state.isDestroyed) {
|
1959 | return;
|
1960 | }
|
1961 |
|
1962 | var data = {
|
1963 | instance: this,
|
1964 | styles: {},
|
1965 | attributes: {},
|
1966 | flipped: false,
|
1967 | offsets: {}
|
1968 | };
|
1969 |
|
1970 |
|
1971 | data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference);
|
1972 |
|
1973 |
|
1974 |
|
1975 |
|
1976 | data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement);
|
1977 |
|
1978 |
|
1979 | data.originalPlacement = data.placement;
|
1980 |
|
1981 |
|
1982 | data.offsets.popper = getPopperOffsets(this.state, this.popper, data.offsets.reference, data.placement);
|
1983 |
|
1984 |
|
1985 | data = runModifiers(this.modifiers, data);
|
1986 |
|
1987 |
|
1988 |
|
1989 | if (!this.state.isCreated) {
|
1990 | this.state.isCreated = true;
|
1991 | this.options.onCreate(data);
|
1992 | } else {
|
1993 | this.options.onUpdate(data);
|
1994 | }
|
1995 | }
|
1996 |
|
1997 | |
1998 |
|
1999 |
|
2000 |
|
2001 |
|
2002 |
|
2003 | }, {
|
2004 | key: 'destroy',
|
2005 |
|
2006 |
|
2007 | |
2008 |
|
2009 |
|
2010 |
|
2011 |
|
2012 | value: function destroy() {
|
2013 | this.state.isDestroyed = true;
|
2014 |
|
2015 |
|
2016 | if (isModifierEnabled(this.modifiers, 'applyStyle')) {
|
2017 | this.popper.removeAttribute('x-placement');
|
2018 | this.popper.style.left = '';
|
2019 | this.popper.style.position = '';
|
2020 | this.popper.style.top = '';
|
2021 | this.popper.style[getSupportedPropertyName('transform')] = '';
|
2022 | }
|
2023 |
|
2024 | this.disableEventListeners();
|
2025 |
|
2026 |
|
2027 |
|
2028 | if (this.options.removeOnDestroy) {
|
2029 | this.popper.parentNode.removeChild(this.popper);
|
2030 | }
|
2031 | return this;
|
2032 | }
|
2033 |
|
2034 | |
2035 |
|
2036 |
|
2037 |
|
2038 |
|
2039 |
|
2040 |
|
2041 | }, {
|
2042 | key: 'enableEventListeners',
|
2043 | value: function enableEventListeners() {
|
2044 | if (!this.state.eventsEnabled) {
|
2045 | this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
|
2046 | }
|
2047 | }
|
2048 |
|
2049 | |
2050 |
|
2051 |
|
2052 |
|
2053 |
|
2054 |
|
2055 |
|
2056 |
|
2057 | }, {
|
2058 | key: 'disableEventListeners',
|
2059 | value: function disableEventListeners() {
|
2060 | if (this.state.eventsEnabled) {
|
2061 | window.cancelAnimationFrame(this.scheduleUpdate);
|
2062 | this.state = removeEventListeners(this.reference, this.state);
|
2063 | }
|
2064 | }
|
2065 |
|
2066 | |
2067 |
|
2068 |
|
2069 |
|
2070 |
|
2071 |
|
2072 |
|
2073 |
|
2074 |
|
2075 |
|
2076 |
|
2077 |
|
2078 |
|
2079 |
|
2080 |
|
2081 | |
2082 |
|
2083 |
|
2084 |
|
2085 |
|
2086 |
|
2087 |
|
2088 |
|
2089 |
|
2090 | |
2091 |
|
2092 |
|
2093 |
|
2094 |
|
2095 |
|
2096 |
|
2097 |
|
2098 | }]);
|
2099 | return Popper;
|
2100 | }();
|
2101 |
|
2102 |
|
2103 |
|
2104 |
|
2105 |
|
2106 |
|
2107 |
|
2108 |
|
2109 |
|
2110 |
|
2111 |
|
2112 |
|
2113 |
|
2114 |
|
2115 | Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
|
2116 | Popper.placements = placements;
|
2117 | Popper.Defaults = DEFAULTS$1;
|
2118 |
|
2119 |
|
2120 |
|
2121 |
|
2122 | var classCallCheck$1 = function (instance, Constructor) {
|
2123 | if (!(instance instanceof Constructor)) {
|
2124 | throw new TypeError("Cannot call a class as a function");
|
2125 | }
|
2126 | };
|
2127 |
|
2128 | var createClass$1 = function () {
|
2129 | function defineProperties(target, props) {
|
2130 | for (var i = 0; i < props.length; i++) {
|
2131 | var descriptor = props[i];
|
2132 | descriptor.enumerable = descriptor.enumerable || false;
|
2133 | descriptor.configurable = true;
|
2134 | if ("value" in descriptor) descriptor.writable = true;
|
2135 | Object.defineProperty(target, descriptor.key, descriptor);
|
2136 | }
|
2137 | }
|
2138 |
|
2139 | return function (Constructor, protoProps, staticProps) {
|
2140 | if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
2141 | if (staticProps) defineProperties(Constructor, staticProps);
|
2142 | return Constructor;
|
2143 | };
|
2144 | }();
|
2145 |
|
2146 |
|
2147 |
|
2148 |
|
2149 |
|
2150 |
|
2151 |
|
2152 | var _extends$1 = Object.assign || function (target) {
|
2153 | for (var i = 1; i < arguments.length; i++) {
|
2154 | var source = arguments[i];
|
2155 |
|
2156 | for (var key in source) {
|
2157 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
2158 | target[key] = source[key];
|
2159 | }
|
2160 | }
|
2161 | }
|
2162 |
|
2163 | return target;
|
2164 | };
|
2165 |
|
2166 |
|
2167 |
|
2168 |
|
2169 |
|
2170 |
|
2171 |
|
2172 |
|
2173 |
|
2174 | var GLOBALS = {
|
2175 | touchUser: false,
|
2176 | idCounter: 0
|
2177 | };
|
2178 |
|
2179 |
|
2180 |
|
2181 | var STORE = {
|
2182 | refs: [],
|
2183 | els: [],
|
2184 | poppers: []
|
2185 | };
|
2186 |
|
2187 | var DEFAULTS = {
|
2188 | html: false,
|
2189 | position: 'top',
|
2190 | animation: 'shift',
|
2191 | animateFill: true,
|
2192 | arrow: false,
|
2193 | arrowSize: 'regular',
|
2194 | delay: 0,
|
2195 | hideDelay: 0,
|
2196 | trigger: 'mouseenter focus',
|
2197 | duration: 375,
|
2198 | hideDuration: 375,
|
2199 | interactive: false,
|
2200 | theme: 'dark',
|
2201 | size: 'regular',
|
2202 | distance: 10,
|
2203 | offset: 0,
|
2204 | hideOnClick: true,
|
2205 | multiple: false,
|
2206 | followCursor: false,
|
2207 | inertia: false,
|
2208 | transitionFlip: true,
|
2209 | popperOptions: {}
|
2210 | };
|
2211 |
|
2212 | var DEFAULTS_KEYS = Object.keys(DEFAULTS);
|
2213 |
|
2214 | var SELECTORS = {
|
2215 | popper: '.tippy-popper',
|
2216 | tooltip: '.tippy-tooltip',
|
2217 | content: '.tippy-tooltip-content',
|
2218 | circle: '[x-circle]',
|
2219 | arrow: '[x-arrow]',
|
2220 | el: '[data-tooltipped]',
|
2221 | controller: '[data-tippy-controller]'
|
2222 | };
|
2223 |
|
2224 |
|
2225 | function handleDocumentTouchstart() {
|
2226 | GLOBALS.touchUser = true;
|
2227 | document.body.classList.add('tippy-touch');
|
2228 | document.removeEventListener('touchstart', handleDocumentTouchstart);
|
2229 | }
|
2230 |
|
2231 |
|
2232 | function handleDocumentClick(event) {
|
2233 |
|
2234 | var el = closest(event.target, SELECTORS.el);
|
2235 | var popper = closest(event.target, SELECTORS.popper);
|
2236 |
|
2237 | if (popper) {
|
2238 | var ref = STORE.refs[STORE.poppers.indexOf(popper)];
|
2239 | if (ref.settings.interactive) return;
|
2240 | }
|
2241 |
|
2242 | if (el) {
|
2243 | var _ref = STORE.refs[STORE.els.indexOf(el)];
|
2244 |
|
2245 |
|
2246 |
|
2247 |
|
2248 | if (!_ref.settings.multiple && GLOBALS.touchUser || !_ref.settings.multiple && _ref.settings.trigger.indexOf('click') !== -1) {
|
2249 | return hideAllPoppers(_ref);
|
2250 | }
|
2251 |
|
2252 |
|
2253 | if (_ref.settings.hideOnClick !== true || _ref.settings.trigger.indexOf('click') !== -1) return;
|
2254 | }
|
2255 |
|
2256 |
|
2257 | if (!closest(event.target, SELECTORS.controller) && document.body.querySelector(SELECTORS.popper)) {
|
2258 | hideAllPoppers();
|
2259 | }
|
2260 | }
|
2261 |
|
2262 | document.addEventListener('click', handleDocumentClick);
|
2263 | document.addEventListener('touchstart', handleDocumentTouchstart);
|
2264 |
|
2265 |
|
2266 |
|
2267 |
|
2268 |
|
2269 |
|
2270 | function prefix(property) {
|
2271 | var prefixes = [false, 'webkit'];
|
2272 | var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
|
2273 |
|
2274 | for (var i = 0; i < prefixes.length; i++) {
|
2275 | var _prefix = prefixes[i];
|
2276 | var prefixedProp = _prefix ? '' + _prefix + upperProp : property;
|
2277 | if (typeof window.document.body.style[prefixedProp] !== 'undefined') {
|
2278 | return prefixedProp;
|
2279 | }
|
2280 | }
|
2281 |
|
2282 | return null;
|
2283 | }
|
2284 |
|
2285 |
|
2286 |
|
2287 |
|
2288 |
|
2289 |
|
2290 | function getCorePlacement(str) {
|
2291 | return str.replace(/-.+/, '');
|
2292 | }
|
2293 |
|
2294 |
|
2295 |
|
2296 |
|
2297 |
|
2298 |
|
2299 |
|
2300 | function closest(element, parentSelector) {
|
2301 | if (!Element.prototype.matches) {
|
2302 | Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || function (s) {
|
2303 | var matches = (this.document || this.ownerDocument).querySelectorAll(s),
|
2304 | i = matches.length;
|
2305 | while (--i >= 0 && matches.item(i) !== this) {}
|
2306 | return i > -1;
|
2307 | };
|
2308 | }
|
2309 | if (!Element.prototype.closest) Element.prototype.closest = function (selector) {
|
2310 | var el = this;
|
2311 | while (el) {
|
2312 | if (el.matches(selector)) {
|
2313 | return el;
|
2314 | }
|
2315 | el = el.parentElement;
|
2316 | }
|
2317 | };
|
2318 | return element.closest(parentSelector);
|
2319 | }
|
2320 |
|
2321 |
|
2322 |
|
2323 |
|
2324 |
|
2325 |
|
2326 | function createPopperInstance(ref) {
|
2327 |
|
2328 | var settings = ref.settings;
|
2329 | var tooltip = ref.popper.querySelector(SELECTORS.tooltip);
|
2330 |
|
2331 | var config = _extends$1({
|
2332 | placement: settings.position
|
2333 | }, settings.popperOptions || {}, {
|
2334 | modifiers: _extends$1({}, settings.popperOptions ? settings.popperOptions.modifiers : {}, {
|
2335 | flip: _extends$1({
|
2336 | padding: parseInt(settings.distance) + 3
|
2337 | }, settings.popperOptions && settings.popperOptions.modifiers ? settings.popperOptions.modifiers.flip : {}),
|
2338 | offset: _extends$1({
|
2339 | offset: parseInt(settings.offset)
|
2340 | }, settings.popperOptions && settings.popperOptions.modifiers ? settings.popperOptions.modifiers.offset : {})
|
2341 | }),
|
2342 | onUpdate: function onUpdate() {
|
2343 | tooltip.style.top = '';
|
2344 | tooltip.style.bottom = '';
|
2345 | tooltip.style.left = '';
|
2346 | tooltip.style.right = '';
|
2347 | tooltip.style[getCorePlacement(ref.popper.getAttribute('x-placement'))] = -(settings.distance - 10) + 'px';
|
2348 | }
|
2349 | });
|
2350 |
|
2351 | return new Popper(ref.el, ref.popper, config);
|
2352 | }
|
2353 |
|
2354 |
|
2355 |
|
2356 |
|
2357 |
|
2358 |
|
2359 |
|
2360 | function createPopperElement(id, title, settings) {
|
2361 | var popper = document.createElement('div');
|
2362 | popper.setAttribute('class', 'tippy-popper');
|
2363 | popper.setAttribute('role', 'tooltip');
|
2364 | popper.setAttribute('aria-hidden', 'true');
|
2365 | popper.setAttribute('id', 'tippy-tooltip-' + id);
|
2366 |
|
2367 | var tooltip = document.createElement('div');
|
2368 | tooltip.setAttribute('class', 'tippy-tooltip tippy-tooltip--' + settings.size + ' ' + settings.theme + '-theme leave');
|
2369 | tooltip.setAttribute('data-animation', settings.animation);
|
2370 |
|
2371 | if (settings.arrow) {
|
2372 |
|
2373 | var arrow = document.createElement('div');
|
2374 | arrow.setAttribute('class', 'arrow-' + settings.arrowSize);
|
2375 | arrow.setAttribute('x-arrow', '');
|
2376 | tooltip.appendChild(arrow);
|
2377 | }
|
2378 |
|
2379 | if (settings.animateFill) {
|
2380 |
|
2381 | tooltip.setAttribute('data-animatefill', '');
|
2382 | var circle = document.createElement('div');
|
2383 | circle.setAttribute('class', 'leave');
|
2384 | circle.setAttribute('x-circle', '');
|
2385 | tooltip.appendChild(circle);
|
2386 | }
|
2387 |
|
2388 | if (settings.inertia) {
|
2389 |
|
2390 | tooltip.setAttribute('data-inertia', '');
|
2391 | }
|
2392 |
|
2393 |
|
2394 | var content = document.createElement('div');
|
2395 | content.setAttribute('class', 'tippy-tooltip-content');
|
2396 |
|
2397 | if (settings.html) {
|
2398 |
|
2399 | var templateId = void 0;
|
2400 |
|
2401 | if (settings.html instanceof Element) {
|
2402 | content.innerHTML = settings.html.innerHTML;
|
2403 | templateId = settings.html.id || 'tippy-html-template';
|
2404 | } else {
|
2405 | content.innerHTML = document.getElementById(settings.html.replace('#', '')).innerHTML;
|
2406 | templateId = settings.html;
|
2407 | }
|
2408 |
|
2409 | popper.classList.add('html-template');
|
2410 | popper.setAttribute('tabindex', '0');
|
2411 | tooltip.setAttribute('data-template-id', templateId);
|
2412 | } else {
|
2413 | content.innerHTML = title;
|
2414 | }
|
2415 |
|
2416 |
|
2417 | tooltip.style[getCorePlacement(settings.position)] = -(settings.distance - 10) + 'px';
|
2418 |
|
2419 | tooltip.appendChild(content);
|
2420 | popper.appendChild(tooltip);
|
2421 |
|
2422 | return popper;
|
2423 | }
|
2424 |
|
2425 |
|
2426 |
|
2427 |
|
2428 |
|
2429 |
|
2430 |
|
2431 |
|
2432 | function createTrigger(event, el, handlers) {
|
2433 | var listeners = [];
|
2434 |
|
2435 | if (event === 'manual') return listeners;
|
2436 |
|
2437 |
|
2438 | el.addEventListener(event, handlers.handleTrigger);
|
2439 | listeners.push({
|
2440 | event: event,
|
2441 | handler: handlers.handleTrigger
|
2442 | });
|
2443 |
|
2444 |
|
2445 | if (event === 'mouseenter') {
|
2446 | el.addEventListener('mouseleave', handlers.handleMouseleave);
|
2447 | listeners.push({
|
2448 | event: 'mouseleave',
|
2449 | handler: handlers.handleMouseleave
|
2450 | });
|
2451 | }
|
2452 | if (event === 'focus') {
|
2453 | el.addEventListener('blur', handlers.handleBlur);
|
2454 | listeners.push({
|
2455 | event: 'blur',
|
2456 | handler: handlers.handleBlur
|
2457 | });
|
2458 | }
|
2459 |
|
2460 | return listeners;
|
2461 | }
|
2462 |
|
2463 |
|
2464 |
|
2465 |
|
2466 |
|
2467 |
|
2468 | function pushIntoStorage(ref) {
|
2469 | STORE.refs.push(ref);
|
2470 | STORE.els.push(ref.el);
|
2471 | STORE.poppers.push(ref.popper);
|
2472 | }
|
2473 |
|
2474 |
|
2475 |
|
2476 |
|
2477 |
|
2478 | function removeTitle(el) {
|
2479 | var title = el.getAttribute('title');
|
2480 | el.setAttribute('data-original-title', title || 'html');
|
2481 | el.removeAttribute('title');
|
2482 | }
|
2483 |
|
2484 |
|
2485 |
|
2486 |
|
2487 |
|
2488 |
|
2489 | function elementIsInViewport(el) {
|
2490 | var rect = el.getBoundingClientRect();
|
2491 |
|
2492 | return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
|
2493 | }
|
2494 |
|
2495 |
|
2496 |
|
2497 |
|
2498 |
|
2499 | function followCursor(e) {
|
2500 | var ref = STORE.refs[STORE.els.indexOf(this)];
|
2501 | var position = getCorePlacement(ref.popper.getAttribute('x-placement'));
|
2502 | var halfPopperWidth = Math.round(ref.popper.offsetWidth / 2);
|
2503 | var halfPopperHeight = Math.round(ref.popper.offsetHeight / 2);
|
2504 |
|
2505 |
|
2506 | var x = e.pageX - halfPopperWidth;
|
2507 | var y = e.pageY - 2.5 * halfPopperHeight;
|
2508 |
|
2509 | if (position === 'left') {
|
2510 | x = e.pageX - 2 * halfPopperWidth - 15;
|
2511 | y = e.pageY - halfPopperHeight;
|
2512 | } else if (position === 'right') {
|
2513 | x = e.pageX + halfPopperHeight;
|
2514 | y = e.pageY - halfPopperHeight;
|
2515 | } else if (position === 'bottom') {
|
2516 | y = e.pageY + halfPopperHeight / 1.5;
|
2517 | }
|
2518 |
|
2519 | ref.popper.style[prefix('transform')] = 'translate3d(' + x + 'px, ' + y + 'px, 0)';
|
2520 | }
|
2521 |
|
2522 |
|
2523 |
|
2524 |
|
2525 |
|
2526 | function triggerReflow(tooltip, circle) {
|
2527 |
|
2528 | circle ? window.getComputedStyle(circle)[prefix('transform')] : window.getComputedStyle(tooltip).opacity;
|
2529 | }
|
2530 |
|
2531 |
|
2532 |
|
2533 |
|
2534 |
|
2535 |
|
2536 | function modifyClassList(els, callback) {
|
2537 | els.forEach(function (el) {
|
2538 | if (!el) return;
|
2539 | callback(el.classList);
|
2540 | });
|
2541 | }
|
2542 |
|
2543 |
|
2544 |
|
2545 |
|
2546 |
|
2547 |
|
2548 | function applyTransitionDuration(els, duration) {
|
2549 | els.forEach(function (el) {
|
2550 | if (!el) return;
|
2551 | if (el.hasAttribute('x-circle')) duration = Math.round(duration / 1.25);
|
2552 | el.style[prefix('transitionDuration')] = duration + 'ms';
|
2553 | });
|
2554 | }
|
2555 |
|
2556 |
|
2557 |
|
2558 |
|
2559 |
|
2560 |
|
2561 | function correctTransition(ref, callback) {
|
2562 | setTimeout(function () {
|
2563 | if (ref.settings.position !== ref.popper.getAttribute('x-placement')) {
|
2564 | ref.flipped = true;
|
2565 | callback();
|
2566 | } else if (ref.flipped && ref.settings.position === ref.popper.getAttribute('x-placement')) {
|
2567 | ref.flipped = false;
|
2568 | callback();
|
2569 | }
|
2570 | }, 0);
|
2571 | }
|
2572 |
|
2573 |
|
2574 |
|
2575 |
|
2576 |
|
2577 |
|
2578 | function onTransitionEnd(ref, callback) {
|
2579 | var tooltip = ref.popper.querySelector(SELECTORS.tooltip);
|
2580 |
|
2581 | var listenerCallback = function listenerCallback() {
|
2582 | tooltip.removeEventListener('webkitTransitionEnd', listenerCallback);
|
2583 | tooltip.removeEventListener('transitionend', listenerCallback);
|
2584 | callback();
|
2585 | };
|
2586 |
|
2587 |
|
2588 | tooltip.addEventListener('webkitTransitionEnd', listenerCallback);
|
2589 | tooltip.addEventListener('transitionend', listenerCallback);
|
2590 | }
|
2591 |
|
2592 |
|
2593 |
|
2594 |
|
2595 |
|
2596 |
|
2597 | function awakenPopper(ref) {
|
2598 | document.body.appendChild(ref.popper);
|
2599 |
|
2600 | if (ref.settings.followCursor && !ref.hasFollowCursorListener && !GLOBALS.touchUser) {
|
2601 | ref.hasFollowCursorListener = true;
|
2602 | ref.el.addEventListener('mousemove', followCursor);
|
2603 | }
|
2604 |
|
2605 | if (!ref.popperInstance) {
|
2606 |
|
2607 | ref.popperInstance = createPopperInstance(ref);
|
2608 | if (ref.settings.followCursor && !GLOBALS.touchUser) {
|
2609 | ref.popperInstance.disableEventListeners();
|
2610 | }
|
2611 | } else {
|
2612 | ref.popperInstance.update();
|
2613 | if (!ref.settings.followCursor) {
|
2614 | ref.popperInstance.enableEventListeners();
|
2615 | }
|
2616 | }
|
2617 | }
|
2618 |
|
2619 |
|
2620 |
|
2621 |
|
2622 |
|
2623 | function hideAllPoppers(currentRef) {
|
2624 | STORE.refs.forEach(function (ref) {
|
2625 |
|
2626 | if (!document.body.contains(ref.popper)) return;
|
2627 |
|
2628 |
|
2629 | if (ref.settings.hideOnClick === true && (!currentRef || ref.popper !== currentRef.popper)) {
|
2630 | ref.tippyInstance.hide(ref.popper, ref.settings.hideDuration);
|
2631 | }
|
2632 | });
|
2633 | }
|
2634 |
|
2635 |
|
2636 |
|
2637 |
|
2638 |
|
2639 |
|
2640 |
|
2641 |
|
2642 | var Tippy$1 = function () {
|
2643 | function Tippy(selector) {
|
2644 | var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
2645 | classCallCheck$1(this, Tippy);
|
2646 |
|
2647 |
|
2648 |
|
2649 | if (!('addEventListener' in window) || /MSIE 9/i.test(navigator.userAgent) || window.operamini) return;
|
2650 |
|
2651 | this.settings = _extends$1(JSON.parse(JSON.stringify(DEFAULTS)), settings);
|
2652 |
|
2653 | this.callbacks = {
|
2654 | wait: settings.wait,
|
2655 | beforeShown: settings.beforeShown || new Function(),
|
2656 | shown: settings.shown || new Function(),
|
2657 | beforeHidden: settings.beforeHidden || new Function(),
|
2658 | hidden: settings.hidden || new Function()
|
2659 | };
|
2660 |
|
2661 |
|
2662 | var els = selector instanceof Element ? [selector] : [].slice.call(document.querySelectorAll(selector));
|
2663 |
|
2664 | this._createTooltips(els);
|
2665 | }
|
2666 |
|
2667 | |
2668 |
|
2669 |
|
2670 |
|
2671 |
|
2672 |
|
2673 |
|
2674 | createClass$1(Tippy, [{
|
2675 | key: '_applyIndividualSettings',
|
2676 | value: function _applyIndividualSettings(el) {
|
2677 | var _this = this;
|
2678 |
|
2679 | var settings = {};
|
2680 |
|
2681 | DEFAULTS_KEYS.forEach(function (key) {
|
2682 | var val = el.getAttribute('data-' + key.toLowerCase()) || _this.settings[key];
|
2683 | if (val === 'false') val = false;
|
2684 |
|
2685 | settings[key] = val;
|
2686 | });
|
2687 |
|
2688 |
|
2689 | if (settings.arrow) settings['animateFill'] = false;
|
2690 |
|
2691 | return _extends$1(_extends$1({}, this.settings), settings);
|
2692 | }
|
2693 |
|
2694 | |
2695 |
|
2696 |
|
2697 |
|
2698 |
|
2699 |
|
2700 |
|
2701 |
|
2702 | }, {
|
2703 | key: '_getEventListenerHandlers',
|
2704 | value: function _getEventListenerHandlers(el, popper, settings) {
|
2705 | var _this2 = this;
|
2706 |
|
2707 |
|
2708 | var _show = function _show() {
|
2709 | clearTimeout(popper.getAttribute('data-delay'));
|
2710 | clearTimeout(popper.getAttribute('data-hidedelay'));
|
2711 |
|
2712 |
|
2713 | if (popper.style.visibility === 'visible') return;
|
2714 |
|
2715 | if (settings.delay) {
|
2716 | var delay = setTimeout(function () {
|
2717 | return _this2.show(popper, settings.duration);
|
2718 | }, settings.delay);
|
2719 | popper.setAttribute('data-delay', delay);
|
2720 | } else {
|
2721 | _this2.show(popper, settings.duration);
|
2722 | }
|
2723 | };
|
2724 |
|
2725 | var show = function show() {
|
2726 | return _this2.callbacks.wait ? _this2.callbacks.wait(_show) : _show();
|
2727 | };
|
2728 |
|
2729 | var hide = function hide() {
|
2730 | clearTimeout(popper.getAttribute('data-hidedelay'));
|
2731 | clearTimeout(popper.getAttribute('data-delay'));
|
2732 |
|
2733 | if (settings.hideDelay) {
|
2734 | var delay = setTimeout(function () {
|
2735 | return _this2.hide(popper, settings.hideDuration);
|
2736 | }, settings.hideDelay);
|
2737 | popper.setAttribute('data-hidedelay', delay);
|
2738 | } else {
|
2739 | _this2.hide(popper, settings.hideDuration);
|
2740 | }
|
2741 | };
|
2742 |
|
2743 | var handleTrigger = function handleTrigger(event) {
|
2744 |
|
2745 | if (event.type === 'click' && popper.style.visibility === 'visible' && settings.hideOnClick !== 'persistent') {
|
2746 | return hide();
|
2747 | }
|
2748 |
|
2749 | show();
|
2750 | };
|
2751 |
|
2752 | var handleMouseleave = function handleMouseleave(event) {
|
2753 |
|
2754 | if (settings.interactive) {
|
2755 |
|
2756 |
|
2757 | var handleMousemove = function handleMousemove(event) {
|
2758 |
|
2759 |
|
2760 |
|
2761 | if (closest(event.target, SELECTORS.popper) !== popper && closest(event.target, SELECTORS.el) !== el && settings.trigger.indexOf('click') === -1) {
|
2762 | document.removeEventListener('mousemove', handleMousemove);
|
2763 | hide();
|
2764 | }
|
2765 | };
|
2766 | return document.addEventListener('mousemove', handleMousemove);
|
2767 | }
|
2768 |
|
2769 |
|
2770 | hide();
|
2771 | };
|
2772 |
|
2773 | var handleBlur = function handleBlur(event) {
|
2774 |
|
2775 |
|
2776 | if (!GLOBALS.touchUser && event.relatedTarget) {
|
2777 | if (!closest(event.relatedTarget, SELECTORS.popper)) {
|
2778 | hide();
|
2779 | }
|
2780 | }
|
2781 | };
|
2782 |
|
2783 | return {
|
2784 | handleTrigger: handleTrigger,
|
2785 | handleMouseleave: handleMouseleave,
|
2786 | handleBlur: handleBlur
|
2787 | };
|
2788 | }
|
2789 |
|
2790 | |
2791 |
|
2792 |
|
2793 |
|
2794 | }, {
|
2795 | key: '_createTooltips',
|
2796 | value: function _createTooltips(els) {
|
2797 | var _this3 = this;
|
2798 |
|
2799 | els.forEach(function (el) {
|
2800 | var settings = _this3._applyIndividualSettings(el);
|
2801 |
|
2802 | var title = el.getAttribute('title');
|
2803 | if (!title && !settings.html) return;
|
2804 |
|
2805 | var id = GLOBALS.idCounter;
|
2806 | el.setAttribute('data-tooltipped', '');
|
2807 | el.setAttribute('aria-describedby', 'tippy-tooltip-' + id);
|
2808 |
|
2809 | removeTitle(el);
|
2810 |
|
2811 | var popper = createPopperElement(id, title, settings);
|
2812 | var handlers = _this3._getEventListenerHandlers(el, popper, settings);
|
2813 | var listeners = [];
|
2814 |
|
2815 | settings.trigger.trim().split(' ').forEach(function (event) {
|
2816 | return listeners = listeners.concat(createTrigger(event, el, handlers));
|
2817 | });
|
2818 |
|
2819 | pushIntoStorage({
|
2820 | id: id,
|
2821 | el: el,
|
2822 | popper: popper,
|
2823 | settings: settings,
|
2824 | listeners: listeners,
|
2825 | tippyInstance: _this3
|
2826 | });
|
2827 |
|
2828 | GLOBALS.idCounter++;
|
2829 | });
|
2830 |
|
2831 | Tippy.store = STORE;
|
2832 | }
|
2833 |
|
2834 | |
2835 |
|
2836 |
|
2837 |
|
2838 |
|
2839 |
|
2840 | }, {
|
2841 | key: 'getPopperElement',
|
2842 | value: function getPopperElement(el) {
|
2843 | try {
|
2844 | return STORE.refs[STORE.els.indexOf(el)].popper;
|
2845 | } catch (e) {
|
2846 | throw new Error('[Tippy error]: Element does not exist in any Tippy instances');
|
2847 | }
|
2848 | }
|
2849 |
|
2850 | |
2851 |
|
2852 |
|
2853 |
|
2854 |
|
2855 |
|
2856 | }, {
|
2857 | key: 'getTooltippedElement',
|
2858 | value: function getTooltippedElement(popper) {
|
2859 | try {
|
2860 | return STORE.refs[STORE.poppers.indexOf(popper)].el;
|
2861 | } catch (e) {
|
2862 | throw new Error('[Tippy error]: Popper does not exist in any Tippy instances');
|
2863 | }
|
2864 | }
|
2865 |
|
2866 | |
2867 |
|
2868 |
|
2869 |
|
2870 |
|
2871 |
|
2872 |
|
2873 | }, {
|
2874 | key: 'show',
|
2875 | value: function show(popper) {
|
2876 | var _this4 = this;
|
2877 |
|
2878 | var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.settings.duration;
|
2879 | var enableCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
2880 |
|
2881 | var ref = STORE.refs[STORE.poppers.indexOf(popper)];
|
2882 | var tooltip = popper.querySelector(SELECTORS.tooltip);
|
2883 | var circle = popper.querySelector(SELECTORS.circle);
|
2884 |
|
2885 | if (enableCallback) {
|
2886 | this.callbacks.beforeShown();
|
2887 |
|
2888 |
|
2889 | if (duration >= 20) {
|
2890 | correctTransition(ref, function () {
|
2891 | _this4.hide(popper, 0, false);
|
2892 | setTimeout(function () {
|
2893 |
|
2894 |
|
2895 |
|
2896 |
|
2897 | if (ref.hidden) return;
|
2898 |
|
2899 | _this4.show(popper, duration, false);
|
2900 | }, 0);
|
2901 | });
|
2902 | }
|
2903 | }
|
2904 |
|
2905 | if (!document.body.contains(popper)) {
|
2906 | awakenPopper(ref);
|
2907 | }
|
2908 |
|
2909 |
|
2910 | if (ref.settings.interactive) {
|
2911 | ref.el.classList.add('active');
|
2912 | }
|
2913 |
|
2914 | ref.hidden = false;
|
2915 | ref.popper.style.visibility = 'visible';
|
2916 | ref.popper.setAttribute('aria-hidden', 'false');
|
2917 |
|
2918 |
|
2919 | triggerReflow(tooltip, circle);
|
2920 |
|
2921 | modifyClassList([tooltip, circle], function (list) {
|
2922 | list.remove('leave');
|
2923 | list.add('enter');
|
2924 | });
|
2925 |
|
2926 | applyTransitionDuration([tooltip, circle], duration);
|
2927 |
|
2928 |
|
2929 |
|
2930 | var transitionendFired = false;
|
2931 |
|
2932 | var transitionendCallback = function transitionendCallback() {
|
2933 | transitionendFired = true;
|
2934 |
|
2935 | if (popper.style.visibility === 'hidden' || ref.onShownFired) return;
|
2936 |
|
2937 | if (!ref.settings.transitionFlip) {
|
2938 | tooltip.classList.add('tippy-notransition');
|
2939 | }
|
2940 |
|
2941 |
|
2942 | if (ref.settings.interactive) {
|
2943 | popper.focus();
|
2944 | }
|
2945 |
|
2946 |
|
2947 | ref.onShownFired = true;
|
2948 |
|
2949 | if (enableCallback) _this4.callbacks.shown();
|
2950 | };
|
2951 |
|
2952 | onTransitionEnd(ref, transitionendCallback);
|
2953 |
|
2954 |
|
2955 | clearTimeout(ref.transitionendTimeout);
|
2956 | ref.transitionendTimeout = setTimeout(function () {
|
2957 | if (!transitionendFired) {
|
2958 | transitionendCallback();
|
2959 | }
|
2960 | }, duration);
|
2961 | }
|
2962 |
|
2963 | |
2964 |
|
2965 |
|
2966 |
|
2967 |
|
2968 |
|
2969 |
|
2970 | }, {
|
2971 | key: 'hide',
|
2972 | value: function hide(popper) {
|
2973 | var _this5 = this;
|
2974 |
|
2975 | var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.settings.duration;
|
2976 | var enableCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
2977 |
|
2978 | var ref = STORE.refs[STORE.poppers.indexOf(popper)];
|
2979 | var tooltip = popper.querySelector(SELECTORS.tooltip);
|
2980 | var circle = popper.querySelector(SELECTORS.circle);
|
2981 | var content = popper.querySelector(SELECTORS.content);
|
2982 |
|
2983 | if (enableCallback) {
|
2984 | this.callbacks.beforeHidden();
|
2985 |
|
2986 |
|
2987 |
|
2988 | ref.hidden = true;
|
2989 |
|
2990 | ref.el.classList.remove('active');
|
2991 |
|
2992 | ref.onShownFired = false;
|
2993 |
|
2994 | if (!ref.settings.transitionFlip) {
|
2995 | tooltip.classList.remove('tippy-notransition');
|
2996 | }
|
2997 |
|
2998 | ref.flipped = ref.settings.position !== popper.getAttribute('x-placement');
|
2999 | }
|
3000 |
|
3001 | popper.style.visibility = 'hidden';
|
3002 | popper.setAttribute('aria-hidden', 'true');
|
3003 |
|
3004 |
|
3005 | if (duration === DEFAULTS.hideDuration) {
|
3006 | duration = parseInt(tooltip.style[prefix('transitionDuration')]);
|
3007 | } else {
|
3008 | applyTransitionDuration([tooltip, circle], duration);
|
3009 | }
|
3010 |
|
3011 | modifyClassList([tooltip, circle], function (list) {
|
3012 | list.remove('enter');
|
3013 | list.add('leave');
|
3014 | });
|
3015 |
|
3016 |
|
3017 |
|
3018 |
|
3019 | if (ref.settings.html && ref.settings.trigger.indexOf('click') !== -1 && elementIsInViewport(ref.el)) {
|
3020 | ref.el.focus();
|
3021 | }
|
3022 |
|
3023 |
|
3024 |
|
3025 | var transitionendFired = false;
|
3026 |
|
3027 | var transitionendCallback = function transitionendCallback() {
|
3028 | transitionendFired = true;
|
3029 |
|
3030 | if (popper.style.visibility === 'visible' || !document.body.contains(popper)) return;
|
3031 |
|
3032 | ref.popperInstance.disableEventListeners();
|
3033 |
|
3034 | document.body.removeChild(popper);
|
3035 |
|
3036 | if (enableCallback) _this5.callbacks.hidden();
|
3037 | };
|
3038 |
|
3039 | onTransitionEnd(ref, transitionendCallback);
|
3040 |
|
3041 |
|
3042 | clearTimeout(ref.transitionendTimeout);
|
3043 | ref.transitionendTimeout = setTimeout(function () {
|
3044 | if (!transitionendFired) {
|
3045 | transitionendCallback();
|
3046 | }
|
3047 | }, duration);
|
3048 | }
|
3049 |
|
3050 | |
3051 |
|
3052 |
|
3053 |
|
3054 |
|
3055 | }, {
|
3056 | key: 'destroy',
|
3057 | value: function destroy(popper) {
|
3058 | var index = STORE.poppers.indexOf(popper);
|
3059 | var ref = STORE.refs[index];
|
3060 |
|
3061 |
|
3062 | ref.listeners.forEach(function (listener) {
|
3063 | return ref.el.removeEventListener(listener.event, listener.handler);
|
3064 | });
|
3065 |
|
3066 | ref.el.removeAttribute('data-tooltipped');
|
3067 | ref.el.removeAttribute('aria-describedby');
|
3068 |
|
3069 | if (ref.popperInstance) {
|
3070 | ref.popperInstance.destroy();
|
3071 | }
|
3072 |
|
3073 |
|
3074 | STORE.refs.splice(index, 1);
|
3075 | STORE.els.splice(index, 1);
|
3076 | STORE.poppers.splice(index, 1);
|
3077 | }
|
3078 |
|
3079 | |
3080 |
|
3081 |
|
3082 |
|
3083 |
|
3084 | }, {
|
3085 | key: 'update',
|
3086 | value: function update(popper) {
|
3087 | var ref = STORE.refs[STORE.poppers.indexOf(popper)];
|
3088 | var content = popper.querySelector(SELECTORS.content);
|
3089 | var template = ref.settings.html;
|
3090 |
|
3091 | if (template) {
|
3092 | content.innerHTML = template instanceof Element ? template.innerHTML : document.getElementById(template.replace('#', '')).innerHTML;
|
3093 | } else {
|
3094 | content.innerHTML = ref.el.getAttribute('title') || ref.el.getAttribute('data-original-title');
|
3095 | removeTitle(ref.el);
|
3096 | }
|
3097 | }
|
3098 | }]);
|
3099 | return Tippy;
|
3100 | }();
|
3101 |
|
3102 | return Tippy$1;
|
3103 |
|
3104 | })));
|