{“version”:3,“file”:“popper.min.js”,“sources”:,“sourcesContent”:[“/**n * Check if the given variable is a functionn * @methodn * @memberof Popper.Utilsn * @argument {Any} functionToCheck - variable to checkn * @returns {Boolean} answer to: is a function?n */nexport default function isFunction(functionToCheck) {n const getType = {};n return (n functionToCheck &&n getType.toString.call(functionToCheck) === '[object Function]'n );n}n”,“/**n * Get CSS computed property of the given elementn * @methodn * @memberof Popper.Utilsn * @argument {Eement} elementn * @argument {String} propertyn */nexport default function getStyleComputedProperty(element, property) {n if (element.nodeType !== 1) {n return [];n }n // NOTE: 1 DOM access heren const window = element.ownerDocument.defaultView;n const css = window.getComputedStyle(element, null);n return property ? css : css;n}n”,“/**n * Returns the parentNode or the host of the elementn * @methodn * @memberof Popper.Utilsn * @argument {Element} elementn * @returns {Element} parentn */nexport default function getParentNode(element) {n if (element.nodeName === 'HTML') {n return element;n }n return element.parentNode || element.host;n}n”,“import getStyleComputedProperty from './getStyleComputedProperty';nimport getParentNode from './getParentNode';nn/**n * Returns the scrolling parent of the given elementn * @methodn * @memberof Popper.Utilsn * @argument {Element} elementn * @returns {Element} scroll parentn */nexport default function getScrollParent(element) {n // Return body, `getScroll` will take care to get the correct `scrollTop` from itn if (!element) {n return document.bodyn }nn switch (element.nodeName) {n case 'HTML':n case 'BODY':n return element.ownerDocument.bodyn case '#document':n return element.bodyn }nn // Firefox want us to check `-x` and `-y` variations as welln const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {n return element;n }nn return getScrollParent(getParentNode(element));n}n”,“import isBrowser from './isBrowser';nnconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);nn/**n * Determines if the browser is Internet Explorern * @methodn * @memberof Popper.Utilsn * @param {Number} version to checkn * @returns {Boolean} isIEn */nexport default function isIE(version) {n if (version === 11) {n return isIE11;n }n if (version === 10) {n return isIE10;n }n return isIE11 || isIE10;n}n”,“import getStyleComputedProperty from './getStyleComputedProperty';nimport isIE from './isIE';n/**n * Returns the offset parent of the given elementn * @methodn * @memberof Popper.Utilsn * @argument {Element} elementn * @returns {Element} offset parentn */nexport default function getOffsetParent(element) {n if (!element) {n return document.documentElement;n }nn const noOffsetParent = isIE(10) ? document.body : null;nn // NOTE: 1 DOM access heren let offsetParent = element.offsetParent || null;n // Skip hidden elements which don't have an offsetParentn while (offsetParent === noOffsetParent && element.nextElementSibling) {n offsetParent = (element = element.nextElementSibling).offsetParent;n }nn const nodeName = offsetParent && offsetParent.nodeName;nn if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {n return element ? element.ownerDocument.documentElement : document.documentElement;n }nn // .offsetParent will return the closest TH, TD or TABLE in casen // no offsetParent is present, I hate this job…n if (n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&n getStyleComputedProperty(offsetParent, 'position') === 'static'n ) {n return getOffsetParent(offsetParent);n }nn return offsetParent;n}n”,“import getOffsetParent from './getOffsetParent';nnexport default function isOffsetContainer(element) {n const { nodeName } = element;n if (nodeName === 'BODY') {n return false;n }n return (n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === elementn );n}n”,“/**n * Finds the root node (document, shadowDOM root) of the given elementn * @methodn * @memberof Popper.Utilsn * @argument {Element} noden * @returns {Element} root noden */nexport default function getRoot(node) {n if (node.parentNode !== null) {n return getRoot(node.parentNode);n }nn return node;n}n”,“import isOffsetContainer from './isOffsetContainer';nimport getRoot from './getRoot';nimport getOffsetParent from './getOffsetParent';nn/**n * Finds the offset parent common to the two provided nodesn * @methodn * @memberof Popper.Utilsn * @argument {Element} element1n * @argument {Element} element2n * @returns {Element} common offset parentn */nexport default function findCommonOffsetParent(element1, element2) {n // This check is needed to avoid errors in case one of the elements isn't defined for any reasonn if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {n return document.documentElement;n }nn // Here we make sure to give as "start" the element that comes first in the DOMn const order =n element1.compareDocumentPosition(element2) &n Node.DOCUMENT_POSITION_FOLLOWING;n const start = order ? element1 : element2;n const end = order ? element2 : element1;nn // Get common ancestor containern const range = document.createRange();n range.setStart(start, 0);n range.setEnd(end, 0);n const { commonAncestorContainer } = range;nn // Both nodes are inside documentn if (n (element1 !== commonAncestorContainer &&n element2 !== commonAncestorContainer) ||n start.contains(end)n ) {n if (isOffsetContainer(commonAncestorContainer)) {n return commonAncestorContainer;n }nn return getOffsetParent(commonAncestorContainer);n }nn // one of the nodes is inside shadowDOM, find which onen const element1root = getRoot(element1);n if (element1root.host) {n return findCommonOffsetParent(element1root.host, element2);n } else {n return findCommonOffsetParent(element1, getRoot(element2).host);n }n}n”,“/**n * Gets the scroll value of the given element in the given side (top and left)n * @methodn * @memberof Popper.Utilsn * @argument {Element} elementn * @argument {String} side `top` or `left`n * @returns {number} amount of scrolled pixelsn */nexport default function getScroll(element, side = 'top') {n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';n const nodeName = element.nodeName;nn if (nodeName === 'BODY' || nodeName === 'HTML') {n const html = element.ownerDocument.documentElement;n const scrollingElement = element.ownerDocument.scrollingElement || html;n return scrollingElement;n }nn return element;n}n”,“import getScroll from './getScroll';nn/*n * Sum or subtract the element scroll values (left and top) from a given rect objectn * @methodn * @memberof Popper.Utilsn * @param {Object} rect - Rect object you want to changen * @param {HTMLElement} element - The element from the function reads the scroll valuesn * @param {Boolean} subtract - set to true if you want to subtract the scroll valuesn * @return {Object} rect - The modifier rect objectn */nexport default function includeScroll(rect, element, subtract = false) {n const scrollTop = getScroll(element, 'top');n const scrollLeft = getScroll(element, 'left');n const modifier = subtract ? -1 : 1;n rect.top += scrollTop * modifier;n rect.bottom += scrollTop * modifier;n rect.left += scrollLeft * modifier;n rect.right += scrollLeft * modifier;n return rect;n}n”,“/*n * Helper to detect borders of a given elementn * @methodn * @memberof Popper.Utilsn * @param {CSSStyleDeclaration} stylesn * Result of `getStyleComputedProperty` on the given elementn * @param {String} axis - `x` or `y`n * @return {number} borders - The borders size of the given axisn */nnexport default function getBordersSize(styles, axis) {n const sideA = axis === 'x' ? 'Left' : 'Top';n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';nn return (n parseFloat(styles, 10) +n parseFloat(styles, 10)n );n}n”,“import isIE from './isIE';nnfunction getSize(axis, body, html, computedStyle) {n return Math.max(n body,n body,n html,n html,n html,n isIE(10)n ? (parseInt(html) + n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))n : 0 n );n}nnexport default function getWindowSizes(document) {n const body = document.body;n const html = document.documentElement;n const computedStyle = isIE(10) && getComputedStyle(html);nn return {n height: getSize('Height', body, html, computedStyle),n width: getSize('Width', body, html, computedStyle),n };n}n”,“/**n * Given element offsets, generate an output similar to getBoundingClientRectn * @methodn * @memberof Popper.Utilsn * @argument {Object} offsetsn * @returns {Object} ClientRect like outputn */nexport default function getClientRect(offsets) {n return {n …offsets,n right: offsets.left + offsets.width,n bottom: offsets.top + offsets.height,n };n}n”,“import getStyleComputedProperty from './getStyleComputedProperty';nimport getBordersSize from './getBordersSize';nimport getWindowSizes from './getWindowSizes';nimport getScroll from './getScroll';nimport getClientRect from './getClientRect';nimport isIE from './isIE';nn/**n * Get bounding client rect of given elementn * @methodn * @memberof Popper.Utilsn * @param {HTMLElement} elementn * @return {Object} client rectn */nexport default function getBoundingClientRect(element) {n let rect = {};nn // IE10 10 FIX: Please, don't ask, the element isn'tn // considered in DOM in some circumstances…n // This isn't reproducible in IE10 compatibility mode of IE11n try {n if (isIE(10)) {n rect = element.getBoundingClientRect();n const scrollTop = getScroll(element, 'top');n const scrollLeft = getScroll(element, 'left');n rect.top += scrollTop;n rect.left += scrollLeft;n rect.bottom += scrollTop;n rect.right += scrollLeft;n }n else {n rect = element.getBoundingClientRect();n }n }n catch(e){}nn const result = {n left: rect.left,n top: rect.top,n width: rect.right - rect.left,n height: rect.bottom - rect.top,n };nn // subtract scrollbar size from sizesn const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};n const width =n sizes.width || element.clientWidth || result.right - result.left;n const height =n sizes.height || element.clientHeight || result.bottom - result.top;nn let horizScrollbar = element.offsetWidth - width;n let vertScrollbar = element.offsetHeight - height;nn // if an hypothetical scrollbar is detected, we must be sure it's not a `border`n // we make this check conditional for performance reasonsn if (horizScrollbar || vertScrollbar) {n const styles = getStyleComputedProperty(element);n horizScrollbar -= getBordersSize(styles, 'x');n vertScrollbar -= getBordersSize(styles, 'y');nn result.width -= horizScrollbar;n result.height -= vertScrollbar;n }nn return getClientRect(result);n}n”,“import getStyleComputedProperty from './getStyleComputedProperty';nimport includeScroll from './includeScroll';nimport getScrollParent from './getScrollParent';nimport getBoundingClientRect from './getBoundingClientRect';nimport runIsIE from './isIE';nimport getClientRect from './getClientRect';nnexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {n const isIE10 = runIsIE(10);n const isHTML = parent.nodeName === 'HTML';n const childrenRect = getBoundingClientRect(children);n const parentRect = getBoundingClientRect(parent);n const scrollParent = getScrollParent(children);nn const styles = getStyleComputedProperty(parent);n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);nn // In cases where the parent is fixed, we must ignore negative scroll in offset calcn if(fixedPosition && isHTML) {n parentRect.top = Math.max(parentRect.top, 0);n parentRect.left = Math.max(parentRect.left, 0);n }n let offsets = getClientRect({n top: childrenRect.top - parentRect.top - borderTopWidth,n left: childrenRect.left - parentRect.left - borderLeftWidth,n width: childrenRect.width,n height: childrenRect.height,n });n offsets.marginTop = 0;n offsets.marginLeft = 0;nn // Subtract margins of documentElement in case it's being used as parentn // we do this only on HTML because it's the only element that behavesn // differently when margins are applied to it. The margins are included inn // the box of the documentElement, in the other cases not.n if (!isIE10 && isHTML) {n const marginTop = parseFloat(styles.marginTop, 10);n const marginLeft = parseFloat(styles.marginLeft, 10);nn offsets.top -= borderTopWidth - marginTop;n offsets.bottom -= borderTopWidth - marginTop;n offsets.left -= borderLeftWidth - marginLeft;n offsets.right -= borderLeftWidth - marginLeft;nn // Attach marginTop and marginLeft because in some circumstances we may need themn offsets.marginTop = marginTop;n offsets.marginLeft = marginLeft;n }nn if (n isIE10 && !fixedPositionn ? parent.contains(scrollParent)n : parent === scrollParent && scrollParent.nodeName !== 'BODY'n ) {n offsets = includeScroll(offsets, parent);n }nn return offsets;n}n”,“import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';nimport getScroll from './getScroll';nimport getClientRect from './getClientRect';nnexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {n const html = element.ownerDocument.documentElement;n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);n const width = Math.max(html.clientWidth, window.innerWidth || 0);n const height = Math.max(html.clientHeight, window.innerHeight || 0);nn const scrollTop = !excludeScroll ? getScroll(html) : 0;n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;nn const offset = {n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,n width,n height,n };nn return getClientRect(offset);n}n”,“import getStyleComputedProperty from './getStyleComputedProperty';nimport getParentNode from './getParentNode';nn/**n * Check if the given element is fixed or is inside a fixed parentn * @methodn * @memberof Popper.Utilsn * @argument {Element} elementn * @argument {Element} customContainern * @returns {Boolean} answer to "isFixed?"n */nexport default function isFixed(element) {n const nodeName = element.nodeName;n if (nodeName === 'BODY' || nodeName === 'HTML') {n return false;n }n if (getStyleComputedProperty(element, 'position') === 'fixed') {n return true;n }n return isFixed(getParentNode(element));n}n”,“import getStyleComputedProperty from './getStyleComputedProperty';nimport isIE from './isIE';n/**n * Finds the first parent of an element that has a transformed property definedn * @methodn * @memberof Popper.Utilsn * @argument {Element} elementn * @returns {Element} first transformed parent or documentElementn */nnexport default function getFixedPositionOffsetParent(element) {n // This check is needed to avoid errors in case one of the elements isn't defined for any reasonn if (!element || !element.parentElement || isIE()) {n return document.documentElement;n }n let el = element.parentElement;n while (el && getStyleComputedProperty(el, 'transform') === 'none') {n el = el.parentElement;n }n return el || document.documentElement;nn}n”,“import getScrollParent from './getScrollParent';nimport getParentNode from './getParentNode';nimport findCommonOffsetParent from './findCommonOffsetParent';nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';nimport getWindowSizes from './getWindowSizes';nimport isFixed from './isFixed';nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';nn/**n * Computed the boundaries limits and return themn * @methodn * @memberof Popper.Utilsn * @param {HTMLElement} poppern * @param {HTMLElement} referencen * @param {number} paddingn * @param {HTMLElement} boundariesElement - Element used to define the boundariesn * @param {Boolean} fixedPosition - Is in fixed position moden * @returns {Object} Coordinates of the boundariesn */nexport default function getBoundaries(n popper,n reference,n padding,n boundariesElement,n fixedPosition = falsen) {n // NOTE: 1 DOM access herenn let boundaries = { top: 0, left: 0 };n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);nn // Handle viewport casen if (boundariesElement === 'viewport' ) {n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);n }nn else {n // Handle other cases based on DOM element used as boundariesn let boundariesNode;n if (boundariesElement === 'scrollParent') {n boundariesNode = getScrollParent(getParentNode(reference));n if (boundariesNode.nodeName === 'BODY') {n boundariesNode = popper.ownerDocument.documentElement;n }n } else if (boundariesElement === 'window') {n boundariesNode = popper.ownerDocument.documentElement;n } else {n boundariesNode = boundariesElement;n }nn const offsets = getOffsetRectRelativeToArbitraryNode(n boundariesNode,n offsetParent,n fixedPositionn );nn // In case of HTML, we need a different computationn if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {n const { height, width } = getWindowSizes(popper.ownerDocument);n boundaries.top += offsets.top - offsets.marginTop;n boundaries.bottom = height + offsets.top;n boundaries.left += offsets.left - offsets.marginLeft;n boundaries.right = width + offsets.left;n } else {n // for all the other DOM elements, this one is goodn boundaries = offsets;n }n }nn // Add paddingsn padding = padding || 0;n const isPaddingNumber = typeof padding === 'number';n boundaries.left += isPaddingNumber ? padding : padding.left || 0; n boundaries.top += isPaddingNumber ? padding : padding.top || 0; n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; nn return boundaries;n}n”,“import getBoundaries from '../utils/getBoundaries';nnfunction getArea({ width, height }) {n return width * height;n}nn/**n * Utility used to transform the `auto` placement to the placement with moren * available space.n * @methodn * @memberof Popper.Utilsn * @argument {Object} data - The data object generated by update methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function computeAutoPlacement(n placement,n refRect,n popper,n reference,n boundariesElement,n padding = 0n) {n if (placement.indexOf('auto') === -1) {n return placement;n }nn const boundaries = getBoundaries(n popper,n reference,n padding,n boundariesElementn );nn const rects = {n top: {n width: boundaries.width,n height: refRect.top - boundaries.top,n },n right: {n width: boundaries.right - refRect.right,n height: boundaries.height,n },n bottom: {n width: boundaries.width,n height: boundaries.bottom - refRect.bottom,n },n left: {n width: refRect.left - boundaries.left,n height: boundaries.height,n },n };nn const sortedAreas = Object.keys(rects)n .map(key => ({n key,n …rects,n area: getArea(rects),n }))n .sort((a, b) => b.area - a.area);nn const filteredAreas = sortedAreas.filter(n ({ width, height }) =>n width >= popper.clientWidth && height >= popper.clientHeightn );nn const computedPlacement = filteredAreas.length > 0n ? filteredAreas.keyn : sortedAreas.key;nn const variation = placement.split(‘-’);nn return computedPlacement + (variation ? `-${variation}` : '');n}n”,“import findCommonOffsetParent from './findCommonOffsetParent';nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';nn/**n * Get offsets to the reference elementn * @methodn * @memberof Popper.Utilsn * @param {Object} staten * @param {Element} popper - the popper elementn * @param {Element} reference - the reference element (the popper will be relative to this)n * @param {Element} fixedPosition - is in fixed position moden * @returns {Object} An object containing the offsets which will be applied to the poppern */nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);n}n”,“/**n * Get the outer sizes of the given element (offset size + margins)n * @methodn * @memberof Popper.Utilsn * @argument {Element} elementn * @returns {Object} object containing width and height propertiesn */nexport default function getOuterSizes(element) {n const window = element.ownerDocument.defaultView;n const styles = window.getComputedStyle(element);n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);n const result = {n width: element.offsetWidth + y,n height: element.offsetHeight + x,n };n return result;n}n”,“/**n * Get the opposite placement of the given onen * @methodn * @memberof Popper.Utilsn * @argument {String} placementn * @returns {String} flipped placementn */nexport default function getOppositePlacement(placement) {n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };n return placement.replace(/left|right|bottom|top/g, matched => hash);n}n”,“import getOuterSizes from './getOuterSizes';nimport getOppositePlacement from './getOppositePlacement';nn/**n * Get offsets to the poppern * @methodn * @memberof Popper.Utilsn * @param {Object} position - CSS position the Popper will get appliedn * @param {HTMLElement} popper - the popper elementn * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)n * @param {String} placement - one of the valid placement optionsn * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the poppern */nexport default function getPopperOffsets(popper, referenceOffsets, placement) {n placement = placement.split(‘-’);nn // Get popper node sizesn const popperRect = getOuterSizes(popper);nn // Add position, width and height to our offsets objectn const popperOffsets = {n width: popperRect.width,n height: popperRect.height,n };nn // depending by the popper placement we have to compute its offsets slightly differentlyn const isHoriz = ['right', 'left'].indexOf(placement) !== -1;n const mainSide = isHoriz ? 'top' : 'left';n const secondarySide = isHoriz ? 'left' : 'top';n const measurement = isHoriz ? 'height' : 'width';n const secondaryMeasurement = !isHoriz ? 'height' : 'width';nn popperOffsets =n referenceOffsets +n referenceOffsets / 2 -n popperRect / 2;n if (placement === secondarySide) {n popperOffsets =n referenceOffsets - popperRect;n } else {n popperOffsets =n referenceOffsets;n }nn return popperOffsets;n}n”,“/**n * Mimics the `find` method of Arrayn * @methodn * @memberof Popper.Utilsn * @argument {Array} arrn * @argument propn * @argument valuen * @returns index or -1n */nexport default function find(arr, check) {n // use native find if supportedn if (Array.prototype.find) {n return arr.find(check);n }nn // use `filter` to obtain the same behavior of `find`n return arr.filter(check);n}n”,“import find from './find';nn/**n * Return the index of the matching objectn * @methodn * @memberof Popper.Utilsn * @argument {Array} arrn * @argument propn * @argument valuen * @returns index or -1n */nexport default function findIndex(arr, prop, value) {n // use native findIndex if supportedn if (Array.prototype.findIndex) {n return arr.findIndex(cur => cur === value);n }nn // use `find` + `indexOf` if `findIndex` isn't supportedn const match = find(arr, obj => obj === value);n return arr.indexOf(match);n}n”,“import isFunction from './isFunction';nimport findIndex from './findIndex';nimport getClientRect from '../utils/getClientRect';nn/**n * Loop trough the list of modifiers and run them in order,n * each of them will then edit the data object.n * @methodn * @memberof Popper.Utilsn * @param {dataObject} datan * @param {Array} modifiersn * @param {String} ends - Optional modifier name used as stoppern * @returns {dataObject}n */nexport default function runModifiers(modifiers, data, ends) {n const modifiersToRun = ends === undefinedn ? modifiersn : modifiers.slice(0, findIndex(modifiers, 'name', ends));nn modifiersToRun.forEach(modifier => {n if (modifier) { // eslint-disable-line dot-notationn console.warn('`modifier.function` is deprecated, use `modifier.fn`!');n }n const fn = modifier || modifier.fn; // eslint-disable-line dot-notationn if (modifier.enabled && isFunction(fn)) {n // Add properties to offsets to make them a complete clientRect objectn // we do this before each modifier to make sure the previous one doesn'tn // mess with these valuesn data.offsets.popper = getClientRect(data.offsets.popper);n data.offsets.reference = getClientRect(data.offsets.reference);nn data = fn(data, modifier);n }n });nn return data;n}n”,“import computeAutoPlacement from '../utils/computeAutoPlacement';nimport getReferenceOffsets from '../utils/getReferenceOffsets';nimport getPopperOffsets from '../utils/getPopperOffsets';nimport runModifiers from '../utils/runModifiers';nn/**n * Updates the position of the popper, computing the new offsets and applyingn * the new style.<br />n * Prefer `scheduleUpdate` over `update` because of performance reasons.n * @methodn * @memberof Poppern */nexport default function update() {n // if popper is destroyed, don't perform any further updaten if (this.state.isDestroyed) {n return;n }nn let data = {n instance: this,n styles: {},n arrowStyles: {},n attributes: {},n flipped: false,n offsets: {},n };nn // compute reference element offsetsn data.offsets.reference = getReferenceOffsets(n this.state,n this.popper,n this.reference,n this.options.positionFixedn );nn // compute auto placement, store placement inside the data object,n // modifiers will be able to edit `placement` if neededn // and refer to originalPlacement to know the original valuen data.placement = computeAutoPlacement(n this.options.placement,n data.offsets.reference,n this.popper,n this.reference,n this.options.modifiers.flip.boundariesElement,n this.options.modifiers.flip.paddingn );nn // store the computed placement inside `originalPlacement`n data.originalPlacement = data.placement;nn data.positionFixed = this.options.positionFixed;nn // compute the popper offsetsn data.offsets.popper = getPopperOffsets(n this.popper,n data.offsets.reference,n data.placementn );nn data.offsets.popper.position = this.options.positionFixedn ? 'fixed'n : 'absolute';nn // run the modifiersn data = runModifiers(this.modifiers, data);nn // the first `update` will call `onCreate` callbackn // the other ones will call `onUpdate` callbackn if (!this.state.isCreated) {n this.state.isCreated = true;n this.options.onCreate(data);n } else {n this.options.onUpdate(data);n }n}n”,“/**n * Helper used to know if the given modifier is enabled.n * @methodn * @memberof Popper.Utilsn * @returns {Boolean}n */nexport default function isModifierEnabled(modifiers, modifierName) {n return modifiers.some(n ({ name, enabled }) => enabled && name === modifierNamen );n}n”,“/**n * Get the prefixed supported property namen * @methodn * @memberof Popper.Utilsn * @argument {String} property (camelCase)n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)n */nexport default function getSupportedPropertyName(property) {n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);nn for (let i = 0; i < prefixes.length; i++) {n const prefix = prefixes;n const toCheck = prefix ? `${prefix}${upperProp}` : property;n if (typeof document.body.style !== 'undefined') {n return toCheck;n }n }n return null;n}n”,“import isModifierEnabled from '../utils/isModifierEnabled';nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';nn/**n * Destroys the popper.n * @methodn * @memberof Poppern */nexport default function destroy() {n this.state.isDestroyed = true;nn // touch DOM only if `applyStyle` modifier is enabledn if (isModifierEnabled(this.modifiers, 'applyStyle')) {n this.popper.removeAttribute('x-placement');n this.popper.style.position = '';n this.popper.style.top = '';n this.popper.style.left = '';n this.popper.style.right = '';n this.popper.style.bottom = '';n this.popper.style.willChange = '';n this.popper.style = '';n }nn this.disableEventListeners();nn // remove the popper if user explicity asked for the deletion on destroyn // do not use `remove` because IE11 doesn't support itn if (this.options.removeOnDestroy) {n this.popper.parentNode.removeChild(this.popper);n }n return this;n}n”,“/**n * Get the window associated with the elementn * @argument {Element} elementn * @returns {Window}n */nexport default function getWindow(element) {n const ownerDocument = element.ownerDocument;n return ownerDocument ? ownerDocument.defaultView : window;n}n”,“import getScrollParent from './getScrollParent';nimport getWindow from './getWindow';nnfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {n const isBody = scrollParent.nodeName === 'BODY';n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;n target.addEventListener(event, callback, { passive: true });nn if (!isBody) {n attachToScrollParents(n getScrollParent(target.parentNode),n event,n callback,n scrollParentsn );n }n scrollParents.push(target);n}nn/**n * Setup needed event listeners used to update the popper positionn * @methodn * @memberof Popper.Utilsn * @privaten */nexport default function setupEventListeners(n reference,n options,n state,n updateBoundn) {n // Resize event listener on windown state.updateBound = updateBound;n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });nn // Scroll event listener on scroll parentsn const scrollElement = getScrollParent(reference);n attachToScrollParents(n scrollElement,n 'scroll',n state.updateBound,n state.scrollParentsn );n state.scrollElement = scrollElement;n state.eventsEnabled = true;nn return state;n}n”,“import setupEventListeners from '../utils/setupEventListeners';nn/**n * It will add resize/scroll events and start recalculatingn * position of the popper element when they are triggered.n * @methodn * @memberof Poppern */nexport default function enableEventListeners() {n if (!this.state.eventsEnabled) {n this.state = setupEventListeners(n this.reference,n this.options,n this.state,n this.scheduleUpdaten );n }n}n”,“import getWindow from './getWindow';nn/**n * Remove event listeners used to update the popper positionn * @methodn * @memberof Popper.Utilsn * @privaten */nexport default function removeEventListeners(reference, state) {n // Remove resize event listener on windown getWindow(reference).removeEventListener('resize', state.updateBound);nn // Remove scroll event listener on scroll parentsn state.scrollParents.forEach(target => {n target.removeEventListener('scroll', state.updateBound);n });nn // Reset staten state.updateBound = null;n state.scrollParents = [];n state.scrollElement = null;n state.eventsEnabled = false;n return state;n}n”,“import removeEventListeners from '../utils/removeEventListeners';nn/**n * It will remove resize/scroll events and won't recalculate popper positionn * when they are triggered. It also won't trigger `onUpdate` callback anymore,n * unless you call `update` method manually.n * @methodn * @memberof Poppern */nexport default function disableEventListeners() {n if (this.state.eventsEnabled) {n cancelAnimationFrame(this.scheduleUpdate);n this.state = removeEventListeners(this.reference, this.state);n }n}n”,“/**n * Tells if a given input is a numbern * @methodn * @memberof Popper.Utilsn * @param {*} input to checkn * @return {Boolean}n */nexport default function isNumeric(n) {n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);n}n”,“import isNumeric from './isNumeric';nn/**n * Set the style to the given poppern * @methodn * @memberof Popper.Utilsn * @argument {Element} element - Element to apply the style ton * @argument {Object} stylesn * Object
with a list of properties and values which will be applied to the elementn */nexport default function setStyles(element, styles) {n Object.keys(styles).forEach(prop => {n let unit = '';n // add unit if the value is numeric and is one of the followingn if (n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==n -1 &&n isNumeric(styles)n ) {n unit = 'px';n }n element.style = styles + unit;n });n}n”,“/**n * Set the attributes to the given poppern * @methodn * @memberof Popper.Utilsn * @argument {Element} element - Element to apply the attributes ton * @argument {Object} stylesn * Object
with a list of properties and values which will be applied to the elementn */nexport default function setAttributes(element, attributes) {n Object.keys(attributes).forEach(function(prop) {n const value = attributes;n if (value !== false) {n element.setAttribute(prop, attributes);n } else {n element.removeAttribute(prop);n }n });n}n”,“/**n * @functionn * @memberof Popper.Utilsn * @argument {Object} data - The data object generated by `update` methodn * @argument {Boolean} shouldRound - If the offsets should be rounded at alln * @returns {Object} The popper's position offsets roundedn *n * The tale of pixel-perfect positioning. It's still not 100% perfect, but asn * good as it can be within reason.n * Discussion here: github.com/FezVrasta/popper.js/pull/715n *n * Low DPI screens cause a popper to be blurry if not using full pixels (Safarin * as well on High DPI screens).n *n * Firefox prefers no rounding for positioning and does not have blurriness onn * high DPI screens.n *n * Only horizontal placement and left/right values need to be considered.n */nexport default function getRoundedOffsets(data, shouldRound) {n const { popper, reference } = data.offsets;nn const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;n const isVariation = data.placement.indexOf('-') !== -1;n const sameWidthOddness = reference.width % 2 === popper.width % 2;n const bothOddWidth = reference.width % 2 === 1 && popper.width % 2 === 1;n const noRound = v => v;nn const horizontalToInteger = !shouldRoundn ? noRoundn : isVertical || isVariation || sameWidthOddnessn ? Math.roundn : Math.floor;n const verticalToInteger = !shouldRound ? noRound : Math.round;nn return {n left: horizontalToInteger(n bothOddWidth && !isVariation && shouldRoundn ? popper.left - 1n : popper.leftn ),n top: verticalToInteger(popper.top),n bottom: verticalToInteger(popper.bottom),n right: horizontalToInteger(popper.right),n };n}n”,“import find from './find';nn/**n * Helper used to know if the given modifier depends from another one.<br />n * It checks if the needed modifier is listed and enabled.n * @methodn * @memberof Popper.Utilsn * @param {Array} modifiers - list of modifiersn * @param {String} requestingName - name of requesting modifiern * @param {String} requestedName - name of requested modifiern * @returns {Boolean}n */nexport default function isModifierRequired(n modifiers,n requestingName,n requestedNamen) {n const requesting = find(modifiers, ({ name }) => name === requestingName);nn const isRequired =n !!requesting &&n modifiers.some(modifier => {n return (n modifier.name === requestedName &&n modifier.enabled &&n modifier.order < requesting.ordern );n });nn if (!isRequired) {n const requesting = `\`${requestingName}\“;n const requested = `\`${requestedName}\“;n console.warn(n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`n );n }n return isRequired;n}n”,“/**n * Get the opposite placement variation of the given onen * @methodn * @memberof Popper.Utilsn * @argument {String} placement variationn * @returns {String} flipped placement variationn */nexport default function getOppositeVariation(variation) {n if (variation === 'end') {n return 'start';n } else if (variation === 'start') {n return 'end';n }n return variation;n}n”,“import placements from '../methods/placements';nn// Get rid of `auto` `auto-start` and `auto-end`nconst validPlacements = placements.slice(3);nn/**n * Given an initial placement, returns all the subsequent placementsn * clockwise (or counter-clockwise).n *n * @methodn * @memberof Popper.Utilsn * @argument {String} placement - A valid placement (it accepts variations)n * @argument {Boolean} counter - Set to true to walk the placements counterclockwisen * @returns {Array} placements including their variationsn */nexport default function clockwise(placement, counter = false) {n const index = validPlacements.indexOf(placement);n const arr = validPlacementsn .slice(index + 1)n .concat(validPlacements.slice(0, index));n return counter ? arr.reverse() : arr;n}n”,“import isNumeric from '../utils/isNumeric';nimport getClientRect from '../utils/getClientRect';nimport find from '../utils/find';nn/**n * Converts a string containing value + unit into a px value numbern * @functionn * @memberof {modifiers~offset}n * @privaten * @argument {String} str - Value + unit stringn * @argument {String} measurement - `height` or `width`n * @argument {Object} popperOffsetsn * @argument {Object} referenceOffsetsn * @returns {Number|String}n * Value in pixels, or original string if no values were extractedn */nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {n // separate value from unitn const split = str.match(/((?:\-|+)?\d*\.?\d*)(.*)/);n const value = +split;n const unit = split;nn // If it's not a number it's an operator, I guessn if (!value) {n return str;n }nn if (unit.indexOf('%') === 0) {n let element;n switch (unit) {n case '%p':n element = popperOffsets;n break;n case '%':n case '%r':n default:n element = referenceOffsets;n }nn const rect = getClientRect(element);n return rect / 100 * value;n } else if (unit === 'vh' || unit === 'vw') {n // if is a vh or vw, we calculate the size based on the viewportn let size;n if (unit === 'vh') {n size = Math.max(n document.documentElement.clientHeight,n window.innerHeight || 0n );n } else {n size = Math.max(n document.documentElement.clientWidth,n window.innerWidth || 0n );n }n return size / 100 * value;n } else {n // if is an explicit pixel unit, we get rid of the unit and keep the valuen // if is an implicit unit, it's px, and we return just the valuen return value;n }n}nn/**n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.n * @functionn * @memberof {modifiers~offset}n * @privaten * @argument {String} offsetn * @argument {Object} popperOffsetsn * @argument {Object} referenceOffsetsn * @argument {String} basePlacementn * @returns {Array} a two cells array with x and y offsets in numbersn */nexport function parseOffset(n offset,n popperOffsets,n referenceOffsets,n basePlacementn) {n const offsets = [0, 0];nn // Use height if placement is left or right and index is 0 otherwise use widthn // in this way the first offset will use an axis and the second onen // will use the other onen const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;nn // Split the offset string to obtain a list of values and operandsn // The regex addresses values with the plus or minus sign in front (+10, -20, etc)n const fragments = offset.split(/(+|\-)/).map(frag => frag.trim());nn // Detect if the offset string contains a pair of values or a single onen // they could be separated by comma or spacen const divider = fragments.indexOf(n find(fragments, frag => frag.search(/,|\s/) !== -1)n );nn if (fragments && fragments.indexOf(',') === -1) {n console.warn(n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'n );n }nn // If divider is found, we divide the list of values and operands to dividen // them by ofset X and Y.n const splitRegex = /\s*,\s*|\s+/;n let ops = divider !== -1n ? [n fragmentsn .slice(0, divider)n .concat([fragments.split(splitRegex)]),n [fragments.split(splitRegex)].concat(n fragments.slice(divider + 1)n ),n ]n : [fragments];nn // Convert the values with units to absolute pixels to allow our computationsn ops = ops.map((op, index) => {n // Most of the units rely on the orientation of the poppern const measurement = (index === 1 ? !useHeight : useHeight)n ? 'height'n : 'width';n let mergeWithPrevious = false;n return (n opn // This aggregates any `+` or `-` sign that aren't considered operatorsn // e.g.: 10 + +5 => [10, +, +5]n .reduce((a, b) => {n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {n a[a.length - 1] = b;n mergeWithPrevious = true;n return a;n } else if (mergeWithPrevious) {n a[a.length - 1] += b;n mergeWithPrevious = false;n return a;n } else {n return a.concat(b);n }n }, [])n // Here we convert the string values into number values (in px)n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))n );n });nn // Loop trough the offsets arrays and execute the operationsn ops.forEach((op, index) => {n op.forEach((frag, index2) => {n if (isNumeric(frag)) {n offsets += frag * (op[index2 - 1] === '-' ? -1 : 1);n }n });n });n return offsets;n}nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by update methodn * @argument {Object} options - Modifiers configuration and optionsn * @argument {Number|String} options.offset=0n * The offset value as described in the modifier descriptionn * @returns {Object} The data object, properly modifiedn */nexport default function offset(data, { offset }) {n const { placement, offsets: { popper, reference } } = data;n const basePlacement = placement.split(‘-’);nn let offsets;n if (isNumeric(+offset)) {n offsets = [+offset, 0];n } else {n offsets = parseOffset(offset, popper, reference, basePlacement);n }nn if (basePlacement === 'left') {n popper.top += offsets;n popper.left -= offsets;n } else if (basePlacement === 'right') {n popper.top += offsets;n popper.left += offsets;n } else if (basePlacement === 'top') {n popper.left += offsets;n popper.top -= offsets;n } else if (basePlacement === 'bottom') {n popper.left += offsets;n popper.top += offsets;n }nn data.popper = popper;n return data;n}n”,“import isBrowser from './isBrowser';nnconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];nlet timeoutDuration = 0;nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers) >= 0) {n timeoutDuration = 1;n break;n }n}nnexport function microtaskDebounce(fn) {n let called = falsen return () => {n if (called) {n returnn }n called = truen window.Promise.resolve().then(() => {n called = falsen fn()n })n }n}nnexport function taskDebounce(fn) {n let scheduled = false;n return () => {n if (!scheduled) {n scheduled = true;n setTimeout(() => {n scheduled = false;n fn();n }, timeoutDuration);n }n };n}nnconst supportsMicroTasks = isBrowser && window.Promisennn/*n Create a debounced version of a method, that's asynchronously deferredn* but called in the minimum time possible.n*n* @methodn* @memberof Popper.Utilsn* @argument {Function} fnn* @returns {Function}n*/nexport default (supportsMicroTasksn ? microtaskDebouncen : taskDebounce);n”,“import getClientRect from '../utils/getClientRect';nimport getOuterSizes from '../utils/getOuterSizes';nimport isModifierRequired from '../utils/isModifierRequired';nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by update methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function arrow(data, options) {n // arrow depends on keepTogether in order to workn if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {n return data;n }nn let arrowElement = options.element;nn // if arrowElement is a string, suppose it's a CSS selectorn if (typeof arrowElement === 'string') {n arrowElement = data.instance.popper.querySelector(arrowElement);nn // if arrowElement is not found, don't run the modifiern if (!arrowElement) {n return data;n }n } else {n // if the arrowElement isn't a query selector we must check that then // provided DOM node is child of its popper noden if (!data.instance.popper.contains(arrowElement)) {n console.warn(n 'WARNING: `arrow.element` must be child of its popper element!'n );n return data;n }n }nn const placement = data.placement.split(‘-’);n const { popper, reference } = data.offsets;n const isVertical = ['left', 'right'].indexOf(placement) !== -1;nn const len = isVertical ? 'height' : 'width';n const sideCapitalized = isVertical ? 'Top' : 'Left';n const side = sideCapitalized.toLowerCase();n const altSide = isVertical ? 'left' : 'top';n const opSide = isVertical ? 'bottom' : 'right';n const arrowElementSize = getOuterSizes(arrowElement);nn //n // extends keepTogether behavior making sure the popper and itsn // reference have enough pixels in conjunctionn //nn // top/left siden if (reference - arrowElementSize < popper) {n data.offsets.popper -=n popper - (reference - arrowElementSize);n }n // bottom/right siden if (reference + arrowElementSize > popper) {n data.offsets.popper +=n reference + arrowElementSize - popper;n }n data.offsets.popper = getClientRect(data.offsets.popper);nn // compute center of the poppern const center = reference + reference / 2 - arrowElementSize / 2;nn // Compute the sideValue using the updated popper offsetsn // take popper margin in account because we don't have this info availablen const css = getStyleComputedProperty(data.instance.popper);n const popperMarginSide = parseFloat(css, 10);n const popperBorderSide = parseFloat(css, 10);n let sideValue =n center - data.offsets.popper - popperMarginSide - popperBorderSide;nn // prevent arrowElement from being placed not contiguously to its poppern sideValue = Math.max(Math.min(popper - arrowElementSize, sideValue), 0);nn data.arrowElement = arrowElement;n data.offsets.arrow = {n [side]: Math.round(sideValue),n [altSide]: '', // make sure to unset any eventual altSide value from the DOM noden };nn return data;n}n”,“export default typeof window !== 'undefined' && typeof document !== 'undefined';n”,“import getSupportedPropertyName from '../utils/getSupportedPropertyName';nimport find from '../utils/find';nimport getOffsetParent from '../utils/getOffsetParent';nimport getBoundingClientRect from '../utils/getBoundingClientRect';nimport getRoundedOffsets from '../utils/getRoundedOffsets';nimport isBrowser from '../utils/isBrowser';nnconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by `update` methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function computeStyle(data, options) {n const { x, y } = options;n const { popper } = data.offsets;nn // Remove this legacy support in Popper.js v2n const legacyGpuAccelerationOption = find(n data.instance.modifiers,n modifier => modifier.name === 'applyStyle'n ).gpuAcceleration;n if (legacyGpuAccelerationOption !== undefined) {n console.warn(n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'n );n }n const gpuAcceleration =n legacyGpuAccelerationOption !== undefinedn ? legacyGpuAccelerationOptionn : options.gpuAcceleration;nn const offsetParent = getOffsetParent(data.instance.popper);n const offsetParentRect = getBoundingClientRect(offsetParent);nn // Stylesn const styles = {n position: popper.position,n };nn const offsets = getRoundedOffsets(n data,n window.devicePixelRatio < 2 || !isFirefoxn );nn const sideA = x === 'bottom' ? 'top' : 'bottom';n const sideB = y === 'right' ? 'left' : 'right';nn // if gpuAcceleration is set to `true` and transform is supported,n // we use `translate3d` to apply the position to the popper wen // automatically use the supported prefixed version if neededn const prefixedProperty = getSupportedPropertyName('transform');nn // now, let's make a step back and look at this code closely (wtf?)n // If the content of the popper grows once it's been positioned, itn // may happen that the popper gets misplaced because of the new contentn // overflowing its reference elementn // To avoid this problem, we provide two options (x and y), which allown // the consumer to define the offset origin.n // If we position a popper on top of a reference element, we can setn // `x` to `top` to make the popper grow towards its top instead ofn // its bottom.n let left, top;n if (sideA === 'bottom') {n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)n // and not the bottom of the html elementn if (offsetParent.nodeName === 'HTML') {n top = -offsetParent.clientHeight + offsets.bottom;n } else {n top = -offsetParentRect.height + offsets.bottom;n }n } else {n top = offsets.top;n }n if (sideB === 'right') {n if (offsetParent.nodeName === 'HTML') {n left = -offsetParent.clientWidth + offsets.right;n } else {n left = -offsetParentRect.width + offsets.right;n }n } else {n left = offsets.left;n }n if (gpuAcceleration && prefixedProperty) {n styles = `translate3d(${left}px, ${top}px, 0)`;n styles = 0;n styles = 0;n styles.willChange = 'transform';n } else {n // othwerise, we use the standard `top`, `left`, `bottom` and `right` propertiesn const invertTop = sideA === 'bottom' ? -1 : 1;n const invertLeft = sideB === 'right' ? -1 : 1;n styles = top * invertTop;n styles = left * invertLeft;n styles.willChange = `${sideA}, ${sideB}`;n }nn // Attributesn const attributes = {n 'x-placement': data.placement,n };nn // Update `data` attributes, styles and arrowStylesn data.attributes = { …attributes, …data.attributes };n data.styles = { …styles, …data.styles };n data.arrowStyles = { …data.offsets.arrow, …data.arrowStyles };nn return data;n}n”,“import getOppositePlacement from '../utils/getOppositePlacement';nimport getOppositeVariation from '../utils/getOppositeVariation';nimport getPopperOffsets from '../utils/getPopperOffsets';nimport runModifiers from '../utils/runModifiers';nimport getBoundaries from '../utils/getBoundaries';nimport isModifierEnabled from '../utils/isModifierEnabled';nimport clockwise from '../utils/clockwise';nnconst BEHAVIORS = {n FLIP: 'flip',n CLOCKWISE: 'clockwise',n COUNTERCLOCKWISE: 'counterclockwise',n};nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by update methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function flip(data, options) {n // if `inner` modifier is enabled, we can't use the `flip` modifiern if (isModifierEnabled(data.instance.modifiers, 'inner')) {n return data;n }nn if (data.flipped && data.placement === data.originalPlacement) {n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sidesn return data;n }nn const boundaries = getBoundaries(n data.instance.popper,n data.instance.reference,n options.padding,n options.boundariesElement,n data.positionFixedn );nn let placement = data.placement.split(‘-’);n let placementOpposite = getOppositePlacement(placement);n let variation = data.placement.split(‘-’) || '';nn let flipOrder = [];nn switch (options.behavior) {n case BEHAVIORS.FLIP:n flipOrder = [placement, placementOpposite];n break;n case BEHAVIORS.CLOCKWISE:n flipOrder = clockwise(placement);n break;n case BEHAVIORS.COUNTERCLOCKWISE:n flipOrder = clockwise(placement, true);n break;n default:n flipOrder = options.behavior;n }nn flipOrder.forEach((step, index) => {n if (placement !== step || flipOrder.length === index + 1) {n return data;n }nn placement = data.placement.split(‘-’);n placementOpposite = getOppositePlacement(placement);nn const popperOffsets = data.offsets.popper;n const refOffsets = data.offsets.reference;nn // using floor because the reference offsets may contain decimals we are not going to consider heren const floor = Math.floor;n const overlapsRef =n (placement === 'left' &&n floor(popperOffsets.right) > floor(refOffsets.left)) ||n (placement === 'right' &&n floor(popperOffsets.left) < floor(refOffsets.right)) ||n (placement === 'top' &&n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||n (placement === 'bottom' &&n floor(popperOffsets.top) < floor(refOffsets.bottom));nn const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);n const overflowsBottom =n floor(popperOffsets.bottom) > floor(boundaries.bottom);nn const overflowsBoundaries =n (placement === 'left' && overflowsLeft) ||n (placement === 'right' && overflowsRight) ||n (placement === 'top' && overflowsTop) ||n (placement === 'bottom' && overflowsBottom);nn // flip the variation if requiredn const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;n const flippedVariation =n !!options.flipVariations &&n ((isVertical && variation === 'start' && overflowsLeft) ||n (isVertical && variation === 'end' && overflowsRight) ||n (!isVertical && variation === 'start' && overflowsTop) ||n (!isVertical && variation === 'end' && overflowsBottom));nn if (overlapsRef || overflowsBoundaries || flippedVariation) {n // this boolean to detect any flip loopn data.flipped = true;nn if (overlapsRef || overflowsBoundaries) {n placement = flipOrder[index + 1];n }nn if (flippedVariation) {n variation = getOppositeVariation(variation);n }nn data.placement = placement + (variation ? '-' + variation : '');nn // this object contains `position`, we want to preserve it along withn // any additional property we may add in the futuren data.offsets.popper = {n …data.offsets.popper,n …getPopperOffsets(n data.instance.popper,n data.offsets.reference,n data.placementn ),n };nn data = runModifiers(data.instance.modifiers, data, 'flip');n }n });n return data;n}n”,“// Utilsnimport debounce from './utils/debounce';nimport isFunction from './utils/isFunction';nn// Methodsnimport update from './methods/update';nimport destroy from './methods/destroy';nimport enableEventListeners from './methods/enableEventListeners';nimport disableEventListeners from './methods/disableEventListeners';nimport Defaults from './methods/defaults';nimport placements from './methods/placements';nnexport default class Popper {n /**n * Creates a new Popper.js instance.n * @class Poppern * @param {HTMLElement|referenceObject} reference - The reference element used to position the poppern * @param {HTMLElement} popper - The HTML element used as the poppern * @param {Object} options - Your custom options to override the ones defined in [Defaults](defaults)n * @return {Object} instance - The generated Popper.js instancen */n constructor(reference, popper, options = {}) {n // make update() debounced, so that it only runs at most once-per-tickn this.update = debounce(this.update.bind(this));nn // with {} we create a new object with the options inside itn this.options = { …Popper.Defaults, …options };nn // init staten this.state = {n isDestroyed: false,n isCreated: false,n scrollParents: [],n };nn // get reference and popper elements (allow jQuery wrappers)n this.reference = reference && reference.jquery ? reference : reference;n this.popper = popper && popper.jquery ? popper : popper;nn // Deep merge modifiers optionsn this.options.modifiers = {};n Object.keys({n …Popper.Defaults.modifiers,n …options.modifiers,n }).forEach(name => {n this.options.modifiers = {n // If it's a built-in modifier, use it as basen …(Popper.Defaults.modifiers || {}),n // If there are custom options, override and merge with default onesn …(options.modifiers ? options.modifiers : {}),n };n });nn // Refactoring modifiers' list (Object
=> Array)n this.modifiers = Object.keys(this.options.modifiers)n .map(name => ({n name,n …this.options.modifiers,n }))n // sort the modifiers by ordern .sort((a, b) => a.order - b.order);nn // modifiers have the ability to execute arbitrary code when Popper.js get initedn // such code is executed in the same order of its modifiern // they could add new properties to their options configurationn // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!n this.modifiers.forEach(modifierOptions => {n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {n modifierOptions.onLoad(n this.reference,n this.popper,n this.options,n modifierOptions,n this.staten );n }n });nn // fire the first update to position the popper in the right placen this.update();nn const eventsEnabled = this.options.eventsEnabled;n if (eventsEnabled) {n // setup event listeners, they will take care of update the position in specific situationsn this.enableEventListeners();n }nn this.state.eventsEnabled = eventsEnabled;n }nn // We can't use class properties because they don't get listed in then // class prototype and break stuff like Sinon stubsn update() {n return update.call(this);n }n destroy() {n return destroy.call(this);n }n enableEventListeners() {n return enableEventListeners.call(this);n }n disableEventListeners() {n return disableEventListeners.call(this);n }nn /**n * Schedules an update. It will run on the next UI update available.n * @method scheduleUpdaten * @memberof Poppern */n scheduleUpdate = () => requestAnimationFrame(this.update);nn /**n * Collection of utilities useful when writing custom modifiers.n * Starting from version 1.7, this method is available only if youn * include `popper-utils.js` before `popper.js`.n *n * DEPRECATION: This way to access PopperUtils is deprecatedn * and will be removed in v2! Use the PopperUtils module directly instead.n * Due to the high instability of the methods contained in Utils, we can'tn * guarantee them to follow semver. Use them at your own risk!n * @staticn * @privaten * @type {Object}n * @deprecated since version 1.8n * @member Utilsn * @memberof Poppern */n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;nn static placements = placements;nn static Defaults = Defaults;n}nn/**n * The `referenceObject` is an object that provides an interface compatible with Popper.jsn * and lets you use it as replacement of a real DOM node.<br />n * You can use this method to position a popper relatively to a set of coordinatesn * in case you don't have a DOM node to use as reference.n *n * “`n * new Popper(referenceObject, popperNode);n * “`n *n * NB: This feature isn't supported in Internet Explorer 10.n * @name referenceObjectn * @property {Function} data.getBoundingClientRectn * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.n * @property {number} data.clientWidthn * An ES6 getter that will return the width of the virtual reference element.n * @property {number} data.clientHeightn * An ES6 getter that will return the height of the virtual reference element.n */n”,“import modifiers from '../modifiers/index';nn/**n * Default options provided to Popper.js constructor.<br />n * These can be overridden using the `options` argument of Popper.js.<br />n * To override an option, simply pass an object with the samen * structure of the `options` object, as the 3rd argument. For example:n * “`n * new Popper(ref, pop, {n * modifiers: {n * preventOverflow: { enabled: false }n * }n * })n * “`n * @type {Object}n * @staticn * @memberof Poppern */nexport default {n /**n * Popper's placement.n * @prop {Popper.placements} placement='bottom'n */n placement: 'bottom',nn /**n * Set this to true if you want popper to position it self in 'fixed' moden * @prop {Boolean} positionFixed=falsen */n positionFixed: false,nn /**n * Whether events (resize, scroll) are initially enabled.n * @prop {Boolean} eventsEnabled=truen */n eventsEnabled: true,nn /**n * Set to true if you want to automatically remove the popper whenn * you call the `destroy` method.n * @prop {Boolean} removeOnDestroy=falsen */n removeOnDestroy: false,nn /**n * Callback called when the popper is created.<br />n * By default, it is set to no-op.<br />n * Access Popper.js instance with `data.instance`.n * @prop {onCreate}n */n onCreate: () => {},nn /**n * Callback called when the popper is updated. This callback is not calledn * on the initialization/creation of the popper, but only on subsequentn * updates.<br />n * By default, it is set to no-op.<br />n * Access Popper.js instance with `data.instance`.n * @prop {onUpdate}n */n onUpdate: () => {},nn /**n * List of modifiers used to modify the offsets before they are applied to the popper.n * They provide most of the functionalities of Popper.js.n * @prop {modifiers}n */n modifiers,n};nn/**n * @callback onCreaten * @param {dataObject} datan */nn/**n * @callback onUpdaten * @param {dataObject} datan */n”,“import applyStyle, { applyStyleOnLoad } from './applyStyle';nimport computeStyle from './computeStyle';nimport arrow from './arrow';nimport flip from './flip';nimport keepTogether from './keepTogether';nimport offset from './offset';nimport preventOverflow from './preventOverflow';nimport shift from './shift';nimport hide from './hide';nimport inner from './inner';nn/**n * Modifier function, each modifier can have a function of this type assignedn * to its `fn` property.<br />n * These functions will be called on each update, this means that you mustn * make sure they are performant enough to avoid performance bottlenecks.n *n * @function ModifierFnn * @argument {dataObject} data - The data object generated by `update` methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {dataObject} The data object, properly modifiedn */nn/**n * Modifiers are plugins used to alter the behavior of your poppers.<br />n * Popper.js uses a set of 9 modifiers to provide all the basic functionalitiesn * needed by the library.n *n * Usually you don't want to override the `order`, `fn` and `onLoad` props.n * All the other properties are configurations that could be tweaked.n * @namespace modifiersn */nexport default {n /**n * Modifier used to shift the popper on the start or end of its referencen * element.<br />n * It will read the variation of the `placement` property.<br />n * It can be one either `-end` or `-start`.n * @memberof modifiersn * @innern */n shift: {n /** @prop {number} order=100 - Index used to define the order of execution */n order: 100,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: shift,n },nn /**n * The `offset` modifier can shift your popper on both its axis.n *n * It accepts the following units:n * - `px` or unit-less, interpreted as pixelsn * - `%` or `%r`, percentage relative to the length of the reference elementn * - `%p`, percentage relative to the length of the popper elementn * - `vw`, CSS viewport width unitn * - `vh`, CSS viewport height unitn *n * For length is intended the main axis relative to the placement of the popper.<br />n * This means that if the placement is `top` or `bottom`, the length will be then * `width`. In case of `left` or `right`, it will be the `height`.n *n * You can provide a single value (as `Number` or `String`), or a pair of valuesn * as `String` divided by a comma or one (or more) white spaces.<br />n * The latter is a deprecated method because it leads to confusion and will ben * removed in v2.<br />n * Additionally, it accepts additions and subtractions between different units.n * Note that multiplications and divisions aren't supported.n *n * Valid examples are:n * “`n * 10n * '10%'n * '10, 10'n * '10%, 10'n * '10 + 10%'n * '10 - 5vh + 3%'n * '-10px + 5vh, 5px - 6%'n * “`n * > NB: If you desire to apply offsets to your poppers in a way that may make them overlapn * > with their reference element, unfortunately, you will have to disable the `flip` modifier.n * > You can read more on this at this [issue](github.com/FezVrasta/popper.js/issues/373).n *n * @memberof modifiersn * @innern */n offset: {n /** @prop {number} order=200 - Index used to define the order of execution */n order: 200,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: offset,n /** @prop {Number|String} offset=0n * The offset value as described in the modifier descriptionn */n offset: 0,n },nn /**n * Modifier used to prevent the popper from being positioned outside the boundary.n *n * A scenario exists where the reference itself is not within the boundaries.<br />n * We can say it has "escaped the boundaries" — or just "escaped".<br />n * In this case we need to decide whether the popper should either:n *n * - detach from the reference and remain "trapped" in the boundaries, orn * - if it should ignore the boundary and "escape with its reference"n *n * When `escapeWithReference` is set to`true` and reference is completelyn * outside its boundaries, the popper will overflow (or completely leave)n * the boundaries in order to remain attached to the edge of the reference.n *n * @memberof modifiersn * @innern */n preventOverflow: {n /** @prop {number} order=300 - Index used to define the order of execution */n order: 300,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: preventOverflow,n /**n * @prop {Array} [priority=]n * Popper will try to prevent overflow following these priorities by default,n * then, it could overflow on the left and on top of the `boundariesElement`n */n priority: ['left', 'right', 'top', 'bottom'],n /**n * @prop {number} padding=5n * Amount of pixel used to define a minimum distance between the boundariesn * and the popper. This makes sure the popper always has a little paddingn * between the edges of its containern */n padding: 5,n /**n * @prop {String|HTMLElement} boundariesElement='scrollParent'n * Boundaries used by the modifier. Can be `scrollParent`, `window`,n * `viewport` or any DOM element.n */n boundariesElement: 'scrollParent',n },nn /**n * Modifier used to make sure the reference and its popper stay near each othern * without leaving any gap between the two. Especially useful when the arrow isn * enabled and you want to ensure that it points to its reference element.n * It cares only about the first axis. You can still have poppers with marginn * between the popper and its reference element.n * @memberof modifiersn * @innern */n keepTogether: {n /** @prop {number} order=400 - Index used to define the order of execution */n order: 400,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: keepTogether,n },nn /**n * This modifier is used to move the `arrowElement` of the popper to maken * sure it is positioned between the reference element and its popper element.n * It will read the outer size of the `arrowElement` node to detect how manyn * pixels of conjunction are needed.n *n * It has no effect if no `arrowElement` is provided.n * @memberof modifiersn * @innern */n arrow: {n /** @prop {number} order=500 - Index used to define the order of execution */n order: 500,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: arrow,n /** @prop {String|HTMLElement} element=‘' - Selector or node used as arrow */n element: '[x-arrow]',n },nn /**n * Modifier used to flip the popper's placement when it starts to overlap itsn * reference element.n *n * Requires the `preventOverflow` modifier before it in order to work.n *n * NOTE: this modifier will interrupt the current update cycle and willn * restart it if it detects the need to flip the placement.n * @memberof modifiersn * @innern */n flip: {n /** @prop {number} order=600 - Index used to define the order of execution */n order: 600,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: flip,n /**n * @prop {String|Array} behavior='flip'n * The behavior used to change the popper's placement. It can be one ofn * `flip`, `clockwise`, `counterclockwise` or an array with a list of validn * placements (with optional variations)n */n behavior: 'flip',n /**n * @prop {number} padding=5n * The popper will flip if it hits the edges of the `boundariesElement`n */n padding: 5,n /**n * @prop {String|HTMLElement} boundariesElement='viewport'n * The element which will define the boundaries of the popper position.n * The popper will never be placed outside of the defined boundariesn * (except if `keepTogether` is enabled)n */n boundariesElement: 'viewport',n },nn /**n * Modifier used to make the popper flow toward the inner of the reference element.n * By default, when this modifier is disabled, the popper will be placed outsiden * the reference element.n * @memberof modifiersn * @innern */n inner: {n /** @prop {number} order=700 - Index used to define the order of execution */n order: 700,n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */n enabled: false,n /** @prop {ModifierFn} */n fn: inner,n },nn /**n * Modifier used to hide the popper when its reference element is outside of then * popper boundaries. It will set a `x-out-of-boundaries` attribute which cann * be used to hide with a CSS selector the popper when its reference isn * out of boundaries.n *n * Requires the `preventOverflow` modifier before it in order to work.n * @memberof modifiersn * @innern */n hide: {n /** @prop {number} order=800 - Index used to define the order of execution */n order: 800,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: hide,n },nn /**n * Computes the style that will be applied to the popper element to getsn * properly positioned.n *n * Note that this modifier will not touch the DOM, it just prepares the stylesn * so that `applyStyle` modifier can apply it. This separation is usefuln * in case you need to replace `applyStyle` with a custom implementation.n *n * This modifier has `850` as `order` value to maintain backward compatibilityn * with previous versions of Popper.js. Expect the modifiers ordering methodn * to change in future major versions of the library.n *n * @memberof modifiersn * @innern */n computeStyle: {n /** @prop {number} order=850 - Index used to define the order of execution */n order: 850,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: computeStyle,n /**n * @prop {Boolean} gpuAcceleration=truen * If true, it uses the CSS 3D transformation to position the popper.n * Otherwise, it will use the `top` and `left` propertiesn */n gpuAcceleration: true,n /**n * @prop {string} [x='bottom']n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.n * Change this if your popper should grow in a direction different from `bottom`n */n x: 'bottom',n /**n * @prop {string} [x='left']n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.n * Change this if your popper should grow in a direction different from `right`n */n y: 'right',n },nn /**n * Applies the computed styles to the popper element.n *n * All the DOM manipulations are limited to this modifier. This is useful in casen * you want to integrate Popper.js inside a framework or view library and youn * want to delegate all the DOM manipulations to it.n *n * Note that if you disable this modifier, you must make sure the popper elementn * has its position set to `absolute` before Popper.js can do its work!n *n * Just disable this modifier and define your own to achieve the desired effect.n *n * @memberof modifiersn * @innern */n applyStyle: {n /** @prop {number} order=900 - Index used to define the order of execution */n order: 900,n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */n enabled: true,n /** @prop {ModifierFn} */n fn: applyStyle,n /** @prop {Function} */n onLoad: applyStyleOnLoad,n /**n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifiern * @prop {Boolean} gpuAcceleration=truen * If true, it uses the CSS 3D transformation to position the popper.n * Otherwise, it will use the `top` and `left` propertiesn */n gpuAcceleration: undefined,n },n};nn/**n * The `dataObject` is an object containing all the information used by Popper.js.n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.n * @name dataObjectn * @property {Object} data.instance The Popper.js instancen * @property {String} data.placement Placement applied to poppern * @property {String} data.originalPlacement Placement originally defined on initn * @property {Boolean} data.flipped True if popper has been flipped by flip modifiern * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the poppern * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifiern * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)n * @property {Object} data.boundaries Offsets of the popper boundariesn * @property {Object} data.offsets The measurements of popper, reference and arrow elementsn * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` valuesn * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` valuesn * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0n */n”,“/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by `update` methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function shift(data) {n const placement = data.placement;n const basePlacement = placement.split(’-‘);n const shiftvariation = placement.split(’-‘);nn // if shift shiftvariation is specified, run the modifiern if (shiftvariation) {n const { reference, popper } = data.offsets;n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;n const side = isVertical ? 'left' : 'top';n const measurement = isVertical ? 'width' : 'height';nn const shiftOffsets = {n start: { [side]: reference },n end: {n [side]: reference + reference - popper,n },n };nn data.offsets.popper = { …popper, …shiftOffsets };n }nn return data;n}n”,“import getOffsetParent from '../utils/getOffsetParent';nimport getBoundaries from '../utils/getBoundaries';nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by `update` methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function preventOverflow(data, options) {n let boundariesElement =n options.boundariesElement || getOffsetParent(data.instance.popper);nn // If offsetParent is the reference element, we really want ton // go one step up and use the next offsetParent as reference ton // avoid to make this modifier completely useless and look like brokenn if (data.instance.reference === boundariesElement) {n boundariesElement = getOffsetParent(boundariesElement);n }nn // NOTE: DOM access heren // resets the popper's position so that the document size can be calculated excludingn // the size of the popper element itselfn const transformProp = getSupportedPropertyName('transform');n const popperStyles = data.instance.popper.style; // assignment to help minificationn const { top, left, [transformProp]: transform } = popperStyles;n popperStyles.top = '';n popperStyles.left = '';n popperStyles = '';nn const boundaries = getBoundaries(n data.instance.popper,n data.instance.reference,n options.padding,n boundariesElement,n data.positionFixedn );nn // NOTE: DOM access heren // restores the original style properties after the offsets have been computedn popperStyles.top = top;n popperStyles.left = left;n popperStyles = transform;nn options.boundaries = boundaries;nn const order = options.priority;n let popper = data.offsets.popper;nn const check = {n primary(placement) {n let value = popper;n if (n popper < boundaries &&n !options.escapeWithReferencen ) {n value = Math.max(popper, boundaries);n }n return { [placement]: value };n },n secondary(placement) {n const mainSide = placement === 'right' ? 'left' : 'top';n let value = popper;n if (n popper > boundaries &&n !options.escapeWithReferencen ) {n value = Math.min(n popper,n boundaries -n (placement === 'right' ? popper.width : popper.height)n );n }n return { [mainSide]: value };n },n };nn order.forEach(placement => {n const side =n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';n popper = { …popper, …check(placement) };n });nn data.offsets.popper = popper;nn return data;n}n”,“/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by update methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function keepTogether(data) {n const { popper, reference } = data.offsets;n const placement = data.placement.split(’-‘);n const floor = Math.floor;n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;n const side = isVertical ? 'right' : 'bottom';n const opSide = isVertical ? 'left' : 'top';n const measurement = isVertical ? 'width' : 'height';nn if (popper < floor(reference)) {n data.offsets.popper =n floor(reference) - popper;n }n if (popper > floor(reference)) {n data.offsets.popper = floor(reference);n }nn return data;n}n”,“import getClientRect from '../utils/getClientRect';nimport getOppositePlacement from '../utils/getOppositePlacement';nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by `update` methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function inner(data) {n const placement = data.placement;n const basePlacement = placement.split(’-‘);n const { popper, reference } = data.offsets;n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;nn const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;nn popper[isHoriz ? 'left' : 'top'] =n reference -n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);nn data.placement = getOppositePlacement(placement);n data.offsets.popper = getClientRect(popper);nn return data;n}n”,“import isModifierRequired from '../utils/isModifierRequired';nimport find from '../utils/find';nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by update methodn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The data object, properly modifiedn */nexport default function hide(data) {n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {n return data;n }nn const refRect = data.offsets.reference;n const bound = find(n data.instance.modifiers,n modifier => modifier.name === 'preventOverflow'n ).boundaries;nn if (n refRect.bottom < bound.top ||n refRect.left > bound.right ||n refRect.top > bound.bottom ||n refRect.right < bound.leftn ) {n // Avoid unnecessary DOM access if visibility hasn't changedn if (data.hide === true) {n return data;n }nn data.hide = true;n data.attributes = '';n } else {n // Avoid unnecessary DOM access if visibility hasn't changedn if (data.hide === false) {n return data;n }nn data.hide = false;n data.attributes = false;n }nn return data;n}n”,“import setStyles from '../utils/setStyles';nimport setAttributes from '../utils/setAttributes';nimport getReferenceOffsets from '../utils/getReferenceOffsets';nimport computeAutoPlacement from '../utils/computeAutoPlacement';nn/**n * @functionn * @memberof Modifiersn * @argument {Object} data - The data object generated by `update` methodn * @argument {Object} data.styles - List of style properties - values to apply to popper elementn * @argument {Object} data.attributes - List of attribute properties - values to apply to popper elementn * @argument {Object} options - Modifiers configuration and optionsn * @returns {Object} The same data objectn */nexport default function applyStyle(data) {n // any property present in `data.styles` will be applied to the popper,n // in this way we can make the 3rd party modifiers add custom styles to itn // Be aware, modifiers could override the properties defined in the previousn // lines of this modifier!n setStyles(data.instance.popper, data.styles);nn // any property present in `data.attributes` will be applied to the popper,n // they will be set as HTML attributes of the elementn setAttributes(data.instance.popper, data.attributes);nn // if arrowElement is defined and arrowStyles has some propertiesn if (data.arrowElement && Object.keys(data.arrowStyles).length) {n setStyles(data.arrowElement, data.arrowStyles);n }nn return data;n}nn/**n * Set the x-placement attribute before everything else because it could be usedn * to add margins to the popper margins needs to be calculated to get then * correct popper offsets.n * @methodn * @memberof Popper.modifiersn * @param {HTMLElement} reference - The reference element used to position the poppern * @param {HTMLElement} popper - The HTML element used as poppern * @param {Object} options - Popper.js optionsn */nexport function applyStyleOnLoad(n reference,n popper,n options,n modifierOptions,n staten) {n // compute reference element offsetsn const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);nn // compute auto placement, store placement inside the data object,n // modifiers will be able to edit `placement` if neededn // and refer to originalPlacement to know the original valuen const placement = computeAutoPlacement(n options.placement,n referenceOffsets,n popper,n reference,n options.modifiers.flip.boundariesElement,n options.modifiers.flip.paddingn );nn popper.setAttribute('x-placement', placement);nn // Apply `position` to popper before anything else becausen // without the position applied we can't guarantee correct computationsn setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });nn return options;n}n”],“names”:,“mappings”:“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”}