{"version":3,"file":"index.js","sources":["../../src/propertyUtils.js","../../src/utils.js","../../src/getOffsetParent.js","../../src/isAncestorFixed.js","../../src/getVisibleRectForElement.js","../../src/adjustForViewport.js","../../src/getRegion.js","../../src/getAlignOffset.js","../../src/getElFuturePos.js","../../src/align/align.js","../../src/align/alignElement.js","../../src/align/alignPoint.js"],"sourcesContent":["let vendorPrefix;\n\nconst 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 vendorPrefix = '';\n const style = document.createElement('p').style;\n const testProp = 'Transform';\n for (const key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix()\n ? `${getVendorPrefix()}TransitionProperty`\n : 'transitionProperty';\n}\n\nexport function getTransformName() {\n return getVendorPrefix() ? `${getVendorPrefix()}Transform` : 'transform';\n}\n\nexport function setTransitionProperty(node, value) {\n const name = getTransitionName();\n if (name) {\n node.style[name] = value;\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n const name = getTransformName();\n if (name) {\n node.style[name] = value;\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}\n\nexport function getTransformXY(node) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n const 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}\n\nconst matrix2d = /matrix\\((.*)\\)/;\nconst matrix3d = /matrix3d\\((.*)\\)/;\n\nexport function setTransformXY(node, xy) {\n const style = window.getComputedStyle(node, null);\n const transform =\n style.getPropertyValue('transform') ||\n style.getPropertyValue(getTransformName());\n if (transform && transform !== 'none') {\n let arr;\n let match2d = transform.match(matrix2d);\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, `matrix(${arr.join(',')})`);\n } else {\n const match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(item => {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, `matrix3d(${arr.join(',')})`);\n }\n } else {\n setTransform(\n node,\n `translateX(${xy.x}px) translateY(${xy.y}px) translateZ(0)`,\n );\n }\n}\n","import {\n setTransitionProperty,\n getTransitionProperty,\n getTransformXY,\n setTransformXY,\n getTransformName,\n} from './propertyUtils';\n\nconst RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nlet getComputedStyleX;\n\n// https://stackoverflow.com/a/3485654/3040605\nfunction forceRelayout(elem) {\n const originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n let value = v;\n if (typeof name === 'object') {\n for (const 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 = `${value}px`;\n }\n el.style[name] = value;\n return undefined;\n }\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n let box;\n let x;\n let y;\n const doc = elem.ownerDocument;\n const body = doc.body;\n const 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\n return {\n left: x,\n top: y,\n };\n}\n\nfunction getScroll(w, top) {\n let ret = w[`page${top ? 'Y' : 'X'}Offset`];\n const method = `scroll${top ? 'Top' : 'Left'}`;\n if (typeof ret !== 'number') {\n const 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}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n const pos = getClientPosition(el);\n const doc = el.ownerDocument;\n const 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}\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}\n\nfunction _getComputedStyle(elem, name, cs) {\n let computedStyle = cs;\n let val = '';\n const 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\n return val;\n}\n\nconst _RE_NUM_NO_PX = new RegExp(`^(${RE_NUM})(?!px)[a-z%]+$`, 'i');\nconst RE_POS = /^(top|right|bottom|left)$/;\nconst CURRENT_STYLE = 'currentStyle';\nconst RUNTIME_STYLE = 'runtimeStyle';\nconst LEFT = 'left';\nconst PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n let 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 const style = elem.style;\n const left = style[LEFT];\n const 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\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle\n ? _getComputedStyle\n : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\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}\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 let presetH = -999;\n let presetV = -999;\n const horizontalProperty = getOffsetDirection('left', option);\n const verticalProperty = getOffsetDirection('top', option);\n const oppositeHorizontalProperty = oppositeOffsetDirection(\n horizontalProperty,\n );\n const oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n let originalTransition = '';\n const 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] = `${presetH}px`;\n }\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = `${presetV}px`;\n }\n // force relayout\n forceRelayout(elem);\n const old = getOffset(elem);\n const originalStyle = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const preset = key === 'left' ? presetH : presetV;\n const 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 const ret = {};\n for (const key in offset) {\n if (offset.hasOwnProperty(key)) {\n const dir = getOffsetDirection(key, option);\n const 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}\n\nfunction setTransform(elem, offset) {\n const originalOffset = getOffset(elem);\n const originalXY = getTransformXY(elem);\n const resultXY = { x: originalXY.x, y: originalXY.y };\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}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n const oriOffset = getOffset(elem);\n\n const oLeft = oriOffset.left.toFixed(0);\n const oTop = oriOffset.top.toFixed(0);\n const tLeft = offset.left.toFixed(0);\n const 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 (\n option.useCssTransform &&\n getTransformName() in document.body.style\n ) {\n setTransform(elem, offset, option);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (let 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\nconst BOX_MODELS = ['margin', 'border', 'padding'];\nconst CONTENT_INDEX = -1;\nconst PADDING_INDEX = 2;\nconst BORDER_INDEX = 1;\nconst MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n const old = {};\n const style = elem.style;\n let 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\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}\n\nfunction getPBMWidth(elem, props, which) {\n let value = 0;\n let prop;\n let j;\n let 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 let cssProp;\n if (prop === 'border') {\n cssProp = `${prop}${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}\n\nconst domUtils = {\n getParent(element) {\n let 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};\n\neach(['Width', 'Height'], name => {\n domUtils[`doc${name}`] = refWin => {\n const 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${name}`],\n // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[`scroll${name}`],\n domUtils[`viewport${name}`](d),\n );\n };\n\n domUtils[`viewport${name}`] = win => {\n // pc browser includes scrollbar in window.innerWidth\n const prop = `client${name}`;\n const doc = win.document;\n const body = doc.body;\n const documentElement = doc.documentElement;\n const documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return (\n (doc.compatMode === 'CSS1Compat' && documentElementProp) ||\n (body && body[prop]) ||\n documentElementProp\n );\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 let extra = ex;\n if (isWindow(elem)) {\n return name === 'width'\n ? domUtils.viewportWidth(elem)\n : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width'\n ? domUtils.docWidth(elem)\n : domUtils.docHeight(elem);\n }\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n let borderBoxValue =\n name === 'width'\n ? Math.floor(elem.getBoundingClientRect().width)\n : Math.floor(elem.getBoundingClientRect().height);\n const isBorderBox = isBorderBoxFn(elem);\n let cssBoxValue = 0;\n if (\n borderBoxValue === null ||\n borderBoxValue === undefined ||\n borderBoxValue <= 0\n ) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (\n cssBoxValue === null ||\n cssBoxValue === undefined ||\n Number(cssBoxValue) < 0\n ) {\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 const borderBoxValueOrIsBorderBox =\n borderBoxValue !== undefined || isBorderBox;\n const 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 (\n val +\n (extra === PADDING_INDEX\n ? -getPBMWidth(elem, ['border'], which)\n : getPBMWidth(elem, ['margin'], which))\n );\n }\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nconst cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block',\n};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(...args) {\n let val;\n const 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, () => {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], name => {\n const first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils[`outer${first}`] = (el, includeMargin) => {\n return (\n el &&\n getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX)\n );\n };\n const which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = (elem, v) => {\n let val = v;\n if (val !== undefined) {\n if (elem) {\n const 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});\n\nfunction mix(to, from) {\n for (const i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n return to;\n}\n\nconst utils = {\n getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n const doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument,\n offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow,\n each,\n css,\n clone(obj) {\n let i;\n const ret = {};\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n const 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,\n getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n utils.mix(ret, args[i]);\n }\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0,\n};\n\nmix(utils, domUtils);\n\nexport default utils;\n","import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nconst { getParent } = utils;\n\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 const doc = utils.getDocument(element);\n const body = doc.body;\n let parent;\n let positionStyle = utils.css(element, 'position');\n const skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html'\n ? null\n : getParent(element);\n }\n\n for (\n parent = getParent(element);\n parent && parent !== body && parent.nodeType !== 9;\n parent = getParent(parent)\n ) {\n positionStyle = utils.css(parent, 'position');\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n return null;\n}\n\nexport default getOffsetParent;\n","import utils from './utils';\n\nconst { getParent } = utils;\n\nexport default function isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n const doc = utils.getDocument(element);\n const body = doc.body;\n let parent = null;\n for (\n parent = getParent(element);\n // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc;\n parent = getParent(parent)\n ) {\n const positionStyle = utils.css(parent, 'position');\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n return false;\n}\n","import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n const visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity,\n };\n let el = getOffsetParent(element);\n const doc = utils.getDocument(element);\n const win = doc.defaultView || doc.parentWindow;\n const body = doc.body;\n const 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 (\n (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 &&\n el !== documentElement &&\n utils.css(el, 'overflow') !== 'visible')\n ) {\n const 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(\n visibleRect.right,\n // consider area without scrollBar\n pos.left + el.clientWidth,\n );\n visibleRect.bottom = Math.min(\n visibleRect.bottom,\n pos.top + el.clientHeight,\n );\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 let originalPosition = null;\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n const position = utils.css(element, 'position');\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const viewportHeight = utils.viewportHeight(win);\n let documentWidth = documentElement.scrollWidth;\n let 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 const 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\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 const maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n\n const maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 &&\n visibleRect.left >= 0 &&\n visibleRect.bottom > visibleRect.top &&\n visibleRect.right > visibleRect.left\n ? visibleRect\n : null;\n}\n\nexport default getVisibleRectForElement;\n","import utils from './utils';\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n const pos = utils.clone(elFuturePos);\n const 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 }\n\n // Left edge inside and right edge outside viewport, try to resize it.\n if (\n overflow.resizeWidth &&\n pos.left >= visibleRect.left &&\n pos.left + size.width > visibleRect.right\n ) {\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 (\n overflow.resizeHeight &&\n pos.top >= visibleRect.top &&\n pos.top + size.height > visibleRect.bottom\n ) {\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\n return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;\n","import utils from './utils';\n\nfunction getRegion(node) {\n let offset;\n let w;\n let 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 const 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}\n\nexport default getRegion;\n","/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\n\nfunction getAlignOffset(region, align) {\n const V = align.charAt(0);\n const H = align.charAt(1);\n const w = region.width;\n const h = region.height;\n\n let x = region.left;\n let 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;\n","import getAlignOffset from './getAlignOffset';\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n const p1 = getAlignOffset(refNodeRegion, points[1]);\n const p2 = getAlignOffset(elRegion, points[0]);\n const diff = [p2.left - p1.left, p2.top - p1.top];\n\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","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nimport utils from '../utils';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport adjustForViewport from '../adjustForViewport';\nimport getRegion from '../getRegion';\nimport getElFuturePos from '../getElFuturePos';\n\n// http://yiminghe.iteye.com/blog/1124720\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left < visibleRect.left ||\n elFuturePos.left + elRegion.width > visibleRect.right\n );\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top < visibleRect.top ||\n elFuturePos.top + elRegion.height > visibleRect.bottom\n );\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.left > visibleRect.right ||\n elFuturePos.left + elRegion.width < visibleRect.left\n );\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return (\n elFuturePos.top > visibleRect.bottom ||\n elFuturePos.top + elRegion.height < visibleRect.top\n );\n}\n\nfunction flip(points, reg, map) {\n const ret = [];\n utils.each(points, p => {\n ret.push(\n p.replace(reg, m => {\n return map[m];\n }),\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 let 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}\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 let points = align.points;\n let offset = align.offset || [0, 0];\n let targetOffset = align.targetOffset || [0, 0];\n let overflow = align.overflow;\n const source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n const newOverflowCfg = {};\n let fail = 0;\n const alwaysByViewport = !!(overflow && overflow.alwaysByViewport);\n // 当前节点可以被放置的显示区域\n const visibleRect = getVisibleRectForElement(source, alwaysByViewport);\n // 当前节点所占的区域, left/top/width/height\n const elRegion = getRegion(source);\n // 将 offset 转换成数值,支持百分比\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion);\n // 当前节点将要被放置的位置\n let elFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n // 当前节点将要所处的区域\n let newElRegion = utils.merge(elRegion, elFuturePos);\n\n // 如果可视区域不能完全放置当前节点时允许调整\n if (\n visibleRect &&\n (overflow.adjustX || overflow.adjustY) &&\n isTgtRegionVisible\n ) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n const newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 0);\n const newTargetOffset = flipOffset(targetOffset, 0);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\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 const newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n // 偏移量也反下\n const newOffset = flipOffset(offset, 1);\n const newTargetOffset = flipOffset(targetOffset, 1);\n const newElFuturePos = getElFuturePos(\n elRegion,\n tgtRegion,\n newPoints,\n newOffset,\n newTargetOffset,\n );\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(\n elRegion,\n tgtRegion,\n points,\n offset,\n targetOffset,\n );\n utils.mix(newElRegion, elFuturePos);\n }\n const isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n const isStillFailY = isFailY(elFuturePos, elRegion, visibleRect);\n // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n if (isStillFailX || isStillFailY) {\n let newPoints = points;\n\n // 重置对应部分的翻转逻辑\n if (isStillFailX) {\n newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n }\n if (isStillFailY) {\n newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n }\n\n points = newPoints;\n\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(\n elFuturePos,\n elRegion,\n visibleRect,\n newOverflowCfg,\n );\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(\n source,\n 'width',\n utils.width(source) + newElRegion.width - elRegion.width,\n );\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(\n source,\n 'height',\n utils.height(source) + newElRegion.height - elRegion.height,\n );\n }\n\n // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
\n utils.offset(\n source,\n {\n left: newElRegion.left,\n top: newElRegion.top,\n },\n {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake,\n },\n );\n\n return {\n points,\n offset,\n 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 **/\n","import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n const visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n const targetRegion = getRegion(target);\n\n return (\n !visibleRect ||\n targetRegion.left + targetRegion.width <= visibleRect.left ||\n targetRegion.top + targetRegion.height <= visibleRect.top ||\n targetRegion.left >= visibleRect.right ||\n targetRegion.top >= visibleRect.bottom\n );\n}\n\nfunction alignElement(el, refNode, align) {\n const target = align.target || refNode;\n const refNodeRegion = getRegion(target);\n\n const isTargetNotOutOfVisible = !isOutOfVisibleRect(\n target,\n align.overflow && align.overflow.alwaysByViewport,\n );\n\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;\n","import utils from '../utils';\nimport doAlign from './align';\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 let pageX;\n let pageY;\n\n const doc = utils.getDocument(el);\n const win = doc.defaultView || doc.parentWindow;\n\n const scrollX = utils.getWindowScrollLeft(win);\n const scrollY = utils.getWindowScrollTop(win);\n const viewportWidth = utils.viewportWidth(win);\n const 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 const tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0,\n };\n\n const pointInView =\n pageX >= 0 &&\n pageX <= scrollX + viewportWidth &&\n (pageY >= 0 && pageY <= scrollY + viewportHeight);\n\n // Provide default target point\n const points = [align.points[0], 'cc'];\n\n return doAlign(el, tgtRegion, { ...align, points }, pointInView);\n}\n\nexport default alignPoint;\n"],"names":["vendorPrefix","jsCssMap","Webkit","Moz","ms","O","getVendorPrefix","undefined","style","document","createElement","testProp","key","getTransitionName","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","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","obj","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","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","args","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","concat","newOverflowCfg","fail","newElRegion","newPoints","l","r","newOffset","newTargetOffset","newElFuturePos","t","b","isStillFailX","isStillFailY","isOutOfVisibleRect","target","targetRegion","alignElement","refNode","isTargetNotOutOfVisible","__getOffsetParent","__getVisibleRectForElement","alignPoint","tgtPoint","pageX","pageY","clientX","clientY","pointInView"],"mappings":"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"}