@cdx-ui/primitives 0.0.1-beta.159 → 0.0.1-beta.160

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 (233) hide show
  1. package/lib/commonjs/dialog/DialogContent.js +17 -3
  2. package/lib/commonjs/dialog/DialogContent.js.map +1 -1
  3. package/lib/commonjs/dialog/DialogPopup.js +5 -1
  4. package/lib/commonjs/dialog/DialogPopup.js.map +1 -1
  5. package/lib/commonjs/index.js +54 -0
  6. package/lib/commonjs/index.js.map +1 -1
  7. package/lib/commonjs/menu/MenuCheckboxItem.js +42 -0
  8. package/lib/commonjs/menu/MenuCheckboxItem.js.map +1 -0
  9. package/lib/commonjs/menu/MenuItem.js +142 -0
  10. package/lib/commonjs/menu/MenuItem.js.map +1 -0
  11. package/lib/commonjs/menu/MenuOverlayRoot.js +80 -0
  12. package/lib/commonjs/menu/MenuOverlayRoot.js.map +1 -0
  13. package/lib/commonjs/menu/MenuPopup.js +78 -0
  14. package/lib/commonjs/menu/MenuPopup.js.map +1 -0
  15. package/lib/commonjs/menu/MenuRadioGroup.js +48 -0
  16. package/lib/commonjs/menu/MenuRadioGroup.js.map +1 -0
  17. package/lib/commonjs/menu/MenuRadioItem.js +32 -0
  18. package/lib/commonjs/menu/MenuRadioItem.js.map +1 -0
  19. package/lib/commonjs/menu/MenuRoot.js +139 -0
  20. package/lib/commonjs/menu/MenuRoot.js.map +1 -0
  21. package/lib/commonjs/menu/MenuTrigger.js +59 -0
  22. package/lib/commonjs/menu/MenuTrigger.js.map +1 -0
  23. package/lib/commonjs/menu/context.js +36 -0
  24. package/lib/commonjs/menu/context.js.map +1 -0
  25. package/lib/commonjs/menu/index.js +118 -0
  26. package/lib/commonjs/menu/index.js.map +1 -0
  27. package/lib/commonjs/menu/overlayContext.js +30 -0
  28. package/lib/commonjs/menu/overlayContext.js.map +1 -0
  29. package/lib/commonjs/menu/types.js +6 -0
  30. package/lib/commonjs/menu/types.js.map +1 -0
  31. package/lib/commonjs/menu/useMenuNavigation.js +87 -0
  32. package/lib/commonjs/menu/useMenuNavigation.js.map +1 -0
  33. package/lib/commonjs/menu/useMenuOverlayLifecycle.js +68 -0
  34. package/lib/commonjs/menu/useMenuOverlayLifecycle.js.map +1 -0
  35. package/lib/commonjs/menu/useMenuTrigger.js +115 -0
  36. package/lib/commonjs/menu/useMenuTrigger.js.map +1 -0
  37. package/lib/commonjs/overlay/OverlayContainer.js +2 -3
  38. package/lib/commonjs/overlay/OverlayContainer.js.map +1 -1
  39. package/lib/commonjs/overlay/OverlayStack.js +125 -0
  40. package/lib/commonjs/overlay/OverlayStack.js.map +1 -0
  41. package/lib/commonjs/overlay/constants.js +7 -1
  42. package/lib/commonjs/overlay/constants.js.map +1 -1
  43. package/lib/commonjs/overlay/getAnchoredOverlayPosition.js +188 -0
  44. package/lib/commonjs/overlay/getAnchoredOverlayPosition.js.map +1 -0
  45. package/lib/commonjs/overlay/index.js +39 -0
  46. package/lib/commonjs/overlay/index.js.map +1 -1
  47. package/lib/commonjs/overlay/useAnchoredOverlay.js +127 -0
  48. package/lib/commonjs/overlay/useAnchoredOverlay.js.map +1 -0
  49. package/lib/commonjs/overlay/useDismissOverlay.js +8 -1
  50. package/lib/commonjs/overlay/useDismissOverlay.js.map +1 -1
  51. package/lib/commonjs/overlay/useDismissOverlay.web.js +11 -3
  52. package/lib/commonjs/overlay/useDismissOverlay.web.js.map +1 -1
  53. package/lib/commonjs/overlay/useEscapeKey.js +8 -1
  54. package/lib/commonjs/overlay/useEscapeKey.js.map +1 -1
  55. package/lib/commonjs/overlay/useEscapeKey.web.js +11 -3
  56. package/lib/commonjs/overlay/useEscapeKey.web.js.map +1 -1
  57. package/lib/commonjs/overlay/useOverlayPosition.js +16 -7
  58. package/lib/commonjs/overlay/useOverlayPosition.js.map +1 -1
  59. package/lib/commonjs/portal/portal.js +86 -63
  60. package/lib/commonjs/portal/portal.js.map +1 -1
  61. package/lib/commonjs/select/SelectContent.js +23 -11
  62. package/lib/commonjs/select/SelectContent.js.map +1 -1
  63. package/lib/commonjs/select/useListboxNavigation.js +10 -11
  64. package/lib/commonjs/select/useListboxNavigation.js.map +1 -1
  65. package/lib/commonjs/tooltip/TooltipContent.js +25 -24
  66. package/lib/commonjs/tooltip/TooltipContent.js.map +1 -1
  67. package/lib/commonjs/tooltip/getTooltipPosition.js +37 -84
  68. package/lib/commonjs/tooltip/getTooltipPosition.js.map +1 -1
  69. package/lib/module/dialog/DialogContent.js +18 -4
  70. package/lib/module/dialog/DialogContent.js.map +1 -1
  71. package/lib/module/dialog/DialogPopup.js +5 -1
  72. package/lib/module/dialog/DialogPopup.js.map +1 -1
  73. package/lib/module/index.js +2 -1
  74. package/lib/module/index.js.map +1 -1
  75. package/lib/module/menu/MenuCheckboxItem.js +38 -0
  76. package/lib/module/menu/MenuCheckboxItem.js.map +1 -0
  77. package/lib/module/menu/MenuItem.js +138 -0
  78. package/lib/module/menu/MenuItem.js.map +1 -0
  79. package/lib/module/menu/MenuOverlayRoot.js +76 -0
  80. package/lib/module/menu/MenuOverlayRoot.js.map +1 -0
  81. package/lib/module/menu/MenuPopup.js +74 -0
  82. package/lib/module/menu/MenuPopup.js.map +1 -0
  83. package/lib/module/menu/MenuRadioGroup.js +44 -0
  84. package/lib/module/menu/MenuRadioGroup.js.map +1 -0
  85. package/lib/module/menu/MenuRadioItem.js +28 -0
  86. package/lib/module/menu/MenuRadioItem.js.map +1 -0
  87. package/lib/module/menu/MenuRoot.js +135 -0
  88. package/lib/module/menu/MenuRoot.js.map +1 -0
  89. package/lib/module/menu/MenuTrigger.js +55 -0
  90. package/lib/module/menu/MenuTrigger.js.map +1 -0
  91. package/lib/module/menu/context.js +27 -0
  92. package/lib/module/menu/context.js.map +1 -0
  93. package/lib/module/menu/index.js +13 -0
  94. package/lib/module/menu/index.js.map +1 -0
  95. package/lib/module/menu/overlayContext.js +24 -0
  96. package/lib/module/menu/overlayContext.js.map +1 -0
  97. package/lib/module/menu/types.js +4 -0
  98. package/lib/module/menu/types.js.map +1 -0
  99. package/lib/module/menu/useMenuNavigation.js +84 -0
  100. package/lib/module/menu/useMenuNavigation.js.map +1 -0
  101. package/lib/module/menu/useMenuOverlayLifecycle.js +63 -0
  102. package/lib/module/menu/useMenuOverlayLifecycle.js.map +1 -0
  103. package/lib/module/menu/useMenuTrigger.js +111 -0
  104. package/lib/module/menu/useMenuTrigger.js.map +1 -0
  105. package/lib/module/overlay/OverlayContainer.js +2 -3
  106. package/lib/module/overlay/OverlayContainer.js.map +1 -1
  107. package/lib/module/overlay/OverlayStack.js +119 -0
  108. package/lib/module/overlay/OverlayStack.js.map +1 -0
  109. package/lib/module/overlay/constants.js +6 -0
  110. package/lib/module/overlay/constants.js.map +1 -1
  111. package/lib/module/overlay/getAnchoredOverlayPosition.js +183 -0
  112. package/lib/module/overlay/getAnchoredOverlayPosition.js.map +1 -0
  113. package/lib/module/overlay/index.js +4 -1
  114. package/lib/module/overlay/index.js.map +1 -1
  115. package/lib/module/overlay/useAnchoredOverlay.js +123 -0
  116. package/lib/module/overlay/useAnchoredOverlay.js.map +1 -0
  117. package/lib/module/overlay/useDismissOverlay.js +9 -1
  118. package/lib/module/overlay/useDismissOverlay.js.map +1 -1
  119. package/lib/module/overlay/useDismissOverlay.web.js +11 -3
  120. package/lib/module/overlay/useDismissOverlay.web.js.map +1 -1
  121. package/lib/module/overlay/useEscapeKey.js +9 -1
  122. package/lib/module/overlay/useEscapeKey.js.map +1 -1
  123. package/lib/module/overlay/useEscapeKey.web.js +11 -3
  124. package/lib/module/overlay/useEscapeKey.web.js.map +1 -1
  125. package/lib/module/overlay/useOverlayPosition.js +16 -7
  126. package/lib/module/overlay/useOverlayPosition.js.map +1 -1
  127. package/lib/module/portal/portal.js +86 -64
  128. package/lib/module/portal/portal.js.map +1 -1
  129. package/lib/module/select/SelectContent.js +25 -13
  130. package/lib/module/select/SelectContent.js.map +1 -1
  131. package/lib/module/select/useListboxNavigation.js +10 -11
  132. package/lib/module/select/useListboxNavigation.js.map +1 -1
  133. package/lib/module/tooltip/TooltipContent.js +30 -29
  134. package/lib/module/tooltip/TooltipContent.js.map +1 -1
  135. package/lib/module/tooltip/getTooltipPosition.js +37 -84
  136. package/lib/module/tooltip/getTooltipPosition.js.map +1 -1
  137. package/lib/typescript/dialog/DialogContent.d.ts.map +1 -1
  138. package/lib/typescript/dialog/DialogPopup.d.ts.map +1 -1
  139. package/lib/typescript/index.d.ts +2 -1
  140. package/lib/typescript/index.d.ts.map +1 -1
  141. package/lib/typescript/menu/MenuCheckboxItem.d.ts +6 -0
  142. package/lib/typescript/menu/MenuCheckboxItem.d.ts.map +1 -0
  143. package/lib/typescript/menu/MenuItem.d.ts +8 -0
  144. package/lib/typescript/menu/MenuItem.d.ts.map +1 -0
  145. package/lib/typescript/menu/MenuOverlayRoot.d.ts +8 -0
  146. package/lib/typescript/menu/MenuOverlayRoot.d.ts.map +1 -0
  147. package/lib/typescript/menu/MenuPopup.d.ts +8 -0
  148. package/lib/typescript/menu/MenuPopup.d.ts.map +1 -0
  149. package/lib/typescript/menu/MenuRadioGroup.d.ts +8 -0
  150. package/lib/typescript/menu/MenuRadioGroup.d.ts.map +1 -0
  151. package/lib/typescript/menu/MenuRadioItem.d.ts +6 -0
  152. package/lib/typescript/menu/MenuRadioItem.d.ts.map +1 -0
  153. package/lib/typescript/menu/MenuRoot.d.ts +8 -0
  154. package/lib/typescript/menu/MenuRoot.d.ts.map +1 -0
  155. package/lib/typescript/menu/MenuTrigger.d.ts +7 -0
  156. package/lib/typescript/menu/MenuTrigger.d.ts.map +1 -0
  157. package/lib/typescript/menu/context.d.ts +15 -0
  158. package/lib/typescript/menu/context.d.ts.map +1 -0
  159. package/lib/typescript/menu/index.d.ts +12 -0
  160. package/lib/typescript/menu/index.d.ts.map +1 -0
  161. package/lib/typescript/menu/overlayContext.d.ts +35 -0
  162. package/lib/typescript/menu/overlayContext.d.ts.map +1 -0
  163. package/lib/typescript/menu/types.d.ts +104 -0
  164. package/lib/typescript/menu/types.d.ts.map +1 -0
  165. package/lib/typescript/menu/useMenuNavigation.d.ts +16 -0
  166. package/lib/typescript/menu/useMenuNavigation.d.ts.map +1 -0
  167. package/lib/typescript/menu/useMenuOverlayLifecycle.d.ts +15 -0
  168. package/lib/typescript/menu/useMenuOverlayLifecycle.d.ts.map +1 -0
  169. package/lib/typescript/menu/useMenuTrigger.d.ts +35 -0
  170. package/lib/typescript/menu/useMenuTrigger.d.ts.map +1 -0
  171. package/lib/typescript/overlay/OverlayContainer.d.ts.map +1 -1
  172. package/lib/typescript/overlay/OverlayStack.d.ts +46 -0
  173. package/lib/typescript/overlay/OverlayStack.d.ts.map +1 -0
  174. package/lib/typescript/overlay/constants.d.ts +5 -0
  175. package/lib/typescript/overlay/constants.d.ts.map +1 -1
  176. package/lib/typescript/overlay/getAnchoredOverlayPosition.d.ts +45 -0
  177. package/lib/typescript/overlay/getAnchoredOverlayPosition.d.ts.map +1 -0
  178. package/lib/typescript/overlay/index.d.ts +5 -2
  179. package/lib/typescript/overlay/index.d.ts.map +1 -1
  180. package/lib/typescript/overlay/useAnchoredOverlay.d.ts +15 -0
  181. package/lib/typescript/overlay/useAnchoredOverlay.d.ts.map +1 -0
  182. package/lib/typescript/overlay/useDismissOverlay.d.ts +2 -1
  183. package/lib/typescript/overlay/useDismissOverlay.d.ts.map +1 -1
  184. package/lib/typescript/overlay/useDismissOverlay.web.d.ts +2 -1
  185. package/lib/typescript/overlay/useDismissOverlay.web.d.ts.map +1 -1
  186. package/lib/typescript/overlay/useEscapeKey.d.ts +2 -1
  187. package/lib/typescript/overlay/useEscapeKey.d.ts.map +1 -1
  188. package/lib/typescript/overlay/useEscapeKey.web.d.ts +2 -1
  189. package/lib/typescript/overlay/useEscapeKey.web.d.ts.map +1 -1
  190. package/lib/typescript/overlay/useOverlayPosition.d.ts +5 -1
  191. package/lib/typescript/overlay/useOverlayPosition.d.ts.map +1 -1
  192. package/lib/typescript/portal/portal.d.ts +3 -0
  193. package/lib/typescript/portal/portal.d.ts.map +1 -1
  194. package/lib/typescript/select/SelectContent.d.ts.map +1 -1
  195. package/lib/typescript/select/useListboxNavigation.d.ts.map +1 -1
  196. package/lib/typescript/tooltip/TooltipContent.d.ts.map +1 -1
  197. package/lib/typescript/tooltip/getTooltipPosition.d.ts +6 -8
  198. package/lib/typescript/tooltip/getTooltipPosition.d.ts.map +1 -1
  199. package/package.json +3 -3
  200. package/src/dialog/DialogContent.tsx +16 -4
  201. package/src/dialog/DialogPopup.tsx +5 -1
  202. package/src/index.ts +23 -0
  203. package/src/menu/MenuCheckboxItem.tsx +51 -0
  204. package/src/menu/MenuItem.tsx +197 -0
  205. package/src/menu/MenuOverlayRoot.tsx +100 -0
  206. package/src/menu/MenuPopup.tsx +81 -0
  207. package/src/menu/MenuRadioGroup.tsx +48 -0
  208. package/src/menu/MenuRadioItem.tsx +32 -0
  209. package/src/menu/MenuRoot.tsx +190 -0
  210. package/src/menu/MenuTrigger.tsx +57 -0
  211. package/src/menu/context.tsx +38 -0
  212. package/src/menu/index.ts +36 -0
  213. package/src/menu/overlayContext.tsx +61 -0
  214. package/src/menu/types.ts +119 -0
  215. package/src/menu/useMenuNavigation.ts +102 -0
  216. package/src/menu/useMenuOverlayLifecycle.ts +77 -0
  217. package/src/menu/useMenuTrigger.ts +161 -0
  218. package/src/overlay/OverlayContainer.tsx +3 -1
  219. package/src/overlay/OverlayStack.tsx +202 -0
  220. package/src/overlay/constants.ts +6 -0
  221. package/src/overlay/getAnchoredOverlayPosition.ts +326 -0
  222. package/src/overlay/index.ts +29 -1
  223. package/src/overlay/useAnchoredOverlay.ts +153 -0
  224. package/src/overlay/useDismissOverlay.ts +10 -2
  225. package/src/overlay/useDismissOverlay.web.ts +9 -2
  226. package/src/overlay/useEscapeKey.ts +13 -1
  227. package/src/overlay/useEscapeKey.web.ts +13 -3
  228. package/src/overlay/useOverlayPosition.ts +35 -8
  229. package/src/portal/portal.tsx +109 -69
  230. package/src/select/SelectContent.tsx +29 -17
  231. package/src/select/useListboxNavigation.ts +12 -9
  232. package/src/tooltip/TooltipContent.tsx +32 -34
  233. package/src/tooltip/getTooltipPosition.ts +58 -125
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "MODAL_OVERLAY_Z_INDEX", {
9
9
  return _constants.MODAL_OVERLAY_Z_INDEX;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "NOTIFICATION_OVERLAY_Z_INDEX", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _constants.NOTIFICATION_OVERLAY_Z_INDEX;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "OVERLAY_PLACEMENTS", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _getAnchoredOverlayPosition.OVERLAY_PLACEMENTS;
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "OverlayContainer", {
13
25
  enumerable: true,
14
26
  get: function () {
@@ -21,12 +33,30 @@ Object.defineProperty(exports, "OverlayInsetsProvider", {
21
33
  return _useOverlayPosition.OverlayInsetsProvider;
22
34
  }
23
35
  });
36
+ Object.defineProperty(exports, "OverlayStackProvider", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _OverlayStack.OverlayStackProvider;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "getAnchoredOverlayPosition", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _getAnchoredOverlayPosition.getAnchoredOverlayPosition;
46
+ }
47
+ });
24
48
  Object.defineProperty(exports, "useAnchorPosition", {
25
49
  enumerable: true,
26
50
  get: function () {
27
51
  return _useAnchorPosition.useAnchorPosition;
28
52
  }
29
53
  });
54
+ Object.defineProperty(exports, "useAnchoredOverlay", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _useAnchoredOverlay.useAnchoredOverlay;
58
+ }
59
+ });
30
60
  Object.defineProperty(exports, "useDismissOverlay", {
31
61
  enumerable: true,
32
62
  get: function () {
@@ -45,10 +75,19 @@ Object.defineProperty(exports, "useOverlayPosition", {
45
75
  return _useOverlayPosition.useOverlayPosition;
46
76
  }
47
77
  });
78
+ Object.defineProperty(exports, "useOverlayStackRegistration", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _OverlayStack.useOverlayStackRegistration;
82
+ }
83
+ });
48
84
  var _constants = require("./constants");
49
85
  var _OverlayContainer = require("./OverlayContainer");
86
+ var _OverlayStack = require("./OverlayStack");
50
87
  var _useAnchorPosition = require("./useAnchorPosition");
51
88
  var _useDismissOverlay = require("./useDismissOverlay");
52
89
  var _useEscapeKey = require("./useEscapeKey");
90
+ var _getAnchoredOverlayPosition = require("./getAnchoredOverlayPosition");
91
+ var _useAnchoredOverlay = require("./useAnchoredOverlay");
53
92
  var _useOverlayPosition = require("./useOverlayPosition");
54
93
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_OverlayContainer","_useAnchorPosition","_useDismissOverlay","_useEscapeKey","_useOverlayPosition"],"sourceRoot":"../../../src","sources":["overlay/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,kBAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_OverlayContainer","_OverlayStack","_useAnchorPosition","_useDismissOverlay","_useEscapeKey","_getAnchoredOverlayPosition","_useAnchoredOverlay","_useOverlayPosition"],"sourceRoot":"../../../src","sources":["overlay/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AASA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,2BAAA,GAAAN,OAAA;AAaA,IAAAO,mBAAA,GAAAP,OAAA;AAKA,IAAAQ,mBAAA,GAAAR,OAAA","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useAnchoredOverlay = useAnchoredOverlay;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _getAnchoredOverlayPosition = require("./getAnchoredOverlayPosition");
10
+ var _useAnchorPosition = require("./useAnchorPosition");
11
+ var _useOverlayPosition = require("./useOverlayPosition");
12
+ const STAGING_STYLE = {
13
+ left: -10000,
14
+ opacity: 0,
15
+ pointerEvents: 'none',
16
+ position: 'absolute',
17
+ top: -10000
18
+ };
19
+ function setLayoutIfChanged(setLayout, next) {
20
+ setLayout(previous => {
21
+ if (previous?.width === next.width && previous.height === next.height) {
22
+ return previous;
23
+ }
24
+ return next;
25
+ });
26
+ }
27
+ function useAnchoredOverlay(anchorRef, open, options = {}) {
28
+ const {
29
+ remeasureKey: externalRemeasureKey,
30
+ trackWhileOpen,
31
+ ...positionOptions
32
+ } = options;
33
+ const [revision, update] = (0, _react.useReducer)(value => value + 1, 0);
34
+ const remeasureKey = (0, _react.useMemo)(() => ({
35
+ externalRemeasureKey,
36
+ revision
37
+ }), [externalRemeasureKey, revision]);
38
+ const anchorLayout = (0, _useAnchorPosition.useAnchorPosition)(anchorRef, open, {
39
+ remeasureKey,
40
+ trackWhileOpen
41
+ });
42
+ const floatingRef = (0, _react.useRef)(null);
43
+ const [floatingLayout, setFloatingLayout] = (0, _react.useState)(null);
44
+ const viewport = (0, _reactNative.useWindowDimensions)();
45
+ const insets = (0, _react.useContext)(_useOverlayPosition.OverlayInsetsContext);
46
+ const measureFloating = (0, _react.useCallback)(() => {
47
+ const floating = floatingRef.current;
48
+ if (!floating) return;
49
+ if (_reactNative.Platform.OS === 'web' && typeof floating.getBoundingClientRect === 'function') {
50
+ const rect = floating.getBoundingClientRect();
51
+ setLayoutIfChanged(setFloatingLayout, {
52
+ width: rect.width,
53
+ height: rect.height
54
+ });
55
+ return;
56
+ }
57
+ if (typeof floating.measure === 'function') {
58
+ floating.measure((_x, _y, width, height) => {
59
+ setLayoutIfChanged(setFloatingLayout, {
60
+ width,
61
+ height
62
+ });
63
+ });
64
+ }
65
+ }, []);
66
+ const onFloatingLayout = (0, _react.useCallback)(event => {
67
+ const {
68
+ width,
69
+ height
70
+ } = event.nativeEvent.layout;
71
+ setLayoutIfChanged(setFloatingLayout, {
72
+ width,
73
+ height
74
+ });
75
+ }, []);
76
+ const requestUpdate = (0, _react.useCallback)(() => {
77
+ update();
78
+ measureFloating();
79
+ }, [measureFloating]);
80
+ (0, _react.useEffect)(() => {
81
+ if (!open) {
82
+ setFloatingLayout(null);
83
+ return;
84
+ }
85
+ measureFloating();
86
+ }, [measureFloating, open, revision]);
87
+ (0, _react.useEffect)(() => {
88
+ if (!open || _reactNative.Platform.OS !== 'web') return;
89
+ const floating = floatingRef.current;
90
+ const anchor = anchorRef.current;
91
+ const resizeObserver = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(() => {
92
+ requestUpdate();
93
+ });
94
+ if (floating) resizeObserver?.observe(floating);
95
+ if (anchor) resizeObserver?.observe(anchor);
96
+ const visualViewport = window.visualViewport;
97
+ visualViewport?.addEventListener('resize', requestUpdate);
98
+ visualViewport?.addEventListener('scroll', requestUpdate);
99
+ return () => {
100
+ resizeObserver?.disconnect();
101
+ visualViewport?.removeEventListener('resize', requestUpdate);
102
+ visualViewport?.removeEventListener('scroll', requestUpdate);
103
+ };
104
+ }, [anchorRef, open, requestUpdate]);
105
+ const position = (0, _react.useMemo)(() => {
106
+ if (!anchorLayout || !floatingLayout) return null;
107
+ return (0, _getAnchoredOverlayPosition.getAnchoredOverlayPosition)(anchorLayout, floatingLayout, viewport, {
108
+ ...positionOptions,
109
+ insets: positionOptions.insets ?? insets,
110
+ isRTL: positionOptions.isRTL ?? _reactNative.I18nManager.isRTL
111
+ });
112
+ }, [anchorLayout, floatingLayout, viewport, positionOptions, insets]);
113
+ const ready = position !== null;
114
+ const positionStyle = _reactNative.Platform.OS === 'web' ? 'fixed' : 'absolute';
115
+ return {
116
+ floatingRef,
117
+ onFloatingLayout,
118
+ style: ready ? {
119
+ position: positionStyle,
120
+ ...position.style
121
+ } : STAGING_STYLE,
122
+ position,
123
+ ready,
124
+ update: requestUpdate
125
+ };
126
+ }
127
+ //# sourceMappingURL=useAnchoredOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_getAnchoredOverlayPosition","_useAnchorPosition","_useOverlayPosition","STAGING_STYLE","left","opacity","pointerEvents","position","top","setLayoutIfChanged","setLayout","next","previous","width","height","useAnchoredOverlay","anchorRef","open","options","remeasureKey","externalRemeasureKey","trackWhileOpen","positionOptions","revision","update","useReducer","value","useMemo","anchorLayout","useAnchorPosition","floatingRef","useRef","floatingLayout","setFloatingLayout","useState","viewport","useWindowDimensions","insets","useContext","OverlayInsetsContext","measureFloating","useCallback","floating","current","Platform","OS","getBoundingClientRect","rect","measure","_x","_y","onFloatingLayout","event","nativeEvent","layout","requestUpdate","useEffect","anchor","resizeObserver","ResizeObserver","observe","visualViewport","window","addEventListener","disconnect","removeEventListener","getAnchoredOverlayPosition","isRTL","I18nManager","ready","positionStyle","style"],"sourceRoot":"../../../src","sources":["overlay/useAnchoredOverlay.ts"],"mappings":"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","ignoreList":[]}
@@ -4,9 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useDismissOverlay = useDismissOverlay;
7
+ var _OverlayStack = require("./OverlayStack");
7
8
  /**
8
9
  * No-op on native — overlay dismissal is handled by backdrop press
9
10
  * or the system back gesture / hardware button via Modal.
10
11
  */
11
- function useDismissOverlay(_open, _contentRef, _excludeRefs, _onDismiss) {}
12
+ function useDismissOverlay(open, _contentRef, _excludeRefs, _onDismiss, options = {}) {
13
+ (0, _OverlayStack.useOverlayStackRegistration)({
14
+ active: open,
15
+ capabilities: ['outside'],
16
+ ...options
17
+ });
18
+ }
12
19
  //# sourceMappingURL=useDismissOverlay.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useDismissOverlay","_open","_contentRef","_excludeRefs","_onDismiss"],"sourceRoot":"../../../src","sources":["overlay/useDismissOverlay.ts"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACO,SAASA,iBAAiBA,CAC/BC,KAAc,EACdC,WAA2B,EAC3BC,YAA8B,EAC9BC,UAAsB,EACtB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_OverlayStack","require","useDismissOverlay","open","_contentRef","_excludeRefs","_onDismiss","options","useOverlayStackRegistration","active","capabilities"],"sourceRoot":"../../../src","sources":["overlay/useDismissOverlay.ts"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASC,iBAAiBA,CAC/BC,IAAa,EACbC,WAA2B,EAC3BC,YAA8B,EAC9BC,UAAsB,EACtBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,IAAAC,yCAA2B,EAAC;IAC1BC,MAAM,EAAEN,IAAI;IACZO,YAAY,EAAE,CAAC,SAAS,CAAC;IACzB,GAAGH;EACL,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useDismissOverlay = useDismissOverlay;
7
7
  var _react = require("react");
8
+ var _OverlayStack = require("./OverlayStack");
8
9
  function refContainsNode(ref, target) {
9
10
  const current = ref.current;
10
11
  if (!current || typeof current.contains !== 'function') {
@@ -18,11 +19,18 @@ function refContainsNode(ref, target) {
18
19
  * focus moves to an element outside the overlay via keyboard.
19
20
  * Events targeting `contentRef` or any of `excludeRefs` are ignored.
20
21
  */
21
- function useDismissOverlay(open, contentRef, excludeRefs, onDismiss) {
22
+ function useDismissOverlay(open, contentRef, excludeRefs, onDismiss, options = {}) {
22
23
  const onDismissRef = (0, _react.useRef)(onDismiss);
23
24
  onDismissRef.current = onDismiss;
24
25
  const excludeRefsRef = (0, _react.useRef)(excludeRefs);
25
26
  excludeRefsRef.current = excludeRefs;
27
+ const {
28
+ isTopmost
29
+ } = (0, _OverlayStack.useOverlayStackRegistration)({
30
+ active: open,
31
+ capabilities: ['outside'],
32
+ ...options
33
+ });
26
34
  (0, _react.useEffect)(() => {
27
35
  if (!open) {
28
36
  return;
@@ -39,7 +47,7 @@ function useDismissOverlay(open, contentRef, excludeRefs, onDismiss) {
39
47
  return false;
40
48
  };
41
49
  const dismissIfOutside = e => {
42
- if (!isInsideOverlay(e.target)) {
50
+ if (isTopmost('outside') && !isInsideOverlay(e.target)) {
43
51
  onDismissRef.current();
44
52
  }
45
53
  };
@@ -49,6 +57,6 @@ function useDismissOverlay(open, contentRef, excludeRefs, onDismiss) {
49
57
  document.removeEventListener('pointerdown', dismissIfOutside);
50
58
  document.removeEventListener('focusin', dismissIfOutside);
51
59
  };
52
- }, [open, contentRef]);
60
+ }, [open, contentRef, isTopmost]);
53
61
  }
54
62
  //# sourceMappingURL=useDismissOverlay.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","refContainsNode","ref","target","current","contains","useDismissOverlay","open","contentRef","excludeRefs","onDismiss","onDismissRef","useRef","excludeRefsRef","useEffect","isInsideOverlay","dismissIfOutside","e","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useDismissOverlay.web.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,SAASC,eAAeA,CAACC,GAAuB,EAAEC,MAAY,EAAW;EACvE,MAAMC,OAAO,GAAGF,GAAG,CAACE,OAAwD;EAC5E,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,CAACC,QAAQ,KAAK,UAAU,EAAE;IACtD,OAAO,KAAK;EACd;EACA,OAAOD,OAAO,CAACC,QAAQ,CAACF,MAAM,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASG,iBAAiBA,CAC/BC,IAAa,EACbC,UAA0B,EAC1BC,WAA6B,EAC7BC,SAAqB,EACrB;EACA,MAAMC,YAAY,GAAG,IAAAC,aAAM,EAACF,SAAS,CAAC;EACtCC,YAAY,CAACP,OAAO,GAAGM,SAAS;EAEhC,MAAMG,cAAc,GAAG,IAAAD,aAAM,EAACH,WAAW,CAAC;EAC1CI,cAAc,CAACT,OAAO,GAAGK,WAAW;EAEpC,IAAAK,gBAAS,EAAC,MAAM;IACd,IAAI,CAACP,IAAI,EAAE;MACT;IACF;IAEA,MAAMQ,eAAe,GAAIZ,MAAY,IAAK;MACxC,IAAIF,eAAe,CAACO,UAAU,EAAEL,MAAM,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;MACA,KAAK,MAAMD,GAAG,IAAIW,cAAc,CAACT,OAAO,EAAE;QACxC,IAAIH,eAAe,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAE;UAChC,OAAO,IAAI;QACb;MACF;MACA,OAAO,KAAK;IACd,CAAC;IAED,MAAMa,gBAAgB,GAAIC,CAAQ,IAAK;MACrC,IAAI,CAACF,eAAe,CAACE,CAAC,CAACd,MAAc,CAAC,EAAE;QACtCQ,YAAY,CAACP,OAAO,CAAC,CAAC;MACxB;IACF,CAAC;IAEDc,QAAQ,CAACC,gBAAgB,CAAC,aAAa,EAAEH,gBAAgB,CAAC;IAC1DE,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEH,gBAAgB,CAAC;IACtD,OAAO,MAAM;MACXE,QAAQ,CAACE,mBAAmB,CAAC,aAAa,EAAEJ,gBAAgB,CAAC;MAC7DE,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEJ,gBAAgB,CAAC;IAC3D,CAAC;EACH,CAAC,EAAE,CAACT,IAAI,EAAEC,UAAU,CAAC,CAAC;AACxB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_OverlayStack","refContainsNode","ref","target","current","contains","useDismissOverlay","open","contentRef","excludeRefs","onDismiss","options","onDismissRef","useRef","excludeRefsRef","isTopmost","useOverlayStackRegistration","active","capabilities","useEffect","isInsideOverlay","dismissIfOutside","e","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useDismissOverlay.web.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA,SAASE,eAAeA,CAACC,GAAuB,EAAEC,MAAY,EAAW;EACvE,MAAMC,OAAO,GAAGF,GAAG,CAACE,OAAwD;EAC5E,IAAI,CAACA,OAAO,IAAI,OAAOA,OAAO,CAACC,QAAQ,KAAK,UAAU,EAAE;IACtD,OAAO,KAAK;EACd;EACA,OAAOD,OAAO,CAACC,QAAQ,CAACF,MAAM,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASG,iBAAiBA,CAC/BC,IAAa,EACbC,UAA0B,EAC1BC,WAA6B,EAC7BC,SAAqB,EACrBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,MAAMC,YAAY,GAAG,IAAAC,aAAM,EAACH,SAAS,CAAC;EACtCE,YAAY,CAACR,OAAO,GAAGM,SAAS;EAEhC,MAAMI,cAAc,GAAG,IAAAD,aAAM,EAACJ,WAAW,CAAC;EAC1CK,cAAc,CAACV,OAAO,GAAGK,WAAW;EACpC,MAAM;IAAEM;EAAU,CAAC,GAAG,IAAAC,yCAA2B,EAAC;IAChDC,MAAM,EAAEV,IAAI;IACZW,YAAY,EAAE,CAAC,SAAS,CAAC;IACzB,GAAGP;EACL,CAAC,CAAC;EAEF,IAAAQ,gBAAS,EAAC,MAAM;IACd,IAAI,CAACZ,IAAI,EAAE;MACT;IACF;IAEA,MAAMa,eAAe,GAAIjB,MAAY,IAAK;MACxC,IAAIF,eAAe,CAACO,UAAU,EAAEL,MAAM,CAAC,EAAE;QACvC,OAAO,IAAI;MACb;MACA,KAAK,MAAMD,GAAG,IAAIY,cAAc,CAACV,OAAO,EAAE;QACxC,IAAIH,eAAe,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAE;UAChC,OAAO,IAAI;QACb;MACF;MACA,OAAO,KAAK;IACd,CAAC;IAED,MAAMkB,gBAAgB,GAAIC,CAAQ,IAAK;MACrC,IAAIP,SAAS,CAAC,SAAS,CAAC,IAAI,CAACK,eAAe,CAACE,CAAC,CAACnB,MAAc,CAAC,EAAE;QAC9DS,YAAY,CAACR,OAAO,CAAC,CAAC;MACxB;IACF,CAAC;IAEDmB,QAAQ,CAACC,gBAAgB,CAAC,aAAa,EAAEH,gBAAgB,CAAC;IAC1DE,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEH,gBAAgB,CAAC;IACtD,OAAO,MAAM;MACXE,QAAQ,CAACE,mBAAmB,CAAC,aAAa,EAAEJ,gBAAgB,CAAC;MAC7DE,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEJ,gBAAgB,CAAC;IAC3D,CAAC;EACH,CAAC,EAAE,CAACd,IAAI,EAAEC,UAAU,EAAEO,SAAS,CAAC,CAAC;AACnC","ignoreList":[]}
@@ -4,9 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useEscapeKey = useEscapeKey;
7
+ var _OverlayStack = require("./OverlayStack");
7
8
  /**
8
9
  * No-op on native — Escape key dismissal is not applicable.
9
10
  * Native uses the system back gesture / hardware button via Modal.
10
11
  */
11
- function useEscapeKey(_open, _onEscape) {}
12
+ function useEscapeKey(open, _onEscape, options = {}) {
13
+ (0, _OverlayStack.useOverlayStackRegistration)({
14
+ active: open,
15
+ capabilities: ['escape'],
16
+ ...options
17
+ });
18
+ }
12
19
  //# sourceMappingURL=useEscapeKey.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEscapeKey","_open","_onEscape"],"sourceRoot":"../../../src","sources":["overlay/useEscapeKey.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAACC,KAAc,EAAEC,SAAqB,EAAE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_OverlayStack","require","useEscapeKey","open","_onEscape","options","useOverlayStackRegistration","active","capabilities"],"sourceRoot":"../../../src","sources":["overlay/useEscapeKey.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAC1BC,IAAa,EACbC,SAAqB,EACrBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,IAAAC,yCAA2B,EAAC;IAC1BC,MAAM,EAAEJ,IAAI;IACZK,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,GAAGH;EACL,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -5,19 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useEscapeKey = useEscapeKey;
7
7
  var _react = require("react");
8
+ var _OverlayStack = require("./OverlayStack");
8
9
  /**
9
10
  * Closes an overlay when the user presses the Escape key.
10
11
  * Web-only — native platforms use Modal's `onRequestClose` for back/dismiss.
11
12
  */
12
- function useEscapeKey(open, onEscape) {
13
+ function useEscapeKey(open, onEscape, options = {}) {
13
14
  const onEscapeRef = (0, _react.useRef)(onEscape);
14
15
  onEscapeRef.current = onEscape;
16
+ const {
17
+ isTopmost
18
+ } = (0, _OverlayStack.useOverlayStackRegistration)({
19
+ active: open,
20
+ capabilities: ['escape'],
21
+ ...options
22
+ });
15
23
  (0, _react.useEffect)(() => {
16
24
  if (!open) {
17
25
  return;
18
26
  }
19
27
  const handleKeyDown = e => {
20
- if (e.key === 'Escape') {
28
+ if (e.key === 'Escape' && isTopmost('escape')) {
21
29
  onEscapeRef.current();
22
30
  }
23
31
  };
@@ -25,6 +33,6 @@ function useEscapeKey(open, onEscape) {
25
33
  return () => {
26
34
  document.removeEventListener('keydown', handleKeyDown);
27
35
  };
28
- }, [open]);
36
+ }, [isTopmost, open]);
29
37
  }
30
38
  //# sourceMappingURL=useEscapeKey.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","useEscapeKey","open","onEscape","onEscapeRef","useRef","current","useEffect","handleKeyDown","e","key","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useEscapeKey.web.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASC,YAAYA,CAACC,IAAa,EAAEC,QAAoB,EAAE;EAChE,MAAMC,WAAW,GAAG,IAAAC,aAAM,EAACF,QAAQ,CAAC;EACpCC,WAAW,CAACE,OAAO,GAAGH,QAAQ;EAE9B,IAAAI,gBAAS,EAAC,MAAM;IACd,IAAI,CAACL,IAAI,EAAE;MACT;IACF;IAEA,MAAMM,aAAa,GAAIC,CAAgB,IAAK;MAC1C,IAAIA,CAAC,CAACC,GAAG,KAAK,QAAQ,EAAE;QACtBN,WAAW,CAACE,OAAO,CAAC,CAAC;MACvB;IACF,CAAC;IAEDK,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEJ,aAAa,CAAC;IACnD,OAAO,MAAM;MACXG,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEL,aAAa,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACN,IAAI,CAAC,CAAC;AACZ","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_OverlayStack","useEscapeKey","open","onEscape","options","onEscapeRef","useRef","current","isTopmost","useOverlayStackRegistration","active","capabilities","useEffect","handleKeyDown","e","key","document","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["overlay/useEscapeKey.web.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACO,SAASE,YAAYA,CAC1BC,IAAa,EACbC,QAAoB,EACpBC,OAA6B,GAAG,CAAC,CAAC,EAClC;EACA,MAAMC,WAAW,GAAG,IAAAC,aAAM,EAACH,QAAQ,CAAC;EACpCE,WAAW,CAACE,OAAO,GAAGJ,QAAQ;EAC9B,MAAM;IAAEK;EAAU,CAAC,GAAG,IAAAC,yCAA2B,EAAC;IAChDC,MAAM,EAAER,IAAI;IACZS,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,GAAGP;EACL,CAAC,CAAC;EAEF,IAAAQ,gBAAS,EAAC,MAAM;IACd,IAAI,CAACV,IAAI,EAAE;MACT;IACF;IAEA,MAAMW,aAAa,GAAIC,CAAgB,IAAK;MAC1C,IAAIA,CAAC,CAACC,GAAG,KAAK,QAAQ,IAAIP,SAAS,CAAC,QAAQ,CAAC,EAAE;QAC7CH,WAAW,CAACE,OAAO,CAAC,CAAC;MACvB;IACF,CAAC;IAEDS,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAEJ,aAAa,CAAC;IACnD,OAAO,MAAM;MACXG,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEL,aAAa,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACL,SAAS,EAAEN,IAAI,CAAC,CAAC;AACvB","ignoreList":[]}
@@ -53,27 +53,37 @@ const MIN_CONTENT_HEIGHT = 200;
53
53
  *
54
54
  * Respects safe-area insets provided via `OverlayInsetsProvider`.
55
55
  */
56
- function useOverlayPosition(anchorLayout) {
56
+ function useOverlayPosition(anchorLayout, options) {
57
57
  const {
58
+ width: viewportWidth,
58
59
  height: viewportHeight
59
60
  } = (0, _reactNative.useWindowDimensions)();
60
61
  const {
61
62
  top: insetTop,
62
- bottom: insetBottom
63
+ bottom: insetBottom,
64
+ right: insetRight
63
65
  } = (0, _react.useContext)(OverlayInsetsContext);
66
+ const matchAnchorWidth = options?.matchAnchorWidth ?? true;
64
67
  return (0, _react.useMemo)(() => {
65
68
  if (!anchorLayout) return null;
66
69
  const anchorBottom = anchorLayout.y + anchorLayout.height;
67
70
  const spaceBelow = viewportHeight - anchorBottom - insetBottom - SCREEN_EDGE_PADDING;
68
71
  const spaceAbove = anchorLayout.y - insetTop - SCREEN_EDGE_PADDING;
69
72
  const preferBelow = spaceBelow >= MIN_CONTENT_HEIGHT || spaceBelow >= spaceAbove;
73
+ const horizontalStyle = matchAnchorWidth ? {
74
+ left: anchorLayout.x,
75
+ width: anchorLayout.width
76
+ } : {
77
+ left: anchorLayout.x,
78
+ alignItems: 'flex-start',
79
+ maxWidth: Math.max(0, viewportWidth - anchorLayout.x - insetRight - SCREEN_EDGE_PADDING)
80
+ };
70
81
  if (preferBelow) {
71
82
  const maxHeight = Math.max(0, spaceBelow);
72
83
  return {
73
84
  style: {
85
+ ...horizontalStyle,
74
86
  top: anchorBottom + POPOVER_GAP,
75
- left: anchorLayout.x,
76
- width: anchorLayout.width,
77
87
  maxHeight
78
88
  },
79
89
  maxHeight,
@@ -83,14 +93,13 @@ function useOverlayPosition(anchorLayout) {
83
93
  const maxHeight = Math.max(0, spaceAbove);
84
94
  return {
85
95
  style: {
96
+ ...horizontalStyle,
86
97
  bottom: viewportHeight - anchorLayout.y + POPOVER_GAP,
87
- left: anchorLayout.x,
88
- width: anchorLayout.width,
89
98
  maxHeight
90
99
  },
91
100
  maxHeight,
92
101
  placement: 'top'
93
102
  };
94
- }, [anchorLayout, viewportHeight, insetTop, insetBottom]);
103
+ }, [anchorLayout, viewportWidth, viewportHeight, insetTop, insetBottom, insetRight, matchAnchorWidth]);
95
104
  }
96
105
  //# sourceMappingURL=useOverlayPosition.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","DEFAULT_INSETS","top","right","bottom","left","OverlayInsetsContext","exports","createContext","OverlayInsetsProvider","Provider","SCREEN_EDGE_PADDING","POPOVER_GAP","MIN_CONTENT_HEIGHT","useOverlayPosition","anchorLayout","height","viewportHeight","useWindowDimensions","insetTop","insetBottom","useContext","useMemo","anchorBottom","y","spaceBelow","spaceAbove","preferBelow","maxHeight","Math","max","style","x","width","placement"],"sourceRoot":"../../../src","sources":["overlay/useOverlayPosition.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAUA,MAAME,cAA0B,GAAG;EAAEC,GAAG,EAAE,CAAC;EAAEC,KAAK,EAAE,CAAC;EAAEC,MAAM,EAAE,CAAC;EAAEC,IAAI,EAAE;AAAE,CAAC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,gBAAG,IAAAE,oBAAa,EAAaP,cAAc,CAAC;AACtE,MAAMQ,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,GAAGH,oBAAoB,CAACI,QAAQ;;AAElE;AACA,MAAMC,mBAAmB,GAAG,CAAC;;AAE7B;AACA,MAAMC,WAAW,GAAG,CAAC;;AAErB;AACA,MAAMC,kBAAkB,GAAG,GAAG;AAQ9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAACC,YAAiC,EAA0B;EAC5F,MAAM;IAAEC,MAAM,EAAEC;EAAe,CAAC,GAAG,IAAAC,gCAAmB,EAAC,CAAC;EACxD,MAAM;IAAEhB,GAAG,EAAEiB,QAAQ;IAAEf,MAAM,EAAEgB;EAAY,CAAC,GAAG,IAAAC,iBAAU,EAACf,oBAAoB,CAAC;EAE/E,OAAO,IAAAgB,cAAO,EAAC,MAAM;IACnB,IAAI,CAACP,YAAY,EAAE,OAAO,IAAI;IAE9B,MAAMQ,YAAY,GAAGR,YAAY,CAACS,CAAC,GAAGT,YAAY,CAACC,MAAM;IACzD,MAAMS,UAAU,GAAGR,cAAc,GAAGM,YAAY,GAAGH,WAAW,GAAGT,mBAAmB;IACpF,MAAMe,UAAU,GAAGX,YAAY,CAACS,CAAC,GAAGL,QAAQ,GAAGR,mBAAmB;IAElE,MAAMgB,WAAW,GAAGF,UAAU,IAAIZ,kBAAkB,IAAIY,UAAU,IAAIC,UAAU;IAEhF,IAAIC,WAAW,EAAE;MACf,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEL,UAAU,CAAC;MACzC,OAAO;QACLM,KAAK,EAAE;UACL7B,GAAG,EAAEqB,YAAY,GAAGX,WAAW;UAC/BP,IAAI,EAAEU,YAAY,CAACiB,CAAC;UACpBC,KAAK,EAAElB,YAAY,CAACkB,KAAK;UACzBL;QACF,CAAC;QACDA,SAAS;QACTM,SAAS,EAAE;MACb,CAAC;IACH;IAEA,MAAMN,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,UAAU,CAAC;IACzC,OAAO;MACLK,KAAK,EAAE;QACL3B,MAAM,EAAEa,cAAc,GAAGF,YAAY,CAACS,CAAC,GAAGZ,WAAW;QACrDP,IAAI,EAAEU,YAAY,CAACiB,CAAC;QACpBC,KAAK,EAAElB,YAAY,CAACkB,KAAK;QACzBL;MACF,CAAC;MACDA,SAAS;MACTM,SAAS,EAAE;IACb,CAAC;EACH,CAAC,EAAE,CAACnB,YAAY,EAAEE,cAAc,EAAEE,QAAQ,EAAEC,WAAW,CAAC,CAAC;AAC3D","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","DEFAULT_INSETS","top","right","bottom","left","OverlayInsetsContext","exports","createContext","OverlayInsetsProvider","Provider","SCREEN_EDGE_PADDING","POPOVER_GAP","MIN_CONTENT_HEIGHT","useOverlayPosition","anchorLayout","options","width","viewportWidth","height","viewportHeight","useWindowDimensions","insetTop","insetBottom","insetRight","useContext","matchAnchorWidth","useMemo","anchorBottom","y","spaceBelow","spaceAbove","preferBelow","horizontalStyle","x","alignItems","maxWidth","Math","max","maxHeight","style","placement"],"sourceRoot":"../../../src","sources":["overlay/useOverlayPosition.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAUA,MAAME,cAA0B,GAAG;EAAEC,GAAG,EAAE,CAAC;EAAEC,KAAK,EAAE,CAAC;EAAEC,MAAM,EAAE,CAAC;EAAEC,IAAI,EAAE;AAAE,CAAC;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,gBAAG,IAAAE,oBAAa,EAAaP,cAAc,CAAC;AACtE,MAAMQ,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,GAAGH,oBAAoB,CAACI,QAAQ;;AAElE;AACA,MAAMC,mBAAmB,GAAG,CAAC;;AAE7B;AACA,MAAMC,WAAW,GAAG,CAAC;;AAErB;AACA,MAAMC,kBAAkB,GAAG,GAAG;AAa9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,kBAAkBA,CAChCC,YAAiC,EACjCC,OAAmC,EACX;EACxB,MAAM;IAAEC,KAAK,EAAEC,aAAa;IAAEC,MAAM,EAAEC;EAAe,CAAC,GAAG,IAAAC,gCAAmB,EAAC,CAAC;EAC9E,MAAM;IACJnB,GAAG,EAAEoB,QAAQ;IACblB,MAAM,EAAEmB,WAAW;IACnBpB,KAAK,EAAEqB;EACT,CAAC,GAAG,IAAAC,iBAAU,EAACnB,oBAAoB,CAAC;EACpC,MAAMoB,gBAAgB,GAAGV,OAAO,EAAEU,gBAAgB,IAAI,IAAI;EAE1D,OAAO,IAAAC,cAAO,EAAC,MAAM;IACnB,IAAI,CAACZ,YAAY,EAAE,OAAO,IAAI;IAE9B,MAAMa,YAAY,GAAGb,YAAY,CAACc,CAAC,GAAGd,YAAY,CAACI,MAAM;IACzD,MAAMW,UAAU,GAAGV,cAAc,GAAGQ,YAAY,GAAGL,WAAW,GAAGZ,mBAAmB;IACpF,MAAMoB,UAAU,GAAGhB,YAAY,CAACc,CAAC,GAAGP,QAAQ,GAAGX,mBAAmB;IAElE,MAAMqB,WAAW,GAAGF,UAAU,IAAIjB,kBAAkB,IAAIiB,UAAU,IAAIC,UAAU;IAEhF,MAAME,eAA0B,GAAGP,gBAAgB,GAC/C;MAAErB,IAAI,EAAEU,YAAY,CAACmB,CAAC;MAAEjB,KAAK,EAAEF,YAAY,CAACE;IAAM,CAAC,GACnD;MACEZ,IAAI,EAAEU,YAAY,CAACmB,CAAC;MACpBC,UAAU,EAAE,YAAY;MACxBC,QAAQ,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEpB,aAAa,GAAGH,YAAY,CAACmB,CAAC,GAAGV,UAAU,GAAGb,mBAAmB;IACzF,CAAC;IAEL,IAAIqB,WAAW,EAAE;MACf,MAAMO,SAAS,GAAGF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAER,UAAU,CAAC;MACzC,OAAO;QACLU,KAAK,EAAE;UACL,GAAGP,eAAe;UAClB/B,GAAG,EAAE0B,YAAY,GAAGhB,WAAW;UAC/B2B;QACF,CAAC;QACDA,SAAS;QACTE,SAAS,EAAE;MACb,CAAC;IACH;IAEA,MAAMF,SAAS,GAAGF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEP,UAAU,CAAC;IACzC,OAAO;MACLS,KAAK,EAAE;QACL,GAAGP,eAAe;QAClB7B,MAAM,EAAEgB,cAAc,GAAGL,YAAY,CAACc,CAAC,GAAGjB,WAAW;QACrD2B;MACF,CAAC;MACDA,SAAS;MACTE,SAAS,EAAE;IACb,CAAC;EACH,CAAC,EAAE,CACD1B,YAAY,EACZG,aAAa,EACbE,cAAc,EACdE,QAAQ,EACRC,WAAW,EACXC,UAAU,EACVE,gBAAgB,CACjB,CAAC;AACJ","ignoreList":[]}