@react-native-aria/overlays 0.3.10 → 0.3.11-alpha.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.
Files changed (97) hide show
  1. package/lib/commonjs/Portal.js +17 -37
  2. package/lib/commonjs/Portal.js.map +1 -1
  3. package/lib/commonjs/index.js +0 -10
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/index.web.js +0 -10
  6. package/lib/commonjs/index.web.js.map +1 -1
  7. package/lib/commonjs/useOverlay.js +0 -1
  8. package/lib/commonjs/useOverlay.js.map +1 -1
  9. package/lib/commonjs/useOverlay.web.js +9 -11
  10. package/lib/commonjs/useOverlay.web.js.map +1 -1
  11. package/lib/commonjs/useOverlayPosition.js +54 -69
  12. package/lib/commonjs/useOverlayPosition.js.map +1 -1
  13. package/lib/commonjs/useOverlayPosition.web.js +0 -1
  14. package/lib/commonjs/useOverlayPosition.web.js.map +1 -1
  15. package/lib/commonjs/useOverlayTrigger.js +0 -1
  16. package/lib/commonjs/useOverlayTrigger.js.map +1 -1
  17. package/lib/commonjs/useOverlayTrigger.web.js +0 -1
  18. package/lib/commonjs/useOverlayTrigger.web.js.map +1 -1
  19. package/lib/commonjs/usePreventScroll.js +0 -2
  20. package/lib/commonjs/usePreventScroll.js.map +1 -1
  21. package/lib/commonjs/usePreventScroll.web.js +0 -1
  22. package/lib/commonjs/usePreventScroll.web.js.map +1 -1
  23. package/lib/commonjs/utils.js +8 -8
  24. package/lib/commonjs/utils.js.map +1 -1
  25. package/lib/commonjs/web/overlays/index.js +0 -2
  26. package/lib/commonjs/web/overlays/index.js.map +1 -1
  27. package/lib/commonjs/web/overlays/src/calculatePosition.js +35 -68
  28. package/lib/commonjs/web/overlays/src/calculatePosition.js.map +1 -1
  29. package/lib/commonjs/web/overlays/src/index.js +0 -2
  30. package/lib/commonjs/web/overlays/src/index.js.map +1 -1
  31. package/lib/commonjs/web/overlays/src/useCloseOnScroll.js +3 -12
  32. package/lib/commonjs/web/overlays/src/useCloseOnScroll.js.map +1 -1
  33. package/lib/commonjs/web/overlays/src/useOverlayPosition.js +19 -23
  34. package/lib/commonjs/web/overlays/src/useOverlayPosition.js.map +1 -1
  35. package/lib/module/Portal.js +13 -20
  36. package/lib/module/Portal.js.map +1 -1
  37. package/lib/module/index.js.map +1 -1
  38. package/lib/module/index.web.js.map +1 -1
  39. package/lib/module/useOverlay.js.map +1 -1
  40. package/lib/module/useOverlay.web.js +9 -8
  41. package/lib/module/useOverlay.web.js.map +1 -1
  42. package/lib/module/useOverlayPosition.js +55 -60
  43. package/lib/module/useOverlayPosition.js.map +1 -1
  44. package/lib/module/useOverlayPosition.web.js.map +1 -1
  45. package/lib/module/useOverlayTrigger.js.map +1 -1
  46. package/lib/module/useOverlayTrigger.web.js.map +1 -1
  47. package/lib/module/usePreventScroll.js.map +1 -1
  48. package/lib/module/usePreventScroll.web.js.map +1 -1
  49. package/lib/module/utils.js +8 -4
  50. package/lib/module/utils.js.map +1 -1
  51. package/lib/module/web/overlays/index.js +1 -0
  52. package/lib/module/web/overlays/index.js.map +1 -1
  53. package/lib/module/web/overlays/src/calculatePosition.js +34 -57
  54. package/lib/module/web/overlays/src/calculatePosition.js.map +1 -1
  55. package/lib/module/web/overlays/src/index.js +1 -0
  56. package/lib/module/web/overlays/src/index.js.map +1 -1
  57. package/lib/module/web/overlays/src/useCloseOnScroll.js +4 -9
  58. package/lib/module/web/overlays/src/useCloseOnScroll.js.map +1 -1
  59. package/lib/module/web/overlays/src/useOverlayPosition.js +19 -18
  60. package/lib/module/web/overlays/src/useOverlayPosition.js.map +1 -1
  61. package/lib/typescript/Portal.d.ts +4 -2
  62. package/lib/typescript/Portal.d.ts.map +1 -0
  63. package/lib/typescript/index.d.ts +1 -0
  64. package/lib/typescript/index.d.ts.map +1 -0
  65. package/lib/typescript/index.web.d.ts +1 -0
  66. package/lib/typescript/index.web.d.ts.map +1 -0
  67. package/lib/typescript/useOverlay.d.ts +1 -0
  68. package/lib/typescript/useOverlay.d.ts.map +1 -0
  69. package/lib/typescript/useOverlay.web.d.ts +1 -0
  70. package/lib/typescript/useOverlay.web.d.ts.map +1 -0
  71. package/lib/typescript/useOverlayPosition.d.ts +1 -0
  72. package/lib/typescript/useOverlayPosition.d.ts.map +1 -0
  73. package/lib/typescript/useOverlayPosition.web.d.ts +1 -0
  74. package/lib/typescript/useOverlayPosition.web.d.ts.map +1 -0
  75. package/lib/typescript/useOverlayTrigger.d.ts +1 -0
  76. package/lib/typescript/useOverlayTrigger.d.ts.map +1 -0
  77. package/lib/typescript/useOverlayTrigger.web.d.ts +1 -0
  78. package/lib/typescript/useOverlayTrigger.web.d.ts.map +1 -0
  79. package/lib/typescript/usePreventScroll.d.ts +1 -0
  80. package/lib/typescript/usePreventScroll.d.ts.map +1 -0
  81. package/lib/typescript/usePreventScroll.web.d.ts +1 -0
  82. package/lib/typescript/usePreventScroll.web.d.ts.map +1 -0
  83. package/lib/typescript/utils.d.ts +1 -0
  84. package/lib/typescript/utils.d.ts.map +1 -0
  85. package/lib/typescript/web/overlays/index.d.ts +1 -0
  86. package/lib/typescript/web/overlays/index.d.ts.map +1 -0
  87. package/lib/typescript/web/overlays/src/calculatePosition.d.ts +1 -0
  88. package/lib/typescript/web/overlays/src/calculatePosition.d.ts.map +1 -0
  89. package/lib/typescript/web/overlays/src/index.d.ts +1 -0
  90. package/lib/typescript/web/overlays/src/index.d.ts.map +1 -0
  91. package/lib/typescript/web/overlays/src/useCloseOnScroll.d.ts +1 -0
  92. package/lib/typescript/web/overlays/src/useCloseOnScroll.d.ts.map +1 -0
  93. package/lib/typescript/web/overlays/src/useOverlayPosition.d.ts +1 -0
  94. package/lib/typescript/web/overlays/src/useOverlayPosition.d.ts.map +1 -0
  95. package/package.json +2 -1
  96. package/src/useOverlayPosition.ts +37 -17
  97. package/src/utils.ts +1 -0
@@ -1,5 +1,4 @@
1
1
  //@ts-nocheck
2
-
3
2
  /*
4
3
  * Copyright 2020 Adobe. All rights reserved.
5
4
  * This file is licensed to you under the Apache License, Version 2.0 (the "License");
@@ -11,14 +10,15 @@
11
10
  * OF ANY KIND, either express or implied. See the License for the specific language
12
11
  * governing permissions and limitations under the License.
13
12
  */
14
- import { useEffect } from 'react'; // This behavior moved from useOverlayTrigger to useOverlayPosition.
13
+
14
+ import { useEffect } from 'react';
15
+
16
+ // This behavior moved from useOverlayTrigger to useOverlayPosition.
15
17
  // For backward compatibility, where useOverlayTrigger handled hiding the popover on close,
16
18
  // it sets a close function here mapped from the trigger element. This way we can avoid
17
19
  // forcing users to pass an onClose function to useOverlayPosition which could be considered
18
20
  // a breaking change.
19
-
20
21
  export const onCloseMap = new WeakMap();
21
-
22
22
  /** @private */
23
23
  export function useCloseOnScroll(opts) {
24
24
  let {
@@ -30,22 +30,17 @@ export function useCloseOnScroll(opts) {
30
30
  if (!isOpen) {
31
31
  return;
32
32
  }
33
-
34
33
  let onScroll = e => {
35
34
  // Ignore if scrolling an scrollable region outside the trigger's tree.
36
35
  let target = e.target;
37
-
38
36
  if (!triggerRef.current || !target.contains(triggerRef.current)) {
39
37
  return;
40
38
  }
41
-
42
39
  let onCloseHandler = onClose || onCloseMap.get(triggerRef.current);
43
-
44
40
  if (onCloseHandler) {
45
41
  onCloseHandler();
46
42
  }
47
43
  };
48
-
49
44
  window.addEventListener('scroll', onScroll, true);
50
45
  return () => {
51
46
  window.removeEventListener('scroll', onScroll, true);
@@ -1 +1 @@
1
- {"version":3,"sources":["useCloseOnScroll.ts"],"names":["useEffect","onCloseMap","WeakMap","useCloseOnScroll","opts","triggerRef","isOpen","onClose","onScroll","e","target","current","contains","onCloseHandler","get","window","addEventListener","removeEventListener"],"mappings":"AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAAoBA,SAApB,QAAqC,OAArC,C,CAEA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,UAA4C,GAAG,IAAIC,OAAJ,EAArD;;AAQP;AACA,OAAO,SAASC,gBAAT,CAA0BC,IAA1B,EAAsD;AAC3D,MAAI;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,MAAd;AAAsBC,IAAAA;AAAtB,MAAkCH,IAAtC;AAEAJ,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI,CAACM,MAAL,EAAa;AACX;AACD;;AAED,QAAIE,QAAQ,GAAIC,CAAD,IAAmB;AAChC;AACA,UAAIC,MAAM,GAAGD,CAAC,CAACC,MAAf;;AACA,UAAI,CAACL,UAAU,CAACM,OAAZ,IAAuB,CAACD,MAAM,CAACE,QAAP,CAAgBP,UAAU,CAACM,OAA3B,CAA5B,EAAiE;AAC/D;AACD;;AAED,UAAIE,cAAc,GAAGN,OAAO,IAAIN,UAAU,CAACa,GAAX,CAAeT,UAAU,CAACM,OAA1B,CAAhC;;AACA,UAAIE,cAAJ,EAAoB;AAClBA,QAAAA,cAAc;AACf;AACF,KAXD;;AAaAE,IAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkCR,QAAlC,EAA4C,IAA5C;AACA,WAAO,MAAM;AACXO,MAAAA,MAAM,CAACE,mBAAP,CAA2B,QAA3B,EAAqCT,QAArC,EAA+C,IAA/C;AACD,KAFD;AAGD,GAtBQ,EAsBN,CAACF,MAAD,EAASC,OAAT,EAAkBF,UAAlB,CAtBM,CAAT;AAuBD","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 { RefObject, useEffect } from 'react';\n\n// This behavior moved from useOverlayTrigger to useOverlayPosition.\n// For backward compatibility, where useOverlayTrigger handled hiding the popover on close,\n// it sets a close function here mapped from the trigger element. This way we can avoid\n// forcing users to pass an onClose function to useOverlayPosition which could be considered\n// a breaking change.\nexport const onCloseMap: WeakMap<HTMLElement, () => void> = new WeakMap();\n\ninterface CloseOnScrollOptions {\n triggerRef: RefObject<HTMLElement>;\n isOpen?: boolean;\n onClose?: () => void;\n}\n\n/** @private */\nexport function useCloseOnScroll(opts: CloseOnScrollOptions) {\n let { triggerRef, isOpen, onClose } = opts;\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n let onScroll = (e: MouseEvent) => {\n // Ignore if scrolling an scrollable region outside the trigger's tree.\n let target = e.target as HTMLElement;\n if (!triggerRef.current || !target.contains(triggerRef.current)) {\n return;\n }\n\n let onCloseHandler = onClose || onCloseMap.get(triggerRef.current);\n if (onCloseHandler) {\n onCloseHandler();\n }\n };\n\n window.addEventListener('scroll', onScroll, true);\n return () => {\n window.removeEventListener('scroll', onScroll, true);\n };\n }, [isOpen, onClose, triggerRef]);\n}\n"]}
1
+ {"version":3,"names":["useEffect","onCloseMap","WeakMap","useCloseOnScroll","opts","triggerRef","isOpen","onClose","onScroll","e","target","current","contains","onCloseHandler","get","window","addEventListener","removeEventListener"],"sourceRoot":"../../../../../src","sources":["web/overlays/src/useCloseOnScroll.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAoBA,SAAS,QAAQ,OAAO;;AAE5C;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAA4C,GAAG,IAAIC,OAAO,CAAC,CAAC;AAQzE;AACA,OAAO,SAASC,gBAAgBA,CAACC,IAA0B,EAAE;EAC3D,IAAI;IAAEC,UAAU;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAGH,IAAI;EAE1CJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACM,MAAM,EAAE;MACX;IACF;IAEA,IAAIE,QAAQ,GAAIC,CAAa,IAAK;MAChC;MACA,IAAIC,MAAM,GAAGD,CAAC,CAACC,MAAqB;MACpC,IAAI,CAACL,UAAU,CAACM,OAAO,IAAI,CAACD,MAAM,CAACE,QAAQ,CAACP,UAAU,CAACM,OAAO,CAAC,EAAE;QAC/D;MACF;MAEA,IAAIE,cAAc,GAAGN,OAAO,IAAIN,UAAU,CAACa,GAAG,CAACT,UAAU,CAACM,OAAO,CAAC;MAClE,IAAIE,cAAc,EAAE;QAClBA,cAAc,CAAC,CAAC;MAClB;IACF,CAAC;IAEDE,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAER,QAAQ,EAAE,IAAI,CAAC;IACjD,OAAO,MAAM;MACXO,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAET,QAAQ,EAAE,IAAI,CAAC;IACtD,CAAC;EACH,CAAC,EAAE,CAACF,MAAM,EAAEC,OAAO,EAAEF,UAAU,CAAC,CAAC;AACnC"}
@@ -1,5 +1,4 @@
1
1
  //@ts-nocheck
2
-
3
2
  /*
4
3
  * Copyright 2020 Adobe. All rights reserved.
5
4
  * This file is licensed to you under the Apache License, Version 2.0 (the "License");
@@ -11,20 +10,20 @@
11
10
  * OF ANY KIND, either express or implied. See the License for the specific language
12
11
  * governing permissions and limitations under the License.
13
12
  */
13
+
14
14
  import { calculatePosition } from './calculatePosition';
15
15
  import { useCallback, useRef, useState } from 'react';
16
16
  import { useCloseOnScroll } from './useCloseOnScroll';
17
17
  import { isRTL, useLayoutEffect } from '@react-native-aria/utils';
18
18
  // @ts-ignore
19
19
  let visualViewport = typeof window !== 'undefined' && window.visualViewport;
20
+
20
21
  /**
21
22
  * Handles positioning overlays like popovers and menus relative to a trigger
22
23
  * element, and updating the position when the window resizes.
23
24
  */
24
-
25
25
  export function useOverlayPosition(props) {
26
26
  var _targetRef$current, _targetRef$current2;
27
-
28
27
  const direction = isRTL() ? 'rtl' : undefined;
29
28
  let {
30
29
  targetRef,
@@ -53,7 +52,6 @@ export function useOverlayPosition(props) {
53
52
  if (shouldUpdatePosition === false || !isOpen || !overlayRef.current || !targetRef.current || !scrollRef.current || !boundaryElement) {
54
53
  return;
55
54
  }
56
-
57
55
  setPosition(calculatePosition({
58
56
  placement: translateRTL(placement, direction),
59
57
  overlayNode: overlayRef.current,
@@ -66,17 +64,19 @@ export function useOverlayPosition(props) {
66
64
  crossOffset,
67
65
  shouldOverlapWithTrigger
68
66
  }));
69
- }, deps); // Update position when anything changes
67
+ }, deps);
70
68
 
71
- useLayoutEffect(updatePosition, deps); // Update position on window resize
69
+ // Update position when anything changes
70
+ useLayoutEffect(updatePosition, deps);
72
71
 
73
- useResize(updatePosition); // Reposition the overlay and do not close on scroll while the visual viewport is resizing.
74
- // This will ensure that overlays adjust their positioning when the iOS virtual keyboard appears.
72
+ // Update position on window resize
73
+ useResize(updatePosition);
75
74
 
75
+ // Reposition the overlay and do not close on scroll while the visual viewport is resizing.
76
+ // This will ensure that overlays adjust their positioning when the iOS virtual keyboard appears.
76
77
  let isResizing = useRef(false);
77
78
  useLayoutEffect(() => {
78
79
  let timeout;
79
-
80
80
  let onResize = () => {
81
81
  isResizing.current = true;
82
82
  clearTimeout(timeout);
@@ -85,24 +85,26 @@ export function useOverlayPosition(props) {
85
85
  }, 500);
86
86
  updatePosition();
87
87
  };
88
-
89
- visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.addEventListener('resize', onResize);
88
+ visualViewport === null || visualViewport === void 0 || visualViewport.addEventListener('resize', onResize);
90
89
  return () => {
91
- visualViewport === null || visualViewport === void 0 ? void 0 : visualViewport.removeEventListener('resize', onResize);
90
+ visualViewport === null || visualViewport === void 0 || visualViewport.removeEventListener('resize', onResize);
92
91
  };
93
92
  }, [updatePosition]);
94
93
  let close = useCallback(() => {
95
94
  if (!isResizing.current) {
96
95
  onClose();
97
96
  }
98
- }, [onClose, isResizing]); // When scrolling a parent scrollable region of the trigger (other than the body),
99
- // we hide the popover. Otherwise, its position would be incorrect.
97
+ }, [onClose, isResizing]);
100
98
 
99
+ // When scrolling a parent scrollable region of the trigger (other than the body),
100
+ // we hide the popover. Otherwise, its position would be incorrect.
101
101
  useCloseOnScroll({
102
102
  triggerRef: targetRef,
103
103
  isOpen,
104
104
  onClose: onClose ? close : undefined
105
- }); // useLayoutEffect(() => {
105
+ });
106
+
107
+ // useLayoutEffect(() => {
106
108
  // const mutationObserver = new MutationObserver((mutations) => {
107
109
  // updatePosition();
108
110
  // mutations.forEach((mutation) => {
@@ -119,7 +121,9 @@ export function useOverlayPosition(props) {
119
121
  // // }
120
122
  // });
121
123
  // });
124
+
122
125
  // mutationObserver.observe(overlayRef?.current, { attributes: true });
126
+
123
127
  // return () => mutationObserver.disconnect();
124
128
  // }, [overlayRef, updatePosition]);
125
129
 
@@ -144,7 +148,6 @@ export function useOverlayPosition(props) {
144
148
  updatePosition
145
149
  };
146
150
  }
147
-
148
151
  function useResize(onResize) {
149
152
  useLayoutEffect(() => {
150
153
  window.addEventListener('resize', onResize, false);
@@ -153,12 +156,10 @@ function useResize(onResize) {
153
156
  };
154
157
  }, [onResize]);
155
158
  }
156
-
157
159
  function translateRTL(position, direction) {
158
160
  if (direction === 'rtl') {
159
161
  return position.replace('start', 'right').replace('end', 'left');
160
162
  }
161
-
162
163
  return position.replace('start', 'left').replace('end', 'right');
163
164
  }
164
165
  //# sourceMappingURL=useOverlayPosition.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["useOverlayPosition.ts"],"names":["calculatePosition","useCallback","useRef","useState","useCloseOnScroll","isRTL","useLayoutEffect","visualViewport","window","useOverlayPosition","props","direction","undefined","targetRef","overlayRef","scrollRef","placement","containerPadding","shouldFlip","boundaryElement","document","body","offset","crossOffset","shouldUpdatePosition","isOpen","shouldOverlapWithTrigger","onClose","position","setPosition","arrowOffsetLeft","arrowOffsetTop","maxHeight","deps","current","offsetLeft","offsetTop","updatePosition","translateRTL","overlayNode","targetNode","scrollNode","padding","useResize","isResizing","timeout","onResize","clearTimeout","setTimeout","addEventListener","removeEventListener","close","triggerRef","rendered","overlayProps","style","zIndex","arrowProps","left","top","replace"],"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 { calculatePosition, PositionResult } from './calculatePosition';\nimport {\n HTMLAttributes,\n RefObject,\n useCallback,\n useRef,\n useState,\n} from 'react';\nimport { Placement, PlacementAxis, PositionProps } from '@react-types/overlays';\nimport { useCloseOnScroll } from './useCloseOnScroll';\nimport { isRTL, useLayoutEffect } from '@react-native-aria/utils';\n\ninterface AriaPositionProps extends PositionProps {\n /**\n * Element that that serves as the positioning boundary.\n * @default document.body\n */\n boundaryElement?: HTMLElement;\n /**\n * The ref for the element which the overlay positions itself with respect to.\n */\n targetRef: RefObject<HTMLElement>;\n /**\n * The ref for the overlay element.\n */\n overlayRef: RefObject<HTMLElement>;\n /**\n * A ref for the scrollable region within the overlay.\n * @default overlayRef\n */\n scrollRef?: RefObject<HTMLElement>;\n /**\n * Whether the overlay should update its position automatically.\n * @default true\n */\n shouldUpdatePosition?: boolean;\n /** Handler that is called when the overlay should close. */\n onClose?: () => void;\n /** Determines whether the overlay should overlap with the trigger */\n shouldOverlapWithTrigger?: boolean;\n}\n\ninterface PositionAria {\n /** Props for the overlay container element. */\n overlayProps: HTMLAttributes<Element>;\n /** Props for the overlay tip arrow if any. */\n arrowProps: HTMLAttributes<Element>;\n /** Placement of the overlay with respect to the overlay trigger. */\n placement: PlacementAxis;\n /** Updates the position of the overlay. */\n updatePosition(): void;\n}\n\n// @ts-ignore\nlet visualViewport = typeof window !== 'undefined' && window.visualViewport;\n\n/**\n * Handles positioning overlays like popovers and menus relative to a trigger\n * element, and updating the position when the window resizes.\n */\nexport function useOverlayPosition(props: AriaPositionProps): PositionAria {\n const direction = isRTL() ? 'rtl' : undefined;\n let {\n targetRef,\n overlayRef,\n scrollRef = overlayRef,\n placement = 'bottom' as Placement,\n containerPadding = 12,\n shouldFlip = true,\n boundaryElement = typeof document !== 'undefined' ? document.body : null,\n offset = 0,\n crossOffset = 0,\n shouldUpdatePosition = true,\n isOpen = true,\n shouldOverlapWithTrigger = false,\n onClose,\n } = props;\n let [position, setPosition] = useState<PositionResult>({\n position: {},\n arrowOffsetLeft: undefined,\n arrowOffsetTop: undefined,\n maxHeight: undefined,\n placement: undefined,\n });\n\n let deps = [\n shouldUpdatePosition,\n placement,\n overlayRef.current,\n targetRef.current?.offsetLeft,\n targetRef.current?.offsetTop,\n scrollRef.current,\n containerPadding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n isOpen,\n direction,\n shouldOverlapWithTrigger,\n ];\n\n let updatePosition = useCallback(() => {\n if (\n shouldUpdatePosition === false ||\n !isOpen ||\n !overlayRef.current ||\n !targetRef.current ||\n !scrollRef.current ||\n !boundaryElement\n ) {\n return;\n }\n\n setPosition(\n calculatePosition({\n placement: translateRTL(placement, direction),\n overlayNode: overlayRef.current,\n targetNode: targetRef.current,\n scrollNode: scrollRef.current,\n padding: containerPadding,\n shouldFlip,\n boundaryElement,\n offset,\n crossOffset,\n shouldOverlapWithTrigger,\n })\n );\n }, deps);\n\n // Update position when anything changes\n useLayoutEffect(updatePosition, deps);\n\n // Update position on window resize\n useResize(updatePosition);\n\n // Reposition the overlay and do not close on scroll while the visual viewport is resizing.\n // This will ensure that overlays adjust their positioning when the iOS virtual keyboard appears.\n let isResizing = useRef(false);\n useLayoutEffect(() => {\n let timeout: NodeJS.Timeout;\n let onResize = () => {\n isResizing.current = true;\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n isResizing.current = false;\n }, 500);\n\n updatePosition();\n };\n\n visualViewport?.addEventListener('resize', onResize);\n\n return () => {\n visualViewport?.removeEventListener('resize', onResize);\n };\n }, [updatePosition]);\n\n let close = useCallback(() => {\n if (!isResizing.current) {\n onClose();\n }\n }, [onClose, isResizing]);\n\n // When scrolling a parent scrollable region of the trigger (other than the body),\n // we hide the popover. Otherwise, its position would be incorrect.\n useCloseOnScroll({\n triggerRef: targetRef,\n isOpen,\n onClose: onClose ? close : undefined,\n });\n\n // useLayoutEffect(() => {\n // const mutationObserver = new MutationObserver((mutations) => {\n // updatePosition();\n // mutations.forEach((mutation) => {\n // // if (mutation.attributeName === 'style') {\n // // const transform = mutation.target.style.transform;\n // // if (transform) {\n // // const match = transform.match(/scale\\((.+)\\)/);\n // // if (match) {\n // // const scale = parseFloat(match[1]);\n // // console.log(`Scale: ${scale}`);\n // // // updatePosition();\n // // }\n // // }\n // // }\n // });\n // });\n\n // mutationObserver.observe(overlayRef?.current, { attributes: true });\n\n // return () => mutationObserver.disconnect();\n // }, [overlayRef, updatePosition]);\n\n return {\n rendered: true,\n overlayProps: {\n style: {\n position: 'absolute',\n zIndex: 100000, // should match the z-index in ModalTrigger\n ...position.position,\n maxHeight: position.maxHeight,\n },\n },\n placement: position.placement,\n arrowProps: {\n style: {\n left: position.arrowOffsetLeft,\n top: position.arrowOffsetTop,\n },\n },\n updatePosition,\n };\n}\n\nfunction useResize(onResize) {\n useLayoutEffect(() => {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }, [onResize]);\n}\n\nfunction translateRTL(position, direction) {\n if (direction === 'rtl') {\n return position.replace('start', 'right').replace('end', 'left');\n }\n return position.replace('start', 'left').replace('end', 'right');\n}\n"]}
1
+ {"version":3,"names":["calculatePosition","useCallback","useRef","useState","useCloseOnScroll","isRTL","useLayoutEffect","visualViewport","window","useOverlayPosition","props","_targetRef$current","_targetRef$current2","direction","undefined","targetRef","overlayRef","scrollRef","placement","containerPadding","shouldFlip","boundaryElement","document","body","offset","crossOffset","shouldUpdatePosition","isOpen","shouldOverlapWithTrigger","onClose","position","setPosition","arrowOffsetLeft","arrowOffsetTop","maxHeight","deps","current","offsetLeft","offsetTop","updatePosition","translateRTL","overlayNode","targetNode","scrollNode","padding","useResize","isResizing","timeout","onResize","clearTimeout","setTimeout","addEventListener","removeEventListener","close","triggerRef","rendered","overlayProps","style","zIndex","arrowProps","left","top","replace"],"sourceRoot":"../../../../../src","sources":["web/overlays/src/useOverlayPosition.ts"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import type { ReactNode } from 'react';
2
3
  import { ViewProps } from 'react-native';
3
4
  interface ModalProviderProps extends ViewProps {
@@ -7,7 +8,8 @@ interface ModalProviderProps extends ViewProps {
7
8
  export declare function PortalProvider(props: {
8
9
  children: ReactNode;
9
10
  isSSR?: boolean;
10
- }): JSX.Element;
11
+ }): React.JSX.Element;
11
12
  export declare const OverlayProvider: typeof PortalProvider;
12
- export declare function OverlayContainer(props: ModalProviderProps): JSX.Element;
13
+ export declare function OverlayContainer(props: ModalProviderProps): React.JSX.Element;
13
14
  export {};
15
+ //# sourceMappingURL=Portal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Portal.d.ts","sourceRoot":"","sources":["../../src/Portal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAe3D,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,qBAmDA;AAaD,eAAO,MAAM,eAAe,uBAAiB,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,qBAoCzD"}
@@ -3,3 +3,4 @@ export * from './useOverlayTrigger';
3
3
  export * from './Portal';
4
4
  export * from './useOverlay';
5
5
  export * from './usePreventScroll';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC"}
@@ -3,3 +3,4 @@ export * from './useOverlayTrigger.web';
3
3
  export * from './Portal';
4
4
  export * from './useOverlay.web';
5
5
  export * from './usePreventScroll.web';
6
+ //# sourceMappingURL=index.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../src/index.web.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
@@ -35,3 +35,4 @@ interface OverlayAria {
35
35
  */
36
36
  export declare function useOverlay(_props: OverlayProps, _ref: RefObject<HTMLElement>): OverlayAria;
37
37
  export {};
38
+ //# sourceMappingURL=useOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlay.d.ts","sourceRoot":"","sources":["../../src/useOverlay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,UAAU,YAAY;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;;;OAKG;IACH,4BAA4B,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;CAClE;AAED,UAAU,WAAW;IACnB,uDAAuD;IACvD,YAAY,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CAC3C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,GAC3B,WAAW,CAIb"}
@@ -35,3 +35,4 @@ interface OverlayAria {
35
35
  */
36
36
  export declare function useOverlay(props: OverlayProps, ref: RefObject<HTMLElement>): OverlayAria;
37
37
  export {};
38
+ //# sourceMappingURL=useOverlay.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlay.web.d.ts","sourceRoot":"","sources":["../../src/useOverlay.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAG7D,UAAU,YAAY;IACpB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;;;OAKG;IACH,4BAA4B,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;CAClE;AAED,UAAU,WAAW;IACnB,uDAAuD;IACvD,YAAY,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CAC3C;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,SAAS,CAAC,WAAW,CAAC,GAC1B,WAAW,CAoDb"}
@@ -69,3 +69,4 @@ interface Position {
69
69
  right?: number;
70
70
  }
71
71
  export {};
72
+ //# sourceMappingURL=useOverlayPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayPosition.d.ts","sourceRoot":"","sources":["../../src/useOverlayPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMzC,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAwBtE,UAAU,iBAAkB,SAAQ,aAAa;IAC/C;;;OAGG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B;;OAEG;IACH,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAmCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;EA8G1D;AASD,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAiBD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,aAAa,GAAG,SAAS,CAAC;CACtC;AA0TD,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1,2 @@
1
1
  export { useOverlayPosition } from './web/overlays/src/useOverlayPosition';
2
+ //# sourceMappingURL=useOverlayPosition.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayPosition.web.d.ts","sourceRoot":"","sources":["../../src/useOverlayPosition.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC"}
@@ -16,3 +16,4 @@ interface OverlayTriggerAria {
16
16
  */
17
17
  export declare function useOverlayTrigger(_props: OverlayTriggerProps, state: OverlayTriggerState, _ref: RefObject<HTMLElement>): OverlayTriggerAria;
18
18
  export {};
19
+ //# sourceMappingURL=useOverlayTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayTrigger.d.ts","sourceRoot":"","sources":["../../src/useOverlayTrigger.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,UAAU,mBAAmB;IAC3B,qDAAqD;IACrD,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;CACvD;AAED,UAAU,kBAAkB;IAC1B,qCAAqC;IACrC,YAAY,EAAE,GAAG,CAAC;IAElB,+CAA+C;IAC/C,YAAY,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAC3B,KAAK,EAAE,mBAAmB,EAC1B,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,GAC3B,kBAAkB,CAOpB"}
@@ -1 +1,2 @@
1
1
  export { useOverlayTrigger } from '@react-aria/overlays';
2
+ //# sourceMappingURL=useOverlayTrigger.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayTrigger.web.d.ts","sourceRoot":"","sources":["../../src/useOverlayTrigger.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -4,3 +4,4 @@ interface PreventScrollOptions {
4
4
  }
5
5
  export declare const usePreventScroll: (_options?: PreventScrollOptions) => void;
6
6
  export {};
7
+ //# sourceMappingURL=usePreventScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreventScroll.d.ts","sourceRoot":"","sources":["../../src/usePreventScroll.ts"],"names":[],"mappings":"AAAA,UAAU,oBAAoB;IAC5B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAGD,eAAO,MAAM,gBAAgB,cAAc,oBAAoB,SAAY,CAAC"}
@@ -1 +1,2 @@
1
1
  export { usePreventScroll } from '@react-aria/overlays';
2
+ //# sourceMappingURL=usePreventScroll.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreventScroll.web.d.ts","sourceRoot":"","sources":["../../src/usePreventScroll.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1,2 @@
1
1
  export declare const APPROX_STATUSBAR_HEIGHT: number;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,uBAAuB,QAWlC,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from './src';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/web/overlays/index.ts"],"names":[],"mappings":"AAYA,cAAc,OAAO,CAAC"}
@@ -43,3 +43,4 @@ export declare function calculatePositionInternal(placementInput: Placement, chi
43
43
  */
44
44
  export declare function calculatePosition(opts: PositionOpts): PositionResult;
45
45
  export {};
46
+ //# sourceMappingURL=calculatePosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculatePosition.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/calculatePosition.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,SAAS,EACT,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAS/B,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;CAClB;AAWD,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,YAAY;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,WAAW,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAmQD,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,SAAS,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,kBAAkB,EAAE,UAAU,EAC9B,2BAA2B,EAAE,MAAM,EACnC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,OAAO,EAC9B,wBAAwB,EAAE,OAAO,GAChC,cAAc,CAsHhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAiFpE"}
@@ -1 +1,2 @@
1
1
  export * from './useOverlayPosition';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/index.ts"],"names":[],"mappings":"AAYA,cAAc,sBAAsB,CAAC"}
@@ -8,3 +8,4 @@ interface CloseOnScrollOptions {
8
8
  /** @private */
9
9
  export declare function useCloseOnScroll(opts: CloseOnScrollOptions): void;
10
10
  export {};
11
+ //# sourceMappingURL=useCloseOnScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCloseOnScroll.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/useCloseOnScroll.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAO7C,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAiB,CAAC;AAE1E,UAAU,oBAAoB;IAC5B,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAe;AACf,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,QA0B1D"}
@@ -45,3 +45,4 @@ interface PositionAria {
45
45
  */
46
46
  export declare function useOverlayPosition(props: AriaPositionProps): PositionAria;
47
47
  export {};
48
+ //# sourceMappingURL=useOverlayPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayPosition.d.ts","sourceRoot":"","sources":["../../../../../src/web/overlays/src/useOverlayPosition.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,cAAc,EACd,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAa,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAIhF,UAAU,iBAAkB,SAAQ,aAAa;IAC/C;;;OAGG;IACH,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,UAAU,YAAY;IACpB,+CAA+C;IAC/C,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,8CAA8C;IAC9C,UAAU,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,oEAAoE;IACpE,SAAS,EAAE,aAAa,CAAC;IACzB,2CAA2C;IAC3C,cAAc,IAAI,IAAI,CAAC;CACxB;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,CA2JzE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-native-aria/overlays",
3
- "version": "0.3.10",
3
+ "version": "0.3.11-alpha.0",
4
4
  "description": "Overlay utilities. Part of react-native-aria",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -25,6 +25,7 @@
25
25
  "test": "jest",
26
26
  "typescript": "tsc --noEmit",
27
27
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
28
+ "build": "bob build",
28
29
  "prepare": "bob build",
29
30
  "release": "release-it",
30
31
  "example": "yarn --cwd example",
@@ -66,6 +66,32 @@ type IMeasureResult = {
66
66
  width: number;
67
67
  };
68
68
 
69
+ const getArrowPropsWithStatusBarHeight = ({
70
+ top,
71
+ left,
72
+ }: {
73
+ top: number;
74
+ left: number;
75
+ }) => {
76
+ let topWithStatusBarHeight = top;
77
+
78
+ if (
79
+ typeof top !== 'undefined' &&
80
+ typeof APPROX_STATUSBAR_HEIGHT !== 'undefined'
81
+ ) {
82
+ topWithStatusBarHeight = top + APPROX_STATUSBAR_HEIGHT;
83
+ } else {
84
+ topWithStatusBarHeight = undefined;
85
+ }
86
+
87
+ return {
88
+ style: {
89
+ left: left,
90
+ top: topWithStatusBarHeight,
91
+ },
92
+ };
93
+ };
94
+
69
95
  export function useOverlayPosition(props: AriaPositionProps) {
70
96
  let {
71
97
  targetRef,
@@ -106,9 +132,8 @@ export function useOverlayPosition(props: AriaPositionProps) {
106
132
  return;
107
133
  }
108
134
 
109
- const { height: windowHeight, width: windowWidth } = Dimensions.get(
110
- 'window'
111
- );
135
+ const { height: windowHeight, width: windowWidth } =
136
+ Dimensions.get('window');
112
137
 
113
138
  const positions = calculatePosition({
114
139
  placement: translateRTL(placement),
@@ -138,6 +163,7 @@ export function useOverlayPosition(props: AriaPositionProps) {
138
163
 
139
164
  React.useLayoutEffect(() => {
140
165
  updatePosition();
166
+ // eslint-disable-next-line react-hooks/exhaustive-deps
141
167
  }, [
142
168
  placement,
143
169
  isOpen,
@@ -155,18 +181,18 @@ export function useOverlayPosition(props: AriaPositionProps) {
155
181
  style.top = (position?.position?.top || 0) + (APPROX_STATUSBAR_HEIGHT || 0);
156
182
  }
157
183
 
184
+ const arrowPropsWithStatusBarHeight = getArrowPropsWithStatusBarHeight({
185
+ left: position?.arrowOffsetLeft,
186
+ top: position?.arrowOffsetTop,
187
+ });
188
+
158
189
  const returnProps = {
159
190
  rendered,
160
191
  overlayProps: {
161
192
  style,
162
193
  },
163
194
  placement: position.placement,
164
- arrowProps: {
165
- style: {
166
- left: position.arrowOffsetLeft,
167
- top: (position?.arrowOffsetTop || 0) + (APPROX_STATUSBAR_HEIGHT || 0),
168
- },
169
- },
195
+ arrowProps: arrowPropsWithStatusBarHeight,
170
196
  updatePosition,
171
197
  };
172
198
 
@@ -438,14 +464,8 @@ function computePosition(
438
464
  _containerOffsetWithBoundary: Offset,
439
465
  _isContainerPositioned: boolean
440
466
  ) {
441
- let {
442
- placement,
443
- crossPlacement,
444
- axis,
445
- crossAxis,
446
- size,
447
- crossSize,
448
- } = placementInfo;
467
+ let { placement, crossPlacement, axis, crossAxis, size, crossSize } =
468
+ placementInfo;
449
469
  let position: any = {};
450
470
  //@ts-ignore
451
471
  position[crossAxis] = childOffset[crossAxis];
package/src/utils.ts CHANGED
@@ -15,6 +15,7 @@ export const APPROX_STATUSBAR_HEIGHT = Platform.select({
15
15
  ? DEFAULT_STATUSBAR_HEIGHT_EXPO
16
16
  : StatusBar.currentHeight,
17
17
  ios:
18
+ // @ts-ignore
18
19
  Platform.Version < 11
19
20
  ? DEFAULT_STATUSBAR_HEIGHT_EXPO
20
21
  ? DEFAULT_STATUSBAR_HEIGHT_EXPO