summaryrefslogtreecommitdiffstats
path: root/npm_assets/node_modules/popper.js/src/modifiers
diff options
context:
space:
mode:
Diffstat (limited to 'npm_assets/node_modules/popper.js/src/modifiers')
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/applyStyle.js73
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/arrow.js89
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/computeStyle.js112
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/flip.js146
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/hide.js46
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/index.js369
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/inner.js27
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/keepTogether.js26
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/offset.js194
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/preventOverflow.js89
-rw-r--r--npm_assets/node_modules/popper.js/src/modifiers/shift.js31
11 files changed, 1202 insertions, 0 deletions
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/applyStyle.js b/npm_assets/node_modules/popper.js/src/modifiers/applyStyle.js
new file mode 100644
index 0000000..8f38d3b
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/applyStyle.js
@@ -0,0 +1,73 @@
+import setStyles from '../utils/setStyles';
+import setAttributes from '../utils/setAttributes';
+import getReferenceOffsets from '../utils/getReferenceOffsets';
+import computeAutoPlacement from '../utils/computeAutoPlacement';
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} data.styles - List of style properties - values to apply to popper element
+ * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The same data object
+ */
+export default function applyStyle(data) {
+ // any property present in `data.styles` will be applied to the popper,
+ // in this way we can make the 3rd party modifiers add custom styles to it
+ // Be aware, modifiers could override the properties defined in the previous
+ // lines of this modifier!
+ setStyles(data.instance.popper, data.styles);
+
+ // any property present in `data.attributes` will be applied to the popper,
+ // they will be set as HTML attributes of the element
+ setAttributes(data.instance.popper, data.attributes);
+
+ // if arrowElement is defined and arrowStyles has some properties
+ if (data.arrowElement && Object.keys(data.arrowStyles).length) {
+ setStyles(data.arrowElement, data.arrowStyles);
+ }
+
+ return data;
+}
+
+/**
+ * Set the x-placement attribute before everything else because it could be used
+ * to add margins to the popper margins needs to be calculated to get the
+ * correct popper offsets.
+ * @method
+ * @memberof Popper.modifiers
+ * @param {HTMLElement} reference - The reference element used to position the popper
+ * @param {HTMLElement} popper - The HTML element used as popper
+ * @param {Object} options - Popper.js options
+ */
+export function applyStyleOnLoad(
+ reference,
+ popper,
+ options,
+ modifierOptions,
+ state
+) {
+ // compute reference element offsets
+ const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);
+
+ // compute auto placement, store placement inside the data object,
+ // modifiers will be able to edit `placement` if needed
+ // and refer to originalPlacement to know the original value
+ const placement = computeAutoPlacement(
+ options.placement,
+ referenceOffsets,
+ popper,
+ reference,
+ options.modifiers.flip.boundariesElement,
+ options.modifiers.flip.padding
+ );
+
+ popper.setAttribute('x-placement', placement);
+
+ // Apply `position` to popper before anything else because
+ // without the position applied we can't guarantee correct computations
+ setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });
+
+ return options;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/arrow.js b/npm_assets/node_modules/popper.js/src/modifiers/arrow.js
new file mode 100644
index 0000000..5b68920
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/arrow.js
@@ -0,0 +1,89 @@
+import getClientRect from '../utils/getClientRect';
+import getOuterSizes from '../utils/getOuterSizes';
+import isModifierRequired from '../utils/isModifierRequired';
+import getStyleComputedProperty from '../utils/getStyleComputedProperty';
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function arrow(data, options) {
+ // arrow depends on keepTogether in order to work
+ if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
+ return data;
+ }
+
+ let arrowElement = options.element;
+
+ // if arrowElement is a string, suppose it's a CSS selector
+ if (typeof arrowElement === 'string') {
+ arrowElement = data.instance.popper.querySelector(arrowElement);
+
+ // if arrowElement is not found, don't run the modifier
+ if (!arrowElement) {
+ return data;
+ }
+ } else {
+ // if the arrowElement isn't a query selector we must check that the
+ // provided DOM node is child of its popper node
+ if (!data.instance.popper.contains(arrowElement)) {
+ console.warn(
+ 'WARNING: `arrow.element` must be child of its popper element!'
+ );
+ return data;
+ }
+ }
+
+ const placement = data.placement.split('-')[0];
+ const { popper, reference } = data.offsets;
+ const isVertical = ['left', 'right'].indexOf(placement) !== -1;
+
+ const len = isVertical ? 'height' : 'width';
+ const sideCapitalized = isVertical ? 'Top' : 'Left';
+ const side = sideCapitalized.toLowerCase();
+ const altSide = isVertical ? 'left' : 'top';
+ const opSide = isVertical ? 'bottom' : 'right';
+ const arrowElementSize = getOuterSizes(arrowElement)[len];
+
+ //
+ // extends keepTogether behavior making sure the popper and its
+ // reference have enough pixels in conjunction
+ //
+
+ // top/left side
+ if (reference[opSide] - arrowElementSize < popper[side]) {
+ data.offsets.popper[side] -=
+ popper[side] - (reference[opSide] - arrowElementSize);
+ }
+ // bottom/right side
+ if (reference[side] + arrowElementSize > popper[opSide]) {
+ data.offsets.popper[side] +=
+ reference[side] + arrowElementSize - popper[opSide];
+ }
+ data.offsets.popper = getClientRect(data.offsets.popper);
+
+ // compute center of the popper
+ const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
+
+ // Compute the sideValue using the updated popper offsets
+ // take popper margin in account because we don't have this info available
+ const css = getStyleComputedProperty(data.instance.popper);
+ const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);
+ const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);
+ let sideValue =
+ center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
+
+ // prevent arrowElement from being placed not contiguously to its popper
+ sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
+
+ data.arrowElement = arrowElement;
+ data.offsets.arrow = {
+ [side]: Math.round(sideValue),
+ [altSide]: '', // make sure to unset any eventual altSide value from the DOM node
+ };
+
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/computeStyle.js b/npm_assets/node_modules/popper.js/src/modifiers/computeStyle.js
new file mode 100644
index 0000000..55e0200
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/computeStyle.js
@@ -0,0 +1,112 @@
+import getSupportedPropertyName from '../utils/getSupportedPropertyName';
+import find from '../utils/find';
+import getOffsetParent from '../utils/getOffsetParent';
+import getBoundingClientRect from '../utils/getBoundingClientRect';
+import getRoundedOffsets from '../utils/getRoundedOffsets';
+import isBrowser from '../utils/isBrowser';
+
+const isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function computeStyle(data, options) {
+ const { x, y } = options;
+ const { popper } = data.offsets;
+
+ // Remove this legacy support in Popper.js v2
+ const legacyGpuAccelerationOption = find(
+ data.instance.modifiers,
+ modifier => modifier.name === 'applyStyle'
+ ).gpuAcceleration;
+ if (legacyGpuAccelerationOption !== undefined) {
+ console.warn(
+ 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'
+ );
+ }
+ const gpuAcceleration =
+ legacyGpuAccelerationOption !== undefined
+ ? legacyGpuAccelerationOption
+ : options.gpuAcceleration;
+
+ const offsetParent = getOffsetParent(data.instance.popper);
+ const offsetParentRect = getBoundingClientRect(offsetParent);
+
+ // Styles
+ const styles = {
+ position: popper.position,
+ };
+
+ const offsets = getRoundedOffsets(
+ data,
+ window.devicePixelRatio < 2 || !isFirefox
+ );
+
+ const sideA = x === 'bottom' ? 'top' : 'bottom';
+ const sideB = y === 'right' ? 'left' : 'right';
+
+ // if gpuAcceleration is set to `true` and transform is supported,
+ // we use `translate3d` to apply the position to the popper we
+ // automatically use the supported prefixed version if needed
+ const prefixedProperty = getSupportedPropertyName('transform');
+
+ // now, let's make a step back and look at this code closely (wtf?)
+ // If the content of the popper grows once it's been positioned, it
+ // may happen that the popper gets misplaced because of the new content
+ // overflowing its reference element
+ // To avoid this problem, we provide two options (x and y), which allow
+ // the consumer to define the offset origin.
+ // If we position a popper on top of a reference element, we can set
+ // `x` to `top` to make the popper grow towards its top instead of
+ // its bottom.
+ let left, top;
+ if (sideA === 'bottom') {
+ // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)
+ // and not the bottom of the html element
+ if (offsetParent.nodeName === 'HTML') {
+ top = -offsetParent.clientHeight + offsets.bottom;
+ } else {
+ top = -offsetParentRect.height + offsets.bottom;
+ }
+ } else {
+ top = offsets.top;
+ }
+ if (sideB === 'right') {
+ if (offsetParent.nodeName === 'HTML') {
+ left = -offsetParent.clientWidth + offsets.right;
+ } else {
+ left = -offsetParentRect.width + offsets.right;
+ }
+ } else {
+ left = offsets.left;
+ }
+ if (gpuAcceleration && prefixedProperty) {
+ styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;
+ styles[sideA] = 0;
+ styles[sideB] = 0;
+ styles.willChange = 'transform';
+ } else {
+ // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
+ const invertTop = sideA === 'bottom' ? -1 : 1;
+ const invertLeft = sideB === 'right' ? -1 : 1;
+ styles[sideA] = top * invertTop;
+ styles[sideB] = left * invertLeft;
+ styles.willChange = `${sideA}, ${sideB}`;
+ }
+
+ // Attributes
+ const attributes = {
+ 'x-placement': data.placement,
+ };
+
+ // Update `data` attributes, styles and arrowStyles
+ data.attributes = { ...attributes, ...data.attributes };
+ data.styles = { ...styles, ...data.styles };
+ data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };
+
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/flip.js b/npm_assets/node_modules/popper.js/src/modifiers/flip.js
new file mode 100644
index 0000000..109b4e9
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/flip.js
@@ -0,0 +1,146 @@
+import getOppositePlacement from '../utils/getOppositePlacement';
+import getOppositeVariation from '../utils/getOppositeVariation';
+import getPopperOffsets from '../utils/getPopperOffsets';
+import runModifiers from '../utils/runModifiers';
+import getBoundaries from '../utils/getBoundaries';
+import isModifierEnabled from '../utils/isModifierEnabled';
+import clockwise from '../utils/clockwise';
+
+const BEHAVIORS = {
+ FLIP: 'flip',
+ CLOCKWISE: 'clockwise',
+ COUNTERCLOCKWISE: 'counterclockwise',
+};
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function flip(data, options) {
+ // if `inner` modifier is enabled, we can't use the `flip` modifier
+ if (isModifierEnabled(data.instance.modifiers, 'inner')) {
+ return data;
+ }
+
+ if (data.flipped && data.placement === data.originalPlacement) {
+ // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
+ return data;
+ }
+
+ const boundaries = getBoundaries(
+ data.instance.popper,
+ data.instance.reference,
+ options.padding,
+ options.boundariesElement,
+ data.positionFixed
+ );
+
+ let placement = data.placement.split('-')[0];
+ let placementOpposite = getOppositePlacement(placement);
+ let variation = data.placement.split('-')[1] || '';
+
+ let flipOrder = [];
+
+ switch (options.behavior) {
+ case BEHAVIORS.FLIP:
+ flipOrder = [placement, placementOpposite];
+ break;
+ case BEHAVIORS.CLOCKWISE:
+ flipOrder = clockwise(placement);
+ break;
+ case BEHAVIORS.COUNTERCLOCKWISE:
+ flipOrder = clockwise(placement, true);
+ break;
+ default:
+ flipOrder = options.behavior;
+ }
+
+ flipOrder.forEach((step, index) => {
+ if (placement !== step || flipOrder.length === index + 1) {
+ return data;
+ }
+
+ placement = data.placement.split('-')[0];
+ placementOpposite = getOppositePlacement(placement);
+
+ const popperOffsets = data.offsets.popper;
+ const refOffsets = data.offsets.reference;
+
+ // using floor because the reference offsets may contain decimals we are not going to consider here
+ const floor = Math.floor;
+ const overlapsRef =
+ (placement === 'left' &&
+ floor(popperOffsets.right) > floor(refOffsets.left)) ||
+ (placement === 'right' &&
+ floor(popperOffsets.left) < floor(refOffsets.right)) ||
+ (placement === 'top' &&
+ floor(popperOffsets.bottom) > floor(refOffsets.top)) ||
+ (placement === 'bottom' &&
+ floor(popperOffsets.top) < floor(refOffsets.bottom));
+
+ const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
+ const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
+ const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
+ const overflowsBottom =
+ floor(popperOffsets.bottom) > floor(boundaries.bottom);
+
+ const overflowsBoundaries =
+ (placement === 'left' && overflowsLeft) ||
+ (placement === 'right' && overflowsRight) ||
+ (placement === 'top' && overflowsTop) ||
+ (placement === 'bottom' && overflowsBottom);
+
+ // flip the variation if required
+ const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
+
+ // flips variation if reference element overflows boundaries
+ const flippedVariationByRef =
+ !!options.flipVariations &&
+ ((isVertical && variation === 'start' && overflowsLeft) ||
+ (isVertical && variation === 'end' && overflowsRight) ||
+ (!isVertical && variation === 'start' && overflowsTop) ||
+ (!isVertical && variation === 'end' && overflowsBottom));
+
+ // flips variation if popper content overflows boundaries
+ const flippedVariationByContent =
+ !!options.flipVariationsByContent &&
+ ((isVertical && variation === 'start' && overflowsRight) ||
+ (isVertical && variation === 'end' && overflowsLeft) ||
+ (!isVertical && variation === 'start' && overflowsBottom) ||
+ (!isVertical && variation === 'end' && overflowsTop));
+
+ const flippedVariation = flippedVariationByRef || flippedVariationByContent;
+
+ if (overlapsRef || overflowsBoundaries || flippedVariation) {
+ // this boolean to detect any flip loop
+ data.flipped = true;
+
+ if (overlapsRef || overflowsBoundaries) {
+ placement = flipOrder[index + 1];
+ }
+
+ if (flippedVariation) {
+ variation = getOppositeVariation(variation);
+ }
+
+ data.placement = placement + (variation ? '-' + variation : '');
+
+ // this object contains `position`, we want to preserve it along with
+ // any additional property we may add in the future
+ data.offsets.popper = {
+ ...data.offsets.popper,
+ ...getPopperOffsets(
+ data.instance.popper,
+ data.offsets.reference,
+ data.placement
+ ),
+ };
+
+ data = runModifiers(data.instance.modifiers, data, 'flip');
+ }
+ });
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/hide.js b/npm_assets/node_modules/popper.js/src/modifiers/hide.js
new file mode 100644
index 0000000..4527438
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/hide.js
@@ -0,0 +1,46 @@
+import isModifierRequired from '../utils/isModifierRequired';
+import find from '../utils/find';
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function hide(data) {
+ if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
+ return data;
+ }
+
+ const refRect = data.offsets.reference;
+ const bound = find(
+ data.instance.modifiers,
+ modifier => modifier.name === 'preventOverflow'
+ ).boundaries;
+
+ if (
+ refRect.bottom < bound.top ||
+ refRect.left > bound.right ||
+ refRect.top > bound.bottom ||
+ refRect.right < bound.left
+ ) {
+ // Avoid unnecessary DOM access if visibility hasn't changed
+ if (data.hide === true) {
+ return data;
+ }
+
+ data.hide = true;
+ data.attributes['x-out-of-boundaries'] = '';
+ } else {
+ // Avoid unnecessary DOM access if visibility hasn't changed
+ if (data.hide === false) {
+ return data;
+ }
+
+ data.hide = false;
+ data.attributes['x-out-of-boundaries'] = false;
+ }
+
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/index.js b/npm_assets/node_modules/popper.js/src/modifiers/index.js
new file mode 100644
index 0000000..3fd648a
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/index.js
@@ -0,0 +1,369 @@
+import applyStyle, { applyStyleOnLoad } from './applyStyle';
+import computeStyle from './computeStyle';
+import arrow from './arrow';
+import flip from './flip';
+import keepTogether from './keepTogether';
+import offset from './offset';
+import preventOverflow from './preventOverflow';
+import shift from './shift';
+import hide from './hide';
+import inner from './inner';
+
+/**
+ * Modifier function, each modifier can have a function of this type assigned
+ * to its `fn` property.<br />
+ * These functions will be called on each update, this means that you must
+ * make sure they are performant enough to avoid performance bottlenecks.
+ *
+ * @function ModifierFn
+ * @argument {dataObject} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {dataObject} The data object, properly modified
+ */
+
+/**
+ * Modifiers are plugins used to alter the behavior of your poppers.<br />
+ * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
+ * needed by the library.
+ *
+ * Usually you don't want to override the `order`, `fn` and `onLoad` props.
+ * All the other properties are configurations that could be tweaked.
+ * @namespace modifiers
+ */
+export default {
+ /**
+ * Modifier used to shift the popper on the start or end of its reference
+ * element.<br />
+ * It will read the variation of the `placement` property.<br />
+ * It can be one either `-end` or `-start`.
+ * @memberof modifiers
+ * @inner
+ */
+ shift: {
+ /** @prop {number} order=100 - Index used to define the order of execution */
+ order: 100,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: shift,
+ },
+
+ /**
+ * The `offset` modifier can shift your popper on both its axis.
+ *
+ * It accepts the following units:
+ * - `px` or unit-less, interpreted as pixels
+ * - `%` or `%r`, percentage relative to the length of the reference element
+ * - `%p`, percentage relative to the length of the popper element
+ * - `vw`, CSS viewport width unit
+ * - `vh`, CSS viewport height unit
+ *
+ * For length is intended the main axis relative to the placement of the popper.<br />
+ * This means that if the placement is `top` or `bottom`, the length will be the
+ * `width`. In case of `left` or `right`, it will be the `height`.
+ *
+ * You can provide a single value (as `Number` or `String`), or a pair of values
+ * as `String` divided by a comma or one (or more) white spaces.<br />
+ * The latter is a deprecated method because it leads to confusion and will be
+ * removed in v2.<br />
+ * Additionally, it accepts additions and subtractions between different units.
+ * Note that multiplications and divisions aren't supported.
+ *
+ * Valid examples are:
+ * ```
+ * 10
+ * '10%'
+ * '10, 10'
+ * '10%, 10'
+ * '10 + 10%'
+ * '10 - 5vh + 3%'
+ * '-10px + 5vh, 5px - 6%'
+ * ```
+ * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
+ * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
+ * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ offset: {
+ /** @prop {number} order=200 - Index used to define the order of execution */
+ order: 200,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: offset,
+ /** @prop {Number|String} offset=0
+ * The offset value as described in the modifier description
+ */
+ offset: 0,
+ },
+
+ /**
+ * Modifier used to prevent the popper from being positioned outside the boundary.
+ *
+ * A scenario exists where the reference itself is not within the boundaries.<br />
+ * We can say it has "escaped the boundaries" — or just "escaped".<br />
+ * In this case we need to decide whether the popper should either:
+ *
+ * - detach from the reference and remain "trapped" in the boundaries, or
+ * - if it should ignore the boundary and "escape with its reference"
+ *
+ * When `escapeWithReference` is set to`true` and reference is completely
+ * outside its boundaries, the popper will overflow (or completely leave)
+ * the boundaries in order to remain attached to the edge of the reference.
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ preventOverflow: {
+ /** @prop {number} order=300 - Index used to define the order of execution */
+ order: 300,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: preventOverflow,
+ /**
+ * @prop {Array} [priority=['left','right','top','bottom']]
+ * Popper will try to prevent overflow following these priorities by default,
+ * then, it could overflow on the left and on top of the `boundariesElement`
+ */
+ priority: ['left', 'right', 'top', 'bottom'],
+ /**
+ * @prop {number} padding=5
+ * Amount of pixel used to define a minimum distance between the boundaries
+ * and the popper. This makes sure the popper always has a little padding
+ * between the edges of its container
+ */
+ padding: 5,
+ /**
+ * @prop {String|HTMLElement} boundariesElement='scrollParent'
+ * Boundaries used by the modifier. Can be `scrollParent`, `window`,
+ * `viewport` or any DOM element.
+ */
+ boundariesElement: 'scrollParent',
+ },
+
+ /**
+ * Modifier used to make sure the reference and its popper stay near each other
+ * without leaving any gap between the two. Especially useful when the arrow is
+ * enabled and you want to ensure that it points to its reference element.
+ * It cares only about the first axis. You can still have poppers with margin
+ * between the popper and its reference element.
+ * @memberof modifiers
+ * @inner
+ */
+ keepTogether: {
+ /** @prop {number} order=400 - Index used to define the order of execution */
+ order: 400,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: keepTogether,
+ },
+
+ /**
+ * This modifier is used to move the `arrowElement` of the popper to make
+ * sure it is positioned between the reference element and its popper element.
+ * It will read the outer size of the `arrowElement` node to detect how many
+ * pixels of conjunction are needed.
+ *
+ * It has no effect if no `arrowElement` is provided.
+ * @memberof modifiers
+ * @inner
+ */
+ arrow: {
+ /** @prop {number} order=500 - Index used to define the order of execution */
+ order: 500,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: arrow,
+ /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
+ element: '[x-arrow]',
+ },
+
+ /**
+ * Modifier used to flip the popper's placement when it starts to overlap its
+ * reference element.
+ *
+ * Requires the `preventOverflow` modifier before it in order to work.
+ *
+ * **NOTE:** this modifier will interrupt the current update cycle and will
+ * restart it if it detects the need to flip the placement.
+ * @memberof modifiers
+ * @inner
+ */
+ flip: {
+ /** @prop {number} order=600 - Index used to define the order of execution */
+ order: 600,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: flip,
+ /**
+ * @prop {String|Array} behavior='flip'
+ * The behavior used to change the popper's placement. It can be one of
+ * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
+ * placements (with optional variations)
+ */
+ behavior: 'flip',
+ /**
+ * @prop {number} padding=5
+ * The popper will flip if it hits the edges of the `boundariesElement`
+ */
+ padding: 5,
+ /**
+ * @prop {String|HTMLElement} boundariesElement='viewport'
+ * The element which will define the boundaries of the popper position.
+ * The popper will never be placed outside of the defined boundaries
+ * (except if `keepTogether` is enabled)
+ */
+ boundariesElement: 'viewport',
+ /**
+ * @prop {Boolean} flipVariations=false
+ * The popper will switch placement variation between `-start` and `-end` when
+ * the reference element overlaps its boundaries.
+ *
+ * The original placement should have a set variation.
+ */
+ flipVariations: false,
+ /**
+ * @prop {Boolean} flipVariationsByContent=false
+ * The popper will switch placement variation between `-start` and `-end` when
+ * the popper element overlaps its reference boundaries.
+ *
+ * The original placement should have a set variation.
+ */
+ flipVariationsByContent: false,
+ },
+
+ /**
+ * Modifier used to make the popper flow toward the inner of the reference element.
+ * By default, when this modifier is disabled, the popper will be placed outside
+ * the reference element.
+ * @memberof modifiers
+ * @inner
+ */
+ inner: {
+ /** @prop {number} order=700 - Index used to define the order of execution */
+ order: 700,
+ /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
+ enabled: false,
+ /** @prop {ModifierFn} */
+ fn: inner,
+ },
+
+ /**
+ * Modifier used to hide the popper when its reference element is outside of the
+ * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
+ * be used to hide with a CSS selector the popper when its reference is
+ * out of boundaries.
+ *
+ * Requires the `preventOverflow` modifier before it in order to work.
+ * @memberof modifiers
+ * @inner
+ */
+ hide: {
+ /** @prop {number} order=800 - Index used to define the order of execution */
+ order: 800,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: hide,
+ },
+
+ /**
+ * Computes the style that will be applied to the popper element to gets
+ * properly positioned.
+ *
+ * Note that this modifier will not touch the DOM, it just prepares the styles
+ * so that `applyStyle` modifier can apply it. This separation is useful
+ * in case you need to replace `applyStyle` with a custom implementation.
+ *
+ * This modifier has `850` as `order` value to maintain backward compatibility
+ * with previous versions of Popper.js. Expect the modifiers ordering method
+ * to change in future major versions of the library.
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ computeStyle: {
+ /** @prop {number} order=850 - Index used to define the order of execution */
+ order: 850,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: computeStyle,
+ /**
+ * @prop {Boolean} gpuAcceleration=true
+ * If true, it uses the CSS 3D transformation to position the popper.
+ * Otherwise, it will use the `top` and `left` properties
+ */
+ gpuAcceleration: true,
+ /**
+ * @prop {string} [x='bottom']
+ * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
+ * Change this if your popper should grow in a direction different from `bottom`
+ */
+ x: 'bottom',
+ /**
+ * @prop {string} [x='left']
+ * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
+ * Change this if your popper should grow in a direction different from `right`
+ */
+ y: 'right',
+ },
+
+ /**
+ * Applies the computed styles to the popper element.
+ *
+ * All the DOM manipulations are limited to this modifier. This is useful in case
+ * you want to integrate Popper.js inside a framework or view library and you
+ * want to delegate all the DOM manipulations to it.
+ *
+ * Note that if you disable this modifier, you must make sure the popper element
+ * has its position set to `absolute` before Popper.js can do its work!
+ *
+ * Just disable this modifier and define your own to achieve the desired effect.
+ *
+ * @memberof modifiers
+ * @inner
+ */
+ applyStyle: {
+ /** @prop {number} order=900 - Index used to define the order of execution */
+ order: 900,
+ /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
+ enabled: true,
+ /** @prop {ModifierFn} */
+ fn: applyStyle,
+ /** @prop {Function} */
+ onLoad: applyStyleOnLoad,
+ /**
+ * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
+ * @prop {Boolean} gpuAcceleration=true
+ * If true, it uses the CSS 3D transformation to position the popper.
+ * Otherwise, it will use the `top` and `left` properties
+ */
+ gpuAcceleration: undefined,
+ },
+};
+
+/**
+ * The `dataObject` is an object containing all the information used by Popper.js.
+ * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
+ * @name dataObject
+ * @property {Object} data.instance The Popper.js instance
+ * @property {String} data.placement Placement applied to popper
+ * @property {String} data.originalPlacement Placement originally defined on init
+ * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
+ * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper
+ * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
+ * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)
+ * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)
+ * @property {Object} data.boundaries Offsets of the popper boundaries
+ * @property {Object} data.offsets The measurements of popper, reference and arrow elements
+ * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
+ * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
+ * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
+ */
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/inner.js b/npm_assets/node_modules/popper.js/src/modifiers/inner.js
new file mode 100644
index 0000000..da2b927
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/inner.js
@@ -0,0 +1,27 @@
+import getClientRect from '../utils/getClientRect';
+import getOppositePlacement from '../utils/getOppositePlacement';
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function inner(data) {
+ const placement = data.placement;
+ const basePlacement = placement.split('-')[0];
+ const { popper, reference } = data.offsets;
+ const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
+
+ const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
+
+ popper[isHoriz ? 'left' : 'top'] =
+ reference[basePlacement] -
+ (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
+
+ data.placement = getOppositePlacement(placement);
+ data.offsets.popper = getClientRect(popper);
+
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/keepTogether.js b/npm_assets/node_modules/popper.js/src/modifiers/keepTogether.js
new file mode 100644
index 0000000..3d5b0b3
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/keepTogether.js
@@ -0,0 +1,26 @@
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function keepTogether(data) {
+ const { popper, reference } = data.offsets;
+ const placement = data.placement.split('-')[0];
+ const floor = Math.floor;
+ const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
+ const side = isVertical ? 'right' : 'bottom';
+ const opSide = isVertical ? 'left' : 'top';
+ const measurement = isVertical ? 'width' : 'height';
+
+ if (popper[side] < floor(reference[opSide])) {
+ data.offsets.popper[opSide] =
+ floor(reference[opSide]) - popper[measurement];
+ }
+ if (popper[opSide] > floor(reference[side])) {
+ data.offsets.popper[opSide] = floor(reference[side]);
+ }
+
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/offset.js b/npm_assets/node_modules/popper.js/src/modifiers/offset.js
new file mode 100644
index 0000000..70c9222
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/offset.js
@@ -0,0 +1,194 @@
+import isNumeric from '../utils/isNumeric';
+import getClientRect from '../utils/getClientRect';
+import find from '../utils/find';
+
+/**
+ * Converts a string containing value + unit into a px value number
+ * @function
+ * @memberof {modifiers~offset}
+ * @private
+ * @argument {String} str - Value + unit string
+ * @argument {String} measurement - `height` or `width`
+ * @argument {Object} popperOffsets
+ * @argument {Object} referenceOffsets
+ * @returns {Number|String}
+ * Value in pixels, or original string if no values were extracted
+ */
+export function toValue(str, measurement, popperOffsets, referenceOffsets) {
+ // separate value from unit
+ const split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
+ const value = +split[1];
+ const unit = split[2];
+
+ // If it's not a number it's an operator, I guess
+ if (!value) {
+ return str;
+ }
+
+ if (unit.indexOf('%') === 0) {
+ let element;
+ switch (unit) {
+ case '%p':
+ element = popperOffsets;
+ break;
+ case '%':
+ case '%r':
+ default:
+ element = referenceOffsets;
+ }
+
+ const rect = getClientRect(element);
+ return rect[measurement] / 100 * value;
+ } else if (unit === 'vh' || unit === 'vw') {
+ // if is a vh or vw, we calculate the size based on the viewport
+ let size;
+ if (unit === 'vh') {
+ size = Math.max(
+ document.documentElement.clientHeight,
+ window.innerHeight || 0
+ );
+ } else {
+ size = Math.max(
+ document.documentElement.clientWidth,
+ window.innerWidth || 0
+ );
+ }
+ return size / 100 * value;
+ } else {
+ // if is an explicit pixel unit, we get rid of the unit and keep the value
+ // if is an implicit unit, it's px, and we return just the value
+ return value;
+ }
+}
+
+/**
+ * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
+ * @function
+ * @memberof {modifiers~offset}
+ * @private
+ * @argument {String} offset
+ * @argument {Object} popperOffsets
+ * @argument {Object} referenceOffsets
+ * @argument {String} basePlacement
+ * @returns {Array} a two cells array with x and y offsets in numbers
+ */
+export function parseOffset(
+ offset,
+ popperOffsets,
+ referenceOffsets,
+ basePlacement
+) {
+ const offsets = [0, 0];
+
+ // Use height if placement is left or right and index is 0 otherwise use width
+ // in this way the first offset will use an axis and the second one
+ // will use the other one
+ const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;
+
+ // Split the offset string to obtain a list of values and operands
+ // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
+ const fragments = offset.split(/(\+|\-)/).map(frag => frag.trim());
+
+ // Detect if the offset string contains a pair of values or a single one
+ // they could be separated by comma or space
+ const divider = fragments.indexOf(
+ find(fragments, frag => frag.search(/,|\s/) !== -1)
+ );
+
+ if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
+ console.warn(
+ 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'
+ );
+ }
+
+ // If divider is found, we divide the list of values and operands to divide
+ // them by ofset X and Y.
+ const splitRegex = /\s*,\s*|\s+/;
+ let ops = divider !== -1
+ ? [
+ fragments
+ .slice(0, divider)
+ .concat([fragments[divider].split(splitRegex)[0]]),
+ [fragments[divider].split(splitRegex)[1]].concat(
+ fragments.slice(divider + 1)
+ ),
+ ]
+ : [fragments];
+
+ // Convert the values with units to absolute pixels to allow our computations
+ ops = ops.map((op, index) => {
+ // Most of the units rely on the orientation of the popper
+ const measurement = (index === 1 ? !useHeight : useHeight)
+ ? 'height'
+ : 'width';
+ let mergeWithPrevious = false;
+ return (
+ op
+ // This aggregates any `+` or `-` sign that aren't considered operators
+ // e.g.: 10 + +5 => [10, +, +5]
+ .reduce((a, b) => {
+ if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
+ a[a.length - 1] = b;
+ mergeWithPrevious = true;
+ return a;
+ } else if (mergeWithPrevious) {
+ a[a.length - 1] += b;
+ mergeWithPrevious = false;
+ return a;
+ } else {
+ return a.concat(b);
+ }
+ }, [])
+ // Here we convert the string values into number values (in px)
+ .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))
+ );
+ });
+
+ // Loop trough the offsets arrays and execute the operations
+ ops.forEach((op, index) => {
+ op.forEach((frag, index2) => {
+ if (isNumeric(frag)) {
+ offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
+ }
+ });
+ });
+ return offsets;
+}
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by update method
+ * @argument {Object} options - Modifiers configuration and options
+ * @argument {Number|String} options.offset=0
+ * The offset value as described in the modifier description
+ * @returns {Object} The data object, properly modified
+ */
+export default function offset(data, { offset }) {
+ const { placement, offsets: { popper, reference } } = data;
+ const basePlacement = placement.split('-')[0];
+
+ let offsets;
+ if (isNumeric(+offset)) {
+ offsets = [+offset, 0];
+ } else {
+ offsets = parseOffset(offset, popper, reference, basePlacement);
+ }
+
+ if (basePlacement === 'left') {
+ popper.top += offsets[0];
+ popper.left -= offsets[1];
+ } else if (basePlacement === 'right') {
+ popper.top += offsets[0];
+ popper.left += offsets[1];
+ } else if (basePlacement === 'top') {
+ popper.left += offsets[0];
+ popper.top -= offsets[1];
+ } else if (basePlacement === 'bottom') {
+ popper.left += offsets[0];
+ popper.top += offsets[1];
+ }
+
+ data.popper = popper;
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/preventOverflow.js b/npm_assets/node_modules/popper.js/src/modifiers/preventOverflow.js
new file mode 100644
index 0000000..d2d6779
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/preventOverflow.js
@@ -0,0 +1,89 @@
+import getOffsetParent from '../utils/getOffsetParent';
+import getBoundaries from '../utils/getBoundaries';
+import getSupportedPropertyName from '../utils/getSupportedPropertyName';
+
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function preventOverflow(data, options) {
+ let boundariesElement =
+ options.boundariesElement || getOffsetParent(data.instance.popper);
+
+ // If offsetParent is the reference element, we really want to
+ // go one step up and use the next offsetParent as reference to
+ // avoid to make this modifier completely useless and look like broken
+ if (data.instance.reference === boundariesElement) {
+ boundariesElement = getOffsetParent(boundariesElement);
+ }
+
+ // NOTE: DOM access here
+ // resets the popper's position so that the document size can be calculated excluding
+ // the size of the popper element itself
+ const transformProp = getSupportedPropertyName('transform');
+ const popperStyles = data.instance.popper.style; // assignment to help minification
+ const { top, left, [transformProp]: transform } = popperStyles;
+ popperStyles.top = '';
+ popperStyles.left = '';
+ popperStyles[transformProp] = '';
+
+ const boundaries = getBoundaries(
+ data.instance.popper,
+ data.instance.reference,
+ options.padding,
+ boundariesElement,
+ data.positionFixed
+ );
+
+ // NOTE: DOM access here
+ // restores the original style properties after the offsets have been computed
+ popperStyles.top = top;
+ popperStyles.left = left;
+ popperStyles[transformProp] = transform;
+
+ options.boundaries = boundaries;
+
+ const order = options.priority;
+ let popper = data.offsets.popper;
+
+ const check = {
+ primary(placement) {
+ let value = popper[placement];
+ if (
+ popper[placement] < boundaries[placement] &&
+ !options.escapeWithReference
+ ) {
+ value = Math.max(popper[placement], boundaries[placement]);
+ }
+ return { [placement]: value };
+ },
+ secondary(placement) {
+ const mainSide = placement === 'right' ? 'left' : 'top';
+ let value = popper[mainSide];
+ if (
+ popper[placement] > boundaries[placement] &&
+ !options.escapeWithReference
+ ) {
+ value = Math.min(
+ popper[mainSide],
+ boundaries[placement] -
+ (placement === 'right' ? popper.width : popper.height)
+ );
+ }
+ return { [mainSide]: value };
+ },
+ };
+
+ order.forEach(placement => {
+ const side =
+ ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
+ popper = { ...popper, ...check[side](placement) };
+ });
+
+ data.offsets.popper = popper;
+
+ return data;
+}
diff --git a/npm_assets/node_modules/popper.js/src/modifiers/shift.js b/npm_assets/node_modules/popper.js/src/modifiers/shift.js
new file mode 100644
index 0000000..e9bef79
--- /dev/null
+++ b/npm_assets/node_modules/popper.js/src/modifiers/shift.js
@@ -0,0 +1,31 @@
+/**
+ * @function
+ * @memberof Modifiers
+ * @argument {Object} data - The data object generated by `update` method
+ * @argument {Object} options - Modifiers configuration and options
+ * @returns {Object} The data object, properly modified
+ */
+export default function shift(data) {
+ const placement = data.placement;
+ const basePlacement = placement.split('-')[0];
+ const shiftvariation = placement.split('-')[1];
+
+ // if shift shiftvariation is specified, run the modifier
+ if (shiftvariation) {
+ const { reference, popper } = data.offsets;
+ const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
+ const side = isVertical ? 'left' : 'top';
+ const measurement = isVertical ? 'width' : 'height';
+
+ const shiftOffsets = {
+ start: { [side]: reference[side] },
+ end: {
+ [side]: reference[side] + reference[measurement] - popper[measurement],
+ },
+ };
+
+ data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };
+ }
+
+ return data;
+}