Socket
Socket
Sign inDemoInstall

dom-align

Package Overview
Dependencies
Maintainers
4
Versions
49
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dom-align - npm Package Compare versions

Comparing version 1.12.3 to 1.12.4

435

dist-node/index.js

@@ -13,3 +13,2 @@ 'use strict';

};
function getVendorPrefix() {

@@ -19,7 +18,5 @@ if (vendorPrefix !== undefined) {

}
vendorPrefix = '';
var style = document.createElement('p').style;
var testProp = 'Transform';
for (var key in jsCssMap) {

@@ -30,10 +27,7 @@ if (key + testProp in style) {

}
return vendorPrefix;
}
function getTransitionName() {
return getVendorPrefix() ? "".concat(getVendorPrefix(), "TransitionProperty") : 'transitionProperty';
}
function getTransformName() {

@@ -44,6 +38,4 @@ return getVendorPrefix() ? "".concat(getVendorPrefix(), "Transform") : 'transform';

var name = getTransitionName();
if (name) {
node.style[name] = value;
if (name !== 'transitionProperty') {

@@ -54,9 +46,6 @@ node.style.transitionProperty = value;

}
function setTransform(node, value) {
var name = getTransformName();
if (name) {
node.style[name] = value;
if (name !== 'transform') {

@@ -67,3 +56,2 @@ node.style.transform = value;

}
function getTransitionProperty(node) {

@@ -75,3 +63,2 @@ return node.style.transitionProperty || node.style[getTransitionName()];

var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());
if (transform && transform !== 'none') {

@@ -84,3 +71,2 @@ var matrix = transform.replace(/[^0-9\-.,]/g, '').split(',');

}
return {

@@ -96,7 +82,5 @@ x: 0,

var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());
if (transform && transform !== 'none') {
var arr;
var match2d = transform.match(matrix2d);
if (match2d) {

@@ -127,17 +111,12 @@ match2d = match2d[1];

if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
}, _typeof(obj);
}
var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source;
var getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605
var getComputedStyleX;
// https://stackoverflow.com/a/3485654/3040605
function forceRelayout(elem) {

@@ -147,9 +126,6 @@ var originalStyle = elem.style.display;

elem.offsetHeight; // eslint-disable-line
elem.style.display = originalStyle;
}
function css(el, name, v) {
var value = v;
if (_typeof(name) === 'object') {

@@ -161,6 +137,4 @@ for (var i in name) {

}
return undefined;
}
if (typeof value !== 'undefined') {

@@ -170,10 +144,7 @@ if (typeof value === 'number') {

}
el.style[name] = value;
return undefined;
}
return getComputedStyleX(el, name);
}
function getClientPosition(elem) {

@@ -185,5 +156,7 @@ var box;

var body = doc.body;
var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
var docElem = doc && doc.documentElement;
// 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
box = elem.getBoundingClientRect();
box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
// 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
// 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确

@@ -193,3 +166,5 @@ // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin

x = Math.floor(box.left);
y = Math.floor(box.top); // In IE, most of the time, 2 extra pixels are added to the top and left
y = Math.floor(box.top);
// In IE, most of the time, 2 extra pixels are added to the top and left
// due to the implicit 2-pixel inset border. In IE6/7 quirks mode and

@@ -199,2 +174,3 @@ // IE6 standards mode, this border can be overridden by setting the

// offset always being 2 pixels.
// In quirks mode, the offset can be determined by querying the body's

@@ -205,2 +181,3 @@ // clientLeft/clientTop, but in standards mode, it is found by querying

// too expensive just to query them all.
// ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的

@@ -221,12 +198,9 @@ // 窗口边框标准是设 documentElement ,quirks 时设置 body

}
function getScroll(w, top) {
var ret = w["page".concat(top ? 'Y' : 'X', "Offset")];
var method = "scroll".concat(top ? 'Top' : 'Left');
if (typeof ret !== 'number') {
var d = w.document; // ie6,7,8 standard mode
var d = w.document;
// ie6,7,8 standard mode
ret = d.documentElement[method];
if (typeof ret !== 'number') {

@@ -237,14 +211,10 @@ // quirks mode

}
return ret;
}
function getScrollLeft(w) {
return getScroll(w);
}
function getScrollTop(w) {
return getScroll(w, true);
}
function getOffset(el) {

@@ -258,2 +228,3 @@ var pos = getClientPosition(el);

}
/**

@@ -263,11 +234,7 @@ * A crude way of determining if an object is a window

*/
function isWindow(obj) {
// must use == for ie8
/* eslint eqeqeq:0 */
return obj !== null && obj !== undefined && obj == obj.window;
}
function getDocument(node) {

@@ -277,10 +244,7 @@ if (isWindow(node)) {

}
if (node.nodeType === 9) {
return node;
}
return node.ownerDocument;
}
function _getComputedStyle(elem, name, cs) {

@@ -290,13 +254,11 @@ var computedStyle = cs;

var d = getDocument(elem);
computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61
computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);
// https://github.com/kissyteam/kissy/issues/61
if (computedStyle) {
val = computedStyle.getPropertyValue(name) || computedStyle[name];
}
return val;
}
var _RE_NUM_NO_PX = new RegExp("^(".concat(RE_NUM, ")(?!px)[a-z%]+$"), 'i');
var RE_POS = /^(top|right|bottom|left)$/;

@@ -307,10 +269,12 @@ var CURRENT_STYLE = 'currentStyle';

var PX = 'px';
function _getComputedStyleIE(elem, name) {
// currentStyle maybe null
// http://msdn.microsoft.com/en-us/library/ms535231.aspx
var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];
// 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
// 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19
// 在 ie 下不对,需要直接用 offset 方式
// borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了
// From the awesome hack by Dean Edwards

@@ -321,3 +285,2 @@ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291

// exclude left right for relativity
if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {

@@ -327,20 +290,20 @@ // Remember the original values

var left = style[LEFT];
var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content
var rsLeft = elem[RUNTIME_STYLE][LEFT];
elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out
// prevent flashing of content
elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];
// Put in the new values to get a computed value out
style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;
ret = style.pixelLeft + PX; // Revert the changed values
ret = style.pixelLeft + PX;
// Revert the changed values
style[LEFT] = left;
elem[RUNTIME_STYLE][LEFT] = rsLeft;
}
return ret === '' ? 'auto' : ret;
}
if (typeof window !== 'undefined') {
getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;
}
function getOffsetDirection(dir, option) {

@@ -350,6 +313,4 @@ if (dir === 'left') {

}
return option.useCssBottom ? 'bottom' : dir;
}
function oppositeOffsetDirection(dir) {

@@ -365,5 +326,5 @@ if (dir === 'left') {

}
} // 设置 elem 相对 elem.ownerDocument 的坐标
}
// 设置 elem 相对 elem.ownerDocument 的坐标
function setLeftTop(elem, offset, option) {

@@ -374,3 +335,2 @@ // set position first, in-case top/left are set even on static elem

}
var presetH = -999;

@@ -382,14 +342,10 @@ var presetV = -999;

var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);
if (horizontalProperty !== 'left') {
presetH = 999;
}
if (verticalProperty !== 'top') {
presetV = 999;
}
var originalTransition = '';
var originalOffset = getOffset(elem);
if ('left' in offset || 'top' in offset) {

@@ -399,3 +355,2 @@ originalTransition = getTransitionProperty(elem) || '';

}
if ('left' in offset) {

@@ -405,13 +360,10 @@ elem.style[oppositeHorizontalProperty] = '';

}
if ('top' in offset) {
elem.style[oppositeVerticalProperty] = '';
elem.style[verticalProperty] = "".concat(presetV, "px");
} // force relayout
}
// force relayout
forceRelayout(elem);
var old = getOffset(elem);
var originalStyle = {};
for (var key in offset) {

@@ -422,3 +374,2 @@ if (offset.hasOwnProperty(key)) {

var off = originalOffset[key] - old[key];
if (dir === key) {

@@ -431,19 +382,13 @@ originalStyle[dir] = preset + off;

}
css(elem, originalStyle); // force relayout
css(elem, originalStyle);
// force relayout
forceRelayout(elem);
if ('left' in offset || 'top' in offset) {
setTransitionProperty(elem, originalTransition);
}
var ret = {};
for (var _key in offset) {
if (offset.hasOwnProperty(_key)) {
var _dir = getOffsetDirection(_key, option);
var _off = offset[_key] - originalOffset[_key];
if (_key === _dir) {

@@ -456,6 +401,4 @@ ret[_dir] = originalStyle[_dir] + _off;

}
css(elem, ret);
}
function setTransform$1(elem, offset) {

@@ -468,14 +411,10 @@ var originalOffset = getOffset(elem);

};
if ('left' in offset) {
resultXY.x = originalXY.x + offset.left - originalOffset.left;
}
if ('top' in offset) {
resultXY.y = originalXY.y + offset.top - originalOffset.top;
}
setTransformXY(elem, resultXY);
}
function setOffset(elem, offset, option) {

@@ -488,3 +427,2 @@ if (option.ignoreShake) {

var tTop = offset.top.toFixed(0);
if (oLeft === tLeft && oTop === tTop) {

@@ -494,3 +432,2 @@ return;

}
if (option.useCssRight || option.useCssBottom) {

@@ -504,3 +441,2 @@ setLeftTop(elem, offset, option);

}
function each(arr, fn) {

@@ -511,7 +447,5 @@ for (var i = 0; i < arr.length; i++) {

}
function isBorderBoxFn(elem) {
return getComputedStyleX(elem, 'boxSizing') === 'border-box';
}
var BOX_MODELS = ['margin', 'border', 'padding'];

@@ -522,8 +456,8 @@ var CONTENT_INDEX = -1;

var MARGIN_INDEX = 0;
function swap(elem, options, callback) {
var old = {};
var style = elem.style;
var name; // Remember the old values, and insert the new ones
var name;
// Remember the old values, and insert the new ones
for (name in options) {

@@ -535,5 +469,5 @@ if (options.hasOwnProperty(name)) {

}
callback.call(elem);
callback.call(elem); // Revert the old values
// Revert the old values
for (name in options) {

@@ -545,3 +479,2 @@ if (options.hasOwnProperty(name)) {

}
function getPBMWidth(elem, props, which) {

@@ -552,10 +485,7 @@ var value = 0;

var i;
for (j = 0; j < props.length; j++) {
prop = props[j];
if (prop) {
for (i = 0; i < which.length; i++) {
var cssProp = void 0;
if (prop === 'border') {

@@ -566,3 +496,2 @@ cssProp = "".concat(prop).concat(which[i], "Width");

}
value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;

@@ -572,10 +501,7 @@ }

}
return value;
}
var domUtils = {
getParent: function getParent(element) {
var parent = element;
do {

@@ -588,3 +514,2 @@ if (parent.nodeType === 11 && parent.host) {

} while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);
return parent;

@@ -596,8 +521,9 @@ }

var d = refWin.document;
return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight
return Math.max(
// firefox chrome documentElement.scrollHeight< body.scrollHeight
// ie standard mode : documentElement.scrollHeight> body.scrollHeight
d.documentElement["scroll".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
d.documentElement["scroll".concat(name)],
// quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
d.body["scroll".concat(name)], domUtils["viewport".concat(name)](d));
};
domUtils["viewport".concat(name)] = function (win) {

@@ -609,8 +535,9 @@ // pc browser includes scrollbar in window.innerWidth

var documentElement = doc.documentElement;
var documentElementProp = documentElement[prop]; // 标准模式取 documentElement
var documentElementProp = documentElement[prop];
// 标准模式取 documentElement
// backcompat 取 body
return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;
};
});
/*

@@ -624,6 +551,4 @@ 得到元素的大小信息

*/
function getWH(elem, name, ex) {
var extra = ex;
if (isWindow(elem)) {

@@ -634,3 +559,2 @@ return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);

}
var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];

@@ -640,23 +564,17 @@ var borderBoxValue = name === 'width' ? Math.floor(elem.getBoundingClientRect().width) : Math.floor(elem.getBoundingClientRect().height);

var cssBoxValue = 0;
if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {
borderBoxValue = undefined; // Fall back to computed then un computed css if necessary
borderBoxValue = undefined;
// Fall back to computed then un computed css if necessary
cssBoxValue = getComputedStyleX(elem, name);
if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {
cssBoxValue = elem.style[name] || 0;
} // Normalize '', auto, and prepare for extra
cssBoxValue = parseFloat(cssBoxValue) || 0;
}
// Normalize '', auto, and prepare for extra
cssBoxValue = Math.floor(parseFloat(cssBoxValue)) || 0;
}
if (extra === undefined) {
extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;
}
var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;
var val = borderBoxValue || cssBoxValue;
if (extra === CONTENT_INDEX) {

@@ -666,3 +584,2 @@ if (borderBoxValueOrIsBorderBox) {

}
return cssBoxValue;

@@ -673,9 +590,6 @@ } else if (borderBoxValueOrIsBorderBox) {

}
return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));
}
return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);
}
var cssShow = {

@@ -685,4 +599,5 @@ position: 'absolute',

display: 'block'
}; // fix #119 : https://github.com/kissyteam/kissy/issues/119
};
// fix #119 : https://github.com/kissyteam/kissy/issues/119
function getWHIgnoreDisplay() {

@@ -692,7 +607,6 @@ for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {

}
var val;
var elem = args[0]; // in case elem is window
var elem = args[0];
// in case elem is window
// elem.offsetWidth === undefined
if (elem.offsetWidth !== 0) {

@@ -705,36 +619,25 @@ val = getWH.apply(undefined, args);

}
return val;
}
each(['width', 'height'], function (name) {
var first = name.charAt(0).toUpperCase() + name.slice(1);
domUtils["outer".concat(first)] = function (el, includeMargin) {
return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);
};
var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
domUtils[name] = function (elem, v) {
var val = v;
if (val !== undefined) {
if (elem) {
var isBorderBox = isBorderBoxFn(elem);
if (isBorderBox) {
val += getPBMWidth(elem, ['padding', 'border'], which);
}
return css(elem, name, val);
}
return undefined;
}
return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);
};
});
function mix(to, from) {

@@ -746,6 +649,4 @@ for (var i in from) {

}
return to;
}
var utils = {

@@ -756,3 +657,2 @@ getWindow: function getWindow(node) {

}
var doc = node.ownerDocument || node;

@@ -775,3 +675,2 @@ return doc.defaultView || doc.parentWindow;

var ret = {};
for (i in obj) {

@@ -782,5 +681,3 @@ if (obj.hasOwnProperty(i)) {

}
var overflow = obj.overflow;
if (overflow) {

@@ -793,3 +690,2 @@ for (i in obj) {

}
return ret;

@@ -806,7 +702,5 @@ },

var ret = {};
for (var i = 0; i < arguments.length; i++) {
utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);
}
return ret;

@@ -822,10 +716,8 @@ },

*/
var getParent = utils.getParent;
function getOffsetParent(element) {
if (utils.isWindow(element) || element.nodeType === 9) {
return null;
} // ie 这个也不是完全可行
}
// ie 这个也不是完全可行
/*

@@ -845,4 +737,2 @@ <div style="width: 50px;height: 100px;overflow: hidden">

// 统一的 offsetParent 方法
var doc = utils.getDocument(element);

@@ -853,10 +743,7 @@ var body = doc.body;

var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';
if (!skipStatic) {
return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);
}
for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {
positionStyle = utils.css(parent, 'position');
if (positionStyle !== 'static') {

@@ -866,3 +753,2 @@ return parent;

}
return null;

@@ -876,11 +762,9 @@ }

}
var doc = utils.getDocument(element);
var body = doc.body;
var parent = null;
for (parent = getParent$1(element); // 修复元素位于 document.documentElement 下导致崩溃问题
for (parent = getParent$1(element);
// 修复元素位于 document.documentElement 下导致崩溃问题
parent && parent !== body && parent !== doc; parent = getParent$1(parent)) {
var positionStyle = utils.css(parent, 'position');
if (positionStyle === 'fixed') {

@@ -890,3 +774,2 @@ return true;

}
return false;

@@ -898,3 +781,2 @@ }

*/
function getVisibleRectForElement(element, alwaysByViewport) {

@@ -911,17 +793,20 @@ var visibleRect = {

var body = doc.body;
var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for
var documentElement = doc.documentElement;
// Determine the size of the visible rect by climbing the dom accounting for
// all scrollable containers.
while (el) {
// clientWidth is zero for inline block elements in ie.
if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire
if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&
// body may have overflow set on it, yet we still get the entire
// viewport. In some browsers, el.offsetParent may be
// document.documentElement, so check for that too.
el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {
var pos = utils.offset(el); // add border
var pos = utils.offset(el);
// add border
pos.left += el.clientLeft;
pos.top += el.clientTop;
visibleRect.top = Math.max(visibleRect.top, pos.top);
visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar
visibleRect.right = Math.min(visibleRect.right,
// consider area without scrollBar
pos.left + el.clientWidth);

@@ -933,15 +818,12 @@ visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);

}
el = getOffsetParent(el);
}
el = getOffsetParent(el);
} // Set element position to fixed
// Set element position to fixed
// make sure absolute element itself don't affect it's visible area
// https://github.com/ant-design/ant-design/issues/7601
var originalPosition = null;
if (!utils.isWindow(element) && element.nodeType !== 9) {
originalPosition = element.style.position;
var position = utils.css(element, 'position');
if (position === 'absolute') {

@@ -951,3 +833,2 @@ element.style.position = 'fixed';

}
var scrollX = utils.getWindowScrollLeft(win);

@@ -958,20 +839,18 @@ var scrollY = utils.getWindowScrollTop(win);

var documentWidth = documentElement.scrollWidth;
var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.
var documentHeight = documentElement.scrollHeight;
// scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.
// We should cut this ourself.
var bodyStyle = window.getComputedStyle(body);
if (bodyStyle.overflowX === 'hidden') {
documentWidth = win.innerWidth;
}
if (bodyStyle.overflowY === 'hidden') {
documentHeight = win.innerHeight;
} // Reset element position after calculate the visible area
}
// Reset element position after calculate the visible area
if (element.style) {
element.style.position = originalPosition;
}
if (alwaysByViewport || isAncestorFixed(element)) {

@@ -990,3 +869,2 @@ // Clip by viewport's size.

}
return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;

@@ -1001,29 +879,28 @@ }

};
if (overflow.adjustX && pos.left < visibleRect.left) {
pos.left = visibleRect.left;
} // Left edge inside and right edge outside viewport, try to resize it.
}
// Left edge inside and right edge outside viewport, try to resize it.
if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {
size.width -= pos.left + size.width - visibleRect.right;
} // Right edge outside viewport, try to move it.
}
// Right edge outside viewport, try to move it.
if (overflow.adjustX && pos.left + size.width > visibleRect.right) {
// 保证左边界和可视区域左边界对齐
pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);
} // Top edge outside viewport, try to move it.
}
// Top edge outside viewport, try to move it.
if (overflow.adjustY && pos.top < visibleRect.top) {
pos.top = visibleRect.top;
} // Top edge inside and bottom edge outside viewport, try to resize it.
}
// Top edge inside and bottom edge outside viewport, try to resize it.
if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {
size.height -= pos.top + size.height - visibleRect.bottom;
} // Bottom edge outside viewport, try to move it.
}
// Bottom edge outside viewport, try to move it.
if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {

@@ -1033,3 +910,2 @@ // 保证上边界和可视区域上边界对齐

}
return utils.mix(pos, size);

@@ -1042,3 +918,2 @@ }

var h;
if (!utils.isWindow(node) && node.nodeType !== 9) {

@@ -1057,3 +932,2 @@ offset = utils.offset(node);

}
offset.width = w;

@@ -1067,2 +941,3 @@ offset.height = h;

*/
function getAlignOffset(region, align) {

@@ -1075,3 +950,2 @@ var V = align.charAt(0);

var y = region.top;
if (V === 'c') {

@@ -1082,3 +956,2 @@ y += h / 2;

}
if (H === 'c') {

@@ -1089,3 +962,2 @@ x += w / 2;

}
return {

@@ -1112,18 +984,16 @@ left: x,

// http://yiminghe.iteye.com/blog/1124720
function isFailX(elFuturePos, elRegion, visibleRect) {
return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;
}
function isFailY(elFuturePos, elRegion, visibleRect) {
return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;
}
function isCompleteFailX(elFuturePos, elRegion, visibleRect) {
return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;
}
function isCompleteFailY(elFuturePos, elRegion, visibleRect) {
return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;
}
function flip(points, reg, map) {

@@ -1138,3 +1008,2 @@ var ret = [];

}
function flipOffset(offset, index) {

@@ -1144,6 +1013,4 @@ offset[index] = -offset[index];

}
function convertOffset(str, offsetLen) {
var n;
if (/%$/.test(str)) {

@@ -1154,6 +1021,4 @@ n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;

}
return n || 0;
}
function normalizeOffset(offset, el) {

@@ -1163,2 +1028,3 @@ offset[0] = convertOffset(offset[0], el.width);

}
/**

@@ -1169,4 +1035,2 @@ * @param el

*/
function doAlign(el, tgtRegion, align, isTgtRegionVisible) {

@@ -1183,15 +1047,16 @@ var points = align.points;

var fail = 0;
var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域
var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height
var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比
var alwaysByViewport = !!(overflow && overflow.alwaysByViewport);
// 当前节点可以被放置的显示区域
var visibleRect = getVisibleRectForElement(source, alwaysByViewport);
// 当前节点所占的区域, left/top/width/height
var elRegion = getRegion(source);
// 将 offset 转换成数值,支持百分比
normalizeOffset(offset, elRegion);
normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置
normalizeOffset(targetOffset, tgtRegion);
// 当前节点将要被放置的位置
var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);
// 当前节点将要所处的区域
var newElRegion = utils.merge(elRegion, elFuturePos);
var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域
var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整
// 如果可视区域不能完全放置当前节点时允许调整
if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {

@@ -1205,8 +1070,7 @@ if (overflow.adjustX) {

r: 'l'
}); // 偏移量也反下
});
// 偏移量也反下
var newOffset = flipOffset(offset, 0);
var newTargetOffset = flipOffset(targetOffset, 0);
var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);
if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {

@@ -1220,3 +1084,2 @@ fail = 1;

}
if (overflow.adjustY) {

@@ -1229,11 +1092,7 @@ // 如果纵向不能放下

b: 't'
}); // 偏移量也反下
});
// 偏移量也反下
var _newOffset = flipOffset(offset, 1);
var _newTargetOffset = flipOffset(targetOffset, 1);
var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);
if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {

@@ -1246,5 +1105,5 @@ fail = 1;

}
} // 如果失败,重新计算当前节点将要被放置的位置
}
// 如果失败,重新计算当前节点将要被放置的位置
if (fail) {

@@ -1254,10 +1113,10 @@ elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);

}
var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);
var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:
var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);
// 检查反下后的位置是否可以放下了,如果仍然放不下:
// 1. 复原修改过的定位参数
if (isStillFailX || isStillFailY) {
var _newPoints2 = points; // 重置对应部分的翻转逻辑
var _newPoints2 = points;
// 重置对应部分的翻转逻辑
if (isStillFailX) {

@@ -1269,3 +1128,2 @@ _newPoints2 = flip(points, /[lr]/gi, {

}
if (isStillFailY) {

@@ -1277,29 +1135,27 @@ _newPoints2 = flip(points, /[tb]/gi, {

}
points = _newPoints2;
offset = align.offset || [0, 0];
targetOffset = align.targetOffset || [0, 0];
} // 2. 只有指定了可以调整当前方向才调整
}
// 2. 只有指定了可以调整当前方向才调整
newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;
newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度
newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;
// 确实要调整,甚至可能会调整高度宽度
if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {
newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);
}
} // need judge to in case set fixed with in css on height auto element
}
// need judge to in case set fixed with in css on height auto element
if (newElRegion.width !== elRegion.width) {
utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);
}
if (newElRegion.height !== elRegion.height) {
utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);
} // https://github.com/kissyteam/kissy/issues/190
}
// https://github.com/kissyteam/kissy/issues/190
// 相对于屏幕位置没变,而 left/top 变了
// 例如 <div 'relative'><el absolute></div>
utils.offset(source, {

@@ -1335,3 +1191,2 @@ left: newElRegion.left,

}
function alignElement(el, refNode, align) {

@@ -1343,3 +1198,2 @@ var target = align.target || refNode;

}
alignElement.__getOffsetParent = getOffsetParent;

@@ -1350,38 +1204,21 @@ alignElement.__getVisibleRectForElement = getVisibleRectForElement;

var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _defineProperty(obj, key, value) {

@@ -1398,5 +1235,5 @@ if (key in obj) {

}
return obj;
}
/**

@@ -1416,3 +1253,2 @@ * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.

var viewportHeight = utils.viewportHeight(win);
if ('pageX' in tgtPoint) {

@@ -1423,3 +1259,2 @@ pageX = tgtPoint.pageX;

}
if ('pageY' in tgtPoint) {

@@ -1430,3 +1265,2 @@ pageY = tgtPoint.pageY;

}
var tgtRegion = {

@@ -1438,4 +1272,5 @@ left: pageX,

};
var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point
var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight;
// Provide default target point
var points = [align.points[0], 'cc'];

@@ -1442,0 +1277,0 @@ return doAlign(el, tgtRegion, _objectSpread(_objectSpread({}, align), {}, {

function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
enumerableOnly && (symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
}, _typeof(obj);
}
function _defineProperty(obj, key, value) {

@@ -66,3 +42,2 @@ if (key in obj) {

}
return obj;

@@ -79,3 +54,2 @@ }

};
function getVendorPrefix() {

@@ -85,7 +59,5 @@ if (vendorPrefix !== undefined) {

}
vendorPrefix = '';
var style = document.createElement('p').style;
var testProp = 'Transform';
for (var key in jsCssMap) {

@@ -96,10 +68,7 @@ if (key + testProp in style) {

}
return vendorPrefix;
}
function getTransitionName() {
return getVendorPrefix() ? "".concat(getVendorPrefix(), "TransitionProperty") : 'transitionProperty';
}
function getTransformName() {

@@ -110,6 +79,4 @@ return getVendorPrefix() ? "".concat(getVendorPrefix(), "Transform") : 'transform';

var name = getTransitionName();
if (name) {
node.style[name] = value;
if (name !== 'transitionProperty') {

@@ -120,9 +87,6 @@ node.style.transitionProperty = value;

}
function setTransform(node, value) {
var name = getTransformName();
if (name) {
node.style[name] = value;
if (name !== 'transform') {

@@ -133,3 +97,2 @@ node.style.transform = value;

}
function getTransitionProperty(node) {

@@ -141,3 +104,2 @@ return node.style.transitionProperty || node.style[getTransitionName()];

var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());
if (transform && transform !== 'none') {

@@ -150,3 +112,2 @@ var matrix = transform.replace(/[^0-9\-.,]/g, '').split(',');

}
return {

@@ -162,7 +123,5 @@ x: 0,

var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());
if (transform && transform !== 'none') {
var arr;
var match2d = transform.match(matrix2d);
if (match2d) {

@@ -191,4 +150,5 @@ match2d = match2d[1];

var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source;
var getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605
var getComputedStyleX;
// https://stackoverflow.com/a/3485654/3040605
function forceRelayout(elem) {

@@ -198,9 +158,6 @@ var originalStyle = elem.style.display;

elem.offsetHeight; // eslint-disable-line
elem.style.display = originalStyle;
}
function css(el, name, v) {
var value = v;
if (_typeof(name) === 'object') {

@@ -212,6 +169,4 @@ for (var i in name) {

}
return undefined;
}
if (typeof value !== 'undefined') {

@@ -221,10 +176,7 @@ if (typeof value === 'number') {

}
el.style[name] = value;
return undefined;
}
return getComputedStyleX(el, name);
}
function getClientPosition(elem) {

@@ -236,5 +188,7 @@ var box;

var body = doc.body;
var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
var docElem = doc && doc.documentElement;
// 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
box = elem.getBoundingClientRect();
box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
// 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
// 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确

@@ -244,3 +198,5 @@ // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin

x = Math.floor(box.left);
y = Math.floor(box.top); // In IE, most of the time, 2 extra pixels are added to the top and left
y = Math.floor(box.top);
// In IE, most of the time, 2 extra pixels are added to the top and left
// due to the implicit 2-pixel inset border. In IE6/7 quirks mode and

@@ -250,2 +206,3 @@ // IE6 standards mode, this border can be overridden by setting the

// offset always being 2 pixels.
// In quirks mode, the offset can be determined by querying the body's

@@ -256,2 +213,3 @@ // clientLeft/clientTop, but in standards mode, it is found by querying

// too expensive just to query them all.
// ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的

@@ -272,12 +230,9 @@ // 窗口边框标准是设 documentElement ,quirks 时设置 body

}
function getScroll(w, top) {
var ret = w["page".concat(top ? 'Y' : 'X', "Offset")];
var method = "scroll".concat(top ? 'Top' : 'Left');
if (typeof ret !== 'number') {
var d = w.document; // ie6,7,8 standard mode
var d = w.document;
// ie6,7,8 standard mode
ret = d.documentElement[method];
if (typeof ret !== 'number') {

@@ -288,14 +243,10 @@ // quirks mode

}
return ret;
}
function getScrollLeft(w) {
return getScroll(w);
}
function getScrollTop(w) {
return getScroll(w, true);
}
function getOffset(el) {

@@ -309,2 +260,3 @@ var pos = getClientPosition(el);

}
/**

@@ -314,11 +266,7 @@ * A crude way of determining if an object is a window

*/
function isWindow(obj) {
// must use == for ie8
/* eslint eqeqeq:0 */
return obj !== null && obj !== undefined && obj == obj.window;
}
function getDocument(node) {

@@ -328,10 +276,7 @@ if (isWindow(node)) {

}
if (node.nodeType === 9) {
return node;
}
return node.ownerDocument;
}
function _getComputedStyle(elem, name, cs) {

@@ -341,13 +286,11 @@ var computedStyle = cs;

var d = getDocument(elem);
computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61
computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null);
// https://github.com/kissyteam/kissy/issues/61
if (computedStyle) {
val = computedStyle.getPropertyValue(name) || computedStyle[name];
}
return val;
}
var _RE_NUM_NO_PX = new RegExp("^(".concat(RE_NUM, ")(?!px)[a-z%]+$"), 'i');
var RE_POS = /^(top|right|bottom|left)$/;

@@ -358,10 +301,12 @@ var CURRENT_STYLE = 'currentStyle';

var PX = 'px';
function _getComputedStyleIE(elem, name) {
// currentStyle maybe null
// http://msdn.microsoft.com/en-us/library/ms535231.aspx
var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];
// 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
// 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19
// 在 ie 下不对,需要直接用 offset 方式
// borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了
// From the awesome hack by Dean Edwards

@@ -372,3 +317,2 @@ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291

// exclude left right for relativity
if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {

@@ -378,20 +322,20 @@ // Remember the original values

var left = style[LEFT];
var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content
var rsLeft = elem[RUNTIME_STYLE][LEFT];
elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out
// prevent flashing of content
elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];
// Put in the new values to get a computed value out
style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;
ret = style.pixelLeft + PX; // Revert the changed values
ret = style.pixelLeft + PX;
// Revert the changed values
style[LEFT] = left;
elem[RUNTIME_STYLE][LEFT] = rsLeft;
}
return ret === '' ? 'auto' : ret;
}
if (typeof window !== 'undefined') {
getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;
}
function getOffsetDirection(dir, option) {

@@ -401,6 +345,4 @@ if (dir === 'left') {

}
return option.useCssBottom ? 'bottom' : dir;
}
function oppositeOffsetDirection(dir) {

@@ -416,5 +358,5 @@ if (dir === 'left') {

}
} // 设置 elem 相对 elem.ownerDocument 的坐标
}
// 设置 elem 相对 elem.ownerDocument 的坐标
function setLeftTop(elem, offset, option) {

@@ -425,3 +367,2 @@ // set position first, in-case top/left are set even on static elem

}
var presetH = -999;

@@ -433,14 +374,10 @@ var presetV = -999;

var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);
if (horizontalProperty !== 'left') {
presetH = 999;
}
if (verticalProperty !== 'top') {
presetV = 999;
}
var originalTransition = '';
var originalOffset = getOffset(elem);
if ('left' in offset || 'top' in offset) {

@@ -450,3 +387,2 @@ originalTransition = getTransitionProperty(elem) || '';

}
if ('left' in offset) {

@@ -456,13 +392,10 @@ elem.style[oppositeHorizontalProperty] = '';

}
if ('top' in offset) {
elem.style[oppositeVerticalProperty] = '';
elem.style[verticalProperty] = "".concat(presetV, "px");
} // force relayout
}
// force relayout
forceRelayout(elem);
var old = getOffset(elem);
var originalStyle = {};
for (var key in offset) {

@@ -473,3 +406,2 @@ if (offset.hasOwnProperty(key)) {

var off = originalOffset[key] - old[key];
if (dir === key) {

@@ -482,19 +414,13 @@ originalStyle[dir] = preset + off;

}
css(elem, originalStyle); // force relayout
css(elem, originalStyle);
// force relayout
forceRelayout(elem);
if ('left' in offset || 'top' in offset) {
setTransitionProperty(elem, originalTransition);
}
var ret = {};
for (var _key in offset) {
if (offset.hasOwnProperty(_key)) {
var _dir = getOffsetDirection(_key, option);
var _off = offset[_key] - originalOffset[_key];
if (_key === _dir) {

@@ -507,6 +433,4 @@ ret[_dir] = originalStyle[_dir] + _off;

}
css(elem, ret);
}
function setTransform$1(elem, offset) {

@@ -519,14 +443,10 @@ var originalOffset = getOffset(elem);

};
if ('left' in offset) {
resultXY.x = originalXY.x + offset.left - originalOffset.left;
}
if ('top' in offset) {
resultXY.y = originalXY.y + offset.top - originalOffset.top;
}
setTransformXY(elem, resultXY);
}
function setOffset(elem, offset, option) {

@@ -539,3 +459,2 @@ if (option.ignoreShake) {

var tTop = offset.top.toFixed(0);
if (oLeft === tLeft && oTop === tTop) {

@@ -545,3 +464,2 @@ return;

}
if (option.useCssRight || option.useCssBottom) {

@@ -555,3 +473,2 @@ setLeftTop(elem, offset, option);

}
function each(arr, fn) {

@@ -562,7 +479,5 @@ for (var i = 0; i < arr.length; i++) {

}
function isBorderBoxFn(elem) {
return getComputedStyleX(elem, 'boxSizing') === 'border-box';
}
var BOX_MODELS = ['margin', 'border', 'padding'];

@@ -573,8 +488,8 @@ var CONTENT_INDEX = -1;

var MARGIN_INDEX = 0;
function swap(elem, options, callback) {
var old = {};
var style = elem.style;
var name; // Remember the old values, and insert the new ones
var name;
// Remember the old values, and insert the new ones
for (name in options) {

@@ -586,5 +501,5 @@ if (options.hasOwnProperty(name)) {

}
callback.call(elem);
callback.call(elem); // Revert the old values
// Revert the old values
for (name in options) {

@@ -596,3 +511,2 @@ if (options.hasOwnProperty(name)) {

}
function getPBMWidth(elem, props, which) {

@@ -603,10 +517,7 @@ var value = 0;

var i;
for (j = 0; j < props.length; j++) {
prop = props[j];
if (prop) {
for (i = 0; i < which.length; i++) {
var cssProp = void 0;
if (prop === 'border') {

@@ -617,3 +528,2 @@ cssProp = "".concat(prop).concat(which[i], "Width");

}
value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;

@@ -623,10 +533,7 @@ }

}
return value;
}
var domUtils = {
getParent: function getParent(element) {
var parent = element;
do {

@@ -639,3 +546,2 @@ if (parent.nodeType === 11 && parent.host) {

} while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);
return parent;

@@ -647,8 +553,9 @@ }

var d = refWin.document;
return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight
return Math.max(
// firefox chrome documentElement.scrollHeight< body.scrollHeight
// ie standard mode : documentElement.scrollHeight> body.scrollHeight
d.documentElement["scroll".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
d.documentElement["scroll".concat(name)],
// quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
d.body["scroll".concat(name)], domUtils["viewport".concat(name)](d));
};
domUtils["viewport".concat(name)] = function (win) {

@@ -660,8 +567,9 @@ // pc browser includes scrollbar in window.innerWidth

var documentElement = doc.documentElement;
var documentElementProp = documentElement[prop]; // 标准模式取 documentElement
var documentElementProp = documentElement[prop];
// 标准模式取 documentElement
// backcompat 取 body
return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;
};
});
/*

@@ -675,6 +583,4 @@ 得到元素的大小信息

*/
function getWH(elem, name, ex) {
var extra = ex;
if (isWindow(elem)) {

@@ -685,3 +591,2 @@ return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);

}
var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];

@@ -691,23 +596,17 @@ var borderBoxValue = name === 'width' ? Math.floor(elem.getBoundingClientRect().width) : Math.floor(elem.getBoundingClientRect().height);

var cssBoxValue = 0;
if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {
borderBoxValue = undefined; // Fall back to computed then un computed css if necessary
borderBoxValue = undefined;
// Fall back to computed then un computed css if necessary
cssBoxValue = getComputedStyleX(elem, name);
if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {
cssBoxValue = elem.style[name] || 0;
} // Normalize '', auto, and prepare for extra
cssBoxValue = parseFloat(cssBoxValue) || 0;
}
// Normalize '', auto, and prepare for extra
cssBoxValue = Math.floor(parseFloat(cssBoxValue)) || 0;
}
if (extra === undefined) {
extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;
}
var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;
var val = borderBoxValue || cssBoxValue;
if (extra === CONTENT_INDEX) {

@@ -717,3 +616,2 @@ if (borderBoxValueOrIsBorderBox) {

}
return cssBoxValue;

@@ -724,9 +622,6 @@ } else if (borderBoxValueOrIsBorderBox) {

}
return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));
}
return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);
}
var cssShow = {

@@ -736,4 +631,5 @@ position: 'absolute',

display: 'block'
}; // fix #119 : https://github.com/kissyteam/kissy/issues/119
};
// fix #119 : https://github.com/kissyteam/kissy/issues/119
function getWHIgnoreDisplay() {

@@ -743,7 +639,6 @@ for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {

}
var val;
var elem = args[0]; // in case elem is window
var elem = args[0];
// in case elem is window
// elem.offsetWidth === undefined
if (elem.offsetWidth !== 0) {

@@ -756,36 +651,25 @@ val = getWH.apply(undefined, args);

}
return val;
}
each(['width', 'height'], function (name) {
var first = name.charAt(0).toUpperCase() + name.slice(1);
domUtils["outer".concat(first)] = function (el, includeMargin) {
return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);
};
var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
domUtils[name] = function (elem, v) {
var val = v;
if (val !== undefined) {
if (elem) {
var isBorderBox = isBorderBoxFn(elem);
if (isBorderBox) {
val += getPBMWidth(elem, ['padding', 'border'], which);
}
return css(elem, name, val);
}
return undefined;
}
return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);
};
});
function mix(to, from) {

@@ -797,6 +681,4 @@ for (var i in from) {

}
return to;
}
var utils = {

@@ -807,3 +689,2 @@ getWindow: function getWindow(node) {

}
var doc = node.ownerDocument || node;

@@ -826,3 +707,2 @@ return doc.defaultView || doc.parentWindow;

var ret = {};
for (i in obj) {

@@ -833,5 +713,3 @@ if (obj.hasOwnProperty(i)) {

}
var overflow = obj.overflow;
if (overflow) {

@@ -844,3 +722,2 @@ for (i in obj) {

}
return ret;

@@ -857,7 +734,5 @@ },

var ret = {};
for (var i = 0; i < arguments.length; i++) {
utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);
}
return ret;

@@ -873,10 +748,8 @@ },

*/
var getParent = utils.getParent;
function getOffsetParent(element) {
if (utils.isWindow(element) || element.nodeType === 9) {
return null;
} // ie 这个也不是完全可行
}
// ie 这个也不是完全可行
/*

@@ -896,4 +769,2 @@ <div style="width: 50px;height: 100px;overflow: hidden">

// 统一的 offsetParent 方法
var doc = utils.getDocument(element);

@@ -904,10 +775,7 @@ var body = doc.body;

var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';
if (!skipStatic) {
return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);
}
for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {
positionStyle = utils.css(parent, 'position');
if (positionStyle !== 'static') {

@@ -917,3 +785,2 @@ return parent;

}
return null;

@@ -927,11 +794,9 @@ }

}
var doc = utils.getDocument(element);
var body = doc.body;
var parent = null;
for (parent = getParent$1(element); // 修复元素位于 document.documentElement 下导致崩溃问题
for (parent = getParent$1(element);
// 修复元素位于 document.documentElement 下导致崩溃问题
parent && parent !== body && parent !== doc; parent = getParent$1(parent)) {
var positionStyle = utils.css(parent, 'position');
if (positionStyle === 'fixed') {

@@ -941,3 +806,2 @@ return true;

}
return false;

@@ -949,3 +813,2 @@ }

*/
function getVisibleRectForElement(element, alwaysByViewport) {

@@ -962,17 +825,20 @@ var visibleRect = {

var body = doc.body;
var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for
var documentElement = doc.documentElement;
// Determine the size of the visible rect by climbing the dom accounting for
// all scrollable containers.
while (el) {
// clientWidth is zero for inline block elements in ie.
if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire
if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&
// body may have overflow set on it, yet we still get the entire
// viewport. In some browsers, el.offsetParent may be
// document.documentElement, so check for that too.
el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {
var pos = utils.offset(el); // add border
var pos = utils.offset(el);
// add border
pos.left += el.clientLeft;
pos.top += el.clientTop;
visibleRect.top = Math.max(visibleRect.top, pos.top);
visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar
visibleRect.right = Math.min(visibleRect.right,
// consider area without scrollBar
pos.left + el.clientWidth);

@@ -984,15 +850,12 @@ visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);

}
el = getOffsetParent(el);
}
el = getOffsetParent(el);
} // Set element position to fixed
// Set element position to fixed
// make sure absolute element itself don't affect it's visible area
// https://github.com/ant-design/ant-design/issues/7601
var originalPosition = null;
if (!utils.isWindow(element) && element.nodeType !== 9) {
originalPosition = element.style.position;
var position = utils.css(element, 'position');
if (position === 'absolute') {

@@ -1002,3 +865,2 @@ element.style.position = 'fixed';

}
var scrollX = utils.getWindowScrollLeft(win);

@@ -1009,20 +871,18 @@ var scrollY = utils.getWindowScrollTop(win);

var documentWidth = documentElement.scrollWidth;
var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.
var documentHeight = documentElement.scrollHeight;
// scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.
// We should cut this ourself.
var bodyStyle = window.getComputedStyle(body);
if (bodyStyle.overflowX === 'hidden') {
documentWidth = win.innerWidth;
}
if (bodyStyle.overflowY === 'hidden') {
documentHeight = win.innerHeight;
} // Reset element position after calculate the visible area
}
// Reset element position after calculate the visible area
if (element.style) {
element.style.position = originalPosition;
}
if (alwaysByViewport || isAncestorFixed(element)) {

@@ -1041,3 +901,2 @@ // Clip by viewport's size.

}
return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;

@@ -1052,29 +911,28 @@ }

};
if (overflow.adjustX && pos.left < visibleRect.left) {
pos.left = visibleRect.left;
} // Left edge inside and right edge outside viewport, try to resize it.
}
// Left edge inside and right edge outside viewport, try to resize it.
if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {
size.width -= pos.left + size.width - visibleRect.right;
} // Right edge outside viewport, try to move it.
}
// Right edge outside viewport, try to move it.
if (overflow.adjustX && pos.left + size.width > visibleRect.right) {
// 保证左边界和可视区域左边界对齐
pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);
} // Top edge outside viewport, try to move it.
}
// Top edge outside viewport, try to move it.
if (overflow.adjustY && pos.top < visibleRect.top) {
pos.top = visibleRect.top;
} // Top edge inside and bottom edge outside viewport, try to resize it.
}
// Top edge inside and bottom edge outside viewport, try to resize it.
if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {
size.height -= pos.top + size.height - visibleRect.bottom;
} // Bottom edge outside viewport, try to move it.
}
// Bottom edge outside viewport, try to move it.
if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {

@@ -1084,3 +942,2 @@ // 保证上边界和可视区域上边界对齐

}
return utils.mix(pos, size);

@@ -1093,3 +950,2 @@ }

var h;
if (!utils.isWindow(node) && node.nodeType !== 9) {

@@ -1108,3 +964,2 @@ offset = utils.offset(node);

}
offset.width = w;

@@ -1118,2 +973,3 @@ offset.height = h;

*/
function getAlignOffset(region, align) {

@@ -1126,3 +982,2 @@ var V = align.charAt(0);

var y = region.top;
if (V === 'c') {

@@ -1133,3 +988,2 @@ y += h / 2;

}
if (H === 'c') {

@@ -1140,3 +994,2 @@ x += w / 2;

}
return {

@@ -1163,18 +1016,16 @@ left: x,

// http://yiminghe.iteye.com/blog/1124720
function isFailX(elFuturePos, elRegion, visibleRect) {
return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;
}
function isFailY(elFuturePos, elRegion, visibleRect) {
return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;
}
function isCompleteFailX(elFuturePos, elRegion, visibleRect) {
return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;
}
function isCompleteFailY(elFuturePos, elRegion, visibleRect) {
return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;
}
function flip(points, reg, map) {

@@ -1189,3 +1040,2 @@ var ret = [];

}
function flipOffset(offset, index) {

@@ -1195,6 +1045,4 @@ offset[index] = -offset[index];

}
function convertOffset(str, offsetLen) {
var n;
if (/%$/.test(str)) {

@@ -1205,6 +1053,4 @@ n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;

}
return n || 0;
}
function normalizeOffset(offset, el) {

@@ -1214,2 +1060,3 @@ offset[0] = convertOffset(offset[0], el.width);

}
/**

@@ -1220,4 +1067,2 @@ * @param el

*/
function doAlign(el, tgtRegion, align, isTgtRegionVisible) {

@@ -1234,15 +1079,16 @@ var points = align.points;

var fail = 0;
var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域
var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height
var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比
var alwaysByViewport = !!(overflow && overflow.alwaysByViewport);
// 当前节点可以被放置的显示区域
var visibleRect = getVisibleRectForElement(source, alwaysByViewport);
// 当前节点所占的区域, left/top/width/height
var elRegion = getRegion(source);
// 将 offset 转换成数值,支持百分比
normalizeOffset(offset, elRegion);
normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置
normalizeOffset(targetOffset, tgtRegion);
// 当前节点将要被放置的位置
var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);
// 当前节点将要所处的区域
var newElRegion = utils.merge(elRegion, elFuturePos);
var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域
var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整
// 如果可视区域不能完全放置当前节点时允许调整
if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {

@@ -1256,8 +1102,7 @@ if (overflow.adjustX) {

r: 'l'
}); // 偏移量也反下
});
// 偏移量也反下
var newOffset = flipOffset(offset, 0);
var newTargetOffset = flipOffset(targetOffset, 0);
var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);
if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {

@@ -1271,3 +1116,2 @@ fail = 1;

}
if (overflow.adjustY) {

@@ -1280,11 +1124,7 @@ // 如果纵向不能放下

b: 't'
}); // 偏移量也反下
});
// 偏移量也反下
var _newOffset = flipOffset(offset, 1);
var _newTargetOffset = flipOffset(targetOffset, 1);
var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);
if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {

@@ -1297,5 +1137,5 @@ fail = 1;

}
} // 如果失败,重新计算当前节点将要被放置的位置
}
// 如果失败,重新计算当前节点将要被放置的位置
if (fail) {

@@ -1305,10 +1145,10 @@ elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);

}
var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);
var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:
var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);
// 检查反下后的位置是否可以放下了,如果仍然放不下:
// 1. 复原修改过的定位参数
if (isStillFailX || isStillFailY) {
var _newPoints2 = points; // 重置对应部分的翻转逻辑
var _newPoints2 = points;
// 重置对应部分的翻转逻辑
if (isStillFailX) {

@@ -1320,3 +1160,2 @@ _newPoints2 = flip(points, /[lr]/gi, {

}
if (isStillFailY) {

@@ -1328,29 +1167,27 @@ _newPoints2 = flip(points, /[tb]/gi, {

}
points = _newPoints2;
offset = align.offset || [0, 0];
targetOffset = align.targetOffset || [0, 0];
} // 2. 只有指定了可以调整当前方向才调整
}
// 2. 只有指定了可以调整当前方向才调整
newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;
newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度
newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;
// 确实要调整,甚至可能会调整高度宽度
if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {
newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);
}
} // need judge to in case set fixed with in css on height auto element
}
// need judge to in case set fixed with in css on height auto element
if (newElRegion.width !== elRegion.width) {
utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);
}
if (newElRegion.height !== elRegion.height) {
utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);
} // https://github.com/kissyteam/kissy/issues/190
}
// https://github.com/kissyteam/kissy/issues/190
// 相对于屏幕位置没变,而 left/top 变了
// 例如 <div 'relative'><el absolute></div>
utils.offset(source, {

@@ -1386,3 +1223,2 @@ left: newElRegion.left,

}
function alignElement(el, refNode, align) {

@@ -1394,3 +1230,2 @@ var target = align.target || refNode;

}
alignElement.__getOffsetParent = getOffsetParent;

@@ -1413,3 +1248,2 @@ alignElement.__getVisibleRectForElement = getVisibleRectForElement;

var viewportHeight = utils.viewportHeight(win);
if ('pageX' in tgtPoint) {

@@ -1420,3 +1254,2 @@ pageX = tgtPoint.pageX;

}
if ('pageY' in tgtPoint) {

@@ -1427,3 +1260,2 @@ pageY = tgtPoint.pageY;

}
var tgtRegion = {

@@ -1435,4 +1267,5 @@ left: pageX,

};
var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point
var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight;
// Provide default target point
var points = [align.points[0], 'cc'];

@@ -1439,0 +1272,0 @@ return doAlign(el, tgtRegion, _objectSpread2(_objectSpread2({}, align), {}, {

{
"name": "dom-align",
"description": "Align DOM Node Flexibly ",
"version": "1.12.3",
"version": "1.12.4",
"license": "MIT",
"files": [
"dist-*/",
"bin/"
],
"pika": true,

@@ -11,0 +7,0 @@ "sideEffects": false,

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc