@koine/react 2.0.0-beta.1 → 2.0.0-beta.11
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/Alert/Alert.mjs +19 -7
- package/Alert/Alert.stories.mjs +18 -0
- package/Animations/Reveal.mjs +39 -13
- package/Animations/Underline.d.ts +1 -1
- package/Animations/Underline.mjs +14 -4
- package/Animations/useReveal.mjs +42 -40
- package/Autocomplete/AutocompleteDownshift.mjs +156 -157
- package/Autocomplete/AutocompleteDownshiftMultiselect.mjs +351 -352
- package/Autocomplete/AutocompleteMui.d.ts +1 -1
- package/Autocomplete/AutocompleteMui.mjs +126 -89
- package/Autocomplete/AutocompleteReach.mjs +110 -111
- package/Autocomplete/components.d.ts +12 -16
- package/Autocomplete/components.mjs +76 -23
- package/Autocomplete/helpers.mjs +11 -5
- package/Autocomplete/index.mjs +4 -3
- package/Bg/BgColor.d.ts +2 -7
- package/Bg/BgColor.mjs +36 -15
- package/Bg/BgPhoto.mjs +66 -11
- package/Bg/BgSvg.mjs +17 -7
- package/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/Breadcrumbs/Breadcrumbs.mjs +82 -18
- package/Buttons/Button.d.ts +1 -1
- package/Buttons/Button.mjs +73 -9
- package/Buttons/ButtonComposite.d.ts +1 -1
- package/Buttons/ButtonComposite.mjs +99 -22
- package/Buttons/ButtonFab.d.ts +1 -3
- package/Buttons/ButtonFab.mjs +6 -4
- package/Buttons/ButtonLink.d.ts +1 -1
- package/Buttons/ButtonLink.mjs +14 -7
- package/Buttons/IconButton.d.ts +1 -3
- package/Buttons/IconButton.mjs +18 -6
- package/Calendar/CalendarDaygridCell.d.ts +2 -2
- package/Calendar/CalendarDaygridCell.mjs +64 -26
- package/Calendar/CalendarDaygridNav.d.ts +1 -1
- package/Calendar/CalendarDaygridNav.mjs +41 -12
- package/Calendar/CalendarDaygridTable.d.ts +3 -3
- package/Calendar/CalendarDaygridTable.mjs +97 -30
- package/Calendar/CalendarLegend.d.ts +1 -1
- package/Calendar/CalendarLegend.mjs +20 -6
- package/Calendar/calendar-api-google.d.ts +1 -1
- package/Calendar/calendar-api-google.mjs +75 -105
- package/Calendar/types.mjs +1 -1
- package/Calendar/useCalendar.d.ts +2 -2
- package/Calendar/useCalendar.mjs +184 -142
- package/Calendar/utils.mjs +101 -94
- package/Carousel/Carousel.mjs +377 -378
- package/Carousel/CarouselCss.d.ts +3 -20
- package/Carousel/CarouselCss.mjs +38 -16
- package/Collapsable/Collapsable.mjs +1 -1
- package/Collapsable/CollapsableReach.mjs +1 -3
- package/Collapsable/index.mjs +1 -2
- package/Debug/Debug.mjs +20 -6
- package/Details/Details.d.ts +5 -5
- package/Details/Details.mjs +64 -37
- package/Details/Details.stories.mjs +21 -0
- package/Dialog/DialogMui.d.ts +10 -327
- package/Dialog/DialogMui.mjs +50 -25
- package/Dialog/DialogMui.stories.mjs +20 -0
- package/Dialog/css/bare.d.ts +9 -327
- package/Dialog/css/bare.mjs +15 -17
- package/Dialog/css/index.stories.mjs +75 -0
- package/Dialog/m/bare.d.ts +2 -398
- package/Dialog/m/bare.mjs +114 -51
- package/Dialog/m/basic.mjs +10 -10
- package/Dialog/m/index.mjs +4 -4
- package/Dialog/sc/bare.d.ts +27 -405
- package/Dialog/sc/bare.mjs +40 -29
- package/Dialog/sc/framer.d.ts +15 -422
- package/Dialog/sc/framer.mjs +9 -9
- package/Dialog/sc/framerMaterial.d.ts +15 -422
- package/Dialog/sc/framerMaterial.mjs +9 -9
- package/Dialog/sc/index.stories.mjs +48 -0
- package/Dialog/sc/material.d.ts +27 -405
- package/Dialog/sc/material.mjs +37 -17
- package/Dialog/tw/bare.d.ts +9 -327
- package/Dialog/tw/bare.mjs +15 -28
- package/Dialog/tw/elegant.d.ts +9 -327
- package/Dialog/tw/elegant.mjs +15 -17
- package/Dialog/tw/framer.d.ts +3 -354
- package/Dialog/tw/framer.mjs +9 -9
- package/Dialog/tw/framerMaterial.d.ts +3 -354
- package/Dialog/tw/framerMaterial.mjs +9 -9
- package/Dialog/tw/index.stories.mjs +83 -0
- package/Dialog/tw/material.d.ts +9 -327
- package/Dialog/tw/material.mjs +15 -17
- package/Editor/Editor--tiptap.d.ts +1 -1
- package/Editor/Editor--tiptap.mjs +45 -18
- package/Editor/components.d.ts +3 -5
- package/Editor/components.mjs +26 -8
- package/FaviconTags.mjs +64 -0
- package/Form/Form.mjs +81 -47
- package/Form/sc/bare.d.ts +11 -11
- package/Form/sc/bare.mjs +21 -12
- package/Forms/Checkbox/Checkbox.d.ts +4 -4
- package/Forms/Checkbox/Checkbox.mjs +29 -11
- package/Forms/Feedback/Feedback.mjs +11 -6
- package/Forms/Field/Field.d.ts +2 -4
- package/Forms/Field/Field.mjs +35 -16
- package/Forms/Field/FieldControl.mjs +39 -19
- package/Forms/Field/FieldHint.d.ts +1 -1
- package/Forms/Field/FieldHint.mjs +5 -3
- package/Forms/Input/Input.d.ts +5 -5
- package/Forms/Input/Input.mjs +30 -11
- package/Forms/InputGroup/InputGroup.d.ts +4 -4
- package/Forms/InputGroup/InputGroup.mjs +52 -10
- package/Forms/Label/Label.d.ts +1 -1
- package/Forms/Label/Label.mjs +23 -5
- package/Forms/Password/Password.d.ts +1 -1
- package/Forms/Password/Password.mjs +48 -12
- package/Forms/Radio/Radio.mjs +50 -18
- package/Forms/Switch/Switch.d.ts +2 -2
- package/Forms/Switch/Switch.mjs +52 -12
- package/Forms/Textarea/Textarea.d.ts +1 -1
- package/Forms/Textarea/Textarea.mjs +21 -7
- package/Forms/Textarea/TextareaRich.mjs +39 -19
- package/Forms/Toggle/Toggle-tailwind.mjs +0 -1
- package/Forms/Toggle/Toggle.d.ts +7 -7
- package/Forms/Toggle/Toggle.mjs +113 -21
- package/Forms/Toggle/useToggle-tailwind.mjs +0 -1
- package/Forms/Toggle/useToggle.mjs +86 -68
- package/Forms/antispam.mjs +19 -21
- package/Forms/helpers.mjs +25 -19
- package/Forms/styles.d.ts +3 -7
- package/Forms/styles.mjs +50 -18
- package/Gauge/Gauge.mjs +99 -100
- package/Grid/Grid.d.ts +7 -30
- package/Grid/Grid.mjs +54 -32
- package/Hamburger/Hamburger.mjs +64 -37
- package/Header/useHeader.mjs +23 -18
- package/Hidden/Hidden.d.ts +1 -1
- package/Hidden/Hidden.mjs +9 -9
- package/Img/sc/bare.d.ts +1 -1
- package/Img/sc/bare.mjs +31 -34
- package/Img/types.mjs +1 -1
- package/Link/Link.d.ts +1 -3
- package/Link/Link.mjs +1 -3
- package/Link/LinkBlank.d.ts +2 -5
- package/Link/LinkBlank.mjs +25 -10
- package/Menu/Menu.d.ts +1 -1
- package/Menu/Menu.mjs +10 -3
- package/Menu/MenuMui.mjs +1 -2
- package/MenuItem/MenuItem.d.ts +1 -4
- package/MenuItem/MenuItem.mjs +19 -3
- package/MenuItem/MenuItemMui.mjs +0 -1
- package/MenuItem/useMenuItem.mjs +45 -27
- package/Meta/Meta.mjs +5 -3
- package/NoJs/NoJs.mjs +7 -4
- package/Pagination/PaginationNav.d.ts +1 -1
- package/Pagination/PaginationNav.mjs +90 -29
- package/Pagination/PaginationResults.mjs +31 -8
- package/Pill/Pill.d.ts +4 -4
- package/Pill/Pill.mjs +36 -6
- package/Progress/ProgressCircular.mjs +48 -10
- package/Progress/ProgressLinear.mjs +39 -19
- package/Progress/ProgressOverlay.mjs +56 -16
- package/Rating/Rating.d.ts +5 -5
- package/Rating/Rating.mjs +118 -34
- package/Rating/index.mjs +37 -24
- package/Select/SelectDownshift.mjs +37 -38
- package/Select/components.d.ts +1 -1
- package/Select/components.mjs +21 -8
- package/Select/index.mjs +2 -3
- package/Sidebar/Sidebar.mjs +57 -17
- package/Spacing/Spacing.d.ts +1 -1
- package/Spacing/Spacing.mjs +27 -17
- package/Sticky/Sticky.mjs +218 -219
- package/Sticky/StickyCss.mjs +8 -4
- package/Sticky/index.mjs +1 -1
- package/Tabs/TabsMui.d.ts +9 -298
- package/Tabs/TabsMui.mjs +39 -27
- package/Tabs/TabsMui.stories.mjs +20 -0
- package/Tabs/sc/bare.mjs +1 -3
- package/Tabs/sc/index.stories.mjs +0 -0
- package/Tabs/tw/bare.d.ts +7 -296
- package/Tabs/tw/bare.mjs +11 -13
- package/Tabs/tw/index.stories.mjs +25 -0
- package/Tabs/tw/material.d.ts +7 -332
- package/Tabs/tw/material.mjs +11 -15
- package/Tabs/useTabs.mjs +24 -21
- package/Typography/CopyPasteVisible.d.ts +1 -1
- package/Typography/CopyPasteVisible.mjs +5 -3
- package/Typography/Native.d.ts +5 -5
- package/Typography/Native.mjs +45 -12
- package/Typography/ReadMore.mjs +100 -29
- package/Typography/TextLoop.mjs +75 -31
- package/Typography/TypeStairs.mjs +36 -24
- package/css/index.mjs +20 -21
- package/helpers/classed.mjs +21 -30
- package/helpers/classed.stories.mjs +121 -0
- package/helpers/createUseMediaQueryWidth.mjs +140 -140
- package/helpers/extend-component.mjs +7 -7
- package/helpers/mergeRefs.mjs +3 -4
- package/hooks/index.mjs +3 -3
- package/hooks/types.mjs +3 -1
- package/hooks/useAsyncFn.mjs +28 -26
- package/hooks/useDateLocale.mjs +22 -22
- package/hooks/useFirstMountState.mjs +2 -3
- package/hooks/useFixedOffset.mjs +23 -24
- package/hooks/useFocus.mjs +7 -5
- package/hooks/useInterval.mjs +15 -14
- package/hooks/useIsomorphicLayoutEffect.mjs +1 -4
- package/hooks/useKeyUp.mjs +9 -11
- package/hooks/useMeasure.mjs +74 -67
- package/hooks/useMountedState.mjs +5 -6
- package/hooks/useNavigateAway.mjs +26 -25
- package/hooks/usePrevious.mjs +9 -4
- package/hooks/usePreviousRef.mjs +2 -2
- package/hooks/useScrollPosition.mjs +28 -26
- package/hooks/useScrollThreshold.mjs +18 -13
- package/hooks/useScrollTo.mjs +6 -8
- package/hooks/useSmoothScroll.mjs +12 -16
- package/hooks/useSpinDelay.mjs +24 -22
- package/hooks/useTraceUpdate.mjs +8 -7
- package/hooks/useUpdateEffect.mjs +4 -5
- package/hooks/useWindowSize.mjs +13 -10
- package/index.mjs +4 -5
- package/m/MotionProvider.mjs +5 -4
- package/m/index.mjs +1 -2
- package/package.json +17 -18
- package/shared/index.mjs +35 -0
- package/styles/Body.d.ts +2 -2
- package/styles/Body.mjs +8 -5
- package/styles/Global.mjs +36 -5
- package/styles/index.mjs +5 -5
- package/styles/media.mjs +63 -68
- package/styles/spacing.mjs +26 -25
- package/styles/styled.mjs +23 -10
- package/styles/theme--vanilla.mjs +26 -19
- package/styles/theme.mjs +16 -19
- package/tw/index.mjs +20 -21
- package/twm/index.mjs +20 -21
- package/types.mjs +1 -1
- package/typings.d.ts +1 -0
- package/Alert/Alert.js +0 -14
- package/Alert/index.js +0 -4
- package/Alert/package.json +0 -6
- package/Animations/Reveal.js +0 -21
- package/Animations/Underline.js +0 -8
- package/Animations/index.js +0 -6
- package/Animations/package.json +0 -6
- package/Animations/useReveal.js +0 -75
- package/Autocomplete/AutocompleteDownshift.js +0 -161
- package/Autocomplete/AutocompleteDownshiftMultiselect.js +0 -356
- package/Autocomplete/AutocompleteMui.js +0 -180
- package/Autocomplete/AutocompleteReach.js +0 -115
- package/Autocomplete/components.js +0 -37
- package/Autocomplete/helpers.js +0 -34
- package/Autocomplete/index.js +0 -7
- package/Autocomplete/package.json +0 -6
- package/Bg/BgColor.js +0 -25
- package/Bg/BgPhoto.js +0 -20
- package/Bg/BgSvg.js +0 -16
- package/Bg/index.js +0 -6
- package/Bg/package.json +0 -6
- package/Breadcrumbs/Breadcrumbs.js +0 -31
- package/Breadcrumbs/index.js +0 -4
- package/Breadcrumbs/package.json +0 -6
- package/Buttons/Button.js +0 -17
- package/Buttons/ButtonComposite.js +0 -32
- package/Buttons/ButtonFab.js +0 -9
- package/Buttons/ButtonLink.js +0 -15
- package/Buttons/IconButton.js +0 -10
- package/Buttons/index.js +0 -8
- package/Buttons/package.json +0 -6
- package/Calendar/CalendarDaygridCell.js +0 -61
- package/Calendar/CalendarDaygridNav.js +0 -28
- package/Calendar/CalendarDaygridTable.js +0 -52
- package/Calendar/CalendarLegend.js +0 -19
- package/Calendar/calendar-api-google.js +0 -133
- package/Calendar/index.js +0 -9
- package/Calendar/package.json +0 -6
- package/Calendar/types.js +0 -2
- package/Calendar/useCalendar.js +0 -187
- package/Calendar/utils.js +0 -215
- package/Carousel/Carousel.js +0 -381
- package/Carousel/CarouselCss.js +0 -26
- package/Carousel/index.js +0 -4
- package/Carousel/package.json +0 -6
- package/Collapsable/Collapsable.js +0 -4
- package/Collapsable/CollapsableReach.js +0 -252
- package/Collapsable/index.js +0 -5
- package/Collapsable/package.json +0 -6
- package/Debug/Debug.js +0 -13
- package/Debug/index.js +0 -4
- package/Debug/package.json +0 -6
- package/Details/Details.js +0 -66
- package/Details/index.js +0 -4
- package/Details/package.json +0 -6
- package/Dialog/DialogMui.js +0 -83
- package/Dialog/css/bare.js +0 -24
- package/Dialog/index.js +0 -5
- package/Dialog/m/bare.js +0 -55
- package/Dialog/m/basic.js +0 -35
- package/Dialog/m/index.js +0 -8
- package/Dialog/m/package.json +0 -6
- package/Dialog/package.json +0 -6
- package/Dialog/sc/bare.js +0 -46
- package/Dialog/sc/framer.js +0 -19
- package/Dialog/sc/framerMaterial.js +0 -19
- package/Dialog/sc/material.js +0 -24
- package/Dialog/tw/bare.js +0 -45
- package/Dialog/tw/elegant.js +0 -23
- package/Dialog/tw/framer.js +0 -19
- package/Dialog/tw/framerMaterial.js +0 -19
- package/Dialog/tw/material.js +0 -23
- package/Editor/Editor--tiptap.js +0 -31
- package/Editor/components.js +0 -15
- package/Editor/index.js +0 -4
- package/Editor/package.json +0 -6
- package/FaviconTags/FaviconTags.js +0 -20
- package/FaviconTags/FaviconTags.mjs +0 -16
- package/FaviconTags/index.d.ts +0 -2
- package/FaviconTags/index.js +0 -7
- package/FaviconTags/index.mjs +0 -2
- package/FaviconTags/package.json +0 -6
- package/Form/Form.js +0 -65
- package/Form/index.js +0 -4
- package/Form/package.json +0 -6
- package/Form/sc/bare.js +0 -23
- package/Forms/Checkbox/Checkbox.js +0 -21
- package/Forms/Checkbox/index.js +0 -4
- package/Forms/Checkbox/package.json +0 -6
- package/Forms/Feedback/Feedback.js +0 -13
- package/Forms/Feedback/index.js +0 -4
- package/Forms/Feedback/package.json +0 -6
- package/Forms/Field/Field.js +0 -35
- package/Forms/Field/FieldControl.js +0 -51
- package/Forms/Field/FieldHint.js +0 -7
- package/Forms/Field/index.js +0 -5
- package/Forms/Field/package.json +0 -6
- package/Forms/Input/Input.js +0 -20
- package/Forms/Input/index.js +0 -4
- package/Forms/Input/package.json +0 -6
- package/Forms/InputGroup/InputGroup.js +0 -19
- package/Forms/InputGroup/index.js +0 -4
- package/Forms/InputGroup/package.json +0 -6
- package/Forms/Label/Label.js +0 -9
- package/Forms/Label/index.js +0 -4
- package/Forms/Label/package.json +0 -6
- package/Forms/Password/Password.js +0 -20
- package/Forms/Password/index.js +0 -4
- package/Forms/Password/package.json +0 -6
- package/Forms/Radio/Radio.js +0 -28
- package/Forms/Radio/index.js +0 -4
- package/Forms/Radio/package.json +0 -6
- package/Forms/Switch/Switch.js +0 -23
- package/Forms/Switch/index.js +0 -4
- package/Forms/Switch/package.json +0 -6
- package/Forms/Textarea/Textarea.js +0 -15
- package/Forms/Textarea/TextareaRich.js +0 -31
- package/Forms/Textarea/index.js +0 -5
- package/Forms/Textarea/package.json +0 -6
- package/Forms/Toggle/Toggle-tailwind.js +0 -99
- package/Forms/Toggle/Toggle.js +0 -36
- package/Forms/Toggle/index.js +0 -4
- package/Forms/Toggle/package.json +0 -6
- package/Forms/Toggle/useToggle-tailwind.js +0 -202
- package/Forms/Toggle/useToggle.js +0 -149
- package/Forms/antispam.js +0 -66
- package/Forms/helpers.js +0 -54
- package/Forms/index.js +0 -19
- package/Forms/package.json +0 -6
- package/Forms/styles.js +0 -32
- package/Gauge/Gauge.js +0 -106
- package/Grid/Grid.js +0 -56
- package/Grid/index.js +0 -4
- package/Grid/package.json +0 -6
- package/Hamburger/Hamburger.js +0 -56
- package/Hamburger/index.js +0 -4
- package/Hamburger/package.json +0 -6
- package/Header/index.js +0 -4
- package/Header/package.json +0 -6
- package/Header/useHeader.js +0 -35
- package/Hidden/Hidden.js +0 -13
- package/Hidden/index.js +0 -4
- package/Hidden/package.json +0 -6
- package/Img/index.js +0 -4
- package/Img/package.json +0 -6
- package/Img/sc/bare.js +0 -42
- package/Img/types.js +0 -2
- package/Link/Link.js +0 -7
- package/Link/LinkBlank.js +0 -21
- package/Link/index.js +0 -5
- package/Link/package.json +0 -6
- package/Menu/Menu.js +0 -7
- package/Menu/MenuMui.js +0 -165
- package/Menu/index.js +0 -4
- package/Menu/package.json +0 -6
- package/MenuItem/MenuItem.js +0 -7
- package/MenuItem/MenuItemMui.js +0 -32
- package/MenuItem/index.js +0 -4
- package/MenuItem/package.json +0 -6
- package/MenuItem/useMenuItem.js +0 -64
- package/Meta/Meta.js +0 -10
- package/Meta/index.js +0 -7
- package/Meta/package.json +0 -6
- package/NoJs/NoJs.js +0 -11
- package/NoJs/index.js +0 -7
- package/NoJs/package.json +0 -6
- package/Pagination/PaginationNav.js +0 -65
- package/Pagination/PaginationResults.js +0 -15
- package/Pagination/index.js +0 -5
- package/Pagination/package.json +0 -6
- package/Pill/Pill.js +0 -10
- package/Pill/index.js +0 -4
- package/Pill/package.json +0 -6
- package/Progress/ProgressCircular.js +0 -19
- package/Progress/ProgressLinear.js +0 -28
- package/Progress/ProgressOverlay.js +0 -28
- package/Progress/index.js +0 -6
- package/Progress/package.json +0 -6
- package/Rating/Rating.js +0 -75
- package/Rating/index.js +0 -57
- package/Rating/package.json +0 -6
- package/Select/SelectDownshift.js +0 -41
- package/Select/components.js +0 -15
- package/Select/index.js +0 -7
- package/Select/package.json +0 -6
- package/Sidebar/Sidebar.js +0 -27
- package/Sidebar/index.js +0 -4
- package/Sidebar/package.json +0 -6
- package/Spacing/Spacing.js +0 -49
- package/Spacing/index.js +0 -4
- package/Spacing/package.json +0 -6
- package/Sticky/Sticky.js +0 -222
- package/Sticky/StickyCss.js +0 -10
- package/Sticky/index.js +0 -5
- package/Sticky/package.json +0 -6
- package/Tabs/TabsMui.js +0 -52
- package/Tabs/index.js +0 -4
- package/Tabs/package.json +0 -6
- package/Tabs/sc/bare.js +0 -87
- package/Tabs/tw/bare.js +0 -20
- package/Tabs/tw/material.js +0 -21
- package/Tabs/useTabs.js +0 -47
- package/Typography/CopyPasteVisible.js +0 -7
- package/Typography/Native.js +0 -17
- package/Typography/ReadMore.js +0 -47
- package/Typography/TextLoop.js +0 -51
- package/Typography/TypeStairs.js +0 -52
- package/Typography/index.js +0 -8
- package/Typography/package.json +0 -6
- package/css/index.js +0 -36
- package/css/package.json +0 -6
- package/helpers/classed.js +0 -78
- package/helpers/createUseMediaQueryWidth.js +0 -183
- package/helpers/extend-component.js +0 -17
- package/helpers/index.js +0 -7
- package/helpers/mergeRefs.js +0 -17
- package/helpers/package.json +0 -6
- package/hooks/index.js +0 -44
- package/hooks/package.json +0 -6
- package/hooks/types.js +0 -2
- package/hooks/useAsyncFn.js +0 -41
- package/hooks/useDateLocale.js +0 -41
- package/hooks/useFirstMountState.js +0 -17
- package/hooks/useFixedOffset.js +0 -62
- package/hooks/useFocus.js +0 -16
- package/hooks/useInterval.js +0 -32
- package/hooks/useIsomorphicLayoutEffect.js +0 -13
- package/hooks/useKeyUp.js +0 -27
- package/hooks/useMeasure.js +0 -171
- package/hooks/useMountedState.js +0 -20
- package/hooks/useNavigateAway.js +0 -73
- package/hooks/usePrevious.js +0 -16
- package/hooks/usePreviousRef.js +0 -13
- package/hooks/useScrollPosition.js +0 -73
- package/hooks/useScrollThreshold.js +0 -33
- package/hooks/useScrollTo.js +0 -27
- package/hooks/useSmoothScroll.js +0 -44
- package/hooks/useSpinDelay.js +0 -54
- package/hooks/useTraceUpdate.js +0 -26
- package/hooks/useUpdateEffect.js +0 -19
- package/hooks/useWindowSize.js +0 -34
- package/index.js +0 -8
- package/m/MotionProvider.js +0 -43
- package/m/index.js +0 -9
- package/m/lite.js +0 -4
- package/m/max.js +0 -4
- package/m/package.json +0 -6
- package/sc/index.js +0 -37
- package/sc/package.json +0 -6
- package/scm/index.js +0 -36
- package/scm/package.json +0 -6
- package/shared/index.js +0 -11
- package/shared/package.json +0 -6
- package/styles/Body.js +0 -16
- package/styles/Global.js +0 -21
- package/styles/index.js +0 -41
- package/styles/media.js +0 -161
- package/styles/package.json +0 -6
- package/styles/spacing.js +0 -52
- package/styles/styled.js +0 -17
- package/styles/theme--vanilla.js +0 -64
- package/styles/theme.js +0 -45
- package/tw/index.js +0 -36
- package/tw/package.json +0 -6
- package/twm/index.js +0 -36
- package/twm/package.json +0 -6
- package/types.js +0 -2
- /package/{FaviconTags/FaviconTags.d.ts → FaviconTags.d.ts} +0 -0
package/hooks/useInterval.mjs
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
import { __spreadArray } from "tslib";
|
|
2
1
|
import { useEffect, useRef } from "react";
|
|
3
2
|
import noop from "@koine/utils/noop";
|
|
4
3
|
/**
|
|
5
4
|
* @borrows [dan abramov](https://overreacted.io/making-setinterval-declarative-with-react-hooks/)
|
|
6
5
|
*
|
|
7
6
|
* We just add `deps` array argument and typescript support
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var savedCallback = useRef();
|
|
12
|
-
useEffect(function () {
|
|
7
|
+
*/ export function useInterval(callback, delay, deps = []) {
|
|
8
|
+
const savedCallback = useRef();
|
|
9
|
+
useEffect(()=>{
|
|
13
10
|
savedCallback.current = callback;
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
|
|
11
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12
|
+
}, [
|
|
13
|
+
callback,
|
|
14
|
+
...deps
|
|
15
|
+
]);
|
|
16
|
+
useEffect(()=>{
|
|
17
17
|
function tick() {
|
|
18
|
-
if (savedCallback.current)
|
|
19
|
-
savedCallback.current();
|
|
18
|
+
if (savedCallback.current) savedCallback.current();
|
|
20
19
|
}
|
|
21
20
|
if (delay !== null) {
|
|
22
|
-
|
|
23
|
-
return
|
|
21
|
+
const id = setInterval(tick, delay);
|
|
22
|
+
return ()=>clearInterval(id);
|
|
24
23
|
}
|
|
25
24
|
return noop;
|
|
26
|
-
}, [
|
|
25
|
+
}, [
|
|
26
|
+
delay
|
|
27
|
+
]);
|
|
27
28
|
}
|
|
28
29
|
export default useInterval;
|
|
@@ -2,8 +2,5 @@ import { useEffect, useLayoutEffect } from "react";
|
|
|
2
2
|
import isBrowser from "@koine/utils/isBrowser";
|
|
3
3
|
/**
|
|
4
4
|
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts)
|
|
5
|
-
*/
|
|
6
|
-
export var useIsomorphicLayoutEffect = isBrowser
|
|
7
|
-
? useLayoutEffect
|
|
8
|
-
: useEffect;
|
|
5
|
+
*/ export const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
|
|
9
6
|
export default useIsomorphicLayoutEffect;
|
package/hooks/useKeyUp.mjs
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
import { __spreadArray } from "tslib";
|
|
2
1
|
import { useEffect } from "react";
|
|
3
2
|
import on from "@koine/dom/on";
|
|
4
|
-
export function useKeyUp(callback, deps) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var listener = on(window, "keyup", function (event) {
|
|
3
|
+
export function useKeyUp(callback, deps = []) {
|
|
4
|
+
useEffect(()=>{
|
|
5
|
+
const listener = on(window, "keyup", (event)=>{
|
|
8
6
|
// const { key } = event;
|
|
9
7
|
// be sure we do not intercept keys combinations maybe used for other
|
|
10
8
|
// actions like native browser navigation shortcuts
|
|
11
9
|
// @see https://stackoverflow.com/a/37559790/1938970
|
|
12
|
-
if (!event.ctrlKey &&
|
|
13
|
-
!event.altKey &&
|
|
14
|
-
!event.shiftKey &&
|
|
15
|
-
!event.metaKey) {
|
|
10
|
+
if (!event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey) {
|
|
16
11
|
callback(event);
|
|
17
12
|
}
|
|
18
13
|
});
|
|
19
14
|
return listener;
|
|
20
|
-
|
|
21
|
-
},
|
|
15
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16
|
+
}, [
|
|
17
|
+
callback,
|
|
18
|
+
...deps
|
|
19
|
+
]);
|
|
22
20
|
}
|
|
23
21
|
export default useKeyUp;
|
package/hooks/useMeasure.mjs
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useEffect, useState, useRef, useMemo } from "react";
|
|
1
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
3
2
|
import debounce from "@koine/utils/debounce";
|
|
4
3
|
import noop from "@koine/utils/noop";
|
|
5
4
|
import listenResizeDebounced from "@koine/dom/listenResizeDebounced";
|
|
6
5
|
import listenScrollDebounced from "@koine/dom/listenScrollDebounced";
|
|
7
|
-
import on from "@koine/dom/on";
|
|
8
6
|
import off from "@koine/dom/off";
|
|
9
|
-
|
|
7
|
+
import on from "@koine/dom/on";
|
|
8
|
+
let observer;
|
|
10
9
|
// Returns a list of scroll offsets
|
|
11
10
|
function findScrollContainers(element) {
|
|
12
|
-
|
|
13
|
-
if (!element || element === document.body)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
const result = [];
|
|
12
|
+
if (!element || element === document.body) return result;
|
|
13
|
+
const { overflow, overflowX, overflowY } = window.getComputedStyle(element);
|
|
14
|
+
if ([
|
|
15
|
+
overflow,
|
|
16
|
+
overflowX,
|
|
17
|
+
overflowY
|
|
18
|
+
].some((prop)=>prop === "auto" || prop === "scroll")) result.push(element);
|
|
19
|
+
return [
|
|
20
|
+
...result,
|
|
21
|
+
...findScrollContainers(element.parentElement)
|
|
22
|
+
];
|
|
19
23
|
}
|
|
20
|
-
|
|
24
|
+
const keys = [
|
|
21
25
|
"x",
|
|
22
26
|
"y",
|
|
23
27
|
"top",
|
|
@@ -25,19 +29,16 @@ var keys = [
|
|
|
25
29
|
"left",
|
|
26
30
|
"right",
|
|
27
31
|
"width",
|
|
28
|
-
"height"
|
|
32
|
+
"height"
|
|
29
33
|
];
|
|
30
|
-
|
|
31
|
-
return keys.every(function (key) { return a[key] === b[key]; });
|
|
32
|
-
};
|
|
34
|
+
const areBoundsEqual = (a, b)=>keys.every((key)=>a[key] === b[key]);
|
|
33
35
|
/**
|
|
34
36
|
* Use measure hook
|
|
35
37
|
*
|
|
36
38
|
* @borrows [pmndrs/react-use-measure](https://github.com/pmndrs/react-use-measure)
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var _b = useState({
|
|
39
|
+
*/ export function useMeasure(options) {
|
|
40
|
+
const { scroll = false } = options || {};
|
|
41
|
+
const [bounds, setBounds] = useState({
|
|
41
42
|
left: 0,
|
|
42
43
|
top: 0,
|
|
43
44
|
width: 0,
|
|
@@ -45,10 +46,10 @@ export function useMeasure(options) {
|
|
|
45
46
|
bottom: 0,
|
|
46
47
|
right: 0,
|
|
47
48
|
x: 0,
|
|
48
|
-
y: 0
|
|
49
|
-
})
|
|
49
|
+
y: 0
|
|
50
|
+
});
|
|
50
51
|
// keep all state in a ref
|
|
51
|
-
|
|
52
|
+
const state = useRef([
|
|
52
53
|
// element
|
|
53
54
|
null,
|
|
54
55
|
// scrollContainers
|
|
@@ -56,25 +57,20 @@ export function useMeasure(options) {
|
|
|
56
57
|
// resizeObserver
|
|
57
58
|
null,
|
|
58
59
|
// lastBounds
|
|
59
|
-
bounds
|
|
60
|
+
bounds
|
|
60
61
|
]);
|
|
61
62
|
// make sure to update state only as long as the component is truly mounted
|
|
62
|
-
|
|
63
|
-
useEffect(
|
|
63
|
+
const mounted = useRef(false);
|
|
64
|
+
useEffect(()=>{
|
|
64
65
|
mounted.current = true;
|
|
65
|
-
return
|
|
66
|
+
return ()=>void (mounted.current = false);
|
|
66
67
|
}, []);
|
|
67
68
|
// memoize handlers, so event-listeners know when they should update
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
var _a = state.current, element = _a[0], lastBounds = _a[3];
|
|
75
|
-
if (!element)
|
|
76
|
-
return;
|
|
77
|
-
var size = element.getBoundingClientRect();
|
|
69
|
+
const [forceRefresh /* resizeChange */ , , scrollChange] = useMemo(()=>{
|
|
70
|
+
const callback = (..._args)=>{
|
|
71
|
+
const [element, , , lastBounds] = state.current;
|
|
72
|
+
if (!element) return;
|
|
73
|
+
const size = element.getBoundingClientRect();
|
|
78
74
|
// if (element instanceof HTMLElement && offsetSize) {
|
|
79
75
|
// size.height = element.offsetHeight;
|
|
80
76
|
// size.width = element.offsetWidth;
|
|
@@ -85,16 +81,20 @@ export function useMeasure(options) {
|
|
|
85
81
|
setBounds(size);
|
|
86
82
|
}
|
|
87
83
|
};
|
|
88
|
-
|
|
89
|
-
return [
|
|
90
|
-
|
|
84
|
+
const debouncedCallback = debounce(callback);
|
|
85
|
+
return [
|
|
86
|
+
callback,
|
|
87
|
+
debouncedCallback,
|
|
88
|
+
debouncedCallback
|
|
89
|
+
];
|
|
90
|
+
}, [
|
|
91
|
+
setBounds /* , offsetSize */
|
|
92
|
+
]);
|
|
91
93
|
// cleanup current scroll-listeners / observers
|
|
92
94
|
function removeListeners() {
|
|
93
|
-
|
|
95
|
+
const [, scrollContainers, resizeObserver] = state.current;
|
|
94
96
|
if (scrollContainers) {
|
|
95
|
-
scrollContainers.forEach(
|
|
96
|
-
return off(element, "scroll", scrollChange);
|
|
97
|
-
});
|
|
97
|
+
scrollContainers.forEach((element)=>off(element, "scroll", scrollChange));
|
|
98
98
|
state.current[1] = null;
|
|
99
99
|
}
|
|
100
100
|
if (resizeObserver) {
|
|
@@ -104,27 +104,23 @@ export function useMeasure(options) {
|
|
|
104
104
|
}
|
|
105
105
|
// add scroll-listeners / observers
|
|
106
106
|
function addListeners() {
|
|
107
|
-
|
|
108
|
-
if (!element)
|
|
109
|
-
return;
|
|
107
|
+
const [element, scrollContainers] = state.current;
|
|
108
|
+
if (!element) return;
|
|
110
109
|
if (!observer && ResizeObserver) {
|
|
111
110
|
observer = new ResizeObserver(scrollChange);
|
|
112
111
|
state.current[2] = observer;
|
|
113
112
|
observer.observe(element);
|
|
114
113
|
if (scroll && scrollContainers) {
|
|
115
|
-
scrollContainers.forEach(
|
|
116
|
-
return on(scrollContainer, "scroll", scrollChange, {
|
|
114
|
+
scrollContainers.forEach((scrollContainer)=>on(scrollContainer, "scroll", scrollChange, {
|
|
117
115
|
capture: true,
|
|
118
|
-
passive: true
|
|
119
|
-
});
|
|
120
|
-
});
|
|
116
|
+
passive: true
|
|
117
|
+
}));
|
|
121
118
|
}
|
|
122
119
|
}
|
|
123
120
|
}
|
|
124
121
|
// the ref we expose to the user
|
|
125
|
-
|
|
126
|
-
if (!node || node === state.current[0])
|
|
127
|
-
return;
|
|
122
|
+
const ref = (node)=>{
|
|
123
|
+
if (!node || node === state.current[0]) return;
|
|
128
124
|
removeListeners();
|
|
129
125
|
state.current[0] = node;
|
|
130
126
|
state.current[1] = findScrollContainers(node);
|
|
@@ -136,32 +132,43 @@ export function useMeasure(options) {
|
|
|
136
132
|
// debugger;
|
|
137
133
|
// forceRefresh();
|
|
138
134
|
// });
|
|
139
|
-
useEffect(
|
|
135
|
+
useEffect(()=>{
|
|
140
136
|
if (scroll) {
|
|
141
|
-
|
|
137
|
+
const listener = listenScrollDebounced(0, forceRefresh, 100);
|
|
142
138
|
return listener;
|
|
143
139
|
}
|
|
144
140
|
return noop;
|
|
145
|
-
}, [
|
|
146
|
-
|
|
141
|
+
}, [
|
|
142
|
+
scroll,
|
|
143
|
+
forceRefresh
|
|
144
|
+
]);
|
|
145
|
+
useEffect(()=>{
|
|
147
146
|
// const listener = listenResizeDebounced(onWindowResize);
|
|
148
147
|
// return listener;
|
|
149
|
-
|
|
148
|
+
const listener = listenResizeDebounced(0, forceRefresh, 100);
|
|
150
149
|
return listener;
|
|
151
|
-
}, [
|
|
150
|
+
}, [
|
|
151
|
+
forceRefresh
|
|
152
|
+
]);
|
|
152
153
|
// respond to changes that are relevant for the listeners
|
|
153
|
-
useEffect(
|
|
154
|
+
useEffect(()=>{
|
|
154
155
|
removeListeners();
|
|
155
156
|
addListeners();
|
|
156
|
-
|
|
157
|
-
}, [
|
|
158
|
-
|
|
157
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
158
|
+
}, [
|
|
159
|
+
scroll /* , scrollChange, resizeChange */
|
|
160
|
+
]);
|
|
161
|
+
useEffect(()=>{
|
|
159
162
|
// operate on mount, @kuus on the original version there is no call on mount?
|
|
160
163
|
forceRefresh();
|
|
161
164
|
// remove all listeners when the components unmounts
|
|
162
165
|
return removeListeners;
|
|
163
|
-
|
|
166
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
164
167
|
}, []);
|
|
165
|
-
return [
|
|
168
|
+
return [
|
|
169
|
+
ref,
|
|
170
|
+
bounds,
|
|
171
|
+
forceRefresh
|
|
172
|
+
];
|
|
166
173
|
}
|
|
167
174
|
export default useMeasure;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useMountedState.ts)
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
useEffect(function () {
|
|
4
|
+
*/ export function useMountedState() {
|
|
5
|
+
const mountedRef = useRef(false);
|
|
6
|
+
const get = useCallback(()=>mountedRef.current, []);
|
|
7
|
+
useEffect(()=>{
|
|
9
8
|
mountedRef.current = true;
|
|
10
|
-
return
|
|
9
|
+
return ()=>{
|
|
11
10
|
mountedRef.current = false;
|
|
12
11
|
};
|
|
13
12
|
}, []);
|
|
@@ -19,50 +19,51 @@ import on from "@koine/dom/on";
|
|
|
19
19
|
*
|
|
20
20
|
* For the callback technique see:
|
|
21
21
|
* - https://stackoverflow.com/a/11835394/1938970
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
var beforeUnloadHandlerRef = useRef();
|
|
22
|
+
*/ export const useNavigateAway = (handler)=>{
|
|
23
|
+
const beforeUnloadHandlerRef = useRef();
|
|
25
24
|
// const pagehideHandlerRef = useRef<UseNavigateAwayPagehideHandler | undefined>();
|
|
26
|
-
useEffect(
|
|
27
|
-
beforeUnloadHandlerRef.current =
|
|
28
|
-
|
|
25
|
+
useEffect(()=>{
|
|
26
|
+
beforeUnloadHandlerRef.current = (event)=>{
|
|
27
|
+
const customMessageOrCondition = handler(event);
|
|
29
28
|
if (customMessageOrCondition) {
|
|
30
29
|
event.preventDefault();
|
|
31
30
|
}
|
|
32
31
|
// Handle legacy `event.returnValue` property
|
|
33
32
|
// https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
34
33
|
if (typeof customMessageOrCondition === "string") {
|
|
35
|
-
return
|
|
34
|
+
return event.returnValue = customMessageOrCondition;
|
|
36
35
|
}
|
|
37
36
|
// Chrome doesn't support `event.preventDefault()` on `BeforeUnloadEvent`,
|
|
38
37
|
// instead it requires `event.returnValue` to be set
|
|
39
38
|
// https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#browser_compatibility
|
|
40
39
|
if (event.defaultPrevented) {
|
|
41
|
-
return
|
|
40
|
+
return event.returnValue = "";
|
|
42
41
|
}
|
|
43
42
|
return;
|
|
44
43
|
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}, [
|
|
56
|
-
|
|
57
|
-
|
|
44
|
+
// pagehideHandlerRef.current = (event) => {
|
|
45
|
+
// const returnValue = handler?.(event);
|
|
46
|
+
// if (event.persisted) {
|
|
47
|
+
// // If the event's persisted property is `true` the page is about
|
|
48
|
+
// // to enter the Back-Forward Cache, which is also in the frozen state.
|
|
49
|
+
// } else {
|
|
50
|
+
// // If the event's persisted property is not `true` the page is
|
|
51
|
+
// // about to be unloaded.
|
|
52
|
+
// }
|
|
53
|
+
// };
|
|
54
|
+
}, [
|
|
55
|
+
handler
|
|
56
|
+
]);
|
|
57
|
+
useEffect(()=>{
|
|
58
|
+
const listenerBeforeunload = on(window, "beforeunload", (event)=>beforeUnloadHandlerRef.current?.(event));
|
|
58
59
|
// const listenerPagehide = on(window, "pagehide", (event) =>
|
|
59
60
|
// pagehideHandlerRef.current?.(event)
|
|
60
61
|
// );
|
|
61
62
|
return listenerBeforeunload;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
// return () => {
|
|
64
|
+
// listenerBeforeunload();
|
|
65
|
+
// // listenerPagehide();
|
|
66
|
+
// };
|
|
66
67
|
}, []);
|
|
67
68
|
};
|
|
68
69
|
export default useNavigateAway;
|
package/hooks/usePrevious.mjs
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* @borrows [samselikoff/animated-carousel](https://github.com/samselikoff/2022-06-02-animated-carousel/blob/main/pages/final.jsx)
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
*/ export function usePrevious(state, defaulValue) {
|
|
5
|
+
const [tuple, setTuple] = useState([
|
|
6
|
+
state,
|
|
7
|
+
defaulValue
|
|
8
|
+
]);
|
|
7
9
|
if (tuple[1] !== state) {
|
|
8
|
-
setTuple([
|
|
10
|
+
setTuple([
|
|
11
|
+
tuple[1],
|
|
12
|
+
state
|
|
13
|
+
]);
|
|
9
14
|
}
|
|
10
15
|
return tuple[0];
|
|
11
16
|
}
|
package/hooks/usePreviousRef.mjs
CHANGED
|
@@ -2,28 +2,33 @@ import { useRef } from "react";
|
|
|
2
2
|
import isBrowser from "@koine/utils/isBrowser";
|
|
3
3
|
import listenScroll from "@koine/dom/listenScroll";
|
|
4
4
|
import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const zeroPosition = {
|
|
6
|
+
x: 0,
|
|
7
|
+
y: 0
|
|
8
8
|
};
|
|
9
|
-
|
|
9
|
+
const getClientRect = (element)=>element?.getBoundingClientRect();
|
|
10
|
+
const getScrollPosition = (element, boundingElement)=>{
|
|
10
11
|
if (!isBrowser) {
|
|
11
12
|
return zeroPosition;
|
|
12
13
|
}
|
|
13
14
|
if (!boundingElement) {
|
|
14
|
-
return {
|
|
15
|
+
return {
|
|
16
|
+
x: window.scrollX,
|
|
17
|
+
y: window.scrollY
|
|
18
|
+
};
|
|
15
19
|
}
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
const targetPosition = getClientRect(element?.current || document.body);
|
|
21
|
+
const containerPosition = getClientRect(boundingElement.current);
|
|
18
22
|
if (!targetPosition) {
|
|
19
23
|
return zeroPosition;
|
|
20
24
|
}
|
|
21
|
-
return containerPosition
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
return containerPosition ? {
|
|
26
|
+
x: (containerPosition.x || 0) - (targetPosition.x || 0),
|
|
27
|
+
y: (containerPosition.y || 0) - (targetPosition.y || 0)
|
|
28
|
+
} : {
|
|
29
|
+
x: targetPosition.left,
|
|
30
|
+
y: targetPosition.top
|
|
31
|
+
};
|
|
27
32
|
};
|
|
28
33
|
/**
|
|
29
34
|
* @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
|
|
@@ -31,33 +36,30 @@ var getScrollPosition = function (element, boundingElement) {
|
|
|
31
36
|
* We've just:
|
|
32
37
|
* - reused internal helper functions
|
|
33
38
|
* - compacted object arguments in functions as plain argument list to improve compression
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
var callBack = function () {
|
|
40
|
-
var current = getScrollPosition(element, boundingElement);
|
|
39
|
+
*/ export const useScrollPosition = (effect, deps = [], element, boundingElement, wait)=>{
|
|
40
|
+
const position = useRef(getScrollPosition(null, boundingElement));
|
|
41
|
+
let throttleTimeout = null;
|
|
42
|
+
const callBack = ()=>{
|
|
43
|
+
const current = getScrollPosition(element, boundingElement);
|
|
41
44
|
effect(current, position.current);
|
|
42
45
|
position.current = current;
|
|
43
46
|
throttleTimeout = null;
|
|
44
47
|
};
|
|
45
|
-
useIsomorphicLayoutEffect(
|
|
48
|
+
useIsomorphicLayoutEffect(()=>{
|
|
46
49
|
if (!isBrowser) {
|
|
47
50
|
return undefined;
|
|
48
51
|
}
|
|
49
|
-
|
|
52
|
+
const handleScroll = ()=>{
|
|
50
53
|
if (wait) {
|
|
51
54
|
if (throttleTimeout === null) {
|
|
52
55
|
throttleTimeout = window.setTimeout(callBack, wait);
|
|
53
56
|
}
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
57
|
+
} else {
|
|
56
58
|
callBack();
|
|
57
59
|
}
|
|
58
60
|
};
|
|
59
|
-
|
|
60
|
-
return
|
|
61
|
+
const listener = listenScroll(handleScroll, boundingElement?.current);
|
|
62
|
+
return ()=>{
|
|
61
63
|
listener();
|
|
62
64
|
if (throttleTimeout) {
|
|
63
65
|
clearTimeout(throttleTimeout);
|
|
@@ -1,28 +1,33 @@
|
|
|
1
1
|
import { useCallback, useEffect, useState } from "react";
|
|
2
2
|
import noop from "@koine/utils/noop";
|
|
3
3
|
import listenScroll from "@koine/dom/listenScroll";
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export const useScrollThreshold = (threshold, callback)=>{
|
|
5
|
+
const [isBelow, setIsBelow] = useState(false);
|
|
6
|
+
const handler = useCallback(()=>{
|
|
7
7
|
if (threshold) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const posY = window.scrollY; // * -1;
|
|
9
|
+
const isAbove = posY < threshold;
|
|
10
|
+
const isBelow = posY > threshold;
|
|
11
11
|
// console.log("useScrollThreshold setIsBelow", isBelow, posY, threshold);
|
|
12
|
-
setIsBelow(
|
|
13
|
-
if (callback)
|
|
14
|
-
callback(isAbove, isBelow_1);
|
|
12
|
+
setIsBelow(isBelow);
|
|
13
|
+
if (callback) callback(isAbove, isBelow);
|
|
15
14
|
}
|
|
16
|
-
}, [
|
|
17
|
-
|
|
15
|
+
}, [
|
|
16
|
+
threshold,
|
|
17
|
+
callback
|
|
18
|
+
]);
|
|
19
|
+
useEffect(()=>{
|
|
18
20
|
if (threshold) {
|
|
19
21
|
// const listener = listenScrollThrottled(0, handler, 50);
|
|
20
|
-
|
|
22
|
+
const listener = listenScroll(handler);
|
|
21
23
|
handler();
|
|
22
24
|
return listener;
|
|
23
25
|
}
|
|
24
26
|
return noop;
|
|
25
|
-
}, [
|
|
27
|
+
}, [
|
|
28
|
+
threshold,
|
|
29
|
+
handler
|
|
30
|
+
]);
|
|
26
31
|
return isBelow;
|
|
27
32
|
};
|
|
28
33
|
export default useScrollThreshold;
|
package/hooks/useScrollTo.mjs
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import isBrowser from "@koine/utils/isBrowser";
|
|
2
2
|
import useHeader from "../Header/useHeader";
|
|
3
|
-
export function useScrollTo(id, offset) {
|
|
4
|
-
|
|
5
|
-
if (offset === void 0) { offset = 0; }
|
|
6
|
-
var _a = useHeader(), headerHeight = _a[2];
|
|
3
|
+
export function useScrollTo(id = "", offset = 0) {
|
|
4
|
+
const [, , headerHeight] = useHeader();
|
|
7
5
|
if (!isBrowser) {
|
|
8
6
|
return;
|
|
9
7
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
const headerOffset = headerHeight || 0;
|
|
9
|
+
let element = document.getElementById(id);
|
|
10
|
+
let top = 0;
|
|
13
11
|
if (element && element.offsetParent) {
|
|
14
12
|
do {
|
|
15
13
|
top += element.offsetTop;
|
|
16
|
-
}
|
|
14
|
+
}while (element = element.offsetParent)
|
|
17
15
|
}
|
|
18
16
|
top -= offset;
|
|
19
17
|
top -= headerOffset;
|