@velora-dex/widget 0.0.11 → 0.0.13

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 (275) hide show
  1. package/dist/components/ui/drawer.d.ts +1 -1
  2. package/dist/components/ui/drawer.d.ts.map +1 -1
  3. package/dist/components/ui/drawer.js +1 -1
  4. package/dist/components/ui/drawer.js.map +1 -1
  5. package/dist/components/ui/dropdown-menu.js +25 -19
  6. package/dist/components/ui/dropdown-menu.js.map +1 -1
  7. package/dist/components/ui/vaul/browser.d.ts +8 -0
  8. package/dist/components/ui/vaul/browser.d.ts.map +1 -0
  9. package/dist/components/ui/vaul/browser.js +37 -0
  10. package/dist/components/ui/vaul/browser.js.map +1 -0
  11. package/dist/components/ui/vaul/constants.d.ts +12 -0
  12. package/dist/components/ui/vaul/constants.d.ts.map +1 -0
  13. package/dist/components/ui/vaul/constants.js +24 -0
  14. package/dist/components/ui/vaul/constants.js.map +1 -0
  15. package/dist/components/ui/vaul/context.d.ts +38 -0
  16. package/dist/components/ui/vaul/context.d.ts.map +1 -0
  17. package/dist/components/ui/vaul/context.js +72 -0
  18. package/dist/components/ui/vaul/context.js.map +1 -0
  19. package/dist/components/ui/vaul/helpers.d.ts +17 -0
  20. package/dist/components/ui/vaul/helpers.d.ts.map +1 -0
  21. package/dist/components/ui/vaul/helpers.js +87 -0
  22. package/dist/components/ui/vaul/helpers.js.map +1 -0
  23. package/dist/components/ui/vaul/index.d.ts +140 -0
  24. package/dist/components/ui/vaul/index.d.ts.map +1 -0
  25. package/dist/components/ui/vaul/index.js +807 -0
  26. package/dist/components/ui/vaul/index.js.map +1 -0
  27. package/dist/components/ui/vaul/types.d.ts +7 -0
  28. package/dist/components/ui/vaul/types.d.ts.map +1 -0
  29. package/dist/components/ui/vaul/use-composed-refs.d.ts +14 -0
  30. package/dist/components/ui/vaul/use-composed-refs.d.ts.map +1 -0
  31. package/dist/components/ui/vaul/use-composed-refs.js +28 -0
  32. package/dist/components/ui/vaul/use-composed-refs.js.map +1 -0
  33. package/dist/components/ui/vaul/use-controllable-state.d.ts +9 -0
  34. package/dist/components/ui/vaul/use-controllable-state.d.ts.map +1 -0
  35. package/dist/components/ui/vaul/use-controllable-state.js +134 -0
  36. package/dist/components/ui/vaul/use-controllable-state.js.map +1 -0
  37. package/dist/components/ui/vaul/use-position-fixed.d.ts +19 -0
  38. package/dist/components/ui/vaul/use-position-fixed.d.ts.map +1 -0
  39. package/dist/components/ui/vaul/use-position-fixed.js +109 -0
  40. package/dist/components/ui/vaul/use-position-fixed.js.map +1 -0
  41. package/dist/components/ui/vaul/use-prevent-scroll.d.ts +18 -0
  42. package/dist/components/ui/vaul/use-prevent-scroll.d.ts.map +1 -0
  43. package/dist/components/ui/vaul/use-prevent-scroll.js +182 -0
  44. package/dist/components/ui/vaul/use-prevent-scroll.js.map +1 -0
  45. package/dist/components/ui/vaul/use-scale-background.d.ts +2 -0
  46. package/dist/components/ui/vaul/use-scale-background.d.ts.map +1 -0
  47. package/dist/components/ui/vaul/use-scale-background.js +68 -0
  48. package/dist/components/ui/vaul/use-scale-background.js.map +1 -0
  49. package/dist/components/ui/vaul/use-snap-points.d.ts +32 -0
  50. package/dist/components/ui/vaul/use-snap-points.d.ts.map +1 -0
  51. package/dist/components/ui/vaul/use-snap-points.js +222 -0
  52. package/dist/components/ui/vaul/use-snap-points.js.map +1 -0
  53. package/dist/components/web3/AccountButton.d.ts.map +1 -1
  54. package/dist/components/web3/AccountButton.js +26 -30
  55. package/dist/components/web3/AccountButton.js.map +1 -1
  56. package/dist/components/web3/ConnectWallets/index.d.ts.map +1 -1
  57. package/dist/components/web3/ConnectWallets/index.js +12 -64
  58. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  59. package/dist/components/widget/AppHeader/ActivityButton.d.ts +2 -0
  60. package/dist/components/widget/AppHeader/ActivityButton.d.ts.map +1 -0
  61. package/dist/components/widget/AppHeader/ActivityButton.js +46 -0
  62. package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -0
  63. package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
  64. package/dist/components/widget/AppHeader/AppHeader.js +35 -29
  65. package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
  66. package/dist/components/widget/Drawer/index.d.ts +1 -1
  67. package/dist/components/widget/Drawer/index.d.ts.map +1 -1
  68. package/dist/components/widget/Drawer/index.js +37 -30
  69. package/dist/components/widget/Drawer/index.js.map +1 -1
  70. package/dist/components/widget/Informative/Informative.d.ts +7 -0
  71. package/dist/components/widget/Informative/Informative.d.ts.map +1 -0
  72. package/dist/components/widget/Informative/Informative.js +33 -0
  73. package/dist/components/widget/Informative/Informative.js.map +1 -0
  74. package/dist/components/widget/PoweredBy/PoweredBy.d.ts +2 -0
  75. package/dist/components/widget/PoweredBy/PoweredBy.d.ts.map +1 -0
  76. package/dist/components/widget/PoweredBy/PoweredBy.js +31 -0
  77. package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -0
  78. package/dist/components/widget/PoweredBy/assets/velora.svg.js +12 -0
  79. package/dist/components/widget/PoweredBy/assets/velora.svg.js.map +1 -0
  80. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js +35 -39
  81. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
  82. package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js +1 -1
  83. package/dist/components/widget/SelectToken/SelectTokenButton.js +55 -65
  84. package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
  85. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.d.ts.map +1 -1
  86. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js +1 -0
  87. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
  88. package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
  89. package/dist/components/widget/TokenInput/index.js +133 -103
  90. package/dist/components/widget/TokenInput/index.js.map +1 -1
  91. package/dist/components/widget/TokenInput/types.d.ts +4 -2
  92. package/dist/components/widget/TokenInput/types.d.ts.map +1 -1
  93. package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
  94. package/dist/components/widget/TradeOverview/Stepper.js +38 -3
  95. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  96. package/dist/components/widget/WrapEth/WrapEthDrawerButton.d.ts +2 -1
  97. package/dist/components/widget/WrapEth/WrapEthDrawerButton.d.ts.map +1 -1
  98. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js +30 -29
  99. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
  100. package/dist/hooks/gas/config.d.ts +6 -0
  101. package/dist/hooks/gas/config.d.ts.map +1 -0
  102. package/dist/hooks/gas/config.js +53 -0
  103. package/dist/hooks/gas/config.js.map +1 -0
  104. package/dist/hooks/gas/types.d.ts +43 -0
  105. package/dist/hooks/gas/types.d.ts.map +1 -0
  106. package/dist/hooks/gas/useGasPrices.d.ts +7 -0
  107. package/dist/hooks/gas/useGasPrices.d.ts.map +1 -0
  108. package/dist/hooks/gas/useGasPrices.js +118 -0
  109. package/dist/hooks/gas/useGasPrices.js.map +1 -0
  110. package/dist/hooks/gas/utils.d.ts +8 -0
  111. package/dist/hooks/gas/utils.d.ts.map +1 -0
  112. package/dist/hooks/gas/utils.js +21 -0
  113. package/dist/hooks/gas/utils.js.map +1 -0
  114. package/dist/hooks/getCode/useIsAccountContract.d.ts +2 -0
  115. package/dist/hooks/getCode/useIsAccountContract.d.ts.map +1 -0
  116. package/dist/hooks/getCode/useIsAccountContract.js +34 -0
  117. package/dist/hooks/getCode/useIsAccountContract.js.map +1 -0
  118. package/dist/hooks/permit/hooks/useGetPermitInfo.d.ts +27 -0
  119. package/dist/hooks/permit/hooks/useGetPermitInfo.d.ts.map +1 -0
  120. package/dist/hooks/permit/hooks/useGetPermitInfo.js +98 -0
  121. package/dist/hooks/permit/hooks/useGetPermitInfo.js.map +1 -0
  122. package/dist/hooks/permit/hooks/useGetSafePermitInfo.d.ts +31 -0
  123. package/dist/hooks/permit/hooks/useGetSafePermitInfo.d.ts.map +1 -0
  124. package/dist/hooks/permit/hooks/useGetSafePermitInfo.js +129 -0
  125. package/dist/hooks/permit/hooks/useGetSafePermitInfo.js.map +1 -0
  126. package/dist/hooks/permit/hooks/usePermit1Nonce.d.ts +38 -0
  127. package/dist/hooks/permit/hooks/usePermit1Nonce.d.ts.map +1 -0
  128. package/dist/hooks/permit/hooks/usePermit1Nonce.js +153 -0
  129. package/dist/hooks/permit/hooks/usePermit1Nonce.js.map +1 -0
  130. package/dist/hooks/permit/hooks/useSignArbitraryTypedData.d.ts +18 -0
  131. package/dist/hooks/permit/hooks/useSignArbitraryTypedData.d.ts.map +1 -0
  132. package/dist/hooks/permit/hooks/useSignArbitraryTypedData.js +109 -0
  133. package/dist/hooks/permit/hooks/useSignArbitraryTypedData.js.map +1 -0
  134. package/dist/hooks/permit/hooks/useSignPermit.d.ts +13 -0
  135. package/dist/hooks/permit/hooks/useSignPermit.d.ts.map +1 -0
  136. package/dist/hooks/permit/hooks/useSignPermit.js +103 -0
  137. package/dist/hooks/permit/hooks/useSignPermit.js.map +1 -0
  138. package/dist/hooks/permit/hooks/useSignTokenFromPermit1.d.ts +50 -0
  139. package/dist/hooks/permit/hooks/useSignTokenFromPermit1.d.ts.map +1 -0
  140. package/dist/hooks/permit/hooks/useSignTokenFromPermit1.js +338 -0
  141. package/dist/hooks/permit/hooks/useSignTokenFromPermit1.js.map +1 -0
  142. package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.d.ts +10 -0
  143. package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.d.ts.map +1 -0
  144. package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.js +69 -0
  145. package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.js.map +1 -0
  146. package/dist/hooks/permit/hooks/useTokenFromPermitInfo.d.ts +10 -0
  147. package/dist/hooks/permit/hooks/useTokenFromPermitInfo.d.ts.map +1 -0
  148. package/dist/hooks/permit/hooks/useTokenFromPermitInfo.js +63 -0
  149. package/dist/hooks/permit/hooks/useTokenFromPermitInfo.js.map +1 -0
  150. package/dist/hooks/permit/hooks/useTryToSignPermit1.d.ts +16 -0
  151. package/dist/hooks/permit/hooks/useTryToSignPermit1.d.ts.map +1 -0
  152. package/dist/hooks/permit/hooks/useTryToSignPermit1.js +94 -0
  153. package/dist/hooks/permit/hooks/useTryToSignPermit1.js.map +1 -0
  154. package/dist/hooks/permit/utils/abi.d.ts +219 -0
  155. package/dist/hooks/permit/utils/abi.d.ts.map +1 -0
  156. package/dist/hooks/permit/utils/abi.js +204 -0
  157. package/dist/hooks/permit/utils/abi.js.map +1 -0
  158. package/dist/hooks/permit/utils/constants.d.ts +224 -0
  159. package/dist/hooks/permit/utils/constants.d.ts.map +1 -0
  160. package/dist/hooks/permit/utils/constants.js +229 -0
  161. package/dist/hooks/permit/utils/constants.js.map +1 -0
  162. package/dist/hooks/permit/utils/construct.d.ts +161 -0
  163. package/dist/hooks/permit/utils/construct.d.ts.map +1 -0
  164. package/dist/hooks/permit/utils/construct.js +227 -0
  165. package/dist/hooks/permit/utils/construct.js.map +1 -0
  166. package/dist/hooks/permit/utils/detect.d.ts +35 -0
  167. package/dist/hooks/permit/utils/detect.d.ts.map +1 -0
  168. package/dist/hooks/permit/utils/detect.js +241 -0
  169. package/dist/hooks/permit/utils/detect.js.map +1 -0
  170. package/dist/hooks/permit/utils/domainSeparator.d.ts +44 -0
  171. package/dist/hooks/permit/utils/domainSeparator.d.ts.map +1 -0
  172. package/dist/hooks/permit/utils/domainSeparator.js +216 -0
  173. package/dist/hooks/permit/utils/domainSeparator.js.map +1 -0
  174. package/dist/hooks/permit/utils/encodeArgs.d.ts +11 -0
  175. package/dist/hooks/permit/utils/encodeArgs.d.ts.map +1 -0
  176. package/dist/hooks/permit/utils/encodeArgs.js +29 -0
  177. package/dist/hooks/permit/utils/encodeArgs.js.map +1 -0
  178. package/dist/hooks/permit/utils/trySignPermit1.d.ts +42 -0
  179. package/dist/hooks/permit/utils/trySignPermit1.d.ts.map +1 -0
  180. package/dist/hooks/permit/utils/trySignPermit1.js +283 -0
  181. package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -0
  182. package/dist/hooks/permit/utils/types.d.ts +77 -0
  183. package/dist/hooks/permit/utils/types.d.ts.map +1 -0
  184. package/dist/hooks/permit/utils/utils.d.ts +15 -0
  185. package/dist/hooks/permit/utils/utils.d.ts.map +1 -0
  186. package/dist/hooks/permit/utils/utils.js +44 -0
  187. package/dist/hooks/permit/utils/utils.js.map +1 -0
  188. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +1 -1
  189. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  190. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.d.ts +1 -1
  191. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.d.ts.map +1 -1
  192. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js +94 -0
  193. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -0
  194. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +1 -1
  195. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  196. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -0
  197. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  198. package/dist/hooks/swap/prices/useSwapPrices.js +43 -29
  199. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  200. package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts +2 -10
  201. package/dist/hooks/swap/prices/useTokenInputsFromPrice.d.ts.map +1 -1
  202. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +10 -10
  203. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  204. package/dist/hooks/swap/tradeFlow/common/types.d.ts +15 -0
  205. package/dist/hooks/swap/tradeFlow/common/types.d.ts.map +1 -1
  206. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +2 -1
  207. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  208. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +433 -268
  209. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  210. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
  211. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +4 -1
  212. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  213. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +2 -1
  214. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
  215. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +411 -245
  216. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  217. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
  218. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +4 -1
  219. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  220. package/dist/hooks/tokens/allowance/types.d.ts +2 -0
  221. package/dist/hooks/tokens/allowance/types.d.ts.map +1 -1
  222. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.d.ts +3 -1
  223. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.d.ts.map +1 -1
  224. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js +4 -2
  225. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
  226. package/dist/hooks/tokens/allowance/useTokenAllowance.d.ts +1 -1
  227. package/dist/hooks/tokens/allowance/useTokenAllowance.d.ts.map +1 -1
  228. package/dist/hooks/tokens/allowance/useTokenAllowance.js +11 -8
  229. package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
  230. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts +1 -0
  231. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
  232. package/dist/hooks/tokens/balances/useInvalidateTokenData.js +32 -5
  233. package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
  234. package/dist/hooks/txs/mutations/useSendTx.d.ts.map +1 -1
  235. package/dist/hooks/txs/mutations/useSendTx.js +48 -44
  236. package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
  237. package/dist/hooks/useIsCrosschainPossible.d.ts +12 -0
  238. package/dist/hooks/useIsCrosschainPossible.d.ts.map +1 -0
  239. package/dist/hooks/useIsCrosschainPossible.js +68 -0
  240. package/dist/hooks/useIsCrosschainPossible.js.map +1 -0
  241. package/dist/index.d.ts +0 -1
  242. package/dist/index.d.ts.map +1 -1
  243. package/dist/index.js +0 -1
  244. package/dist/index.js.map +1 -1
  245. package/dist/lib/utils/delta.d.ts +13 -0
  246. package/dist/lib/utils/delta.d.ts.map +1 -0
  247. package/dist/lib/utils/delta.js +35 -0
  248. package/dist/lib/utils/delta.js.map +1 -0
  249. package/dist/lib/utils/explorer.d.ts +2 -0
  250. package/dist/lib/utils/explorer.d.ts.map +1 -1
  251. package/dist/lib/utils/explorer.js +15 -1
  252. package/dist/lib/utils/explorer.js.map +1 -1
  253. package/dist/styles.css +317 -5
  254. package/dist/tokens/defaultTokens.js.map +1 -1
  255. package/dist/widget/Updaters.d.ts.map +1 -1
  256. package/dist/widget/Updaters.js +4 -0
  257. package/dist/widget/Updaters.js.map +1 -1
  258. package/dist/widget/button/hooks/useWidgetButtonExtraProps.d.ts +9 -0
  259. package/dist/widget/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -0
  260. package/dist/widget/button/hooks/useWidgetButtonExtraProps.js +81 -0
  261. package/dist/widget/button/hooks/useWidgetButtonExtraProps.js.map +1 -0
  262. package/dist/widget/index.d.ts.map +1 -1
  263. package/dist/widget/index.js +302 -259
  264. package/dist/widget/index.js.map +1 -1
  265. package/dist/widget/inputs/hooks/types.d.ts +4 -0
  266. package/dist/widget/inputs/hooks/types.d.ts.map +1 -0
  267. package/dist/widget/inputs/hooks/useTokenFromInputProps.d.ts +3 -1
  268. package/dist/widget/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
  269. package/dist/widget/inputs/hooks/useTokenFromInputProps.js +160 -99
  270. package/dist/widget/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  271. package/dist/widget/inputs/hooks/useTokenToInputProps.d.ts +2 -1
  272. package/dist/widget/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  273. package/dist/widget/inputs/hooks/useTokenToInputProps.js +136 -105
  274. package/dist/widget/inputs/hooks/useTokenToInputProps.js.map +1 -1
  275. package/package.json +2 -4
@@ -0,0 +1,807 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { d as distExports } from '../../../_virtual/index.js';
3
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
4
+ import React__default from 'react';
5
+ import { DrawerContext, useDrawerContext } from './context.js';
6
+ /* empty css */
7
+ import { usePreventScroll, isInput } from './use-prevent-scroll.js';
8
+ import { useComposedRefs } from './use-composed-refs.js';
9
+ import { useSnapPoints } from './use-snap-points.js';
10
+ import { set, reset, isVertical, getTranslate, dampenValue } from './helpers.js';
11
+ import { CLOSE_THRESHOLD, SCROLL_LOCK_TIMEOUT, TRANSITIONS, DRAG_CLASS, VELOCITY_THRESHOLD, NESTED_DISPLACEMENT, BORDER_RADIUS, WINDOW_TOP_OFFSET } from './constants.js';
12
+ import { useControllableState } from './use-controllable-state.js';
13
+ import { useScaleBackground } from './use-scale-background.js';
14
+ import { usePositionFixed } from './use-position-fixed.js';
15
+ import { isMobileFirefox, isIOS } from './browser.js';
16
+
17
+ globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
18
+ cache: /* @__PURE__ */ new Map(),
19
+ get(name, inst) {
20
+ if (this.cache.has(name)) {
21
+ return this.cache.get(name);
22
+ }
23
+ this.cache.set(name, inst);
24
+ return inst;
25
+ }
26
+ };
27
+ function Root({
28
+ open: openProp,
29
+ onOpenChange,
30
+ children,
31
+ onDrag: onDragProp,
32
+ onRelease: onReleaseProp,
33
+ snapPoints,
34
+ shouldScaleBackground = false,
35
+ setBackgroundColorOnScale = true,
36
+ closeThreshold = CLOSE_THRESHOLD,
37
+ scrollLockTimeout = SCROLL_LOCK_TIMEOUT,
38
+ dismissible = true,
39
+ handleOnly = false,
40
+ fadeFromIndex = snapPoints && snapPoints.length - 1,
41
+ activeSnapPoint: activeSnapPointProp,
42
+ setActiveSnapPoint: setActiveSnapPointProp,
43
+ fixed,
44
+ modal = true,
45
+ onClose,
46
+ nested,
47
+ noBodyStyles = false,
48
+ direction = "bottom",
49
+ defaultOpen = false,
50
+ disablePreventScroll = true,
51
+ snapToSequentialPoint = false,
52
+ preventScrollRestoration = false,
53
+ repositionInputs = true,
54
+ onAnimationEnd,
55
+ container,
56
+ autoFocus = false
57
+ }) {
58
+ const [isOpen = false, setIsOpen] = useControllableState({
59
+ defaultProp: defaultOpen,
60
+ prop: openProp,
61
+ onChange: (o) => {
62
+ onOpenChange?.(o);
63
+ if (!o && !nested) {
64
+ restorePositionSetting();
65
+ }
66
+ setTimeout(() => {
67
+ onAnimationEnd?.(o);
68
+ }, TRANSITIONS.DURATION * 1e3);
69
+ if (o && !modal) {
70
+ if (typeof window !== "undefined") {
71
+ window.requestAnimationFrame(() => {
72
+ document.body.style.pointerEvents = "auto";
73
+ });
74
+ }
75
+ }
76
+ if (!o) {
77
+ document.body.style.pointerEvents = "auto";
78
+ }
79
+ }
80
+ });
81
+ const [hasBeenOpened, setHasBeenOpened] = React__default.useState(false);
82
+ const [isDragging, setIsDragging] = React__default.useState(false);
83
+ const [justReleased, setJustReleased] = React__default.useState(false);
84
+ const overlayRef = React__default.useRef(null);
85
+ const openTime = React__default.useRef(null);
86
+ const dragStartTime = React__default.useRef(null);
87
+ const dragEndTime = React__default.useRef(null);
88
+ const lastTimeDragPrevented = React__default.useRef(null);
89
+ const isAllowedToDrag = React__default.useRef(false);
90
+ const nestedOpenChangeTimer = React__default.useRef(null);
91
+ const pointerStart = React__default.useRef(0);
92
+ const keyboardIsOpen = React__default.useRef(false);
93
+ const shouldAnimate = React__default.useRef(!defaultOpen);
94
+ const previousDiffFromInitial = React__default.useRef(0);
95
+ const drawerRef = React__default.useRef(null);
96
+ const drawerHeightRef = React__default.useRef(drawerRef.current?.getBoundingClientRect().height || 0);
97
+ const drawerWidthRef = React__default.useRef(drawerRef.current?.getBoundingClientRect().width || 0);
98
+ const initialDrawerHeight = React__default.useRef(0);
99
+ const onSnapPointChange = React__default.useCallback(
100
+ (activeSnapPointIndex2) => {
101
+ if (snapPoints && activeSnapPointIndex2 === snapPointsOffset.length - 1) openTime.current = /* @__PURE__ */ new Date();
102
+ },
103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
104
+ []
105
+ );
106
+ const {
107
+ activeSnapPoint,
108
+ activeSnapPointIndex,
109
+ setActiveSnapPoint,
110
+ onRelease: onReleaseSnapPoints,
111
+ snapPointsOffset,
112
+ onDrag: onDragSnapPoints,
113
+ shouldFade,
114
+ getPercentageDragged: getSnapPointsPercentageDragged
115
+ } = useSnapPoints({
116
+ snapPoints,
117
+ activeSnapPointProp,
118
+ setActiveSnapPointProp,
119
+ // @ts-expect-error: default values for context
120
+ drawerRef,
121
+ fadeFromIndex,
122
+ // @ts-expect-error: default values for context
123
+ overlayRef,
124
+ onSnapPointChange,
125
+ direction,
126
+ container,
127
+ snapToSequentialPoint
128
+ });
129
+ usePreventScroll({
130
+ isDisabled: !isOpen || isDragging || !modal || justReleased || !hasBeenOpened || !repositionInputs || !disablePreventScroll
131
+ });
132
+ const {
133
+ restorePositionSetting
134
+ } = usePositionFixed({
135
+ isOpen,
136
+ modal,
137
+ nested: nested ?? false,
138
+ hasBeenOpened,
139
+ preventScrollRestoration,
140
+ noBodyStyles
141
+ });
142
+ function getScale() {
143
+ return (window.innerWidth - WINDOW_TOP_OFFSET) / window.innerWidth;
144
+ }
145
+ function onPress(event) {
146
+ if (!dismissible && !snapPoints) return;
147
+ if (drawerRef.current && !drawerRef.current.contains(event.target)) return;
148
+ drawerHeightRef.current = drawerRef.current?.getBoundingClientRect().height || 0;
149
+ drawerWidthRef.current = drawerRef.current?.getBoundingClientRect().width || 0;
150
+ setIsDragging(true);
151
+ dragStartTime.current = /* @__PURE__ */ new Date();
152
+ if (isIOS()) {
153
+ window.addEventListener("touchend", () => isAllowedToDrag.current = false, {
154
+ once: true
155
+ });
156
+ }
157
+ event.target.setPointerCapture(event.pointerId);
158
+ pointerStart.current = isVertical(direction) ? event.pageY : event.pageX;
159
+ }
160
+ function shouldDrag(el, isDraggingInDirection) {
161
+ let element = el;
162
+ const highlightedText = window.getSelection()?.toString();
163
+ const swipeAmount = drawerRef.current ? getTranslate(drawerRef.current, direction) : null;
164
+ const date = /* @__PURE__ */ new Date();
165
+ if (element.tagName === "SELECT") {
166
+ return false;
167
+ }
168
+ if (element.hasAttribute("data-vaul-no-drag") || element.closest("[data-vaul-no-drag]")) {
169
+ return false;
170
+ }
171
+ if (direction === "right" || direction === "left") {
172
+ return true;
173
+ }
174
+ if (openTime.current && date.getTime() - openTime.current.getTime() < 500) {
175
+ return false;
176
+ }
177
+ if (swipeAmount !== null) {
178
+ if (direction === "bottom" ? swipeAmount > 0 : swipeAmount < 0) {
179
+ return true;
180
+ }
181
+ }
182
+ if (highlightedText && highlightedText.length > 0) {
183
+ return false;
184
+ }
185
+ if (lastTimeDragPrevented.current && date.getTime() - lastTimeDragPrevented.current.getTime() < scrollLockTimeout && swipeAmount === 0) {
186
+ lastTimeDragPrevented.current = date;
187
+ return false;
188
+ }
189
+ if (isDraggingInDirection) {
190
+ lastTimeDragPrevented.current = date;
191
+ return false;
192
+ }
193
+ while (element) {
194
+ if (element.scrollHeight > element.clientHeight) {
195
+ if (element.scrollTop !== 0) {
196
+ lastTimeDragPrevented.current = /* @__PURE__ */ new Date();
197
+ return false;
198
+ }
199
+ if (element.getAttribute("role") === "dialog") {
200
+ return true;
201
+ }
202
+ }
203
+ element = element.parentNode;
204
+ }
205
+ return true;
206
+ }
207
+ function onDrag(event) {
208
+ if (!drawerRef.current) {
209
+ return;
210
+ }
211
+ if (isDragging) {
212
+ const directionMultiplier = direction === "bottom" || direction === "right" ? 1 : -1;
213
+ const draggedDistance = (pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX)) * directionMultiplier;
214
+ const isDraggingInDirection = draggedDistance > 0;
215
+ const noCloseSnapPointsPreCondition = snapPoints && !dismissible && !isDraggingInDirection;
216
+ if (noCloseSnapPointsPreCondition && activeSnapPointIndex === 0) return;
217
+ const absDraggedDistance = Math.abs(draggedDistance);
218
+ const wrapper = document.querySelector("[data-vaul-drawer-wrapper]");
219
+ const drawerDimension = direction === "bottom" || direction === "top" ? drawerHeightRef.current : drawerWidthRef.current;
220
+ let percentageDragged = absDraggedDistance / drawerDimension;
221
+ const snapPointPercentageDragged = getSnapPointsPercentageDragged(absDraggedDistance, isDraggingInDirection);
222
+ if (snapPointPercentageDragged !== null) {
223
+ percentageDragged = snapPointPercentageDragged;
224
+ }
225
+ if (noCloseSnapPointsPreCondition && percentageDragged >= 1) {
226
+ return;
227
+ }
228
+ if (!isAllowedToDrag.current && !shouldDrag(event.target, isDraggingInDirection)) return;
229
+ drawerRef.current.classList.add(DRAG_CLASS);
230
+ isAllowedToDrag.current = true;
231
+ set(drawerRef.current, {
232
+ transition: "none"
233
+ });
234
+ set(overlayRef.current, {
235
+ transition: "none"
236
+ });
237
+ if (snapPoints) {
238
+ onDragSnapPoints({
239
+ draggedDistance
240
+ });
241
+ }
242
+ if (isDraggingInDirection && !snapPoints) {
243
+ const dampenedDraggedDistance = dampenValue(draggedDistance);
244
+ const translateValue = Math.min(dampenedDraggedDistance * -1, 0) * directionMultiplier;
245
+ set(drawerRef.current, {
246
+ transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`
247
+ });
248
+ return;
249
+ }
250
+ const opacityValue = 1 - percentageDragged;
251
+ if (shouldFade || fadeFromIndex && activeSnapPointIndex === fadeFromIndex - 1) {
252
+ onDragProp?.(event, percentageDragged);
253
+ set(overlayRef.current, {
254
+ opacity: `${opacityValue}`,
255
+ transition: "none"
256
+ }, true);
257
+ }
258
+ if (wrapper && overlayRef.current && shouldScaleBackground) {
259
+ const scaleValue = Math.min(getScale() + percentageDragged * (1 - getScale()), 1);
260
+ const borderRadiusValue = 8 - percentageDragged * 8;
261
+ const translateValue = Math.max(0, 14 - percentageDragged * 14);
262
+ set(wrapper, {
263
+ borderRadius: `${borderRadiusValue}px`,
264
+ transform: isVertical(direction) ? `scale(${scaleValue}) translate3d(0, ${translateValue}px, 0)` : `scale(${scaleValue}) translate3d(${translateValue}px, 0, 0)`,
265
+ transition: "none"
266
+ }, true);
267
+ }
268
+ if (!snapPoints) {
269
+ const translateValue = absDraggedDistance * directionMultiplier;
270
+ set(drawerRef.current, {
271
+ transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`
272
+ });
273
+ }
274
+ }
275
+ }
276
+ React__default.useEffect(() => {
277
+ window.requestAnimationFrame(() => {
278
+ shouldAnimate.current = true;
279
+ });
280
+ }, []);
281
+ React__default.useEffect(() => {
282
+ function onVisualViewportChange() {
283
+ if (!drawerRef.current || !repositionInputs) return;
284
+ const focusedElement = document.activeElement;
285
+ if (isInput(focusedElement) || keyboardIsOpen.current) {
286
+ const visualViewportHeight = window.visualViewport?.height || 0;
287
+ const totalHeight = window.innerHeight;
288
+ let diffFromInitial = totalHeight - visualViewportHeight;
289
+ const drawerHeight = drawerRef.current.getBoundingClientRect().height || 0;
290
+ const isTallEnough = drawerHeight > totalHeight * 0.8;
291
+ if (!initialDrawerHeight.current) {
292
+ initialDrawerHeight.current = drawerHeight;
293
+ }
294
+ const offsetFromTop = drawerRef.current.getBoundingClientRect().top;
295
+ if (Math.abs(previousDiffFromInitial.current - diffFromInitial) > 60) {
296
+ keyboardIsOpen.current = !keyboardIsOpen.current;
297
+ }
298
+ if (snapPoints && snapPoints.length > 0 && snapPointsOffset && activeSnapPointIndex) {
299
+ const activeSnapPointHeight = snapPointsOffset[activeSnapPointIndex] || 0;
300
+ diffFromInitial += activeSnapPointHeight;
301
+ }
302
+ previousDiffFromInitial.current = diffFromInitial;
303
+ if (drawerHeight > visualViewportHeight || keyboardIsOpen.current) {
304
+ const height = drawerRef.current.getBoundingClientRect().height;
305
+ let newDrawerHeight = height;
306
+ if (height > visualViewportHeight) {
307
+ newDrawerHeight = visualViewportHeight - (isTallEnough ? offsetFromTop : WINDOW_TOP_OFFSET);
308
+ }
309
+ if (fixed) {
310
+ drawerRef.current.style.height = `${height - Math.max(diffFromInitial, 0)}px`;
311
+ } else {
312
+ drawerRef.current.style.height = `${Math.max(newDrawerHeight, visualViewportHeight - offsetFromTop)}px`;
313
+ }
314
+ } else if (!isMobileFirefox()) {
315
+ drawerRef.current.style.height = `${initialDrawerHeight.current}px`;
316
+ }
317
+ if (snapPoints && snapPoints.length > 0 && !keyboardIsOpen.current) {
318
+ drawerRef.current.style.bottom = `0px`;
319
+ } else {
320
+ drawerRef.current.style.bottom = `${Math.max(diffFromInitial, 0)}px`;
321
+ }
322
+ }
323
+ }
324
+ window.visualViewport?.addEventListener("resize", onVisualViewportChange);
325
+ return () => window.visualViewport?.removeEventListener("resize", onVisualViewportChange);
326
+ }, [activeSnapPointIndex, snapPoints, snapPointsOffset]);
327
+ function closeDrawer(fromWithin) {
328
+ cancelDrag();
329
+ onClose?.();
330
+ if (!fromWithin) {
331
+ setIsOpen(false);
332
+ }
333
+ setTimeout(() => {
334
+ if (snapPoints) {
335
+ setActiveSnapPoint(snapPoints[0]);
336
+ }
337
+ }, TRANSITIONS.DURATION * 1e3);
338
+ }
339
+ function resetDrawer() {
340
+ if (!drawerRef.current) return;
341
+ const wrapper = document.querySelector("[data-vaul-drawer-wrapper]");
342
+ const currentSwipeAmount = getTranslate(drawerRef.current, direction);
343
+ set(drawerRef.current, {
344
+ transform: "translate3d(0, 0, 0)",
345
+ transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(",")})`
346
+ });
347
+ set(overlayRef.current, {
348
+ transition: `opacity ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(",")})`,
349
+ opacity: "1"
350
+ });
351
+ if (shouldScaleBackground && currentSwipeAmount && currentSwipeAmount > 0 && isOpen) {
352
+ set(wrapper, {
353
+ borderRadius: `${BORDER_RADIUS}px`,
354
+ overflow: "hidden",
355
+ ...isVertical(direction) ? {
356
+ transform: `scale(${getScale()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,
357
+ transformOrigin: "top"
358
+ } : {
359
+ transform: `scale(${getScale()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,
360
+ transformOrigin: "left"
361
+ },
362
+ transitionProperty: "transform, border-radius",
363
+ transitionDuration: `${TRANSITIONS.DURATION}s`,
364
+ transitionTimingFunction: `cubic-bezier(${TRANSITIONS.EASE.join(",")})`
365
+ }, true);
366
+ }
367
+ }
368
+ function cancelDrag() {
369
+ if (!isDragging || !drawerRef.current) return;
370
+ drawerRef.current.classList.remove(DRAG_CLASS);
371
+ isAllowedToDrag.current = false;
372
+ setIsDragging(false);
373
+ dragEndTime.current = /* @__PURE__ */ new Date();
374
+ }
375
+ function onRelease(event) {
376
+ if (!isDragging || !drawerRef.current) return;
377
+ drawerRef.current.classList.remove(DRAG_CLASS);
378
+ isAllowedToDrag.current = false;
379
+ setIsDragging(false);
380
+ dragEndTime.current = /* @__PURE__ */ new Date();
381
+ const swipeAmount = getTranslate(drawerRef.current, direction);
382
+ if (!event || !shouldDrag(event.target, false) || !swipeAmount || Number.isNaN(swipeAmount)) return;
383
+ if (dragStartTime.current === null) return;
384
+ const timeTaken = dragEndTime.current.getTime() - dragStartTime.current.getTime();
385
+ const distMoved = pointerStart.current - (isVertical(direction) ? event.pageY : event.pageX);
386
+ const velocity = Math.abs(distMoved) / timeTaken;
387
+ if (velocity > 0.05) {
388
+ setJustReleased(true);
389
+ setTimeout(() => {
390
+ setJustReleased(false);
391
+ }, 200);
392
+ }
393
+ if (snapPoints) {
394
+ const directionMultiplier = direction === "bottom" || direction === "right" ? 1 : -1;
395
+ onReleaseSnapPoints({
396
+ draggedDistance: distMoved * directionMultiplier,
397
+ closeDrawer,
398
+ velocity,
399
+ dismissible
400
+ });
401
+ onReleaseProp?.(event, true);
402
+ return;
403
+ }
404
+ if (direction === "bottom" || direction === "right" ? distMoved > 0 : distMoved < 0) {
405
+ resetDrawer();
406
+ onReleaseProp?.(event, true);
407
+ return;
408
+ }
409
+ if (velocity > VELOCITY_THRESHOLD) {
410
+ closeDrawer();
411
+ onReleaseProp?.(event, false);
412
+ return;
413
+ }
414
+ const visibleDrawerHeight = Math.min(drawerRef.current.getBoundingClientRect().height ?? 0, window.innerHeight);
415
+ const visibleDrawerWidth = Math.min(drawerRef.current.getBoundingClientRect().width ?? 0, window.innerWidth);
416
+ const isHorizontalSwipe = direction === "left" || direction === "right";
417
+ if (Math.abs(swipeAmount) >= (isHorizontalSwipe ? visibleDrawerWidth : visibleDrawerHeight) * closeThreshold) {
418
+ closeDrawer();
419
+ onReleaseProp?.(event, false);
420
+ return;
421
+ }
422
+ onReleaseProp?.(event, true);
423
+ resetDrawer();
424
+ }
425
+ React__default.useEffect(() => {
426
+ if (isOpen) {
427
+ set(document.documentElement, {
428
+ scrollBehavior: "auto"
429
+ });
430
+ openTime.current = /* @__PURE__ */ new Date();
431
+ }
432
+ return () => {
433
+ reset(document.documentElement, "scrollBehavior");
434
+ };
435
+ }, [isOpen]);
436
+ function onNestedOpenChange(o) {
437
+ const scale = o ? (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth : 1;
438
+ const initialTranslate = o ? -NESTED_DISPLACEMENT : 0;
439
+ if (nestedOpenChangeTimer.current) {
440
+ window.clearTimeout(nestedOpenChangeTimer.current);
441
+ }
442
+ set(drawerRef.current, {
443
+ transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(",")})`,
444
+ transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${initialTranslate}px, 0)` : `scale(${scale}) translate3d(${initialTranslate}px, 0, 0)`
445
+ });
446
+ if (!o && drawerRef.current) {
447
+ nestedOpenChangeTimer.current = setTimeout(() => {
448
+ const translateValue = getTranslate(drawerRef.current, direction);
449
+ set(drawerRef.current, {
450
+ transition: "none",
451
+ transform: isVertical(direction) ? `translate3d(0, ${translateValue}px, 0)` : `translate3d(${translateValue}px, 0, 0)`
452
+ });
453
+ }, 500);
454
+ }
455
+ }
456
+ function onNestedDrag(_event, percentageDragged) {
457
+ if (percentageDragged < 0) return;
458
+ const initialScale = (window.innerWidth - NESTED_DISPLACEMENT) / window.innerWidth;
459
+ const newScale = initialScale + percentageDragged * (1 - initialScale);
460
+ const newTranslate = -NESTED_DISPLACEMENT + percentageDragged * NESTED_DISPLACEMENT;
461
+ set(drawerRef.current, {
462
+ transform: isVertical(direction) ? `scale(${newScale}) translate3d(0, ${newTranslate}px, 0)` : `scale(${newScale}) translate3d(${newTranslate}px, 0, 0)`,
463
+ transition: "none"
464
+ });
465
+ }
466
+ function onNestedRelease(_event, o) {
467
+ const dim = isVertical(direction) ? window.innerHeight : window.innerWidth;
468
+ const scale = o ? (dim - NESTED_DISPLACEMENT) / dim : 1;
469
+ const translate = o ? -NESTED_DISPLACEMENT : 0;
470
+ if (o) {
471
+ set(drawerRef.current, {
472
+ transition: `transform ${TRANSITIONS.DURATION}s cubic-bezier(${TRANSITIONS.EASE.join(",")})`,
473
+ transform: isVertical(direction) ? `scale(${scale}) translate3d(0, ${translate}px, 0)` : `scale(${scale}) translate3d(${translate}px, 0, 0)`
474
+ });
475
+ }
476
+ }
477
+ React__default.useEffect(() => {
478
+ if (!modal) {
479
+ window.requestAnimationFrame(() => {
480
+ document.body.style.pointerEvents = "auto";
481
+ });
482
+ }
483
+ }, [modal]);
484
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { defaultOpen, onOpenChange: (open) => {
485
+ if (!dismissible && !open) return;
486
+ if (open) {
487
+ setHasBeenOpened(true);
488
+ } else {
489
+ closeDrawer(true);
490
+ }
491
+ setIsOpen(open);
492
+ }, open: isOpen, modal, children: /* @__PURE__ */ jsx(DrawerContext.Provider, { value: {
493
+ activeSnapPoint,
494
+ snapPoints,
495
+ setActiveSnapPoint,
496
+ // @ts-expect-error: default values for context
497
+ drawerRef,
498
+ // @ts-expect-error: default values for context
499
+ overlayRef,
500
+ onOpenChange,
501
+ onPress,
502
+ onRelease,
503
+ onDrag,
504
+ dismissible,
505
+ shouldAnimate,
506
+ handleOnly,
507
+ isOpen,
508
+ isDragging,
509
+ shouldFade,
510
+ closeDrawer,
511
+ onNestedDrag,
512
+ onNestedOpenChange,
513
+ onNestedRelease,
514
+ keyboardIsOpen,
515
+ modal,
516
+ snapPointsOffset,
517
+ activeSnapPointIndex,
518
+ direction,
519
+ shouldScaleBackground,
520
+ setBackgroundColorOnScale,
521
+ noBodyStyles,
522
+ container,
523
+ autoFocus
524
+ }, children }) });
525
+ }
526
+ const Overlay = React__default.forwardRef(function(t0, ref) {
527
+ const $ = distExports.c(11);
528
+ let rest;
529
+ if ($[0] !== t0) {
530
+ ({
531
+ ...rest
532
+ } = t0);
533
+ $[0] = t0;
534
+ $[1] = rest;
535
+ } else {
536
+ rest = $[1];
537
+ }
538
+ const {
539
+ overlayRef,
540
+ snapPoints,
541
+ onRelease,
542
+ shouldFade,
543
+ isOpen,
544
+ modal,
545
+ shouldAnimate
546
+ } = useDrawerContext();
547
+ const composedRef = useComposedRefs(ref, overlayRef);
548
+ const hasSnapPoints = snapPoints && snapPoints.length > 0;
549
+ let t1;
550
+ if ($[2] !== onRelease) {
551
+ t1 = (event) => onRelease(event);
552
+ $[2] = onRelease;
553
+ $[3] = t1;
554
+ } else {
555
+ t1 = $[3];
556
+ }
557
+ const onMouseUp = t1;
558
+ if (!modal) {
559
+ return null;
560
+ }
561
+ const t2 = isOpen && hasSnapPoints ? "true" : "false";
562
+ const t3 = isOpen && shouldFade ? "true" : "false";
563
+ const t4 = shouldAnimate?.current ? "true" : "false";
564
+ let t5;
565
+ if ($[4] !== composedRef || $[5] !== onMouseUp || $[6] !== rest || $[7] !== t2 || $[8] !== t3 || $[9] !== t4) {
566
+ t5 = /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { onMouseUp, ref: composedRef, "data-vaul-overlay": "", "data-vaul-snap-points": t2, "data-vaul-snap-points-overlay": t3, "data-vaul-animate": t4, ...rest });
567
+ $[4] = composedRef;
568
+ $[5] = onMouseUp;
569
+ $[6] = rest;
570
+ $[7] = t2;
571
+ $[8] = t3;
572
+ $[9] = t4;
573
+ $[10] = t5;
574
+ } else {
575
+ t5 = $[10];
576
+ }
577
+ return t5;
578
+ });
579
+ Overlay.displayName = "Drawer.Overlay";
580
+ const Content = React__default.forwardRef(function({
581
+ onPointerDownOutside,
582
+ style,
583
+ onOpenAutoFocus,
584
+ ...rest
585
+ }, ref) {
586
+ const {
587
+ drawerRef,
588
+ onPress,
589
+ onRelease,
590
+ onDrag,
591
+ keyboardIsOpen,
592
+ snapPointsOffset,
593
+ activeSnapPointIndex,
594
+ modal,
595
+ isOpen,
596
+ direction,
597
+ snapPoints,
598
+ container,
599
+ handleOnly,
600
+ shouldAnimate,
601
+ autoFocus
602
+ } = useDrawerContext();
603
+ const [delayedSnapPoints, setDelayedSnapPoints] = React__default.useState(false);
604
+ const composedRef = useComposedRefs(ref, drawerRef);
605
+ const pointerStartRef = React__default.useRef(null);
606
+ const lastKnownPointerEventRef = React__default.useRef(null);
607
+ const wasBeyondThePointRef = React__default.useRef(false);
608
+ const hasSnapPoints = snapPoints && snapPoints.length > 0;
609
+ useScaleBackground();
610
+ const isDeltaInDirection = (delta, direction2, threshold = 0) => {
611
+ if (wasBeyondThePointRef.current) return true;
612
+ const deltaY = Math.abs(delta.y);
613
+ const deltaX = Math.abs(delta.x);
614
+ const isDeltaX = deltaX > deltaY;
615
+ const dFactor = ["bottom", "right"].includes(direction2) ? 1 : -1;
616
+ if (direction2 === "left" || direction2 === "right") {
617
+ const isReverseDirection = delta.x * dFactor < 0;
618
+ if (!isReverseDirection && deltaX >= 0 && deltaX <= threshold) {
619
+ return isDeltaX;
620
+ }
621
+ } else {
622
+ const isReverseDirection = delta.y * dFactor < 0;
623
+ if (!isReverseDirection && deltaY >= 0 && deltaY <= threshold) {
624
+ return !isDeltaX;
625
+ }
626
+ }
627
+ wasBeyondThePointRef.current = true;
628
+ return true;
629
+ };
630
+ React__default.useEffect(() => {
631
+ if (hasSnapPoints) {
632
+ window.requestAnimationFrame(() => {
633
+ setDelayedSnapPoints(true);
634
+ });
635
+ }
636
+ }, []);
637
+ function handleOnPointerUp(event) {
638
+ pointerStartRef.current = null;
639
+ wasBeyondThePointRef.current = false;
640
+ onRelease(event);
641
+ }
642
+ return /* @__PURE__ */ jsx(DialogPrimitive.Content, { "data-vaul-drawer-direction": direction, "data-vaul-drawer": "", "data-vaul-delayed-snap-points": delayedSnapPoints ? "true" : "false", "data-vaul-snap-points": isOpen && hasSnapPoints ? "true" : "false", "data-vaul-custom-container": container ? "true" : "false", "data-vaul-animate": shouldAnimate?.current ? "true" : "false", ...rest, ref: composedRef, style: snapPointsOffset && snapPointsOffset.length > 0 ? {
643
+ "--snap-point-height": `${snapPointsOffset[activeSnapPointIndex ?? 0]}px`,
644
+ ...style
645
+ } : style, onPointerDown: (event) => {
646
+ if (handleOnly) return;
647
+ rest.onPointerDown?.(event);
648
+ pointerStartRef.current = {
649
+ x: event.pageX,
650
+ y: event.pageY
651
+ };
652
+ onPress(event);
653
+ }, onOpenAutoFocus: (e) => {
654
+ onOpenAutoFocus?.(e);
655
+ if (!autoFocus) {
656
+ e.preventDefault();
657
+ }
658
+ }, onPointerDownOutside: (e) => {
659
+ onPointerDownOutside?.(e);
660
+ if (!modal || e.defaultPrevented) {
661
+ e.preventDefault();
662
+ return;
663
+ }
664
+ if (keyboardIsOpen.current) {
665
+ keyboardIsOpen.current = false;
666
+ }
667
+ }, onFocusOutside: (e) => {
668
+ if (!modal) {
669
+ e.preventDefault();
670
+ return;
671
+ }
672
+ }, onPointerMove: (event) => {
673
+ lastKnownPointerEventRef.current = event;
674
+ if (handleOnly) return;
675
+ rest.onPointerMove?.(event);
676
+ if (!pointerStartRef.current) return;
677
+ const yPosition = event.pageY - pointerStartRef.current.y;
678
+ const xPosition = event.pageX - pointerStartRef.current.x;
679
+ const swipeStartThreshold = event.pointerType === "touch" ? 10 : 2;
680
+ const delta = {
681
+ x: xPosition,
682
+ y: yPosition
683
+ };
684
+ const isAllowedToSwipe = isDeltaInDirection(delta, direction, swipeStartThreshold);
685
+ if (isAllowedToSwipe) onDrag(event);
686
+ else if (Math.abs(xPosition) > swipeStartThreshold || Math.abs(yPosition) > swipeStartThreshold) {
687
+ pointerStartRef.current = null;
688
+ }
689
+ }, onPointerUp: (event) => {
690
+ rest.onPointerUp?.(event);
691
+ pointerStartRef.current = null;
692
+ wasBeyondThePointRef.current = false;
693
+ onRelease(event);
694
+ }, onPointerOut: (event) => {
695
+ rest.onPointerOut?.(event);
696
+ handleOnPointerUp(lastKnownPointerEventRef.current);
697
+ }, onContextMenu: (event) => {
698
+ rest.onContextMenu?.(event);
699
+ if (lastKnownPointerEventRef.current) {
700
+ handleOnPointerUp(lastKnownPointerEventRef.current);
701
+ }
702
+ } });
703
+ });
704
+ Content.displayName = "Drawer.Content";
705
+ const LONG_HANDLE_PRESS_TIMEOUT = 250;
706
+ const DOUBLE_TAP_TIMEOUT = 120;
707
+ const Handle = React__default.forwardRef(function({
708
+ preventCycle = false,
709
+ children,
710
+ ...rest
711
+ }, ref) {
712
+ const {
713
+ closeDrawer,
714
+ isDragging,
715
+ snapPoints,
716
+ activeSnapPoint,
717
+ setActiveSnapPoint,
718
+ dismissible,
719
+ handleOnly,
720
+ isOpen,
721
+ onPress,
722
+ onDrag
723
+ } = useDrawerContext();
724
+ const closeTimeoutIdRef = React__default.useRef(null);
725
+ const shouldCancelInteractionRef = React__default.useRef(false);
726
+ function handleStartCycle() {
727
+ if (shouldCancelInteractionRef.current) {
728
+ handleCancelInteraction();
729
+ return;
730
+ }
731
+ window.setTimeout(() => {
732
+ handleCycleSnapPoints();
733
+ }, DOUBLE_TAP_TIMEOUT);
734
+ }
735
+ function handleCycleSnapPoints() {
736
+ if (isDragging || preventCycle || shouldCancelInteractionRef.current) {
737
+ handleCancelInteraction();
738
+ return;
739
+ }
740
+ handleCancelInteraction();
741
+ if (!snapPoints || snapPoints.length === 0) {
742
+ if (!dismissible) {
743
+ closeDrawer();
744
+ }
745
+ return;
746
+ }
747
+ const isLastSnapPoint = activeSnapPoint === snapPoints[snapPoints.length - 1];
748
+ if (isLastSnapPoint && dismissible) {
749
+ closeDrawer();
750
+ return;
751
+ }
752
+ const currentSnapIndex = snapPoints.findIndex((point) => point === activeSnapPoint);
753
+ if (currentSnapIndex === -1) return;
754
+ const nextSnapPoint = snapPoints[currentSnapIndex + 1];
755
+ setActiveSnapPoint(nextSnapPoint);
756
+ }
757
+ function handleStartInteraction() {
758
+ closeTimeoutIdRef.current = window.setTimeout(() => {
759
+ shouldCancelInteractionRef.current = true;
760
+ }, LONG_HANDLE_PRESS_TIMEOUT);
761
+ }
762
+ function handleCancelInteraction() {
763
+ if (closeTimeoutIdRef.current) {
764
+ window.clearTimeout(closeTimeoutIdRef.current);
765
+ }
766
+ shouldCancelInteractionRef.current = false;
767
+ }
768
+ return /* @__PURE__ */ jsx(
769
+ "div",
770
+ {
771
+ onClick: handleStartCycle,
772
+ onPointerCancel: handleCancelInteraction,
773
+ onPointerDown: (e) => {
774
+ if (handleOnly) onPress(e);
775
+ handleStartInteraction();
776
+ },
777
+ onPointerMove: (e_0) => {
778
+ if (handleOnly) onDrag(e_0);
779
+ },
780
+ ref,
781
+ "data-vaul-drawer-visible": isOpen ? "true" : "false",
782
+ "data-vaul-handle": "",
783
+ "aria-hidden": "true",
784
+ ...rest,
785
+ children: /* @__PURE__ */ jsx("span", { "data-vaul-handle-hitarea": "", "aria-hidden": "true", children })
786
+ }
787
+ );
788
+ });
789
+ Handle.displayName = "Drawer.Handle";
790
+ function Portal(props) {
791
+ const context = useDrawerContext();
792
+ const {
793
+ container = context.container,
794
+ ...portalProps
795
+ } = props;
796
+ return /* @__PURE__ */ jsx(DialogPrimitive.Portal, { container, ...portalProps });
797
+ }
798
+ const Drawer = {
799
+ Root,
800
+ Content,
801
+ Overlay,
802
+ Portal,
803
+ Close: DialogPrimitive.Close,
804
+ Title: DialogPrimitive.Title};
805
+
806
+ export { Content, Drawer, Handle, Overlay, Portal, Root };
807
+ //# sourceMappingURL=index.js.map