{"version":3,"file":"index.js","sources":["../dist-src/propertyUtils.js","../dist-src/utils.js","../dist-src/getOffsetParent.js","../dist-src/isAncestorFixed.js","../dist-src/getVisibleRectForElement.js","../dist-src/adjustForViewport.js","../dist-src/getRegion.js","../dist-src/getAlignOffset.js","../dist-src/getElFuturePos.js","../dist-src/align/align.js","../dist-src/align/alignElement.js","../dist-src/align/alignPoint.js"],"sourcesContent":["var vendorPrefix;\nvar jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-'\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\n\nexport function getTransformName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nexport function setTransitionProperty(node, value) {\n var name = getTransitionName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n var name = getTransformName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nexport function getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\nexport function getTransformXY(node) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\nexport function setTransformXY(node, xy) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var arr;\n var match2d = transform.match(matrix2d);\n\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, \"matrix(\".concat(arr.join(','), \")\"));\n } else {\n var match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, \"matrix3d(\".concat(arr.join(','), \")\"));\n }\n } else {\n setTransform(node, \"translateX(\".concat(xy.x, \"px) translateY(\").concat(xy.y, \"px) translateZ(0)\"));\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; 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); }\n\nimport { setTransitionProperty, getTransitionProperty, getTransformXY, setTransformXY, getTransformName } from \"./propertyUtils.js\";\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605\n\nfunction forceRelayout(elem) {\n var originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n var value = v;\n\n if (_typeof(name) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n\n return undefined;\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = \"\".concat(value, \"px\");\n }\n\n el.style[name] = value;\n return undefined;\n }\n\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n var box;\n var x;\n var y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n\n box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top; // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n if (typeof ret !== 'number') {\n var d = w.document; // ie6,7,8 standard mode\n\n ret = d.documentElement[method];\n\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n // must use == for ie8\n\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n\n if (node.nodeType === 9) {\n return node;\n }\n\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n var computedStyle = cs;\n var val = '';\n var d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX; // Revert the changed values\n\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n} // 设置 elem 相对 elem.ownerDocument 的坐标\n\n\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var presetH = -999;\n var presetV = -999;\n var horizontalProperty = getOffsetDirection('left', option);\n var verticalProperty = getOffsetDirection('top', option);\n var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n }\n\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n } // force relayout\n\n\n forceRelayout(elem);\n var old = getOffset(elem);\n var originalStyle = {};\n\n for (var key in offset) {\n if (offset.hasOwnProperty(key)) {\n var dir = getOffsetDirection(key, option);\n var preset = key === 'left' ? presetH : presetV;\n var off = originalOffset[key] - old[key];\n\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n\n css(elem, originalStyle); // force relayout\n\n forceRelayout(elem);\n\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n\n var ret = {};\n\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n\n var _off = offset[_key] - originalOffset[_key];\n\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n\n css(elem, ret);\n}\n\nfunction setTransform(elem, offset) {\n var originalOffset = getOffset(elem);\n var originalXY = getTransformXY(elem);\n var resultXY = {\n x: originalXY.x,\n y: originalXY.y\n };\n\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n var oriOffset = getOffset(elem);\n var oLeft = oriOffset.left.toFixed(0);\n var oTop = oriOffset.top.toFixed(0);\n var tLeft = offset.left.toFixed(0);\n var tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (option.useCssTransform && getTransformName() in document.body.style) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name; // Remember the old values, and insert the new ones\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem); // Revert the old values\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n\n if (prop === 'border') {\n cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n\n return value;\n}\n\nvar domUtils = {\n getParent: function getParent(element) {\n var parent = element;\n\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n\n return parent;\n }\n};\neach(['Width', 'Height'], function (name) {\n domUtils[\"doc\".concat(name)] = function (refWin) {\n var d = refWin.document;\n return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n };\n\n domUtils[\"viewport\".concat(name)] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = \"client\".concat(name);\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n // backcompat 取 body\n\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, ex) {\n var extra = ex;\n\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.getBoundingClientRect().width : elem.getBoundingClientRect().height;\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n cssBoxValue = getComputedStyleX(elem, name);\n\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n } // Normalize '', auto, and prepare for extra\n\n\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n }\n\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var val;\n var elem = args[0]; // in case elem is window\n // elem.offsetWidth === undefined\n\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, v) {\n var val = v;\n\n if (val !== undefined) {\n if (elem) {\n var isBorderBox = isBorderBoxFn(elem);\n\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n\n return css(elem, name, val);\n }\n\n return undefined;\n }\n\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (var i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n\n return to;\n}\n\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument: getDocument,\n offset: function offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var i;\n var ret = {};\n\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n\n var overflow = obj.overflow;\n\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n\n return ret;\n },\n mix: mix,\n getWindowScrollLeft: function getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop: function getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge: function merge() {\n var ret = {};\n\n for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n }\n\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0\n};\nmix(utils, domUtils);\nexport default utils;","import utils from \"./utils.js\";\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nvar getParent = utils.getParent;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n } // ie 这个也不是完全可行\n\n /*\n
\n
\n 元素 6 高 100px 宽 50px
\n
\n
\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent;\n var positionStyle = utils.css(element, 'position');\n var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n }\n\n for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {\n positionStyle = utils.css(parent, 'position');\n\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n\n return null;\n}\n\nexport default getOffsetParent;","import utils from \"./utils.js\";\nvar getParent = utils.getParent;\nexport default function isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent = null;\n\n for (parent = getParent(element); // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc; parent = getParent(parent)) {\n var positionStyle = utils.css(parent, 'position');\n\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n\n return false;\n}","import utils from \"./utils.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport isAncestorFixed from \"./isAncestorFixed.js\";\n/**\n * 获得元素的显示部分的区域\n */\n\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n var visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity\n };\n var el = getOffsetParent(element);\n var doc = utils.getDocument(element);\n var win = doc.defaultView || doc.parentWindow;\n var body = doc.body;\n var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {\n var pos = utils.offset(el); // add border\n\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar\n pos.left + el.clientWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n\n el = getOffsetParent(el);\n } // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n\n\n var originalPosition = null;\n\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n var position = utils.css(element, 'position');\n\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n var documentWidth = documentElement.scrollWidth;\n var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n\n var bodyStyle = window.getComputedStyle(body);\n\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n } // Reset element position after calculate the visible area\n\n\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nexport default getVisibleRectForElement;","import utils from \"./utils.js\";\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n var pos = utils.clone(elFuturePos);\n var size = {\n width: elRegion.width,\n height: elRegion.height\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n } // Left edge inside and right edge outside viewport, try to resize it.\n\n\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n } // Right edge outside viewport, try to move it.\n\n\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n } // Top edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n } // Top edge inside and bottom edge outside viewport, try to resize it.\n\n\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n } // Bottom edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;","import utils from \"./utils.js\";\n\nfunction getRegion(node) {\n var offset;\n var w;\n var h;\n\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n var win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win)\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\nexport default getRegion;","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\nfunction getAlignOffset(region, align) {\n var V = align.charAt(0);\n var H = align.charAt(1);\n var w = region.width;\n var h = region.height;\n var x = region.left;\n var y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y\n };\n}\n\nexport default getAlignOffset;","import getAlignOffset from \"./getAlignOffset.js\";\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n var p1 = getAlignOffset(refNodeRegion, points[1]);\n var p2 = getAlignOffset(elRegion, points[0]);\n var diff = [p2.left - p1.left, p2.top - p1.top];\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n };\n}\n\nexport default getElFuturePos;","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\nimport utils from \"../utils.js\";\nimport getVisibleRectForElement from \"../getVisibleRectForElement.js\";\nimport adjustForViewport from \"../adjustForViewport.js\";\nimport getRegion from \"../getRegion.js\";\nimport getElFuturePos from \"../getElFuturePos.js\"; // http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n var ret = [];\n utils.each(points, function (p) {\n ret.push(p.replace(reg, function (m) {\n return map[m];\n }));\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n var n;\n\n if (/%$/.test(str)) {\n n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\n\n\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n var points = align.points;\n var offset = align.offset || [0, 0];\n var targetOffset = align.targetOffset || [0, 0];\n var overflow = align.overflow;\n var source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n var newOverflowCfg = {};\n var fail = 0;\n var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域\n\n var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height\n\n var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比\n\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置\n\n var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域\n\n var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整\n\n if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n }); // 偏移量也反下\n\n var newOffset = flipOffset(offset, 0);\n var newTargetOffset = flipOffset(targetOffset, 0);\n var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var _newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n }); // 偏移量也反下\n\n\n var _newOffset = flipOffset(offset, 1);\n\n var _newTargetOffset = flipOffset(targetOffset, 1);\n\n var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\n\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n } // 如果失败,重新计算当前节点将要被放置的位置\n\n\n if (fail) {\n elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);\n utils.mix(newElRegion, elFuturePos);\n }\n\n var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n\n if (isStillFailX || isStillFailY) {\n var _newPoints2 = points; // 重置对应部分的翻转逻辑\n\n if (isStillFailX) {\n _newPoints2 = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n });\n }\n\n if (isStillFailY) {\n _newPoints2 = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n });\n }\n\n points = _newPoints2;\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n } // 2. 只有指定了可以调整当前方向才调整\n\n\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度\n\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n } // need judge to in case set fixed with in css on height auto element\n\n\n if (newElRegion.width !== elRegion.width) {\n utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n } // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
\n\n\n utils.offset(source, {\n left: newElRegion.left,\n top: newElRegion.top\n }, {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake\n });\n return {\n points: points,\n offset: offset,\n targetOffset: targetOffset,\n overflow: newOverflowCfg\n };\n}\n\nexport default doAlign;\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/","import doAlign from \"./align.js\";\nimport getOffsetParent from \"../getOffsetParent.js\";\nimport getVisibleRectForElement from \"../getVisibleRectForElement.js\";\nimport getRegion from \"../getRegion.js\";\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n var visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n var targetRegion = getRegion(target);\n return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom;\n}\n\nfunction alignElement(el, refNode, align) {\n var target = align.target || refNode;\n var refNodeRegion = getRegion(target);\n var isTargetNotOutOfVisible = !isOutOfVisibleRect(target, align.overflow && align.overflow.alwaysByViewport);\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\nexport default alignElement;","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); } return keys; }\n\nfunction _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)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport utils from \"../utils.js\";\nimport doAlign from \"./align.js\";\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n var pageX;\n var pageY;\n var doc = utils.getDocument(el);\n var win = doc.defaultView || doc.parentWindow;\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n var tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0\n };\n var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point\n\n var points = [align.points[0], 'cc'];\n return doAlign(el, tgtRegion, _objectSpread(_objectSpread({}, align), {}, {\n points: points\n }), pointInView);\n}\n\nexport default alignPoint;"],"names":["vendorPrefix","jsCssMap","Webkit","Moz","ms","O","getVendorPrefix","undefined","style","document","createElement","testProp","key","getTransitionName","concat","getTransformName","setTransitionProperty","node","value","name","transitionProperty","setTransform","transform","getTransitionProperty","getTransformXY","window","getComputedStyle","getPropertyValue","matrix","replace","split","x","parseFloat","y","matrix2d","matrix3d","setTransformXY","xy","arr","match2d","match","map","item","join","match3d","_typeof","obj","Symbol","iterator","constructor","prototype","RE_NUM","source","getComputedStyleX","forceRelayout","elem","originalStyle","display","offsetHeight","css","el","v","i","hasOwnProperty","getClientPosition","box","doc","ownerDocument","body","docElem","documentElement","getBoundingClientRect","left","top","clientLeft","clientTop","getScroll","w","ret","method","d","getScrollLeft","getScrollTop","getOffset","pos","defaultView","parentWindow","isWindow","getDocument","nodeType","_getComputedStyle","cs","computedStyle","val","_RE_NUM_NO_PX","RegExp","RE_POS","CURRENT_STYLE","RUNTIME_STYLE","LEFT","PX","_getComputedStyleIE","test","rsLeft","pixelLeft","getOffsetDirection","dir","option","useCssRight","useCssBottom","oppositeOffsetDirection","setLeftTop","offset","position","presetH","presetV","horizontalProperty","verticalProperty","oppositeHorizontalProperty","oppositeVerticalProperty","originalTransition","originalOffset","old","preset","off","_key","_dir","_off","originalXY","resultXY","setOffset","ignoreShake","oriOffset","oLeft","toFixed","oTop","tLeft","tTop","useCssTransform","each","fn","length","isBorderBoxFn","BOX_MODELS","CONTENT_INDEX","PADDING_INDEX","BORDER_INDEX","MARGIN_INDEX","swap","options","callback","call","getPBMWidth","props","which","prop","j","cssProp","domUtils","getParent","element","parent","host","parentNode","refWin","Math","max","win","documentElementProp","compatMode","getWH","ex","extra","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","width","height","isBorderBox","cssBoxValue","Number","borderBoxValueOrIsBorderBox","slice","cssShow","visibility","getWHIgnoreDisplay","_len","arguments","args","Array","_key2","offsetWidth","apply","first","charAt","toUpperCase","includeMargin","mix","to","from","utils","getWindow","setTimeout","clone","overflow","getWindowScrollLeft","getWindowScrollTop","merge","getOffsetParent","positionStyle","skipStatic","nodeName","toLowerCase","isAncestorFixed","getVisibleRectForElement","alwaysByViewport","visibleRect","right","Infinity","bottom","navigator","userAgent","indexOf","clientWidth","min","clientHeight","originalPosition","scrollX","scrollY","documentWidth","scrollWidth","documentHeight","scrollHeight","bodyStyle","overflowX","innerWidth","overflowY","innerHeight","maxVisibleWidth","maxVisibleHeight","adjustForViewport","elFuturePos","elRegion","size","adjustX","resizeWidth","adjustY","resizeHeight","getRegion","h","outerWidth","outerHeight","getAlignOffset","region","align","V","H","getElFuturePos","refNodeRegion","points","targetOffset","p1","p2","diff","round","isFailX","isFailY","isCompleteFailX","isCompleteFailY","flip","reg","p","push","m","flipOffset","index","convertOffset","str","offsetLen","n","parseInt","substring","normalizeOffset","doAlign","tgtRegion","isTgtRegionVisible","newOverflowCfg","fail","newElRegion","newPoints","l","r","newOffset","newTargetOffset","newElFuturePos","_newPoints","t","b","_newOffset","_newTargetOffset","_newElFuturePos","isStillFailX","isStillFailY","_newPoints2","isOutOfVisibleRect","target","targetRegion","alignElement","refNode","isTargetNotOutOfVisible","__getOffsetParent","__getVisibleRectForElement","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","alignPoint","tgtPoint","pageX","pageY","clientX","clientY","pointInView"],"mappings":"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"}