amis-rpc-design/node_modules/dom-align/dist-node/index.js.map
2023-10-07 19:42:30 +08:00

1 line
81 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"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 <div style=\"width: 50px;height: 100px;overflow: hidden\">\n <div style=\"width: 50px;height: 100px;position: relative;\" id=\"d6\">\n 元素 6 高 100px 宽 50px<br/>\n </div>\n </div>\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 // 例如 <div 'relative'><el absolute></div>\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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"}