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