@react-native-aria/overlays 0.2.11 → 0.3.3-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/Portal.js +5 -2
- package/lib/commonjs/Portal.js.map +1 -1
- package/lib/commonjs/web/overlays/src/calculatePosition.js +7 -7
- package/lib/commonjs/web/overlays/src/calculatePosition.js.map +1 -1
- package/lib/module/Portal.js +5 -2
- package/lib/module/Portal.js.map +1 -1
- package/lib/module/web/overlays/src/calculatePosition.js +5 -5
- package/lib/module/web/overlays/src/calculatePosition.js.map +1 -1
- package/package.json +6 -4
- package/src/Portal.tsx +2 -2
- package/src/web/overlays/src/calculatePosition.ts +5 -5
package/lib/commonjs/Portal.js
CHANGED
@@ -67,10 +67,13 @@ function PortalProvider(props) {
|
|
67
67
|
}));
|
68
68
|
}
|
69
69
|
|
70
|
-
function OverlayView(
|
70
|
+
function OverlayView({
|
71
|
+
style,
|
72
|
+
...props
|
73
|
+
}) {
|
71
74
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({
|
72
75
|
pointerEvents: "box-none",
|
73
|
-
style: _reactNative.StyleSheet.absoluteFill,
|
76
|
+
style: [_reactNative.StyleSheet.absoluteFill, style],
|
74
77
|
collapsable: false
|
75
78
|
}, props));
|
76
79
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Portal.tsx"],"names":["PortalContext","React","createContext","globalOverlayCounter","PortalProvider","props","items","setItems","useState","setOverlayItem","item","overlayId","prev","concat","id","node","updateOverlayItem","map","removeOverlayItem","newItems","filter","children","OverlayView","StyleSheet","absoluteFill","OverlayProvider","OverlayContainer","context","usePortalProvider","useRef","undefined","contents","current","useContext"],"mappings":";;;;;;;;;AAAA;;AAEA;;;;;;;;AAmBA,MAAMA,aAAa,gBAAGC,eAAMC,aAAN,CAA0C,IAA1C,CAAtB;;AAEA,IAAIC,oBAAoB,GAAG,CAA3B;;AAEO,SAASC,cAAT,CAAwBC,KAAxB,EAAwD;AAC7D,QAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBN,eAAMO,QAAN,CAAmC,EAAnC,CAA1B;;AAEA,QAAMC,cAAc,GAAIC,IAAD,IAAqB;AAC1C,UAAMC,SAAS,GAAG,EAAER,oBAApB;AACAI,IAAAA,QAAQ,CAAEK,IAAD,IAAUA,IAAI,CAACC,MAAL,CAAY,CAAC;AAAEC,MAAAA,EAAE,EAAEH,SAAN;AAAiBI,MAAAA,IAAI,EAAEL;AAAvB,KAAD,CAAZ,CAAX,CAAR;AACA,WAAOC,SAAP;AACD,GAJD;;AAMA,QAAMK,iBAAiB,GAAG,CAACF,EAAD,EAAaC,IAAb,KAAiC;AACzDR,IAAAA,QAAQ,CAAEK,IAAD,IACPA,IAAI,CAACK,GAAL,CAAUP,IAAD,IAAU;AACjB,UAAIA,IAAI,CAACI,EAAL,KAAYA,EAAhB,EAAoB;AAClB,eAAO;AAAEA,UAAAA,EAAF;AAAMC,UAAAA;AAAN,SAAP;AACD;;AACD,aAAOL,IAAP;AACD,KALD,CADM,CAAR;AAQD,GATD;;AAWA,QAAMQ,iBAAiB,GAAIJ,EAAD,IAAgB;AACxCP,IAAAA,QAAQ,CAAEK,IAAD,IAAU;AACjB,YAAMO,QAAQ,GAAGP,IAAI,CAACQ,MAAL,CAAaV,IAAD,IAAUA,IAAI,CAACI,EAAL,KAAYA,EAAlC,CAAjB;AACA,aAAOK,QAAP;AACD,KAHO,CAAR;AAID,GALD;;AAOA,sBACE,6BAAC,aAAD,CAAe,QAAf;AACE,IAAA,KAAK,EAAE;AAAEb,MAAAA,KAAF;AAASG,MAAAA,cAAT;AAAyBS,MAAAA,iBAAzB;AAA4CF,MAAAA;AAA5C;AADT,KAGGX,KAAK,CAACgB,QAHT,EAMGf,KAAK,CAACW,GAAN,CAAWP,IAAD,IAAU;AACnB,wBAAO,6BAAC,cAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAEA,IAAI,CAACI;AAA1B,OAA+BJ,IAAI,CAACK,IAApC,CAAP;AACD,GAFA,CANH,CADF;AAYD;;AAED,SAASO,WAAT,
|
1
|
+
{"version":3,"sources":["Portal.tsx"],"names":["PortalContext","React","createContext","globalOverlayCounter","PortalProvider","props","items","setItems","useState","setOverlayItem","item","overlayId","prev","concat","id","node","updateOverlayItem","map","removeOverlayItem","newItems","filter","children","OverlayView","style","StyleSheet","absoluteFill","OverlayProvider","OverlayContainer","context","usePortalProvider","useRef","undefined","contents","current","useContext"],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport type { ReactNode } from 'react';\nimport { StyleSheet, View, ViewProps } from 'react-native';\n\ntype OverlayItem = {\n id: number;\n node: ReactNode;\n};\n\ninterface PortalContext {\n items: Array<OverlayItem>;\n setOverlayItem: (node: ReactNode) => number;\n removeOverlayItem: (id: number) => void;\n updateOverlayItem: (id: number, node: ReactNode) => void;\n}\n\ninterface ModalProviderProps extends ViewProps {\n children: ReactNode;\n provider?: boolean;\n}\n\nconst PortalContext = React.createContext<PortalContext | null>(null);\n\nlet globalOverlayCounter = 0;\n\nexport function PortalProvider(props: { children: ReactNode }) {\n const [items, setItems] = React.useState<Array<OverlayItem>>([]);\n\n const setOverlayItem = (item: ReactNode) => {\n const overlayId = ++globalOverlayCounter;\n setItems((prev) => prev.concat([{ id: overlayId, node: item }]));\n return overlayId;\n };\n\n const updateOverlayItem = (id: number, node: ReactNode) => {\n setItems((prev) =>\n prev.map((item) => {\n if (item.id === id) {\n return { id, node };\n }\n return item;\n })\n );\n };\n\n const removeOverlayItem = (id: number) => {\n setItems((prev) => {\n const newItems = prev.filter((item) => item.id !== id);\n return newItems;\n });\n };\n\n return (\n <PortalContext.Provider\n value={{ items, setOverlayItem, removeOverlayItem, updateOverlayItem }}\n >\n {props.children}\n\n {/* Render Overlays */}\n {items.map((item) => {\n return <React.Fragment key={item.id}>{item.node}</React.Fragment>;\n })}\n </PortalContext.Provider>\n );\n}\n\nfunction OverlayView({style, ...props}: ModalProviderProps) {\n return (\n <View\n pointerEvents=\"box-none\"\n style={[StyleSheet.absoluteFill, style]}\n collapsable={false}\n {...props}\n />\n );\n}\n\nexport const OverlayProvider = PortalProvider;\n\nexport function OverlayContainer(props: ModalProviderProps) {\n const context = usePortalProvider();\n const overlayId = React.useRef<number | undefined>(undefined);\n let contents = <OverlayView {...props} />;\n\n useEffect(\n () => {\n // Mount\n if (overlayId.current === undefined) {\n overlayId.current = context?.setOverlayItem(contents);\n }\n // Update\n else {\n if (overlayId.current) {\n context?.updateOverlayItem(overlayId.current, contents);\n }\n }\n },\n // To re-render the child\n [props]\n );\n\n // Unmount\n useEffect(() => {\n return () => {\n if (overlayId.current) {\n context?.removeOverlayItem(overlayId.current);\n }\n };\n }, []);\n\n return null;\n}\n\nfunction usePortalProvider() {\n const context = React.useContext(PortalContext);\n return context;\n}\n"]}
|
@@ -6,15 +6,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
exports.calculatePositionInternal = calculatePositionInternal;
|
7
7
|
exports.calculatePosition = calculatePosition;
|
8
8
|
|
9
|
-
var
|
9
|
+
var _css = _interopRequireDefault(require("dom-helpers/css"));
|
10
10
|
|
11
|
-
var _offset = _interopRequireDefault(require("dom-helpers/
|
11
|
+
var _offset = _interopRequireDefault(require("dom-helpers/offset"));
|
12
12
|
|
13
|
-
var _position = _interopRequireDefault(require("dom-helpers/
|
13
|
+
var _position = _interopRequireDefault(require("dom-helpers/position"));
|
14
14
|
|
15
|
-
var _scrollLeft = _interopRequireDefault(require("dom-helpers/
|
15
|
+
var _scrollLeft = _interopRequireDefault(require("dom-helpers/scrollLeft"));
|
16
16
|
|
17
|
-
var _scrollTop = _interopRequireDefault(require("dom-helpers/
|
17
|
+
var _scrollTop = _interopRequireDefault(require("dom-helpers/scrollTop"));
|
18
18
|
|
19
19
|
var _ownerDocument = _interopRequireDefault(require("dom-helpers/ownerDocument"));
|
20
20
|
|
@@ -300,8 +300,8 @@ function calculatePosition(opts) {
|
|
300
300
|
let childOffset = isBodyContainer ? (0, _offset.default)(targetNode) : (0, _position.default)(targetNode, container);
|
301
301
|
|
302
302
|
if (!isBodyContainer) {
|
303
|
-
childOffset.top += parseInt((0,
|
304
|
-
childOffset.left += parseInt((0,
|
303
|
+
childOffset.top += parseInt((0, _css.default)(targetNode, 'marginTop'), 10) || 0;
|
304
|
+
childOffset.left += parseInt((0, _css.default)(targetNode, 'marginLeft'), 10) || 0;
|
305
305
|
}
|
306
306
|
|
307
307
|
let overlaySize = (0, _offset.default)(overlayNode);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["calculatePosition.ts"],"names":["AXIS","top","bottom","left","right","FLIPPED_DIRECTION","CROSS_AXIS","AXIS_SIZE","PARSED_PLACEMENT_CACHE","visualViewport","window","getContainerDimensions","containerNode","width","height","scroll","tagName","document","documentElement","clientWidth","clientHeight","getScroll","node","scrollTop","scrollLeft","scrollWidth","scrollHeight","getDelta","axis","offset","size","containerDimensions","padding","containerScroll","containerHeight","startEdgeOffset","endEdgeOffset","Math","max","getMargins","style","getComputedStyle","parseInt","marginTop","marginBottom","marginLeft","marginRight","parsePlacement","input","placement","crossPlacement","split","crossAxis","crossSize","computePosition","childOffset","boundaryDimensions","overlaySize","placementInfo","crossOffset","containerOffsetWithBoundary","isContainerPositioned","position","minViablePosition","maxViablePosition","min","floor","getMaxHeight","margins","getAvailableSpace","calculatePositionInternal","placementInput","scrollSize","flip","shouldOverlapWithTrigger","normalizedOffset","space","flippedPlacementInfo","flippedPosition","flippedSpace","delta","maxHeight","arrowPosition","arrowOffsetLeft","arrowOffsetTop","calculatePosition","opts","targetNode","overlayNode","scrollNode","shouldFlip","boundaryElement","container","offsetParent","body","isBodyContainer","containerPositionStyle"],"mappings":"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","sourcesContent":["// @ts-nocheck\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Axis, Placement, PlacementAxis, SizeAxis} from '@react-types/overlays';\nimport getCss from 'dom-helpers/style';\nimport getOffset from 'dom-helpers/query/offset';\nimport getPosition from 'dom-helpers/query/position';\nimport getScrollLeft from 'dom-helpers/query/scrollLeft';\nimport getScrollTop from 'dom-helpers/query/scrollTop';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\ninterface Position {\n top?: number,\n left?: number,\n bottom?: number,\n right?: number\n}\n\ninterface Dimensions {\n width: number,\n height: number,\n top: number,\n left: number,\n scroll: Position\n}\n\ninterface ParsedPlacement {\n placement: PlacementAxis,\n crossPlacement: PlacementAxis,\n axis: Axis,\n crossAxis: Axis,\n size: SizeAxis,\n crossSize: SizeAxis\n}\n\ninterface Offset {\n top: number,\n left: number,\n width: number,\n height: number\n}\n\ninterface PositionOpts {\n placement: Placement,\n targetNode: HTMLElement,\n overlayNode: HTMLElement,\n scrollNode: HTMLElement,\n padding: number,\n shouldFlip: boolean,\n boundaryElement: HTMLElement,\n offset: number,\n crossOffset: number,\n shouldOverlapWithTrigger: boolean\n}\n\nexport interface PositionResult {\n position?: Position,\n arrowOffsetLeft?: number,\n arrowOffsetTop?: number,\n maxHeight?: number,\n placement: PlacementAxis\n}\n\nconst AXIS = {\n top: 'top',\n bottom: 'top',\n left: 'left',\n right: 'left'\n};\n\nconst FLIPPED_DIRECTION = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\n\nconst CROSS_AXIS = {\n top: 'left',\n left: 'top'\n};\n\nconst AXIS_SIZE = {\n top: 'height',\n left: 'width'\n};\n\nconst PARSED_PLACEMENT_CACHE = {};\n\n// @ts-ignore\nlet visualViewport = typeof window !== 'undefined' && window.visualViewport;\n\nfunction getContainerDimensions(containerNode: Element): Dimensions {\n let width = 0, height = 0, top = 0, left = 0;\n let scroll: Position = {};\n\n if (containerNode.tagName === 'BODY') {\n width = visualViewport?.width ?? document.documentElement.clientWidth;\n height = visualViewport?.height ?? document.documentElement.clientHeight;\n\n scroll.top =\n getScrollTop(ownerDocument(containerNode).documentElement) ||\n getScrollTop(containerNode);\n scroll.left =\n getScrollLeft(ownerDocument(containerNode).documentElement) ||\n getScrollLeft(containerNode);\n } else {\n ({width, height, top, left} = getOffset(containerNode));\n scroll.top = getScrollTop(containerNode);\n scroll.left = getScrollLeft(containerNode);\n }\n\n return {width, height, scroll, top, left};\n}\n\nfunction getScroll(node: HTMLElement): Offset {\n return {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n}\n\nfunction getDelta(\n axis: Axis,\n offset: number,\n size: number,\n containerDimensions: Dimensions,\n padding: number\n) {\n let containerScroll = containerDimensions.scroll[axis];\n let containerHeight = containerDimensions[AXIS_SIZE[axis]];\n\n let startEdgeOffset = offset - padding - containerScroll;\n let endEdgeOffset = offset + padding - containerScroll + size;\n\n if (startEdgeOffset < 0) {\n return -startEdgeOffset;\n } else if (endEdgeOffset > containerHeight) {\n return Math.max(containerHeight - endEdgeOffset, -startEdgeOffset);\n } else {\n return 0;\n }\n}\n\nfunction getMargins(node: HTMLElement): Position {\n let style = window.getComputedStyle(node);\n return {\n top: parseInt(style.marginTop, 10) || 0,\n bottom: parseInt(style.marginBottom, 10) || 0,\n left: parseInt(style.marginLeft, 10) || 0,\n right: parseInt(style.marginRight, 10) || 0\n };\n}\n\nfunction parsePlacement(input: Placement): ParsedPlacement {\n if (PARSED_PLACEMENT_CACHE[input]) {\n return PARSED_PLACEMENT_CACHE[input];\n }\n\n let [placement, crossPlacement] = input.split(' ');\n let axis: Axis = AXIS[placement] || 'right';\n let crossAxis: Axis = CROSS_AXIS[axis];\n\n if (!AXIS[crossPlacement]) {\n crossPlacement = 'center';\n }\n\n let size = AXIS_SIZE[axis];\n let crossSize = AXIS_SIZE[crossAxis];\n PARSED_PLACEMENT_CACHE[input] = {placement, crossPlacement, axis, crossAxis, size, crossSize};\n return PARSED_PLACEMENT_CACHE[input];\n}\n\nfunction computePosition(\n childOffset: Offset,\n boundaryDimensions: Dimensions,\n overlaySize: Offset,\n placementInfo: ParsedPlacement,\n offset: number,\n crossOffset: number,\n containerOffsetWithBoundary: Offset,\n isContainerPositioned: boolean\n) {\n let {placement, crossPlacement, axis, crossAxis, size, crossSize} = placementInfo;\n let position: Position = {};\n\n // button position\n position[crossAxis] = childOffset[crossAxis];\n if (crossPlacement === 'center') {\n // + (button size / 2) - (overlay size / 2)\n // at this point the overlay center should match the button center\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]) / 2;\n } else if (crossPlacement !== crossAxis) {\n // + (button size) - (overlay size)\n // at this point the overlay bottom should match the button bottom\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]);\n }/* else {\n the overlay top should match the button top\n } */\n // add the crossOffset from props\n position[crossAxis] += crossOffset;\n\n // this is button center position - the overlay size + half of the button to align bottom of overlay with button center\n let minViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2) - overlaySize[crossSize];\n // this is button position of center, aligns top of overlay with button center\n let maxViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2);\n\n // clamp it into the range of the min/max positions\n position[crossAxis] = Math.min(Math.max(minViablePosition, position[crossAxis]), maxViablePosition);\n\n // Floor these so the position isn't placed on a partial pixel, only whole pixels. Shouldn't matter if it was floored or ceiled, so chose one.\n if (placement === axis) {\n // If the container is positioned (non-static), then we use the container's actual\n // height, as `bottom` will be relative to this height. But if the container is static,\n // then it can only be the `document.body`, and `bottom` will be relative to _its_\n // container, which should be as large as boundaryDimensions.\n const containerHeight = (isContainerPositioned ? containerOffsetWithBoundary[size] : boundaryDimensions[size]);\n position[FLIPPED_DIRECTION[axis]] = Math.floor(containerHeight - childOffset[axis] + offset);\n } else {\n position[axis] = Math.floor(childOffset[axis] + childOffset[size] + offset);\n }\n\n return position;\n}\n\nfunction getMaxHeight(\n position: Position,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number\n) {\n return position.top != null\n // We want the distance between the top of the overlay to the bottom of the boundary\n ? Math.max(0,\n (boundaryDimensions.height + boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the bottom of the boundary\n - (containerOffsetWithBoundary.top + position.top) // this is the top of the overlay\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n )\n // We want the distance between the top of the trigger to the top of the boundary\n : Math.max(0,\n (childOffset.top + containerOffsetWithBoundary.top) // this is the top of the trigger\n - (boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the top of the boundary\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n );\n}\n\nfunction getAvailableSpace(\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number,\n placementInfo: ParsedPlacement\n) {\n let {placement, axis, size} = placementInfo;\n if (placement === axis) {\n return Math.max(0, childOffset[axis] - boundaryDimensions[axis] - boundaryDimensions.scroll[axis] + containerOffsetWithBoundary[axis] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n }\n\n return Math.max(0, boundaryDimensions[size] + boundaryDimensions[axis] + boundaryDimensions.scroll[axis] - containerOffsetWithBoundary[axis] - childOffset[axis] - childOffset[size] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n}\n\nexport function calculatePositionInternal(\n placementInput: Placement,\n childOffset: Offset,\n overlaySize: Offset,\n scrollSize: Offset,\n margins: Position,\n padding: number,\n flip: boolean,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n offset: number,\n crossOffset: number,\n isContainerPositioned: boolean,\n shouldOverlapWithTrigger: boolean\n): PositionResult {\n let placementInfo = parsePlacement(placementInput);\n let {size, crossAxis, crossSize, placement, crossPlacement, axis} = placementInfo;\n let position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let normalizedOffset = offset;\n let space = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n placementInfo\n );\n\n // Check if the scroll size of the overlay is greater than the available space to determine if we need to flip\n if (flip && scrollSize[size] > space) {\n let flippedPlacementInfo = parsePlacement(`${FLIPPED_DIRECTION[placement]} ${crossPlacement}` as Placement);\n let flippedPosition = computePosition(childOffset, boundaryDimensions, overlaySize, flippedPlacementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let flippedSpace = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n flippedPlacementInfo\n );\n\n // If the available space for the flipped position is greater than the original available space, flip.\n if (flippedSpace > space) {\n placementInfo = flippedPlacementInfo;\n position = flippedPosition;\n normalizedOffset = offset;\n }\n }\n\n let delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let maxHeight = getMaxHeight(\n position,\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding\n );\n\n overlaySize.height = Math.min(overlaySize.height, maxHeight);\n\n position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, normalizedOffset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let arrowPosition: Position = {};\n arrowPosition[crossAxis] = (childOffset[crossAxis] - position[crossAxis] + childOffset[crossSize] / 2);\n\n if (shouldOverlapWithTrigger) {\n position[FLIPPED_DIRECTION[placementInfo.placement]] = position[FLIPPED_DIRECTION[placementInfo.placement]] - childOffset[size];\n }\n\n return {\n position,\n maxHeight: maxHeight,\n arrowOffsetLeft: arrowPosition.left,\n arrowOffsetTop: arrowPosition.top,\n placement: placementInfo.placement\n };\n}\n\n/**\n * Determines where to place the overlay with regards to the target and the position of an optional indicator.\n */\nexport function calculatePosition(opts: PositionOpts): PositionResult {\n let {\n placement,\n targetNode,\n overlayNode,\n scrollNode,\n padding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n shouldOverlapWithTrigger\n } = opts;\n\n let container = overlayNode.offsetParent || document.body;\n let isBodyContainer = container.tagName === 'BODY';\n const containerPositionStyle = window.getComputedStyle(container).position;\n let isContainerPositioned = !!containerPositionStyle && containerPositionStyle !== 'static';\n let childOffset: Offset = isBodyContainer ? getOffset(targetNode) : getPosition(targetNode, container);\n\n if (!isBodyContainer) {\n childOffset.top += parseInt(getCss(targetNode, 'marginTop'), 10) || 0;\n childOffset.left += parseInt(getCss(targetNode, 'marginLeft'), 10) || 0;\n }\n\n let overlaySize: Offset = getOffset(overlayNode);\n let margins = getMargins(overlayNode);\n overlaySize.width += margins.left + margins.right;\n overlaySize.height += margins.top + margins.bottom;\n\n let scrollSize = getScroll(scrollNode);\n let boundaryDimensions = getContainerDimensions(boundaryElement);\n let containerOffsetWithBoundary: Offset = boundaryElement.tagName === 'BODY' ? getOffset(container) : getPosition(container, boundaryElement);\n\n\n return calculatePositionInternal(\n placement,\n childOffset,\n overlaySize,\n scrollSize,\n margins,\n padding,\n shouldFlip,\n boundaryDimensions,\n containerOffsetWithBoundary,\n offset,\n crossOffset,\n isContainerPositioned,\n shouldOverlapWithTrigger\n );\n}\n"]}
|
1
|
+
{"version":3,"sources":["calculatePosition.ts"],"names":["AXIS","top","bottom","left","right","FLIPPED_DIRECTION","CROSS_AXIS","AXIS_SIZE","PARSED_PLACEMENT_CACHE","visualViewport","window","getContainerDimensions","containerNode","width","height","scroll","tagName","document","documentElement","clientWidth","clientHeight","getScroll","node","scrollTop","scrollLeft","scrollWidth","scrollHeight","getDelta","axis","offset","size","containerDimensions","padding","containerScroll","containerHeight","startEdgeOffset","endEdgeOffset","Math","max","getMargins","style","getComputedStyle","parseInt","marginTop","marginBottom","marginLeft","marginRight","parsePlacement","input","placement","crossPlacement","split","crossAxis","crossSize","computePosition","childOffset","boundaryDimensions","overlaySize","placementInfo","crossOffset","containerOffsetWithBoundary","isContainerPositioned","position","minViablePosition","maxViablePosition","min","floor","getMaxHeight","margins","getAvailableSpace","calculatePositionInternal","placementInput","scrollSize","flip","shouldOverlapWithTrigger","normalizedOffset","space","flippedPlacementInfo","flippedPosition","flippedSpace","delta","maxHeight","arrowPosition","arrowOffsetLeft","arrowOffsetTop","calculatePosition","opts","targetNode","overlayNode","scrollNode","shouldFlip","boundaryElement","container","offsetParent","body","isBodyContainer","containerPositionStyle"],"mappings":";;;;;;;;AAcA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAnBA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA8DA,MAAMA,IAAI,GAAG;AACXC,EAAAA,GAAG,EAAE,KADM;AAEXC,EAAAA,MAAM,EAAE,KAFG;AAGXC,EAAAA,IAAI,EAAE,MAHK;AAIXC,EAAAA,KAAK,EAAE;AAJI,CAAb;AAOA,MAAMC,iBAAiB,GAAG;AACxBJ,EAAAA,GAAG,EAAE,QADmB;AAExBC,EAAAA,MAAM,EAAE,KAFgB;AAGxBC,EAAAA,IAAI,EAAE,OAHkB;AAIxBC,EAAAA,KAAK,EAAE;AAJiB,CAA1B;AAOA,MAAME,UAAU,GAAG;AACjBL,EAAAA,GAAG,EAAE,MADY;AAEjBE,EAAAA,IAAI,EAAE;AAFW,CAAnB;AAKA,MAAMI,SAAS,GAAG;AAChBN,EAAAA,GAAG,EAAE,QADW;AAEhBE,EAAAA,IAAI,EAAE;AAFU,CAAlB;AAKA,MAAMK,sBAAsB,GAAG,EAA/B,C,CAEA;;AACA,IAAIC,cAAc,GAAG,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAACD,cAA7D;;AAEA,SAASE,sBAAT,CAAgCC,aAAhC,EAAoE;AAClE,MAAIC,KAAK,GAAG,CAAZ;AAAA,MAAeC,MAAM,GAAG,CAAxB;AAAA,MAA2Bb,GAAG,GAAG,CAAjC;AAAA,MAAoCE,IAAI,GAAG,CAA3C;AACA,MAAIY,MAAgB,GAAG,EAAvB;;AAEA,MAAIH,aAAa,CAACI,OAAd,KAA0B,MAA9B,EAAsC;AAAA;;AACpCH,IAAAA,KAAK,4BAAGJ,cAAH,aAAGA,cAAH,uBAAGA,cAAc,CAAEI,KAAnB,yEAA4BI,QAAQ,CAACC,eAAT,CAAyBC,WAA1D;AACAL,IAAAA,MAAM,4BAAGL,cAAH,aAAGA,cAAH,uBAAGA,cAAc,CAAEK,MAAnB,yEAA6BG,QAAQ,CAACC,eAAT,CAAyBE,YAA5D;AAEAL,IAAAA,MAAM,CAACd,GAAP,GACE,wBAAa,4BAAcW,aAAd,EAA6BM,eAA1C,KACA,wBAAaN,aAAb,CAFF;AAGAG,IAAAA,MAAM,CAACZ,IAAP,GACE,yBAAc,4BAAcS,aAAd,EAA6BM,eAA3C,KACA,yBAAcN,aAAd,CAFF;AAGD,GAVD,MAUO;AACL,KAAC;AAACC,MAAAA,KAAD;AAAQC,MAAAA,MAAR;AAAgBb,MAAAA,GAAhB;AAAqBE,MAAAA;AAArB,QAA6B,qBAAUS,aAAV,CAA9B;AACAG,IAAAA,MAAM,CAACd,GAAP,GAAa,wBAAaW,aAAb,CAAb;AACAG,IAAAA,MAAM,CAACZ,IAAP,GAAc,yBAAcS,aAAd,CAAd;AACD;;AAED,SAAO;AAACC,IAAAA,KAAD;AAAQC,IAAAA,MAAR;AAAgBC,IAAAA,MAAhB;AAAwBd,IAAAA,GAAxB;AAA6BE,IAAAA;AAA7B,GAAP;AACD;;AAED,SAASkB,SAAT,CAAmBC,IAAnB,EAA8C;AAC5C,SAAO;AACLrB,IAAAA,GAAG,EAAEqB,IAAI,CAACC,SADL;AAELpB,IAAAA,IAAI,EAAEmB,IAAI,CAACE,UAFN;AAGLX,IAAAA,KAAK,EAAES,IAAI,CAACG,WAHP;AAILX,IAAAA,MAAM,EAAEQ,IAAI,CAACI;AAJR,GAAP;AAMD;;AAED,SAASC,QAAT,CACEC,IADF,EAEEC,MAFF,EAGEC,IAHF,EAIEC,mBAJF,EAKEC,OALF,EAME;AACA,MAAIC,eAAe,GAAGF,mBAAmB,CAAChB,MAApB,CAA2Ba,IAA3B,CAAtB;AACA,MAAIM,eAAe,GAAGH,mBAAmB,CAACxB,SAAS,CAACqB,IAAD,CAAV,CAAzC;AAEA,MAAIO,eAAe,GAAGN,MAAM,GAAGG,OAAT,GAAmBC,eAAzC;AACA,MAAIG,aAAa,GAAGP,MAAM,GAAGG,OAAT,GAAmBC,eAAnB,GAAqCH,IAAzD;;AAEA,MAAIK,eAAe,GAAG,CAAtB,EAAyB;AACvB,WAAO,CAACA,eAAR;AACD,GAFD,MAEO,IAAIC,aAAa,GAAGF,eAApB,EAAqC;AAC1C,WAAOG,IAAI,CAACC,GAAL,CAASJ,eAAe,GAAGE,aAA3B,EAA0C,CAACD,eAA3C,CAAP;AACD,GAFM,MAEA;AACL,WAAO,CAAP;AACD;AACF;;AAED,SAASI,UAAT,CAAoBjB,IAApB,EAAiD;AAC/C,MAAIkB,KAAK,GAAG9B,MAAM,CAAC+B,gBAAP,CAAwBnB,IAAxB,CAAZ;AACA,SAAO;AACLrB,IAAAA,GAAG,EAAEyC,QAAQ,CAACF,KAAK,CAACG,SAAP,EAAkB,EAAlB,CAAR,IAAiC,CADjC;AAELzC,IAAAA,MAAM,EAAEwC,QAAQ,CAACF,KAAK,CAACI,YAAP,EAAqB,EAArB,CAAR,IAAoC,CAFvC;AAGLzC,IAAAA,IAAI,EAAEuC,QAAQ,CAACF,KAAK,CAACK,UAAP,EAAmB,EAAnB,CAAR,IAAkC,CAHnC;AAILzC,IAAAA,KAAK,EAAEsC,QAAQ,CAACF,KAAK,CAACM,WAAP,EAAoB,EAApB,CAAR,IAAmC;AAJrC,GAAP;AAMD;;AAED,SAASC,cAAT,CAAwBC,KAAxB,EAA2D;AACzD,MAAIxC,sBAAsB,CAACwC,KAAD,CAA1B,EAAmC;AACjC,WAAOxC,sBAAsB,CAACwC,KAAD,CAA7B;AACD;;AAED,MAAI,CAACC,SAAD,EAAYC,cAAZ,IAA8BF,KAAK,CAACG,KAAN,CAAY,GAAZ,CAAlC;AACA,MAAIvB,IAAU,GAAG5B,IAAI,CAACiD,SAAD,CAAJ,IAAmB,OAApC;AACA,MAAIG,SAAe,GAAG9C,UAAU,CAACsB,IAAD,CAAhC;;AAEA,MAAI,CAAC5B,IAAI,CAACkD,cAAD,CAAT,EAA2B;AACzBA,IAAAA,cAAc,GAAG,QAAjB;AACD;;AAED,MAAIpB,IAAI,GAAGvB,SAAS,CAACqB,IAAD,CAApB;AACA,MAAIyB,SAAS,GAAG9C,SAAS,CAAC6C,SAAD,CAAzB;AACA5C,EAAAA,sBAAsB,CAACwC,KAAD,CAAtB,GAAgC;AAACC,IAAAA,SAAD;AAAYC,IAAAA,cAAZ;AAA4BtB,IAAAA,IAA5B;AAAkCwB,IAAAA,SAAlC;AAA6CtB,IAAAA,IAA7C;AAAmDuB,IAAAA;AAAnD,GAAhC;AACA,SAAO7C,sBAAsB,CAACwC,KAAD,CAA7B;AACD;;AAED,SAASM,eAAT,CACEC,WADF,EAEEC,kBAFF,EAGEC,WAHF,EAIEC,aAJF,EAKE7B,MALF,EAME8B,WANF,EAOEC,2BAPF,EAQEC,qBARF,EASE;AACA,MAAI;AAACZ,IAAAA,SAAD;AAAYC,IAAAA,cAAZ;AAA4BtB,IAAAA,IAA5B;AAAkCwB,IAAAA,SAAlC;AAA6CtB,IAAAA,IAA7C;AAAmDuB,IAAAA;AAAnD,MAAgEK,aAApE;AACA,MAAII,QAAkB,GAAG,EAAzB,CAFA,CAIA;;AACAA,EAAAA,QAAQ,CAACV,SAAD,CAAR,GAAsBG,WAAW,CAACH,SAAD,CAAjC;;AACA,MAAIF,cAAc,KAAK,QAAvB,EAAiC;AAC/B;AACA;AACAY,IAAAA,QAAQ,CAACV,SAAD,CAAR,IAAuB,CAACG,WAAW,CAACF,SAAD,CAAX,GAAyBI,WAAW,CAACJ,SAAD,CAArC,IAAoD,CAA3E;AACD,GAJD,MAIO,IAAIH,cAAc,KAAKE,SAAvB,EAAkC;AACvC;AACA;AACAU,IAAAA,QAAQ,CAACV,SAAD,CAAR,IAAwBG,WAAW,CAACF,SAAD,CAAX,GAAyBI,WAAW,CAACJ,SAAD,CAA5D;AACD;AAAA;AACH;AACA;AACE;;;AACAS,EAAAA,QAAQ,CAACV,SAAD,CAAR,IAAuBO,WAAvB,CAlBA,CAoBA;;AACA,MAAII,iBAAiB,GAAGR,WAAW,CAACH,SAAD,CAAX,GAA0BG,WAAW,CAACF,SAAD,CAAX,GAAyB,CAAnD,GAAwDI,WAAW,CAACJ,SAAD,CAA3F,CArBA,CAsBA;;AACA,MAAIW,iBAAiB,GAAGT,WAAW,CAACH,SAAD,CAAX,GAA0BG,WAAW,CAACF,SAAD,CAAX,GAAyB,CAA3E,CAvBA,CAyBA;;AACAS,EAAAA,QAAQ,CAACV,SAAD,CAAR,GAAsBf,IAAI,CAAC4B,GAAL,CAAS5B,IAAI,CAACC,GAAL,CAASyB,iBAAT,EAA4BD,QAAQ,CAACV,SAAD,CAApC,CAAT,EAA2DY,iBAA3D,CAAtB,CA1BA,CA4BA;;AACA,MAAIf,SAAS,KAAKrB,IAAlB,EAAwB;AACtB;AACA;AACA;AACA;AACA,UAAMM,eAAe,GAAI2B,qBAAqB,GAAGD,2BAA2B,CAAC9B,IAAD,CAA9B,GAAuC0B,kBAAkB,CAAC1B,IAAD,CAAvG;AACAgC,IAAAA,QAAQ,CAACzD,iBAAiB,CAACuB,IAAD,CAAlB,CAAR,GAAoCS,IAAI,CAAC6B,KAAL,CAAWhC,eAAe,GAAGqB,WAAW,CAAC3B,IAAD,CAA7B,GAAsCC,MAAjD,CAApC;AACD,GAPD,MAOO;AACLiC,IAAAA,QAAQ,CAAClC,IAAD,CAAR,GAAiBS,IAAI,CAAC6B,KAAL,CAAWX,WAAW,CAAC3B,IAAD,CAAX,GAAoB2B,WAAW,CAACzB,IAAD,CAA/B,GAAwCD,MAAnD,CAAjB;AACD;;AAED,SAAOiC,QAAP;AACD;;AAED,SAASK,YAAT,CACEL,QADF,EAEEN,kBAFF,EAGEI,2BAHF,EAIEL,WAJF,EAKEa,OALF,EAMEpC,OANF,EAOE;AACA,SAAO8B,QAAQ,CAAC7D,GAAT,IAAgB,IAAhB,CACL;AADK,IAEHoC,IAAI,CAACC,GAAL,CAAS,CAAT,EACCkB,kBAAkB,CAAC1C,MAAnB,GAA4B0C,kBAAkB,CAACvD,GAA/C,GAAqDuD,kBAAkB,CAACzC,MAAnB,CAA0Bd,GAAhF,KAAqF;AAClF2D,EAAAA,2BAA2B,CAAC3D,GAA5B,GAAkC6D,QAAQ,CAAC7D,GAD9C,EACmD;AADnD,KAEGmE,OAAO,CAACnE,GAAR,GAAcmE,OAAO,CAAClE,MAAtB,GAA+B8B,OAFlC,CADA,CAG2C;AAH3C,GAFG,CAOL;AAPK,IAQHK,IAAI,CAACC,GAAL,CAAS,CAAT,EACCiB,WAAW,CAACtD,GAAZ,GAAkB2D,2BAA2B,CAAC3D,GAA/C,KAAoD;AACjDuD,EAAAA,kBAAkB,CAACvD,GAAnB,GAAyBuD,kBAAkB,CAACzC,MAAnB,CAA0Bd,GADtD,EAC2D;AAD3D,KAEGmE,OAAO,CAACnE,GAAR,GAAcmE,OAAO,CAAClE,MAAtB,GAA+B8B,OAFlC,CADA,CAG2C;AAH3C,GARJ;AAaD;;AAED,SAASqC,iBAAT,CACEb,kBADF,EAEEI,2BAFF,EAGEL,WAHF,EAIEa,OAJF,EAKEpC,OALF,EAME0B,aANF,EAOE;AACA,MAAI;AAACT,IAAAA,SAAD;AAAYrB,IAAAA,IAAZ;AAAkBE,IAAAA;AAAlB,MAA0B4B,aAA9B;;AACA,MAAIT,SAAS,KAAKrB,IAAlB,EAAwB;AACtB,WAAOS,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYiB,WAAW,CAAC3B,IAAD,CAAX,GAAoB4B,kBAAkB,CAAC5B,IAAD,CAAtC,GAA+C4B,kBAAkB,CAACzC,MAAnB,CAA0Ba,IAA1B,CAA/C,GAAiFgC,2BAA2B,CAAChC,IAAD,CAA5G,GAAqHwC,OAAO,CAACxC,IAAD,CAA5H,GAAqIwC,OAAO,CAAC/D,iBAAiB,CAACuB,IAAD,CAAlB,CAA5I,GAAwKI,OAApL,CAAP;AACD;;AAED,SAAOK,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYkB,kBAAkB,CAAC1B,IAAD,CAAlB,GAA2B0B,kBAAkB,CAAC5B,IAAD,CAA7C,GAAsD4B,kBAAkB,CAACzC,MAAnB,CAA0Ba,IAA1B,CAAtD,GAAwFgC,2BAA2B,CAAChC,IAAD,CAAnH,GAA4H2B,WAAW,CAAC3B,IAAD,CAAvI,GAAgJ2B,WAAW,CAACzB,IAAD,CAA3J,GAAoKsC,OAAO,CAACxC,IAAD,CAA3K,GAAoLwC,OAAO,CAAC/D,iBAAiB,CAACuB,IAAD,CAAlB,CAA3L,GAAuNI,OAAnO,CAAP;AACD;;AAEM,SAASsC,yBAAT,CACLC,cADK,EAELhB,WAFK,EAGLE,WAHK,EAILe,UAJK,EAKLJ,OALK,EAMLpC,OANK,EAOLyC,IAPK,EAQLjB,kBARK,EASLI,2BATK,EAUL/B,MAVK,EAWL8B,WAXK,EAYLE,qBAZK,EAaLa,wBAbK,EAcW;AAChB,MAAIhB,aAAa,GAAGX,cAAc,CAACwB,cAAD,CAAlC;AACA,MAAI;AAACzC,IAAAA,IAAD;AAAOsB,IAAAA,SAAP;AAAkBC,IAAAA,SAAlB;AAA6BJ,IAAAA,SAA7B;AAAwCC,IAAAA,cAAxC;AAAwDtB,IAAAA;AAAxD,MAAgE8B,aAApE;AACA,MAAII,QAAQ,GAAGR,eAAe,CAACC,WAAD,EAAcC,kBAAd,EAAkCC,WAAlC,EAA+CC,aAA/C,EAA8D7B,MAA9D,EAAsE8B,WAAtE,EAAmFC,2BAAnF,EAAgHC,qBAAhH,CAA9B;AACA,MAAIc,gBAAgB,GAAG9C,MAAvB;AACA,MAAI+C,KAAK,GAAGP,iBAAiB,CAC3Bb,kBAD2B,EAE3BI,2BAF2B,EAG3BL,WAH2B,EAI3Ba,OAJ2B,EAK3BpC,OAAO,GAAGH,MALiB,EAM3B6B,aAN2B,CAA7B,CALgB,CAchB;;AACA,MAAIe,IAAI,IAAID,UAAU,CAAC1C,IAAD,CAAV,GAAmB8C,KAA/B,EAAsC;AACpC,QAAIC,oBAAoB,GAAG9B,cAAc,CAAE,GAAE1C,iBAAiB,CAAC4C,SAAD,CAAY,IAAGC,cAAe,EAAnD,CAAzC;AACA,QAAI4B,eAAe,GAAGxB,eAAe,CAACC,WAAD,EAAcC,kBAAd,EAAkCC,WAAlC,EAA+CoB,oBAA/C,EAAqEhD,MAArE,EAA6E8B,WAA7E,EAA0FC,2BAA1F,EAAuHC,qBAAvH,CAArC;AACA,QAAIkB,YAAY,GAAGV,iBAAiB,CAClCb,kBADkC,EAElCI,2BAFkC,EAGlCL,WAHkC,EAIlCa,OAJkC,EAKlCpC,OAAO,GAAGH,MALwB,EAMlCgD,oBANkC,CAApC,CAHoC,CAYpC;;AACA,QAAIE,YAAY,GAAGH,KAAnB,EAA0B;AACxBlB,MAAAA,aAAa,GAAGmB,oBAAhB;AACAf,MAAAA,QAAQ,GAAGgB,eAAX;AACAH,MAAAA,gBAAgB,GAAG9C,MAAnB;AACD;AACF;;AAED,MAAImD,KAAK,GAAGrD,QAAQ,CAACyB,SAAD,EAAYU,QAAQ,CAACV,SAAD,CAApB,EAAiCK,WAAW,CAACJ,SAAD,CAA5C,EAAyDG,kBAAzD,EAA6ExB,OAA7E,CAApB;AACA8B,EAAAA,QAAQ,CAACV,SAAD,CAAR,IAAuB4B,KAAvB;AAEA,MAAIC,SAAS,GAAGd,YAAY,CAC1BL,QAD0B,EAE1BN,kBAF0B,EAG1BI,2BAH0B,EAI1BL,WAJ0B,EAK1Ba,OAL0B,EAM1BpC,OAN0B,CAA5B;AASAyB,EAAAA,WAAW,CAAC3C,MAAZ,GAAqBuB,IAAI,CAAC4B,GAAL,CAASR,WAAW,CAAC3C,MAArB,EAA6BmE,SAA7B,CAArB;AAEAnB,EAAAA,QAAQ,GAAGR,eAAe,CAACC,WAAD,EAAcC,kBAAd,EAAkCC,WAAlC,EAA+CC,aAA/C,EAA8DiB,gBAA9D,EAAgFhB,WAAhF,EAA6FC,2BAA7F,EAA0HC,qBAA1H,CAA1B;AACAmB,EAAAA,KAAK,GAAGrD,QAAQ,CAACyB,SAAD,EAAYU,QAAQ,CAACV,SAAD,CAApB,EAAiCK,WAAW,CAACJ,SAAD,CAA5C,EAAyDG,kBAAzD,EAA6ExB,OAA7E,CAAhB;AACA8B,EAAAA,QAAQ,CAACV,SAAD,CAAR,IAAuB4B,KAAvB;AAEA,MAAIE,aAAuB,GAAG,EAA9B;AACAA,EAAAA,aAAa,CAAC9B,SAAD,CAAb,GAA4BG,WAAW,CAACH,SAAD,CAAX,GAAyBU,QAAQ,CAACV,SAAD,CAAjC,GAA+CG,WAAW,CAACF,SAAD,CAAX,GAAyB,CAApG;;AAEA,MAAIqB,wBAAJ,EAA8B;AAC5BZ,IAAAA,QAAQ,CAACzD,iBAAiB,CAACqD,aAAa,CAACT,SAAf,CAAlB,CAAR,GAAuDa,QAAQ,CAACzD,iBAAiB,CAACqD,aAAa,CAACT,SAAf,CAAlB,CAAR,GAAuDM,WAAW,CAACzB,IAAD,CAAzH;AACD;;AAED,SAAO;AACLgC,IAAAA,QADK;AAELmB,IAAAA,SAAS,EAAEA,SAFN;AAGLE,IAAAA,eAAe,EAAED,aAAa,CAAC/E,IAH1B;AAILiF,IAAAA,cAAc,EAAEF,aAAa,CAACjF,GAJzB;AAKLgD,IAAAA,SAAS,EAAES,aAAa,CAACT;AALpB,GAAP;AAOD;AAED;AACA;AACA;;;AACO,SAASoC,iBAAT,CAA2BC,IAA3B,EAA+D;AACpE,MAAI;AACFrC,IAAAA,SADE;AAEFsC,IAAAA,UAFE;AAGFC,IAAAA,WAHE;AAIFC,IAAAA,UAJE;AAKFzD,IAAAA,OALE;AAMF0D,IAAAA,UANE;AAOFC,IAAAA,eAPE;AAQF9D,IAAAA,MARE;AASF8B,IAAAA,WATE;AAUFe,IAAAA;AAVE,MAWAY,IAXJ;AAaA,MAAIM,SAAS,GAAGJ,WAAW,CAACK,YAAZ,IAA4B5E,QAAQ,CAAC6E,IAArD;AACA,MAAIC,eAAe,GAAGH,SAAS,CAAC5E,OAAV,KAAsB,MAA5C;AACA,QAAMgF,sBAAsB,GAAGtF,MAAM,CAAC+B,gBAAP,CAAwBmD,SAAxB,EAAmC9B,QAAlE;AACA,MAAID,qBAAqB,GAAG,CAAC,CAACmC,sBAAF,IAA4BA,sBAAsB,KAAK,QAAnF;AACA,MAAIzC,WAAmB,GAAGwC,eAAe,GAAG,qBAAUR,UAAV,CAAH,GAA2B,uBAAYA,UAAZ,EAAwBK,SAAxB,CAApE;;AAEA,MAAI,CAACG,eAAL,EAAsB;AACpBxC,IAAAA,WAAW,CAACtD,GAAZ,IAAmByC,QAAQ,CAAC,kBAAO6C,UAAP,EAAmB,WAAnB,CAAD,EAAkC,EAAlC,CAAR,IAAiD,CAApE;AACAhC,IAAAA,WAAW,CAACpD,IAAZ,IAAoBuC,QAAQ,CAAC,kBAAO6C,UAAP,EAAmB,YAAnB,CAAD,EAAmC,EAAnC,CAAR,IAAkD,CAAtE;AACD;;AAED,MAAI9B,WAAmB,GAAG,qBAAU+B,WAAV,CAA1B;AACA,MAAIpB,OAAO,GAAG7B,UAAU,CAACiD,WAAD,CAAxB;AACA/B,EAAAA,WAAW,CAAC5C,KAAZ,IAAqBuD,OAAO,CAACjE,IAAR,GAAeiE,OAAO,CAAChE,KAA5C;AACAqD,EAAAA,WAAW,CAAC3C,MAAZ,IAAsBsD,OAAO,CAACnE,GAAR,GAAcmE,OAAO,CAAClE,MAA5C;AAEA,MAAIsE,UAAU,GAAGnD,SAAS,CAACoE,UAAD,CAA1B;AACA,MAAIjC,kBAAkB,GAAG7C,sBAAsB,CAACgF,eAAD,CAA/C;AACA,MAAI/B,2BAAmC,GAAG+B,eAAe,CAAC3E,OAAhB,KAA4B,MAA5B,GAAqC,qBAAU4E,SAAV,CAArC,GAA4D,uBAAYA,SAAZ,EAAuBD,eAAvB,CAAtG;AAGA,SAAOrB,yBAAyB,CAC9BrB,SAD8B,EAE9BM,WAF8B,EAG9BE,WAH8B,EAI9Be,UAJ8B,EAK9BJ,OAL8B,EAM9BpC,OAN8B,EAO9B0D,UAP8B,EAQ9BlC,kBAR8B,EAS9BI,2BAT8B,EAU9B/B,MAV8B,EAW9B8B,WAX8B,EAY9BE,qBAZ8B,EAa9Ba,wBAb8B,CAAhC;AAeD","sourcesContent":["// @ts-nocheck\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Axis, Placement, PlacementAxis, SizeAxis} from '@react-types/overlays';\nimport getCss from 'dom-helpers/css';\nimport getOffset from 'dom-helpers/offset';\nimport getPosition from 'dom-helpers/position';\nimport getScrollLeft from 'dom-helpers/scrollLeft';\nimport getScrollTop from 'dom-helpers/scrollTop';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\ninterface Position {\n top?: number,\n left?: number,\n bottom?: number,\n right?: number\n}\n\ninterface Dimensions {\n width: number,\n height: number,\n top: number,\n left: number,\n scroll: Position\n}\n\ninterface ParsedPlacement {\n placement: PlacementAxis,\n crossPlacement: PlacementAxis,\n axis: Axis,\n crossAxis: Axis,\n size: SizeAxis,\n crossSize: SizeAxis\n}\n\ninterface Offset {\n top: number,\n left: number,\n width: number,\n height: number\n}\n\ninterface PositionOpts {\n placement: Placement,\n targetNode: HTMLElement,\n overlayNode: HTMLElement,\n scrollNode: HTMLElement,\n padding: number,\n shouldFlip: boolean,\n boundaryElement: HTMLElement,\n offset: number,\n crossOffset: number,\n shouldOverlapWithTrigger: boolean\n}\n\nexport interface PositionResult {\n position?: Position,\n arrowOffsetLeft?: number,\n arrowOffsetTop?: number,\n maxHeight?: number,\n placement: PlacementAxis\n}\n\nconst AXIS = {\n top: 'top',\n bottom: 'top',\n left: 'left',\n right: 'left'\n};\n\nconst FLIPPED_DIRECTION = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\n\nconst CROSS_AXIS = {\n top: 'left',\n left: 'top'\n};\n\nconst AXIS_SIZE = {\n top: 'height',\n left: 'width'\n};\n\nconst PARSED_PLACEMENT_CACHE = {};\n\n// @ts-ignore\nlet visualViewport = typeof window !== 'undefined' && window.visualViewport;\n\nfunction getContainerDimensions(containerNode: Element): Dimensions {\n let width = 0, height = 0, top = 0, left = 0;\n let scroll: Position = {};\n\n if (containerNode.tagName === 'BODY') {\n width = visualViewport?.width ?? document.documentElement.clientWidth;\n height = visualViewport?.height ?? document.documentElement.clientHeight;\n\n scroll.top =\n getScrollTop(ownerDocument(containerNode).documentElement) ||\n getScrollTop(containerNode);\n scroll.left =\n getScrollLeft(ownerDocument(containerNode).documentElement) ||\n getScrollLeft(containerNode);\n } else {\n ({width, height, top, left} = getOffset(containerNode));\n scroll.top = getScrollTop(containerNode);\n scroll.left = getScrollLeft(containerNode);\n }\n\n return {width, height, scroll, top, left};\n}\n\nfunction getScroll(node: HTMLElement): Offset {\n return {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n}\n\nfunction getDelta(\n axis: Axis,\n offset: number,\n size: number,\n containerDimensions: Dimensions,\n padding: number\n) {\n let containerScroll = containerDimensions.scroll[axis];\n let containerHeight = containerDimensions[AXIS_SIZE[axis]];\n\n let startEdgeOffset = offset - padding - containerScroll;\n let endEdgeOffset = offset + padding - containerScroll + size;\n\n if (startEdgeOffset < 0) {\n return -startEdgeOffset;\n } else if (endEdgeOffset > containerHeight) {\n return Math.max(containerHeight - endEdgeOffset, -startEdgeOffset);\n } else {\n return 0;\n }\n}\n\nfunction getMargins(node: HTMLElement): Position {\n let style = window.getComputedStyle(node);\n return {\n top: parseInt(style.marginTop, 10) || 0,\n bottom: parseInt(style.marginBottom, 10) || 0,\n left: parseInt(style.marginLeft, 10) || 0,\n right: parseInt(style.marginRight, 10) || 0\n };\n}\n\nfunction parsePlacement(input: Placement): ParsedPlacement {\n if (PARSED_PLACEMENT_CACHE[input]) {\n return PARSED_PLACEMENT_CACHE[input];\n }\n\n let [placement, crossPlacement] = input.split(' ');\n let axis: Axis = AXIS[placement] || 'right';\n let crossAxis: Axis = CROSS_AXIS[axis];\n\n if (!AXIS[crossPlacement]) {\n crossPlacement = 'center';\n }\n\n let size = AXIS_SIZE[axis];\n let crossSize = AXIS_SIZE[crossAxis];\n PARSED_PLACEMENT_CACHE[input] = {placement, crossPlacement, axis, crossAxis, size, crossSize};\n return PARSED_PLACEMENT_CACHE[input];\n}\n\nfunction computePosition(\n childOffset: Offset,\n boundaryDimensions: Dimensions,\n overlaySize: Offset,\n placementInfo: ParsedPlacement,\n offset: number,\n crossOffset: number,\n containerOffsetWithBoundary: Offset,\n isContainerPositioned: boolean\n) {\n let {placement, crossPlacement, axis, crossAxis, size, crossSize} = placementInfo;\n let position: Position = {};\n\n // button position\n position[crossAxis] = childOffset[crossAxis];\n if (crossPlacement === 'center') {\n // + (button size / 2) - (overlay size / 2)\n // at this point the overlay center should match the button center\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]) / 2;\n } else if (crossPlacement !== crossAxis) {\n // + (button size) - (overlay size)\n // at this point the overlay bottom should match the button bottom\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]);\n }/* else {\n the overlay top should match the button top\n } */\n // add the crossOffset from props\n position[crossAxis] += crossOffset;\n\n // this is button center position - the overlay size + half of the button to align bottom of overlay with button center\n let minViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2) - overlaySize[crossSize];\n // this is button position of center, aligns top of overlay with button center\n let maxViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2);\n\n // clamp it into the range of the min/max positions\n position[crossAxis] = Math.min(Math.max(minViablePosition, position[crossAxis]), maxViablePosition);\n\n // Floor these so the position isn't placed on a partial pixel, only whole pixels. Shouldn't matter if it was floored or ceiled, so chose one.\n if (placement === axis) {\n // If the container is positioned (non-static), then we use the container's actual\n // height, as `bottom` will be relative to this height. But if the container is static,\n // then it can only be the `document.body`, and `bottom` will be relative to _its_\n // container, which should be as large as boundaryDimensions.\n const containerHeight = (isContainerPositioned ? containerOffsetWithBoundary[size] : boundaryDimensions[size]);\n position[FLIPPED_DIRECTION[axis]] = Math.floor(containerHeight - childOffset[axis] + offset);\n } else {\n position[axis] = Math.floor(childOffset[axis] + childOffset[size] + offset);\n }\n\n return position;\n}\n\nfunction getMaxHeight(\n position: Position,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number\n) {\n return position.top != null\n // We want the distance between the top of the overlay to the bottom of the boundary\n ? Math.max(0,\n (boundaryDimensions.height + boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the bottom of the boundary\n - (containerOffsetWithBoundary.top + position.top) // this is the top of the overlay\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n )\n // We want the distance between the top of the trigger to the top of the boundary\n : Math.max(0,\n (childOffset.top + containerOffsetWithBoundary.top) // this is the top of the trigger\n - (boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the top of the boundary\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n );\n}\n\nfunction getAvailableSpace(\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number,\n placementInfo: ParsedPlacement\n) {\n let {placement, axis, size} = placementInfo;\n if (placement === axis) {\n return Math.max(0, childOffset[axis] - boundaryDimensions[axis] - boundaryDimensions.scroll[axis] + containerOffsetWithBoundary[axis] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n }\n\n return Math.max(0, boundaryDimensions[size] + boundaryDimensions[axis] + boundaryDimensions.scroll[axis] - containerOffsetWithBoundary[axis] - childOffset[axis] - childOffset[size] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n}\n\nexport function calculatePositionInternal(\n placementInput: Placement,\n childOffset: Offset,\n overlaySize: Offset,\n scrollSize: Offset,\n margins: Position,\n padding: number,\n flip: boolean,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n offset: number,\n crossOffset: number,\n isContainerPositioned: boolean,\n shouldOverlapWithTrigger: boolean\n): PositionResult {\n let placementInfo = parsePlacement(placementInput);\n let {size, crossAxis, crossSize, placement, crossPlacement, axis} = placementInfo;\n let position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let normalizedOffset = offset;\n let space = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n placementInfo\n );\n\n // Check if the scroll size of the overlay is greater than the available space to determine if we need to flip\n if (flip && scrollSize[size] > space) {\n let flippedPlacementInfo = parsePlacement(`${FLIPPED_DIRECTION[placement]} ${crossPlacement}` as Placement);\n let flippedPosition = computePosition(childOffset, boundaryDimensions, overlaySize, flippedPlacementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let flippedSpace = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n flippedPlacementInfo\n );\n\n // If the available space for the flipped position is greater than the original available space, flip.\n if (flippedSpace > space) {\n placementInfo = flippedPlacementInfo;\n position = flippedPosition;\n normalizedOffset = offset;\n }\n }\n\n let delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let maxHeight = getMaxHeight(\n position,\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding\n );\n\n overlaySize.height = Math.min(overlaySize.height, maxHeight);\n\n position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, normalizedOffset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let arrowPosition: Position = {};\n arrowPosition[crossAxis] = (childOffset[crossAxis] - position[crossAxis] + childOffset[crossSize] / 2);\n\n if (shouldOverlapWithTrigger) {\n position[FLIPPED_DIRECTION[placementInfo.placement]] = position[FLIPPED_DIRECTION[placementInfo.placement]] - childOffset[size];\n }\n\n return {\n position,\n maxHeight: maxHeight,\n arrowOffsetLeft: arrowPosition.left,\n arrowOffsetTop: arrowPosition.top,\n placement: placementInfo.placement\n };\n}\n\n/**\n * Determines where to place the overlay with regards to the target and the position of an optional indicator.\n */\nexport function calculatePosition(opts: PositionOpts): PositionResult {\n let {\n placement,\n targetNode,\n overlayNode,\n scrollNode,\n padding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n shouldOverlapWithTrigger\n } = opts;\n\n let container = overlayNode.offsetParent || document.body;\n let isBodyContainer = container.tagName === 'BODY';\n const containerPositionStyle = window.getComputedStyle(container).position;\n let isContainerPositioned = !!containerPositionStyle && containerPositionStyle !== 'static';\n let childOffset: Offset = isBodyContainer ? getOffset(targetNode) : getPosition(targetNode, container);\n\n if (!isBodyContainer) {\n childOffset.top += parseInt(getCss(targetNode, 'marginTop'), 10) || 0;\n childOffset.left += parseInt(getCss(targetNode, 'marginLeft'), 10) || 0;\n }\n\n let overlaySize: Offset = getOffset(overlayNode);\n let margins = getMargins(overlayNode);\n overlaySize.width += margins.left + margins.right;\n overlaySize.height += margins.top + margins.bottom;\n\n let scrollSize = getScroll(scrollNode);\n let boundaryDimensions = getContainerDimensions(boundaryElement);\n let containerOffsetWithBoundary: Offset = boundaryElement.tagName === 'BODY' ? getOffset(container) : getPosition(container, boundaryElement);\n\n\n return calculatePositionInternal(\n placement,\n childOffset,\n overlaySize,\n scrollSize,\n margins,\n padding,\n shouldFlip,\n boundaryDimensions,\n containerOffsetWithBoundary,\n offset,\n crossOffset,\n isContainerPositioned,\n shouldOverlapWithTrigger\n );\n}\n"]}
|
package/lib/module/Portal.js
CHANGED
@@ -50,10 +50,13 @@ export function PortalProvider(props) {
|
|
50
50
|
}));
|
51
51
|
}
|
52
52
|
|
53
|
-
function OverlayView(
|
53
|
+
function OverlayView({
|
54
|
+
style,
|
55
|
+
...props
|
56
|
+
}) {
|
54
57
|
return /*#__PURE__*/React.createElement(View, _extends({
|
55
58
|
pointerEvents: "box-none",
|
56
|
-
style: StyleSheet.absoluteFill,
|
59
|
+
style: [StyleSheet.absoluteFill, style],
|
57
60
|
collapsable: false
|
58
61
|
}, props));
|
59
62
|
}
|
package/lib/module/Portal.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Portal.tsx"],"names":["React","useEffect","StyleSheet","View","PortalContext","createContext","globalOverlayCounter","PortalProvider","props","items","setItems","useState","setOverlayItem","item","overlayId","prev","concat","id","node","updateOverlayItem","map","removeOverlayItem","newItems","filter","children","OverlayView","absoluteFill","OverlayProvider","OverlayContainer","context","usePortalProvider","useRef","undefined","contents","current","useContext"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AAEA,SAASC,UAAT,EAAqBC,IAArB,QAA4C,cAA5C;AAmBA,MAAMC,aAAa,gBAAGJ,KAAK,CAACK,aAAN,CAA0C,IAA1C,CAAtB;AAEA,IAAIC,oBAAoB,GAAG,CAA3B;AAEA,OAAO,SAASC,cAAT,CAAwBC,KAAxB,EAAwD;AAC7D,QAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBV,KAAK,CAACW,QAAN,CAAmC,EAAnC,CAA1B;;AAEA,QAAMC,cAAc,GAAIC,IAAD,IAAqB;AAC1C,UAAMC,SAAS,GAAG,EAAER,oBAApB;AACAI,IAAAA,QAAQ,CAAEK,IAAD,IAAUA,IAAI,CAACC,MAAL,CAAY,CAAC;AAAEC,MAAAA,EAAE,EAAEH,SAAN;AAAiBI,MAAAA,IAAI,EAAEL;AAAvB,KAAD,CAAZ,CAAX,CAAR;AACA,WAAOC,SAAP;AACD,GAJD;;AAMA,QAAMK,iBAAiB,GAAG,CAACF,EAAD,EAAaC,IAAb,KAAiC;AACzDR,IAAAA,QAAQ,CAAEK,IAAD,IACPA,IAAI,CAACK,GAAL,CAAUP,IAAD,IAAU;AACjB,UAAIA,IAAI,CAACI,EAAL,KAAYA,EAAhB,EAAoB;AAClB,eAAO;AAAEA,UAAAA,EAAF;AAAMC,UAAAA;AAAN,SAAP;AACD;;AACD,aAAOL,IAAP;AACD,KALD,CADM,CAAR;AAQD,GATD;;AAWA,QAAMQ,iBAAiB,GAAIJ,EAAD,IAAgB;AACxCP,IAAAA,QAAQ,CAAEK,IAAD,IAAU;AACjB,YAAMO,QAAQ,GAAGP,IAAI,CAACQ,MAAL,CAAaV,IAAD,IAAUA,IAAI,CAACI,EAAL,KAAYA,EAAlC,CAAjB;AACA,aAAOK,QAAP;AACD,KAHO,CAAR;AAID,GALD;;AAOA,sBACE,oBAAC,aAAD,CAAe,QAAf;AACE,IAAA,KAAK,EAAE;AAAEb,MAAAA,KAAF;AAASG,MAAAA,cAAT;AAAyBS,MAAAA,iBAAzB;AAA4CF,MAAAA;AAA5C;AADT,KAGGX,KAAK,CAACgB,QAHT,EAMGf,KAAK,CAACW,GAAN,CAAWP,IAAD,IAAU;AACnB,wBAAO,oBAAC,KAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAEA,IAAI,CAACI;AAA1B,OAA+BJ,IAAI,CAACK,IAApC,CAAP;AACD,GAFA,CANH,CADF;AAYD;;AAED,SAASO,WAAT,
|
1
|
+
{"version":3,"sources":["Portal.tsx"],"names":["React","useEffect","StyleSheet","View","PortalContext","createContext","globalOverlayCounter","PortalProvider","props","items","setItems","useState","setOverlayItem","item","overlayId","prev","concat","id","node","updateOverlayItem","map","removeOverlayItem","newItems","filter","children","OverlayView","style","absoluteFill","OverlayProvider","OverlayContainer","context","usePortalProvider","useRef","undefined","contents","current","useContext"],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport type { ReactNode } from 'react';\nimport { StyleSheet, View, ViewProps } from 'react-native';\n\ntype OverlayItem = {\n id: number;\n node: ReactNode;\n};\n\ninterface PortalContext {\n items: Array<OverlayItem>;\n setOverlayItem: (node: ReactNode) => number;\n removeOverlayItem: (id: number) => void;\n updateOverlayItem: (id: number, node: ReactNode) => void;\n}\n\ninterface ModalProviderProps extends ViewProps {\n children: ReactNode;\n provider?: boolean;\n}\n\nconst PortalContext = React.createContext<PortalContext | null>(null);\n\nlet globalOverlayCounter = 0;\n\nexport function PortalProvider(props: { children: ReactNode }) {\n const [items, setItems] = React.useState<Array<OverlayItem>>([]);\n\n const setOverlayItem = (item: ReactNode) => {\n const overlayId = ++globalOverlayCounter;\n setItems((prev) => prev.concat([{ id: overlayId, node: item }]));\n return overlayId;\n };\n\n const updateOverlayItem = (id: number, node: ReactNode) => {\n setItems((prev) =>\n prev.map((item) => {\n if (item.id === id) {\n return { id, node };\n }\n return item;\n })\n );\n };\n\n const removeOverlayItem = (id: number) => {\n setItems((prev) => {\n const newItems = prev.filter((item) => item.id !== id);\n return newItems;\n });\n };\n\n return (\n <PortalContext.Provider\n value={{ items, setOverlayItem, removeOverlayItem, updateOverlayItem }}\n >\n {props.children}\n\n {/* Render Overlays */}\n {items.map((item) => {\n return <React.Fragment key={item.id}>{item.node}</React.Fragment>;\n })}\n </PortalContext.Provider>\n );\n}\n\nfunction OverlayView({style, ...props}: ModalProviderProps) {\n return (\n <View\n pointerEvents=\"box-none\"\n style={[StyleSheet.absoluteFill, style]}\n collapsable={false}\n {...props}\n />\n );\n}\n\nexport const OverlayProvider = PortalProvider;\n\nexport function OverlayContainer(props: ModalProviderProps) {\n const context = usePortalProvider();\n const overlayId = React.useRef<number | undefined>(undefined);\n let contents = <OverlayView {...props} />;\n\n useEffect(\n () => {\n // Mount\n if (overlayId.current === undefined) {\n overlayId.current = context?.setOverlayItem(contents);\n }\n // Update\n else {\n if (overlayId.current) {\n context?.updateOverlayItem(overlayId.current, contents);\n }\n }\n },\n // To re-render the child\n [props]\n );\n\n // Unmount\n useEffect(() => {\n return () => {\n if (overlayId.current) {\n context?.removeOverlayItem(overlayId.current);\n }\n };\n }, []);\n\n return null;\n}\n\nfunction usePortalProvider() {\n const context = React.useContext(PortalContext);\n return context;\n}\n"]}
|
@@ -11,11 +11,11 @@
|
|
11
11
|
* OF ANY KIND, either express or implied. See the License for the specific language
|
12
12
|
* governing permissions and limitations under the License.
|
13
13
|
*/
|
14
|
-
import getCss from 'dom-helpers/
|
15
|
-
import getOffset from 'dom-helpers/
|
16
|
-
import getPosition from 'dom-helpers/
|
17
|
-
import getScrollLeft from 'dom-helpers/
|
18
|
-
import getScrollTop from 'dom-helpers/
|
14
|
+
import getCss from 'dom-helpers/css';
|
15
|
+
import getOffset from 'dom-helpers/offset';
|
16
|
+
import getPosition from 'dom-helpers/position';
|
17
|
+
import getScrollLeft from 'dom-helpers/scrollLeft';
|
18
|
+
import getScrollTop from 'dom-helpers/scrollTop';
|
19
19
|
import ownerDocument from 'dom-helpers/ownerDocument';
|
20
20
|
const AXIS = {
|
21
21
|
top: 'top',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["calculatePosition.ts"],"names":["getCss","getOffset","getPosition","getScrollLeft","getScrollTop","ownerDocument","AXIS","top","bottom","left","right","FLIPPED_DIRECTION","CROSS_AXIS","AXIS_SIZE","PARSED_PLACEMENT_CACHE","visualViewport","window","getContainerDimensions","containerNode","width","height","scroll","tagName","document","documentElement","clientWidth","clientHeight","getScroll","node","scrollTop","scrollLeft","scrollWidth","scrollHeight","getDelta","axis","offset","size","containerDimensions","padding","containerScroll","containerHeight","startEdgeOffset","endEdgeOffset","Math","max","getMargins","style","getComputedStyle","parseInt","marginTop","marginBottom","marginLeft","marginRight","parsePlacement","input","placement","crossPlacement","split","crossAxis","crossSize","computePosition","childOffset","boundaryDimensions","overlaySize","placementInfo","crossOffset","containerOffsetWithBoundary","isContainerPositioned","position","minViablePosition","maxViablePosition","min","floor","getMaxHeight","margins","getAvailableSpace","calculatePositionInternal","placementInput","scrollSize","flip","shouldOverlapWithTrigger","normalizedOffset","space","flippedPlacementInfo","flippedPosition","flippedSpace","delta","maxHeight","arrowPosition","arrowOffsetLeft","arrowOffsetTop","calculatePosition","opts","targetNode","overlayNode","scrollNode","shouldFlip","boundaryElement","container","offsetParent","body","isBodyContainer","containerPositionStyle"],"mappings":"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","sourcesContent":["// @ts-nocheck\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Axis, Placement, PlacementAxis, SizeAxis} from '@react-types/overlays';\nimport getCss from 'dom-helpers/style';\nimport getOffset from 'dom-helpers/query/offset';\nimport getPosition from 'dom-helpers/query/position';\nimport getScrollLeft from 'dom-helpers/query/scrollLeft';\nimport getScrollTop from 'dom-helpers/query/scrollTop';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\ninterface Position {\n top?: number,\n left?: number,\n bottom?: number,\n right?: number\n}\n\ninterface Dimensions {\n width: number,\n height: number,\n top: number,\n left: number,\n scroll: Position\n}\n\ninterface ParsedPlacement {\n placement: PlacementAxis,\n crossPlacement: PlacementAxis,\n axis: Axis,\n crossAxis: Axis,\n size: SizeAxis,\n crossSize: SizeAxis\n}\n\ninterface Offset {\n top: number,\n left: number,\n width: number,\n height: number\n}\n\ninterface PositionOpts {\n placement: Placement,\n targetNode: HTMLElement,\n overlayNode: HTMLElement,\n scrollNode: HTMLElement,\n padding: number,\n shouldFlip: boolean,\n boundaryElement: HTMLElement,\n offset: number,\n crossOffset: number,\n shouldOverlapWithTrigger: boolean\n}\n\nexport interface PositionResult {\n position?: Position,\n arrowOffsetLeft?: number,\n arrowOffsetTop?: number,\n maxHeight?: number,\n placement: PlacementAxis\n}\n\nconst AXIS = {\n top: 'top',\n bottom: 'top',\n left: 'left',\n right: 'left'\n};\n\nconst FLIPPED_DIRECTION = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\n\nconst CROSS_AXIS = {\n top: 'left',\n left: 'top'\n};\n\nconst AXIS_SIZE = {\n top: 'height',\n left: 'width'\n};\n\nconst PARSED_PLACEMENT_CACHE = {};\n\n// @ts-ignore\nlet visualViewport = typeof window !== 'undefined' && window.visualViewport;\n\nfunction getContainerDimensions(containerNode: Element): Dimensions {\n let width = 0, height = 0, top = 0, left = 0;\n let scroll: Position = {};\n\n if (containerNode.tagName === 'BODY') {\n width = visualViewport?.width ?? document.documentElement.clientWidth;\n height = visualViewport?.height ?? document.documentElement.clientHeight;\n\n scroll.top =\n getScrollTop(ownerDocument(containerNode).documentElement) ||\n getScrollTop(containerNode);\n scroll.left =\n getScrollLeft(ownerDocument(containerNode).documentElement) ||\n getScrollLeft(containerNode);\n } else {\n ({width, height, top, left} = getOffset(containerNode));\n scroll.top = getScrollTop(containerNode);\n scroll.left = getScrollLeft(containerNode);\n }\n\n return {width, height, scroll, top, left};\n}\n\nfunction getScroll(node: HTMLElement): Offset {\n return {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n}\n\nfunction getDelta(\n axis: Axis,\n offset: number,\n size: number,\n containerDimensions: Dimensions,\n padding: number\n) {\n let containerScroll = containerDimensions.scroll[axis];\n let containerHeight = containerDimensions[AXIS_SIZE[axis]];\n\n let startEdgeOffset = offset - padding - containerScroll;\n let endEdgeOffset = offset + padding - containerScroll + size;\n\n if (startEdgeOffset < 0) {\n return -startEdgeOffset;\n } else if (endEdgeOffset > containerHeight) {\n return Math.max(containerHeight - endEdgeOffset, -startEdgeOffset);\n } else {\n return 0;\n }\n}\n\nfunction getMargins(node: HTMLElement): Position {\n let style = window.getComputedStyle(node);\n return {\n top: parseInt(style.marginTop, 10) || 0,\n bottom: parseInt(style.marginBottom, 10) || 0,\n left: parseInt(style.marginLeft, 10) || 0,\n right: parseInt(style.marginRight, 10) || 0\n };\n}\n\nfunction parsePlacement(input: Placement): ParsedPlacement {\n if (PARSED_PLACEMENT_CACHE[input]) {\n return PARSED_PLACEMENT_CACHE[input];\n }\n\n let [placement, crossPlacement] = input.split(' ');\n let axis: Axis = AXIS[placement] || 'right';\n let crossAxis: Axis = CROSS_AXIS[axis];\n\n if (!AXIS[crossPlacement]) {\n crossPlacement = 'center';\n }\n\n let size = AXIS_SIZE[axis];\n let crossSize = AXIS_SIZE[crossAxis];\n PARSED_PLACEMENT_CACHE[input] = {placement, crossPlacement, axis, crossAxis, size, crossSize};\n return PARSED_PLACEMENT_CACHE[input];\n}\n\nfunction computePosition(\n childOffset: Offset,\n boundaryDimensions: Dimensions,\n overlaySize: Offset,\n placementInfo: ParsedPlacement,\n offset: number,\n crossOffset: number,\n containerOffsetWithBoundary: Offset,\n isContainerPositioned: boolean\n) {\n let {placement, crossPlacement, axis, crossAxis, size, crossSize} = placementInfo;\n let position: Position = {};\n\n // button position\n position[crossAxis] = childOffset[crossAxis];\n if (crossPlacement === 'center') {\n // + (button size / 2) - (overlay size / 2)\n // at this point the overlay center should match the button center\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]) / 2;\n } else if (crossPlacement !== crossAxis) {\n // + (button size) - (overlay size)\n // at this point the overlay bottom should match the button bottom\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]);\n }/* else {\n the overlay top should match the button top\n } */\n // add the crossOffset from props\n position[crossAxis] += crossOffset;\n\n // this is button center position - the overlay size + half of the button to align bottom of overlay with button center\n let minViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2) - overlaySize[crossSize];\n // this is button position of center, aligns top of overlay with button center\n let maxViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2);\n\n // clamp it into the range of the min/max positions\n position[crossAxis] = Math.min(Math.max(minViablePosition, position[crossAxis]), maxViablePosition);\n\n // Floor these so the position isn't placed on a partial pixel, only whole pixels. Shouldn't matter if it was floored or ceiled, so chose one.\n if (placement === axis) {\n // If the container is positioned (non-static), then we use the container's actual\n // height, as `bottom` will be relative to this height. But if the container is static,\n // then it can only be the `document.body`, and `bottom` will be relative to _its_\n // container, which should be as large as boundaryDimensions.\n const containerHeight = (isContainerPositioned ? containerOffsetWithBoundary[size] : boundaryDimensions[size]);\n position[FLIPPED_DIRECTION[axis]] = Math.floor(containerHeight - childOffset[axis] + offset);\n } else {\n position[axis] = Math.floor(childOffset[axis] + childOffset[size] + offset);\n }\n\n return position;\n}\n\nfunction getMaxHeight(\n position: Position,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number\n) {\n return position.top != null\n // We want the distance between the top of the overlay to the bottom of the boundary\n ? Math.max(0,\n (boundaryDimensions.height + boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the bottom of the boundary\n - (containerOffsetWithBoundary.top + position.top) // this is the top of the overlay\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n )\n // We want the distance between the top of the trigger to the top of the boundary\n : Math.max(0,\n (childOffset.top + containerOffsetWithBoundary.top) // this is the top of the trigger\n - (boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the top of the boundary\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n );\n}\n\nfunction getAvailableSpace(\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number,\n placementInfo: ParsedPlacement\n) {\n let {placement, axis, size} = placementInfo;\n if (placement === axis) {\n return Math.max(0, childOffset[axis] - boundaryDimensions[axis] - boundaryDimensions.scroll[axis] + containerOffsetWithBoundary[axis] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n }\n\n return Math.max(0, boundaryDimensions[size] + boundaryDimensions[axis] + boundaryDimensions.scroll[axis] - containerOffsetWithBoundary[axis] - childOffset[axis] - childOffset[size] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n}\n\nexport function calculatePositionInternal(\n placementInput: Placement,\n childOffset: Offset,\n overlaySize: Offset,\n scrollSize: Offset,\n margins: Position,\n padding: number,\n flip: boolean,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n offset: number,\n crossOffset: number,\n isContainerPositioned: boolean,\n shouldOverlapWithTrigger: boolean\n): PositionResult {\n let placementInfo = parsePlacement(placementInput);\n let {size, crossAxis, crossSize, placement, crossPlacement, axis} = placementInfo;\n let position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let normalizedOffset = offset;\n let space = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n placementInfo\n );\n\n // Check if the scroll size of the overlay is greater than the available space to determine if we need to flip\n if (flip && scrollSize[size] > space) {\n let flippedPlacementInfo = parsePlacement(`${FLIPPED_DIRECTION[placement]} ${crossPlacement}` as Placement);\n let flippedPosition = computePosition(childOffset, boundaryDimensions, overlaySize, flippedPlacementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let flippedSpace = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n flippedPlacementInfo\n );\n\n // If the available space for the flipped position is greater than the original available space, flip.\n if (flippedSpace > space) {\n placementInfo = flippedPlacementInfo;\n position = flippedPosition;\n normalizedOffset = offset;\n }\n }\n\n let delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let maxHeight = getMaxHeight(\n position,\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding\n );\n\n overlaySize.height = Math.min(overlaySize.height, maxHeight);\n\n position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, normalizedOffset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let arrowPosition: Position = {};\n arrowPosition[crossAxis] = (childOffset[crossAxis] - position[crossAxis] + childOffset[crossSize] / 2);\n\n if (shouldOverlapWithTrigger) {\n position[FLIPPED_DIRECTION[placementInfo.placement]] = position[FLIPPED_DIRECTION[placementInfo.placement]] - childOffset[size];\n }\n\n return {\n position,\n maxHeight: maxHeight,\n arrowOffsetLeft: arrowPosition.left,\n arrowOffsetTop: arrowPosition.top,\n placement: placementInfo.placement\n };\n}\n\n/**\n * Determines where to place the overlay with regards to the target and the position of an optional indicator.\n */\nexport function calculatePosition(opts: PositionOpts): PositionResult {\n let {\n placement,\n targetNode,\n overlayNode,\n scrollNode,\n padding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n shouldOverlapWithTrigger\n } = opts;\n\n let container = overlayNode.offsetParent || document.body;\n let isBodyContainer = container.tagName === 'BODY';\n const containerPositionStyle = window.getComputedStyle(container).position;\n let isContainerPositioned = !!containerPositionStyle && containerPositionStyle !== 'static';\n let childOffset: Offset = isBodyContainer ? getOffset(targetNode) : getPosition(targetNode, container);\n\n if (!isBodyContainer) {\n childOffset.top += parseInt(getCss(targetNode, 'marginTop'), 10) || 0;\n childOffset.left += parseInt(getCss(targetNode, 'marginLeft'), 10) || 0;\n }\n\n let overlaySize: Offset = getOffset(overlayNode);\n let margins = getMargins(overlayNode);\n overlaySize.width += margins.left + margins.right;\n overlaySize.height += margins.top + margins.bottom;\n\n let scrollSize = getScroll(scrollNode);\n let boundaryDimensions = getContainerDimensions(boundaryElement);\n let containerOffsetWithBoundary: Offset = boundaryElement.tagName === 'BODY' ? getOffset(container) : getPosition(container, boundaryElement);\n\n\n return calculatePositionInternal(\n placement,\n childOffset,\n overlaySize,\n scrollSize,\n margins,\n padding,\n shouldFlip,\n boundaryDimensions,\n containerOffsetWithBoundary,\n offset,\n crossOffset,\n isContainerPositioned,\n shouldOverlapWithTrigger\n );\n}\n"]}
|
1
|
+
{"version":3,"sources":["calculatePosition.ts"],"names":["getCss","getOffset","getPosition","getScrollLeft","getScrollTop","ownerDocument","AXIS","top","bottom","left","right","FLIPPED_DIRECTION","CROSS_AXIS","AXIS_SIZE","PARSED_PLACEMENT_CACHE","visualViewport","window","getContainerDimensions","containerNode","width","height","scroll","tagName","document","documentElement","clientWidth","clientHeight","getScroll","node","scrollTop","scrollLeft","scrollWidth","scrollHeight","getDelta","axis","offset","size","containerDimensions","padding","containerScroll","containerHeight","startEdgeOffset","endEdgeOffset","Math","max","getMargins","style","getComputedStyle","parseInt","marginTop","marginBottom","marginLeft","marginRight","parsePlacement","input","placement","crossPlacement","split","crossAxis","crossSize","computePosition","childOffset","boundaryDimensions","overlaySize","placementInfo","crossOffset","containerOffsetWithBoundary","isContainerPositioned","position","minViablePosition","maxViablePosition","min","floor","getMaxHeight","margins","getAvailableSpace","calculatePositionInternal","placementInput","scrollSize","flip","shouldOverlapWithTrigger","normalizedOffset","space","flippedPlacementInfo","flippedPosition","flippedSpace","delta","maxHeight","arrowPosition","arrowOffsetLeft","arrowOffsetTop","calculatePosition","opts","targetNode","overlayNode","scrollNode","shouldFlip","boundaryElement","container","offsetParent","body","isBodyContainer","containerPositionStyle"],"mappings":"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","sourcesContent":["// @ts-nocheck\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Axis, Placement, PlacementAxis, SizeAxis} from '@react-types/overlays';\nimport getCss from 'dom-helpers/css';\nimport getOffset from 'dom-helpers/offset';\nimport getPosition from 'dom-helpers/position';\nimport getScrollLeft from 'dom-helpers/scrollLeft';\nimport getScrollTop from 'dom-helpers/scrollTop';\nimport ownerDocument from 'dom-helpers/ownerDocument';\n\ninterface Position {\n top?: number,\n left?: number,\n bottom?: number,\n right?: number\n}\n\ninterface Dimensions {\n width: number,\n height: number,\n top: number,\n left: number,\n scroll: Position\n}\n\ninterface ParsedPlacement {\n placement: PlacementAxis,\n crossPlacement: PlacementAxis,\n axis: Axis,\n crossAxis: Axis,\n size: SizeAxis,\n crossSize: SizeAxis\n}\n\ninterface Offset {\n top: number,\n left: number,\n width: number,\n height: number\n}\n\ninterface PositionOpts {\n placement: Placement,\n targetNode: HTMLElement,\n overlayNode: HTMLElement,\n scrollNode: HTMLElement,\n padding: number,\n shouldFlip: boolean,\n boundaryElement: HTMLElement,\n offset: number,\n crossOffset: number,\n shouldOverlapWithTrigger: boolean\n}\n\nexport interface PositionResult {\n position?: Position,\n arrowOffsetLeft?: number,\n arrowOffsetTop?: number,\n maxHeight?: number,\n placement: PlacementAxis\n}\n\nconst AXIS = {\n top: 'top',\n bottom: 'top',\n left: 'left',\n right: 'left'\n};\n\nconst FLIPPED_DIRECTION = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\n\nconst CROSS_AXIS = {\n top: 'left',\n left: 'top'\n};\n\nconst AXIS_SIZE = {\n top: 'height',\n left: 'width'\n};\n\nconst PARSED_PLACEMENT_CACHE = {};\n\n// @ts-ignore\nlet visualViewport = typeof window !== 'undefined' && window.visualViewport;\n\nfunction getContainerDimensions(containerNode: Element): Dimensions {\n let width = 0, height = 0, top = 0, left = 0;\n let scroll: Position = {};\n\n if (containerNode.tagName === 'BODY') {\n width = visualViewport?.width ?? document.documentElement.clientWidth;\n height = visualViewport?.height ?? document.documentElement.clientHeight;\n\n scroll.top =\n getScrollTop(ownerDocument(containerNode).documentElement) ||\n getScrollTop(containerNode);\n scroll.left =\n getScrollLeft(ownerDocument(containerNode).documentElement) ||\n getScrollLeft(containerNode);\n } else {\n ({width, height, top, left} = getOffset(containerNode));\n scroll.top = getScrollTop(containerNode);\n scroll.left = getScrollLeft(containerNode);\n }\n\n return {width, height, scroll, top, left};\n}\n\nfunction getScroll(node: HTMLElement): Offset {\n return {\n top: node.scrollTop,\n left: node.scrollLeft,\n width: node.scrollWidth,\n height: node.scrollHeight\n };\n}\n\nfunction getDelta(\n axis: Axis,\n offset: number,\n size: number,\n containerDimensions: Dimensions,\n padding: number\n) {\n let containerScroll = containerDimensions.scroll[axis];\n let containerHeight = containerDimensions[AXIS_SIZE[axis]];\n\n let startEdgeOffset = offset - padding - containerScroll;\n let endEdgeOffset = offset + padding - containerScroll + size;\n\n if (startEdgeOffset < 0) {\n return -startEdgeOffset;\n } else if (endEdgeOffset > containerHeight) {\n return Math.max(containerHeight - endEdgeOffset, -startEdgeOffset);\n } else {\n return 0;\n }\n}\n\nfunction getMargins(node: HTMLElement): Position {\n let style = window.getComputedStyle(node);\n return {\n top: parseInt(style.marginTop, 10) || 0,\n bottom: parseInt(style.marginBottom, 10) || 0,\n left: parseInt(style.marginLeft, 10) || 0,\n right: parseInt(style.marginRight, 10) || 0\n };\n}\n\nfunction parsePlacement(input: Placement): ParsedPlacement {\n if (PARSED_PLACEMENT_CACHE[input]) {\n return PARSED_PLACEMENT_CACHE[input];\n }\n\n let [placement, crossPlacement] = input.split(' ');\n let axis: Axis = AXIS[placement] || 'right';\n let crossAxis: Axis = CROSS_AXIS[axis];\n\n if (!AXIS[crossPlacement]) {\n crossPlacement = 'center';\n }\n\n let size = AXIS_SIZE[axis];\n let crossSize = AXIS_SIZE[crossAxis];\n PARSED_PLACEMENT_CACHE[input] = {placement, crossPlacement, axis, crossAxis, size, crossSize};\n return PARSED_PLACEMENT_CACHE[input];\n}\n\nfunction computePosition(\n childOffset: Offset,\n boundaryDimensions: Dimensions,\n overlaySize: Offset,\n placementInfo: ParsedPlacement,\n offset: number,\n crossOffset: number,\n containerOffsetWithBoundary: Offset,\n isContainerPositioned: boolean\n) {\n let {placement, crossPlacement, axis, crossAxis, size, crossSize} = placementInfo;\n let position: Position = {};\n\n // button position\n position[crossAxis] = childOffset[crossAxis];\n if (crossPlacement === 'center') {\n // + (button size / 2) - (overlay size / 2)\n // at this point the overlay center should match the button center\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]) / 2;\n } else if (crossPlacement !== crossAxis) {\n // + (button size) - (overlay size)\n // at this point the overlay bottom should match the button bottom\n position[crossAxis] += (childOffset[crossSize] - overlaySize[crossSize]);\n }/* else {\n the overlay top should match the button top\n } */\n // add the crossOffset from props\n position[crossAxis] += crossOffset;\n\n // this is button center position - the overlay size + half of the button to align bottom of overlay with button center\n let minViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2) - overlaySize[crossSize];\n // this is button position of center, aligns top of overlay with button center\n let maxViablePosition = childOffset[crossAxis] + (childOffset[crossSize] / 2);\n\n // clamp it into the range of the min/max positions\n position[crossAxis] = Math.min(Math.max(minViablePosition, position[crossAxis]), maxViablePosition);\n\n // Floor these so the position isn't placed on a partial pixel, only whole pixels. Shouldn't matter if it was floored or ceiled, so chose one.\n if (placement === axis) {\n // If the container is positioned (non-static), then we use the container's actual\n // height, as `bottom` will be relative to this height. But if the container is static,\n // then it can only be the `document.body`, and `bottom` will be relative to _its_\n // container, which should be as large as boundaryDimensions.\n const containerHeight = (isContainerPositioned ? containerOffsetWithBoundary[size] : boundaryDimensions[size]);\n position[FLIPPED_DIRECTION[axis]] = Math.floor(containerHeight - childOffset[axis] + offset);\n } else {\n position[axis] = Math.floor(childOffset[axis] + childOffset[size] + offset);\n }\n\n return position;\n}\n\nfunction getMaxHeight(\n position: Position,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number\n) {\n return position.top != null\n // We want the distance between the top of the overlay to the bottom of the boundary\n ? Math.max(0,\n (boundaryDimensions.height + boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the bottom of the boundary\n - (containerOffsetWithBoundary.top + position.top) // this is the top of the overlay\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n )\n // We want the distance between the top of the trigger to the top of the boundary\n : Math.max(0,\n (childOffset.top + containerOffsetWithBoundary.top) // this is the top of the trigger\n - (boundaryDimensions.top + boundaryDimensions.scroll.top) // this is the top of the boundary\n - (margins.top + margins.bottom + padding) // save additional space for margin and padding\n );\n}\n\nfunction getAvailableSpace(\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n childOffset: Offset,\n margins: Position,\n padding: number,\n placementInfo: ParsedPlacement\n) {\n let {placement, axis, size} = placementInfo;\n if (placement === axis) {\n return Math.max(0, childOffset[axis] - boundaryDimensions[axis] - boundaryDimensions.scroll[axis] + containerOffsetWithBoundary[axis] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n }\n\n return Math.max(0, boundaryDimensions[size] + boundaryDimensions[axis] + boundaryDimensions.scroll[axis] - containerOffsetWithBoundary[axis] - childOffset[axis] - childOffset[size] - margins[axis] - margins[FLIPPED_DIRECTION[axis]] - padding);\n}\n\nexport function calculatePositionInternal(\n placementInput: Placement,\n childOffset: Offset,\n overlaySize: Offset,\n scrollSize: Offset,\n margins: Position,\n padding: number,\n flip: boolean,\n boundaryDimensions: Dimensions,\n containerOffsetWithBoundary: Offset,\n offset: number,\n crossOffset: number,\n isContainerPositioned: boolean,\n shouldOverlapWithTrigger: boolean\n): PositionResult {\n let placementInfo = parsePlacement(placementInput);\n let {size, crossAxis, crossSize, placement, crossPlacement, axis} = placementInfo;\n let position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let normalizedOffset = offset;\n let space = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n placementInfo\n );\n\n // Check if the scroll size of the overlay is greater than the available space to determine if we need to flip\n if (flip && scrollSize[size] > space) {\n let flippedPlacementInfo = parsePlacement(`${FLIPPED_DIRECTION[placement]} ${crossPlacement}` as Placement);\n let flippedPosition = computePosition(childOffset, boundaryDimensions, overlaySize, flippedPlacementInfo, offset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n let flippedSpace = getAvailableSpace(\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding + offset,\n flippedPlacementInfo\n );\n\n // If the available space for the flipped position is greater than the original available space, flip.\n if (flippedSpace > space) {\n placementInfo = flippedPlacementInfo;\n position = flippedPosition;\n normalizedOffset = offset;\n }\n }\n\n let delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let maxHeight = getMaxHeight(\n position,\n boundaryDimensions,\n containerOffsetWithBoundary,\n childOffset,\n margins,\n padding\n );\n\n overlaySize.height = Math.min(overlaySize.height, maxHeight);\n\n position = computePosition(childOffset, boundaryDimensions, overlaySize, placementInfo, normalizedOffset, crossOffset, containerOffsetWithBoundary, isContainerPositioned);\n delta = getDelta(crossAxis, position[crossAxis], overlaySize[crossSize], boundaryDimensions, padding);\n position[crossAxis] += delta;\n\n let arrowPosition: Position = {};\n arrowPosition[crossAxis] = (childOffset[crossAxis] - position[crossAxis] + childOffset[crossSize] / 2);\n\n if (shouldOverlapWithTrigger) {\n position[FLIPPED_DIRECTION[placementInfo.placement]] = position[FLIPPED_DIRECTION[placementInfo.placement]] - childOffset[size];\n }\n\n return {\n position,\n maxHeight: maxHeight,\n arrowOffsetLeft: arrowPosition.left,\n arrowOffsetTop: arrowPosition.top,\n placement: placementInfo.placement\n };\n}\n\n/**\n * Determines where to place the overlay with regards to the target and the position of an optional indicator.\n */\nexport function calculatePosition(opts: PositionOpts): PositionResult {\n let {\n placement,\n targetNode,\n overlayNode,\n scrollNode,\n padding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n shouldOverlapWithTrigger\n } = opts;\n\n let container = overlayNode.offsetParent || document.body;\n let isBodyContainer = container.tagName === 'BODY';\n const containerPositionStyle = window.getComputedStyle(container).position;\n let isContainerPositioned = !!containerPositionStyle && containerPositionStyle !== 'static';\n let childOffset: Offset = isBodyContainer ? getOffset(targetNode) : getPosition(targetNode, container);\n\n if (!isBodyContainer) {\n childOffset.top += parseInt(getCss(targetNode, 'marginTop'), 10) || 0;\n childOffset.left += parseInt(getCss(targetNode, 'marginLeft'), 10) || 0;\n }\n\n let overlaySize: Offset = getOffset(overlayNode);\n let margins = getMargins(overlayNode);\n overlaySize.width += margins.left + margins.right;\n overlaySize.height += margins.top + margins.bottom;\n\n let scrollSize = getScroll(scrollNode);\n let boundaryDimensions = getContainerDimensions(boundaryElement);\n let containerOffsetWithBoundary: Offset = boundaryElement.tagName === 'BODY' ? getOffset(container) : getPosition(container, boundaryElement);\n\n\n return calculatePositionInternal(\n placement,\n childOffset,\n overlaySize,\n scrollSize,\n margins,\n padding,\n shouldFlip,\n boundaryDimensions,\n containerOffsetWithBoundary,\n offset,\n crossOffset,\n isContainerPositioned,\n shouldOverlapWithTrigger\n );\n}\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@react-native-aria/overlays",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.3.3-rc.0",
|
4
4
|
"description": "Overlay utilities. Part of react-native-aria",
|
5
5
|
"main": "lib/commonjs/index",
|
6
6
|
"module": "lib/module/index",
|
@@ -32,10 +32,12 @@
|
|
32
32
|
"bootstrap": "yarn example && yarn && yarn pods"
|
33
33
|
},
|
34
34
|
"dependencies": {
|
35
|
-
"@react-aria/
|
36
|
-
"@react-
|
35
|
+
"@react-aria/interactions": "^3.3.2",
|
36
|
+
"@react-aria/overlays": "^3.7.0",
|
37
|
+
"@react-native-aria/utils": "^0.2.8",
|
37
38
|
"@react-stately/overlays": "^3.1.1",
|
38
|
-
"@react-types/overlays": "^3.4.0"
|
39
|
+
"@react-types/overlays": "^3.4.0",
|
40
|
+
"dom-helpers": "^5.0.0"
|
39
41
|
},
|
40
42
|
"keywords": [
|
41
43
|
"react-native",
|
package/src/Portal.tsx
CHANGED
@@ -64,11 +64,11 @@ export function PortalProvider(props: { children: ReactNode }) {
|
|
64
64
|
);
|
65
65
|
}
|
66
66
|
|
67
|
-
function OverlayView(props: ModalProviderProps) {
|
67
|
+
function OverlayView({style, ...props}: ModalProviderProps) {
|
68
68
|
return (
|
69
69
|
<View
|
70
70
|
pointerEvents="box-none"
|
71
|
-
style={StyleSheet.absoluteFill}
|
71
|
+
style={[StyleSheet.absoluteFill, style]}
|
72
72
|
collapsable={false}
|
73
73
|
{...props}
|
74
74
|
/>
|
@@ -12,11 +12,11 @@
|
|
12
12
|
*/
|
13
13
|
|
14
14
|
import {Axis, Placement, PlacementAxis, SizeAxis} from '@react-types/overlays';
|
15
|
-
import getCss from 'dom-helpers/
|
16
|
-
import getOffset from 'dom-helpers/
|
17
|
-
import getPosition from 'dom-helpers/
|
18
|
-
import getScrollLeft from 'dom-helpers/
|
19
|
-
import getScrollTop from 'dom-helpers/
|
15
|
+
import getCss from 'dom-helpers/css';
|
16
|
+
import getOffset from 'dom-helpers/offset';
|
17
|
+
import getPosition from 'dom-helpers/position';
|
18
|
+
import getScrollLeft from 'dom-helpers/scrollLeft';
|
19
|
+
import getScrollTop from 'dom-helpers/scrollTop';
|
20
20
|
import ownerDocument from 'dom-helpers/ownerDocument';
|
21
21
|
|
22
22
|
interface Position {
|