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