UNPKG

19 kBSource Map (JSON)View Raw
1{"version":3,"sources":["align/domAlign.js"],"names":["isFailX","elFuturePos","elRegion","visibleRect","left","width","right","isFailY","top","height","bottom","isCompleteFailX","isCompleteFailY","getVisibleRectForElement","body","window","clientWidth","clientHeight","getRegion","node","rect","getBoundingClientRect","ownerDocument","defaultView","position","x","y","isOutOfVisibleRect","target","targetRegion","flip","points","reg","map","p","replace","m","flipOffset","offset","index","getAlignOffset","region","align","V","charAt","H","w","h","getElFuturePos","refNodeRegion","targetOffset","p1","p2","diff","adjustForViewport","overflow","pos","size","adjustX","resizeWidth","Math","max","adjustY","resizeHeight","el","refNode","slice","source","newOverflowCfg","fail","newElRegion","isTargetNotOutOfVisible","newPoints","l","r","newOffset","newTargetOffset","newElFuturePos","_newPoints","t","b","_newOffset","_newTargetOffset","_newElFuturePos","style","offsetParent"],"mappings":"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","sourcesContent":["import { getDocument, getMousePosition } from '../../pro/lib/_util/DocumentUtils';\nimport { pxToRem } from '../_util/UnitConvertor';\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return (elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right);\n}\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return (elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom);\n}\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return (elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left);\n}\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return (elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top);\n}\nfunction getVisibleRectForElement() {\n const body = getDocument(window).body;\n return {\n top: 0,\n right: body.clientWidth,\n bottom: body.clientHeight,\n left: 0,\n };\n}\nfunction getRegion(node) {\n const rect = node.getBoundingClientRect();\n const { ownerDocument } = node;\n const defaultView = ownerDocument ? ownerDocument.defaultView : null;\n const position = defaultView ? getMousePosition(rect.left, rect.top, defaultView, true) : { x: rect.left, y: rect.top };\n return {\n top: position.y,\n left: position.x,\n width: rect.width,\n height: rect.height,\n };\n}\nfunction isOutOfVisibleRect(target) {\n const visibleRect = getVisibleRectForElement();\n const targetRegion = getRegion(target);\n return (!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}\nfunction flip(points, reg, map) {\n return points.map(p => p.replace(reg, m => map[m]));\n}\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\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 let x = region.left;\n let y = region.top;\n if (V === 'c') {\n y += h / 2;\n }\n else if (V === 'b') {\n y += h;\n }\n if (H === 'c') {\n x += w / 2;\n }\n else if (H === 'r') {\n x += w;\n }\n return {\n left: x,\n top: y,\n };\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 return {\n left: elRegion.left - diff[0] + offset[0] - targetOffset[0],\n top: elRegion.top - diff[1] + offset[1] - targetOffset[1],\n };\n}\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n const pos = { ...elFuturePos };\n const size = {\n width: elRegion.width,\n height: elRegion.height,\n };\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n }\n // Left edge inside and right edge outside viewport, try to resize it.\n if (overflow.resizeWidth &&\n pos.left >= visibleRect.left &&\n pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\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 // Top edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n }\n // Top edge inside and bottom edge outside viewport, try to resize it.\n if (overflow.resizeHeight &&\n pos.top >= visibleRect.top &&\n pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n }\n // Bottom edge outside viewport, try to move it.\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n return Object.assign(pos, size);\n}\n// function isFixedPosition(node: HTMLElement): boolean {\n// const { offsetParent, ownerDocument } = node;\n// if (\n// ownerDocument &&\n// offsetParent === ownerDocument.body &&\n// ownerDocument.defaultView &&\n// ownerDocument.defaultView.getComputedStyle(node).position !== 'fixed'\n// ) {\n// return false;\n// }\n// if (offsetParent) {\n// return isFixedPosition(offsetParent as HTMLElement);\n// }\n// return true;\n// }\nexport default function (el, refNode, align) {\n let points = align.points;\n let offset = (align.offset || [0, 0]).slice();\n let targetOffset = (align.targetOffset || [0, 0]).slice();\n const overflow = align.overflow || {};\n const target = align.target || refNode;\n const source = align.source || el;\n const newOverflowCfg = {};\n let fail = 0;\n const visibleRect = getVisibleRectForElement();\n const elRegion = getRegion(source);\n const refNodeRegion = getRegion(target);\n let elFuturePos = getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset);\n let newElRegion = Object.assign(elRegion, elFuturePos);\n const isTargetNotOutOfVisible = !isOutOfVisibleRect(target);\n if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTargetNotOutOfVisible) {\n if (overflow.adjustX) {\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n const newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l',\n });\n const newOffset = flipOffset(offset, 0);\n const newTargetOffset = flipOffset(targetOffset, 0);\n const newElFuturePos = getElFuturePos(elRegion, refNodeRegion, newPoints, newOffset, newTargetOffset);\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n if (overflow.adjustY) {\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n const _newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't',\n });\n const _newOffset = flipOffset(offset, 1);\n const _newTargetOffset = flipOffset(targetOffset, 1);\n const _newElFuturePos = getElFuturePos(elRegion, refNodeRegion, _newPoints, _newOffset, _newTargetOffset);\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n }\n if (fail) {\n elFuturePos = getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset);\n Object.assign(newElRegion, elFuturePos);\n }\n newOverflowCfg.adjustX = overflow.adjustX && isFailX(elFuturePos, elRegion, visibleRect);\n newOverflowCfg.adjustY = overflow.adjustY && isFailY(elFuturePos, elRegion, visibleRect);\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n }\n const { width, height } = newElRegion;\n if (width !== elRegion.width) {\n source.style.width = width ? pxToRem(width) : '0';\n }\n if (height !== elRegion.height) {\n source.style.height = height ? pxToRem(height) : '0';\n }\n // const isTargetFixed = isFixedPosition(target);\n const { offsetParent } = source;\n if (offsetParent) {\n const { left, top } = offsetParent.getBoundingClientRect();\n newElRegion.left -= left;\n newElRegion.top -= top;\n }\n Object.assign(source.style, {\n left: pxToRem(newElRegion.left),\n top: pxToRem(newElRegion.top),\n });\n // if (isTargetFixed) {\n // source.style.position = 'fixed';\n // } else {\n // source.style.position = '';\n // }\n return {\n points,\n offset,\n targetOffset,\n overflow: newOverflowCfg,\n };\n}\n"],"file":"domAlign.js"}
\No newline at end of file