DEV: makes popper.js part of javascript rake task (#8847)

This commit is contained in:
Joffrey JAFFEUX 2020-02-04 15:34:46 +01:00 committed by GitHub
parent ca63502ce6
commit 87e92da085
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 138 additions and 71 deletions

View File

@ -110,6 +110,8 @@ task 'javascript:update' do
source: 'workbox-expiration/build/.', source: 'workbox-expiration/build/.',
destination: 'workbox', destination: 'workbox',
public: true public: true
}, {
source: '@popperjs/core/dist/umd/popper.js'
} }
] ]

View File

@ -9,6 +9,7 @@
"@fortawesome/fontawesome-free": "5.11.2", "@fortawesome/fontawesome-free": "5.11.2",
"ace-builds": "1.4.2", "ace-builds": "1.4.2",
"bootbox": "3.2.0", "bootbox": "3.2.0",
"@popperjs/core": "v2.0.5",
"bootstrap": "v3.4.1", "bootstrap": "v3.4.1",
"chart.js": "2.9.3", "chart.js": "2.9.3",
"eslint-plugin-lodash": "^6.0.0", "eslint-plugin-lodash": "^6.0.0",

View File

@ -1,5 +1,5 @@
/** /**
* @popperjs/core v2.0.0 - MIT License * @popperjs/core v2.0.5 - MIT License
*/ */
(function (global, factory) { (function (global, factory) {
@ -22,8 +22,11 @@
}; };
} }
/*:: import type { Window } from '../types'; */
/*:: declare function getWindow(node: Node | Window): Window; */
function getWindow(node) { function getWindow(node) {
if ({}.toString.call(node) !== '[object Window]') { if (node.toString() !== '[object Window]') {
var ownerDocument = node.ownerDocument; var ownerDocument = node.ownerDocument;
return ownerDocument ? ownerDocument.defaultView : window; return ownerDocument ? ownerDocument.defaultView : window;
} }
@ -76,40 +79,30 @@
return element ? (element.nodeName || '').toLowerCase() : null; return element ? (element.nodeName || '').toLowerCase() : null;
} }
function getComputedStyle(element) { function getDocumentElement(element) {
return getWindow(element).getComputedStyle(element); // $FlowFixMe: assume body is always available
return (isElement(element) ? element.ownerDocument : element.document).documentElement;
} }
function toNumber(cssValue) { function getWindowScrollBarX(element) {
return parseFloat(cssValue) || 0; // If <html> has a CSS width greater than the viewport, then this will be
// incorrect for RTL.
// Popper 1 is broken in this case and never had a bug report so let's assume
// it's not an issue. I don't think anyone ever specifies width on <html>
// anyway.
// Browsers where the left scrollbar doesn't cause an issue report `0` for
// this (e.g. Edge 2019, IE11, Safari)
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
} }
function getBorders(element) {
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
return {
top: toNumber(computedStyle.borderTopWidth),
right: toNumber(computedStyle.borderRightWidth),
bottom: toNumber(computedStyle.borderBottomWidth),
left: toNumber(computedStyle.borderLeftWidth)
};
}
function getInnerOffsets(offsetParent) {
var rect = getBoundingClientRect(offsetParent);
var borders = getBorders(offsetParent);
return {
x: rect.x + borders.left,
y: rect.y + borders.top
};
} // Returns the composite rect of an element relative to its offsetParent.
// Composite means it takes into account transforms as well as layout. // Composite means it takes into account transforms as well as layout.
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
if (isFixed === void 0) { if (isFixed === void 0) {
isFixed = false; isFixed = false;
} }
var documentElement;
var rect = getBoundingClientRect(elementOrVirtualElement); var rect = getBoundingClientRect(elementOrVirtualElement);
var scroll = { var scroll = {
scrollLeft: 0, scrollLeft: 0,
@ -126,7 +119,11 @@
} }
if (isHTMLElement(offsetParent)) { if (isHTMLElement(offsetParent)) {
offsets = getInnerOffsets(offsetParent); offsets = getBoundingClientRect(offsetParent);
offsets.x += offsetParent.clientLeft;
offsets.y += offsetParent.clientTop;
} else if (documentElement = getDocumentElement(offsetParent)) {
offsets.x = getWindowScrollBarX(documentElement);
} }
} }
@ -162,8 +159,13 @@
; ;
} }
function getComputedStyle(element) {
return getWindow(element).getComputedStyle(element);
}
function getScrollParent(node) { function getScrollParent(node) {
if (['html', 'body', '#document'].includes(getNodeName(node))) { if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
// $FlowFixMe: assume body is always available
return node.ownerDocument.body; return node.ownerDocument.body;
} }
@ -191,11 +193,12 @@
var isBody = getNodeName(scrollParent) === 'body'; var isBody = getNodeName(scrollParent) === 'body';
var target = isBody ? getWindow(scrollParent) : scrollParent; var target = isBody ? getWindow(scrollParent) : scrollParent;
var updatedList = list.concat(target); var updatedList = list.concat(target);
return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target))); return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here
updatedList.concat(listScrollParents(getParentNode(target)));
} }
function isTableElement(element) { function isTableElement(element) {
return ['table', 'td', 'th'].includes(getNodeName(element)); return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
} }
var isFirefox = function isFirefox() { var isFirefox = function isFirefox() {
@ -353,7 +356,7 @@
} }
case 'phase': case 'phase':
if (!modifierPhases.includes(modifier.phase)) { if (modifierPhases.indexOf(modifier.phase) < 0) {
console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\""));
} }
@ -512,6 +515,20 @@
console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' '));
} }
} }
var _getComputedStyle = getComputedStyle(popper),
marginTop = _getComputedStyle.marginTop,
marginRight = _getComputedStyle.marginRight,
marginBottom = _getComputedStyle.marginBottom,
marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can
// cause bugs with positioning, so we'll warn the consumer
if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {
return parseFloat(margin);
})) {
console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));
}
} // Strip out disabled modifiers } // Strip out disabled modifiers
@ -714,7 +731,7 @@
} }
function getMainAxisFromPlacement(placement) { function getMainAxisFromPlacement(placement) {
return ['top', 'bottom'].includes(placement) ? 'x' : 'y'; return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
} }
function computeOffsets(_ref) { function computeOffsets(_ref) {
@ -805,10 +822,6 @@
data: {} data: {}
}; };
function getDocumentElement(element) {
return element.ownerDocument.documentElement;
}
var unsetSides = { var unsetSides = {
top: 'auto', top: 'auto',
right: 'auto', right: 'auto',
@ -853,16 +866,21 @@
if (offsetParent === getWindow(popper)) { if (offsetParent === getWindow(popper)) {
offsetParent = getDocumentElement(popper); offsetParent = getDocumentElement(popper);
} } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
/*:: offsetParent = (offsetParent: Element); */
if (placement === top) { if (placement === top) {
y = y - offsetParent.clientHeight + popperRect.height;
sideY = bottom; sideY = bottom;
y -= offsetParent.clientHeight - popperRect.height;
y *= gpuAcceleration ? 1 : -1;
} }
if (placement === left) { if (placement === left) {
x = x - offsetParent.clientWidth + popperRect.width;
sideX = right; sideX = right;
x -= offsetParent.clientWidth - popperRect.width;
x *= gpuAcceleration ? 1 : -1;
} }
} }
@ -886,6 +904,13 @@
gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
_options$adaptive = options.adaptive, _options$adaptive = options.adaptive,
adaptive = _options$adaptive === void 0 ? true : _options$adaptive; adaptive = _options$adaptive === void 0 ? true : _options$adaptive;
{
if (adaptive && parseFloat(getComputedStyle(state.elements.popper).transitionDuration)) {
console.warn(['Popper: The "computeStyles" modifier\'s `adaptive` option must be', 'disabled if CSS transitions are applied to the popper element.'].join(' '));
}
}
var commonStyles = { var commonStyles = {
placement: getBasePlacement(state.placement), placement: getBasePlacement(state.placement),
popper: state.elements.popper, popper: state.elements.popper,
@ -937,9 +962,8 @@
Object.assign(element.style, style); Object.assign(element.style, style);
Object.entries(attributes).forEach(function (_ref2) { Object.keys(attributes).forEach(function (name) {
var name = _ref2[0], var value = attributes[name];
value = _ref2[1];
if (value === false) { if (value === false) {
element.removeAttribute(name); element.removeAttribute(name);
@ -950,12 +974,13 @@
}); });
} }
function effect$1(_ref3) { function effect$1(_ref2) {
var state = _ref3.state; var state = _ref2.state;
var initialStyles = { var initialStyles = {
position: 'absolute', position: 'absolute',
left: '0', left: '0',
top: '0' top: '0',
margin: '0'
}; };
Object.assign(state.elements.popper.style, initialStyles); Object.assign(state.elements.popper.style, initialStyles);
return function () { return function () {
@ -996,7 +1021,7 @@
function distanceAndSkiddingToXY(placement, rects, offset) { function distanceAndSkiddingToXY(placement, rects, offset) {
var basePlacement = getBasePlacement(placement); var basePlacement = getBasePlacement(placement);
var invertDistance = [left, top].includes(basePlacement) ? -1 : 1; var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
placement: placement placement: placement
@ -1006,7 +1031,7 @@
skidding = skidding || 0; skidding = skidding || 0;
distance = (distance || 0) * invertDistance; distance = (distance || 0) * invertDistance;
return [left, right].includes(basePlacement) ? { return [left, right].indexOf(basePlacement) >= 0 ? {
x: distance, x: distance,
y: skidding y: skidding
} : { } : {
@ -1084,13 +1109,46 @@
return documentRect; return documentRect;
} }
function getDecorations(element) { function toNumber(cssValue) {
var borders = getBorders(element); return parseFloat(cssValue) || 0;
}
function getBorders(element) {
var computedStyle = isHTMLElement(element) ? getComputedStyle(element) : {};
return { return {
top: borders.top, top: toNumber(computedStyle.borderTopWidth),
right: element.offsetWidth - (element.clientWidth + borders.right), right: toNumber(computedStyle.borderRightWidth),
bottom: element.offsetHeight - (element.clientHeight + borders.bottom), bottom: toNumber(computedStyle.borderBottomWidth),
left: borders.left left: toNumber(computedStyle.borderLeftWidth)
};
}
function getDecorations(element) {
var win = getWindow(element);
var borders = getBorders(element);
var isHTML = getNodeName(element) === 'html';
var winScrollBarX = getWindowScrollBarX(element);
var x = element.clientWidth + borders.right;
var y = element.clientHeight + borders.bottom; // HACK:
// document.documentElement.clientHeight on iOS reports the height of the
// viewport including the bottom bar, even if the bottom bar isn't visible.
// If the difference between window innerHeight and html clientHeight is more
// than 50, we assume it's a mobile bottom bar and ignore scrollbars.
// * A 50px thick scrollbar is likely non-existent (macOS is 15px and Windows
// is about 17px)
// * The mobile bar is 114px tall
if (isHTML && win.innerHeight - element.clientHeight > 50) {
y = win.innerHeight - borders.bottom;
}
return {
top: isHTML ? 0 : element.clientTop,
right: // RTL scrollbar (scrolling containers only)
element.clientLeft > borders.left ? borders.right : // LTR scrollbar
isHTML ? win.innerWidth - x - winScrollBarX : element.offsetWidth - x,
bottom: isHTML ? win.innerHeight - y : element.offsetHeight - y,
left: isHTML ? winScrollBarX : element.clientLeft
}; };
} }
@ -1105,7 +1163,7 @@
var next = child; var next = child;
do { do {
if (next && next.isSameNode(parent)) { if (next && parent.isSameNode(next)) {
return true; return true;
} // $FlowFixMe: need a better way to handle this... } // $FlowFixMe: need a better way to handle this...
@ -1127,15 +1185,6 @@
}); });
} }
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};
}
function getClientRectFromMixedType(element, clippingParent) { function getClientRectFromMixedType(element, clippingParent) {
return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
} // A "clipping parent" is an overflowable container with the characteristic of } // A "clipping parent" is an overflowable container with the characteristic of
@ -1145,12 +1194,13 @@
function getClippingParents(element) { function getClippingParents(element) {
var clippingParents = listScrollParents(element); var clippingParents = listScrollParents(element);
var canEscapeClipping = ['absolute', 'fixed'].includes(getComputedStyle(element).position); var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
if (!isElement(clipperElement)) { if (!isElement(clipperElement)) {
return []; return [];
} } // $FlowFixMe: https://github.com/facebook/flow/issues/1414
return clippingParents.filter(function (clippingParent) { return clippingParents.filter(function (clippingParent) {
return isElement(clippingParent) && contains(clippingParent, clipperElement); return isElement(clippingParent) && contains(clippingParent, clipperElement);
@ -1165,7 +1215,7 @@
var firstClippingParent = clippingParents[0]; var firstClippingParent = clippingParents[0];
var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
var rect = getClientRectFromMixedType(element, clippingParent); var rect = getClientRectFromMixedType(element, clippingParent);
var decorations = isHTMLElement(clippingParent) ? getDecorations(clippingParent) : getFreshSideObject(); var decorations = getDecorations(isHTMLElement(clippingParent) ? clippingParent : getDocumentElement(element));
accRect.top = Math.max(rect.top + decorations.top, accRect.top); accRect.top = Math.max(rect.top + decorations.top, accRect.top);
accRect.right = Math.min(rect.right - decorations.right, accRect.right); accRect.right = Math.min(rect.right - decorations.right, accRect.right);
accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom); accRect.bottom = Math.min(rect.bottom - decorations.bottom, accRect.bottom);
@ -1179,6 +1229,15 @@
return clippingRect; return clippingRect;
} }
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};
}
function mergePaddingObject(paddingObject) { function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), {}, paddingObject); return Object.assign({}, getFreshSideObject(), {}, paddingObject);
} }
@ -1236,8 +1295,8 @@
if (elementContext === popper && offsetData) { if (elementContext === popper && offsetData) {
var offset = offsetData[placement]; var offset = offsetData[placement];
Object.keys(overflowOffsets).forEach(function (key) { Object.keys(overflowOffsets).forEach(function (key) {
var multiply = [right, bottom].includes(key) ? 1 : -1; var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
var axis = [top, bottom].includes(key) ? 'y' : 'x'; var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
overflowOffsets[key] += offset[axis] * multiply; overflowOffsets[key] += offset[axis] * multiply;
}); });
} }
@ -1258,7 +1317,7 @@
flipVariations = _options.flipVariations; flipVariations = _options.flipVariations;
var variation = getVariation(placement); var variation = getVariation(placement);
var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
return placement.includes(variation); return getVariation(placement) === variation;
}) : basePlacements; // $FlowFixMe: Flow seems to have problems with two array unions... }) : basePlacements; // $FlowFixMe: Flow seems to have problems with two array unions...
var overflows = placements.reduce(function (acc, placement) { var overflows = placements.reduce(function (acc, placement) {
@ -1302,7 +1361,7 @@
var preferredPlacement = state.options.placement; var preferredPlacement = state.options.placement;
var basePlacement = getBasePlacement(preferredPlacement); var basePlacement = getBasePlacement(preferredPlacement);
var isBasePlacement = basePlacement === preferredPlacement; var isBasePlacement = basePlacement === preferredPlacement;
var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
var placements = uniqueBy([preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { var placements = uniqueBy([preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
return getBasePlacement(placement) === auto ? acc.concat(computeAutoPlacement(state, { return getBasePlacement(placement) === auto ? acc.concat(computeAutoPlacement(state, {
placement: placement, placement: placement,
@ -1326,7 +1385,7 @@
var _basePlacement = getBasePlacement(placement); var _basePlacement = getBasePlacement(placement);
var isStartVariation = getVariation(placement) === start; var isStartVariation = getVariation(placement) === start;
var isVertical = [top, bottom].includes(_basePlacement); var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
var len = isVertical ? 'width' : 'height'; var len = isVertical ? 'width' : 'height';
var overflow = detectOverflow(state, { var overflow = detectOverflow(state, {
placement: placement, placement: placement,
@ -1517,7 +1576,7 @@
var popperOffsets = state.modifiersData.popperOffsets; var popperOffsets = state.modifiersData.popperOffsets;
var basePlacement = getBasePlacement(state.placement); var basePlacement = getBasePlacement(state.placement);
var axis = getMainAxisFromPlacement(basePlacement); var axis = getMainAxisFromPlacement(basePlacement);
var isVertical = [left, right].includes(basePlacement); var isVertical = [left, right].indexOf(basePlacement) >= 0;
var len = isVertical ? 'height' : 'width'; var len = isVertical ? 'height' : 'width';
if (!arrowElement) { if (!arrowElement) {

View File

@ -97,6 +97,11 @@
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz#8644bc25b19475779a7b7c1fc104bc0a794f4465" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz#8644bc25b19475779a7b7c1fc104bc0a794f4465"
integrity sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ== integrity sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ==
"@popperjs/core@v2.0.5":
version "2.0.5"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.0.5.tgz#90ff3013c747c499c8b1d9684b63a7334a057f7d"
integrity sha512-YOV1TitTNzJDXe/14sDJO/M/aL12Jhind0EkQRnqTX2167fqJsAICJfi0vsDdapPI1WaYsheyYYgy6PO02Nqqg==
"@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.3.0": "@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.3.0":
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.3.0.tgz#50a2754016b6f30a994ceda6d9a0a8c36adda849" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.3.0.tgz#50a2754016b6f30a994ceda6d9a0a8c36adda849"