@blockle/blocks 0.19.0 → 0.20.0-alpha1

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 (283) hide show
  1. package/dist/components/accessibility/VisuallyHidden/VisuallyHidden.cjs +19 -0
  2. package/dist/components/accessibility/VisuallyHidden/VisuallyHidden.mjs +20 -0
  3. package/dist/components/accessibility/VisuallyHidden/index.cjs +1 -0
  4. package/dist/components/accessibility/VisuallyHidden/index.mjs +1 -0
  5. package/dist/{styles/components/Accessibility → components/accessibility}/VisuallyHidden/visually-hidden.css.cjs +1 -1
  6. package/dist/{styles/components/Accessibility → components/accessibility}/VisuallyHidden/visually-hidden.css.mjs +1 -1
  7. package/dist/components/display/Divider/Divider.cjs +25 -0
  8. package/dist/components/display/Divider/Divider.mjs +26 -0
  9. package/dist/{styles/components → components}/display/Divider/divider.css.cjs +2 -2
  10. package/dist/components/display/Divider/index.cjs +1 -0
  11. package/dist/components/display/Divider/index.mjs +1 -0
  12. package/dist/components/feedback/Progress/Progress.cjs +53 -0
  13. package/dist/components/feedback/Progress/Progress.mjs +54 -0
  14. package/dist/components/feedback/Progress/index.cjs +1 -0
  15. package/dist/components/feedback/Progress/index.mjs +1 -0
  16. package/dist/components/feedback/Spinner/Spinner.cjs +25 -0
  17. package/dist/components/feedback/Spinner/Spinner.mjs +26 -0
  18. package/dist/components/feedback/Spinner/index.cjs +1 -0
  19. package/dist/components/feedback/Spinner/index.mjs +1 -0
  20. package/dist/components/form/Button/Button.cjs +58 -0
  21. package/dist/{styles/components → components}/form/Button/Button.css.cjs +2 -2
  22. package/dist/{styles/components → components}/form/Button/Button.mjs +13 -11
  23. package/dist/components/form/Button/index.cjs +1 -0
  24. package/dist/components/form/Button/index.mjs +1 -0
  25. package/dist/components/form/Checkbox/Checkbox.cjs +78 -0
  26. package/dist/components/form/Checkbox/Checkbox.mjs +79 -0
  27. package/dist/{styles/components → components}/form/Checkbox/checkbox.css.cjs +3 -3
  28. package/dist/components/form/Checkbox/index.cjs +1 -0
  29. package/dist/components/form/Checkbox/index.mjs +1 -0
  30. package/dist/components/form/Input/Input.cjs +50 -0
  31. package/dist/components/form/Input/Input.mjs +51 -0
  32. package/dist/components/form/Input/index.cjs +1 -0
  33. package/dist/components/form/Input/index.mjs +1 -0
  34. package/dist/{styles/components → components}/form/Input/input.css.cjs +2 -2
  35. package/dist/components/form/Label/Label.cjs +29 -0
  36. package/dist/components/form/Label/Label.mjs +30 -0
  37. package/dist/components/form/Label/index.cjs +1 -0
  38. package/dist/components/form/Label/index.mjs +1 -0
  39. package/dist/components/form/Radio/Radio.cjs +47 -0
  40. package/dist/components/form/Radio/Radio.mjs +48 -0
  41. package/dist/components/form/Radio/RadioGroup.cjs +1 -0
  42. package/dist/components/form/Radio/RadioGroup.mjs +1 -0
  43. package/dist/components/form/Radio/index.cjs +1 -0
  44. package/dist/components/form/Radio/index.mjs +1 -0
  45. package/dist/{styles/components → components}/form/Radio/radio.css.cjs +3 -3
  46. package/dist/components/form/Select/Select.cjs +64 -0
  47. package/dist/{styles/components → components}/form/Select/Select.mjs +23 -6
  48. package/dist/components/form/Select/index.cjs +1 -0
  49. package/dist/components/form/Select/index.mjs +1 -0
  50. package/dist/{styles/components → components}/form/Select/select.css.cjs +4 -4
  51. package/dist/components/form/Slider/Slider.cjs +139 -0
  52. package/dist/components/form/Slider/Slider.mjs +142 -0
  53. package/dist/components/form/Slider/index.cjs +1 -0
  54. package/dist/components/form/Slider/index.mjs +1 -0
  55. package/dist/{styles/components → components}/form/Slider/slider.css.cjs +6 -6
  56. package/dist/components/form/Slider/usePointerProgress.cjs +44 -0
  57. package/dist/components/form/Slider/usePointerProgress.mjs +45 -0
  58. package/dist/{styles/components → components}/form/Switch/Switch.cjs +10 -8
  59. package/dist/{styles/components → components}/form/Switch/Switch.mjs +9 -5
  60. package/dist/components/form/Switch/index.cjs +1 -0
  61. package/dist/components/form/Switch/index.mjs +1 -0
  62. package/dist/{styles/components → components}/form/Switch/switch.css.cjs +3 -3
  63. package/dist/components/layout/Box/Box.cjs +27 -0
  64. package/dist/components/layout/Box/Box.mjs +28 -0
  65. package/dist/components/layout/Box/index.cjs +1 -0
  66. package/dist/components/layout/Box/index.mjs +1 -0
  67. package/dist/components/layout/Inline/Inline.cjs +29 -0
  68. package/dist/components/layout/Inline/Inline.mjs +30 -0
  69. package/dist/components/layout/Inline/index.cjs +1 -0
  70. package/dist/components/layout/Inline/index.mjs +1 -0
  71. package/dist/components/layout/Stack/Stack.cjs +29 -0
  72. package/dist/components/layout/Stack/Stack.mjs +30 -0
  73. package/dist/components/layout/Stack/index.cjs +1 -0
  74. package/dist/components/layout/Stack/index.mjs +1 -0
  75. package/dist/components/navigation/Link/Link.cjs +31 -0
  76. package/dist/components/navigation/Link/Link.mjs +32 -0
  77. package/dist/components/navigation/Link/index.cjs +1 -0
  78. package/dist/components/navigation/Link/index.mjs +1 -0
  79. package/dist/components/other/BlocksProvider/BlocksProvider.cjs +36 -0
  80. package/dist/components/other/BlocksProvider/BlocksProvider.mjs +39 -0
  81. package/dist/components/other/BlocksProvider/context.cjs +4 -0
  82. package/dist/components/other/BlocksProvider/context.mjs +7 -0
  83. package/dist/components/other/BlocksProvider/index.cjs +1 -0
  84. package/dist/components/other/BlocksProvider/index.mjs +1 -0
  85. package/dist/components/other/Portal/Portal.cjs +7 -0
  86. package/dist/components/other/Portal/Portal.mjs +8 -0
  87. package/dist/components/other/Portal/index.cjs +1 -0
  88. package/dist/components/other/Portal/index.mjs +1 -0
  89. package/dist/components/overlay/Dialog/Dialog.cjs +77 -0
  90. package/dist/components/overlay/Dialog/Dialog.mjs +80 -0
  91. package/dist/{styles/components → components}/overlay/Dialog/dialog.css.cjs +2 -2
  92. package/dist/components/overlay/Dialog/dialogHelper.cjs +20 -0
  93. package/dist/components/overlay/Dialog/dialogHelper.mjs +21 -0
  94. package/dist/components/overlay/Dialog/index.cjs +1 -0
  95. package/dist/components/overlay/Dialog/index.mjs +1 -0
  96. package/dist/components/overlay/Popover/Popover.cjs +111 -0
  97. package/dist/components/overlay/Popover/Popover.mjs +112 -0
  98. package/dist/components/overlay/Popover/popover-utils.cjs +61 -0
  99. package/dist/components/overlay/Popover/popover-utils.mjs +62 -0
  100. package/dist/components/overlay/Tooltip/Tooltip.cjs +71 -0
  101. package/dist/components/overlay/Tooltip/Tooltip.mjs +74 -0
  102. package/dist/components/overlay/Tooltip/index.cjs +1 -0
  103. package/dist/components/overlay/Tooltip/index.mjs +1 -0
  104. package/dist/components/typography/Heading/Heading.cjs +23 -0
  105. package/dist/components/typography/Heading/Heading.mjs +24 -0
  106. package/dist/{styles/components → components}/typography/Heading/heading.css.cjs +2 -2
  107. package/dist/components/typography/Heading/index.cjs +1 -0
  108. package/dist/components/typography/Heading/index.mjs +1 -0
  109. package/dist/components/typography/Text/Text.cjs +20 -0
  110. package/dist/{styles/components → components}/typography/Text/Text.mjs +2 -2
  111. package/dist/components/typography/Text/index.cjs +1 -0
  112. package/dist/components/typography/Text/index.mjs +1 -0
  113. package/dist/{styles/components → components}/typography/Text/text.css.cjs +2 -2
  114. package/dist/hooks/useClickOutside/useClickOutside.cjs +22 -0
  115. package/dist/hooks/useClickOutside/useClickOutside.mjs +23 -0
  116. package/dist/hooks/useControlledValue/useControlledValue.cjs +31 -0
  117. package/dist/hooks/useControlledValue/useControlledValue.mjs +32 -0
  118. package/dist/hooks/useIsomorphicLayoutEffect/index.cjs +1 -0
  119. package/dist/hooks/useIsomorphicLayoutEffect/index.mjs +1 -0
  120. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +4 -0
  121. package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +7 -0
  122. package/dist/hooks/useKeyboard/index.cjs +1 -0
  123. package/dist/hooks/useKeyboard/index.mjs +1 -0
  124. package/dist/hooks/useKeyboard/useKeyboard.cjs +19 -0
  125. package/dist/hooks/useKeyboard/useKeyboard.mjs +22 -0
  126. package/dist/hooks/useLayer/index.cjs +1 -0
  127. package/dist/hooks/useLayer/index.mjs +1 -0
  128. package/dist/hooks/useLayer/useLayer.cjs +25 -0
  129. package/dist/hooks/useLayer/useLayer.mjs +26 -0
  130. package/dist/hooks/usePreventBodyScroll/index.cjs +1 -0
  131. package/dist/hooks/usePreventBodyScroll/index.mjs +1 -0
  132. package/dist/hooks/usePreventBodyScroll/usePreventBodyScroll.cjs +29 -0
  133. package/dist/hooks/usePreventBodyScroll/usePreventBodyScroll.mjs +30 -0
  134. package/dist/hooks/useRestoreFocus/index.cjs +1 -0
  135. package/dist/hooks/useRestoreFocus/index.mjs +1 -0
  136. package/dist/hooks/useRestoreFocus/useRestoreFocus.cjs +17 -0
  137. package/dist/hooks/useRestoreFocus/useRestoreFocus.mjs +18 -0
  138. package/dist/hooks/useRootAriaHidden/index.cjs +1 -0
  139. package/dist/hooks/useRootAriaHidden/index.mjs +1 -0
  140. package/dist/hooks/useRootAriaHidden/useRootAriaHidden.cjs +11 -0
  141. package/dist/hooks/useRootAriaHidden/useRootAriaHidden.mjs +12 -0
  142. package/dist/hooks/useVisibilityState/index.cjs +1 -0
  143. package/dist/hooks/useVisibilityState/index.mjs +1 -0
  144. package/dist/hooks/useVisibilityState/useVisibilityState.cjs +15 -0
  145. package/dist/hooks/useVisibilityState/useVisibilityState.mjs +16 -0
  146. package/dist/index.cjs +71 -444
  147. package/dist/index.d.mts +1 -1
  148. package/dist/index.d.ts +1 -1
  149. package/dist/index.mjs +37 -415
  150. package/dist/lib/asChildRenderer/createAsChildTemplate.cjs +72 -0
  151. package/dist/lib/asChildRenderer/createAsChildTemplate.mjs +73 -0
  152. package/dist/{styles/lib → lib}/css/atoms/atomicProperties.cjs +28 -22
  153. package/dist/{styles/lib → lib}/css/atoms/atomicProperties.mjs +7 -1
  154. package/dist/{styles/lib → lib}/css/atoms/sprinkles.css.cjs +8 -8
  155. package/dist/lib/css/flexbox/flexbox.cjs +16 -0
  156. package/dist/lib/css/flexbox/flexbox.mjs +17 -0
  157. package/dist/{styles/lib → lib}/css/style/style.cjs +3 -3
  158. package/dist/lib/react/mergeProps.cjs +42 -0
  159. package/dist/lib/react/mergeProps.mjs +43 -0
  160. package/dist/lib/react/refs.cjs +16 -0
  161. package/dist/lib/react/refs.mjs +17 -0
  162. package/dist/lib/theme/makeTheme.cjs +12 -0
  163. package/dist/lib/theme/store/theme.cjs +92 -0
  164. package/dist/lib/theme/store/theme.mjs +93 -0
  165. package/dist/lib/theme/vars.css.cjs +9 -0
  166. package/dist/{styles/lib → lib}/utils/atom-props.cjs +2 -2
  167. package/dist/lib/utils/classnames.cjs +6 -0
  168. package/dist/lib/utils/classnames.mjs +7 -0
  169. package/dist/lib/utils/dom.cjs +12 -0
  170. package/dist/lib/utils/dom.mjs +13 -0
  171. package/dist/lib/utils/math.cjs +12 -0
  172. package/dist/lib/utils/math.mjs +13 -0
  173. package/dist/momotaro.chunk.d.ts +40 -56
  174. package/dist/reset.cjs +2 -2
  175. package/dist/reset.mjs +2 -2
  176. package/dist/{styles/themes → themes}/momotaro/components/button.css.cjs +23 -23
  177. package/dist/themes/momotaro/components/checkbox.css.cjs +59 -0
  178. package/dist/{styles/themes → themes}/momotaro/components/dialog.css.cjs +4 -4
  179. package/dist/{styles/themes → themes}/momotaro/components/divider.css.cjs +2 -2
  180. package/dist/{styles/themes → themes}/momotaro/components/helpers.css.cjs +3 -3
  181. package/dist/themes/momotaro/components/index.cjs +34 -0
  182. package/dist/{styles/themes → themes}/momotaro/components/input.css.cjs +9 -9
  183. package/dist/{styles/themes → themes}/momotaro/components/label.css.cjs +7 -7
  184. package/dist/{styles/themes → themes}/momotaro/components/link.css.cjs +7 -7
  185. package/dist/{styles/themes → themes}/momotaro/components/popover.css.cjs +4 -4
  186. package/dist/{styles/themes → themes}/momotaro/components/progress.css.cjs +7 -7
  187. package/dist/themes/momotaro/components/radio.css.cjs +60 -0
  188. package/dist/themes/momotaro/components/select.css.cjs +44 -0
  189. package/dist/themes/momotaro/components/slider.css.cjs +89 -0
  190. package/dist/{styles/themes → themes}/momotaro/components/spinner.css.cjs +2 -2
  191. package/dist/{styles/themes → themes}/momotaro/components/switch.css.cjs +10 -10
  192. package/dist/{styles/themes → themes}/momotaro/components/tooltip.css.cjs +6 -6
  193. package/dist/themes/momotaro/momotaro.css.cjs +13 -0
  194. package/dist/{styles/themes → themes}/momotaro/tokens.css.cjs +11 -11
  195. package/dist/themes/momotaro.cjs +2 -2
  196. package/dist/themes/momotaro.mjs +1 -1
  197. package/package.json +5 -15
  198. package/dist/styles/components/Accessibility/VisuallyHidden/VisuallyHidden.cjs +0 -16
  199. package/dist/styles/components/Accessibility/VisuallyHidden/VisuallyHidden.mjs +0 -17
  200. package/dist/styles/components/display/Divider/Divider.cjs +0 -239
  201. package/dist/styles/components/display/Divider/Divider.mjs +0 -240
  202. package/dist/styles/components/form/Button/Button.cjs +0 -56
  203. package/dist/styles/components/form/Checkbox/Checkbox.cjs +0 -84
  204. package/dist/styles/components/form/Checkbox/Checkbox.mjs +0 -85
  205. package/dist/styles/components/form/Input/Input.cjs +0 -37
  206. package/dist/styles/components/form/Input/Input.mjs +0 -38
  207. package/dist/styles/components/form/Radio/Radio.cjs +0 -23
  208. package/dist/styles/components/form/Radio/Radio.mjs +0 -24
  209. package/dist/styles/components/form/Select/Select.cjs +0 -47
  210. package/dist/styles/components/form/Slider/Slider.cjs +0 -205
  211. package/dist/styles/components/form/Slider/Slider.mjs +0 -206
  212. package/dist/styles/components/other/BlocksProvider/BlocksProvider.cjs +0 -41
  213. package/dist/styles/components/other/BlocksProvider/BlocksProvider.mjs +0 -42
  214. package/dist/styles/components/overlay/Dialog/Dialog.cjs +0 -172
  215. package/dist/styles/components/overlay/Dialog/Dialog.mjs +0 -173
  216. package/dist/styles/components/typography/Heading/Heading.cjs +0 -15
  217. package/dist/styles/components/typography/Heading/Heading.mjs +0 -16
  218. package/dist/styles/components/typography/Text/Text.cjs +0 -20
  219. package/dist/styles/lib/theme/makeTheme.cjs +0 -12
  220. package/dist/styles/lib/theme/vars.css.cjs +0 -9
  221. package/dist/styles/themes/momotaro/components/checkbox.css.cjs +0 -59
  222. package/dist/styles/themes/momotaro/components/index.cjs +0 -34
  223. package/dist/styles/themes/momotaro/components/radio.css.cjs +0 -60
  224. package/dist/styles/themes/momotaro/components/select.css.cjs +0 -44
  225. package/dist/styles/themes/momotaro/components/slider.css.cjs +0 -89
  226. package/dist/styles/themes/momotaro/momotaro.css.cjs +0 -13
  227. /package/dist/{styles/components → components}/display/Divider/divider.css.mjs +0 -0
  228. /package/dist/{styles/components → components}/form/Button/Button.css.mjs +0 -0
  229. /package/dist/{styles/components → components}/form/Checkbox/checkbox.css.mjs +0 -0
  230. /package/dist/{styles/components → components}/form/Input/input.css.mjs +0 -0
  231. /package/dist/{styles/components → components}/form/Radio/radio.css.mjs +0 -0
  232. /package/dist/{styles/components → components}/form/Select/select.css.mjs +0 -0
  233. /package/dist/{styles/components → components}/form/Slider/slider.css.mjs +0 -0
  234. /package/dist/{styles/components → components}/form/Switch/switch.css.mjs +0 -0
  235. /package/dist/{styles/components → components}/overlay/Dialog/dialog.css.mjs +0 -0
  236. /package/dist/{styles/components → components}/typography/Heading/heading.css.mjs +0 -0
  237. /package/dist/{styles/components → components}/typography/Text/text.css.mjs +0 -0
  238. /package/dist/{styles/lib → lib}/css/atoms/atoms.cjs +0 -0
  239. /package/dist/{styles/lib → lib}/css/atoms/atoms.mjs +0 -0
  240. /package/dist/{styles/lib → lib}/css/atoms/breakpoints.cjs +0 -0
  241. /package/dist/{styles/lib → lib}/css/atoms/breakpoints.mjs +0 -0
  242. /package/dist/{styles/lib → lib}/css/atoms/index.cjs +0 -0
  243. /package/dist/{styles/lib → lib}/css/atoms/index.mjs +0 -0
  244. /package/dist/{styles/lib → lib}/css/atoms/sprinkles.css.mjs +0 -0
  245. /package/dist/{styles/lib → lib}/css/layers/layers.css.cjs +0 -0
  246. /package/dist/{styles/lib → lib}/css/layers/layers.css.mjs +0 -0
  247. /package/dist/{styles/lib → lib}/css/reset/reset.css.cjs +0 -0
  248. /package/dist/{styles/lib → lib}/css/reset/reset.css.mjs +0 -0
  249. /package/dist/{styles/lib → lib}/css/style/style.mjs +0 -0
  250. /package/dist/{styles/lib → lib}/css/utils/cssUtils.cjs +0 -0
  251. /package/dist/{styles/lib → lib}/css/utils/cssUtils.mjs +0 -0
  252. /package/dist/{styles/lib → lib}/theme/makeComponentTheme.cjs +0 -0
  253. /package/dist/{styles/lib → lib}/theme/makeComponentTheme.mjs +0 -0
  254. /package/dist/{styles/lib → lib}/theme/makeTheme.mjs +0 -0
  255. /package/dist/{styles/lib → lib}/theme/makeVanillaTheme.cjs +0 -0
  256. /package/dist/{styles/lib → lib}/theme/makeVanillaTheme.mjs +0 -0
  257. /package/dist/{styles/lib → lib}/theme/tokens.cjs +0 -0
  258. /package/dist/{styles/lib → lib}/theme/tokens.mjs +0 -0
  259. /package/dist/{styles/lib → lib}/theme/vars.css.mjs +0 -0
  260. /package/dist/{styles/lib → lib}/utils/atom-props.mjs +0 -0
  261. /package/dist/{styles/themes → themes}/momotaro/components/button.css.mjs +0 -0
  262. /package/dist/{styles/themes → themes}/momotaro/components/checkbox.css.mjs +0 -0
  263. /package/dist/{styles/themes → themes}/momotaro/components/dialog.css.mjs +0 -0
  264. /package/dist/{styles/themes → themes}/momotaro/components/divider.css.mjs +0 -0
  265. /package/dist/{styles/themes → themes}/momotaro/components/helpers.css.mjs +0 -0
  266. /package/dist/{styles/themes → themes}/momotaro/components/index.mjs +0 -0
  267. /package/dist/{styles/themes → themes}/momotaro/components/input.css.mjs +0 -0
  268. /package/dist/{styles/themes → themes}/momotaro/components/label.css.mjs +0 -0
  269. /package/dist/{styles/themes → themes}/momotaro/components/link.css.mjs +0 -0
  270. /package/dist/{styles/themes → themes}/momotaro/components/popover.css.mjs +0 -0
  271. /package/dist/{styles/themes → themes}/momotaro/components/progress.css.mjs +0 -0
  272. /package/dist/{styles/themes → themes}/momotaro/components/radio.css.mjs +0 -0
  273. /package/dist/{styles/themes → themes}/momotaro/components/select.css.mjs +0 -0
  274. /package/dist/{styles/themes → themes}/momotaro/components/slider.css.mjs +0 -0
  275. /package/dist/{styles/themes → themes}/momotaro/components/spinner.css.mjs +0 -0
  276. /package/dist/{styles/themes → themes}/momotaro/components/switch.css.mjs +0 -0
  277. /package/dist/{styles/themes → themes}/momotaro/components/tooltip.css.mjs +0 -0
  278. /package/dist/{styles/themes → themes}/momotaro/components/transitions.cjs +0 -0
  279. /package/dist/{styles/themes → themes}/momotaro/components/transitions.mjs +0 -0
  280. /package/dist/{styles/themes → themes}/momotaro/index.cjs +0 -0
  281. /package/dist/{styles/themes → themes}/momotaro/index.mjs +0 -0
  282. /package/dist/{styles/themes → themes}/momotaro/momotaro.css.mjs +0 -0
  283. /package/dist/{styles/themes → themes}/momotaro/tokens.css.mjs +0 -0
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const react = require("react");
4
+ const lib_css_atoms_sprinkles_css_cjs = require("../../../lib/css/atoms/sprinkles.css.cjs");
5
+ const lib_theme_store_theme_cjs = require("../../../lib/theme/store/theme.cjs");
6
+ const lib_utils_classnames_cjs = require("../../../lib/utils/classnames.cjs");
7
+ const components_other_BlocksProvider_context_cjs = require("./context.cjs");
8
+ const BlocksProvider = ({
9
+ children,
10
+ theme,
11
+ className,
12
+ ...restProps
13
+ }) => {
14
+ const [ariaHidden, setAriaHidden] = react.useState(false);
15
+ const contextValue = react.useMemo(
16
+ () => ({
17
+ setAriaHidden
18
+ }),
19
+ []
20
+ );
21
+ lib_theme_store_theme_cjs.setTheme(theme);
22
+ return /* @__PURE__ */ jsxRuntime.jsx(components_other_BlocksProvider_context_cjs.BlocksProviderContext, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
23
+ "div",
24
+ {
25
+ className: lib_utils_classnames_cjs.classnames(
26
+ theme.vars,
27
+ lib_css_atoms_sprinkles_css_cjs.atoms({ fontFamily: "primary" }),
28
+ className
29
+ ),
30
+ inert: ariaHidden ? true : void 0,
31
+ ...restProps,
32
+ children
33
+ }
34
+ ) });
35
+ };
36
+ exports.BlocksProvider = BlocksProvider;
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { useState, useMemo } from "react";
5
+ import { atoms } from "../../../lib/css/atoms/sprinkles.css.mjs";
6
+ import { setTheme } from "../../../lib/theme/store/theme.mjs";
7
+ import { classnames } from "../../../lib/utils/classnames.mjs";
8
+ import { BlocksProviderContext } from "./context.mjs";
9
+ const BlocksProvider = ({
10
+ children,
11
+ theme,
12
+ className,
13
+ ...restProps
14
+ }) => {
15
+ const [ariaHidden, setAriaHidden] = useState(false);
16
+ const contextValue = useMemo(
17
+ () => ({
18
+ setAriaHidden
19
+ }),
20
+ []
21
+ );
22
+ setTheme(theme);
23
+ return /* @__PURE__ */ jsx(BlocksProviderContext, { value: contextValue, children: /* @__PURE__ */ jsx(
24
+ "div",
25
+ {
26
+ className: classnames(
27
+ theme.vars,
28
+ atoms({ fontFamily: "primary" }),
29
+ className
30
+ ),
31
+ inert: ariaHidden ? true : void 0,
32
+ ...restProps,
33
+ children
34
+ }
35
+ ) });
36
+ };
37
+ export {
38
+ BlocksProvider
39
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ const react = require("react");
3
+ const BlocksProviderContext = react.createContext(null);
4
+ exports.BlocksProviderContext = BlocksProviderContext;
@@ -0,0 +1,7 @@
1
+ 'use client';
2
+
3
+ import { createContext } from "react";
4
+ const BlocksProviderContext = createContext(null);
5
+ export {
6
+ BlocksProviderContext
7
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const reactDom = require("react-dom");
4
+ const Portal = ({ children, container }) => {
5
+ return reactDom.createPortal(/* @__PURE__ */ jsxRuntime.jsx("div", { children }), container || document.body);
6
+ };
7
+ exports.Portal = Portal;
@@ -0,0 +1,8 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createPortal } from "react-dom";
3
+ const Portal = ({ children, container }) => {
4
+ return createPortal(/* @__PURE__ */ jsx("div", { children }), container || document.body);
5
+ };
6
+ export {
7
+ Portal
8
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const react = require("react");
4
+ const hooks_useClickOutside_useClickOutside_cjs = require("../../../hooks/useClickOutside/useClickOutside.cjs");
5
+ const lib_theme_store_theme_cjs = require("../../../lib/theme/store/theme.cjs");
6
+ const lib_utils_classnames_cjs = require("../../../lib/utils/classnames.cjs");
7
+ const lib_utils_dom_cjs = require("../../../lib/utils/dom.cjs");
8
+ const components_overlay_Dialog_dialog_css_cjs = require("./dialog.css.cjs");
9
+ const components_overlay_Dialog_dialogHelper_cjs = require("./dialogHelper.cjs");
10
+ const hooks_useRestoreFocus_useRestoreFocus_cjs = require("../../../hooks/useRestoreFocus/useRestoreFocus.cjs");
11
+ const hooks_usePreventBodyScroll_usePreventBodyScroll_cjs = require("../../../hooks/usePreventBodyScroll/usePreventBodyScroll.cjs");
12
+ const hooks_useKeyboard_useKeyboard_cjs = require("../../../hooks/useKeyboard/useKeyboard.cjs");
13
+ const hooks_useIsomorphicLayoutEffect_useIsomorphicLayoutEffect_cjs = require("../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs");
14
+ const Dialog = ({
15
+ children,
16
+ open,
17
+ className,
18
+ onRequestClose,
19
+ size,
20
+ ...restProps
21
+ }) => {
22
+ const dialogClassName = lib_theme_store_theme_cjs.getComponentStyles("dialog", {
23
+ dialog: true,
24
+ variants: { size }
25
+ });
26
+ const dialogRef = react.useRef(null);
27
+ const [enabled, setEnabled] = react.useState(true);
28
+ const [visible, setVisible] = react.useState(open);
29
+ hooks_useRestoreFocus_useRestoreFocus_cjs.useRestoreFocus(open);
30
+ const isNested = components_overlay_Dialog_dialogHelper_cjs.useNestedDialog(open);
31
+ hooks_usePreventBodyScroll_usePreventBodyScroll_cjs.usePreventBodyScroll(open && !isNested);
32
+ const onEscape = react.useCallback(
33
+ (event) => {
34
+ event.preventDefault();
35
+ onRequestClose();
36
+ },
37
+ [onRequestClose]
38
+ );
39
+ hooks_useKeyboard_useKeyboard_cjs.useKeyboard("Escape", onEscape, { enabled: open && enabled });
40
+ hooks_useClickOutside_useClickOutside_cjs.useClickOutside(dialogRef, onRequestClose, { enabled: open && enabled });
41
+ hooks_useIsomorphicLayoutEffect_useIsomorphicLayoutEffect_cjs.useIsomorphicLayoutEffect(() => {
42
+ var _a, _b;
43
+ if (open && visible) {
44
+ (_a = dialogRef.current) == null ? void 0 : _a.showModal();
45
+ } else if (open) {
46
+ setVisible(true);
47
+ } else {
48
+ if (!lib_utils_dom_cjs.hasAnimationDuration(dialogRef.current)) {
49
+ setVisible(false);
50
+ }
51
+ (_b = dialogRef.current) == null ? void 0 : _b.close();
52
+ }
53
+ }, [open, visible]);
54
+ const onAnimationEnd = react.useCallback(() => {
55
+ if (!open) {
56
+ setVisible(false);
57
+ }
58
+ }, [open]);
59
+ if (!visible) {
60
+ return null;
61
+ }
62
+ const dataOpen = typeof window === "undefined" && open ? true : void 0;
63
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(components_overlay_Dialog_dialogHelper_cjs.DialogContext.Provider, { value: { setEnabled }, children: /* @__PURE__ */ jsxRuntime.jsx(
64
+ "dialog",
65
+ {
66
+ ref: dialogRef,
67
+ "aria-modal": "true",
68
+ open: dataOpen,
69
+ className: lib_utils_classnames_cjs.classnames(components_overlay_Dialog_dialog_css_cjs.dialog, dialogClassName, className),
70
+ onAnimationEnd,
71
+ onTransitionEnd: onAnimationEnd,
72
+ ...restProps,
73
+ children
74
+ }
75
+ ) }) });
76
+ };
77
+ exports.Dialog = Dialog;
@@ -0,0 +1,80 @@
1
+ 'use client';
2
+
3
+ import { jsx, Fragment } from "react/jsx-runtime";
4
+ import { useRef, useState, useCallback } from "react";
5
+ import { useClickOutside } from "../../../hooks/useClickOutside/useClickOutside.mjs";
6
+ import { getComponentStyles } from "../../../lib/theme/store/theme.mjs";
7
+ import { classnames } from "../../../lib/utils/classnames.mjs";
8
+ import { hasAnimationDuration } from "../../../lib/utils/dom.mjs";
9
+ import { dialog } from "./dialog.css.mjs";
10
+ import { useNestedDialog, DialogContext } from "./dialogHelper.mjs";
11
+ import { useRestoreFocus } from "../../../hooks/useRestoreFocus/useRestoreFocus.mjs";
12
+ import { usePreventBodyScroll } from "../../../hooks/usePreventBodyScroll/usePreventBodyScroll.mjs";
13
+ import { useKeyboard } from "../../../hooks/useKeyboard/useKeyboard.mjs";
14
+ import { useIsomorphicLayoutEffect } from "../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs";
15
+ const Dialog = ({
16
+ children,
17
+ open,
18
+ className,
19
+ onRequestClose,
20
+ size,
21
+ ...restProps
22
+ }) => {
23
+ const dialogClassName = getComponentStyles("dialog", {
24
+ dialog: true,
25
+ variants: { size }
26
+ });
27
+ const dialogRef = useRef(null);
28
+ const [enabled, setEnabled] = useState(true);
29
+ const [visible, setVisible] = useState(open);
30
+ useRestoreFocus(open);
31
+ const isNested = useNestedDialog(open);
32
+ usePreventBodyScroll(open && !isNested);
33
+ const onEscape = useCallback(
34
+ (event) => {
35
+ event.preventDefault();
36
+ onRequestClose();
37
+ },
38
+ [onRequestClose]
39
+ );
40
+ useKeyboard("Escape", onEscape, { enabled: open && enabled });
41
+ useClickOutside(dialogRef, onRequestClose, { enabled: open && enabled });
42
+ useIsomorphicLayoutEffect(() => {
43
+ var _a, _b;
44
+ if (open && visible) {
45
+ (_a = dialogRef.current) == null ? void 0 : _a.showModal();
46
+ } else if (open) {
47
+ setVisible(true);
48
+ } else {
49
+ if (!hasAnimationDuration(dialogRef.current)) {
50
+ setVisible(false);
51
+ }
52
+ (_b = dialogRef.current) == null ? void 0 : _b.close();
53
+ }
54
+ }, [open, visible]);
55
+ const onAnimationEnd = useCallback(() => {
56
+ if (!open) {
57
+ setVisible(false);
58
+ }
59
+ }, [open]);
60
+ if (!visible) {
61
+ return null;
62
+ }
63
+ const dataOpen = typeof window === "undefined" && open ? true : void 0;
64
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(DialogContext.Provider, { value: { setEnabled }, children: /* @__PURE__ */ jsx(
65
+ "dialog",
66
+ {
67
+ ref: dialogRef,
68
+ "aria-modal": "true",
69
+ open: dataOpen,
70
+ className: classnames(dialog, dialogClassName, className),
71
+ onAnimationEnd,
72
+ onTransitionEnd: onAnimationEnd,
73
+ ...restProps,
74
+ children
75
+ }
76
+ ) }) });
77
+ };
78
+ export {
79
+ Dialog
80
+ };
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  const fileScope = require("@vanilla-extract/css/fileScope");
3
3
  const css = require("@vanilla-extract/css");
4
- const styles_lib_css_layers_layers_css_cjs = require("../../../lib/css/layers/layers.css.cjs");
4
+ const lib_css_layers_layers_css_cjs = require("../../../lib/css/layers/layers.css.cjs");
5
5
  fileScope.setFileScope("src/components/overlay/Dialog/dialog.css.ts", "@blockle/blocks");
6
6
  const dialog = css.style({
7
7
  "@layer": {
8
- [styles_lib_css_layers_layers_css_cjs.blocksLayer]: {
8
+ [lib_css_layers_layers_css_cjs.blocksLayer]: {
9
9
  position: "fixed",
10
10
  inset: 0,
11
11
  border: "none",
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ const react = require("react");
3
+ const DialogContext = react.createContext(
4
+ void 0
5
+ );
6
+ const useNestedDialog = (open) => {
7
+ const parentDialog = react.useContext(DialogContext);
8
+ react.useEffect(() => {
9
+ if (!parentDialog || !open) {
10
+ return;
11
+ }
12
+ parentDialog.setEnabled(false);
13
+ return () => {
14
+ parentDialog.setEnabled(true);
15
+ };
16
+ }, [parentDialog, open]);
17
+ return !!parentDialog;
18
+ };
19
+ exports.DialogContext = DialogContext;
20
+ exports.useNestedDialog = useNestedDialog;
@@ -0,0 +1,21 @@
1
+ import { createContext, useContext, useEffect } from "react";
2
+ const DialogContext = createContext(
3
+ void 0
4
+ );
5
+ const useNestedDialog = (open) => {
6
+ const parentDialog = useContext(DialogContext);
7
+ useEffect(() => {
8
+ if (!parentDialog || !open) {
9
+ return;
10
+ }
11
+ parentDialog.setEnabled(false);
12
+ return () => {
13
+ parentDialog.setEnabled(true);
14
+ };
15
+ }, [parentDialog, open]);
16
+ return !!parentDialog;
17
+ };
18
+ export {
19
+ DialogContext,
20
+ useNestedDialog
21
+ };
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ const jsxRuntime = require("react/jsx-runtime");
3
+ const react = require("react");
4
+ const hooks_useClickOutside_useClickOutside_cjs = require("../../../hooks/useClickOutside/useClickOutside.cjs");
5
+ const lib_theme_store_theme_cjs = require("../../../lib/theme/store/theme.cjs");
6
+ const lib_utils_classnames_cjs = require("../../../lib/utils/classnames.cjs");
7
+ const lib_utils_dom_cjs = require("../../../lib/utils/dom.cjs");
8
+ const components_overlay_Popover_popoverUtils_cjs = require("./popover-utils.cjs");
9
+ const hooks_useLayer_useLayer_cjs = require("../../../hooks/useLayer/useLayer.cjs");
10
+ const hooks_useVisibilityState_useVisibilityState_cjs = require("../../../hooks/useVisibilityState/useVisibilityState.cjs");
11
+ const hooks_useIsomorphicLayoutEffect_useIsomorphicLayoutEffect_cjs = require("../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs");
12
+ const hooks_useKeyboard_useKeyboard_cjs = require("../../../hooks/useKeyboard/useKeyboard.cjs");
13
+ const components_other_Portal_Portal_cjs = require("../../other/Portal/Portal.cjs");
14
+ const components_layout_Box_Box_cjs = require("../../layout/Box/Box.cjs");
15
+ const Popover = ({
16
+ align = "bottom",
17
+ anchorElement,
18
+ children,
19
+ className,
20
+ onRequestClose,
21
+ open,
22
+ repositionOnScroll,
23
+ style,
24
+ ...restProps
25
+ }) => {
26
+ const layer = hooks_useLayer_useLayer_cjs.useLayer();
27
+ const [visible, hide] = hooks_useVisibilityState_useVisibilityState_cjs.useVisibilityState(open);
28
+ const [position, setPosition] = react.useState({ x: 0, y: 0 });
29
+ const popoverRef = react.useRef(null);
30
+ const containerClassName = lib_theme_store_theme_cjs.getComponentStyles(
31
+ "popover",
32
+ { base: true },
33
+ false
34
+ );
35
+ react.useLayoutEffect(() => {
36
+ if (!visible) {
37
+ return;
38
+ }
39
+ const position2 = components_overlay_Popover_popoverUtils_cjs.getPopoverPosition(align, anchorElement, popoverRef);
40
+ setPosition({ x: position2[0], y: position2[1] });
41
+ }, [align, anchorElement, visible]);
42
+ react.useEffect(() => {
43
+ if (!open || !repositionOnScroll) {
44
+ return;
45
+ }
46
+ function handleResize() {
47
+ const position2 = components_overlay_Popover_popoverUtils_cjs.getPopoverPosition(align, anchorElement, popoverRef);
48
+ setPosition({ x: position2[0], y: position2[1] });
49
+ }
50
+ window.addEventListener("resize", handleResize);
51
+ window.addEventListener("scroll", handleResize);
52
+ return () => {
53
+ window.removeEventListener("resize", handleResize);
54
+ window.removeEventListener("scroll", handleResize);
55
+ };
56
+ }, [align, anchorElement, open, repositionOnScroll]);
57
+ hooks_useIsomorphicLayoutEffect_useIsomorphicLayoutEffect_cjs.useIsomorphicLayoutEffect(() => {
58
+ var _a;
59
+ if (!open) {
60
+ (_a = popoverRef.current) == null ? void 0 : _a.removeAttribute("data-open");
61
+ return;
62
+ }
63
+ let timer = requestAnimationFrame(() => {
64
+ timer = requestAnimationFrame(() => {
65
+ var _a2;
66
+ (_a2 = popoverRef.current) == null ? void 0 : _a2.setAttribute("data-open", "");
67
+ });
68
+ });
69
+ return () => {
70
+ cancelAnimationFrame(timer);
71
+ };
72
+ }, [open, visible]);
73
+ const onAnimationEnd = react.useCallback(() => {
74
+ if (!open) {
75
+ hide();
76
+ }
77
+ }, [hide, open]);
78
+ react.useEffect(() => {
79
+ if (open) {
80
+ return;
81
+ }
82
+ if (!lib_utils_dom_cjs.hasAnimationDuration(popoverRef.current)) {
83
+ hide();
84
+ }
85
+ }, [hide, open]);
86
+ hooks_useKeyboard_useKeyboard_cjs.useKeyboard("Escape", onRequestClose, { enabled: visible });
87
+ hooks_useClickOutside_useClickOutside_cjs.useClickOutside(popoverRef, onRequestClose, { enabled: visible });
88
+ if (!visible) {
89
+ return null;
90
+ }
91
+ const dataOpen = typeof window === "undefined" && open ? "" : void 0;
92
+ return /* @__PURE__ */ jsxRuntime.jsx(components_other_Portal_Portal_cjs.Portal, { container: layer(), children: /* @__PURE__ */ jsxRuntime.jsx(
93
+ components_layout_Box_Box_cjs.Box,
94
+ {
95
+ ref: popoverRef,
96
+ "data-open": dataOpen,
97
+ onAnimationEnd,
98
+ onTransitionEnd: onAnimationEnd,
99
+ className: lib_utils_classnames_cjs.classnames(containerClassName, className),
100
+ position: "absolute",
101
+ style: {
102
+ ...style,
103
+ left: position.x,
104
+ top: position.y
105
+ },
106
+ ...restProps,
107
+ children
108
+ }
109
+ ) });
110
+ };
111
+ exports.Popover = Popover;
@@ -0,0 +1,112 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState, useRef, useLayoutEffect, useEffect, useCallback } from "react";
3
+ import { useClickOutside } from "../../../hooks/useClickOutside/useClickOutside.mjs";
4
+ import { getComponentStyles } from "../../../lib/theme/store/theme.mjs";
5
+ import { classnames } from "../../../lib/utils/classnames.mjs";
6
+ import { hasAnimationDuration } from "../../../lib/utils/dom.mjs";
7
+ import { getPopoverPosition } from "./popover-utils.mjs";
8
+ import { useLayer } from "../../../hooks/useLayer/useLayer.mjs";
9
+ import { useVisibilityState } from "../../../hooks/useVisibilityState/useVisibilityState.mjs";
10
+ import { useIsomorphicLayoutEffect } from "../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs";
11
+ import { useKeyboard } from "../../../hooks/useKeyboard/useKeyboard.mjs";
12
+ import { Portal } from "../../other/Portal/Portal.mjs";
13
+ import { Box } from "../../layout/Box/Box.mjs";
14
+ const Popover = ({
15
+ align = "bottom",
16
+ anchorElement,
17
+ children,
18
+ className,
19
+ onRequestClose,
20
+ open,
21
+ repositionOnScroll,
22
+ style,
23
+ ...restProps
24
+ }) => {
25
+ const layer = useLayer();
26
+ const [visible, hide] = useVisibilityState(open);
27
+ const [position, setPosition] = useState({ x: 0, y: 0 });
28
+ const popoverRef = useRef(null);
29
+ const containerClassName = getComponentStyles(
30
+ "popover",
31
+ { base: true },
32
+ false
33
+ );
34
+ useLayoutEffect(() => {
35
+ if (!visible) {
36
+ return;
37
+ }
38
+ const position2 = getPopoverPosition(align, anchorElement, popoverRef);
39
+ setPosition({ x: position2[0], y: position2[1] });
40
+ }, [align, anchorElement, visible]);
41
+ useEffect(() => {
42
+ if (!open || !repositionOnScroll) {
43
+ return;
44
+ }
45
+ function handleResize() {
46
+ const position2 = getPopoverPosition(align, anchorElement, popoverRef);
47
+ setPosition({ x: position2[0], y: position2[1] });
48
+ }
49
+ window.addEventListener("resize", handleResize);
50
+ window.addEventListener("scroll", handleResize);
51
+ return () => {
52
+ window.removeEventListener("resize", handleResize);
53
+ window.removeEventListener("scroll", handleResize);
54
+ };
55
+ }, [align, anchorElement, open, repositionOnScroll]);
56
+ useIsomorphicLayoutEffect(() => {
57
+ var _a;
58
+ if (!open) {
59
+ (_a = popoverRef.current) == null ? void 0 : _a.removeAttribute("data-open");
60
+ return;
61
+ }
62
+ let timer = requestAnimationFrame(() => {
63
+ timer = requestAnimationFrame(() => {
64
+ var _a2;
65
+ (_a2 = popoverRef.current) == null ? void 0 : _a2.setAttribute("data-open", "");
66
+ });
67
+ });
68
+ return () => {
69
+ cancelAnimationFrame(timer);
70
+ };
71
+ }, [open, visible]);
72
+ const onAnimationEnd = useCallback(() => {
73
+ if (!open) {
74
+ hide();
75
+ }
76
+ }, [hide, open]);
77
+ useEffect(() => {
78
+ if (open) {
79
+ return;
80
+ }
81
+ if (!hasAnimationDuration(popoverRef.current)) {
82
+ hide();
83
+ }
84
+ }, [hide, open]);
85
+ useKeyboard("Escape", onRequestClose, { enabled: visible });
86
+ useClickOutside(popoverRef, onRequestClose, { enabled: visible });
87
+ if (!visible) {
88
+ return null;
89
+ }
90
+ const dataOpen = typeof window === "undefined" && open ? "" : void 0;
91
+ return /* @__PURE__ */ jsx(Portal, { container: layer(), children: /* @__PURE__ */ jsx(
92
+ Box,
93
+ {
94
+ ref: popoverRef,
95
+ "data-open": dataOpen,
96
+ onAnimationEnd,
97
+ onTransitionEnd: onAnimationEnd,
98
+ className: classnames(containerClassName, className),
99
+ position: "absolute",
100
+ style: {
101
+ ...style,
102
+ left: position.x,
103
+ top: position.y
104
+ },
105
+ ...restProps,
106
+ children
107
+ }
108
+ ) });
109
+ };
110
+ export {
111
+ Popover
112
+ };
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ function getPopoverPosition(align, anchorRef, popoverRef) {
3
+ if (!anchorRef.current || !popoverRef.current) {
4
+ return [0, 0];
5
+ }
6
+ popoverRef.current.style.transform = "none";
7
+ popoverRef.current.style.transitionDuration = "0s";
8
+ const anchorRect = anchorRef.current.getBoundingClientRect();
9
+ const popoverRect = popoverRef.current.getBoundingClientRect();
10
+ let popoverStyles = getComputedStyle(popoverRef.current);
11
+ const top = popoverStyles.getPropertyValue("top");
12
+ const left = popoverStyles.getPropertyValue("left");
13
+ popoverRef.current.style.left = "0";
14
+ popoverRef.current.style.top = "0";
15
+ popoverStyles = getComputedStyle(popoverRef.current);
16
+ const marginTop = Number.parseFloat(
17
+ popoverStyles.getPropertyValue("margin-top")
18
+ );
19
+ const marginRight = Number.parseFloat(
20
+ popoverStyles.getPropertyValue("margin-right")
21
+ );
22
+ const marginBottom = Number.parseFloat(
23
+ popoverStyles.getPropertyValue("margin-bottom")
24
+ );
25
+ const marginLeft = Number.parseFloat(
26
+ popoverStyles.getPropertyValue("margin-left")
27
+ );
28
+ const marginY = marginTop + marginBottom;
29
+ const marginX = marginRight + marginLeft;
30
+ const docHeight = document.documentElement.clientHeight;
31
+ const docWidth = document.documentElement.clientWidth;
32
+ const docScrollTop = document.documentElement.scrollTop;
33
+ const docScrollLeft = document.documentElement.scrollLeft;
34
+ const anchorLeft = anchorRect.left + docScrollLeft;
35
+ const anchorTop = anchorRect.top + docScrollTop;
36
+ const topPosition = anchorRect.top - (popoverRect.height + marginTop);
37
+ const rightPosition = anchorRect.left + anchorRect.width + popoverRect.width;
38
+ const bottomPosition = anchorRect.top + anchorRect.height + popoverRect.height;
39
+ const leftPosition = anchorRect.left - popoverRect.width;
40
+ const offsetX = anchorLeft - marginLeft - (popoverRect.width - anchorRect.width) / 2;
41
+ const offsetY = anchorTop - marginTop - (popoverRect.height - anchorRect.height) / 2;
42
+ popoverRef.current.style.transform = "";
43
+ popoverRef.current.style.transitionDuration = "";
44
+ popoverRef.current.style.top = top;
45
+ popoverRef.current.style.left = left;
46
+ switch (align) {
47
+ case "top": {
48
+ return topPosition > 0 ? [offsetX, anchorTop - popoverRect.height - marginY] : [offsetX, anchorTop + anchorRect.height];
49
+ }
50
+ case "bottom": {
51
+ return bottomPosition < docHeight || topPosition < 0 ? [offsetX, anchorTop + anchorRect.height] : [offsetX, anchorTop - popoverRect.height - marginY];
52
+ }
53
+ case "left": {
54
+ return leftPosition > docWidth || leftPosition > 0 ? [anchorLeft - popoverRect.width - marginX, offsetY] : [anchorLeft + anchorRect.width, offsetY];
55
+ }
56
+ case "right": {
57
+ return rightPosition < docWidth || leftPosition < 0 ? [anchorLeft + anchorRect.width, offsetY] : [anchorLeft - popoverRect.width - marginX, offsetY];
58
+ }
59
+ }
60
+ }
61
+ exports.getPopoverPosition = getPopoverPosition;