@blockle/blocks 0.19.1 → 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.
- package/dist/components/accessibility/VisuallyHidden/VisuallyHidden.cjs +19 -0
- package/dist/components/accessibility/VisuallyHidden/VisuallyHidden.mjs +20 -0
- package/dist/components/accessibility/VisuallyHidden/index.cjs +1 -0
- package/dist/components/accessibility/VisuallyHidden/index.mjs +1 -0
- package/dist/{styles/components/Accessibility → components/accessibility}/VisuallyHidden/visually-hidden.css.cjs +1 -1
- package/dist/{styles/components/Accessibility → components/accessibility}/VisuallyHidden/visually-hidden.css.mjs +1 -1
- package/dist/components/display/Divider/Divider.cjs +25 -0
- package/dist/components/display/Divider/Divider.mjs +26 -0
- package/dist/{styles/components → components}/display/Divider/divider.css.cjs +2 -2
- package/dist/components/display/Divider/index.cjs +1 -0
- package/dist/components/display/Divider/index.mjs +1 -0
- package/dist/components/feedback/Progress/Progress.cjs +53 -0
- package/dist/components/feedback/Progress/Progress.mjs +54 -0
- package/dist/components/feedback/Progress/index.cjs +1 -0
- package/dist/components/feedback/Progress/index.mjs +1 -0
- package/dist/components/feedback/Spinner/Spinner.cjs +25 -0
- package/dist/components/feedback/Spinner/Spinner.mjs +26 -0
- package/dist/components/feedback/Spinner/index.cjs +1 -0
- package/dist/components/feedback/Spinner/index.mjs +1 -0
- package/dist/components/form/Button/Button.cjs +58 -0
- package/dist/{styles/components → components}/form/Button/Button.css.cjs +2 -2
- package/dist/{styles/components → components}/form/Button/Button.mjs +13 -11
- package/dist/components/form/Button/index.cjs +1 -0
- package/dist/components/form/Button/index.mjs +1 -0
- package/dist/components/form/Checkbox/Checkbox.cjs +78 -0
- package/dist/components/form/Checkbox/Checkbox.mjs +79 -0
- package/dist/{styles/components → components}/form/Checkbox/checkbox.css.cjs +3 -3
- package/dist/components/form/Checkbox/index.cjs +1 -0
- package/dist/components/form/Checkbox/index.mjs +1 -0
- package/dist/components/form/Input/Input.cjs +50 -0
- package/dist/components/form/Input/Input.mjs +51 -0
- package/dist/components/form/Input/index.cjs +1 -0
- package/dist/components/form/Input/index.mjs +1 -0
- package/dist/{styles/components → components}/form/Input/input.css.cjs +2 -2
- package/dist/components/form/Label/Label.cjs +29 -0
- package/dist/components/form/Label/Label.mjs +30 -0
- package/dist/components/form/Label/index.cjs +1 -0
- package/dist/components/form/Label/index.mjs +1 -0
- package/dist/components/form/Radio/Radio.cjs +47 -0
- package/dist/components/form/Radio/Radio.mjs +48 -0
- package/dist/components/form/Radio/RadioGroup.cjs +1 -0
- package/dist/components/form/Radio/RadioGroup.mjs +1 -0
- package/dist/components/form/Radio/index.cjs +1 -0
- package/dist/components/form/Radio/index.mjs +1 -0
- package/dist/{styles/components → components}/form/Radio/radio.css.cjs +3 -3
- package/dist/components/form/Select/Select.cjs +64 -0
- package/dist/{styles/components → components}/form/Select/Select.mjs +23 -6
- package/dist/components/form/Select/index.cjs +1 -0
- package/dist/components/form/Select/index.mjs +1 -0
- package/dist/{styles/components → components}/form/Select/select.css.cjs +4 -4
- package/dist/components/form/Slider/Slider.cjs +139 -0
- package/dist/components/form/Slider/Slider.mjs +142 -0
- package/dist/components/form/Slider/index.cjs +1 -0
- package/dist/components/form/Slider/index.mjs +1 -0
- package/dist/{styles/components → components}/form/Slider/slider.css.cjs +6 -6
- package/dist/components/form/Slider/usePointerProgress.cjs +44 -0
- package/dist/components/form/Slider/usePointerProgress.mjs +45 -0
- package/dist/{styles/components → components}/form/Switch/Switch.cjs +10 -8
- package/dist/{styles/components → components}/form/Switch/Switch.mjs +9 -5
- package/dist/components/form/Switch/index.cjs +1 -0
- package/dist/components/form/Switch/index.mjs +1 -0
- package/dist/{styles/components → components}/form/Switch/switch.css.cjs +3 -3
- package/dist/components/layout/Box/Box.cjs +27 -0
- package/dist/components/layout/Box/Box.mjs +28 -0
- package/dist/components/layout/Box/index.cjs +1 -0
- package/dist/components/layout/Box/index.mjs +1 -0
- package/dist/components/layout/Inline/Inline.cjs +29 -0
- package/dist/components/layout/Inline/Inline.mjs +30 -0
- package/dist/components/layout/Inline/index.cjs +1 -0
- package/dist/components/layout/Inline/index.mjs +1 -0
- package/dist/components/layout/Stack/Stack.cjs +29 -0
- package/dist/components/layout/Stack/Stack.mjs +30 -0
- package/dist/components/layout/Stack/index.cjs +1 -0
- package/dist/components/layout/Stack/index.mjs +1 -0
- package/dist/components/navigation/Link/Link.cjs +31 -0
- package/dist/components/navigation/Link/Link.mjs +32 -0
- package/dist/components/navigation/Link/index.cjs +1 -0
- package/dist/components/navigation/Link/index.mjs +1 -0
- package/dist/components/other/BlocksProvider/BlocksProvider.cjs +36 -0
- package/dist/{styles/components → components}/other/BlocksProvider/BlocksProvider.mjs +12 -5
- package/dist/components/other/BlocksProvider/context.cjs +4 -0
- package/dist/components/other/BlocksProvider/context.mjs +7 -0
- package/dist/components/other/BlocksProvider/index.cjs +1 -0
- package/dist/components/other/BlocksProvider/index.mjs +1 -0
- package/dist/components/other/Portal/Portal.cjs +7 -0
- package/dist/components/other/Portal/Portal.mjs +8 -0
- package/dist/components/other/Portal/index.cjs +1 -0
- package/dist/components/other/Portal/index.mjs +1 -0
- package/dist/components/overlay/Dialog/Dialog.cjs +77 -0
- package/dist/components/overlay/Dialog/Dialog.mjs +80 -0
- package/dist/{styles/components → components}/overlay/Dialog/dialog.css.cjs +2 -2
- package/dist/components/overlay/Dialog/dialogHelper.cjs +20 -0
- package/dist/components/overlay/Dialog/dialogHelper.mjs +21 -0
- package/dist/components/overlay/Dialog/index.cjs +1 -0
- package/dist/components/overlay/Dialog/index.mjs +1 -0
- package/dist/components/overlay/Popover/Popover.cjs +111 -0
- package/dist/components/overlay/Popover/Popover.mjs +112 -0
- package/dist/components/overlay/Popover/popover-utils.cjs +61 -0
- package/dist/components/overlay/Popover/popover-utils.mjs +62 -0
- package/dist/components/overlay/Tooltip/Tooltip.cjs +71 -0
- package/dist/components/overlay/Tooltip/Tooltip.mjs +74 -0
- package/dist/components/overlay/Tooltip/index.cjs +1 -0
- package/dist/components/overlay/Tooltip/index.mjs +1 -0
- package/dist/components/typography/Heading/Heading.cjs +23 -0
- package/dist/components/typography/Heading/Heading.mjs +24 -0
- package/dist/{styles/components → components}/typography/Heading/heading.css.cjs +2 -2
- package/dist/components/typography/Heading/index.cjs +1 -0
- package/dist/components/typography/Heading/index.mjs +1 -0
- package/dist/components/typography/Text/Text.cjs +20 -0
- package/dist/{styles/components → components}/typography/Text/Text.mjs +2 -2
- package/dist/components/typography/Text/index.cjs +1 -0
- package/dist/components/typography/Text/index.mjs +1 -0
- package/dist/{styles/components → components}/typography/Text/text.css.cjs +2 -2
- package/dist/hooks/useClickOutside/useClickOutside.cjs +22 -0
- package/dist/hooks/useClickOutside/useClickOutside.mjs +23 -0
- package/dist/hooks/useControlledValue/useControlledValue.cjs +31 -0
- package/dist/hooks/useControlledValue/useControlledValue.mjs +32 -0
- package/dist/hooks/useIsomorphicLayoutEffect/index.cjs +1 -0
- package/dist/hooks/useIsomorphicLayoutEffect/index.mjs +1 -0
- package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs +4 -0
- package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs +7 -0
- package/dist/hooks/useKeyboard/index.cjs +1 -0
- package/dist/hooks/useKeyboard/index.mjs +1 -0
- package/dist/hooks/useKeyboard/useKeyboard.cjs +19 -0
- package/dist/hooks/useKeyboard/useKeyboard.mjs +22 -0
- package/dist/hooks/useLayer/index.cjs +1 -0
- package/dist/hooks/useLayer/index.mjs +1 -0
- package/dist/hooks/useLayer/useLayer.cjs +25 -0
- package/dist/hooks/useLayer/useLayer.mjs +26 -0
- package/dist/hooks/usePreventBodyScroll/index.cjs +1 -0
- package/dist/hooks/usePreventBodyScroll/index.mjs +1 -0
- package/dist/hooks/usePreventBodyScroll/usePreventBodyScroll.cjs +29 -0
- package/dist/hooks/usePreventBodyScroll/usePreventBodyScroll.mjs +30 -0
- package/dist/hooks/useRestoreFocus/index.cjs +1 -0
- package/dist/hooks/useRestoreFocus/index.mjs +1 -0
- package/dist/hooks/useRestoreFocus/useRestoreFocus.cjs +17 -0
- package/dist/hooks/useRestoreFocus/useRestoreFocus.mjs +18 -0
- package/dist/hooks/useRootAriaHidden/index.cjs +1 -0
- package/dist/hooks/useRootAriaHidden/index.mjs +1 -0
- package/dist/hooks/useRootAriaHidden/useRootAriaHidden.cjs +11 -0
- package/dist/hooks/useRootAriaHidden/useRootAriaHidden.mjs +12 -0
- package/dist/hooks/useVisibilityState/index.cjs +1 -0
- package/dist/hooks/useVisibilityState/index.mjs +1 -0
- package/dist/hooks/useVisibilityState/useVisibilityState.cjs +15 -0
- package/dist/hooks/useVisibilityState/useVisibilityState.mjs +16 -0
- package/dist/index.cjs +71 -444
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +37 -415
- package/dist/lib/asChildRenderer/createAsChildTemplate.cjs +72 -0
- package/dist/lib/asChildRenderer/createAsChildTemplate.mjs +73 -0
- package/dist/{styles/lib → lib}/css/atoms/atomicProperties.cjs +28 -22
- package/dist/{styles/lib → lib}/css/atoms/atomicProperties.mjs +7 -1
- package/dist/{styles/lib → lib}/css/atoms/sprinkles.css.cjs +8 -8
- package/dist/lib/css/flexbox/flexbox.cjs +16 -0
- package/dist/lib/css/flexbox/flexbox.mjs +17 -0
- package/dist/{styles/lib → lib}/css/style/style.cjs +3 -3
- package/dist/lib/react/mergeProps.cjs +42 -0
- package/dist/lib/react/mergeProps.mjs +43 -0
- package/dist/lib/react/refs.cjs +16 -0
- package/dist/lib/react/refs.mjs +17 -0
- package/dist/lib/theme/makeTheme.cjs +12 -0
- package/dist/lib/theme/store/theme.cjs +92 -0
- package/dist/lib/theme/store/theme.mjs +93 -0
- package/dist/lib/theme/vars.css.cjs +9 -0
- package/dist/{styles/lib → lib}/utils/atom-props.cjs +2 -2
- package/dist/lib/utils/classnames.cjs +6 -0
- package/dist/lib/utils/classnames.mjs +7 -0
- package/dist/lib/utils/dom.cjs +12 -0
- package/dist/lib/utils/dom.mjs +13 -0
- package/dist/lib/utils/math.cjs +12 -0
- package/dist/lib/utils/math.mjs +13 -0
- package/dist/momotaro.chunk.d.ts +40 -56
- package/dist/reset.cjs +2 -2
- package/dist/reset.mjs +2 -2
- package/dist/{styles/themes → themes}/momotaro/components/button.css.cjs +23 -23
- package/dist/themes/momotaro/components/checkbox.css.cjs +59 -0
- package/dist/{styles/themes → themes}/momotaro/components/dialog.css.cjs +4 -4
- package/dist/{styles/themes → themes}/momotaro/components/divider.css.cjs +2 -2
- package/dist/{styles/themes → themes}/momotaro/components/helpers.css.cjs +3 -3
- package/dist/themes/momotaro/components/index.cjs +34 -0
- package/dist/{styles/themes → themes}/momotaro/components/input.css.cjs +9 -9
- package/dist/{styles/themes → themes}/momotaro/components/label.css.cjs +7 -7
- package/dist/{styles/themes → themes}/momotaro/components/link.css.cjs +7 -7
- package/dist/{styles/themes → themes}/momotaro/components/popover.css.cjs +4 -4
- package/dist/{styles/themes → themes}/momotaro/components/progress.css.cjs +7 -7
- package/dist/themes/momotaro/components/radio.css.cjs +60 -0
- package/dist/themes/momotaro/components/select.css.cjs +44 -0
- package/dist/themes/momotaro/components/slider.css.cjs +89 -0
- package/dist/{styles/themes → themes}/momotaro/components/spinner.css.cjs +2 -2
- package/dist/{styles/themes → themes}/momotaro/components/switch.css.cjs +10 -10
- package/dist/{styles/themes → themes}/momotaro/components/tooltip.css.cjs +6 -6
- package/dist/themes/momotaro/momotaro.css.cjs +13 -0
- package/dist/{styles/themes → themes}/momotaro/tokens.css.cjs +11 -11
- package/dist/themes/momotaro.cjs +2 -2
- package/dist/themes/momotaro.mjs +1 -1
- package/package.json +5 -15
- package/dist/styles/components/Accessibility/VisuallyHidden/VisuallyHidden.cjs +0 -16
- package/dist/styles/components/Accessibility/VisuallyHidden/VisuallyHidden.mjs +0 -17
- package/dist/styles/components/display/Divider/Divider.cjs +0 -239
- package/dist/styles/components/display/Divider/Divider.mjs +0 -240
- package/dist/styles/components/form/Button/Button.cjs +0 -56
- package/dist/styles/components/form/Checkbox/Checkbox.cjs +0 -84
- package/dist/styles/components/form/Checkbox/Checkbox.mjs +0 -85
- package/dist/styles/components/form/Input/Input.cjs +0 -37
- package/dist/styles/components/form/Input/Input.mjs +0 -38
- package/dist/styles/components/form/Radio/Radio.cjs +0 -23
- package/dist/styles/components/form/Radio/Radio.mjs +0 -24
- package/dist/styles/components/form/Select/Select.cjs +0 -47
- package/dist/styles/components/form/Slider/Slider.cjs +0 -205
- package/dist/styles/components/form/Slider/Slider.mjs +0 -206
- package/dist/styles/components/other/BlocksProvider/BlocksProvider.cjs +0 -31
- package/dist/styles/components/overlay/Dialog/Dialog.cjs +0 -172
- package/dist/styles/components/overlay/Dialog/Dialog.mjs +0 -173
- package/dist/styles/components/typography/Heading/Heading.cjs +0 -15
- package/dist/styles/components/typography/Heading/Heading.mjs +0 -16
- package/dist/styles/components/typography/Text/Text.cjs +0 -20
- package/dist/styles/lib/theme/makeTheme.cjs +0 -12
- package/dist/styles/lib/theme/vars.css.cjs +0 -9
- package/dist/styles/themes/momotaro/components/checkbox.css.cjs +0 -59
- package/dist/styles/themes/momotaro/components/index.cjs +0 -34
- package/dist/styles/themes/momotaro/components/radio.css.cjs +0 -60
- package/dist/styles/themes/momotaro/components/select.css.cjs +0 -44
- package/dist/styles/themes/momotaro/components/slider.css.cjs +0 -89
- package/dist/styles/themes/momotaro/momotaro.css.cjs +0 -13
- /package/dist/{styles/components → components}/display/Divider/divider.css.mjs +0 -0
- /package/dist/{styles/components → components}/form/Button/Button.css.mjs +0 -0
- /package/dist/{styles/components → components}/form/Checkbox/checkbox.css.mjs +0 -0
- /package/dist/{styles/components → components}/form/Input/input.css.mjs +0 -0
- /package/dist/{styles/components → components}/form/Radio/radio.css.mjs +0 -0
- /package/dist/{styles/components → components}/form/Select/select.css.mjs +0 -0
- /package/dist/{styles/components → components}/form/Slider/slider.css.mjs +0 -0
- /package/dist/{styles/components → components}/form/Switch/switch.css.mjs +0 -0
- /package/dist/{styles/components → components}/overlay/Dialog/dialog.css.mjs +0 -0
- /package/dist/{styles/components → components}/typography/Heading/heading.css.mjs +0 -0
- /package/dist/{styles/components → components}/typography/Text/text.css.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/atoms/atoms.cjs +0 -0
- /package/dist/{styles/lib → lib}/css/atoms/atoms.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/atoms/breakpoints.cjs +0 -0
- /package/dist/{styles/lib → lib}/css/atoms/breakpoints.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/atoms/index.cjs +0 -0
- /package/dist/{styles/lib → lib}/css/atoms/index.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/atoms/sprinkles.css.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/layers/layers.css.cjs +0 -0
- /package/dist/{styles/lib → lib}/css/layers/layers.css.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/reset/reset.css.cjs +0 -0
- /package/dist/{styles/lib → lib}/css/reset/reset.css.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/style/style.mjs +0 -0
- /package/dist/{styles/lib → lib}/css/utils/cssUtils.cjs +0 -0
- /package/dist/{styles/lib → lib}/css/utils/cssUtils.mjs +0 -0
- /package/dist/{styles/lib → lib}/theme/makeComponentTheme.cjs +0 -0
- /package/dist/{styles/lib → lib}/theme/makeComponentTheme.mjs +0 -0
- /package/dist/{styles/lib → lib}/theme/makeTheme.mjs +0 -0
- /package/dist/{styles/lib → lib}/theme/makeVanillaTheme.cjs +0 -0
- /package/dist/{styles/lib → lib}/theme/makeVanillaTheme.mjs +0 -0
- /package/dist/{styles/lib → lib}/theme/tokens.cjs +0 -0
- /package/dist/{styles/lib → lib}/theme/tokens.mjs +0 -0
- /package/dist/{styles/lib → lib}/theme/vars.css.mjs +0 -0
- /package/dist/{styles/lib → lib}/utils/atom-props.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/button.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/checkbox.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/dialog.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/divider.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/helpers.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/index.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/input.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/label.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/link.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/popover.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/progress.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/radio.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/select.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/slider.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/spinner.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/switch.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/tooltip.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/transitions.cjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/components/transitions.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/index.cjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/index.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/momotaro.css.mjs +0 -0
- /package/dist/{styles/themes → themes}/momotaro/tokens.css.mjs +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
function getPopoverPosition(align, anchorRef, popoverRef) {
|
|
2
|
+
if (!anchorRef.current || !popoverRef.current) {
|
|
3
|
+
return [0, 0];
|
|
4
|
+
}
|
|
5
|
+
popoverRef.current.style.transform = "none";
|
|
6
|
+
popoverRef.current.style.transitionDuration = "0s";
|
|
7
|
+
const anchorRect = anchorRef.current.getBoundingClientRect();
|
|
8
|
+
const popoverRect = popoverRef.current.getBoundingClientRect();
|
|
9
|
+
let popoverStyles = getComputedStyle(popoverRef.current);
|
|
10
|
+
const top = popoverStyles.getPropertyValue("top");
|
|
11
|
+
const left = popoverStyles.getPropertyValue("left");
|
|
12
|
+
popoverRef.current.style.left = "0";
|
|
13
|
+
popoverRef.current.style.top = "0";
|
|
14
|
+
popoverStyles = getComputedStyle(popoverRef.current);
|
|
15
|
+
const marginTop = Number.parseFloat(
|
|
16
|
+
popoverStyles.getPropertyValue("margin-top")
|
|
17
|
+
);
|
|
18
|
+
const marginRight = Number.parseFloat(
|
|
19
|
+
popoverStyles.getPropertyValue("margin-right")
|
|
20
|
+
);
|
|
21
|
+
const marginBottom = Number.parseFloat(
|
|
22
|
+
popoverStyles.getPropertyValue("margin-bottom")
|
|
23
|
+
);
|
|
24
|
+
const marginLeft = Number.parseFloat(
|
|
25
|
+
popoverStyles.getPropertyValue("margin-left")
|
|
26
|
+
);
|
|
27
|
+
const marginY = marginTop + marginBottom;
|
|
28
|
+
const marginX = marginRight + marginLeft;
|
|
29
|
+
const docHeight = document.documentElement.clientHeight;
|
|
30
|
+
const docWidth = document.documentElement.clientWidth;
|
|
31
|
+
const docScrollTop = document.documentElement.scrollTop;
|
|
32
|
+
const docScrollLeft = document.documentElement.scrollLeft;
|
|
33
|
+
const anchorLeft = anchorRect.left + docScrollLeft;
|
|
34
|
+
const anchorTop = anchorRect.top + docScrollTop;
|
|
35
|
+
const topPosition = anchorRect.top - (popoverRect.height + marginTop);
|
|
36
|
+
const rightPosition = anchorRect.left + anchorRect.width + popoverRect.width;
|
|
37
|
+
const bottomPosition = anchorRect.top + anchorRect.height + popoverRect.height;
|
|
38
|
+
const leftPosition = anchorRect.left - popoverRect.width;
|
|
39
|
+
const offsetX = anchorLeft - marginLeft - (popoverRect.width - anchorRect.width) / 2;
|
|
40
|
+
const offsetY = anchorTop - marginTop - (popoverRect.height - anchorRect.height) / 2;
|
|
41
|
+
popoverRef.current.style.transform = "";
|
|
42
|
+
popoverRef.current.style.transitionDuration = "";
|
|
43
|
+
popoverRef.current.style.top = top;
|
|
44
|
+
popoverRef.current.style.left = left;
|
|
45
|
+
switch (align) {
|
|
46
|
+
case "top": {
|
|
47
|
+
return topPosition > 0 ? [offsetX, anchorTop - popoverRect.height - marginY] : [offsetX, anchorTop + anchorRect.height];
|
|
48
|
+
}
|
|
49
|
+
case "bottom": {
|
|
50
|
+
return bottomPosition < docHeight || topPosition < 0 ? [offsetX, anchorTop + anchorRect.height] : [offsetX, anchorTop - popoverRect.height - marginY];
|
|
51
|
+
}
|
|
52
|
+
case "left": {
|
|
53
|
+
return leftPosition > docWidth || leftPosition > 0 ? [anchorLeft - popoverRect.width - marginX, offsetY] : [anchorLeft + anchorRect.width, offsetY];
|
|
54
|
+
}
|
|
55
|
+
case "right": {
|
|
56
|
+
return rightPosition < docWidth || leftPosition < 0 ? [anchorLeft + anchorRect.width, offsetY] : [anchorLeft - popoverRect.width - marginX, offsetY];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export {
|
|
61
|
+
getPopoverPosition
|
|
62
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const lib_react_refs_cjs = require("../../../lib/react/refs.cjs");
|
|
5
|
+
const lib_theme_store_theme_cjs = require("../../../lib/theme/store/theme.cjs");
|
|
6
|
+
const components_overlay_Popover_Popover_cjs = require("../Popover/Popover.cjs");
|
|
7
|
+
const Tooltip = ({
|
|
8
|
+
align = "top",
|
|
9
|
+
children,
|
|
10
|
+
label,
|
|
11
|
+
colorScheme
|
|
12
|
+
}) => {
|
|
13
|
+
const id = react.useId();
|
|
14
|
+
const ref = react.useRef(null);
|
|
15
|
+
const [open, setOpen] = react.useState(false);
|
|
16
|
+
const tooltipClassName = lib_theme_store_theme_cjs.getComponentStyles("tooltip", {
|
|
17
|
+
base: true,
|
|
18
|
+
variants: { colorScheme }
|
|
19
|
+
});
|
|
20
|
+
react.useEffect(() => {
|
|
21
|
+
const element = ref.current;
|
|
22
|
+
if (!element) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
function onEnter() {
|
|
26
|
+
setOpen(true);
|
|
27
|
+
}
|
|
28
|
+
function onLeave() {
|
|
29
|
+
setOpen(false);
|
|
30
|
+
}
|
|
31
|
+
element.addEventListener("mouseenter", onEnter);
|
|
32
|
+
element.addEventListener("mouseleave", onLeave);
|
|
33
|
+
element.addEventListener("focusin", onEnter);
|
|
34
|
+
element.addEventListener("focusout", onLeave);
|
|
35
|
+
return () => {
|
|
36
|
+
element.removeEventListener("mouseenter", onEnter);
|
|
37
|
+
element.removeEventListener("mouseleave", onLeave);
|
|
38
|
+
element.removeEventListener("focusin", onEnter);
|
|
39
|
+
element.removeEventListener("focusout", onLeave);
|
|
40
|
+
};
|
|
41
|
+
}, []);
|
|
42
|
+
if (react.Children.count(children) !== 1) {
|
|
43
|
+
throw new Error("Tooltip component can only have one child");
|
|
44
|
+
}
|
|
45
|
+
const child = react.Children.toArray(children)[0];
|
|
46
|
+
if (!react.isValidElement(child)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
50
|
+
react.cloneElement(child, {
|
|
51
|
+
ref: lib_react_refs_cjs.composeRefs(ref, child.ref),
|
|
52
|
+
["aria-describedby"]: open ? id : void 0
|
|
53
|
+
}),
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
55
|
+
components_overlay_Popover_Popover_cjs.Popover,
|
|
56
|
+
{
|
|
57
|
+
id,
|
|
58
|
+
role: "tooltip",
|
|
59
|
+
anchorElement: ref,
|
|
60
|
+
open,
|
|
61
|
+
onRequestClose: () => {
|
|
62
|
+
setOpen(false);
|
|
63
|
+
},
|
|
64
|
+
align,
|
|
65
|
+
className: tooltipClassName,
|
|
66
|
+
children: label
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
] });
|
|
70
|
+
};
|
|
71
|
+
exports.Tooltip = Tooltip;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
4
|
+
import { useId, useRef, useState, useEffect, Children, isValidElement, cloneElement } from "react";
|
|
5
|
+
import { composeRefs } from "../../../lib/react/refs.mjs";
|
|
6
|
+
import { getComponentStyles } from "../../../lib/theme/store/theme.mjs";
|
|
7
|
+
import { Popover } from "../Popover/Popover.mjs";
|
|
8
|
+
const Tooltip = ({
|
|
9
|
+
align = "top",
|
|
10
|
+
children,
|
|
11
|
+
label,
|
|
12
|
+
colorScheme
|
|
13
|
+
}) => {
|
|
14
|
+
const id = useId();
|
|
15
|
+
const ref = useRef(null);
|
|
16
|
+
const [open, setOpen] = useState(false);
|
|
17
|
+
const tooltipClassName = getComponentStyles("tooltip", {
|
|
18
|
+
base: true,
|
|
19
|
+
variants: { colorScheme }
|
|
20
|
+
});
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const element = ref.current;
|
|
23
|
+
if (!element) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
function onEnter() {
|
|
27
|
+
setOpen(true);
|
|
28
|
+
}
|
|
29
|
+
function onLeave() {
|
|
30
|
+
setOpen(false);
|
|
31
|
+
}
|
|
32
|
+
element.addEventListener("mouseenter", onEnter);
|
|
33
|
+
element.addEventListener("mouseleave", onLeave);
|
|
34
|
+
element.addEventListener("focusin", onEnter);
|
|
35
|
+
element.addEventListener("focusout", onLeave);
|
|
36
|
+
return () => {
|
|
37
|
+
element.removeEventListener("mouseenter", onEnter);
|
|
38
|
+
element.removeEventListener("mouseleave", onLeave);
|
|
39
|
+
element.removeEventListener("focusin", onEnter);
|
|
40
|
+
element.removeEventListener("focusout", onLeave);
|
|
41
|
+
};
|
|
42
|
+
}, []);
|
|
43
|
+
if (Children.count(children) !== 1) {
|
|
44
|
+
throw new Error("Tooltip component can only have one child");
|
|
45
|
+
}
|
|
46
|
+
const child = Children.toArray(children)[0];
|
|
47
|
+
if (!isValidElement(child)) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
51
|
+
cloneElement(child, {
|
|
52
|
+
ref: composeRefs(ref, child.ref),
|
|
53
|
+
["aria-describedby"]: open ? id : void 0
|
|
54
|
+
}),
|
|
55
|
+
/* @__PURE__ */ jsx(
|
|
56
|
+
Popover,
|
|
57
|
+
{
|
|
58
|
+
id,
|
|
59
|
+
role: "tooltip",
|
|
60
|
+
anchorElement: ref,
|
|
61
|
+
open,
|
|
62
|
+
onRequestClose: () => {
|
|
63
|
+
setOpen(false);
|
|
64
|
+
},
|
|
65
|
+
align,
|
|
66
|
+
className: tooltipClassName,
|
|
67
|
+
children: label
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
] });
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
Tooltip
|
|
74
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
const lib_utils_classnames_cjs = require("../../../lib/utils/classnames.cjs");
|
|
4
|
+
const components_typography_Heading_heading_css_cjs = require("./heading.css.cjs");
|
|
5
|
+
const components_layout_Box_Box_cjs = require("../../layout/Box/Box.cjs");
|
|
6
|
+
const Heading = ({
|
|
7
|
+
className,
|
|
8
|
+
level = 1,
|
|
9
|
+
children,
|
|
10
|
+
...restProps
|
|
11
|
+
}) => {
|
|
12
|
+
const Tag = `h${level}`;
|
|
13
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14
|
+
components_layout_Box_Box_cjs.Box,
|
|
15
|
+
{
|
|
16
|
+
asChild: true,
|
|
17
|
+
className: lib_utils_classnames_cjs.classnames(components_typography_Heading_heading_css_cjs.heading, className),
|
|
18
|
+
...restProps,
|
|
19
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Tag, { children })
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
exports.Heading = Heading;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { classnames } from "../../../lib/utils/classnames.mjs";
|
|
3
|
+
import { heading } from "./heading.css.mjs";
|
|
4
|
+
import { Box } from "../../layout/Box/Box.mjs";
|
|
5
|
+
const Heading = ({
|
|
6
|
+
className,
|
|
7
|
+
level = 1,
|
|
8
|
+
children,
|
|
9
|
+
...restProps
|
|
10
|
+
}) => {
|
|
11
|
+
const Tag = `h${level}`;
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
|
+
Box,
|
|
14
|
+
{
|
|
15
|
+
asChild: true,
|
|
16
|
+
className: classnames(heading, className),
|
|
17
|
+
...restProps,
|
|
18
|
+
children: /* @__PURE__ */ jsx(Tag, { children })
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
export {
|
|
23
|
+
Heading
|
|
24
|
+
};
|
|
@@ -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
|
|
4
|
+
const lib_css_layers_layers_css_cjs = require("../../../lib/css/layers/layers.css.cjs");
|
|
5
5
|
fileScope.setFileScope("src/components/typography/Heading/heading.css.ts", "@blockle/blocks");
|
|
6
6
|
const heading = css.style({
|
|
7
7
|
"@layer": {
|
|
8
|
-
[
|
|
8
|
+
[lib_css_layers_layers_css_cjs.blocksLayer]: {
|
|
9
9
|
margin: 0,
|
|
10
10
|
padding: 0
|
|
11
11
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
const lib_utils_classnames_cjs = require("../../../lib/utils/classnames.cjs");
|
|
4
|
+
const components_typography_Text_text_css_cjs = require("./text.css.cjs");
|
|
5
|
+
const components_layout_Box_Box_cjs = require("../../layout/Box/Box.cjs");
|
|
6
|
+
const Text = ({
|
|
7
|
+
asChild,
|
|
8
|
+
children,
|
|
9
|
+
className,
|
|
10
|
+
ref,
|
|
11
|
+
tag,
|
|
12
|
+
...restProps
|
|
13
|
+
}) => {
|
|
14
|
+
const Component = tag ?? "span";
|
|
15
|
+
return /* @__PURE__ */ jsxRuntime.jsx(components_layout_Box_Box_cjs.Box, { asChild: true, className: lib_utils_classnames_cjs.classnames(components_typography_Text_text_css_cjs.text, className), ...restProps, children: asChild ? children : (
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
+
/* @__PURE__ */ jsxRuntime.jsx(Component, { ref, children })
|
|
18
|
+
) });
|
|
19
|
+
};
|
|
20
|
+
exports.Text = Text;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { classnames } from "
|
|
2
|
+
import { classnames } from "../../../lib/utils/classnames.mjs";
|
|
3
3
|
import { text } from "./text.css.mjs";
|
|
4
|
-
import { Box } from "../../
|
|
4
|
+
import { Box } from "../../layout/Box/Box.mjs";
|
|
5
5
|
const Text = ({
|
|
6
6
|
asChild,
|
|
7
7
|
children,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -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
|
|
4
|
+
const lib_css_layers_layers_css_cjs = require("../../../lib/css/layers/layers.css.cjs");
|
|
5
5
|
fileScope.setFileScope("src/components/typography/Text/text.css.ts", "@blockle/blocks");
|
|
6
6
|
const text = css.style({
|
|
7
7
|
"@layer": {
|
|
8
|
-
[
|
|
8
|
+
[lib_css_layers_layers_css_cjs.blocksLayer]: {
|
|
9
9
|
margin: 0,
|
|
10
10
|
padding: 0
|
|
11
11
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const react = require("react");
|
|
3
|
+
const useClickOutside = (ref, onClickOutside, { enabled = true } = {}) => {
|
|
4
|
+
react.useEffect(() => {
|
|
5
|
+
if (!enabled) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const listener = (event) => {
|
|
9
|
+
if (ref.current && !ref.current.contains(event.target)) {
|
|
10
|
+
onClickOutside();
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const rafId = requestAnimationFrame(() => {
|
|
14
|
+
document.addEventListener("click", listener);
|
|
15
|
+
});
|
|
16
|
+
return () => {
|
|
17
|
+
cancelAnimationFrame(rafId);
|
|
18
|
+
document.removeEventListener("click", listener);
|
|
19
|
+
};
|
|
20
|
+
}, [ref, onClickOutside, enabled]);
|
|
21
|
+
};
|
|
22
|
+
exports.useClickOutside = useClickOutside;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
const useClickOutside = (ref, onClickOutside, { enabled = true } = {}) => {
|
|
3
|
+
useEffect(() => {
|
|
4
|
+
if (!enabled) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const listener = (event) => {
|
|
8
|
+
if (ref.current && !ref.current.contains(event.target)) {
|
|
9
|
+
onClickOutside();
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const rafId = requestAnimationFrame(() => {
|
|
13
|
+
document.addEventListener("click", listener);
|
|
14
|
+
});
|
|
15
|
+
return () => {
|
|
16
|
+
cancelAnimationFrame(rafId);
|
|
17
|
+
document.removeEventListener("click", listener);
|
|
18
|
+
};
|
|
19
|
+
}, [ref, onClickOutside, enabled]);
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
useClickOutside
|
|
23
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const react = require("react");
|
|
3
|
+
function useControlledValue({
|
|
4
|
+
defaultValue,
|
|
5
|
+
value,
|
|
6
|
+
onChange,
|
|
7
|
+
transformValue
|
|
8
|
+
}) {
|
|
9
|
+
const [internValue, setInternValue] = react.useState(defaultValue);
|
|
10
|
+
const currentValue = (onChange ? value : internValue) ?? defaultValue;
|
|
11
|
+
const setValue = react.useCallback(
|
|
12
|
+
function setValue2(value2) {
|
|
13
|
+
const nextValue = transformValue ? transformValue(value2) : value2;
|
|
14
|
+
if (onChange) {
|
|
15
|
+
onChange(nextValue);
|
|
16
|
+
} else {
|
|
17
|
+
setInternValue(nextValue);
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
[onChange, transformValue]
|
|
21
|
+
);
|
|
22
|
+
if (process.env.NODE_ENV !== "production") {
|
|
23
|
+
react.useEffect(() => {
|
|
24
|
+
if (onChange && value === void 0) {
|
|
25
|
+
console.error("Slider is in controlled mode but no value is provided");
|
|
26
|
+
}
|
|
27
|
+
}, []);
|
|
28
|
+
}
|
|
29
|
+
return [currentValue, setValue];
|
|
30
|
+
}
|
|
31
|
+
exports.useControlledValue = useControlledValue;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useState, useCallback, useEffect } from "react";
|
|
2
|
+
function useControlledValue({
|
|
3
|
+
defaultValue,
|
|
4
|
+
value,
|
|
5
|
+
onChange,
|
|
6
|
+
transformValue
|
|
7
|
+
}) {
|
|
8
|
+
const [internValue, setInternValue] = useState(defaultValue);
|
|
9
|
+
const currentValue = (onChange ? value : internValue) ?? defaultValue;
|
|
10
|
+
const setValue = useCallback(
|
|
11
|
+
function setValue2(value2) {
|
|
12
|
+
const nextValue = transformValue ? transformValue(value2) : value2;
|
|
13
|
+
if (onChange) {
|
|
14
|
+
onChange(nextValue);
|
|
15
|
+
} else {
|
|
16
|
+
setInternValue(nextValue);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
[onChange, transformValue]
|
|
20
|
+
);
|
|
21
|
+
if (process.env.NODE_ENV !== "production") {
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (onChange && value === void 0) {
|
|
24
|
+
console.error("Slider is in controlled mode but no value is provided");
|
|
25
|
+
}
|
|
26
|
+
}, []);
|
|
27
|
+
}
|
|
28
|
+
return [currentValue, setValue];
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
useControlledValue
|
|
32
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const react = require("react");
|
|
3
|
+
const useKeyboard = (key, callback, { enabled = true, type = "keydown" } = {}) => {
|
|
4
|
+
react.useEffect(() => {
|
|
5
|
+
if (!enabled) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
function handleKeyDown(event) {
|
|
9
|
+
if (event.key === key) {
|
|
10
|
+
callback(event);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
document.addEventListener(type, handleKeyDown);
|
|
14
|
+
return () => {
|
|
15
|
+
document.removeEventListener(type, handleKeyDown);
|
|
16
|
+
};
|
|
17
|
+
}, [callback, enabled, key, type]);
|
|
18
|
+
};
|
|
19
|
+
exports.useKeyboard = useKeyboard;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
const useKeyboard = (key, callback, { enabled = true, type = "keydown" } = {}) => {
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
if (!enabled) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
function handleKeyDown(event) {
|
|
10
|
+
if (event.key === key) {
|
|
11
|
+
callback(event);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
document.addEventListener(type, handleKeyDown);
|
|
15
|
+
return () => {
|
|
16
|
+
document.removeEventListener(type, handleKeyDown);
|
|
17
|
+
};
|
|
18
|
+
}, [callback, enabled, key, type]);
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
useKeyboard
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const react = require("react");
|
|
3
|
+
const useLayer = () => {
|
|
4
|
+
const layerRef = react.useRef(null);
|
|
5
|
+
react.useEffect(
|
|
6
|
+
() => () => {
|
|
7
|
+
if (layerRef.current) {
|
|
8
|
+
layerRef.current.remove();
|
|
9
|
+
layerRef.current = null;
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
[]
|
|
13
|
+
);
|
|
14
|
+
function getLayer() {
|
|
15
|
+
if (!layerRef.current) {
|
|
16
|
+
const div = document.createElement("div");
|
|
17
|
+
div.dataset.layer = "blocks";
|
|
18
|
+
layerRef.current = div;
|
|
19
|
+
document.body.append(layerRef.current);
|
|
20
|
+
}
|
|
21
|
+
return layerRef.current;
|
|
22
|
+
}
|
|
23
|
+
return getLayer;
|
|
24
|
+
};
|
|
25
|
+
exports.useLayer = useLayer;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useRef, useEffect } from "react";
|
|
2
|
+
const useLayer = () => {
|
|
3
|
+
const layerRef = useRef(null);
|
|
4
|
+
useEffect(
|
|
5
|
+
() => () => {
|
|
6
|
+
if (layerRef.current) {
|
|
7
|
+
layerRef.current.remove();
|
|
8
|
+
layerRef.current = null;
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
[]
|
|
12
|
+
);
|
|
13
|
+
function getLayer() {
|
|
14
|
+
if (!layerRef.current) {
|
|
15
|
+
const div = document.createElement("div");
|
|
16
|
+
div.dataset.layer = "blocks";
|
|
17
|
+
layerRef.current = div;
|
|
18
|
+
document.body.append(layerRef.current);
|
|
19
|
+
}
|
|
20
|
+
return layerRef.current;
|
|
21
|
+
}
|
|
22
|
+
return getLayer;
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
useLayer
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const hooks_useIsomorphicLayoutEffect_useIsomorphicLayoutEffect_cjs = require("../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.cjs");
|
|
3
|
+
const usePreventBodyScroll = (enabled = true) => {
|
|
4
|
+
hooks_useIsomorphicLayoutEffect_useIsomorphicLayoutEffect_cjs.useIsomorphicLayoutEffect(() => {
|
|
5
|
+
if (!enabled) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const prevOverflow = document.body.style.getPropertyValue("overflow");
|
|
9
|
+
const prevScrollTop = document.documentElement.scrollTop;
|
|
10
|
+
if (document.body.scrollHeight > window.innerHeight) {
|
|
11
|
+
document.body.style.position = "fixed";
|
|
12
|
+
document.body.style.overflow = "hidden";
|
|
13
|
+
document.body.style.overflowY = "scroll";
|
|
14
|
+
document.body.style.width = "100%";
|
|
15
|
+
document.body.style.top = `-${prevScrollTop}px`;
|
|
16
|
+
} else {
|
|
17
|
+
document.body.style.overflow = "hidden";
|
|
18
|
+
}
|
|
19
|
+
return () => {
|
|
20
|
+
document.body.style.position = "";
|
|
21
|
+
document.body.style.overflow = prevOverflow;
|
|
22
|
+
document.body.style.overflowY = "";
|
|
23
|
+
document.body.style.width = "";
|
|
24
|
+
document.body.style.top = "";
|
|
25
|
+
document.documentElement.scrollTop = prevScrollTop;
|
|
26
|
+
};
|
|
27
|
+
}, [enabled]);
|
|
28
|
+
};
|
|
29
|
+
exports.usePreventBodyScroll = usePreventBodyScroll;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.mjs";
|
|
2
|
+
const usePreventBodyScroll = (enabled = true) => {
|
|
3
|
+
useIsomorphicLayoutEffect(() => {
|
|
4
|
+
if (!enabled) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const prevOverflow = document.body.style.getPropertyValue("overflow");
|
|
8
|
+
const prevScrollTop = document.documentElement.scrollTop;
|
|
9
|
+
if (document.body.scrollHeight > window.innerHeight) {
|
|
10
|
+
document.body.style.position = "fixed";
|
|
11
|
+
document.body.style.overflow = "hidden";
|
|
12
|
+
document.body.style.overflowY = "scroll";
|
|
13
|
+
document.body.style.width = "100%";
|
|
14
|
+
document.body.style.top = `-${prevScrollTop}px`;
|
|
15
|
+
} else {
|
|
16
|
+
document.body.style.overflow = "hidden";
|
|
17
|
+
}
|
|
18
|
+
return () => {
|
|
19
|
+
document.body.style.position = "";
|
|
20
|
+
document.body.style.overflow = prevOverflow;
|
|
21
|
+
document.body.style.overflowY = "";
|
|
22
|
+
document.body.style.width = "";
|
|
23
|
+
document.body.style.top = "";
|
|
24
|
+
document.documentElement.scrollTop = prevScrollTop;
|
|
25
|
+
};
|
|
26
|
+
}, [enabled]);
|
|
27
|
+
};
|
|
28
|
+
export {
|
|
29
|
+
usePreventBodyScroll
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|