{"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/getComputedStyle.js","../../src/dom-utils/isScrollParent.js","../../src/dom-utils/getCompositeRect.js","../../src/dom-utils/getLayoutRect.js","../../src/dom-utils/getParentNode.js","../../src/dom-utils/getScrollParent.js","../../src/dom-utils/listScrollParents.js","../../src/dom-utils/isTableElement.js","../../src/dom-utils/getOffsetParent.js","../../src/enums.js","../../src/utils/orderModifiers.js","../../src/utils/debounce.js","../../src/utils/format.js","../../src/utils/validateModifiers.js","../../src/utils/uniqueBy.js","../../src/utils/getBasePlacement.js","../../src/utils/mergeByName.js","../../src/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 || node instanceof Element;\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 || node instanceof HTMLElement;\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 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 \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return (\n getBoundingClientRect(getDocumentElement(element)).left +\n getWindowScroll(element).scrollLeft\n );\n}\n","// @flow\nimport getWindow from './getWindow';\n\nexport default function getComputedStyle(\n element: Element\n): CSSStyleDeclaration {\n return getWindow(element).getComputedStyle(element);\n}\n","// @flow\nimport getComputedStyle from './getComputedStyle';\n\nexport default function isScrollParent(element: HTMLElement): boolean {\n // Firefox wants us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n","// @flow\nimport type { Rect, VirtualElement, Window } from '../types';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getNodeScroll from './getNodeScroll';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\nimport getWindowScrollBarX from './getWindowScrollBarX';\nimport getDocumentElement from './getDocumentElement';\nimport isScrollParent from './isScrollParent';\n\n// Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\nexport default function getCompositeRect(\n elementOrVirtualElement: Element | VirtualElement,\n offsetParent: Element | Window,\n isFixed: boolean = false\n): Rect {\n const documentElement = getDocumentElement(offsetParent);\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 (\n getNodeName(offsetParent) !== 'body' ||\n // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)\n ) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height,\n };\n}\n","// @flow\nimport type { Rect } from '../types';\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';\nimport getDocumentElement from './getDocumentElement';\n\nexport default function getParentNode(element: Node | ShadowRoot): Node {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (\n // $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n );\n}\n","// @flow\nimport getParentNode from './getParentNode';\nimport isScrollParent from './isScrollParent';\nimport getNodeName from './getNodeName';\nimport { isHTMLElement } from './instanceOf';\n\nexport default function getScrollParent(node: Node): HTMLElement {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}\n","// @flow\nimport getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getNodeName from './getNodeName';\nimport getWindow from './getWindow';\nimport type { Window, VisualViewport } from '../types';\nimport isScrollParent from './isScrollParent';\n\nexport default function listScrollParents(\n element: Node,\n list: Array = []\n): Array {\n const scrollParent = getScrollParent(element);\n const isBody = getNodeName(scrollParent) === 'body';\n const win = getWindow(scrollParent);\n const target = isBody\n ? [win].concat(\n win.visualViewport || [],\n isScrollParent(scrollParent) ? scrollParent : []\n )\n : scrollParent;\n const updatedList = list.concat(target);\n\n return isBody\n ? updatedList\n : // $FlowFixMe: 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\nfunction getTrueOffsetParent(element: Element): ?Element {\n if (\n !isHTMLElement(element) ||\n // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed'\n ) {\n return null;\n }\n\n return element.offsetParent;\n}\n\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 = [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\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 = basePlacements.reduce(\n (acc: Array, placement: BasePlacement) =>\n acc.concat([(`${placement}-${start}`: any), (`${placement}-${end}`: any)]),\n []\n);\nexport const placements: Array = [...basePlacements, auto].reduce(\n (\n acc: Array,\n placement: BasePlacement | typeof auto\n ): Array =>\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 = [\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) {\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>\n): Array> {\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(fn: Function): () => Promise {\n let pending;\n return () => {\n if (!pending) {\n pending = new Promise(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) {\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): 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(arr: Array, fn: T => any): Array {\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>>\n): Array<$Shape>> {\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 OptionsGeneric,\n Modifier,\n Instance,\n VirtualElement,\n} from './types';\nimport getCompositeRect from './dom-utils/getCompositeRect';\nimport getLayoutRect from './dom-utils/getLayoutRect';\nimport listScrollParents from './dom-utils/listScrollParents';\nimport getOffsetParent from './dom-utils/getOffsetParent';\nimport getComputedStyle from './dom-utils/getComputedStyle';\nimport orderModifiers from './utils/orderModifiers';\nimport debounce from './utils/debounce';\nimport validateModifiers from './utils/validateModifiers';\nimport uniqueBy from './utils/uniqueBy';\nimport getBasePlacement from './utils/getBasePlacement';\nimport mergeByName from './utils/mergeByName';\nimport { isElement } from './dom-utils/instanceOf';\nimport { auto } from './enums';\n\nexport type * 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: OptionsGeneric = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute',\n};\n\ntype PopperGeneratorArgs = {\n defaultModifiers?: Array>,\n defaultOptions?: $Shape>,\n};\n\nfunction areValidElements(...args: Array): 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> = defaultOptions\n ): Instance {\n let state: $Shape = {\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 // $FlowFixMe\n ...defaultOptions,\n ...state.options,\n ...options,\n };\n\n state.scrollParents = {\n reference: isElement(reference)\n ? listScrollParents(reference)\n : reference.contextElement\n ? listScrollParents(reference.contextElement)\n : [],\n popper: listScrollParents(popper),\n };\n\n // Orders the modifiers based on their dependencies and `phase`\n // properties\n const orderedModifiers = orderModifiers(\n mergeByName([...defaultModifiers, ...state.options.modifiers])\n );\n\n // Strip out disabled modifiers\n state.orderedModifiers = orderedModifiers.filter(m => m.enabled);\n\n // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n if (__DEV__) {\n const modifiers = uniqueBy(\n [...orderedModifiers, ...state.options.modifiers],\n ({ name }) => name\n );\n\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n const flipModifier = state.orderedModifiers.find(\n ({ name }) => name === 'flip'\n );\n\n if (!flipModifier) {\n console.error(\n [\n 'Popper: \"auto\" placements require the \"flip\" modifier be',\n 'present and enabled to work.',\n ].join(' ')\n );\n }\n }\n\n const {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n } = getComputedStyle(popper);\n\n // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n if (\n [marginTop, marginRight, marginBottom, marginLeft].some(margin =>\n parseFloat(margin)\n )\n ) {\n console.warn(\n [\n 'Popper: CSS \"margin\" styles cannot be used to apply padding',\n 'between the popper and its reference element or boundary.',\n 'To replicate margin, use the `offset` modifier, as well as',\n 'the `padding` option in the `preventOverflow` and `flip`',\n 'modifiers.',\n ].join(' ')\n );\n }\n }\n\n runModifierEffects();\n\n return instance.update();\n },\n\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n const { reference, popper } = state.elements;\n\n // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n if (!areValidElements(reference, popper)) {\n if (__DEV__) {\n console.error(INVALID_ELEMENT_ERROR);\n }\n return;\n }\n\n // Store the reference and popper rects to be read by modifiers\n state.rects = {\n reference: getCompositeRect(\n reference,\n getOffsetParent(popper),\n state.options.strategy === 'fixed'\n ),\n popper: getLayoutRect(popper),\n };\n\n // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n state.reset = false;\n\n state.placement = state.options.placement;\n\n // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n state.orderedModifiers.forEach(\n modifier =>\n (state.modifiersData[modifier.name] = {\n ...modifier.data,\n })\n );\n\n let __debug_loops__ = 0;\n for (let index = 0; index < state.orderedModifiers.length; index++) {\n if (__DEV__) {\n __debug_loops__ += 1;\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n const { fn, options = {}, name } = state.orderedModifiers[index];\n\n if (typeof fn === 'function') {\n state = fn({ state, options, name, instance }) || state;\n }\n }\n },\n\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce<$Shape>(\n () =>\n new Promise<$Shape>(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\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n scroll: boolean,\n resize: boolean,\n};\n\nconst passive = { passive: true };\n\nfunction effect({ state, instance, options }: ModifierArguments) {\n const { scroll = true, resize = true } = options;\n\n const window = getWindow(state.elements.popper);\n const scrollParents = [\n ...state.scrollParents.reference,\n ...state.scrollParents.popper,\n ];\n\n if (scroll) {\n scrollParents.forEach(scrollParent => {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return () => {\n if (scroll) {\n scrollParents.forEach(scrollParent => {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type EventListenersModifier = Modifier<'eventListeners', Options>;\nexport default ({\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: () => {},\n effect,\n data: {},\n}: EventListenersModifier);\n","// @flow\nimport { type 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\n// eslint-disable-next-line import/no-unused-modules\nexport type PopperOffsetsModifier = Modifier<'popperOffsets', {||}>;\nexport default ({\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {},\n}: PopperOffsetsModifier);\n","// @flow\nimport type {\n PositioningStrategy,\n Offsets,\n Modifier,\n ModifierArguments,\n Rect,\n Window,\n} from '../types';\nimport { 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\n// eslint-disable-next-line import/no-unused-modules\nexport type 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: $Shape<{ x: number, y: number, centerOffset: number }>,\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) {\n const { gpuAcceleration = true, adaptive = true } = options;\n\n if (__DEV__) {\n const transitionProperty =\n getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (\n adaptive &&\n ['transform', 'top', 'right', 'bottom', 'left'].some(\n property => transitionProperty.indexOf(property) >= 0\n )\n ) {\n console.warn(\n [\n 'Popper: Detected CSS transitions on at least one of the following',\n 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".',\n '\\n\\n',\n 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow',\n 'for smooth transitions, or remove these properties from the CSS',\n 'transition declaration on the popper element if only transitioning',\n 'opacity or background-color for example.',\n '\\n\\n',\n 'We recommend using the popper element as a wrapper around an inner',\n 'element that can have any CSS property transitioned for animations.',\n ].join(' ')\n );\n }\n }\n\n const commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration,\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = {\n ...state.styles.popper,\n ...mapToStyles({\n ...commonStyles,\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive,\n }),\n };\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = {\n ...state.styles.arrow,\n ...mapToStyles({\n ...commonStyles,\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n }),\n };\n }\n\n state.attributes.popper = {\n ...state.attributes.popper,\n 'data-popper-placement': state.placement,\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ComputeStylesModifier = Modifier<'computeStyles', Options>;\nexport default ({\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {},\n}: ComputeStylesModifier);\n","// @flow\nimport type { Modifier, ModifierArguments } from '../types';\nimport getNodeName from '../dom-utils/getNodeName';\nimport { isHTMLElement } from '../dom-utils/instanceOf';\n\n// This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles({ state }: ModifierArguments<{||}>) {\n Object.keys(state.elements).forEach(name => {\n const style = state.styles[name] || {};\n\n const attributes = state.attributes[name] || {};\n const element = state.elements[name];\n\n // arrow is optional + virtual elements\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n Object.assign(element.style, style);\n\n Object.keys(attributes).forEach(name => {\n const value = attributes[name];\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect({ state }: ModifierArguments<{||}>) {\n const initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0',\n },\n arrow: {\n position: 'absolute',\n },\n reference: {},\n };\n\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\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\n// eslint-disable-next-line import/no-unused-modules\nexport type ApplyStylesModifier = Modifier<'applyStyles', {||}>;\nexport default ({\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect,\n requires: ['computeStyles'],\n}: ApplyStylesModifier);\n","// @flow\nimport type { Placement } from '../enums';\nimport type { ModifierArguments, Modifier, Rect, Offsets } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport { top, left, right, placements } from '../enums';\n\ntype OffsetsFunction = ({\n popper: Rect,\n reference: Rect,\n placement: Placement,\n}) => [?number, ?number];\n\ntype Offset = OffsetsFunction | [?number, ?number];\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n offset: Offset,\n};\n\nexport function distanceAndSkiddingToXY(\n placement: Placement,\n rects: { popper: Rect, reference: Rect },\n offset: Offset\n): Offsets {\n const basePlacement = getBasePlacement(placement);\n const invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n let [skidding, distance] =\n typeof offset === 'function'\n ? offset({\n ...rects,\n placement,\n })\n : offset;\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n\n return [left, right].indexOf(basePlacement) >= 0\n ? { x: distance, y: skidding }\n : { x: skidding, y: distance };\n}\n\nfunction offset({ state, options, name }: ModifierArguments) {\n const { offset = [0, 0] } = options;\n\n const data = placements.reduce((acc, placement) => {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n\n const { x, y } = data[state.placement];\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type OffsetModifier = Modifier<'offset', Options>;\nexport default ({\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset,\n}: OffsetModifier);\n","// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n\nexport default function getOppositePlacement(placement: Placement): Placement {\n return (placement.replace(\n /left|right|bottom|top/g,\n matched => hash[matched]\n ): any);\n}\n","// @flow\nimport type { Placement } from '../enums';\n\nconst hash = { start: 'end', end: 'start' };\n\nexport default function getOppositeVariationPlacement(\n placement: Placement\n): Placement {\n return (placement.replace(/start|end/g, matched => hash[matched]): any);\n}\n","// @flow\nimport getWindow from './getWindow';\n\nexport default function getViewportRect(element: Element) {\n const win = getWindow(element);\n const visualViewport = win.visualViewport;\n\n let width = win.innerWidth;\n let height = win.innerHeight;\n\n // We don't know which browsers have buggy or odd implementations of this, so\n // for now we're only applying it to iOS to fix the keyboard issue.\n // Investigation required\n if (visualViewport && /iPhone|iPod|iPad/.test(navigator.platform)) {\n width = visualViewport.width;\n height = visualViewport.height;\n }\n\n return { width, height, x: 0, y: 0 };\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 {\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\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): { [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\n// eslint-disable-next-line import/no-unused-modules\nexport type 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 = {}\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)\n ? element\n : element.contextElement || getDocumentElement(state.elements.popper),\n boundary,\n rootBoundary\n );\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 ComputedPlacement,\n Boundary,\n RootBoundary,\n} from '../enums';\nimport getVariation from './getVariation';\nimport {\n variationPlacements,\n basePlacements,\n placements as allPlacements,\n} from '../enums';\nimport detectOverflow from './detectOverflow';\nimport getBasePlacement from './getBasePlacement';\n\ntype Options = {\n placement: Placement,\n padding: Padding,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n flipVariations: boolean,\n allowedAutoPlacements?: Array,\n};\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\n\nexport default function computeAutoPlacement(\n state: $Shape,\n options: Options = {}\n): Array {\n const {\n placement,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements = allPlacements,\n } = options;\n\n const variation = getVariation(placement);\n\n const placements = (variation\n ? flipVariations\n ? variationPlacements\n : variationPlacements.filter(\n placement => getVariation(placement) === variation\n )\n : basePlacements\n ).filter(placement => allowedAutoPlacements.indexOf(placement) >= 0);\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\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n mainAxis: boolean,\n altAxis: boolean,\n fallbackPlacements: Array,\n padding: Padding,\n boundary: Boundary,\n rootBoundary: RootBoundary,\n altBoundary: boolean,\n flipVariations: boolean,\n allowedAutoPlacements: Array,\n};\n\nfunction getExpandedFallbackPlacements(placement: Placement): Array {\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) {\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n const {\n mainAxis: checkMainAxis = true,\n altAxis: checkAltAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n padding,\n boundary,\n rootBoundary,\n altBoundary,\n flipVariations = true,\n allowedAutoPlacements,\n } = options;\n\n const preferredPlacement = state.options.placement;\n const basePlacement = getBasePlacement(preferredPlacement);\n const isBasePlacement = basePlacement === preferredPlacement;\n\n const fallbackPlacements =\n specifiedFallbackPlacements ||\n (isBasePlacement || !flipVariations\n ? [getOppositePlacement(preferredPlacement)]\n : getExpandedFallbackPlacements(preferredPlacement));\n\n const placements = [preferredPlacement, ...fallbackPlacements].reduce(\n (acc, placement) => {\n return acc.concat(\n getBasePlacement(placement) === auto\n ? computeAutoPlacement(state, {\n placement,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements,\n })\n : placement\n );\n },\n []\n );\n\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n\n const checksMap = new Map();\n let makeFallbackChecks = true;\n let firstFittingPlacement = placements[0];\n\n for (let i = 0; i < placements.length; i++) {\n const placement = placements[i];\n const basePlacement = getBasePlacement(placement);\n const isStartVariation = getVariation(placement) === start;\n const isVertical = [top, bottom].indexOf(basePlacement) >= 0;\n const len = isVertical ? 'width' : 'height';\n\n const overflow = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n altBoundary,\n padding,\n });\n\n let mainVariationSide: any = isVertical\n ? isStartVariation\n ? right\n : left\n : isStartVariation\n ? bottom\n : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n const altVariationSide: any = getOppositePlacement(mainVariationSide);\n\n const checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(\n overflow[mainVariationSide] <= 0,\n overflow[altVariationSide] <= 0\n );\n }\n\n if (checks.every(check => check)) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n const numberOfChecks = flipVariations ? 3 : 1;\n\n for (let i = numberOfChecks; i > 0; i--) {\n const fittingPlacement = placements.find(placement => {\n const checks = checksMap.get(placement);\n if (checks) {\n return checks.slice(0, i).every(check => check);\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n break;\n }\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type FlipModifier = Modifier<'flip', Options>;\nexport default ({\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: { _skip: false },\n}: FlipModifier);\n","// @flow\n\nexport default function getAltAxis(axis: 'x' | 'y'): 'x' | 'y' {\n return axis === 'x' ? 'y' : 'x';\n}\n","// @flow\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 getOffsetParent from '../dom-utils/getOffsetParent';\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\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n /* Prevents boundaries overflow on the main axis */\n mainAxis: boolean,\n /* Prevents boundaries overflow on the alternate axis */\n altAxis: boolean,\n /* The area to check the popper is overflowing in */\n boundary: Boundary,\n /* If the popper is not overflowing the main area, fallback to this one */\n rootBoundary: RootBoundary,\n /* Use the reference's \"clippingParents\" boundary context */\n altBoundary: boolean,\n /**\n * Allows the popper to overflow from its boundaries to keep it near its\n * reference element\n */\n tether: boolean,\n /* Offsets when the `tether` option should activate */\n tetherOffset: TetherOffset,\n /* Sets a padding to the provided boundary */\n padding: Padding,\n};\n\nfunction preventOverflow({ state, options, name }: ModifierArguments) {\n const {\n mainAxis: checkMainAxis = true,\n altAxis: checkAltAxis = false,\n boundary,\n rootBoundary,\n altBoundary,\n padding,\n tether = true,\n tetherOffset = 0,\n } = options;\n\n const overflow = detectOverflow(state, {\n boundary,\n rootBoundary,\n padding,\n altBoundary,\n });\n const basePlacement = getBasePlacement(state.placement);\n const variation = getVariation(state.placement);\n const isBasePlacement = !variation;\n const mainAxis = getMainAxisFromPlacement(basePlacement);\n const altAxis = getAltAxis(mainAxis);\n const popperOffsets = state.modifiersData.popperOffsets;\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n const tetherOffsetValue =\n typeof tetherOffset === 'function'\n ? tetherOffset({\n ...state.rects,\n placement: state.placement,\n })\n : tetherOffset;\n\n const data = { x: 0, y: 0 };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n const mainSide = mainAxis === 'y' ? top : left;\n const altSide = mainAxis === 'y' ? bottom : right;\n const len = mainAxis === 'y' ? 'height' : 'width';\n const offset = popperOffsets[mainAxis];\n\n const min = 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 arrowOffsetParent =\n state.elements.arrow && getOffsetParent(state.elements.arrow);\n const clientOffset = arrowOffsetParent\n ? mainAxis === 'y'\n ? arrowOffsetParent.clientTop || 0\n : arrowOffsetParent.clientLeft || 0\n : 0;\n\n const offsetModifierValue = state.modifiersData.offset\n ? state.modifiersData.offset[state.placement][mainAxis]\n : 0;\n\n const tetherMin =\n popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\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 popperOffsets[altAxis] = preventedOffset;\n data[altAxis] = preventedOffset - offset;\n }\n\n state.modifiersData[name] = data;\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type PreventOverflowModifier = Modifier<'preventOverflow', Options>;\nexport default ({\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset'],\n}: PreventOverflowModifier);\n","// @flow\nimport type { Modifier, ModifierArguments, Padding } from '../types';\nimport getBasePlacement from '../utils/getBasePlacement';\nimport getLayoutRect from '../dom-utils/getLayoutRect';\nimport contains from '../dom-utils/contains';\nimport getOffsetParent from '../dom-utils/getOffsetParent';\nimport getMainAxisFromPlacement from '../utils/getMainAxisFromPlacement';\nimport within from '../utils/within';\nimport mergePaddingObject from '../utils/mergePaddingObject';\nimport expandToHashMap from '../utils/expandToHashMap';\nimport { left, right, basePlacements, top, bottom } from '../enums';\nimport { isHTMLElement } from '../dom-utils/instanceOf';\n\n// eslint-disable-next-line import/no-unused-modules\nexport type Options = {\n element: HTMLElement | string | null,\n padding: Padding,\n};\n\nfunction arrow({ state, name }: ModifierArguments) {\n const arrowElement = state.elements.arrow;\n const popperOffsets = state.modifiersData.popperOffsets;\n const basePlacement = getBasePlacement(state.placement);\n const axis = getMainAxisFromPlacement(basePlacement);\n const isVertical = [left, right].indexOf(basePlacement) >= 0;\n const len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n const paddingObject = 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 arrowOffsetParent = getOffsetParent(arrowElement);\n const clientSize = arrowOffsetParent\n ? axis === 'y'\n ? arrowOffsetParent.clientHeight || 0\n : arrowOffsetParent.clientWidth || 0\n : 0;\n\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n const min = paddingObject[minProp];\n const max = clientSize - arrowRect[len] - paddingObject[maxProp];\n const center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n const offset = within(min, center, max);\n\n // Prevents breaking syntax highlighting...\n const axisProp: string = axis;\n state.modifiersData[name] = {\n [axisProp]: offset,\n centerOffset: offset - center,\n };\n}\n\nfunction effect({ state, options, name }: ModifierArguments) {\n let { element: arrowElement = '[data-popper-arrow]', padding = 0 } = options;\n\n if (arrowElement == null) {\n return;\n }\n\n // CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (__DEV__) {\n if (!isHTMLElement(arrowElement)) {\n console.error(\n [\n 'Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).',\n 'To use an SVG arrow, wrap it in an HTMLElement that will be used as',\n 'the arrow.',\n ].join(' ')\n );\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (__DEV__) {\n console.error(\n [\n 'Popper: \"arrow\" modifier\\'s `element` must be a child of the popper',\n 'element.',\n ].join(' ')\n );\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[`${name}#persistent`] = {\n padding: mergePaddingObject(\n typeof padding !== 'number'\n ? padding\n : expandToHashMap(padding, basePlacements)\n ),\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type ArrowModifier = Modifier<'arrow', Options>;\nexport default ({\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow'],\n}: ArrowModifier);\n","// @flow\nimport type {\n ModifierArguments,\n Modifier,\n Rect,\n SideObject,\n Offsets,\n} from '../types';\nimport { top, bottom, left, right } from '../enums';\nimport detectOverflow from '../utils/detectOverflow';\n\nfunction getSideOffsets(\n overflow: SideObject,\n rect: Rect,\n preventedOffsets: Offsets = { x: 0, y: 0 }\n): SideObject {\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x,\n };\n}\n\nfunction isAnySideFullyClipped(overflow: SideObject): boolean {\n return [top, right, bottom, left].some(side => overflow[side] >= 0);\n}\n\nfunction hide({ state, name }: ModifierArguments<{||}>) {\n const referenceRect = state.rects.reference;\n const popperRect = state.rects.popper;\n const preventedOffsets = state.modifiersData.preventOverflow;\n\n const referenceOverflow = detectOverflow(state, {\n elementContext: 'reference',\n });\n const popperAltOverflow = detectOverflow(state, {\n altBoundary: true,\n });\n\n const referenceClippingOffsets = getSideOffsets(\n referenceOverflow,\n referenceRect\n );\n const popperEscapeOffsets = getSideOffsets(\n popperAltOverflow,\n popperRect,\n preventedOffsets\n );\n\n const isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n const hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n\n state.modifiersData[name] = {\n referenceClippingOffsets,\n popperEscapeOffsets,\n isReferenceHidden,\n hasPopperEscaped,\n };\n\n state.attributes.popper = {\n ...state.attributes.popper,\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped,\n };\n}\n\n// eslint-disable-next-line import/no-unused-modules\nexport type HideModifier = Modifier<'hide', {||}>;\nexport default ({\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide,\n}: HideModifier);\n","// @flow\nimport { popperGenerator } from './index';\n\nimport eventListeners from './modifiers/eventListeners';\nimport popperOffsets from './modifiers/popperOffsets';\nimport computeStyles from './modifiers/computeStyles';\nimport applyStyles from './modifiers/applyStyles';\nimport offset from './modifiers/offset';\nimport flip from './modifiers/flip';\nimport preventOverflow from './modifiers/preventOverflow';\nimport arrow from './modifiers/arrow';\nimport hide from './modifiers/hide';\n\nimport detectOverflow from './utils/detectOverflow';\n\nexport type * from './types';\n\nconst defaultModifiers = [\n eventListeners,\n popperOffsets,\n computeStyles,\n applyStyles,\n offset,\n flip,\n preventOverflow,\n arrow,\n hide,\n];\n\nconst createPopper = popperGenerator({ defaultModifiers });\n\n// eslint-disable-next-line import/no-unused-modules\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };\n"],"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","getComputedStyle","isScrollParent","overflow","overflowX","overflowY","test","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","scroll","offsets","clientLeft","clientTop","getLayoutRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getParentNode","assignedSlot","parentNode","host","getScrollParent","indexOf","body","listScrollParents","list","scrollParent","isBody","target","concat","visualViewport","updatedList","isTableElement","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","contextElement","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","navigator","platform","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","allowedAutoPlacements","allPlacements","overflows","a","b","getExpandedFallbackPlacements","oppositePlacement","flip","_skip","checkMainAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","preferredPlacement","isBasePlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","numberOfChecks","fittingPlacement","slice","getAltAxis","within","preventOverflow","tether","tetherOffset","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","querySelector","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","eventListeners"],"mappings":"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"}