{"version":3,"sources":["webpack:///./node_modules/dom-align/es/adjustForViewport.js","webpack:///./node_modules/dom-align/es/getAlignOffset.js","webpack:///./node_modules/dom-align/es/getElFuturePos.js","webpack:///./node_modules/dom-align/es/align/align.js","webpack:///./node_modules/dom-align/es/align/alignElement.js","webpack:///./node_modules/dom-align/es/align/alignPoint.js","webpack:///./node_modules/dom-align/es/getVisibleRectForElement.js","webpack:///./node_modules/dom-align/es/getOffsetParent.js","webpack:///./node_modules/dom-align/es/getRegion.js"],"names":["es_adjustForViewport","elFuturePos","elRegion","visibleRect","overflow","pos","utils","clone","size","width","height","adjustX","left","resizeWidth","right","Math","max","adjustY","top","resizeHeight","bottom","mix","es_getAlignOffset","region","align","V","charAt","H","w","h","x","y","es_getElFuturePos","refNodeRegion","points","offset","targetOffset","p1","p2","diff","round","isFailX","isFailY","flip","reg","map","ret","each","p","push","replace","m","flipOffset","index","convertOffset","str","offsetLen","test","parseInt","substring","length","normalizeOffset","el","__webpack_exports__","tgtRegion","isTgtRegionVisible","source","concat","newOverflowCfg","fail","Object","getVisibleRectForElement","getRegion","newElRegion","merge","newPoints","l","r","newOffset","newTargetOffset","isCompleteFailX","_newPoints","t","b","_newOffset","_newTargetOffset","isCompleteFailY","isStillFailX","isStillFailY","css","useCssRight","useCssBottom","useCssTransform","ignoreShake","_align__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","_getOffsetParent__WEBPACK_IMPORTED_MODULE_1__","_getVisibleRectForElement__WEBPACK_IMPORTED_MODULE_2__","_getRegion__WEBPACK_IMPORTED_MODULE_3__","alignElement","refNode","target","isTargetNotOutOfVisible","targetRegion","isOutOfVisibleRect","__getOffsetParent","__getVisibleRectForElement","assign","_utils__WEBPACK_IMPORTED_MODULE_0__","_isAncestorFixed__WEBPACK_IMPORTED_MODULE_2__","element","Infinity","doc","getDocument","win","defaultView","parentWindow","body","documentElement","navigator","userAgent","indexOf","clientWidth","clientLeft","clientTop","min","clientHeight","originalPosition","isWindow","nodeType","style","position","scrollX","getWindowScrollLeft","scrollY","getWindowScrollTop","viewportWidth","viewportHeight","documentWidth","scrollWidth","documentHeight","scrollHeight","bodyStyle","window","getComputedStyle","overflowX","innerWidth","overflowY","innerHeight","maxVisibleWidth","maxVisibleHeight","getParent","parent","positionStyle","nodeName","toLowerCase","node","getWindow","outerWidth","outerHeight"],"mappings":"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","file":"vendor.dom-align~cf0b2bb5.bundle.js","sourcesContent":["import utils from './utils';\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  }\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\n  return utils.mix(pos, size);\n}\n\nexport default adjustForViewport;","/**\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\n  var x = region.left;\n  var y = region.top;\n\n  if (V === 'c') {\n    y += h / 2;\n  } else if (V === 'b') {\n    y += h;\n  }\n\n  if (H === 'c') {\n    x += w / 2;\n  } else if (H === 'r') {\n    x += w;\n  }\n\n  return {\n    left: x,\n    top: y\n  };\n}\n\nexport default getAlignOffset;","import getAlignOffset from './getAlignOffset';\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\n  return {\n    left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n    top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n  };\n}\n\nexport default getElFuturePos;","/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\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 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 = void 0;\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  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  // 当前节点可以被放置的显示区域\n  var visibleRect = getVisibleRectForElement(source);\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]/ig, {\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]/ig, {\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\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      points = align.points;\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\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\n  return {\n    points: points,\n    offset: offset,\n    targetOffset: targetOffset,\n    overflow: newOverflowCfg\n  };\n}\n\nexport default doAlign;\n/**\n *  2012-04-26 yiminghe@gmail.com\n *   - 优化智能对齐算法\n *   - 慎用 resizeXX\n *\n *  2011-07-13 yiminghe@gmail.com note:\n *   - 增加智能对齐，以及大小调整选项\n **/","import doAlign from './align';\nimport getOffsetParent from '../getOffsetParent';\nimport getVisibleRectForElement from '../getVisibleRectForElement';\nimport getRegion from '../getRegion';\n\nfunction isOutOfVisibleRect(target) {\n  var visibleRect = getVisibleRectForElement(target);\n  var targetRegion = getRegion(target);\n\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\n  var isTargetNotOutOfVisible = !isOutOfVisibleRect(target);\n\n  return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\n\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\nexport default alignElement;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport 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  var pageX = void 0;\n  var pageY = void 0;\n\n  var doc = utils.getDocument(el);\n  var win = doc.defaultView || doc.parentWindow;\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\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\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\n  return doAlign(el, tgtRegion, _extends({}, align, { points: points }), pointInView);\n}\n\nexport default alignPoint;","import utils from './utils';\nimport getOffsetParent from './getOffsetParent';\nimport isAncestorFixed from './isAncestorFixed';\n\n/**\n * 获得元素的显示部分的区域\n */\nfunction getVisibleRectForElement(element) {\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\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\n  if (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\n    var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n    visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n  }\n\n  return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nexport default getVisibleRectForElement;","import utils from './utils';\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\nvar getParent = utils.getParent;\n\n\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 = void 0;\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 = getParent(parent)) {\n    positionStyle = utils.css(parent, 'position');\n    if (positionStyle !== 'static') {\n      return parent;\n    }\n  }\n  return null;\n}\n\nexport default getOffsetParent;","import utils from './utils';\n\nfunction getRegion(node) {\n  var offset = void 0;\n  var w = void 0;\n  var h = void 0;\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}\n\nexport default getRegion;"],"sourceRoot":""}