{"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};\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\nfunction getTransitionName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\nexport function getTransformName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nexport function setTransitionProperty(node, value) {\n var name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\nfunction setTransform(node, value) {\n var name = getTransformName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transform') {\n node.style.transform = value;\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 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 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 if (transform && transform !== 'none') {\n var arr;\n var match2d = transform.match(matrix2d);\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\"; 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); }\nimport { setTransitionProperty, getTransitionProperty, getTransformXY, setTransformXY, getTransformName } from \"./propertyUtils.js\";\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n var originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n elem.style.display = originalStyle;\n}\nfunction css(el, name, v) {\n var value = v;\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 return undefined;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = \"\".concat(value, \"px\");\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\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;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = Math.floor(box.left);\n y = Math.floor(box.top);\n\n // 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\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\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}\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\nfunction getScrollTop(w) {\n return getScroll(w, true);\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/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n if (node.nodeType === 9) {\n return node;\n }\n return node.ownerDocument;\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);\n\n // https://github.com/kissyteam/kissy/issues/61\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n return val;\n}\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\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];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\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 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];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n return option.useCssBottom ? 'bottom' : dir;\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}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\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 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 if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n }\n // force relayout\n forceRelayout(elem);\n var old = getOffset(elem);\n var originalStyle = {};\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 if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n css(elem, originalStyle);\n // force relayout\n forceRelayout(elem);\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n var ret = {};\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n var _off = offset[_key] - originalOffset[_key];\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n css(elem, ret);\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 if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n setTransformXY(elem, resultXY);\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 if (oLeft === tLeft && oTop === tTop) {\n return;\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}\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n if (prop === 'border') {\n cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\nvar domUtils = {\n getParent: function getParent(element) {\n var parent = element;\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 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(\n // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\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];\n // 标准模式取 documentElement\n // backcompat 取 body\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\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 */\nfunction getWH(elem, name, ex) {\n var extra = ex;\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 var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? Math.floor(elem.getBoundingClientRect().width) : Math.floor(elem.getBoundingClientRect().height);\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = Math.floor(parseFloat(cssBoxValue)) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n var val;\n var elem = args[0];\n // in case elem is window\n // elem.offsetWidth === undefined\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 return val;\n}\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n domUtils[name] = function (elem, v) {\n var val = v;\n if (val !== undefined) {\n if (elem) {\n var isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n return css(elem, name, val);\n }\n return undefined;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\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 return to;\n}\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\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 for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n var overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\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 for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\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;\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n }\n // ie 这个也不是完全可行\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 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 if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n }\n for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {\n positionStyle = utils.css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\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 var doc = utils.getDocument(element);\n var body = doc.body;\n var parent = null;\n for (parent = getParent(element);\n // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc; parent = getParent(parent)) {\n var positionStyle = utils.css(parent, 'position');\n if (positionStyle === 'fixed') {\n return true;\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;\n\n // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) &&\n // 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);\n // add border\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,\n // 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 el = getOffsetParent(el);\n }\n\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 var originalPosition = null;\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n var position = utils.css(element, 'position');\n if (position === 'absolute') {\n element.style.position = 'fixed';\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;\n\n // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n var bodyStyle = window.getComputedStyle(body);\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n }\n\n // Reset element position after calculate the visible area\n if (element.style) {\n element.style.position = originalPosition;\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 return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\nexport default getVisibleRectForElement;","import utils from \"./utils.js\";\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 if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n }\n\n // Right edge outside viewport, try to move it.\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n }\n\n // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n return utils.mix(pos, size);\n}\nexport default adjustForViewport;","import utils from \"./utils.js\";\nfunction getRegion(node) {\n var offset;\n var w;\n var h;\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 offset.width = w;\n offset.height = h;\n return offset;\n}\nexport default getRegion;","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\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 if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n return {\n left: x,\n top: y\n };\n}\nexport default getAlignOffset;","import getAlignOffset from \"./getAlignOffset.js\";\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}\nexport default getElFuturePos;","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\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\";\n\n// 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}\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\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}\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\nfunction convertOffset(str, offsetLen) {\n var 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 return n || 0;\n}\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\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);\n // 当前节点所占的区域, left/top/width/height\n var elRegion = getRegion(source);\n // 将 offset 转换成数值,支持百分比\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 // 如果可视区域不能完全放置当前节点时允许调整\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 if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\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 var _newOffset = flipOffset(offset, 1);\n var _newTargetOffset = flipOffset(targetOffset, 1);\n var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\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 var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n if (isStillFailX || isStillFailY) {\n var _newPoints2 = points;\n\n // 重置对应部分的翻转逻辑\n if (isStillFailX) {\n _newPoints2 = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n });\n }\n if (isStillFailY) {\n _newPoints2 = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n });\n }\n points = _newPoints2;\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n }\n // 2. 只有指定了可以调整当前方向才调整\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY;\n\n // 确实要调整,甚至可能会调整高度宽度\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n }\n\n // need judge to in case set fixed with in css on height auto element\n if (newElRegion.width !== elRegion.width) {\n utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n }\n if (newElRegion.height !== elRegion.height) {\n utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\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}\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\";\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}\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}\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); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { 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; }\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; }\nimport utils from \"../utils.js\";\nimport doAlign from \"./align.js\";\n\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 if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\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;\n\n // Provide default target point\n var points = [align.points[0], 'cc'];\n return doAlign(el, tgtRegion, _objectSpread(_objectSpread({}, align), {}, {\n points: points\n }), pointInView);\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","Math","floor","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","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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"}