UNPKG

133 kBSource Map (JSON)View Raw
1{"version":3,"file":"popper.js","sources":["../../src/dom-utils/getBoundingClientRect.js","../../src/dom-utils/getWindow.js","../../src/dom-utils/getWindowScroll.js","../../src/dom-utils/instanceOf.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/getCompositeRect.js","../../src/dom-utils/getLayoutRect.js","../../src/dom-utils/getParentNode.js","../../src/dom-utils/getComputedStyle.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/index.js","../../src/modifiers/eventListeners.js","../../src/utils/getVariation.js","../../src/utils/getMainAxisFromPlacement.js","../../src/utils/computeOffsets.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/dom-utils/getViewportRect.js","../../src/dom-utils/getDocumentRect.js","../../src/dom-utils/getBorders.js","../../src/dom-utils/getDecorations.js","../../src/dom-utils/contains.js","../../src/utils/rectToClientRect.js","../../src/dom-utils/getClippingRect.js","../../src/utils/getFreshSideObject.js","../../src/utils/mergePaddingObject.js","../../src/utils/expandToHashMap.js","../../src/utils/detectOverflow.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.js"],"sourcesContent":["// @flow\nimport type { ClientRectObject, VirtualElement } from '../types';\n\nexport default function getBoundingClientRect(\n element: Element | VirtualElement\n): ClientRectObject {\n const rect = element.getBoundingClientRect();\n\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top,\n };\n}\n","// @flow\n/*:: import type { Window } from '../types'; */\n/*:: declare function getWindow(node: Node | Window): Window; */\n\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n const ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n }\n\n return node;\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\nimport getWindow from './getWindow';\n\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n const OwnElement = getWindow(node).Element;\n return node instanceof OwnElement;\n}\n\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\nfunction isHTMLElement(node) {\n const OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement;\n}\n\nexport { isElement, isHTMLElement };\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: assume body is always available\n return (isElement(element) ? element.ownerDocument : element.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 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';\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 let documentElement;\n const rect = getBoundingClientRect(elementOrVirtualElement);\n\n let scroll = { scrollLeft: 0, scrollTop: 0 };\n let offsets = { x: 0, y: 0 };\n\n if (!isFixed) {\n if (getNodeName(offsetParent) !== 'body') {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if ((documentElement = getDocumentElement(offsetParent))) {\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';\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 return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight,\n };\n}\n","// @flow\nimport getNodeName from './getNodeName';\n\nexport default function getParentNode(element: Node | ShadowRoot): Node {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n document.ownerDocument || // Fallback to ownerDocument if available\n document.documentElement // Or to documentElement if everything else fails\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 getParentNode from './getParentNode';\nimport getComputedStyle from './getComputedStyle';\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: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node)) {\n // Firefox wants us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getComputedStyle(node);\n\n if (/auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX)) {\n return node;\n }\n }\n\n return getScrollParent(getParentNode(node));\n}\n","// @flow\nimport getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getNodeName from './getNodeName';\nimport getWindow from './getWindow';\nimport type { Window } from '../types';\n\nexport default function listScrollParents(\n element: Node,\n list: Array<Element | Window> = []\n): Array<Element | Window> {\n const scrollParent = getScrollParent(element);\n const isBody = getNodeName(scrollParent) === 'body';\n const target = isBody ? getWindow(scrollParent) : scrollParent;\n const updatedList = list.concat(target);\n\n return isBody\n ? updatedList\n : // $FlowFixMe: 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 } from './instanceOf';\nimport isTableElement from './isTableElement';\n\n// https://stackoverflow.com/a/9851769/2059996\nconst isFirefox = () => typeof window.InstallTrigger !== 'undefined';\n\nfunction getTrueOffsetParent(element: Element): ?Element {\n let offsetParent;\n\n if (\n !isHTMLElement(element) ||\n !(offsetParent = element.offsetParent) ||\n // https://github.com/popperjs/popper-core/issues/837\n (isFirefox() && getComputedStyle(offsetParent).position === 'fixed')\n ) {\n return null;\n }\n\n return offsetParent;\n}\n\nexport default function getOffsetParent(element: Element) {\n const window = getWindow(element);\n\n let offsetParent = getTrueOffsetParent(element);\n\n // Find the nearest non-table offsetParent\n while (offsetParent && isTableElement(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (\n offsetParent &&\n getNodeName(offsetParent) === 'body' &&\n getComputedStyle(offsetParent).position === 'static'\n ) {\n return window;\n }\n\n return offsetParent || 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 =\n | HTMLElement\n | Array<HTMLElement>\n | 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>) {\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>>\n): Array<Modifier<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).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 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 (typeof modifier.effect !== 'function') {\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 (!Array.isArray(modifier.requires)) {\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>>>\n): Array<$Shape<Modifier<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 type {\n State,\n Options,\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 { isElement } from './dom-utils/instanceOf';\nimport { auto } from './enums';\n\nexport * from './types';\nexport * 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: Options = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute',\n};\n\ntype PopperGeneratorArgs = {\n defaultModifiers?: Array<Modifier<any>>,\n defaultOptions?: $Shape<Options>,\n};\n\nfunction areValidElements(...args: Array<any>): boolean {\n return !args.some(\n element => !(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(\n reference: Element | VirtualElement,\n popper: HTMLElement,\n options: $Shape<Options> = 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(options) {\n cleanupModifierEffects();\n\n state.options = {\n ...defaultOptions,\n ...state.options,\n ...options,\n };\n\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : [],\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","// @flow\nimport type { ModifierArguments, Modifier } from '../types';\nimport getWindow from '../dom-utils/getWindow';\n\ntype 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\nexport default ({\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: () => {},\n effect,\n data: {},\n}: Modifier<Options>);\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 Math.floor(offsets[mainAxis]) -\n Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] =\n Math.floor(offsets[mainAxis]) +\n Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n\n return offsets;\n}\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\nexport default ({\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {},\n}: Modifier<{||}>);\n","// @flow\nimport type {\n PositioningStrategy,\n Offsets,\n Modifier,\n ModifierArguments,\n Rect,\n Window,\n} from '../types';\nimport { type BasePlacement, top, left, right, bottom } 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';\n\ntype Options = {\n gpuAcceleration: boolean,\n adaptive: boolean,\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 roundOffsets({ x, y }): Offsets {\n const win: Window = window;\n const dpr = win.devicePixelRatio || 1;\n\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0,\n };\n}\n\nexport function mapToStyles({\n popper,\n popperRect,\n placement,\n offsets,\n position,\n gpuAcceleration,\n adaptive,\n}: {\n popper: HTMLElement,\n popperRect: Rect,\n placement: BasePlacement,\n offsets: Offsets,\n position: PositioningStrategy,\n gpuAcceleration: boolean,\n adaptive: boolean,\n}) {\n let { x, y } = roundOffsets(offsets);\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 if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n }\n\n // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n /*:: offsetParent = (offsetParent: Element); */\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n const commonStyles = {\n position,\n ...(adaptive && unsetSides),\n };\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) < 2\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 { gpuAcceleration = true, adaptive = true } = options;\n\n if (__DEV__) {\n const { transitionProperty } = getComputedStyle(state.elements.popper);\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 popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration,\n };\n\n // popper offsets are always available\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 }),\n };\n\n // arrow offsets may not be available\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 }),\n };\n }\n\n state.attributes.popper = {\n ...state.attributes.popper,\n 'data-popper-placement': state.placement,\n };\n}\n\nexport default ({\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {},\n}: Modifier<Options>);\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\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: 'absolute',\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\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 // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n Object.assign(element.style, style);\n\n Object.keys(attributes).forEach(attribute => {\n element.removeAttribute(attribute);\n });\n });\n };\n}\n\nexport default ({\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect,\n requires: ['computeStyles'],\n}: Modifier<{||}>);\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\ntype OffsetsFunction = ({\n popper: Rect,\n reference: Rect,\n placement: Placement,\n}) => [?number, ?number];\n\ntype Offset = OffsetsFunction | [?number, ?number];\n\ntype 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 state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n\n state.modifiersData[name] = data;\n}\n\nexport default ({\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset,\n}: Modifier<Options>);\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 getWindow from './getWindow';\n\nexport default function getViewportRect(element: Element) {\n const win = getWindow(element);\n\n return {\n width: win.innerWidth,\n height: win.innerHeight,\n x: 0,\n y: 0,\n };\n}\n","// @flow\nimport type { Rect } from '../types';\nimport getCompositeRect from './getCompositeRect';\nimport getWindow from './getWindow';\nimport getDocumentElement from './getDocumentElement';\nimport getWindowScroll from './getWindowScroll';\n\nexport default function getDocumentRect(element: HTMLElement): Rect {\n const win = getWindow(element);\n const winScroll = getWindowScroll(element);\n const documentRect = getCompositeRect(getDocumentElement(element), win);\n\n documentRect.height = Math.max(documentRect.height, win.innerHeight);\n documentRect.width = Math.max(documentRect.width, win.innerWidth);\n documentRect.x = -winScroll.scrollLeft;\n documentRect.y = -winScroll.scrollTop;\n\n return documentRect;\n}\n","// @flow\nimport type { SideObject } from '../types';\nimport getComputedStyle from './getComputedStyle';\nimport { isHTMLElement } from './instanceOf';\n\nfunction toNumber(cssValue: string): number {\n return parseFloat(cssValue) || 0;\n}\n\nexport default function getBorders(element: Element): SideObject {\n const computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};\n\n return {\n top: toNumber(computedStyle.borderTopWidth),\n right: toNumber(computedStyle.borderRightWidth),\n bottom: toNumber(computedStyle.borderBottomWidth),\n left: toNumber(computedStyle.borderLeftWidth),\n };\n}\n","// @flow\nimport type { SideObject } from '../types';\nimport getBorders from './getBorders';\nimport getNodeName from './getNodeName';\nimport getWindow from './getWindow';\nimport getWindowScrollBarX from './getWindowScrollBarX';\n\n// Borders + scrollbars\nexport default function getDecorations(element: HTMLElement): SideObject {\n const win = getWindow(element);\n const borders = getBorders(element);\n const isHTML = getNodeName(element) === 'html';\n const winScrollBarX = getWindowScrollBarX(element);\n\n const x = element.clientWidth + borders.right;\n let y = element.clientHeight + borders.bottom;\n\n // HACK:\n // document.documentElement.clientHeight on iOS reports the height of the\n // viewport including the bottom bar, even if the bottom bar isn't visible.\n // If the difference between window innerHeight and html clientHeight is more\n // than 50, we assume it's a mobile bottom bar and ignore scrollbars.\n // * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows\n // is about 17px)\n // * The mobile bar is 114px tall\n if (isHTML && win.innerHeight - element.clientHeight > 50) {\n y = win.innerHeight - borders.bottom;\n }\n\n return {\n top: isHTML ? 0 : element.clientTop,\n right:\n // RTL scrollbar (scrolling containers only)\n element.clientLeft > borders.left\n ? borders.right\n : // LTR scrollbar\n isHTML\n ? win.innerWidth - x - winScrollBarX\n : element.offsetWidth - x,\n bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,\n left: isHTML ? winScrollBarX : element.clientLeft,\n };\n}\n","// @flow\nexport default function contains(parent: Element, child: Element) {\n // $FlowFixMe: hasOwnProperty doesn't seem to work in tests\n const isShadow = Boolean(child.getRootNode && child.getRootNode().host);\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 (isShadow) {\n let next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n }\n // $FlowFixMe: 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 } 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 getDecorations from './getDecorations';\nimport contains from './contains';\nimport rectToClientRect from '../utils/rectToClientRect';\n\nfunction getClientRectFromMixedType(\n element: Element,\n clippingParent: Element | RootBoundary\n): ClientRectObject {\n return clippingParent === viewport\n ? rectToClientRect(getViewportRect(element))\n : isHTMLElement(clippingParent)\n ? getBoundingClientRect(clippingParent)\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(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: https://github.com/facebook/flow/issues/1414\n return clippingParents.filter(\n clippingParent =>\n isElement(clippingParent) && contains(clippingParent, clipperElement)\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): 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);\n const decorations = getDecorations(\n isHTMLElement(clippingParent)\n ? clippingParent\n : getDocumentElement(element)\n );\n\n accRect.top = Math.max(rect.top + decorations.top, accRect.top);\n accRect.right = Math.min(rect.right - decorations.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left + decorations.left, accRect.left);\n\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\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 { 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 } from '../types';\nimport type { Placement, Boundary, RootBoundary, Context } from '../enums';\nimport getBoundingClientRect from '../dom-utils/getBoundingClientRect';\nimport getClippingRect from '../dom-utils/getClippingRect';\nimport getDocumentElement from '../dom-utils/getDocumentElement';\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\ntype Options = {\n placement: Placement,\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 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 referenceElement = state.elements.reference;\n const popperRect = state.rects.popper;\n const element = state.elements[altBoundary ? altContext : elementContext];\n\n const clippingClientRect = getClippingRect(\n isElement(element) ? element : getDocumentElement(state.elements.popper),\n boundary,\n rootBoundary\n );\n const referenceClientRect = getBoundingClientRect(referenceElement);\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 { State, Padding } from '../types';\nimport type {\n Placement,\n BasePlacement,\n VariationPlacement,\n Boundary,\n RootBoundary,\n ComputedPlacement,\n} from '../enums';\nimport getVariation from './getVariation';\nimport { variationPlacements, basePlacements } 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};\n\ntype OverflowsMap = {\n [BasePlacement | VariationPlacement]: number,\n};\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 } = 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 // $FlowFixMe: Flow seems to have problems with two array unions...\n const overflows: OverflowsMap = placements.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\ntype Options = {\n fallbackPlacements: Array<Placement>,\n padding: Padding,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n flipVariations: boolean,\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 fallbackPlacements: specifiedFallbackPlacements,\n padding,\n boundary,\n rootBoundary,\n flipVariations = true,\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 })\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 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 overflow[basePlacement] <= 0,\n overflow[mainVariationSide] <= 0,\n overflow[altVariationSide] <= 0,\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\nexport default ({\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: { _skip: false },\n}: Modifier<Options>);\n","// @flow\n\nexport default function getAltAxis(axis: 'x' | 'y'): 'x' | 'y' {\n return axis === 'x' ? 'y' : 'x';\n}\n","// @flow\n\nexport default function within(\n min: number,\n value: number,\n max: number\n): number {\n return Math.max(min, Math.min(value, max));\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 from '../utils/within';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport detectOverflow from '../utils/detectOverflow';\nimport getVariation from '../utils/getVariation';\nimport getFreshSideObject from '../utils/getFreshSideObject';\n\ntype TetherOffset =\n | (({\n popper: Rect,\n reference: Rect,\n placement: Placement,\n }) => number)\n | number;\n\ntype 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 /**\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 padding,\n tether = true,\n tetherOffset = 0,\n } = options;\n\n const overflow = detectOverflow(state, { boundary, rootBoundary, padding });\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\n const data = { x: 0, y: 0 };\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 = popperOffsets[mainAxis] + overflow[mainSide];\n const max = popperOffsets[mainAxis] - 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 tetherOffsetValue\n : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n const maxOffset = isBasePlacement\n ? -referenceRect[len] / 2 +\n additive +\n arrowLen +\n arrowPaddingMax +\n tetherOffsetValue\n : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n\n const offsetModifierValue = state.modifiersData.offset\n ? state.modifiersData.offset[state.placement][mainAxis]\n : 0;\n const tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue;\n const tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n const preventedOffset = within(\n tether ? Math.min(min, tetherMin) : min,\n offset,\n tether ? Math.max(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 min = offset + overflow[mainSide];\n const max = offset - overflow[altSide];\n\n const preventedOffset = within(min, offset, max);\n\n state.modifiersData.popperOffsets[altAxis] = preventedOffset;\n data[altAxis] = preventedOffset - offset;\n }\n\n state.modifiersData[name] = data;\n}\n\nexport default ({\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset'],\n}: Modifier<Options>);\n","// @flow\nimport type { Modifier, ModifierArguments, Padding } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport contains from '../dom-utils/contains';\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';\n\ntype Options = {\n element: HTMLElement | string,\n padding: Padding,\n};\n\nfunction arrow({ state, name }: 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) {\n return;\n }\n\n const paddingObject = state.modifiersData[`${name}#persistent`].padding;\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 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 center = within(\n paddingObject[minProp],\n state.rects.popper[len] / 2 - arrowRect[len] / 2 + centerToReference,\n state.rects.popper[len] - arrowRect[len] - paddingObject[maxProp]\n );\n\n // Prevents breaking syntax highlighting...\n const axisProp: string = axis;\n state.modifiersData[name] = { [axisProp]: center };\n}\n\nfunction effect({ state, options, name }: ModifierArguments<Options>) {\n let { element: arrowElement = '[data-popper-arrow]', padding = 0 } = options;\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 (!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 state.modifiersData[`${name}#persistent`] = {\n padding: mergePaddingObject(\n typeof padding !== 'number'\n ? padding\n : expandToHashMap(padding, basePlacements)\n ),\n };\n}\n\nexport default ({\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow'],\n}: Modifier<Options>);\n","// @flow\nimport type {\n ModifierArguments,\n Modifier,\n Rect,\n Options,\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<Options>) {\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\nexport default ({\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide,\n}: Modifier<Options>);\n","// @flow\nimport { popperGenerator } from './index';\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\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 };\n"],"names":["getBoundingClientRect","element","rect","width","height","top","right","bottom","left","x","y","getWindow","node","toString","ownerDocument","defaultView","window","getWindowScroll","win","scrollLeft","pageXOffset","scrollTop","pageYOffset","isElement","OwnElement","Element","isHTMLElement","HTMLElement","getHTMLElementScroll","getNodeScroll","getNodeName","nodeName","toLowerCase","getDocumentElement","document","documentElement","getWindowScrollBarX","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","scroll","offsets","clientLeft","clientTop","getLayoutRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getParentNode","parentNode","host","getComputedStyle","getScrollParent","indexOf","body","overflow","overflowX","overflowY","test","listScrollParents","list","scrollParent","isBody","target","updatedList","concat","isTableElement","isFirefox","InstallTrigger","getTrueOffsetParent","position","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","Map","visited","Set","result","forEach","modifier","set","name","sort","add","requires","requiresIfExists","dep","has","depModifier","get","push","orderModifiers","orderedModifiers","phase","filter","debounce","fn","pending","Promise","resolve","then","undefined","format","str","args","p","c","replace","INVALID_MODIFIER_ERROR","MISSING_DEPENDENCY_ERROR","VALID_PROPERTIES","validateModifiers","Object","keys","key","console","error","String","enabled","join","effect","Array","isArray","s","requirement","find","mod","uniqueBy","arr","identifiers","item","identifier","getBasePlacement","split","mergeByName","merged","current","existing","options","data","INVALID_ELEMENT_ERROR","INFINITE_LOOP_ERROR","DEFAULT_OPTIONS","strategy","areValidElements","some","popperGenerator","generatorOptions","defaultModifiers","defaultOptions","createPopper","state","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","cleanupModifierEffects","scrollParents","m","flipModifier","marginTop","marginRight","marginBottom","marginLeft","margin","parseFloat","warn","runModifierEffects","update","forceUpdate","rects","reset","__debug_loops__","index","length","destroy","onFirstUpdate","cleanupFn","noopFn","passive","resize","addEventListener","removeEventListener","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","len","Math","floor","ceil","popperOffsets","unsetSides","roundOffsets","dpr","devicePixelRatio","round","mapToStyles","popperRect","gpuAcceleration","adaptive","hasX","hasOwnProperty","hasY","sideX","sideY","clientHeight","clientWidth","commonStyles","transform","computeStyles","transitionProperty","property","arrow","applyStyles","style","assign","value","removeAttribute","setAttribute","initialStyles","styleProperties","attribute","distanceAndSkiddingToXY","offset","invertDistance","skidding","distance","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getViewportRect","innerWidth","innerHeight","getDocumentRect","winScroll","documentRect","max","toNumber","cssValue","getBorders","computedStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","getDecorations","borders","isHTML","winScrollBarX","contains","parent","child","isShadow","Boolean","getRootNode","next","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","decorations","min","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","elementContext","altBoundary","padding","altContext","referenceElement","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","axis","computeAutoPlacement","flipVariations","overflows","a","b","getExpandedFallbackPlacements","oppositePlacement","flip","_skip","specifiedFallbackPlacements","fallbackPlacements","preferredPlacement","isBasePlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","numberOfChecks","fittingPlacement","slice","getAltAxis","within","preventOverflow","checkMainAxis","altAxis","checkAltAxis","tether","tetherOffset","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","minProp","maxProp","endDiff","startDiff","centerToReference","center","axisProp","querySelector","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","eventListeners"],"mappings":"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"}
\No newline at end of file