unvendor: Replace popperjs/core

ec4763b0c56513b1013218f020d3925ccc085b22

Cohee <18619528+Cohee1207@users.noreply.github.com>

13 files changed, +24 -2015Showing whitespace changes
.eslintrc.cjs+0 -1
@@ -51,7 +51,6 @@ module.exports = {
51 // These scripts are loaded in HTML; tell ESLint not to complain about them being undefined51 // These scripts are loaded in HTML; tell ESLint not to complain about them being undefined
52 globals: {52 globals: {
53 droll: 'readonly',53 droll: 'readonly',
54 Popper: 'readonly',
55 showdownKatex: 'readonly',54 showdownKatex: 'readonly',
56 toastr: 'readonly',55 toastr: 'readonly',
57 SillyTavern: 'readonly',56 SillyTavern: 'readonly',
package-lock.json+11 -0
@@ -15,6 +15,7 @@
15 "@agnai/web-tokenizers": "^0.1.3",15 "@agnai/web-tokenizers": "^0.1.3",
16 "@iconfu/svg-inject": "^1.2.3",16 "@iconfu/svg-inject": "^1.2.3",
17 "@mozilla/readability": "^0.5.0",17 "@mozilla/readability": "^0.5.0",
18 "@popperjs/core": "^2.11.8",
18 "@zeldafan0225/ai_horde": "^5.1.0",19 "@zeldafan0225/ai_horde": "^5.1.0",
19 "archiver": "^7.0.1",20 "archiver": "^7.0.1",
20 "bing-translate-api": "^2.9.1",21 "bing-translate-api": "^2.9.1",
@@ -1105,6 +1106,16 @@
1105 "node": ">=14"1106 "node": ">=14"
1106 }1107 }
1107 },1108 },
1109 "node_modules/@popperjs/core": {
1110 "version": "2.11.8",
1111 "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
1112 "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
1113 "license": "MIT",
1114 "funding": {
1115 "type": "opencollective",
1116 "url": "https://opencollective.com/popperjs"
1117 }
1118 },
1108 "node_modules/@protobufjs/aspromise": {1119 "node_modules/@protobufjs/aspromise": {
1109 "version": "1.1.2",1120 "version": "1.1.2",
1110 "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",1121 "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
package.json+1 -0
@@ -5,6 +5,7 @@
5 "@agnai/web-tokenizers": "^0.1.3",5 "@agnai/web-tokenizers": "^0.1.3",
6 "@iconfu/svg-inject": "^1.2.3",6 "@iconfu/svg-inject": "^1.2.3",
7 "@mozilla/readability": "^0.5.0",7 "@mozilla/readability": "^0.5.0",
8 "@popperjs/core": "^2.11.8",
8 "@zeldafan0225/ai_horde": "^5.1.0",9 "@zeldafan0225/ai_horde": "^5.1.0",
9 "archiver": "^7.0.1",10 "archiver": "^7.0.1",
10 "bing-translate-api": "^2.9.1",11 "bing-translate-api": "^2.9.1",
public/global.d.ts+0 -1
@@ -1,6 +1,5 @@
1// Global namespace modules1// Global namespace modules
2declare var droll;2declare var droll;
3declare var Popper;
4declare var showdownKatex;3declare var showdownKatex;
5declare var ai;4declare var ai;
65
public/index.html+0 -1
@@ -6746,7 +6746,6 @@
6746 <script src="lib/jquery-cookie-1.4.1.min.js"></script>6746 <script src="lib/jquery-cookie-1.4.1.min.js"></script>
6747 <script src="lib/jquery.ui.touch-punch.min.js"></script>6747 <script src="lib/jquery.ui.touch-punch.min.js"></script>
6748 <script src="lib/showdown-katex.min.js"></script>6748 <script src="lib/showdown-katex.min.js"></script>
6749 <script src="lib/popper.js"></script>
6750 <script src="lib/cropper.min.js"></script>6749 <script src="lib/cropper.min.js"></script>
6751 <script src="lib/jquery-cropper.min.js"></script>6750 <script src="lib/jquery-cropper.min.js"></script>
6752 <script src="lib/toastr.min.js"></script>6751 <script src="lib/toastr.min.js"></script>
public/lib.js+7 -0
@@ -18,6 +18,7 @@ import SVGInject from '@iconfu/svg-inject';
18import showdown from 'showdown';18import showdown from 'showdown';
19import moment from 'moment';19import moment from 'moment';
20import seedrandom from 'seedrandom';20import seedrandom from 'seedrandom';
21import * as Popper from '@popperjs/core';
2122
22/**23/**
23 * Expose the libraries to the 'window' object.24 * Expose the libraries to the 'window' object.
@@ -64,6 +65,10 @@ export function initLibraryShims() {
64 // @ts-ignore65 // @ts-ignore
65 window.moment = moment;66 window.moment = moment;
66 }67 }
68 if (!('Popper' in window)) {
69 // @ts-ignore
70 window.Popper = Popper;
71 }
67}72}
6873
69export default {74export default {
@@ -84,6 +89,7 @@ export default {
84 showdown,89 showdown,
85 moment,90 moment,
86 seedrandom,91 seedrandom,
92 Popper,
87};93};
8894
89export {95export {
@@ -104,4 +110,5 @@ export {
104 showdown,110 showdown,
105 moment,111 moment,
106 seedrandom,112 seedrandom,
113 Popper,
107};114};
public/lib/popper.js+0 -2008
@@ -1,2008 +0,0 @@
1/**
2 * @popperjs/core v2.11.6 - MIT License
3 */
4
5(function (global, factory) {
6 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
7 typeof define === 'function' && define.amd ? define(['exports'], factory) :
8 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Popper = {}));
9}(this, (function (exports) { 'use strict';
10
11 function getWindow(node) {
12 if (node == null) {
13 return window;
14 }
15
16 if (node.toString() !== '[object Window]') {
17 var ownerDocument = node.ownerDocument;
18 return ownerDocument ? ownerDocument.defaultView || window : window;
19 }
20
21 return node;
22 }
23
24 function isElement(node) {
25 var OwnElement = getWindow(node).Element;
26 return node instanceof OwnElement || node instanceof Element;
27 }
28
29 function isHTMLElement(node) {
30 var OwnElement = getWindow(node).HTMLElement;
31 return node instanceof OwnElement || node instanceof HTMLElement;
32 }
33
34 function isShadowRoot(node) {
35 // IE 11 has no ShadowRoot
36 if (typeof ShadowRoot === 'undefined') {
37 return false;
38 }
39
40 var OwnElement = getWindow(node).ShadowRoot;
41 return node instanceof OwnElement || node instanceof ShadowRoot;
42 }
43
44 var max = Math.max;
45 var min = Math.min;
46 var round = Math.round;
47
48 function getUAString() {
49 var uaData = navigator.userAgentData;
50
51 if (uaData != null && uaData.brands) {
52 return uaData.brands.map(function (item) {
53 return item.brand + "/" + item.version;
54 }).join(' ');
55 }
56
57 return navigator.userAgent;
58 }
59
60 function isLayoutViewport() {
61 return !/^((?!chrome|android).)*safari/i.test(getUAString());
62 }
63
64 function getBoundingClientRect(element, includeScale, isFixedStrategy) {
65 if (includeScale === void 0) {
66 includeScale = false;
67 }
68
69 if (isFixedStrategy === void 0) {
70 isFixedStrategy = false;
71 }
72
73 var clientRect = element.getBoundingClientRect();
74 var scaleX = 1;
75 var scaleY = 1;
76
77 if (includeScale && isHTMLElement(element)) {
78 scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
79 scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
80 }
81
82 var _ref = isElement(element) ? getWindow(element) : window,
83 visualViewport = _ref.visualViewport;
84
85 var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
86 var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
87 var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
88 var width = clientRect.width / scaleX;
89 var height = clientRect.height / scaleY;
90 return {
91 width: width,
92 height: height,
93 top: y,
94 right: x + width,
95 bottom: y + height,
96 left: x,
97 x: x,
98 y: y
99 };
100 }
101
102 function getWindowScroll(node) {
103 var win = getWindow(node);
104 var scrollLeft = win.pageXOffset;
105 var scrollTop = win.pageYOffset;
106 return {
107 scrollLeft: scrollLeft,
108 scrollTop: scrollTop
109 };
110 }
111
112 function getHTMLElementScroll(element) {
113 return {
114 scrollLeft: element.scrollLeft,
115 scrollTop: element.scrollTop
116 };
117 }
118
119 function getNodeScroll(node) {
120 if (node === getWindow(node) || !isHTMLElement(node)) {
121 return getWindowScroll(node);
122 } else {
123 return getHTMLElementScroll(node);
124 }
125 }
126
127 function getNodeName(element) {
128 return element ? (element.nodeName || '').toLowerCase() : null;
129 }
130
131 function getDocumentElement(element) {
132 // $FlowFixMe[incompatible-return]: assume body is always available
133 return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
134 element.document) || window.document).documentElement;
135 }
136
137 function getWindowScrollBarX(element) {
138 // If <html> has a CSS width greater than the viewport, then this will be
139 // incorrect for RTL.
140 // Popper 1 is broken in this case and never had a bug report so let's assume
141 // it's not an issue. I don't think anyone ever specifies width on <html>
142 // anyway.
143 // Browsers where the left scrollbar doesn't cause an issue report `0` for
144 // this (e.g. Edge 2019, IE11, Safari)
145 return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
146 }
147
148 function getComputedStyle(element) {
149 return getWindow(element).getComputedStyle(element);
150 }
151
152 function isScrollParent(element) {
153 // Firefox wants us to check `-x` and `-y` variations as well
154 var _getComputedStyle = getComputedStyle(element),
155 overflow = _getComputedStyle.overflow,
156 overflowX = _getComputedStyle.overflowX,
157 overflowY = _getComputedStyle.overflowY;
158
159 return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
160 }
161
162 function isElementScaled(element) {
163 var rect = element.getBoundingClientRect();
164 var scaleX = round(rect.width) / element.offsetWidth || 1;
165 var scaleY = round(rect.height) / element.offsetHeight || 1;
166 return scaleX !== 1 || scaleY !== 1;
167 } // Returns the composite rect of an element relative to its offsetParent.
168 // Composite means it takes into account transforms as well as layout.
169
170
171 function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
172 if (isFixed === void 0) {
173 isFixed = false;
174 }
175
176 var isOffsetParentAnElement = isHTMLElement(offsetParent);
177 var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
178 var documentElement = getDocumentElement(offsetParent);
179 var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
180 var scroll = {
181 scrollLeft: 0,
182 scrollTop: 0
183 };
184 var offsets = {
185 x: 0,
186 y: 0
187 };
188
189 if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
190 if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
191 isScrollParent(documentElement)) {
192 scroll = getNodeScroll(offsetParent);
193 }
194
195 if (isHTMLElement(offsetParent)) {
196 offsets = getBoundingClientRect(offsetParent, true);
197 offsets.x += offsetParent.clientLeft;
198 offsets.y += offsetParent.clientTop;
199 } else if (documentElement) {
200 offsets.x = getWindowScrollBarX(documentElement);
201 }
202 }
203
204 return {
205 x: rect.left + scroll.scrollLeft - offsets.x,
206 y: rect.top + scroll.scrollTop - offsets.y,
207 width: rect.width,
208 height: rect.height
209 };
210 }
211
212 // means it doesn't take into account transforms.
213
214 function getLayoutRect(element) {
215 var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
216 // Fixes https://github.com/popperjs/popper-core/issues/1223
217
218 var width = element.offsetWidth;
219 var height = element.offsetHeight;
220
221 if (Math.abs(clientRect.width - width) <= 1) {
222 width = clientRect.width;
223 }
224
225 if (Math.abs(clientRect.height - height) <= 1) {
226 height = clientRect.height;
227 }
228
229 return {
230 x: element.offsetLeft,
231 y: element.offsetTop,
232 width: width,
233 height: height
234 };
235 }
236
237 function getParentNode(element) {
238 if (getNodeName(element) === 'html') {
239 return element;
240 }
241
242 return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
243 // $FlowFixMe[incompatible-return]
244 // $FlowFixMe[prop-missing]
245 element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
246 element.parentNode || ( // DOM Element detected
247 isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
248 // $FlowFixMe[incompatible-call]: HTMLElement is a Node
249 getDocumentElement(element) // fallback
250
251 );
252 }
253
254 function getScrollParent(node) {
255 if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
256 // $FlowFixMe[incompatible-return]: assume body is always available
257 return node.ownerDocument.body;
258 }
259
260 if (isHTMLElement(node) && isScrollParent(node)) {
261 return node;
262 }
263
264 return getScrollParent(getParentNode(node));
265 }
266
267 /*
268 given a DOM element, return the list of all scroll parents, up the list of ancesors
269 until we get to the top window object. This list is what we attach scroll listeners
270 to, because if any of these parent elements scroll, we'll need to re-calculate the
271 reference element's position.
272 */
273
274 function listScrollParents(element, list) {
275 var _element$ownerDocumen;
276
277 if (list === void 0) {
278 list = [];
279 }
280
281 var scrollParent = getScrollParent(element);
282 var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
283 var win = getWindow(scrollParent);
284 var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
285 var updatedList = list.concat(target);
286 return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
287 updatedList.concat(listScrollParents(getParentNode(target)));
288 }
289
290 function isTableElement(element) {
291 return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
292 }
293
294 function getTrueOffsetParent(element) {
295 if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
296 getComputedStyle(element).position === 'fixed') {
297 return null;
298 }
299
300 return element.offsetParent;
301 } // `.offsetParent` reports `null` for fixed elements, while absolute elements
302 // return the containing block
303
304
305 function getContainingBlock(element) {
306 var isFirefox = /firefox/i.test(getUAString());
307 var isIE = /Trident/i.test(getUAString());
308
309 if (isIE && isHTMLElement(element)) {
310 // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
311 var elementCss = getComputedStyle(element);
312
313 if (elementCss.position === 'fixed') {
314 return null;
315 }
316 }
317
318 var currentNode = getParentNode(element);
319
320 if (isShadowRoot(currentNode)) {
321 currentNode = currentNode.host;
322 }
323
324 while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
325 var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
326 // create a containing block.
327 // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
328
329 if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
330 return currentNode;
331 } else {
332 currentNode = currentNode.parentNode;
333 }
334 }
335
336 return null;
337 } // Gets the closest ancestor positioned element. Handles some edge cases,
338 // such as table ancestors and cross browser bugs.
339
340
341 function getOffsetParent(element) {
342 var window = getWindow(element);
343 var offsetParent = getTrueOffsetParent(element);
344
345 while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
346 offsetParent = getTrueOffsetParent(offsetParent);
347 }
348
349 if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {
350 return window;
351 }
352
353 return offsetParent || getContainingBlock(element) || window;
354 }
355
356 var top = 'top';
357 var bottom = 'bottom';
358 var right = 'right';
359 var left = 'left';
360 var auto = 'auto';
361 var basePlacements = [top, bottom, right, left];
362 var start = 'start';
363 var end = 'end';
364 var clippingParents = 'clippingParents';
365 var viewport = 'viewport';
366 var popper = 'popper';
367 var reference = 'reference';
368 var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
369 return acc.concat([placement + "-" + start, placement + "-" + end]);
370 }, []);
371 var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
372 return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
373 }, []); // modifiers that need to read the DOM
374
375 var beforeRead = 'beforeRead';
376 var read = 'read';
377 var afterRead = 'afterRead'; // pure-logic modifiers
378
379 var beforeMain = 'beforeMain';
380 var main = 'main';
381 var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
382
383 var beforeWrite = 'beforeWrite';
384 var write = 'write';
385 var afterWrite = 'afterWrite';
386 var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
387
388 function order(modifiers) {
389 var map = new Map();
390 var visited = new Set();
391 var result = [];
392 modifiers.forEach(function (modifier) {
393 map.set(modifier.name, modifier);
394 }); // On visiting object, check for its dependencies and visit them recursively
395
396 function sort(modifier) {
397 visited.add(modifier.name);
398 var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
399 requires.forEach(function (dep) {
400 if (!visited.has(dep)) {
401 var depModifier = map.get(dep);
402
403 if (depModifier) {
404 sort(depModifier);
405 }
406 }
407 });
408 result.push(modifier);
409 }
410
411 modifiers.forEach(function (modifier) {
412 if (!visited.has(modifier.name)) {
413 // check for visited object
414 sort(modifier);
415 }
416 });
417 return result;
418 }
419
420 function orderModifiers(modifiers) {
421 // order based on dependencies
422 var orderedModifiers = order(modifiers); // order based on phase
423
424 return modifierPhases.reduce(function (acc, phase) {
425 return acc.concat(orderedModifiers.filter(function (modifier) {
426 return modifier.phase === phase;
427 }));
428 }, []);
429 }
430
431 function debounce(fn) {
432 var pending;
433 return function () {
434 if (!pending) {
435 pending = new Promise(function (resolve) {
436 Promise.resolve().then(function () {
437 pending = undefined;
438 resolve(fn());
439 });
440 });
441 }
442
443 return pending;
444 };
445 }
446
447 function format(str) {
448 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
449 args[_key - 1] = arguments[_key];
450 }
451
452 return [].concat(args).reduce(function (p, c) {
453 return p.replace(/%s/, c);
454 }, str);
455 }
456
457 var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';
458 var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';
459 var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];
460 function validateModifiers(modifiers) {
461 modifiers.forEach(function (modifier) {
462 [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`
463 .filter(function (value, index, self) {
464 return self.indexOf(value) === index;
465 }).forEach(function (key) {
466 switch (key) {
467 case 'name':
468 if (typeof modifier.name !== 'string') {
469 console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\""));
470 }
471
472 break;
473
474 case 'enabled':
475 if (typeof modifier.enabled !== 'boolean') {
476 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\""));
477 }
478
479 break;
480
481 case 'phase':
482 if (modifierPhases.indexOf(modifier.phase) < 0) {
483 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\""));
484 }
485
486 break;
487
488 case 'fn':
489 if (typeof modifier.fn !== 'function') {
490 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\""));
491 }
492
493 break;
494
495 case 'effect':
496 if (modifier.effect != null && typeof modifier.effect !== 'function') {
497 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\""));
498 }
499
500 break;
501
502 case 'requires':
503 if (modifier.requires != null && !Array.isArray(modifier.requires)) {
504 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\""));
505 }
506
507 break;
508
509 case 'requiresIfExists':
510 if (!Array.isArray(modifier.requiresIfExists)) {
511 console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\""));
512 }
513
514 break;
515
516 case 'options':
517 case 'data':
518 break;
519
520 default:
521 console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) {
522 return "\"" + s + "\"";
523 }).join(', ') + "; but \"" + key + "\" was provided.");
524 }
525
526 modifier.requires && modifier.requires.forEach(function (requirement) {
527 if (modifiers.find(function (mod) {
528 return mod.name === requirement;
529 }) == null) {
530 console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));
531 }
532 });
533 });
534 });
535 }
536
537 function uniqueBy(arr, fn) {
538 var identifiers = new Set();
539 return arr.filter(function (item) {
540 var identifier = fn(item);
541
542 if (!identifiers.has(identifier)) {
543 identifiers.add(identifier);
544 return true;
545 }
546 });
547 }
548
549 function getBasePlacement(placement) {
550 return placement.split('-')[0];
551 }
552
553 function mergeByName(modifiers) {
554 var merged = modifiers.reduce(function (merged, current) {
555 var existing = merged[current.name];
556 merged[current.name] = existing ? Object.assign({}, existing, current, {
557 options: Object.assign({}, existing.options, current.options),
558 data: Object.assign({}, existing.data, current.data)
559 }) : current;
560 return merged;
561 }, {}); // IE11 does not support Object.values
562
563 return Object.keys(merged).map(function (key) {
564 return merged[key];
565 });
566 }
567
568 function getViewportRect(element, strategy) {
569 var win = getWindow(element);
570 var html = getDocumentElement(element);
571 var visualViewport = win.visualViewport;
572 var width = html.clientWidth;
573 var height = html.clientHeight;
574 var x = 0;
575 var y = 0;
576
577 if (visualViewport) {
578 width = visualViewport.width;
579 height = visualViewport.height;
580 var layoutViewport = isLayoutViewport();
581
582 if (layoutViewport || !layoutViewport && strategy === 'fixed') {
583 x = visualViewport.offsetLeft;
584 y = visualViewport.offsetTop;
585 }
586 }
587
588 return {
589 width: width,
590 height: height,
591 x: x + getWindowScrollBarX(element),
592 y: y
593 };
594 }
595
596 // of the `<html>` and `<body>` rect bounds if horizontally scrollable
597
598 function getDocumentRect(element) {
599 var _element$ownerDocumen;
600
601 var html = getDocumentElement(element);
602 var winScroll = getWindowScroll(element);
603 var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
604 var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
605 var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
606 var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
607 var y = -winScroll.scrollTop;
608
609 if (getComputedStyle(body || html).direction === 'rtl') {
610 x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
611 }
612
613 return {
614 width: width,
615 height: height,
616 x: x,
617 y: y
618 };
619 }
620
621 function contains(parent, child) {
622 var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
623
624 if (parent.contains(child)) {
625 return true;
626 } // then fallback to custom implementation with Shadow DOM support
627 else if (rootNode && isShadowRoot(rootNode)) {
628 var next = child;
629
630 do {
631 if (next && parent.isSameNode(next)) {
632 return true;
633 } // $FlowFixMe[prop-missing]: need a better way to handle this...
634
635
636 next = next.parentNode || next.host;
637 } while (next);
638 } // Give up, the result is false
639
640
641 return false;
642 }
643
644 function rectToClientRect(rect) {
645 return Object.assign({}, rect, {
646 left: rect.x,
647 top: rect.y,
648 right: rect.x + rect.width,
649 bottom: rect.y + rect.height
650 });
651 }
652
653 function getInnerBoundingClientRect(element, strategy) {
654 var rect = getBoundingClientRect(element, false, strategy === 'fixed');
655 rect.top = rect.top + element.clientTop;
656 rect.left = rect.left + element.clientLeft;
657 rect.bottom = rect.top + element.clientHeight;
658 rect.right = rect.left + element.clientWidth;
659 rect.width = element.clientWidth;
660 rect.height = element.clientHeight;
661 rect.x = rect.left;
662 rect.y = rect.top;
663 return rect;
664 }
665
666 function getClientRectFromMixedType(element, clippingParent, strategy) {
667 return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
668 } // A "clipping parent" is an overflowable container with the characteristic of
669 // clipping (or hiding) overflowing elements with a position different from
670 // `initial`
671
672
673 function getClippingParents(element) {
674 var clippingParents = listScrollParents(getParentNode(element));
675 var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
676 var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
677
678 if (!isElement(clipperElement)) {
679 return [];
680 } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
681
682
683 return clippingParents.filter(function (clippingParent) {
684 return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
685 });
686 } // Gets the maximum area that the element is visible in due to any number of
687 // clipping parents
688
689
690 function getClippingRect(element, boundary, rootBoundary, strategy) {
691 var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
692 var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
693 var firstClippingParent = clippingParents[0];
694 var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
695 var rect = getClientRectFromMixedType(element, clippingParent, strategy);
696 accRect.top = max(rect.top, accRect.top);
697 accRect.right = min(rect.right, accRect.right);
698 accRect.bottom = min(rect.bottom, accRect.bottom);
699 accRect.left = max(rect.left, accRect.left);
700 return accRect;
701 }, getClientRectFromMixedType(element, firstClippingParent, strategy));
702 clippingRect.width = clippingRect.right - clippingRect.left;
703 clippingRect.height = clippingRect.bottom - clippingRect.top;
704 clippingRect.x = clippingRect.left;
705 clippingRect.y = clippingRect.top;
706 return clippingRect;
707 }
708
709 function getVariation(placement) {
710 return placement.split('-')[1];
711 }
712
713 function getMainAxisFromPlacement(placement) {
714 return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
715 }
716
717 function computeOffsets(_ref) {
718 var reference = _ref.reference,
719 element = _ref.element,
720 placement = _ref.placement;
721 var basePlacement = placement ? getBasePlacement(placement) : null;
722 var variation = placement ? getVariation(placement) : null;
723 var commonX = reference.x + reference.width / 2 - element.width / 2;
724 var commonY = reference.y + reference.height / 2 - element.height / 2;
725 var offsets;
726
727 switch (basePlacement) {
728 case top:
729 offsets = {
730 x: commonX,
731 y: reference.y - element.height
732 };
733 break;
734
735 case bottom:
736 offsets = {
737 x: commonX,
738 y: reference.y + reference.height
739 };
740 break;
741
742 case right:
743 offsets = {
744 x: reference.x + reference.width,
745 y: commonY
746 };
747 break;
748
749 case left:
750 offsets = {
751 x: reference.x - element.width,
752 y: commonY
753 };
754 break;
755
756 default:
757 offsets = {
758 x: reference.x,
759 y: reference.y
760 };
761 }
762
763 var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
764
765 if (mainAxis != null) {
766 var len = mainAxis === 'y' ? 'height' : 'width';
767
768 switch (variation) {
769 case start:
770 offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
771 break;
772
773 case end:
774 offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
775 break;
776 }
777 }
778
779 return offsets;
780 }
781
782 function getFreshSideObject() {
783 return {
784 top: 0,
785 right: 0,
786 bottom: 0,
787 left: 0
788 };
789 }
790
791 function mergePaddingObject(paddingObject) {
792 return Object.assign({}, getFreshSideObject(), paddingObject);
793 }
794
795 function expandToHashMap(value, keys) {
796 return keys.reduce(function (hashMap, key) {
797 hashMap[key] = value;
798 return hashMap;
799 }, {});
800 }
801
802 function detectOverflow(state, options) {
803 if (options === void 0) {
804 options = {};
805 }
806
807 var _options = options,
808 _options$placement = _options.placement,
809 placement = _options$placement === void 0 ? state.placement : _options$placement,
810 _options$strategy = _options.strategy,
811 strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
812 _options$boundary = _options.boundary,
813 boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
814 _options$rootBoundary = _options.rootBoundary,
815 rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
816 _options$elementConte = _options.elementContext,
817 elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
818 _options$altBoundary = _options.altBoundary,
819 altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
820 _options$padding = _options.padding,
821 padding = _options$padding === void 0 ? 0 : _options$padding;
822 var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
823 var altContext = elementContext === popper ? reference : popper;
824 var popperRect = state.rects.popper;
825 var element = state.elements[altBoundary ? altContext : elementContext];
826 var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
827 var referenceClientRect = getBoundingClientRect(state.elements.reference);
828 var popperOffsets = computeOffsets({
829 reference: referenceClientRect,
830 element: popperRect,
831 strategy: 'absolute',
832 placement: placement
833 });
834 var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
835 var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
836 // 0 or negative = within the clipping rect
837
838 var overflowOffsets = {
839 top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
840 bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
841 left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
842 right: elementClientRect.right - clippingClientRect.right + paddingObject.right
843 };
844 var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
845
846 if (elementContext === popper && offsetData) {
847 var offset = offsetData[placement];
848 Object.keys(overflowOffsets).forEach(function (key) {
849 var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
850 var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
851 overflowOffsets[key] += offset[axis] * multiply;
852 });
853 }
854
855 return overflowOffsets;
856 }
857
858 var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';
859 var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';
860 var DEFAULT_OPTIONS = {
861 placement: 'bottom',
862 modifiers: [],
863 strategy: 'absolute'
864 };
865
866 function areValidElements() {
867 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
868 args[_key] = arguments[_key];
869 }
870
871 return !args.some(function (element) {
872 return !(element && typeof element.getBoundingClientRect === 'function');
873 });
874 }
875
876 function popperGenerator(generatorOptions) {
877 if (generatorOptions === void 0) {
878 generatorOptions = {};
879 }
880
881 var _generatorOptions = generatorOptions,
882 _generatorOptions$def = _generatorOptions.defaultModifiers,
883 defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
884 _generatorOptions$def2 = _generatorOptions.defaultOptions,
885 defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
886 return function createPopper(reference, popper, options) {
887 if (options === void 0) {
888 options = defaultOptions;
889 }
890
891 var state = {
892 placement: 'bottom',
893 orderedModifiers: [],
894 options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
895 modifiersData: {},
896 elements: {
897 reference: reference,
898 popper: popper
899 },
900 attributes: {},
901 styles: {}
902 };
903 var effectCleanupFns = [];
904 var isDestroyed = false;
905 var instance = {
906 state: state,
907 setOptions: function setOptions(setOptionsAction) {
908 var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
909 cleanupModifierEffects();
910 state.options = Object.assign({}, defaultOptions, state.options, options);
911 state.scrollParents = {
912 reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
913 popper: listScrollParents(popper)
914 }; // Orders the modifiers based on their dependencies and `phase`
915 // properties
916
917 var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
918
919 state.orderedModifiers = orderedModifiers.filter(function (m) {
920 return m.enabled;
921 }); // Validate the provided modifiers so that the consumer will get warned
922 // if one of the modifiers is invalid for any reason
923
924 {
925 var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {
926 var name = _ref.name;
927 return name;
928 });
929 validateModifiers(modifiers);
930
931 if (getBasePlacement(state.options.placement) === auto) {
932 var flipModifier = state.orderedModifiers.find(function (_ref2) {
933 var name = _ref2.name;
934 return name === 'flip';
935 });
936
937 if (!flipModifier) {
938 console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' '));
939 }
940 }
941
942 var _getComputedStyle = getComputedStyle(popper),
943 marginTop = _getComputedStyle.marginTop,
944 marginRight = _getComputedStyle.marginRight,
945 marginBottom = _getComputedStyle.marginBottom,
946 marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can
947 // cause bugs with positioning, so we'll warn the consumer
948
949
950 if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {
951 return parseFloat(margin);
952 })) {
953 console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));
954 }
955 }
956
957 runModifierEffects();
958 return instance.update();
959 },
960 // Sync update – it will always be executed, even if not necessary. This
961 // is useful for low frequency updates where sync behavior simplifies the
962 // logic.
963 // For high frequency updates (e.g. `resize` and `scroll` events), always
964 // prefer the async Popper#update method
965 forceUpdate: function forceUpdate() {
966 if (isDestroyed) {
967 return;
968 }
969
970 var _state$elements = state.elements,
971 reference = _state$elements.reference,
972 popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
973 // anymore
974
975 if (!areValidElements(reference, popper)) {
976 {
977 console.error(INVALID_ELEMENT_ERROR);
978 }
979
980 return;
981 } // Store the reference and popper rects to be read by modifiers
982
983
984 state.rects = {
985 reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
986 popper: getLayoutRect(popper)
987 }; // Modifiers have the ability to reset the current update cycle. The
988 // most common use case for this is the `flip` modifier changing the
989 // placement, which then needs to re-run all the modifiers, because the
990 // logic was previously ran for the previous placement and is therefore
991 // stale/incorrect
992
993 state.reset = false;
994 state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
995 // is filled with the initial data specified by the modifier. This means
996 // it doesn't persist and is fresh on each update.
997 // To ensure persistent data, use `${name}#persistent`
998
999 state.orderedModifiers.forEach(function (modifier) {
1000 return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
1001 });
1002 var __debug_loops__ = 0;
1003
1004 for (var index = 0; index < state.orderedModifiers.length; index++) {
1005 {
1006 __debug_loops__ += 1;
1007
1008 if (__debug_loops__ > 100) {
1009 console.error(INFINITE_LOOP_ERROR);
1010 break;
1011 }
1012 }
1013
1014 if (state.reset === true) {
1015 state.reset = false;
1016 index = -1;
1017 continue;
1018 }
1019
1020 var _state$orderedModifie = state.orderedModifiers[index],
1021 fn = _state$orderedModifie.fn,
1022 _state$orderedModifie2 = _state$orderedModifie.options,
1023 _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
1024 name = _state$orderedModifie.name;
1025
1026 if (typeof fn === 'function') {
1027 state = fn({
1028 state: state,
1029 options: _options,
1030 name: name,
1031 instance: instance
1032 }) || state;
1033 }
1034 }
1035 },
1036 // Async and optimistically optimized update – it will not be executed if
1037 // not necessary (debounced to run at most once-per-tick)
1038 update: debounce(function () {
1039 return new Promise(function (resolve) {
1040 instance.forceUpdate();
1041 resolve(state);
1042 });
1043 }),
1044 destroy: function destroy() {
1045 cleanupModifierEffects();
1046 isDestroyed = true;
1047 }
1048 };
1049
1050 if (!areValidElements(reference, popper)) {
1051 {
1052 console.error(INVALID_ELEMENT_ERROR);
1053 }
1054
1055 return instance;
1056 }
1057
1058 instance.setOptions(options).then(function (state) {
1059 if (!isDestroyed && options.onFirstUpdate) {
1060 options.onFirstUpdate(state);
1061 }
1062 }); // Modifiers have the ability to execute arbitrary code before the first
1063 // update cycle runs. They will be executed in the same order as the update
1064 // cycle. This is useful when a modifier adds some persistent data that
1065 // other modifiers need to use, but the modifier is run after the dependent
1066 // one.
1067
1068 function runModifierEffects() {
1069 state.orderedModifiers.forEach(function (_ref3) {
1070 var name = _ref3.name,
1071 _ref3$options = _ref3.options,
1072 options = _ref3$options === void 0 ? {} : _ref3$options,
1073 effect = _ref3.effect;
1074
1075 if (typeof effect === 'function') {
1076 var cleanupFn = effect({
1077 state: state,
1078 name: name,
1079 instance: instance,
1080 options: options
1081 });
1082
1083 var noopFn = function noopFn() {};
1084
1085 effectCleanupFns.push(cleanupFn || noopFn);
1086 }
1087 });
1088 }
1089
1090 function cleanupModifierEffects() {
1091 effectCleanupFns.forEach(function (fn) {
1092 return fn();
1093 });
1094 effectCleanupFns = [];
1095 }
1096
1097 return instance;
1098 };
1099 }
1100
1101 var passive = {
1102 passive: true
1103 };
1104
1105 function effect$2(_ref) {
1106 var state = _ref.state,
1107 instance = _ref.instance,
1108 options = _ref.options;
1109 var _options$scroll = options.scroll,
1110 scroll = _options$scroll === void 0 ? true : _options$scroll,
1111 _options$resize = options.resize,
1112 resize = _options$resize === void 0 ? true : _options$resize;
1113 var window = getWindow(state.elements.popper);
1114 var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
1115
1116 if (scroll) {
1117 scrollParents.forEach(function (scrollParent) {
1118 scrollParent.addEventListener('scroll', instance.update, passive);
1119 });
1120 }
1121
1122 if (resize) {
1123 window.addEventListener('resize', instance.update, passive);
1124 }
1125
1126 return function () {
1127 if (scroll) {
1128 scrollParents.forEach(function (scrollParent) {
1129 scrollParent.removeEventListener('scroll', instance.update, passive);
1130 });
1131 }
1132
1133 if (resize) {
1134 window.removeEventListener('resize', instance.update, passive);
1135 }
1136 };
1137 } // eslint-disable-next-line import/no-unused-modules
1138
1139
1140 var eventListeners = {
1141 name: 'eventListeners',
1142 enabled: true,
1143 phase: 'write',
1144 fn: function fn() {},
1145 effect: effect$2,
1146 data: {}
1147 };
1148
1149 function popperOffsets(_ref) {
1150 var state = _ref.state,
1151 name = _ref.name;
1152 // Offsets are the actual position the popper needs to have to be
1153 // properly positioned near its reference element
1154 // This is the most basic placement, and will be adjusted by
1155 // the modifiers in the next step
1156 state.modifiersData[name] = computeOffsets({
1157 reference: state.rects.reference,
1158 element: state.rects.popper,
1159 strategy: 'absolute',
1160 placement: state.placement
1161 });
1162 } // eslint-disable-next-line import/no-unused-modules
1163
1164
1165 var popperOffsets$1 = {
1166 name: 'popperOffsets',
1167 enabled: true,
1168 phase: 'read',
1169 fn: popperOffsets,
1170 data: {}
1171 };
1172
1173 var unsetSides = {
1174 top: 'auto',
1175 right: 'auto',
1176 bottom: 'auto',
1177 left: 'auto'
1178 }; // Round the offsets to the nearest suitable subpixel based on the DPR.
1179 // Zooming can change the DPR, but it seems to report a value that will
1180 // cleanly divide the values into the appropriate subpixels.
1181
1182 function roundOffsetsByDPR(_ref) {
1183 var x = _ref.x,
1184 y = _ref.y;
1185 var win = window;
1186 var dpr = win.devicePixelRatio || 1;
1187 return {
1188 x: round(x * dpr) / dpr || 0,
1189 y: round(y * dpr) / dpr || 0
1190 };
1191 }
1192
1193 function mapToStyles(_ref2) {
1194 var _Object$assign2;
1195
1196 var popper = _ref2.popper,
1197 popperRect = _ref2.popperRect,
1198 placement = _ref2.placement,
1199 variation = _ref2.variation,
1200 offsets = _ref2.offsets,
1201 position = _ref2.position,
1202 gpuAcceleration = _ref2.gpuAcceleration,
1203 adaptive = _ref2.adaptive,
1204 roundOffsets = _ref2.roundOffsets,
1205 isFixed = _ref2.isFixed;
1206 var _offsets$x = offsets.x,
1207 x = _offsets$x === void 0 ? 0 : _offsets$x,
1208 _offsets$y = offsets.y,
1209 y = _offsets$y === void 0 ? 0 : _offsets$y;
1210
1211 var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
1212 x: x,
1213 y: y
1214 }) : {
1215 x: x,
1216 y: y
1217 };
1218
1219 x = _ref3.x;
1220 y = _ref3.y;
1221 var hasX = offsets.hasOwnProperty('x');
1222 var hasY = offsets.hasOwnProperty('y');
1223 var sideX = left;
1224 var sideY = top;
1225 var win = window;
1226
1227 if (adaptive) {
1228 var offsetParent = getOffsetParent(popper);
1229 var heightProp = 'clientHeight';
1230 var widthProp = 'clientWidth';
1231
1232 if (offsetParent === getWindow(popper)) {
1233 offsetParent = getDocumentElement(popper);
1234
1235 if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {
1236 heightProp = 'scrollHeight';
1237 widthProp = 'scrollWidth';
1238 }
1239 } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
1240
1241
1242 offsetParent = offsetParent;
1243
1244 if (placement === top || (placement === left || placement === right) && variation === end) {
1245 sideY = bottom;
1246 var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
1247 offsetParent[heightProp];
1248 y -= offsetY - popperRect.height;
1249 y *= gpuAcceleration ? 1 : -1;
1250 }
1251
1252 if (placement === left || (placement === top || placement === bottom) && variation === end) {
1253 sideX = right;
1254 var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
1255 offsetParent[widthProp];
1256 x -= offsetX - popperRect.width;
1257 x *= gpuAcceleration ? 1 : -1;
1258 }
1259 }
1260
1261 var commonStyles = Object.assign({
1262 position: position
1263 }, adaptive && unsetSides);
1264
1265 var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
1266 x: x,
1267 y: y
1268 }) : {
1269 x: x,
1270 y: y
1271 };
1272
1273 x = _ref4.x;
1274 y = _ref4.y;
1275
1276 if (gpuAcceleration) {
1277 var _Object$assign;
1278
1279 return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
1280 }
1281
1282 return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
1283 }
1284
1285 function computeStyles(_ref5) {
1286 var state = _ref5.state,
1287 options = _ref5.options;
1288 var _options$gpuAccelerat = options.gpuAcceleration,
1289 gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
1290 _options$adaptive = options.adaptive,
1291 adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
1292 _options$roundOffsets = options.roundOffsets,
1293 roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
1294
1295 {
1296 var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';
1297
1298 if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {
1299 return transitionProperty.indexOf(property) >= 0;
1300 })) {
1301 console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));
1302 }
1303 }
1304
1305 var commonStyles = {
1306 placement: getBasePlacement(state.placement),
1307 variation: getVariation(state.placement),
1308 popper: state.elements.popper,
1309 popperRect: state.rects.popper,
1310 gpuAcceleration: gpuAcceleration,
1311 isFixed: state.options.strategy === 'fixed'
1312 };
1313
1314 if (state.modifiersData.popperOffsets != null) {
1315 state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
1316 offsets: state.modifiersData.popperOffsets,
1317 position: state.options.strategy,
1318 adaptive: adaptive,
1319 roundOffsets: roundOffsets
1320 })));
1321 }
1322
1323 if (state.modifiersData.arrow != null) {
1324 state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
1325 offsets: state.modifiersData.arrow,
1326 position: 'absolute',
1327 adaptive: false,
1328 roundOffsets: roundOffsets
1329 })));
1330 }
1331
1332 state.attributes.popper = Object.assign({}, state.attributes.popper, {
1333 'data-popper-placement': state.placement
1334 });
1335 } // eslint-disable-next-line import/no-unused-modules
1336
1337
1338 var computeStyles$1 = {
1339 name: 'computeStyles',
1340 enabled: true,
1341 phase: 'beforeWrite',
1342 fn: computeStyles,
1343 data: {}
1344 };
1345
1346 // and applies them to the HTMLElements such as popper and arrow
1347
1348 function applyStyles(_ref) {
1349 var state = _ref.state;
1350 Object.keys(state.elements).forEach(function (name) {
1351 var style = state.styles[name] || {};
1352 var attributes = state.attributes[name] || {};
1353 var element = state.elements[name]; // arrow is optional + virtual elements
1354
1355 if (!isHTMLElement(element) || !getNodeName(element)) {
1356 return;
1357 } // Flow doesn't support to extend this property, but it's the most
1358 // effective way to apply styles to an HTMLElement
1359 // $FlowFixMe[cannot-write]
1360
1361
1362 Object.assign(element.style, style);
1363 Object.keys(attributes).forEach(function (name) {
1364 var value = attributes[name];
1365
1366 if (value === false) {
1367 element.removeAttribute(name);
1368 } else {
1369 element.setAttribute(name, value === true ? '' : value);
1370 }
1371 });
1372 });
1373 }
1374
1375 function effect$1(_ref2) {
1376 var state = _ref2.state;
1377 var initialStyles = {
1378 popper: {
1379 position: state.options.strategy,
1380 left: '0',
1381 top: '0',
1382 margin: '0'
1383 },
1384 arrow: {
1385 position: 'absolute'
1386 },
1387 reference: {}
1388 };
1389 Object.assign(state.elements.popper.style, initialStyles.popper);
1390 state.styles = initialStyles;
1391
1392 if (state.elements.arrow) {
1393 Object.assign(state.elements.arrow.style, initialStyles.arrow);
1394 }
1395
1396 return function () {
1397 Object.keys(state.elements).forEach(function (name) {
1398 var element = state.elements[name];
1399 var attributes = state.attributes[name] || {};
1400 var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
1401
1402 var style = styleProperties.reduce(function (style, property) {
1403 style[property] = '';
1404 return style;
1405 }, {}); // arrow is optional + virtual elements
1406
1407 if (!isHTMLElement(element) || !getNodeName(element)) {
1408 return;
1409 }
1410
1411 Object.assign(element.style, style);
1412 Object.keys(attributes).forEach(function (attribute) {
1413 element.removeAttribute(attribute);
1414 });
1415 });
1416 };
1417 } // eslint-disable-next-line import/no-unused-modules
1418
1419
1420 var applyStyles$1 = {
1421 name: 'applyStyles',
1422 enabled: true,
1423 phase: 'write',
1424 fn: applyStyles,
1425 effect: effect$1,
1426 requires: ['computeStyles']
1427 };
1428
1429 function distanceAndSkiddingToXY(placement, rects, offset) {
1430 var basePlacement = getBasePlacement(placement);
1431 var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
1432
1433 var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
1434 placement: placement
1435 })) : offset,
1436 skidding = _ref[0],
1437 distance = _ref[1];
1438
1439 skidding = skidding || 0;
1440 distance = (distance || 0) * invertDistance;
1441 return [left, right].indexOf(basePlacement) >= 0 ? {
1442 x: distance,
1443 y: skidding
1444 } : {
1445 x: skidding,
1446 y: distance
1447 };
1448 }
1449
1450 function offset(_ref2) {
1451 var state = _ref2.state,
1452 options = _ref2.options,
1453 name = _ref2.name;
1454 var _options$offset = options.offset,
1455 offset = _options$offset === void 0 ? [0, 0] : _options$offset;
1456 var data = placements.reduce(function (acc, placement) {
1457 acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
1458 return acc;
1459 }, {});
1460 var _data$state$placement = data[state.placement],
1461 x = _data$state$placement.x,
1462 y = _data$state$placement.y;
1463
1464 if (state.modifiersData.popperOffsets != null) {
1465 state.modifiersData.popperOffsets.x += x;
1466 state.modifiersData.popperOffsets.y += y;
1467 }
1468
1469 state.modifiersData[name] = data;
1470 } // eslint-disable-next-line import/no-unused-modules
1471
1472
1473 var offset$1 = {
1474 name: 'offset',
1475 enabled: true,
1476 phase: 'main',
1477 requires: ['popperOffsets'],
1478 fn: offset
1479 };
1480
1481 var hash$1 = {
1482 left: 'right',
1483 right: 'left',
1484 bottom: 'top',
1485 top: 'bottom'
1486 };
1487 function getOppositePlacement(placement) {
1488 return placement.replace(/left|right|bottom|top/g, function (matched) {
1489 return hash$1[matched];
1490 });
1491 }
1492
1493 var hash = {
1494 start: 'end',
1495 end: 'start'
1496 };
1497 function getOppositeVariationPlacement(placement) {
1498 return placement.replace(/start|end/g, function (matched) {
1499 return hash[matched];
1500 });
1501 }
1502
1503 function computeAutoPlacement(state, options) {
1504 if (options === void 0) {
1505 options = {};
1506 }
1507
1508 var _options = options,
1509 placement = _options.placement,
1510 boundary = _options.boundary,
1511 rootBoundary = _options.rootBoundary,
1512 padding = _options.padding,
1513 flipVariations = _options.flipVariations,
1514 _options$allowedAutoP = _options.allowedAutoPlacements,
1515 allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
1516 var variation = getVariation(placement);
1517 var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
1518 return getVariation(placement) === variation;
1519 }) : basePlacements;
1520 var allowedPlacements = placements$1.filter(function (placement) {
1521 return allowedAutoPlacements.indexOf(placement) >= 0;
1522 });
1523
1524 if (allowedPlacements.length === 0) {
1525 allowedPlacements = placements$1;
1526
1527 {
1528 console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' '));
1529 }
1530 } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
1531
1532
1533 var overflows = allowedPlacements.reduce(function (acc, placement) {
1534 acc[placement] = detectOverflow(state, {
1535 placement: placement,
1536 boundary: boundary,
1537 rootBoundary: rootBoundary,
1538 padding: padding
1539 })[getBasePlacement(placement)];
1540 return acc;
1541 }, {});
1542 return Object.keys(overflows).sort(function (a, b) {
1543 return overflows[a] - overflows[b];
1544 });
1545 }
1546
1547 function getExpandedFallbackPlacements(placement) {
1548 if (getBasePlacement(placement) === auto) {
1549 return [];
1550 }
1551
1552 var oppositePlacement = getOppositePlacement(placement);
1553 return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
1554 }
1555
1556 function flip(_ref) {
1557 var state = _ref.state,
1558 options = _ref.options,
1559 name = _ref.name;
1560
1561 if (state.modifiersData[name]._skip) {
1562 return;
1563 }
1564
1565 var _options$mainAxis = options.mainAxis,
1566 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
1567 _options$altAxis = options.altAxis,
1568 checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
1569 specifiedFallbackPlacements = options.fallbackPlacements,
1570 padding = options.padding,
1571 boundary = options.boundary,
1572 rootBoundary = options.rootBoundary,
1573 altBoundary = options.altBoundary,
1574 _options$flipVariatio = options.flipVariations,
1575 flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
1576 allowedAutoPlacements = options.allowedAutoPlacements;
1577 var preferredPlacement = state.options.placement;
1578 var basePlacement = getBasePlacement(preferredPlacement);
1579 var isBasePlacement = basePlacement === preferredPlacement;
1580 var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
1581 var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
1582 return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
1583 placement: placement,
1584 boundary: boundary,
1585 rootBoundary: rootBoundary,
1586 padding: padding,
1587 flipVariations: flipVariations,
1588 allowedAutoPlacements: allowedAutoPlacements
1589 }) : placement);
1590 }, []);
1591 var referenceRect = state.rects.reference;
1592 var popperRect = state.rects.popper;
1593 var checksMap = new Map();
1594 var makeFallbackChecks = true;
1595 var firstFittingPlacement = placements[0];
1596
1597 for (var i = 0; i < placements.length; i++) {
1598 var placement = placements[i];
1599
1600 var _basePlacement = getBasePlacement(placement);
1601
1602 var isStartVariation = getVariation(placement) === start;
1603 var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
1604 var len = isVertical ? 'width' : 'height';
1605 var overflow = detectOverflow(state, {
1606 placement: placement,
1607 boundary: boundary,
1608 rootBoundary: rootBoundary,
1609 altBoundary: altBoundary,
1610 padding: padding
1611 });
1612 var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
1613
1614 if (referenceRect[len] > popperRect[len]) {
1615 mainVariationSide = getOppositePlacement(mainVariationSide);
1616 }
1617
1618 var altVariationSide = getOppositePlacement(mainVariationSide);
1619 var checks = [];
1620
1621 if (checkMainAxis) {
1622 checks.push(overflow[_basePlacement] <= 0);
1623 }
1624
1625 if (checkAltAxis) {
1626 checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
1627 }
1628
1629 if (checks.every(function (check) {
1630 return check;
1631 })) {
1632 firstFittingPlacement = placement;
1633 makeFallbackChecks = false;
1634 break;
1635 }
1636
1637 checksMap.set(placement, checks);
1638 }
1639
1640 if (makeFallbackChecks) {
1641 // `2` may be desired in some cases – research later
1642 var numberOfChecks = flipVariations ? 3 : 1;
1643
1644 var _loop = function _loop(_i) {
1645 var fittingPlacement = placements.find(function (placement) {
1646 var checks = checksMap.get(placement);
1647
1648 if (checks) {
1649 return checks.slice(0, _i).every(function (check) {
1650 return check;
1651 });
1652 }
1653 });
1654
1655 if (fittingPlacement) {
1656 firstFittingPlacement = fittingPlacement;
1657 return "break";
1658 }
1659 };
1660
1661 for (var _i = numberOfChecks; _i > 0; _i--) {
1662 var _ret = _loop(_i);
1663
1664 if (_ret === "break") break;
1665 }
1666 }
1667
1668 if (state.placement !== firstFittingPlacement) {
1669 state.modifiersData[name]._skip = true;
1670 state.placement = firstFittingPlacement;
1671 state.reset = true;
1672 }
1673 } // eslint-disable-next-line import/no-unused-modules
1674
1675
1676 var flip$1 = {
1677 name: 'flip',
1678 enabled: true,
1679 phase: 'main',
1680 fn: flip,
1681 requiresIfExists: ['offset'],
1682 data: {
1683 _skip: false
1684 }
1685 };
1686
1687 function getAltAxis(axis) {
1688 return axis === 'x' ? 'y' : 'x';
1689 }
1690
1691 function within(min$1, value, max$1) {
1692 return max(min$1, min(value, max$1));
1693 }
1694 function withinMaxClamp(min, value, max) {
1695 var v = within(min, value, max);
1696 return v > max ? max : v;
1697 }
1698
1699 function preventOverflow(_ref) {
1700 var state = _ref.state,
1701 options = _ref.options,
1702 name = _ref.name;
1703 var _options$mainAxis = options.mainAxis,
1704 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
1705 _options$altAxis = options.altAxis,
1706 checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
1707 boundary = options.boundary,
1708 rootBoundary = options.rootBoundary,
1709 altBoundary = options.altBoundary,
1710 padding = options.padding,
1711 _options$tether = options.tether,
1712 tether = _options$tether === void 0 ? true : _options$tether,
1713 _options$tetherOffset = options.tetherOffset,
1714 tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
1715 var overflow = detectOverflow(state, {
1716 boundary: boundary,
1717 rootBoundary: rootBoundary,
1718 padding: padding,
1719 altBoundary: altBoundary
1720 });
1721 var basePlacement = getBasePlacement(state.placement);
1722 var variation = getVariation(state.placement);
1723 var isBasePlacement = !variation;
1724 var mainAxis = getMainAxisFromPlacement(basePlacement);
1725 var altAxis = getAltAxis(mainAxis);
1726 var popperOffsets = state.modifiersData.popperOffsets;
1727 var referenceRect = state.rects.reference;
1728 var popperRect = state.rects.popper;
1729 var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
1730 placement: state.placement
1731 })) : tetherOffset;
1732 var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
1733 mainAxis: tetherOffsetValue,
1734 altAxis: tetherOffsetValue
1735 } : Object.assign({
1736 mainAxis: 0,
1737 altAxis: 0
1738 }, tetherOffsetValue);
1739 var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
1740 var data = {
1741 x: 0,
1742 y: 0
1743 };
1744
1745 if (!popperOffsets) {
1746 return;
1747 }
1748
1749 if (checkMainAxis) {
1750 var _offsetModifierState$;
1751
1752 var mainSide = mainAxis === 'y' ? top : left;
1753 var altSide = mainAxis === 'y' ? bottom : right;
1754 var len = mainAxis === 'y' ? 'height' : 'width';
1755 var offset = popperOffsets[mainAxis];
1756 var min$1 = offset + overflow[mainSide];
1757 var max$1 = offset - overflow[altSide];
1758 var additive = tether ? -popperRect[len] / 2 : 0;
1759 var minLen = variation === start ? referenceRect[len] : popperRect[len];
1760 var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
1761 // outside the reference bounds
1762
1763 var arrowElement = state.elements.arrow;
1764 var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
1765 width: 0,
1766 height: 0
1767 };
1768 var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
1769 var arrowPaddingMin = arrowPaddingObject[mainSide];
1770 var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
1771 // to include its full size in the calculation. If the reference is small
1772 // and near the edge of a boundary, the popper can overflow even if the
1773 // reference is not overflowing as well (e.g. virtual elements with no
1774 // width or height)
1775
1776 var arrowLen = within(0, referenceRect[len], arrowRect[len]);
1777 var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
1778 var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
1779 var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
1780 var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
1781 var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
1782 var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
1783 var tetherMax = offset + maxOffset - offsetModifierValue;
1784 var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
1785 popperOffsets[mainAxis] = preventedOffset;
1786 data[mainAxis] = preventedOffset - offset;
1787 }
1788
1789 if (checkAltAxis) {
1790 var _offsetModifierState$2;
1791
1792 var _mainSide = mainAxis === 'x' ? top : left;
1793
1794 var _altSide = mainAxis === 'x' ? bottom : right;
1795
1796 var _offset = popperOffsets[altAxis];
1797
1798 var _len = altAxis === 'y' ? 'height' : 'width';
1799
1800 var _min = _offset + overflow[_mainSide];
1801
1802 var _max = _offset - overflow[_altSide];
1803
1804 var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
1805
1806 var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
1807
1808 var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
1809
1810 var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
1811
1812 var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
1813
1814 popperOffsets[altAxis] = _preventedOffset;
1815 data[altAxis] = _preventedOffset - _offset;
1816 }
1817
1818 state.modifiersData[name] = data;
1819 } // eslint-disable-next-line import/no-unused-modules
1820
1821
1822 var preventOverflow$1 = {
1823 name: 'preventOverflow',
1824 enabled: true,
1825 phase: 'main',
1826 fn: preventOverflow,
1827 requiresIfExists: ['offset']
1828 };
1829
1830 var toPaddingObject = function toPaddingObject(padding, state) {
1831 padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
1832 placement: state.placement
1833 })) : padding;
1834 return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
1835 };
1836
1837 function arrow(_ref) {
1838 var _state$modifiersData$;
1839
1840 var state = _ref.state,
1841 name = _ref.name,
1842 options = _ref.options;
1843 var arrowElement = state.elements.arrow;
1844 var popperOffsets = state.modifiersData.popperOffsets;
1845 var basePlacement = getBasePlacement(state.placement);
1846 var axis = getMainAxisFromPlacement(basePlacement);
1847 var isVertical = [left, right].indexOf(basePlacement) >= 0;
1848 var len = isVertical ? 'height' : 'width';
1849
1850 if (!arrowElement || !popperOffsets) {
1851 return;
1852 }
1853
1854 var paddingObject = toPaddingObject(options.padding, state);
1855 var arrowRect = getLayoutRect(arrowElement);
1856 var minProp = axis === 'y' ? top : left;
1857 var maxProp = axis === 'y' ? bottom : right;
1858 var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
1859 var startDiff = popperOffsets[axis] - state.rects.reference[axis];
1860 var arrowOffsetParent = getOffsetParent(arrowElement);
1861 var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
1862 var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
1863 // outside of the popper bounds
1864
1865 var min = paddingObject[minProp];
1866 var max = clientSize - arrowRect[len] - paddingObject[maxProp];
1867 var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
1868 var offset = within(min, center, max); // Prevents breaking syntax highlighting...
1869
1870 var axisProp = axis;
1871 state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
1872 }
1873
1874 function effect(_ref2) {
1875 var state = _ref2.state,
1876 options = _ref2.options;
1877 var _options$element = options.element,
1878 arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
1879
1880 if (arrowElement == null) {
1881 return;
1882 } // CSS selector
1883
1884
1885 if (typeof arrowElement === 'string') {
1886 arrowElement = state.elements.popper.querySelector(arrowElement);
1887
1888 if (!arrowElement) {
1889 return;
1890 }
1891 }
1892
1893 {
1894 if (!isHTMLElement(arrowElement)) {
1895 console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));
1896 }
1897 }
1898
1899 if (!contains(state.elements.popper, arrowElement)) {
1900 {
1901 console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' '));
1902 }
1903
1904 return;
1905 }
1906
1907 state.elements.arrow = arrowElement;
1908 } // eslint-disable-next-line import/no-unused-modules
1909
1910
1911 var arrow$1 = {
1912 name: 'arrow',
1913 enabled: true,
1914 phase: 'main',
1915 fn: arrow,
1916 effect: effect,
1917 requires: ['popperOffsets'],
1918 requiresIfExists: ['preventOverflow']
1919 };
1920
1921 function getSideOffsets(overflow, rect, preventedOffsets) {
1922 if (preventedOffsets === void 0) {
1923 preventedOffsets = {
1924 x: 0,
1925 y: 0
1926 };
1927 }
1928
1929 return {
1930 top: overflow.top - rect.height - preventedOffsets.y,
1931 right: overflow.right - rect.width + preventedOffsets.x,
1932 bottom: overflow.bottom - rect.height + preventedOffsets.y,
1933 left: overflow.left - rect.width - preventedOffsets.x
1934 };
1935 }
1936
1937 function isAnySideFullyClipped(overflow) {
1938 return [top, right, bottom, left].some(function (side) {
1939 return overflow[side] >= 0;
1940 });
1941 }
1942
1943 function hide(_ref) {
1944 var state = _ref.state,
1945 name = _ref.name;
1946 var referenceRect = state.rects.reference;
1947 var popperRect = state.rects.popper;
1948 var preventedOffsets = state.modifiersData.preventOverflow;
1949 var referenceOverflow = detectOverflow(state, {
1950 elementContext: 'reference'
1951 });
1952 var popperAltOverflow = detectOverflow(state, {
1953 altBoundary: true
1954 });
1955 var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
1956 var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
1957 var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
1958 var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
1959 state.modifiersData[name] = {
1960 referenceClippingOffsets: referenceClippingOffsets,
1961 popperEscapeOffsets: popperEscapeOffsets,
1962 isReferenceHidden: isReferenceHidden,
1963 hasPopperEscaped: hasPopperEscaped
1964 };
1965 state.attributes.popper = Object.assign({}, state.attributes.popper, {
1966 'data-popper-reference-hidden': isReferenceHidden,
1967 'data-popper-escaped': hasPopperEscaped
1968 });
1969 } // eslint-disable-next-line import/no-unused-modules
1970
1971
1972 var hide$1 = {
1973 name: 'hide',
1974 enabled: true,
1975 phase: 'main',
1976 requiresIfExists: ['preventOverflow'],
1977 fn: hide
1978 };
1979
1980 var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
1981 var createPopper$1 = /*#__PURE__*/popperGenerator({
1982 defaultModifiers: defaultModifiers$1
1983 }); // eslint-disable-next-line import/no-unused-modules
1984
1985 var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
1986 var createPopper = /*#__PURE__*/popperGenerator({
1987 defaultModifiers: defaultModifiers
1988 }); // eslint-disable-next-line import/no-unused-modules
1989
1990 exports.applyStyles = applyStyles$1;
1991 exports.arrow = arrow$1;
1992 exports.computeStyles = computeStyles$1;
1993 exports.createPopper = createPopper;
1994 exports.createPopperLite = createPopper$1;
1995 exports.defaultModifiers = defaultModifiers;
1996 exports.detectOverflow = detectOverflow;
1997 exports.eventListeners = eventListeners;
1998 exports.flip = flip$1;
1999 exports.hide = hide$1;
2000 exports.offset = offset$1;
2001 exports.popperGenerator = popperGenerator;
2002 exports.popperOffsets = popperOffsets$1;
2003 exports.preventOverflow = preventOverflow$1;
2004
2005 Object.defineProperty(exports, '__esModule', { value: true });
2006
2007})));
2008//# sourceMappingURL=popper.js.map
public/lib/popper.js.map+0 -1
@@ -1 +0,0 @@
1{"version":3,"file":"popper.js","sources":["../../src/dom-utils/getWindow.js","../../src/dom-utils/instanceOf.js","../../src/utils/math.js","../../src/utils/userAgent.js","../../src/dom-utils/isLayoutViewport.js","../../src/dom-utils/getBoundingClientRect.js","../../src/dom-utils/getWindowScroll.js","../../src/dom-utils/getHTMLElementScroll.js","../../src/dom-utils/getNodeScroll.js","../../src/dom-utils/getNodeName.js","../../src/dom-utils/getDocumentElement.js","../../src/dom-utils/getWindowScrollBarX.js","../../src/dom-utils/getComputedStyle.js","../../src/dom-utils/isScrollParent.js","../../src/dom-utils/getCompositeRect.js","../../src/dom-utils/getLayoutRect.js","../../src/dom-utils/getParentNode.js","../../src/dom-utils/getScrollParent.js","../../src/dom-utils/listScrollParents.js","../../src/dom-utils/isTableElement.js","../../src/dom-utils/getOffsetParent.js","../../src/enums.js","../../src/utils/orderModifiers.js","../../src/utils/debounce.js","../../src/utils/format.js","../../src/utils/validateModifiers.js","../../src/utils/uniqueBy.js","../../src/utils/getBasePlacement.js","../../src/utils/mergeByName.js","../../src/dom-utils/getViewportRect.js","../../src/dom-utils/getDocumentRect.js","../../src/dom-utils/contains.js","../../src/utils/rectToClientRect.js","../../src/dom-utils/getClippingRect.js","../../src/utils/getVariation.js","../../src/utils/getMainAxisFromPlacement.js","../../src/utils/computeOffsets.js","../../src/utils/getFreshSideObject.js","../../src/utils/mergePaddingObject.js","../../src/utils/expandToHashMap.js","../../src/utils/detectOverflow.js","../../src/createPopper.js","../../src/modifiers/eventListeners.js","../../src/modifiers/popperOffsets.js","../../src/modifiers/computeStyles.js","../../src/modifiers/applyStyles.js","../../src/modifiers/offset.js","../../src/utils/getOppositePlacement.js","../../src/utils/getOppositeVariationPlacement.js","../../src/utils/computeAutoPlacement.js","../../src/modifiers/flip.js","../../src/utils/getAltAxis.js","../../src/utils/within.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/arrow.js","../../src/modifiers/hide.js","../../src/popper-lite.js","../../src/popper.js"],"sourcesContent":["// @flow\nimport type { Window } from '../types';\ndeclare function getWindow(node: Node | Window): Window;\n\nexport default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n","// @flow\nimport getWindow from './getWindow';\n\ndeclare function isElement(node: mixed): boolean %checks(node instanceof\n Element);\nfunction isElement(node) {\n const OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\ndeclare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement);\nfunction isHTMLElement(node) {\n const OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\ndeclare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot);\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n const OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };\n","// @flow\nexport const max = Math.max;\nexport const min = Math.min;\nexport const round = Math.round;\n","// @flow\ntype Navigator = Navigator & { userAgentData?: NavigatorUAData };\n\ninterface NavigatorUAData {\n brands: Array<{ brand: string, version: string }>;\n mobile: boolean;\n platform: string;\n}\n\nexport default function getUAString(): string {\n const uaData = (navigator: Navigator).userAgentData;\n\n if (uaData?.brands) {\n return uaData.brands\n .map((item) => `${item.brand}/${item.version}`)\n .join(' ');\n }\n\n return navigator.userAgent;\n}\n","// @flow\nimport getUAString from '../utils/userAgent';\n\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}\n","// @flow\nimport type { ClientRectObject, VirtualElement } from '../types';\nimport { isElement, isHTMLElement } from './instanceOf';\nimport { round } from '../utils/math';\nimport getWindow from './getWindow';\nimport isLayoutViewport from './isLayoutViewport';\n\nexport default function getBoundingClientRect(\n element: Element | VirtualElement,\n includeScale: boolean = false,\n isFixedStrategy: boolean = false\n): ClientRectObject {\n const clientRect = element.getBoundingClientRect();\n let scaleX = 1;\n let scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX =\n (element: HTMLElement).offsetWidth > 0\n ? round(clientRect.width) / (element: HTMLElement).offsetWidth || 1\n : 1;\n scaleY =\n (element: HTMLElement).offsetHeight > 0\n ? round(clientRect.height) / (element: HTMLElement).offsetHeight || 1\n : 1;\n }\n\n const { visualViewport } = isElement(element) ? getWindow(element) : window;\n const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n\n const x =\n (clientRect.left +\n (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) /\n scaleX;\n const y =\n (clientRect.top +\n (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) /\n scaleY;\n const width = clientRect.width / scaleX;\n const height = clientRect.height / scaleY;\n\n return {\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x,\n y,\n };\n}\n","// @flow\nimport getWindow from './getWindow';\nimport type { Window } from '../types';\n\nexport default function getWindowScroll(node: Node | Window) {\n const win = getWindow(node);\n const scrollLeft = win.pageXOffset;\n const scrollTop = win.pageYOffset;\n\n return {\n scrollLeft,\n scrollTop,\n };\n}\n","// @flow\n\nexport default function getHTMLElementScroll(element: HTMLElement) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop,\n };\n}\n","// @flow\nimport getWindowScroll from './getWindowScroll';\nimport getWindow from './getWindow';\nimport { isHTMLElement } from './instanceOf';\nimport getHTMLElementScroll from './getHTMLElementScroll';\nimport type { Window } from '../types';\n\nexport default function getNodeScroll(node: Node | Window) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}\n","// @flow\nimport type { Window } from '../types';\n\nexport default function getNodeName(element: ?Node | Window): ?string {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}\n","// @flow\nimport { isElement } from './instanceOf';\nimport type { Window } from '../types';\n\nexport default function getDocumentElement(\n element: Element | Window\n): HTMLElement {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return (\n (isElement(element)\n ? element.ownerDocument\n : // $FlowFixMe[prop-missing]\n element.document) || window.document\n ).documentElement;\n}\n","// @flow\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getDocumentElement from './getDocumentElement';\nimport getWindowScroll from './getWindowScroll';\n\nexport default function getWindowScrollBarX(element: Element): number {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return (\n getBoundingClientRect(getDocumentElement(element)).left +\n getWindowScroll(element).scrollLeft\n );\n}\n","// @flow\nimport getWindow from './getWindow';\n\nexport default function getComputedStyle(\n element: Element\n): CSSStyleDeclaration {\n return getWindow(element).getComputedStyle(element);\n}\n","// @flow\nimport getComputedStyle from './getComputedStyle';\n\nexport default function isScrollParent(element: HTMLElement): boolean {\n // Firefox wants us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n","// @flow\nimport type { Rect, VirtualElement, Window } from '../types';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getNodeScroll from './getNodeScroll';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport getDocumentElement from './getDocumentElement';\nimport isScrollParent from './isScrollParent';\nimport { round } from '../utils/math';\n\nfunction isElementScaled(element: HTMLElement) {\n const rect = element.getBoundingClientRect();\n const scaleX = round(rect.width) / element.offsetWidth || 1;\n const scaleY = round(rect.height) / element.offsetHeight || 1;\n\n return scaleX !== 1 || scaleY !== 1;\n}\n\n// Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\nexport default function getCompositeRect(\n elementOrVirtualElement: Element | VirtualElement,\n offsetParent: Element | Window,\n isFixed: boolean = false\n): Rect {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const offsetParentIsScaled =\n isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const rect = getBoundingClientRect(\n elementOrVirtualElement,\n offsetParentIsScaled,\n isFixed\n );\n\n let scroll = { scrollLeft: 0, scrollTop: 0 };\n let offsets = { x: 0, y: 0 };\n\n if (isOffsetParentAnElement || (!isOffsetParentAnElement && !isFixed)) {\n if (\n getNodeName(offsetParent) !== 'body' ||\n // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)\n ) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height,\n };\n}\n","// @flow\nimport type { Rect } from '../types';\nimport getBoundingClientRect from './getBoundingClientRect';\n\n// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element: HTMLElement): Rect {\n const clientRect = getBoundingClientRect(element);\n\n // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n let width = element.offsetWidth;\n let height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width,\n height,\n };\n}\n","// @flow\nimport getNodeName from './getNodeName';\nimport getDocumentElement from './getDocumentElement';\nimport { isShadowRoot } from './instanceOf';\n\nexport default function getParentNode(element: Node | ShadowRoot): Node {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n );\n}\n","// @flow\nimport getParentNode from './getParentNode';\nimport isScrollParent from './isScrollParent';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\n\nexport default function getScrollParent(node: Node): HTMLElement {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}\n","// @flow\nimport getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getWindow from './getWindow';\nimport type { Window, VisualViewport } from '../types';\nimport isScrollParent from './isScrollParent';\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\nexport default function listScrollParents(\n element: Node,\n list: Array<Element | Window> = []\n): Array<Element | Window | VisualViewport> {\n const scrollParent = getScrollParent(element);\n const isBody = scrollParent === element.ownerDocument?.body;\n const win = getWindow(scrollParent);\n const target = isBody\n ? [win].concat(\n win.visualViewport || [],\n isScrollParent(scrollParent) ? scrollParent : []\n )\n : scrollParent;\n const updatedList = list.concat(target);\n\n return isBody\n ? updatedList\n : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}\n","// @flow\nimport getNodeName from './getNodeName';\n\nexport default function isTableElement(element: Element): boolean {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}\n","// @flow\nimport getWindow from './getWindow';\nimport getNodeName from './getNodeName';\nimport getComputedStyle from './getComputedStyle';\nimport { isHTMLElement, isShadowRoot } from './instanceOf';\nimport isTableElement from './isTableElement';\nimport getParentNode from './getParentNode';\nimport getUAString from '../utils/userAgent';\n\nfunction getTrueOffsetParent(element: Element): ?Element {\n if (\n !isHTMLElement(element) ||\n // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed'\n ) {\n return null;\n }\n\n return element.offsetParent;\n}\n\n// `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\nfunction getContainingBlock(element: Element) {\n const isFirefox = /firefox/i.test(getUAString());\n const isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n const elementCss = getComputedStyle(element);\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n let currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (\n isHTMLElement(currentNode) &&\n ['html', 'body'].indexOf(getNodeName(currentNode)) < 0\n ) {\n const css = getComputedStyle(currentNode);\n\n // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n if (\n css.transform !== 'none' ||\n css.perspective !== 'none' ||\n css.contain === 'paint' ||\n ['transform', 'perspective'].indexOf(css.willChange) !== -1 ||\n (isFirefox && css.willChange === 'filter') ||\n (isFirefox && css.filter && css.filter !== 'none')\n ) {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nexport default function getOffsetParent(element: Element) {\n const window = getWindow(element);\n\n let offsetParent = getTrueOffsetParent(element);\n\n while (\n offsetParent &&\n isTableElement(offsetParent) &&\n getComputedStyle(offsetParent).position === 'static'\n ) {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (\n offsetParent &&\n (getNodeName(offsetParent) === 'html' ||\n (getNodeName(offsetParent) === 'body' &&\n getComputedStyle(offsetParent).position === 'static'))\n ) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n","// @flow\nexport const top: 'top' = 'top';\nexport const bottom: 'bottom' = 'bottom';\nexport const right: 'right' = 'right';\nexport const left: 'left' = 'left';\nexport const auto: 'auto' = 'auto';\nexport type BasePlacement =\n | typeof top\n | typeof bottom\n | typeof right\n | typeof left;\nexport const basePlacements: Array<BasePlacement> = [top, bottom, right, left];\n\nexport const start: 'start' = 'start';\nexport const end: 'end' = 'end';\nexport type Variation = typeof start | typeof end;\n\nexport const clippingParents: 'clippingParents' = 'clippingParents';\nexport const viewport: 'viewport' = 'viewport';\nexport type Boundary = Element | Array<Element> | typeof clippingParents;\nexport type RootBoundary = typeof viewport | 'document';\n\nexport const popper: 'popper' = 'popper';\nexport const reference: 'reference' = 'reference';\nexport type Context = typeof popper | typeof reference;\n\nexport type VariationPlacement =\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'right-start'\n | 'right-end'\n | 'left-start'\n | 'left-end';\nexport type AutoPlacement = 'auto' | 'auto-start' | 'auto-end';\nexport type ComputedPlacement = VariationPlacement | BasePlacement;\nexport type Placement = AutoPlacement | BasePlacement | VariationPlacement;\n\nexport const variationPlacements: Array<VariationPlacement> = basePlacements.reduce(\n (acc: Array<VariationPlacement>, placement: BasePlacement) =>\n acc.concat([(`${placement}-${start}`: any), (`${placement}-${end}`: any)]),\n []\n);\nexport const placements: Array<Placement> = [...basePlacements, auto].reduce(\n (\n acc: Array<Placement>,\n placement: BasePlacement | typeof auto\n ): Array<Placement> =>\n acc.concat([\n placement,\n (`${placement}-${start}`: any),\n (`${placement}-${end}`: any),\n ]),\n []\n);\n\n// modifiers that need to read the DOM\nexport const beforeRead: 'beforeRead' = 'beforeRead';\nexport const read: 'read' = 'read';\nexport const afterRead: 'afterRead' = 'afterRead';\n// pure-logic modifiers\nexport const beforeMain: 'beforeMain' = 'beforeMain';\nexport const main: 'main' = 'main';\nexport const afterMain: 'afterMain' = 'afterMain';\n// modifier with the purpose to write to the DOM (or write into a framework state)\nexport const beforeWrite: 'beforeWrite' = 'beforeWrite';\nexport const write: 'write' = 'write';\nexport const afterWrite: 'afterWrite' = 'afterWrite';\nexport const modifierPhases: Array<ModifierPhases> = [\n beforeRead,\n read,\n afterRead,\n beforeMain,\n main,\n afterMain,\n beforeWrite,\n write,\n afterWrite,\n];\n\nexport type ModifierPhases =\n | typeof beforeRead\n | typeof read\n | typeof afterRead\n | typeof beforeMain\n | typeof main\n | typeof afterMain\n | typeof beforeWrite\n | typeof write\n | typeof afterWrite;\n","// @flow\nimport type { Modifier } from '../types';\nimport { modifierPhases } from '../enums';\n\n// source: https://stackoverflow.com/questions/49875255\nfunction order(modifiers) {\n const map = new Map();\n const visited = new Set();\n const result = [];\n\n modifiers.forEach(modifier => {\n map.set(modifier.name, modifier);\n });\n\n // On visiting object, check for its dependencies and visit them recursively\n function sort(modifier: Modifier<any, any>) {\n visited.add(modifier.name);\n\n const requires = [\n ...(modifier.requires || []),\n ...(modifier.requiresIfExists || []),\n ];\n\n requires.forEach(dep => {\n if (!visited.has(dep)) {\n const depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n\n result.push(modifier);\n }\n\n modifiers.forEach(modifier => {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n\n return result;\n}\n\nexport default function orderModifiers(\n modifiers: Array<Modifier<any, any>>\n): Array<Modifier<any, any>> {\n // order based on dependencies\n const orderedModifiers = order(modifiers);\n\n // order based on phase\n return modifierPhases.reduce((acc, phase) => {\n return acc.concat(\n orderedModifiers.filter(modifier => modifier.phase === phase)\n );\n }, []);\n}\n","// @flow\n\nexport default function debounce<T>(fn: Function): () => Promise<T> {\n let pending;\n return () => {\n if (!pending) {\n pending = new Promise<T>(resolve => {\n Promise.resolve().then(() => {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}\n","// @flow\n\nexport default function format(str: string, ...args: Array<string>) {\n return [...args].reduce((p, c) => p.replace(/%s/, c), str);\n}\n","// @flow\nimport format from './format';\nimport { modifierPhases } from '../enums';\n\nconst INVALID_MODIFIER_ERROR =\n 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nconst MISSING_DEPENDENCY_ERROR =\n 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nconst VALID_PROPERTIES = [\n 'name',\n 'enabled',\n 'phase',\n 'fn',\n 'effect',\n 'requires',\n 'options',\n];\n\nexport default function validateModifiers(modifiers: Array<any>): void {\n modifiers.forEach((modifier) => {\n [...Object.keys(modifier), ...VALID_PROPERTIES]\n // IE11-compatible replacement for `new Set(iterable)`\n .filter((value, index, self) => self.indexOf(value) === index)\n .forEach((key) => {\n switch (key) {\n case 'name':\n if (typeof modifier.name !== 'string') {\n console.error(\n format(\n INVALID_MODIFIER_ERROR,\n String(modifier.name),\n '\"name\"',\n '\"string\"',\n `\"${String(modifier.name)}\"`\n )\n );\n }\n break;\n case 'enabled':\n if (typeof modifier.enabled !== 'boolean') {\n console.error(\n format(\n INVALID_MODIFIER_ERROR,\n modifier.name,\n '\"enabled\"',\n '\"boolean\"',\n `\"${String(modifier.enabled)}\"`\n )\n );\n }\n break;\n case 'phase':\n if (modifierPhases.indexOf(modifier.phase) < 0) {\n console.error(\n format(\n INVALID_MODIFIER_ERROR,\n modifier.name,\n '\"phase\"',\n `either ${modifierPhases.join(', ')}`,\n `\"${String(modifier.phase)}\"`\n )\n );\n }\n break;\n case 'fn':\n if (typeof modifier.fn !== 'function') {\n console.error(\n format(\n INVALID_MODIFIER_ERROR,\n modifier.name,\n '\"fn\"',\n '\"function\"',\n `\"${String(modifier.fn)}\"`\n )\n );\n }\n break;\n case 'effect':\n if (\n modifier.effect != null &&\n typeof modifier.effect !== 'function'\n ) {\n console.error(\n format(\n INVALID_MODIFIER_ERROR,\n modifier.name,\n '\"effect\"',\n '\"function\"',\n `\"${String(modifier.fn)}\"`\n )\n );\n }\n break;\n case 'requires':\n if (\n modifier.requires != null &&\n !Array.isArray(modifier.requires)\n ) {\n console.error(\n format(\n INVALID_MODIFIER_ERROR,\n modifier.name,\n '\"requires\"',\n '\"array\"',\n `\"${String(modifier.requires)}\"`\n )\n );\n }\n break;\n case 'requiresIfExists':\n if (!Array.isArray(modifier.requiresIfExists)) {\n console.error(\n format(\n INVALID_MODIFIER_ERROR,\n modifier.name,\n '\"requiresIfExists\"',\n '\"array\"',\n `\"${String(modifier.requiresIfExists)}\"`\n )\n );\n }\n break;\n case 'options':\n case 'data':\n break;\n default:\n console.error(\n `PopperJS: an invalid property has been provided to the \"${\n modifier.name\n }\" modifier, valid properties are ${VALID_PROPERTIES.map(\n (s) => `\"${s}\"`\n ).join(', ')}; but \"${key}\" was provided.`\n );\n }\n\n modifier.requires &&\n modifier.requires.forEach((requirement) => {\n if (modifiers.find((mod) => mod.name === requirement) == null) {\n console.error(\n format(\n MISSING_DEPENDENCY_ERROR,\n String(modifier.name),\n requirement,\n requirement\n )\n );\n }\n });\n });\n });\n}\n","// @flow\n\nexport default function uniqueBy<T>(arr: Array<T>, fn: T => any): Array<T> {\n const identifiers = new Set();\n\n return arr.filter(item => {\n const identifier = fn(item);\n\n if (!identifiers.has(identifier)) {\n identifiers.add(identifier);\n return true;\n }\n });\n}\n","// @flow\nimport { type BasePlacement, type Placement, auto } from '../enums';\n\nexport default function getBasePlacement(\n placement: Placement | typeof auto\n): BasePlacement {\n return (placement.split('-')[0]: any);\n}\n","// @flow\nimport type { Modifier } from '../types';\n\nexport default function mergeByName(\n modifiers: Array<$Shape<Modifier<any, any>>>\n): Array<$Shape<Modifier<any, any>>> {\n const merged = modifiers.reduce((merged, current) => {\n const existing = merged[current.name];\n merged[current.name] = existing\n ? {\n ...existing,\n ...current,\n options: { ...existing.options, ...current.options },\n data: { ...existing.data, ...current.data },\n }\n : current;\n return merged;\n }, {});\n\n // IE11 does not support Object.values\n return Object.keys(merged).map(key => merged[key]);\n}\n","// @flow\nimport getWindow from './getWindow';\nimport getDocumentElement from './getDocumentElement';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport isLayoutViewport from './isLayoutViewport';\nimport type { PositioningStrategy } from '../types';\n\nexport default function getViewportRect(\n element: Element,\n strategy: PositioningStrategy\n) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n\n const layoutViewport = isLayoutViewport();\n\n if (layoutViewport || (!layoutViewport && strategy === 'fixed')) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width,\n height,\n x: x + getWindowScrollBarX(element),\n y,\n };\n}\n","// @flow\nimport type { Rect } from '../types';\nimport getDocumentElement from './getDocumentElement';\nimport getComputedStyle from './getComputedStyle';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport getWindowScroll from './getWindowScroll';\nimport { max } from '../utils/math';\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\nexport default function getDocumentRect(element: HTMLElement): Rect {\n const html = getDocumentElement(element);\n const winScroll = getWindowScroll(element);\n const body = element.ownerDocument?.body;\n\n const width = max(\n html.scrollWidth,\n html.clientWidth,\n body ? body.scrollWidth : 0,\n body ? body.clientWidth : 0\n );\n const height = max(\n html.scrollHeight,\n html.clientHeight,\n body ? body.scrollHeight : 0,\n body ? body.clientHeight : 0\n );\n\n let x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n const y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return { width, height, x, y };\n}\n","// @flow\nimport { isShadowRoot } from './instanceOf';\n\nexport default function contains(parent: Element, child: Element) {\n const rootNode = child.getRootNode && child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n }\n // $FlowFixMe[prop-missing]: need a better way to handle this...\n next = next.parentNode || next.host;\n } while (next);\n }\n\n // Give up, the result is false\n return false;\n}\n","// @flow\nimport type { Rect, ClientRectObject } from '../types';\n\nexport default function rectToClientRect(rect: Rect): ClientRectObject {\n return {\n ...rect,\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height,\n };\n}\n","// @flow\nimport type { ClientRectObject, PositioningStrategy } from '../types';\nimport type { Boundary, RootBoundary } from '../enums';\nimport { viewport } from '../enums';\nimport getViewportRect from './getViewportRect';\nimport getDocumentRect from './getDocumentRect';\nimport listScrollParents from './listScrollParents';\nimport getOffsetParent from './getOffsetParent';\nimport getDocumentElement from './getDocumentElement';\nimport getComputedStyle from './getComputedStyle';\nimport { isElement, isHTMLElement } from './instanceOf';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getParentNode from './getParentNode';\nimport contains from './contains';\nimport getNodeName from './getNodeName';\nimport rectToClientRect from '../utils/rectToClientRect';\nimport { max, min } from '../utils/math';\n\nfunction getInnerBoundingClientRect(\n element: Element,\n strategy: PositioningStrategy\n) {\n const rect = getBoundingClientRect(element, false, strategy === 'fixed');\n\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n\n return rect;\n}\n\nfunction getClientRectFromMixedType(\n element: Element,\n clippingParent: Element | RootBoundary,\n strategy: PositioningStrategy\n): ClientRectObject {\n return clippingParent === viewport\n ? rectToClientRect(getViewportRect(element, strategy))\n : isElement(clippingParent)\n ? getInnerBoundingClientRect(clippingParent, strategy)\n : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n}\n\n// A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\nfunction getClippingParents(element: Element): Array<Element> {\n const clippingParents = listScrollParents(getParentNode(element));\n const canEscapeClipping =\n ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n const clipperElement =\n canEscapeClipping && isHTMLElement(element)\n ? getOffsetParent(element)\n : element;\n\n if (!isElement(clipperElement)) {\n return [];\n }\n\n // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n return clippingParents.filter(\n (clippingParent) =>\n isElement(clippingParent) &&\n contains(clippingParent, clipperElement) &&\n getNodeName(clippingParent) !== 'body'\n );\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping parents\nexport default function getClippingRect(\n element: Element,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n strategy: PositioningStrategy\n): ClientRectObject {\n const mainClippingParents =\n boundary === 'clippingParents'\n ? getClippingParents(element)\n : [].concat(boundary);\n const clippingParents = [...mainClippingParents, rootBoundary];\n const firstClippingParent = clippingParents[0];\n\n const clippingRect = clippingParents.reduce((accRect, clippingParent) => {\n const rect = getClientRectFromMixedType(element, clippingParent, strategy);\n\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n\n return clippingRect;\n}\n","// @flow\nimport { type Variation, type Placement } from '../enums';\n\nexport default function getVariation(placement: Placement): ?Variation {\n return (placement.split('-')[1]: any);\n}\n","// @flow\nimport type { Placement } from '../enums';\n\nexport default function getMainAxisFromPlacement(\n placement: Placement\n): 'x' | 'y' {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n","// @flow\nimport getBasePlacement from './getBasePlacement';\nimport getVariation from './getVariation';\nimport getMainAxisFromPlacement from './getMainAxisFromPlacement';\nimport type {\n Rect,\n PositioningStrategy,\n Offsets,\n ClientRectObject,\n} from '../types';\nimport { top, right, bottom, left, start, end, type Placement } from '../enums';\n\nexport default function computeOffsets({\n reference,\n element,\n placement,\n}: {\n reference: Rect | ClientRectObject,\n element: Rect | ClientRectObject,\n strategy: PositioningStrategy,\n placement?: Placement,\n}): Offsets {\n const basePlacement = placement ? getBasePlacement(placement) : null;\n const variation = placement ? getVariation(placement) : null;\n const commonX = reference.x + reference.width / 2 - element.width / 2;\n const commonY = reference.y + reference.height / 2 - element.height / 2;\n\n let offsets;\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height,\n };\n break;\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height,\n };\n break;\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY,\n };\n break;\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY,\n };\n break;\n default:\n offsets = {\n x: reference.x,\n y: reference.y,\n };\n }\n\n const mainAxis = basePlacement\n ? getMainAxisFromPlacement(basePlacement)\n : null;\n\n if (mainAxis != null) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] =\n offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] =\n offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n\n return offsets;\n}\n","// @flow\nimport type { SideObject } from '../types';\n\nexport default function getFreshSideObject(): SideObject {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n };\n}\n","// @flow\nimport type { SideObject } from '../types';\nimport getFreshSideObject from './getFreshSideObject';\n\nexport default function mergePaddingObject(\n paddingObject: $Shape<SideObject>\n): SideObject {\n return {\n ...getFreshSideObject(),\n ...paddingObject,\n };\n}\n","// @flow\n\nexport default function expandToHashMap<\n T: number | string | boolean,\n K: string\n>(value: T, keys: Array<K>): { [key: string]: T } {\n return keys.reduce((hashMap, key) => {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\n","// @flow\nimport type { State, SideObject, Padding, PositioningStrategy } from '../types';\nimport type { Placement, Boundary, RootBoundary, Context } from '../enums';\nimport getClippingRect from '../dom-utils/getClippingRect';\nimport getDocumentElement from '../dom-utils/getDocumentElement';\nimport getBoundingClientRect from '../dom-utils/getBoundingClientRect';\nimport computeOffsets from './computeOffsets';\nimport rectToClientRect from './rectToClientRect';\nimport {\n clippingParents,\n reference,\n popper,\n bottom,\n top,\n right,\n basePlacements,\n viewport,\n} from '../enums';\nimport { isElement } from '../dom-utils/instanceOf';\nimport mergePaddingObject from './mergePaddingObject';\nimport expandToHashMap from './expandToHashMap';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n placement: Placement,\n strategy: PositioningStrategy,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n elementContext: Context,\n altBoundary: boolean,\n padding: Padding,\n};\n\nexport default function detectOverflow(\n state: State,\n options: $Shape<Options> = {}\n): SideObject {\n const {\n placement = state.placement,\n strategy = state.strategy,\n boundary = clippingParents,\n rootBoundary = viewport,\n elementContext = popper,\n altBoundary = false,\n padding = 0,\n } = options;\n\n const paddingObject = mergePaddingObject(\n typeof padding !== 'number'\n ? padding\n : expandToHashMap(padding, basePlacements)\n );\n\n const altContext = elementContext === popper ? reference : popper;\n\n const popperRect = state.rects.popper;\n const element = state.elements[altBoundary ? altContext : elementContext];\n\n const clippingClientRect = getClippingRect(\n isElement(element)\n ? element\n : element.contextElement || getDocumentElement(state.elements.popper),\n boundary,\n rootBoundary,\n strategy\n );\n\n const referenceClientRect = getBoundingClientRect(state.elements.reference);\n\n const popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement,\n });\n\n const popperClientRect = rectToClientRect({\n ...popperRect,\n ...popperOffsets,\n });\n\n const elementClientRect =\n elementContext === popper ? popperClientRect : referenceClientRect;\n\n // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n const overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom:\n elementClientRect.bottom -\n clippingClientRect.bottom +\n paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right:\n elementClientRect.right - clippingClientRect.right + paddingObject.right,\n };\n\n const offsetData = state.modifiersData.offset;\n\n // Offsets can be applied only to the popper element\n if (elementContext === popper && offsetData) {\n const offset = offsetData[placement];\n\n Object.keys(overflowOffsets).forEach((key) => {\n const multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n const axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}\n","// @flow\nimport type {\n State,\n OptionsGeneric,\n Modifier,\n Instance,\n VirtualElement,\n} from './types';\nimport getCompositeRect from './dom-utils/getCompositeRect';\nimport getLayoutRect from './dom-utils/getLayoutRect';\nimport listScrollParents from './dom-utils/listScrollParents';\nimport getOffsetParent from './dom-utils/getOffsetParent';\nimport getComputedStyle from './dom-utils/getComputedStyle';\nimport orderModifiers from './utils/orderModifiers';\nimport debounce from './utils/debounce';\nimport validateModifiers from './utils/validateModifiers';\nimport uniqueBy from './utils/uniqueBy';\nimport getBasePlacement from './utils/getBasePlacement';\nimport mergeByName from './utils/mergeByName';\nimport detectOverflow from './utils/detectOverflow';\nimport { isElement } from './dom-utils/instanceOf';\nimport { auto } from './enums';\n\nconst INVALID_ELEMENT_ERROR =\n 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nconst INFINITE_LOOP_ERROR =\n 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\n\nconst DEFAULT_OPTIONS: OptionsGeneric<any> = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute',\n};\n\ntype PopperGeneratorArgs = {\n defaultModifiers?: Array<Modifier<any, any>>,\n defaultOptions?: $Shape<OptionsGeneric<any>>,\n};\n\nfunction areValidElements(...args: Array<any>): boolean {\n return !args.some(\n (element) =>\n !(element && typeof element.getBoundingClientRect === 'function')\n );\n}\n\nexport function popperGenerator(generatorOptions: PopperGeneratorArgs = {}) {\n const {\n defaultModifiers = [],\n defaultOptions = DEFAULT_OPTIONS,\n } = generatorOptions;\n\n return function createPopper<TModifier: $Shape<Modifier<any, any>>>(\n reference: Element | VirtualElement,\n popper: HTMLElement,\n options: $Shape<OptionsGeneric<TModifier>> = defaultOptions\n ): Instance {\n let state: $Shape<State> = {\n placement: 'bottom',\n orderedModifiers: [],\n options: { ...DEFAULT_OPTIONS, ...defaultOptions },\n modifiersData: {},\n elements: {\n reference,\n popper,\n },\n attributes: {},\n styles: {},\n };\n\n let effectCleanupFns: Array<() => void> = [];\n let isDestroyed = false;\n\n const instance = {\n state,\n setOptions(setOptionsAction) {\n const options =\n typeof setOptionsAction === 'function'\n ? setOptionsAction(state.options)\n : setOptionsAction;\n\n cleanupModifierEffects();\n\n state.options = {\n // $FlowFixMe[exponential-spread]\n ...defaultOptions,\n ...state.options,\n ...options,\n };\n\n state.scrollParents = {\n reference: isElement(reference)\n ? listScrollParents(reference)\n : reference.contextElement\n ? listScrollParents(reference.contextElement)\n : [],\n popper: listScrollParents(popper),\n };\n\n // Orders the modifiers based on their dependencies and `phase`\n // properties\n const orderedModifiers = orderModifiers(\n mergeByName([...defaultModifiers, ...state.options.modifiers])\n );\n\n // Strip out disabled modifiers\n state.orderedModifiers = orderedModifiers.filter((m) => m.enabled);\n\n // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n if (__DEV__) {\n const modifiers = uniqueBy(\n [...orderedModifiers, ...state.options.modifiers],\n ({ name }) => name\n );\n\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n const flipModifier = state.orderedModifiers.find(\n ({ name }) => name === 'flip'\n );\n\n if (!flipModifier) {\n console.error(\n [\n 'Popper: \"auto\" placements require the \"flip\" modifier be',\n 'present and enabled to work.',\n ].join(' ')\n );\n }\n }\n\n const {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = getComputedStyle(popper);\n\n // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n if (\n [marginTop, marginRight, marginBottom, marginLeft].some((margin) =>\n parseFloat(margin)\n )\n ) {\n console.warn(\n [\n 'Popper: CSS \"margin\" styles cannot be used to apply padding',\n 'between the popper and its reference element or boundary.',\n 'To replicate margin, use the `offset` modifier, as well as',\n 'the `padding` option in the `preventOverflow` and `flip`',\n 'modifiers.',\n ].join(' ')\n );\n }\n }\n\n runModifierEffects();\n\n return instance.update();\n },\n\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n const { reference, popper } = state.elements;\n\n // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n if (!areValidElements(reference, popper)) {\n if (__DEV__) {\n console.error(INVALID_ELEMENT_ERROR);\n }\n return;\n }\n\n // Store the reference and popper rects to be read by modifiers\n state.rects = {\n reference: getCompositeRect(\n reference,\n getOffsetParent(popper),\n state.options.strategy === 'fixed'\n ),\n popper: getLayoutRect(popper),\n };\n\n // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n state.reset = false;\n\n state.placement = state.options.placement;\n\n // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n state.orderedModifiers.forEach(\n (modifier) =>\n (state.modifiersData[modifier.name] = {\n ...modifier.data,\n })\n );\n\n let __debug_loops__ = 0;\n for (let index = 0; index < state.orderedModifiers.length; index++) {\n if (__DEV__) {\n __debug_loops__ += 1;\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n const { fn, options = {}, name } = state.orderedModifiers[index];\n\n if (typeof fn === 'function') {\n state = fn({ state, options, name, instance }) || state;\n }\n }\n },\n\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce<$Shape<State>>(\n () =>\n new Promise<$Shape<State>>((resolve) => {\n instance.forceUpdate();\n resolve(state);\n })\n ),\n\n destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n },\n };\n\n if (!areValidElements(reference, popper)) {\n if (__DEV__) {\n console.error(INVALID_ELEMENT_ERROR);\n }\n return instance;\n }\n\n instance.setOptions(options).then((state) => {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n });\n\n // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n function runModifierEffects() {\n state.orderedModifiers.forEach(({ name, options = {}, effect }) => {\n if (typeof effect === 'function') {\n const cleanupFn = effect({ state, name, instance, options });\n const noopFn = () => {};\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach((fn) => fn());\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\n\nexport const createPopper = popperGenerator();\n\n// eslint-disable-next-line import/no-unused-modules\nexport { detectOverflow };\n","// @flow\nimport type { ModifierArguments, Modifier } from '../types';\nimport getWindow from '../dom-utils/getWindow';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n scroll: boolean,\n resize: boolean,\n};\n\nconst passive = { passive: true };\n\nfunction effect({ state, instance, options }: ModifierArguments<Options>) {\n const { scroll = true, resize = true } = options;\n\n const window = getWindow(state.elements.popper);\n const scrollParents = [\n ...state.scrollParents.reference,\n ...state.scrollParents.popper,\n ];\n\n if (scroll) {\n scrollParents.forEach(scrollParent => {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return () => {\n if (scroll) {\n scrollParents.forEach(scrollParent => {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type EventListenersModifier = Modifier<'eventListeners', Options>;\nexport default ({\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: () => {},\n effect,\n data: {},\n}: EventListenersModifier);\n","// @flow\nimport type { ModifierArguments, Modifier } from '../types';\nimport computeOffsets from '../utils/computeOffsets';\n\nfunction popperOffsets({ state, name }: ModifierArguments<{||}>) {\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement,\n });\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type PopperOffsetsModifier = Modifier<'popperOffsets', {||}>;\nexport default ({\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {},\n}: PopperOffsetsModifier);\n","// @flow\nimport type {\n PositioningStrategy,\n Offsets,\n Modifier,\n ModifierArguments,\n Rect,\n Window,\n} from '../types';\nimport {\n type BasePlacement,\n type Variation,\n top,\n left,\n right,\n bottom,\n end,\n} from '../enums';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport getWindow from '../dom-utils/getWindow';\nimport getDocumentElement from '../dom-utils/getDocumentElement';\nimport getComputedStyle from '../dom-utils/getComputedStyle';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getVariation from '../utils/getVariation';\nimport { round } from '../utils/math';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type RoundOffsets = (\n offsets: $Shape<{ x: number, y: number, centerOffset: number }>\n) => Offsets;\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n gpuAcceleration: boolean,\n adaptive: boolean,\n roundOffsets?: boolean | RoundOffsets,\n};\n\nconst unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n};\n\n// Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\nfunction roundOffsetsByDPR({ x, y }): Offsets {\n const win: Window = window;\n const dpr = win.devicePixelRatio || 1;\n\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0,\n };\n}\n\nexport function mapToStyles({\n popper,\n popperRect,\n placement,\n variation,\n offsets,\n position,\n gpuAcceleration,\n adaptive,\n roundOffsets,\n isFixed,\n}: {\n popper: HTMLElement,\n popperRect: Rect,\n placement: BasePlacement,\n variation: ?Variation,\n offsets: $Shape<{ x: number, y: number, centerOffset: number }>,\n position: PositioningStrategy,\n gpuAcceleration: boolean,\n adaptive: boolean,\n roundOffsets: boolean | RoundOffsets,\n isFixed: boolean,\n}) {\n let { x = 0, y = 0 } = offsets;\n\n ({ x, y } =\n typeof roundOffsets === 'function'\n ? roundOffsets({ x, y })\n : { x, y });\n\n const hasX = offsets.hasOwnProperty('x');\n const hasY = offsets.hasOwnProperty('y');\n\n let sideX: string = left;\n let sideY: string = top;\n\n const win: Window = window;\n\n if (adaptive) {\n let offsetParent = getOffsetParent(popper);\n let heightProp = 'clientHeight';\n let widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (\n getComputedStyle(offsetParent).position !== 'static' &&\n position === 'absolute'\n ) {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n }\n\n // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n offsetParent = (offsetParent: Element);\n\n if (\n placement === top ||\n ((placement === left || placement === right) && variation === end)\n ) {\n sideY = bottom;\n const offsetY =\n isFixed && offsetParent === win && win.visualViewport\n ? win.visualViewport.height\n : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (\n placement === left ||\n ((placement === top || placement === bottom) && variation === end)\n ) {\n sideX = right;\n const offsetX =\n isFixed && offsetParent === win && win.visualViewport\n ? win.visualViewport.width\n : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n const commonStyles = {\n position,\n ...(adaptive && unsetSides),\n };\n\n ({ x, y } =\n roundOffsets === true\n ? roundOffsetsByDPR({ x, y })\n : { x, y });\n\n if (gpuAcceleration) {\n return {\n ...commonStyles,\n [sideY]: hasY ? '0' : '',\n [sideX]: hasX ? '0' : '',\n // Layer acceleration can disable subpixel rendering which causes slightly\n // blurry text on low PPI displays, so we want to use 2D transforms\n // instead\n transform:\n (win.devicePixelRatio || 1) <= 1\n ? `translate(${x}px, ${y}px)`\n : `translate3d(${x}px, ${y}px, 0)`,\n };\n }\n\n return {\n ...commonStyles,\n [sideY]: hasY ? `${y}px` : '',\n [sideX]: hasX ? `${x}px` : '',\n transform: '',\n };\n}\n\nfunction computeStyles({ state, options }: ModifierArguments<Options>) {\n const {\n gpuAcceleration = true,\n adaptive = true,\n // defaults to use builtin `roundOffsetsByDPR`\n roundOffsets = true,\n } = options;\n\n if (__DEV__) {\n const transitionProperty =\n getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (\n adaptive &&\n ['transform', 'top', 'right', 'bottom', 'left'].some(\n (property) => transitionProperty.indexOf(property) >= 0\n )\n ) {\n console.warn(\n [\n 'Popper: Detected CSS transitions on at least one of the following',\n 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".',\n '\\n\\n',\n 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow',\n 'for smooth transitions, or remove these properties from the CSS',\n 'transition declaration on the popper element if only transitioning',\n 'opacity or background-color for example.',\n '\\n\\n',\n 'We recommend using the popper element as a wrapper around an inner',\n 'element that can have any CSS property transitioned for animations.',\n ].join(' ')\n );\n }\n }\n\n const commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration,\n isFixed: state.options.strategy === 'fixed',\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = {\n ...state.styles.popper,\n ...mapToStyles({\n ...commonStyles,\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive,\n roundOffsets,\n }),\n };\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = {\n ...state.styles.arrow,\n ...mapToStyles({\n ...commonStyles,\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets,\n }),\n };\n }\n\n state.attributes.popper = {\n ...state.attributes.popper,\n 'data-popper-placement': state.placement,\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ComputeStylesModifier = Modifier<'computeStyles', Options>;\nexport default ({\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {},\n}: ComputeStylesModifier);\n","// @flow\nimport type { Modifier, ModifierArguments } from '../types';\nimport getNodeName from '../dom-utils/getNodeName';\nimport { isHTMLElement } from '../dom-utils/instanceOf';\n\n// This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles({ state }: ModifierArguments<{||}>) {\n Object.keys(state.elements).forEach((name) => {\n const style = state.styles[name] || {};\n\n const attributes = state.attributes[name] || {};\n const element = state.elements[name];\n\n // arrow is optional + virtual elements\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n Object.assign(element.style, style);\n\n Object.keys(attributes).forEach((name) => {\n const value = attributes[name];\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect({ state }: ModifierArguments<{||}>) {\n const initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0',\n },\n arrow: {\n position: 'absolute',\n },\n reference: {},\n };\n\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return () => {\n Object.keys(state.elements).forEach((name) => {\n const element = state.elements[name];\n const attributes = state.attributes[name] || {};\n\n const styleProperties = Object.keys(\n state.styles.hasOwnProperty(name)\n ? state.styles[name]\n : initialStyles[name]\n );\n\n // Set all values to an empty string to unset them\n const style = styleProperties.reduce((style, property) => {\n style[property] = '';\n return style;\n }, {});\n\n // arrow is optional + virtual elements\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n\n Object.keys(attributes).forEach((attribute) => {\n element.removeAttribute(attribute);\n });\n });\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ApplyStylesModifier = Modifier<'applyStyles', {||}>;\nexport default ({\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect,\n requires: ['computeStyles'],\n}: ApplyStylesModifier);\n","// @flow\nimport type { Placement } from '../enums';\nimport type { ModifierArguments, Modifier, Rect, Offsets } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport { top, left, right, placements } from '../enums';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type OffsetsFunction = ({\n popper: Rect,\n reference: Rect,\n placement: Placement,\n}) => [?number, ?number];\n\ntype Offset = OffsetsFunction | [?number, ?number];\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n offset: Offset,\n};\n\nexport function distanceAndSkiddingToXY(\n placement: Placement,\n rects: { popper: Rect, reference: Rect },\n offset: Offset\n): Offsets {\n const basePlacement = getBasePlacement(placement);\n const invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n let [skidding, distance] =\n typeof offset === 'function'\n ? offset({\n ...rects,\n placement,\n })\n : offset;\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n\n return [left, right].indexOf(basePlacement) >= 0\n ? { x: distance, y: skidding }\n : { x: skidding, y: distance };\n}\n\nfunction offset({ state, options, name }: ModifierArguments<Options>) {\n const { offset = [0, 0] } = options;\n\n const data = placements.reduce((acc, placement) => {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n\n const { x, y } = data[state.placement];\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type OffsetModifier = Modifier<'offset', Options>;\nexport default ({\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset,\n}: OffsetModifier);\n","// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n\nexport default function getOppositePlacement(placement: Placement): Placement {\n return (placement.replace(\n /left|right|bottom|top/g,\n matched => hash[matched]\n ): any);\n}\n","// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { start: 'end', end: 'start' };\n\nexport default function getOppositeVariationPlacement(\n placement: Placement\n): Placement {\n return (placement.replace(/start|end/g, matched => hash[matched]): any);\n}\n","// @flow\nimport type { State, Padding } from '../types';\nimport type {\n Placement,\n ComputedPlacement,\n Boundary,\n RootBoundary,\n} from '../enums';\nimport getVariation from './getVariation';\nimport {\n variationPlacements,\n basePlacements,\n placements as allPlacements,\n} from '../enums';\nimport detectOverflow from './detectOverflow';\nimport getBasePlacement from './getBasePlacement';\n\ntype Options = {\n placement: Placement,\n padding: Padding,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n flipVariations: boolean,\n allowedAutoPlacements?: Array<Placement>,\n};\n\ntype OverflowsMap = { [ComputedPlacement]: number };\n\nexport default function computeAutoPlacement(\n state: $Shape<State>,\n options: Options = {}\n): Array<ComputedPlacement> {\n const {\n placement,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements = allPlacements,\n } = options;\n\n const variation = getVariation(placement);\n\n const placements = variation\n ? flipVariations\n ? variationPlacements\n : variationPlacements.filter(\n (placement) => getVariation(placement) === variation\n )\n : basePlacements;\n\n let allowedPlacements = placements.filter(\n (placement) => allowedAutoPlacements.indexOf(placement) >= 0\n );\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (__DEV__) {\n console.error(\n [\n 'Popper: The `allowedAutoPlacements` option did not allow any',\n 'placements. Ensure the `placement` option matches the variation',\n 'of the allowed placements.',\n 'For example, \"auto\" cannot be used to allow \"bottom-start\".',\n 'Use \"auto-start\" instead.',\n ].join(' ')\n );\n }\n }\n\n // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n const overflows: OverflowsMap = allowedPlacements.reduce((acc, placement) => {\n acc[placement] = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n padding,\n })[getBasePlacement(placement)];\n\n return acc;\n }, {});\n\n return Object.keys(overflows).sort((a, b) => overflows[a] - overflows[b]);\n}\n","// @flow\nimport type { Placement, Boundary, RootBoundary } from '../enums';\nimport type { ModifierArguments, Modifier, Padding } from '../types';\nimport getOppositePlacement from '../utils/getOppositePlacement';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getOppositeVariationPlacement from '../utils/getOppositeVariationPlacement';\nimport detectOverflow from '../utils/detectOverflow';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\nimport { bottom, top, start, right, left, auto } from '../enums';\nimport getVariation from '../utils/getVariation';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n mainAxis: boolean,\n altAxis: boolean,\n fallbackPlacements: Array<Placement>,\n padding: Padding,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n altBoundary: boolean,\n flipVariations: boolean,\n allowedAutoPlacements: Array<Placement>,\n};\n\nfunction getExpandedFallbackPlacements(placement: Placement): Array<Placement> {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n const oppositePlacement = getOppositePlacement(placement);\n\n return [\n getOppositeVariationPlacement(placement),\n oppositePlacement,\n getOppositeVariationPlacement(oppositePlacement),\n ];\n}\n\nfunction flip({ state, options, name }: ModifierArguments<Options>) {\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n const {\n mainAxis: checkMainAxis = true,\n altAxis: checkAltAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n padding,\n boundary,\n rootBoundary,\n altBoundary,\n flipVariations = true,\n allowedAutoPlacements,\n } = options;\n\n const preferredPlacement = state.options.placement;\n const basePlacement = getBasePlacement(preferredPlacement);\n const isBasePlacement = basePlacement === preferredPlacement;\n\n const fallbackPlacements =\n specifiedFallbackPlacements ||\n (isBasePlacement || !flipVariations\n ? [getOppositePlacement(preferredPlacement)]\n : getExpandedFallbackPlacements(preferredPlacement));\n\n const placements = [preferredPlacement, ...fallbackPlacements].reduce(\n (acc, placement) => {\n return acc.concat(\n getBasePlacement(placement) === auto\n ? computeAutoPlacement(state, {\n placement,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements,\n })\n : placement\n );\n },\n []\n );\n\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n\n const checksMap = new Map();\n let makeFallbackChecks = true;\n let firstFittingPlacement = placements[0];\n\n for (let i = 0; i < placements.length; i++) {\n const placement = placements[i];\n const basePlacement = getBasePlacement(placement);\n const isStartVariation = getVariation(placement) === start;\n const isVertical = [top, bottom].indexOf(basePlacement) >= 0;\n const len = isVertical ? 'width' : 'height';\n\n const overflow = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n altBoundary,\n padding,\n });\n\n let mainVariationSide: any = isVertical\n ? isStartVariation\n ? right\n : left\n : isStartVariation\n ? bottom\n : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n const altVariationSide: any = getOppositePlacement(mainVariationSide);\n\n const checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(\n overflow[mainVariationSide] <= 0,\n overflow[altVariationSide] <= 0\n );\n }\n\n if (checks.every((check) => check)) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n const numberOfChecks = flipVariations ? 3 : 1;\n\n for (let i = numberOfChecks; i > 0; i--) {\n const fittingPlacement = placements.find((placement) => {\n const checks = checksMap.get(placement);\n if (checks) {\n return checks.slice(0, i).every((check) => check);\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n break;\n }\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type FlipModifier = Modifier<'flip', Options>;\nexport default ({\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: { _skip: false },\n}: FlipModifier);\n","// @flow\n\nexport default function getAltAxis(axis: 'x' | 'y'): 'x' | 'y' {\n return axis === 'x' ? 'y' : 'x';\n}\n","// @flow\nimport { max as mathMax, min as mathMin } from './math';\n\nexport function within(min: number, value: number, max: number): number {\n return mathMax(min, mathMin(value, max));\n}\n\nexport function withinMaxClamp(min: number, value: number, max: number) {\n const v = within(min, value, max);\n return v > max ? max : v;\n}\n","// @flow\nimport { top, left, right, bottom, start } from '../enums';\nimport type { Placement, Boundary, RootBoundary } from '../enums';\nimport type { Rect, ModifierArguments, Modifier, Padding } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getMainAxisFromPlacement from '../utils/getMainAxisFromPlacement';\nimport getAltAxis from '../utils/getAltAxis';\nimport { within, withinMaxClamp } from '../utils/within';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport detectOverflow from '../utils/detectOverflow';\nimport getVariation from '../utils/getVariation';\nimport getFreshSideObject from '../utils/getFreshSideObject';\nimport { min as mathMin, max as mathMax } from '../utils/math';\n\ntype TetherOffset =\n | (({\n popper: Rect,\n reference: Rect,\n placement: Placement,\n }) => number | { mainAxis: number, altAxis: number })\n | number\n | { mainAxis: number, altAxis: number };\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n /* Prevents boundaries overflow on the main axis */\n mainAxis: boolean,\n /* Prevents boundaries overflow on the alternate axis */\n altAxis: boolean,\n /* The area to check the popper is overflowing in */\n boundary: Boundary,\n /* If the popper is not overflowing the main area, fallback to this one */\n rootBoundary: RootBoundary,\n /* Use the reference's \"clippingParents\" boundary context */\n altBoundary: boolean,\n /**\n * Allows the popper to overflow from its boundaries to keep it near its\n * reference element\n */\n tether: boolean,\n /* Offsets when the `tether` option should activate */\n tetherOffset: TetherOffset,\n /* Sets a padding to the provided boundary */\n padding: Padding,\n};\n\nfunction preventOverflow({ state, options, name }: ModifierArguments<Options>) {\n const {\n mainAxis: checkMainAxis = true,\n altAxis: checkAltAxis = false,\n boundary,\n rootBoundary,\n altBoundary,\n padding,\n tether = true,\n tetherOffset = 0,\n } = options;\n\n const overflow = detectOverflow(state, {\n boundary,\n rootBoundary,\n padding,\n altBoundary,\n });\n const basePlacement = getBasePlacement(state.placement);\n const variation = getVariation(state.placement);\n const isBasePlacement = !variation;\n const mainAxis = getMainAxisFromPlacement(basePlacement);\n const altAxis = getAltAxis(mainAxis);\n const popperOffsets = state.modifiersData.popperOffsets;\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n const tetherOffsetValue =\n typeof tetherOffset === 'function'\n ? tetherOffset({\n ...state.rects,\n placement: state.placement,\n })\n : tetherOffset;\n const normalizedTetherOffsetValue =\n typeof tetherOffsetValue === 'number'\n ? { mainAxis: tetherOffsetValue, altAxis: tetherOffsetValue }\n : { mainAxis: 0, altAxis: 0, ...tetherOffsetValue };\n const offsetModifierState = state.modifiersData.offset\n ? state.modifiersData.offset[state.placement]\n : null;\n\n const data = { x: 0, y: 0 };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n const mainSide = mainAxis === 'y' ? top : left;\n const altSide = mainAxis === 'y' ? bottom : right;\n const len = mainAxis === 'y' ? 'height' : 'width';\n const offset = popperOffsets[mainAxis];\n\n const min = offset + overflow[mainSide];\n const max = offset - overflow[altSide];\n\n const additive = tether ? -popperRect[len] / 2 : 0;\n\n const minLen = variation === start ? referenceRect[len] : popperRect[len];\n const maxLen = variation === start ? -popperRect[len] : -referenceRect[len];\n\n // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n const arrowElement = state.elements.arrow;\n const arrowRect =\n tether && arrowElement\n ? getLayoutRect(arrowElement)\n : { width: 0, height: 0 };\n const arrowPaddingObject = state.modifiersData['arrow#persistent']\n ? state.modifiersData['arrow#persistent'].padding\n : getFreshSideObject();\n const arrowPaddingMin = arrowPaddingObject[mainSide];\n const arrowPaddingMax = arrowPaddingObject[altSide];\n\n // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n const arrowLen = within(0, referenceRect[len], arrowRect[len]);\n\n const minOffset = isBasePlacement\n ? referenceRect[len] / 2 -\n additive -\n arrowLen -\n arrowPaddingMin -\n normalizedTetherOffsetValue.mainAxis\n : minLen -\n arrowLen -\n arrowPaddingMin -\n normalizedTetherOffsetValue.mainAxis;\n const maxOffset = isBasePlacement\n ? -referenceRect[len] / 2 +\n additive +\n arrowLen +\n arrowPaddingMax +\n normalizedTetherOffsetValue.mainAxis\n : maxLen +\n arrowLen +\n arrowPaddingMax +\n normalizedTetherOffsetValue.mainAxis;\n\n const arrowOffsetParent =\n state.elements.arrow && getOffsetParent(state.elements.arrow);\n const clientOffset = arrowOffsetParent\n ? mainAxis === 'y'\n ? arrowOffsetParent.clientTop || 0\n : arrowOffsetParent.clientLeft || 0\n : 0;\n\n const offsetModifierValue = offsetModifierState?.[mainAxis] ?? 0;\n const tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n const tetherMax = offset + maxOffset - offsetModifierValue;\n\n const preventedOffset = within(\n tether ? mathMin(min, tetherMin) : min,\n offset,\n tether ? mathMax(max, tetherMax) : max\n );\n\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n const mainSide = mainAxis === 'x' ? top : left;\n const altSide = mainAxis === 'x' ? bottom : right;\n const offset = popperOffsets[altAxis];\n\n const len = altAxis === 'y' ? 'height' : 'width';\n\n const min = offset + overflow[mainSide];\n const max = offset - overflow[altSide];\n\n const isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n const offsetModifierValue = offsetModifierState?.[altAxis] ?? 0;\n const tetherMin = isOriginSide\n ? min\n : offset -\n referenceRect[len] -\n popperRect[len] -\n offsetModifierValue +\n normalizedTetherOffsetValue.altAxis;\n const tetherMax = isOriginSide\n ? offset +\n referenceRect[len] +\n popperRect[len] -\n offsetModifierValue -\n normalizedTetherOffsetValue.altAxis\n : max;\n\n const preventedOffset =\n tether && isOriginSide\n ? withinMaxClamp(tetherMin, offset, tetherMax)\n : within(tether ? tetherMin : min, offset, tether ? tetherMax : max);\n\n popperOffsets[altAxis] = preventedOffset;\n data[altAxis] = preventedOffset - offset;\n }\n\n state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type PreventOverflowModifier = Modifier<'preventOverflow', Options>;\nexport default ({\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset'],\n}: PreventOverflowModifier);\n","// @flow\nimport type { Modifier, ModifierArguments, Padding, Rect } from '../types';\nimport type { Placement } from '../enums';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport contains from '../dom-utils/contains';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport getMainAxisFromPlacement from '../utils/getMainAxisFromPlacement';\nimport { within } from '../utils/within';\nimport mergePaddingObject from '../utils/mergePaddingObject';\nimport expandToHashMap from '../utils/expandToHashMap';\nimport { left, right, basePlacements, top, bottom } from '../enums';\nimport { isHTMLElement } from '../dom-utils/instanceOf';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n element: HTMLElement | string | null,\n padding:\n | Padding\n | (({|\n popper: Rect,\n reference: Rect,\n placement: Placement,\n |}) => Padding),\n};\n\nconst toPaddingObject = (padding, state) => {\n padding =\n typeof padding === 'function'\n ? padding({ ...state.rects, placement: state.placement })\n : padding;\n\n return mergePaddingObject(\n typeof padding !== 'number'\n ? padding\n : expandToHashMap(padding, basePlacements)\n );\n};\n\nfunction arrow({ state, name, options }: ModifierArguments<Options>) {\n const arrowElement = state.elements.arrow;\n const popperOffsets = state.modifiersData.popperOffsets;\n const basePlacement = getBasePlacement(state.placement);\n const axis = getMainAxisFromPlacement(basePlacement);\n const isVertical = [left, right].indexOf(basePlacement) >= 0;\n const len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n const paddingObject = toPaddingObject(options.padding, state);\n const arrowRect = getLayoutRect(arrowElement);\n const minProp = axis === 'y' ? top : left;\n const maxProp = axis === 'y' ? bottom : right;\n\n const endDiff =\n state.rects.reference[len] +\n state.rects.reference[axis] -\n popperOffsets[axis] -\n state.rects.popper[len];\n const startDiff = popperOffsets[axis] - state.rects.reference[axis];\n\n const arrowOffsetParent = getOffsetParent(arrowElement);\n const clientSize = arrowOffsetParent\n ? axis === 'y'\n ? arrowOffsetParent.clientHeight || 0\n : arrowOffsetParent.clientWidth || 0\n : 0;\n\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n const min = paddingObject[minProp];\n const max = clientSize - arrowRect[len] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n const offset = within(min, center, max);\n\n // Prevents breaking syntax highlighting...\n const axisProp: string = axis;\n state.modifiersData[name] = {\n [axisProp]: offset,\n centerOffset: offset - center,\n };\n}\n\nfunction effect({ state, options }: ModifierArguments<Options>) {\n let { element: arrowElement = '[data-popper-arrow]' } = options;\n\n if (arrowElement == null) {\n return;\n }\n\n // CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (__DEV__) {\n if (!isHTMLElement(arrowElement)) {\n console.error(\n [\n 'Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).',\n 'To use an SVG arrow, wrap it in an HTMLElement that will be used as',\n 'the arrow.',\n ].join(' ')\n );\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (__DEV__) {\n console.error(\n [\n 'Popper: \"arrow\" modifier\\'s `element` must be a child of the popper',\n 'element.',\n ].join(' ')\n );\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ArrowModifier = Modifier<'arrow', Options>;\nexport default ({\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow'],\n}: ArrowModifier);\n","// @flow\nimport type {\n ModifierArguments,\n Modifier,\n Rect,\n SideObject,\n Offsets,\n} from '../types';\nimport { top, bottom, left, right } from '../enums';\nimport detectOverflow from '../utils/detectOverflow';\n\nfunction getSideOffsets(\n overflow: SideObject,\n rect: Rect,\n preventedOffsets: Offsets = { x: 0, y: 0 }\n): SideObject {\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x,\n };\n}\n\nfunction isAnySideFullyClipped(overflow: SideObject): boolean {\n return [top, right, bottom, left].some((side) => overflow[side] >= 0);\n}\n\nfunction hide({ state, name }: ModifierArguments<{||}>) {\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n const preventedOffsets = state.modifiersData.preventOverflow;\n\n const referenceOverflow = detectOverflow(state, {\n elementContext: 'reference',\n });\n const popperAltOverflow = detectOverflow(state, {\n altBoundary: true,\n });\n\n const referenceClippingOffsets = getSideOffsets(\n referenceOverflow,\n referenceRect\n );\n const popperEscapeOffsets = getSideOffsets(\n popperAltOverflow,\n popperRect,\n preventedOffsets\n );\n\n const isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n const hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n\n state.modifiersData[name] = {\n referenceClippingOffsets,\n popperEscapeOffsets,\n isReferenceHidden,\n hasPopperEscaped,\n };\n\n state.attributes.popper = {\n ...state.attributes.popper,\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped,\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type HideModifier = Modifier<'hide', {||}>;\nexport default ({\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide,\n}: HideModifier);\n","// @flow\nimport { popperGenerator, detectOverflow } from './createPopper';\n\nimport eventListeners from './modifiers/eventListeners';\nimport popperOffsets from './modifiers/popperOffsets';\nimport computeStyles from './modifiers/computeStyles';\nimport applyStyles from './modifiers/applyStyles';\n\nexport type * from './types';\n\nconst defaultModifiers = [\n eventListeners,\n popperOffsets,\n computeStyles,\n applyStyles,\n];\n\nconst createPopper = popperGenerator({ defaultModifiers });\n\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };\n","// @flow\nimport { popperGenerator, detectOverflow } from './createPopper';\n\nimport eventListeners from './modifiers/eventListeners';\nimport popperOffsets from './modifiers/popperOffsets';\nimport computeStyles from './modifiers/computeStyles';\nimport applyStyles from './modifiers/applyStyles';\nimport offset from './modifiers/offset';\nimport flip from './modifiers/flip';\nimport preventOverflow from './modifiers/preventOverflow';\nimport arrow from './modifiers/arrow';\nimport hide from './modifiers/hide';\n\nexport type * from './types';\n\nconst defaultModifiers = [\n eventListeners,\n popperOffsets,\n computeStyles,\n applyStyles,\n offset,\n flip,\n preventOverflow,\n arrow,\n hide,\n];\n\nconst createPopper = popperGenerator({ defaultModifiers });\n\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper as createPopperLite } from './popper-lite';\n// eslint-disable-next-line import/no-unused-modules\nexport * from './modifiers';\n"],"names":["getWindow","node","window","toString","ownerDocument","defaultView","isElement","OwnElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","max","Math","min","round","getUAString","uaData","navigator","userAgentData","brands","map","item","brand","version","join","userAgent","isLayoutViewport","test","getBoundingClientRect","element","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","x","left","offsetLeft","y","top","offsetTop","right","bottom","getWindowScroll","win","scrollLeft","pageXOffset","scrollTop","pageYOffset","getHTMLElementScroll","getNodeScroll","getNodeName","nodeName","toLowerCase","getDocumentElement","document","documentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","overflow","overflowX","overflowY","isElementScaled","rect","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","scroll","offsets","clientLeft","clientTop","getLayoutRect","abs","getParentNode","assignedSlot","parentNode","host","getScrollParent","indexOf","body","listScrollParents","list","scrollParent","isBody","target","concat","updatedList","isTableElement","getTrueOffsetParent","position","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","transform","perspective","contain","willChange","filter","getOffsetParent","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","order","modifiers","Map","visited","Set","result","forEach","modifier","set","name","sort","add","requires","requiresIfExists","dep","has","depModifier","get","push","orderModifiers","orderedModifiers","phase","debounce","fn","pending","Promise","resolve","then","undefined","format","str","args","p","c","replace","INVALID_MODIFIER_ERROR","MISSING_DEPENDENCY_ERROR","VALID_PROPERTIES","validateModifiers","Object","keys","value","index","self","key","console","error","String","enabled","effect","Array","isArray","s","requirement","find","mod","uniqueBy","arr","identifiers","identifier","getBasePlacement","split","mergeByName","merged","current","existing","options","data","getViewportRect","strategy","html","clientWidth","clientHeight","layoutViewport","getDocumentRect","winScroll","scrollWidth","scrollHeight","direction","contains","parent","child","rootNode","getRootNode","next","isSameNode","rectToClientRect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","len","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","state","elementContext","altBoundary","padding","altContext","popperRect","rects","elements","clippingClientRect","contextElement","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","offset","multiply","axis","INVALID_ELEMENT_ERROR","INFINITE_LOOP_ERROR","DEFAULT_OPTIONS","areValidElements","some","popperGenerator","generatorOptions","defaultModifiers","defaultOptions","createPopper","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","m","flipModifier","marginTop","marginRight","marginBottom","marginLeft","margin","parseFloat","warn","runModifierEffects","update","forceUpdate","reset","__debug_loops__","length","destroy","onFirstUpdate","cleanupFn","noopFn","passive","resize","addEventListener","removeEventListener","unsetSides","roundOffsetsByDPR","dpr","devicePixelRatio","mapToStyles","gpuAcceleration","adaptive","roundOffsets","hasX","hasOwnProperty","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","computeStyles","transitionProperty","property","arrow","applyStyles","style","assign","removeAttribute","setAttribute","initialStyles","styleProperties","attribute","distanceAndSkiddingToXY","invertDistance","skidding","distance","hash","getOppositePlacement","matched","getOppositeVariationPlacement","computeAutoPlacement","flipVariations","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","a","b","getExpandedFallbackPlacements","oppositePlacement","flip","_skip","checkMainAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","preferredPlacement","isBasePlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","numberOfChecks","fittingPlacement","slice","getAltAxis","within","mathMax","mathMin","withinMaxClamp","v","preventOverflow","tether","tetherOffset","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","isOriginSide","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","querySelector","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","eventListeners"],"mappings":"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"}
1 \ No newline at end of file \ No newline at end of file
public/script.js+1 -0
@@ -8,6 +8,7 @@ import {
8 Handlebars,8 Handlebars,
9 DiffMatchPatch,9 DiffMatchPatch,
10 SVGInject,10 SVGInject,
11 Popper,
11 initLibraryShims,12 initLibraryShims,
12 default as libs,13 default as libs,
13} from './lib.js';14} from './lib.js';
public/scripts/PromptManager.js+1 -1
@@ -1,6 +1,6 @@
1'use strict';1'use strict';
22
3import { DOMPurify } from '../lib.js';3import { DOMPurify, Popper } from '../lib.js';
44
5import { event_types, eventSource, is_send_press, main_api, substituteParams } from '../script.js';5import { event_types, eventSource, is_send_press, main_api, substituteParams } from '../script.js';
6import { is_group_generating } from './group-chats.js';6import { is_group_generating } from './group-chats.js';
public/scripts/chats.js+1 -1
@@ -1,6 +1,6 @@
1// Move chat functions here from script.js (eventually)1// Move chat functions here from script.js (eventually)
22
3import { css } from '../lib.js';3import { Popper, css } from '../lib.js';
4import {4import {
5 addCopyToCodeBlocks,5 addCopyToCodeBlocks,
6 appendMediaToMessage,6 appendMediaToMessage,
public/scripts/extensions.js+1 -1
@@ -1,4 +1,4 @@
1import { DOMPurify } from '../lib.js';1import { DOMPurify, Popper } from '../lib.js';
22
3import { eventSource, event_types, saveSettings, saveSettingsDebounced, getRequestHeaders, animation_duration } from '../script.js';3import { eventSource, event_types, saveSettings, saveSettingsDebounced, getRequestHeaders, animation_duration } from '../script.js';
4import { showLoader } from './loader.js';4import { showLoader } from './loader.js';
public/scripts/extensions/stable-diffusion/index.js+1 -0
@@ -1,3 +1,4 @@
1import { Popper } from '../../../lib.js';
1import {2import {
2 saveSettingsDebounced,3 saveSettingsDebounced,
3 systemUserName,4 systemUserName,