@koine/react 2.0.0-beta.14 → 2.0.0-beta.16
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.js +10 -0
- package/Alert/index.d.ts +1 -1
- package/Alert/index.js +1 -0
- package/Animations/Reveal.d.ts +1 -2
- package/Animations/Reveal.js +16 -0
- package/Animations/Underline.js +5 -0
- package/Animations/index.d.ts +3 -3
- package/Animations/index.js +3 -0
- package/Animations/useReveal.d.ts +0 -21
- package/Animations/useReveal.js +42 -0
- package/Autocomplete/AutocompleteDownshift.js +1 -0
- package/Autocomplete/AutocompleteDownshiftMultiselect.js +1 -0
- package/Autocomplete/AutocompleteMui.d.ts +2 -27
- package/Autocomplete/AutocompleteMui.js +93 -0
- package/Autocomplete/AutocompleteReach.js +1 -0
- package/Autocomplete/components.d.ts +0 -5
- package/Autocomplete/components.js +26 -0
- package/Autocomplete/helpers.d.ts +1 -1
- package/Autocomplete/helpers.js +16 -0
- package/Autocomplete/index.d.ts +2 -2
- package/Autocomplete/index.js +1 -0
- package/Bg/BgColor.d.ts +1 -20
- package/Bg/BgColor.js +16 -0
- package/Bg/BgPhoto.d.ts +1 -6
- package/Bg/BgPhoto.js +16 -0
- package/Bg/BgSvg.d.ts +0 -3
- package/Bg/BgSvg.js +9 -0
- package/Bg/index.d.ts +3 -3
- package/Bg/index.js +3 -0
- package/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/Breadcrumbs/Breadcrumbs.js +27 -0
- package/Breadcrumbs/index.d.ts +1 -1
- package/Breadcrumbs/index.js +1 -0
- package/Buttons/Button.d.ts +0 -4
- package/Buttons/Button.js +10 -0
- package/Buttons/ButtonComposite.d.ts +3 -4
- package/Buttons/ButtonComposite.js +28 -0
- package/Buttons/ButtonFab.d.ts +1 -2
- package/Buttons/ButtonFab.js +6 -0
- package/Buttons/ButtonLink.d.ts +3 -3
- package/Buttons/ButtonLink.js +11 -0
- package/Buttons/IconButton.d.ts +1 -2
- package/Buttons/IconButton.js +7 -0
- package/Buttons/index.d.ts +5 -5
- package/Buttons/index.js +5 -0
- package/Calendar/CalendarDaygridCell.d.ts +3 -4
- package/Calendar/CalendarDaygridCell.js +46 -0
- package/Calendar/CalendarDaygridNav.d.ts +2 -2
- package/Calendar/CalendarDaygridNav.js +23 -0
- package/Calendar/CalendarDaygridTable.d.ts +3 -3
- package/Calendar/CalendarDaygridTable.js +45 -0
- package/Calendar/CalendarLegend.d.ts +2 -3
- package/Calendar/CalendarLegend.js +8 -0
- package/Calendar/calendar-api-google.d.ts +1 -9
- package/Calendar/calendar-api-google.js +124 -0
- package/Calendar/index.d.ts +6 -6
- package/Calendar/index.js +6 -0
- package/Calendar/types.d.ts +0 -19
- package/Calendar/types.js +1 -0
- package/Calendar/useCalendar.d.ts +4 -19
- package/Calendar/useCalendar.js +176 -0
- package/Calendar/utils.d.ts +1 -1
- package/Calendar/utils.js +185 -0
- package/Carousel/Carousel.js +1 -0
- package/Carousel/CarouselCss.d.ts +1 -23
- package/Carousel/CarouselCss.js +19 -0
- package/Carousel/index.d.ts +1 -1
- package/Carousel/index.js +1 -0
- package/Collapsable/Collapsable.js +1 -0
- package/Collapsable/CollapsableReach.d.ts +0 -6
- package/Collapsable/CollapsableReach.js +1 -0
- package/Collapsable/index.d.ts +1 -1
- package/Collapsable/index.js +1 -0
- package/Debug/Debug.js +9 -0
- package/Debug/index.d.ts +1 -1
- package/Debug/index.js +1 -0
- package/Details/Details.d.ts +60 -66
- package/Details/Details.js +52 -0
- package/Details/index.d.ts +1 -1
- package/Details/index.js +1 -0
- package/Dialog/DialogMui.d.ts +9 -11
- package/Dialog/DialogMui.js +39 -0
- package/Dialog/css/bare.d.ts +9 -10
- package/Dialog/css/bare.js +21 -0
- package/Dialog/index.d.ts +2 -2
- package/Dialog/index.js +1 -0
- package/Dialog/m/bare.js +3 -0
- package/Dialog/m/basic.d.ts +1 -1
- package/Dialog/m/basic.js +28 -0
- package/Dialog/m/index.d.ts +1 -2
- package/Dialog/m/index.js +4 -0
- package/Dialog/sc/bare.d.ts +4 -14
- package/Dialog/sc/bare.js +31 -0
- package/Dialog/sc/framer.d.ts +1 -2
- package/Dialog/sc/framer.js +16 -0
- package/Dialog/sc/framerMaterial.js +16 -0
- package/Dialog/sc/material.d.ts +3 -4
- package/Dialog/sc/material.js +21 -0
- package/Dialog/tw/bare.d.ts +7 -22
- package/Dialog/tw/bare.js +29 -0
- package/Dialog/tw/elegant.d.ts +6 -7
- package/Dialog/tw/elegant.js +21 -0
- package/Dialog/tw/framer.d.ts +3 -4
- package/Dialog/tw/framer.js +16 -0
- package/Dialog/tw/framerMaterial.d.ts +2 -2
- package/Dialog/tw/framerMaterial.js +16 -0
- package/Dialog/tw/material.d.ts +6 -7
- package/Dialog/tw/material.js +21 -0
- package/Editor/Editor--tiptap.js +26 -0
- package/Editor/components.js +10 -0
- package/Editor/index.d.ts +1 -1
- package/Editor/index.js +1 -0
- package/FaviconTags.d.ts +0 -10
- package/FaviconTags.js +6 -0
- package/Form/Form.d.ts +1 -14
- package/Form/Form.js +60 -0
- package/Form/index.d.ts +1 -1
- package/Form/index.js +1 -0
- package/Form/sc/bare.d.ts +1 -2
- package/Form/sc/bare.js +20 -0
- package/Forms/Checkbox/Checkbox.d.ts +1 -5
- package/Forms/Checkbox/Checkbox.js +15 -0
- package/Forms/Checkbox/index.d.ts +1 -1
- package/Forms/Checkbox/index.js +1 -0
- package/Forms/Feedback/Feedback.js +9 -0
- package/Forms/Feedback/index.d.ts +1 -1
- package/Forms/Feedback/index.js +1 -0
- package/Forms/Field/Field.d.ts +1 -19
- package/Forms/Field/Field.js +25 -0
- package/Forms/Field/FieldControl.d.ts +2 -14
- package/Forms/Field/FieldControl.js +35 -0
- package/Forms/Field/FieldHint.js +4 -0
- package/Forms/Field/index.d.ts +2 -2
- package/Forms/Field/index.js +2 -0
- package/Forms/Input/Input.d.ts +1 -2
- package/Forms/Input/Input.js +16 -0
- package/Forms/Input/index.d.ts +1 -1
- package/Forms/Input/index.js +1 -0
- package/Forms/InputGroup/InputGroup.d.ts +1 -2
- package/Forms/InputGroup/InputGroup.js +15 -0
- package/Forms/InputGroup/index.d.ts +1 -1
- package/Forms/InputGroup/index.js +1 -0
- package/Forms/Label/Label.js +6 -0
- package/Forms/Label/index.d.ts +1 -1
- package/Forms/Label/index.js +1 -0
- package/Forms/Password/Password.d.ts +1 -2
- package/Forms/Password/Password.js +17 -0
- package/Forms/Password/index.d.ts +1 -1
- package/Forms/Password/index.js +1 -0
- package/Forms/Radio/Radio.d.ts +1 -2
- package/Forms/Radio/Radio.js +25 -0
- package/Forms/Radio/index.d.ts +1 -1
- package/Forms/Radio/index.js +1 -0
- package/Forms/Switch/Switch.d.ts +1 -5
- package/Forms/Switch/Switch.js +17 -0
- package/Forms/Switch/index.d.ts +1 -1
- package/Forms/Switch/index.js +1 -0
- package/Forms/Textarea/Textarea.d.ts +1 -2
- package/Forms/Textarea/Textarea.js +12 -0
- package/Forms/Textarea/TextareaRich.d.ts +1 -2
- package/Forms/Textarea/TextareaRich.js +26 -0
- package/Forms/Textarea/index.d.ts +2 -2
- package/Forms/Textarea/index.js +2 -0
- package/Forms/Toggle/Toggle-tailwind.js +1 -0
- package/Forms/Toggle/Toggle.d.ts +0 -1
- package/Forms/Toggle/Toggle.js +25 -0
- package/Forms/Toggle/index.d.ts +1 -1
- package/Forms/Toggle/index.js +1 -0
- package/Forms/Toggle/useToggle-tailwind.js +1 -0
- package/Forms/Toggle/useToggle.d.ts +1 -31
- package/Forms/Toggle/useToggle.js +85 -0
- package/Forms/antispam.d.ts +0 -20
- package/Forms/antispam.js +29 -0
- package/Forms/helpers.d.ts +0 -8
- package/Forms/helpers.js +35 -0
- package/Forms/index.d.ts +15 -15
- package/Forms/index.js +15 -0
- package/Forms/styles.d.ts +0 -6
- package/Forms/styles.js +19 -0
- package/Gauge/Gauge.d.ts +0 -1
- package/Gauge/Gauge.js +1 -0
- package/Grid/Grid.d.ts +1 -10
- package/Grid/Grid.js +52 -0
- package/Grid/index.d.ts +1 -1
- package/Grid/index.js +1 -0
- package/Hamburger/Hamburger.d.ts +0 -1
- package/Hamburger/Hamburger.js +47 -0
- package/Hamburger/index.d.ts +1 -1
- package/Hamburger/index.js +1 -0
- package/Header/index.d.ts +1 -1
- package/Header/index.js +1 -0
- package/Header/useHeader.d.ts +0 -4
- package/Header/useHeader.js +31 -0
- package/Hidden/Hidden.d.ts +1 -1
- package/Hidden/Hidden.js +10 -0
- package/Hidden/index.d.ts +1 -1
- package/Hidden/index.js +1 -0
- package/Img/index.d.ts +1 -1
- package/Img/index.js +1 -0
- package/Img/sc/bare.js +4 -0
- package/Img/types.js +1 -0
- package/Link/Link.js +4 -0
- package/Link/LinkBlank.js +15 -0
- package/Link/index.d.ts +2 -2
- package/Link/index.js +2 -0
- package/Menu/Menu.js +4 -0
- package/Menu/MenuMui.js +1 -0
- package/Menu/index.d.ts +1 -1
- package/Menu/index.js +1 -0
- package/MenuItem/MenuItem.js +4 -0
- package/MenuItem/MenuItemMui.js +1 -0
- package/MenuItem/index.d.ts +1 -1
- package/MenuItem/index.js +1 -0
- package/MenuItem/useMenuItem.js +42 -0
- package/Meta.d.ts +5 -0
- package/Meta.js +6 -0
- package/NoJs.js +7 -0
- package/Pagination/PaginationNav.d.ts +1 -9
- package/Pagination/PaginationNav.js +48 -0
- package/Pagination/PaginationResults.js +11 -0
- package/Pagination/index.d.ts +2 -2
- package/Pagination/index.js +2 -0
- package/Pill/Pill.js +7 -0
- package/Pill/index.d.ts +1 -1
- package/Pill/index.js +1 -0
- package/Progress/ProgressCircular.d.ts +1 -7
- package/Progress/ProgressCircular.js +12 -0
- package/Progress/ProgressLinear.d.ts +1 -8
- package/Progress/ProgressLinear.js +21 -0
- package/Progress/ProgressOverlay.js +23 -0
- package/Progress/index.d.ts +3 -3
- package/Progress/index.js +3 -0
- package/Rating/Rating.d.ts +0 -8
- package/Rating/Rating.js +43 -0
- package/Rating/index.d.ts +1 -4
- package/Rating/index.js +45 -0
- package/Select/SelectDownshift.d.ts +1 -1
- package/Select/SelectDownshift.js +1 -0
- package/Select/components.js +12 -0
- package/Select/index.d.ts +2 -2
- package/Select/index.js +1 -0
- package/Sidebar/Sidebar.js +23 -0
- package/Sidebar/index.d.ts +1 -1
- package/Sidebar/index.js +1 -0
- package/Spacing/Spacing.d.ts +1 -14
- package/Spacing/Spacing.js +32 -0
- package/Spacing/index.d.ts +1 -1
- package/Spacing/index.js +1 -0
- package/Sticky/Sticky.js +1 -0
- package/Sticky/StickyCss.js +6 -0
- package/Sticky/index.d.ts +1 -1
- package/Sticky/index.js +1 -0
- package/Tabs/TabsMui.d.ts +6 -7
- package/Tabs/TabsMui.js +30 -0
- package/Tabs/index.d.ts +1 -1
- package/Tabs/index.js +1 -0
- package/Tabs/sc/bare.d.ts +0 -5
- package/Tabs/sc/bare.js +1 -0
- package/Tabs/tw/bare.d.ts +5 -6
- package/Tabs/tw/bare.js +17 -0
- package/Tabs/tw/material.d.ts +2 -3
- package/Tabs/tw/material.js +19 -0
- package/Tabs/useTabs.d.ts +0 -22
- package/Tabs/useTabs.js +43 -0
- package/Typography/CopyPasteVisible.js +4 -0
- package/Typography/Native.js +14 -0
- package/Typography/ReadMore.d.ts +0 -2
- package/Typography/ReadMore.js +42 -0
- package/Typography/TextLoop.js +45 -0
- package/Typography/TypeStairs.js +42 -0
- package/Typography/index.d.ts +5 -5
- package/Typography/index.js +5 -0
- package/classed.d.ts +8 -0
- package/classed.js +43 -0
- package/{helpers/createUseMediaQueryWidth.d.ts → createUseMediaQueryWidth.d.ts} +1 -7
- package/createUseMediaQueryWidth.js +38 -0
- package/css/index.d.ts +1 -2
- package/css/index.js +1 -0
- package/{helpers/extend-component.d.ts → extendComponent.d.ts} +0 -11
- package/extendComponent.js +9 -0
- package/index.d.ts +25 -1
- package/index.js +24 -0
- package/m/MotionProvider.d.ts +0 -32
- package/m/MotionProvider.js +7 -0
- package/m/index.d.ts +1 -6
- package/m/index.js +1 -0
- package/{helpers/mergeRefs.mjs → mergeRefs.js} +4 -3
- package/package.json +609 -22
- package/sc/index.d.ts +29 -30
- package/sc/index.js +29 -0
- package/scm/index.d.ts +28 -29
- package/scm/index.js +28 -0
- package/shared/index.d.ts +7 -8
- package/shared/index.js +7 -0
- package/styles/Body.d.ts +0 -8
- package/styles/Body.js +5 -0
- package/styles/Global.d.ts +0 -13
- package/styles/Global.js +5 -0
- package/styles/index.d.ts +7 -7
- package/styles/index.js +7 -0
- package/styles/media.d.ts +1 -50
- package/styles/media.js +74 -0
- package/styles/spacing.d.ts +1 -2
- package/styles/spacing.js +45 -0
- package/styles/styled.d.ts +0 -4
- package/styles/styled.js +9 -0
- package/styles/theme--vanilla.js +46 -0
- package/styles/theme.d.ts +0 -29
- package/styles/theme.js +30 -0
- package/tw/index.d.ts +1 -2
- package/tw/index.js +1 -0
- package/twm/index.d.ts +1 -2
- package/twm/index.js +1 -0
- package/types.d.ts +3 -2
- package/types.js +1 -0
- package/{hooks/useAsyncFn.d.ts → useAsyncFn.d.ts} +1 -4
- package/useAsyncFn.js +33 -0
- package/useDateLocale.d.ts +2 -0
- package/useDateLocale.js +28 -0
- package/useFirstMountState.d.ts +2 -0
- package/useFirstMountState.js +10 -0
- package/useFixedOffset.d.ts +3 -0
- package/useFixedOffset.js +42 -0
- package/{hooks/useFocus.d.ts → useFocus.d.ts} +0 -3
- package/useFocus.js +9 -0
- package/useInterval.d.ts +2 -0
- package/useInterval.js +22 -0
- package/useIsomorphicLayoutEffect.d.ts +3 -0
- package/useIsomorphicLayoutEffect.js +6 -0
- package/useKeyUp.js +18 -0
- package/{hooks/useMeasure.d.ts → useMeasure.d.ts} +0 -5
- package/useMeasure.js +130 -0
- package/useMountedState.d.ts +2 -0
- package/useMountedState.js +13 -0
- package/useNavigateAway.d.ts +3 -0
- package/useNavigateAway.js +25 -0
- package/usePrevious.d.ts +2 -0
- package/usePrevious.js +9 -0
- package/{hooks/usePreviousRef.mjs → usePreviousRef.js} +2 -2
- package/{hooks/useScrollPosition.d.ts → useScrollPosition.d.ts} +0 -7
- package/useScrollPosition.js +61 -0
- package/useScrollThreshold.js +26 -0
- package/useScrollTo.js +22 -0
- package/{hooks/useSmoothScroll.d.ts → useSmoothScroll.d.ts} +0 -6
- package/useSmoothScroll.js +32 -0
- package/useSpinDelay.d.ts +2 -0
- package/useSpinDelay.js +38 -0
- package/{hooks/useTraceUpdate.d.ts → useTraceUpdate.d.ts} +0 -3
- package/useTraceUpdate.js +18 -0
- package/{hooks/useUpdateEffect.d.ts → useUpdateEffect.d.ts} +0 -3
- package/useUpdateEffect.js +11 -0
- package/useWindowSize.d.ts +3 -0
- package/useWindowSize.js +19 -0
- package/Alert/Alert.mjs +0 -22
- package/Alert/Alert.stories.mjs +0 -18
- package/Alert/index.mjs +0 -1
- package/Animations/Reveal.mjs +0 -43
- package/Animations/Underline.mjs +0 -15
- package/Animations/index.mjs +0 -3
- package/Animations/useReveal.mjs +0 -73
- package/Autocomplete/AutocompleteDownshift.mjs +0 -157
- package/Autocomplete/AutocompleteDownshiftMultiselect.mjs +0 -352
- package/Autocomplete/AutocompleteMui.mjs +0 -219
- package/Autocomplete/AutocompleteReach.mjs +0 -111
- package/Autocomplete/components.mjs +0 -87
- package/Autocomplete/helpers.mjs +0 -35
- package/Autocomplete/index.mjs +0 -4
- package/Bg/BgColor.mjs +0 -42
- package/Bg/BgPhoto.mjs +0 -71
- package/Bg/BgSvg.mjs +0 -22
- package/Bg/index.mjs +0 -3
- package/Breadcrumbs/Breadcrumbs.mjs +0 -91
- package/Breadcrumbs/index.mjs +0 -1
- package/Buttons/Button.mjs +0 -78
- package/Buttons/ButtonComposite.mjs +0 -105
- package/Buttons/ButtonFab.mjs +0 -8
- package/Buttons/ButtonLink.mjs +0 -18
- package/Buttons/IconButton.mjs +0 -19
- package/Buttons/index.mjs +0 -5
- package/Calendar/CalendarDaygridCell.mjs +0 -95
- package/Calendar/CalendarDaygridNav.mjs +0 -52
- package/Calendar/CalendarDaygridTable.mjs +0 -115
- package/Calendar/CalendarLegend.mjs +0 -29
- package/Calendar/calendar-api-google.mjs +0 -99
- package/Calendar/index.mjs +0 -6
- package/Calendar/types.mjs +0 -1
- package/Calendar/useCalendar.mjs +0 -225
- package/Calendar/utils.mjs +0 -209
- package/Carousel/Carousel.mjs +0 -377
- package/Carousel/CarouselCss.mjs +0 -44
- package/Carousel/index.mjs +0 -1
- package/Collapsable/Collapsable.mjs +0 -1
- package/Collapsable/CollapsableReach.mjs +0 -250
- package/Collapsable/index.mjs +0 -1
- package/Debug/Debug.mjs +0 -23
- package/Debug/index.mjs +0 -1
- package/Details/Details.mjs +0 -90
- package/Details/Details.stories.mjs +0 -21
- package/Details/index.mjs +0 -1
- package/Dialog/DialogMui.mjs +0 -105
- package/Dialog/DialogMui.stories.mjs +0 -20
- package/Dialog/css/bare.mjs +0 -19
- package/Dialog/css/index.stories.mjs +0 -75
- package/Dialog/index.mjs +0 -1
- package/Dialog/m/bare.mjs +0 -115
- package/Dialog/m/basic.mjs +0 -31
- package/Dialog/m/index.mjs +0 -4
- package/Dialog/sc/bare.mjs +0 -54
- package/Dialog/sc/framer.mjs +0 -16
- package/Dialog/sc/framerMaterial.mjs +0 -16
- package/Dialog/sc/index.stories.mjs +0 -48
- package/Dialog/sc/material.mjs +0 -41
- package/Dialog/tw/bare.mjs +0 -29
- package/Dialog/tw/elegant.mjs +0 -18
- package/Dialog/tw/framer.mjs +0 -16
- package/Dialog/tw/framerMaterial.mjs +0 -16
- package/Dialog/tw/index.stories.mjs +0 -83
- package/Dialog/tw/material.mjs +0 -18
- package/Editor/Editor--tiptap.mjs +0 -53
- package/Editor/components.mjs +0 -28
- package/Editor/index.mjs +0 -1
- package/FaviconTags.mjs +0 -64
- package/Form/Form.mjs +0 -95
- package/Form/index.mjs +0 -1
- package/Form/sc/bare.mjs +0 -29
- package/Forms/Checkbox/Checkbox.mjs +0 -36
- package/Forms/Checkbox/index.mjs +0 -1
- package/Forms/Feedback/Feedback.mjs +0 -14
- package/Forms/Feedback/index.mjs +0 -1
- package/Forms/Field/Field.mjs +0 -50
- package/Forms/Field/FieldControl.mjs +0 -67
- package/Forms/Field/FieldHint.mjs +0 -6
- package/Forms/Field/index.mjs +0 -2
- package/Forms/Input/Input.mjs +0 -36
- package/Forms/Input/index.mjs +0 -1
- package/Forms/InputGroup/InputGroup.mjs +0 -57
- package/Forms/InputGroup/index.mjs +0 -1
- package/Forms/Label/Label.mjs +0 -24
- package/Forms/Label/index.mjs +0 -1
- package/Forms/Password/Password.mjs +0 -53
- package/Forms/Password/index.mjs +0 -1
- package/Forms/Radio/Radio.mjs +0 -57
- package/Forms/Radio/index.mjs +0 -1
- package/Forms/Switch/Switch.mjs +0 -60
- package/Forms/Switch/index.mjs +0 -1
- package/Forms/Textarea/Textarea.mjs +0 -26
- package/Forms/Textarea/TextareaRich.mjs +0 -48
- package/Forms/Textarea/index.mjs +0 -2
- package/Forms/Toggle/Toggle-tailwind.mjs +0 -98
- package/Forms/Toggle/Toggle.mjs +0 -123
- package/Forms/Toggle/index.mjs +0 -1
- package/Forms/Toggle/useToggle-tailwind.mjs +0 -201
- package/Forms/Toggle/useToggle.mjs +0 -163
- package/Forms/antispam.mjs +0 -58
- package/Forms/helpers.mjs +0 -52
- package/Forms/index.mjs +0 -16
- package/Forms/styles.mjs +0 -61
- package/Gauge/Gauge.mjs +0 -101
- package/Grid/Grid.mjs +0 -75
- package/Grid/index.mjs +0 -1
- package/Hamburger/Hamburger.mjs +0 -79
- package/Hamburger/index.mjs +0 -1
- package/Header/index.mjs +0 -1
- package/Header/useHeader.mjs +0 -36
- package/Hidden/Hidden.mjs +0 -10
- package/Hidden/index.mjs +0 -1
- package/Img/index.mjs +0 -1
- package/Img/sc/bare.mjs +0 -36
- package/Img/types.mjs +0 -1
- package/Link/Link.mjs +0 -2
- package/Link/LinkBlank.mjs +0 -32
- package/Link/index.mjs +0 -2
- package/Menu/Menu.mjs +0 -11
- package/Menu/MenuMui.mjs +0 -164
- package/Menu/index.mjs +0 -1
- package/MenuItem/MenuItem.mjs +0 -20
- package/MenuItem/MenuItemMui.mjs +0 -31
- package/MenuItem/index.mjs +0 -1
- package/MenuItem/useMenuItem.mjs +0 -78
- package/Meta/Meta.d.ts +0 -15
- package/Meta/Meta.mjs +0 -8
- package/Meta/index.d.ts +0 -2
- package/Meta/index.mjs +0 -2
- package/NoJs/NoJs.mjs +0 -10
- package/NoJs/index.d.ts +0 -2
- package/NoJs/index.mjs +0 -2
- package/Pagination/PaginationNav.mjs +0 -122
- package/Pagination/PaginationResults.mjs +0 -34
- package/Pagination/index.mjs +0 -2
- package/Pill/Pill.mjs +0 -37
- package/Pill/index.mjs +0 -1
- package/Progress/ProgressCircular.mjs +0 -53
- package/Progress/ProgressLinear.mjs +0 -44
- package/Progress/ProgressOverlay.mjs +0 -64
- package/Progress/index.mjs +0 -3
- package/README.md +0 -1
- package/Rating/Rating.mjs +0 -154
- package/Rating/index.mjs +0 -62
- package/Select/SelectDownshift.mjs +0 -37
- package/Select/components.mjs +0 -25
- package/Select/index.mjs +0 -2
- package/Sidebar/Sidebar.mjs +0 -63
- package/Sidebar/index.mjs +0 -1
- package/Spacing/Spacing.mjs +0 -55
- package/Spacing/index.mjs +0 -1
- package/Sticky/Sticky.mjs +0 -218
- package/Sticky/StickyCss.mjs +0 -10
- package/Sticky/index.mjs +0 -1
- package/Tabs/TabsMui.mjs +0 -61
- package/Tabs/TabsMui.stories.mjs +0 -20
- package/Tabs/index.mjs +0 -1
- package/Tabs/sc/bare.mjs +0 -85
- package/Tabs/sc/index.stories.mjs +0 -0
- package/Tabs/tw/bare.mjs +0 -15
- package/Tabs/tw/index.stories.mjs +0 -25
- package/Tabs/tw/material.mjs +0 -14
- package/Tabs/useTabs.mjs +0 -46
- package/Typography/CopyPasteVisible.mjs +0 -6
- package/Typography/Native.mjs +0 -47
- package/Typography/ReadMore.mjs +0 -114
- package/Typography/TextLoop.mjs +0 -90
- package/Typography/TypeStairs.mjs +0 -61
- package/Typography/index.mjs +0 -5
- package/css/index.mjs +0 -30
- package/helpers/classed.d.ts +0 -27
- package/helpers/classed.mjs +0 -65
- package/helpers/classed.stories.mjs +0 -121
- package/helpers/createUseMediaQueryWidth.mjs +0 -178
- package/helpers/extend-component.mjs +0 -13
- package/helpers/index.d.ts +0 -4
- package/helpers/index.mjs +0 -4
- package/hooks/index.d.ts +0 -20
- package/hooks/index.mjs +0 -21
- package/hooks/types.d.ts +0 -8
- package/hooks/types.mjs +0 -3
- package/hooks/useAsyncFn.mjs +0 -39
- package/hooks/useDateLocale.d.ts +0 -8
- package/hooks/useDateLocale.mjs +0 -37
- package/hooks/useFirstMountState.d.ts +0 -5
- package/hooks/useFirstMountState.mjs +0 -12
- package/hooks/useFixedOffset.d.ts +0 -12
- package/hooks/useFixedOffset.mjs +0 -56
- package/hooks/useFocus.mjs +0 -14
- package/hooks/useInterval.d.ts +0 -7
- package/hooks/useInterval.mjs +0 -29
- package/hooks/useIsomorphicLayoutEffect.d.ts +0 -6
- package/hooks/useIsomorphicLayoutEffect.mjs +0 -6
- package/hooks/useKeyUp.mjs +0 -21
- package/hooks/useMeasure.mjs +0 -174
- package/hooks/useMountedState.d.ts +0 -5
- package/hooks/useMountedState.mjs +0 -15
- package/hooks/useNavigateAway.d.ts +0 -32
- package/hooks/useNavigateAway.mjs +0 -69
- package/hooks/usePrevious.d.ts +0 -5
- package/hooks/usePrevious.mjs +0 -17
- package/hooks/useScrollPosition.mjs +0 -70
- package/hooks/useScrollThreshold.mjs +0 -33
- package/hooks/useScrollTo.mjs +0 -20
- package/hooks/useSmoothScroll.mjs +0 -35
- package/hooks/useSpinDelay.d.ts +0 -14
- package/hooks/useSpinDelay.mjs +0 -52
- package/hooks/useTraceUpdate.mjs +0 -23
- package/hooks/useUpdateEffect.mjs +0 -14
- package/hooks/useWindowSize.d.ts +0 -12
- package/hooks/useWindowSize.mjs +0 -32
- package/index.mjs +0 -4
- package/m/MotionProvider.mjs +0 -40
- package/m/index.mjs +0 -5
- package/sc/index.mjs +0 -31
- package/scm/index.mjs +0 -31
- package/shared/index.mjs +0 -43
- package/styles/Body.mjs +0 -16
- package/styles/Global.mjs +0 -49
- package/styles/index.mjs +0 -7
- package/styles/media.mjs +0 -151
- package/styles/spacing.mjs +0 -46
- package/styles/styled.mjs +0 -26
- package/styles/theme--vanilla.mjs +0 -65
- package/styles/theme.mjs +0 -38
- package/tw/index.mjs +0 -30
- package/twm/index.mjs +0 -30
- package/types.mjs +0 -1
- /package/{NoJs/NoJs.d.ts → NoJs.d.ts} +0 -0
- /package/m/{lite.mjs → lite.js} +0 -0
- /package/m/{max.mjs → max.js} +0 -0
- /package/{helpers/mergeRefs.d.ts → mergeRefs.d.ts} +0 -0
- /package/{hooks/useKeyUp.d.ts → useKeyUp.d.ts} +0 -0
- /package/{hooks/usePreviousRef.d.ts → usePreviousRef.d.ts} +0 -0
- /package/{hooks/useScrollThreshold.d.ts → useScrollThreshold.d.ts} +0 -0
- /package/{hooks/useScrollTo.d.ts → useScrollTo.d.ts} +0 -0
package/hooks/useAsyncFn.mjs
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useRef, useState } from "react";
|
|
2
|
-
import { useMountedState } from "./useMountedState";
|
|
3
|
-
/**
|
|
4
|
-
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useAsyncFn.ts)
|
|
5
|
-
*/ export function useAsyncFn(fn, deps = [], initialState = {
|
|
6
|
-
loading: false
|
|
7
|
-
}) {
|
|
8
|
-
const lastCallId = useRef(0);
|
|
9
|
-
const isMounted = useMountedState();
|
|
10
|
-
const [state, set] = useState(initialState);
|
|
11
|
-
const callback = useCallback((...args)=>{
|
|
12
|
-
const callId = ++lastCallId.current;
|
|
13
|
-
if (!state.loading) {
|
|
14
|
-
set((prevState)=>({
|
|
15
|
-
...prevState,
|
|
16
|
-
loading: true
|
|
17
|
-
}));
|
|
18
|
-
}
|
|
19
|
-
return fn(...args).then((value)=>{
|
|
20
|
-
isMounted() && callId === lastCallId.current && set({
|
|
21
|
-
value,
|
|
22
|
-
loading: false
|
|
23
|
-
});
|
|
24
|
-
return value;
|
|
25
|
-
}, (error)=>{
|
|
26
|
-
isMounted() && callId === lastCallId.current && set({
|
|
27
|
-
error,
|
|
28
|
-
loading: false
|
|
29
|
-
});
|
|
30
|
-
return error;
|
|
31
|
-
});
|
|
32
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
33
|
-
}, deps);
|
|
34
|
-
return [
|
|
35
|
-
state,
|
|
36
|
-
callback
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
export default useAsyncFn;
|
package/hooks/useDateLocale.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dynamically import the date-fns correct locale
|
|
3
|
-
*
|
|
4
|
-
* Inspired by:
|
|
5
|
-
* @see https://robertmarshall.dev/blog/dynamically-import-datefns-locale-mui-datepicker-localization/
|
|
6
|
-
*/
|
|
7
|
-
export declare function useDateLocale(locale?: string, defaultLocale?: string): globalThis.Locale | undefined;
|
|
8
|
-
export default useDateLocale;
|
package/hooks/useDateLocale.mjs
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Dynamically import the date-fns correct locale
|
|
4
|
-
*
|
|
5
|
-
* Inspired by:
|
|
6
|
-
* @see https://robertmarshall.dev/blog/dynamically-import-datefns-locale-mui-datepicker-localization/
|
|
7
|
-
*/ export function useDateLocale(locale, defaultLocale = "en") {
|
|
8
|
-
const [data, setData] = useState();
|
|
9
|
-
const [current, setCurrent] = useState(defaultLocale);
|
|
10
|
-
// const [ready, setReady] = useState(false);
|
|
11
|
-
// If the user changes the locale listen to the change and import the locale that is now required.
|
|
12
|
-
useEffect(()=>{
|
|
13
|
-
const importLocaleFile = async ()=>{
|
|
14
|
-
// This webpack option stops all of the date-fns files being imported and chunked.
|
|
15
|
-
// NB: this makes unnecessary numerous webpack chunks in applications
|
|
16
|
-
// that do not even use this hook, so we comment out the webpack dynamic
|
|
17
|
-
// import and its magic comment
|
|
18
|
-
// const localeToSet = await import(
|
|
19
|
-
// /FIXME: * webpackMode: "lazy", webpackChunkName: "df-[index]", webpackExclude: /_lib/ */
|
|
20
|
-
// `date-fns/locale/${locale}/index.js`,
|
|
21
|
-
// );
|
|
22
|
-
const localeToSet = await import(`date-fns/locale/en-US/index.js`);
|
|
23
|
-
setCurrent(locale || current);
|
|
24
|
-
setData(localeToSet.default);
|
|
25
|
-
// setReady(true);
|
|
26
|
-
};
|
|
27
|
-
// If the locale has not yet been loaded.
|
|
28
|
-
if (locale !== current) {
|
|
29
|
-
importLocaleFile();
|
|
30
|
-
}
|
|
31
|
-
}, [
|
|
32
|
-
locale,
|
|
33
|
-
current
|
|
34
|
-
]);
|
|
35
|
-
return data;
|
|
36
|
-
}
|
|
37
|
-
export default useDateLocale;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useFirstMountState.ts)
|
|
4
|
-
*/ export function useFirstMountState() {
|
|
5
|
-
const isFirst = useRef(true);
|
|
6
|
-
if (isFirst.current) {
|
|
7
|
-
isFirst.current = false;
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
return isFirst.current;
|
|
11
|
-
}
|
|
12
|
-
export default useFirstMountState;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
/**
|
|
3
|
-
* # Use fixed offset
|
|
4
|
-
*
|
|
5
|
-
* Maybe use [ResizeObserver polyfill](https://github.com/juggle/resize-observer)
|
|
6
|
-
*
|
|
7
|
-
* @see https://web.dev/resize-observer/
|
|
8
|
-
*
|
|
9
|
-
* @param selector By default `[data-fixed]`: anyhting with the data attribute `data-fixed`
|
|
10
|
-
*/
|
|
11
|
-
export declare function useFixedOffset(selector?: string): import("react").MutableRefObject<number>;
|
|
12
|
-
export default useFixedOffset;
|
package/hooks/useFixedOffset.mjs
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
import debounce from "@koine/utils/debounce";
|
|
3
|
-
import $each from "@koine/dom/$each";
|
|
4
|
-
import calculateFixedOffset from "@koine/dom/calculateFixedOffset";
|
|
5
|
-
import injectCss from "@koine/dom/injectCss";
|
|
6
|
-
import listenResizeDebounced from "@koine/dom/listenResizeDebounced";
|
|
7
|
-
import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect";
|
|
8
|
-
const inject = (value)=>{
|
|
9
|
-
injectCss("useFixedOffset", `html{scroll-padding-top: ${value}px}`);
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* # Use fixed offset
|
|
13
|
-
*
|
|
14
|
-
* Maybe use [ResizeObserver polyfill](https://github.com/juggle/resize-observer)
|
|
15
|
-
*
|
|
16
|
-
* @see https://web.dev/resize-observer/
|
|
17
|
-
*
|
|
18
|
-
* @param selector By default `[data-fixed]`: anyhting with the data attribute `data-fixed`
|
|
19
|
-
*/ export function useFixedOffset(selector) {
|
|
20
|
-
const fixedOffset = useRef(0);
|
|
21
|
-
useIsomorphicLayoutEffect(()=>{
|
|
22
|
-
const update = ()=>{
|
|
23
|
-
const newFixedOffset = calculateFixedOffset();
|
|
24
|
-
fixedOffset.current = newFixedOffset;
|
|
25
|
-
// inject this CSS make the hashed deeplinks position the scroll at the
|
|
26
|
-
// right offset
|
|
27
|
-
inject(newFixedOffset);
|
|
28
|
-
};
|
|
29
|
-
update();
|
|
30
|
-
if (ResizeObserver) {
|
|
31
|
-
// const elements = $$("[data-fixed]");
|
|
32
|
-
const observer = new ResizeObserver((entries)=>{
|
|
33
|
-
let newFixedOffset = 0;
|
|
34
|
-
entries.forEach((entry)=>{
|
|
35
|
-
newFixedOffset += entry.contentRect.height;
|
|
36
|
-
});
|
|
37
|
-
fixedOffset.current = newFixedOffset;
|
|
38
|
-
const updateOnResize = debounce(()=>inject(newFixedOffset), 400, true);
|
|
39
|
-
updateOnResize();
|
|
40
|
-
});
|
|
41
|
-
$each(selector || "[data-fixed]", ($el)=>{
|
|
42
|
-
if (observer) observer.observe($el);
|
|
43
|
-
});
|
|
44
|
-
return ()=>{
|
|
45
|
-
observer?.disconnect();
|
|
46
|
-
};
|
|
47
|
-
} else {
|
|
48
|
-
const listener = listenResizeDebounced(0, update);
|
|
49
|
-
return listener;
|
|
50
|
-
}
|
|
51
|
-
}, [
|
|
52
|
-
selector
|
|
53
|
-
]);
|
|
54
|
-
return fixedOffset;
|
|
55
|
-
}
|
|
56
|
-
export default useFixedOffset;
|
package/hooks/useFocus.mjs
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* @see https://stackoverflow.com/a/54159564/1938970
|
|
4
|
-
*/ export const useFocus = ()=>{
|
|
5
|
-
const elementRef = useRef(null);
|
|
6
|
-
const setFocus = ()=>{
|
|
7
|
-
elementRef.current && elementRef.current.focus();
|
|
8
|
-
};
|
|
9
|
-
return [
|
|
10
|
-
elementRef,
|
|
11
|
-
setFocus
|
|
12
|
-
];
|
|
13
|
-
};
|
|
14
|
-
export default useFocus;
|
package/hooks/useInterval.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @borrows [dan abramov](https://overreacted.io/making-setinterval-declarative-with-react-hooks/)
|
|
3
|
-
*
|
|
4
|
-
* We just add `deps` array argument and typescript support
|
|
5
|
-
*/
|
|
6
|
-
export declare function useInterval<T extends () => unknown>(callback: T, delay: number, deps?: unknown[]): void;
|
|
7
|
-
export default useInterval;
|
package/hooks/useInterval.mjs
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from "react";
|
|
2
|
-
import noop from "@koine/utils/noop";
|
|
3
|
-
/**
|
|
4
|
-
* @borrows [dan abramov](https://overreacted.io/making-setinterval-declarative-with-react-hooks/)
|
|
5
|
-
*
|
|
6
|
-
* We just add `deps` array argument and typescript support
|
|
7
|
-
*/ export function useInterval(callback, delay, deps = []) {
|
|
8
|
-
const savedCallback = useRef();
|
|
9
|
-
useEffect(()=>{
|
|
10
|
-
savedCallback.current = callback;
|
|
11
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
12
|
-
}, [
|
|
13
|
-
callback,
|
|
14
|
-
...deps
|
|
15
|
-
]);
|
|
16
|
-
useEffect(()=>{
|
|
17
|
-
function tick() {
|
|
18
|
-
if (savedCallback.current) savedCallback.current();
|
|
19
|
-
}
|
|
20
|
-
if (delay !== null) {
|
|
21
|
-
const id = setInterval(tick, delay);
|
|
22
|
-
return ()=>clearInterval(id);
|
|
23
|
-
}
|
|
24
|
-
return noop;
|
|
25
|
-
}, [
|
|
26
|
-
delay
|
|
27
|
-
]);
|
|
28
|
-
}
|
|
29
|
-
export default useInterval;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts)
|
|
4
|
-
*/
|
|
5
|
-
export declare const useIsomorphicLayoutEffect: typeof useEffect;
|
|
6
|
-
export default useIsomorphicLayoutEffect;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { useEffect, useLayoutEffect } from "react";
|
|
2
|
-
import isBrowser from "@koine/utils/isBrowser";
|
|
3
|
-
/**
|
|
4
|
-
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts)
|
|
5
|
-
*/ export const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
|
|
6
|
-
export default useIsomorphicLayoutEffect;
|
package/hooks/useKeyUp.mjs
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
import on from "@koine/dom/on";
|
|
3
|
-
export function useKeyUp(callback, deps = []) {
|
|
4
|
-
useEffect(()=>{
|
|
5
|
-
const listener = on(window, "keyup", (event)=>{
|
|
6
|
-
// const { key } = event;
|
|
7
|
-
// be sure we do not intercept keys combinations maybe used for other
|
|
8
|
-
// actions like native browser navigation shortcuts
|
|
9
|
-
// @see https://stackoverflow.com/a/37559790/1938970
|
|
10
|
-
if (!event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey) {
|
|
11
|
-
callback(event);
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
return listener;
|
|
15
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16
|
-
}, [
|
|
17
|
-
callback,
|
|
18
|
-
...deps
|
|
19
|
-
]);
|
|
20
|
-
}
|
|
21
|
-
export default useKeyUp;
|
package/hooks/useMeasure.mjs
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
-
import debounce from "@koine/utils/debounce";
|
|
3
|
-
import noop from "@koine/utils/noop";
|
|
4
|
-
import listenResizeDebounced from "@koine/dom/listenResizeDebounced";
|
|
5
|
-
import listenScrollDebounced from "@koine/dom/listenScrollDebounced";
|
|
6
|
-
import off from "@koine/dom/off";
|
|
7
|
-
import on from "@koine/dom/on";
|
|
8
|
-
let observer;
|
|
9
|
-
// Returns a list of scroll offsets
|
|
10
|
-
function findScrollContainers(element) {
|
|
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
|
-
];
|
|
23
|
-
}
|
|
24
|
-
const keys = [
|
|
25
|
-
"x",
|
|
26
|
-
"y",
|
|
27
|
-
"top",
|
|
28
|
-
"bottom",
|
|
29
|
-
"left",
|
|
30
|
-
"right",
|
|
31
|
-
"width",
|
|
32
|
-
"height"
|
|
33
|
-
];
|
|
34
|
-
const areBoundsEqual = (a, b)=>keys.every((key)=>a[key] === b[key]);
|
|
35
|
-
/**
|
|
36
|
-
* Use measure hook
|
|
37
|
-
*
|
|
38
|
-
* @borrows [pmndrs/react-use-measure](https://github.com/pmndrs/react-use-measure)
|
|
39
|
-
*/ export function useMeasure(options) {
|
|
40
|
-
const { scroll = false } = options || {};
|
|
41
|
-
const [bounds, setBounds] = useState({
|
|
42
|
-
left: 0,
|
|
43
|
-
top: 0,
|
|
44
|
-
width: 0,
|
|
45
|
-
height: 0,
|
|
46
|
-
bottom: 0,
|
|
47
|
-
right: 0,
|
|
48
|
-
x: 0,
|
|
49
|
-
y: 0
|
|
50
|
-
});
|
|
51
|
-
// keep all state in a ref
|
|
52
|
-
const state = useRef([
|
|
53
|
-
// element
|
|
54
|
-
null,
|
|
55
|
-
// scrollContainers
|
|
56
|
-
null,
|
|
57
|
-
// resizeObserver
|
|
58
|
-
null,
|
|
59
|
-
// lastBounds
|
|
60
|
-
bounds
|
|
61
|
-
]);
|
|
62
|
-
// make sure to update state only as long as the component is truly mounted
|
|
63
|
-
const mounted = useRef(false);
|
|
64
|
-
useEffect(()=>{
|
|
65
|
-
mounted.current = true;
|
|
66
|
-
return ()=>void (mounted.current = false);
|
|
67
|
-
}, []);
|
|
68
|
-
// memoize handlers, so event-listeners know when they should update
|
|
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();
|
|
74
|
-
// if (element instanceof HTMLElement && offsetSize) {
|
|
75
|
-
// size.height = element.offsetHeight;
|
|
76
|
-
// size.width = element.offsetWidth;
|
|
77
|
-
// }
|
|
78
|
-
Object.freeze(size);
|
|
79
|
-
if (mounted.current && !areBoundsEqual(lastBounds, size)) {
|
|
80
|
-
state.current[3] = size;
|
|
81
|
-
setBounds(size);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
const debouncedCallback = debounce(callback);
|
|
85
|
-
return [
|
|
86
|
-
callback,
|
|
87
|
-
debouncedCallback,
|
|
88
|
-
debouncedCallback
|
|
89
|
-
];
|
|
90
|
-
}, [
|
|
91
|
-
setBounds /* , offsetSize */
|
|
92
|
-
]);
|
|
93
|
-
// cleanup current scroll-listeners / observers
|
|
94
|
-
function removeListeners() {
|
|
95
|
-
const [, scrollContainers, resizeObserver] = state.current;
|
|
96
|
-
if (scrollContainers) {
|
|
97
|
-
scrollContainers.forEach((element)=>off(element, "scroll", scrollChange));
|
|
98
|
-
state.current[1] = null;
|
|
99
|
-
}
|
|
100
|
-
if (resizeObserver) {
|
|
101
|
-
resizeObserver.disconnect();
|
|
102
|
-
state.current[2] = null;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// add scroll-listeners / observers
|
|
106
|
-
function addListeners() {
|
|
107
|
-
const [element, scrollContainers] = state.current;
|
|
108
|
-
if (!element) return;
|
|
109
|
-
if (!observer && ResizeObserver) {
|
|
110
|
-
observer = new ResizeObserver(scrollChange);
|
|
111
|
-
state.current[2] = observer;
|
|
112
|
-
observer.observe(element);
|
|
113
|
-
if (scroll && scrollContainers) {
|
|
114
|
-
scrollContainers.forEach((scrollContainer)=>on(scrollContainer, "scroll", scrollChange, {
|
|
115
|
-
capture: true,
|
|
116
|
-
passive: true
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
// the ref we expose to the user
|
|
122
|
-
const ref = (node)=>{
|
|
123
|
-
if (!node || node === state.current[0]) return;
|
|
124
|
-
removeListeners();
|
|
125
|
-
state.current[0] = node;
|
|
126
|
-
state.current[1] = findScrollContainers(node);
|
|
127
|
-
addListeners();
|
|
128
|
-
};
|
|
129
|
-
// add general event listeners
|
|
130
|
-
// useOnWindowScroll(forceRefresh, Boolean(scroll));
|
|
131
|
-
// useOnWindowResize(() => {
|
|
132
|
-
// debugger;
|
|
133
|
-
// forceRefresh();
|
|
134
|
-
// });
|
|
135
|
-
useEffect(()=>{
|
|
136
|
-
if (scroll) {
|
|
137
|
-
const listener = listenScrollDebounced(0, forceRefresh, 100);
|
|
138
|
-
return listener;
|
|
139
|
-
}
|
|
140
|
-
return noop;
|
|
141
|
-
}, [
|
|
142
|
-
scroll,
|
|
143
|
-
forceRefresh
|
|
144
|
-
]);
|
|
145
|
-
useEffect(()=>{
|
|
146
|
-
// const listener = listenResizeDebounced(onWindowResize);
|
|
147
|
-
// return listener;
|
|
148
|
-
const listener = listenResizeDebounced(0, forceRefresh, 100);
|
|
149
|
-
return listener;
|
|
150
|
-
}, [
|
|
151
|
-
forceRefresh
|
|
152
|
-
]);
|
|
153
|
-
// respond to changes that are relevant for the listeners
|
|
154
|
-
useEffect(()=>{
|
|
155
|
-
removeListeners();
|
|
156
|
-
addListeners();
|
|
157
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
158
|
-
}, [
|
|
159
|
-
scroll /* , scrollChange, resizeChange */
|
|
160
|
-
]);
|
|
161
|
-
useEffect(()=>{
|
|
162
|
-
// operate on mount, @kuus on the original version there is no call on mount?
|
|
163
|
-
forceRefresh();
|
|
164
|
-
// remove all listeners when the components unmounts
|
|
165
|
-
return removeListeners;
|
|
166
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
167
|
-
}, []);
|
|
168
|
-
return [
|
|
169
|
-
ref,
|
|
170
|
-
bounds,
|
|
171
|
-
forceRefresh
|
|
172
|
-
];
|
|
173
|
-
}
|
|
174
|
-
export default useMeasure;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useMountedState.ts)
|
|
4
|
-
*/ export function useMountedState() {
|
|
5
|
-
const mountedRef = useRef(false);
|
|
6
|
-
const get = useCallback(()=>mountedRef.current, []);
|
|
7
|
-
useEffect(()=>{
|
|
8
|
-
mountedRef.current = true;
|
|
9
|
-
return ()=>{
|
|
10
|
-
mountedRef.current = false;
|
|
11
|
-
};
|
|
12
|
-
}, []);
|
|
13
|
-
return get;
|
|
14
|
-
}
|
|
15
|
-
export default useMountedState;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @return A custom error message (most browser will ignore it), or just a
|
|
3
|
-
* boolean to signal whether we want to prompt the user
|
|
4
|
-
*
|
|
5
|
-
* We might instead return an array with the above as first element and two
|
|
6
|
-
* callbacks, but the callback technique is too cumbersome and unreliable
|
|
7
|
-
* probably:
|
|
8
|
-
* 2) A callback on confirmed leaving
|
|
9
|
-
* 3) A callback on cancel, user stays on page
|
|
10
|
-
*/
|
|
11
|
-
export type UseNavigateAwayHandler = (event: BeforeUnloadEvent) => string | boolean;
|
|
12
|
-
/**
|
|
13
|
-
* @resources
|
|
14
|
-
*
|
|
15
|
-
* About browser's specs see:
|
|
16
|
-
* - https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event
|
|
17
|
-
* - https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5
|
|
18
|
-
* - https://stackoverflow.com/questions/58009424/pagehide-event-on-google-chrome
|
|
19
|
-
*
|
|
20
|
-
* About react see:
|
|
21
|
-
* - https://github.com/jacobbuck/react-beforeunload
|
|
22
|
-
* - https://github.com/dioscarey/react-beforeunload-component
|
|
23
|
-
*
|
|
24
|
-
* About next.js see:
|
|
25
|
-
* - https://github.com/vercel/next.js/issues/2476
|
|
26
|
-
* - https://github.com/vercel/next.js/issues/2694
|
|
27
|
-
*
|
|
28
|
-
* For the callback technique see:
|
|
29
|
-
* - https://stackoverflow.com/a/11835394/1938970
|
|
30
|
-
*/
|
|
31
|
-
export declare const useNavigateAway: (handler: UseNavigateAwayHandler) => void;
|
|
32
|
-
export default useNavigateAway;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from "react";
|
|
2
|
-
import on from "@koine/dom/on";
|
|
3
|
-
// type UseNavigateAwayPagehideHandler = (event: PageTransitionEvent) => unknown;
|
|
4
|
-
/**
|
|
5
|
-
* @resources
|
|
6
|
-
*
|
|
7
|
-
* About browser's specs see:
|
|
8
|
-
* - https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event
|
|
9
|
-
* - https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5
|
|
10
|
-
* - https://stackoverflow.com/questions/58009424/pagehide-event-on-google-chrome
|
|
11
|
-
*
|
|
12
|
-
* About react see:
|
|
13
|
-
* - https://github.com/jacobbuck/react-beforeunload
|
|
14
|
-
* - https://github.com/dioscarey/react-beforeunload-component
|
|
15
|
-
*
|
|
16
|
-
* About next.js see:
|
|
17
|
-
* - https://github.com/vercel/next.js/issues/2476
|
|
18
|
-
* - https://github.com/vercel/next.js/issues/2694
|
|
19
|
-
*
|
|
20
|
-
* For the callback technique see:
|
|
21
|
-
* - https://stackoverflow.com/a/11835394/1938970
|
|
22
|
-
*/ export const useNavigateAway = (handler)=>{
|
|
23
|
-
const beforeUnloadHandlerRef = useRef();
|
|
24
|
-
// const pagehideHandlerRef = useRef<UseNavigateAwayPagehideHandler | undefined>();
|
|
25
|
-
useEffect(()=>{
|
|
26
|
-
beforeUnloadHandlerRef.current = (event)=>{
|
|
27
|
-
const customMessageOrCondition = handler(event);
|
|
28
|
-
if (customMessageOrCondition) {
|
|
29
|
-
event.preventDefault();
|
|
30
|
-
}
|
|
31
|
-
// Handle legacy `event.returnValue` property
|
|
32
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
|
33
|
-
if (typeof customMessageOrCondition === "string") {
|
|
34
|
-
return event.returnValue = customMessageOrCondition;
|
|
35
|
-
}
|
|
36
|
-
// Chrome doesn't support `event.preventDefault()` on `BeforeUnloadEvent`,
|
|
37
|
-
// instead it requires `event.returnValue` to be set
|
|
38
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#browser_compatibility
|
|
39
|
-
if (event.defaultPrevented) {
|
|
40
|
-
return event.returnValue = "";
|
|
41
|
-
}
|
|
42
|
-
return;
|
|
43
|
-
};
|
|
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));
|
|
59
|
-
// const listenerPagehide = on(window, "pagehide", (event) =>
|
|
60
|
-
// pagehideHandlerRef.current?.(event)
|
|
61
|
-
// );
|
|
62
|
-
return listenerBeforeunload;
|
|
63
|
-
// return () => {
|
|
64
|
-
// listenerBeforeunload();
|
|
65
|
-
// // listenerPagehide();
|
|
66
|
-
// };
|
|
67
|
-
}, []);
|
|
68
|
-
};
|
|
69
|
-
export default useNavigateAway;
|
package/hooks/usePrevious.d.ts
DELETED
package/hooks/usePrevious.mjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { useState } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* @borrows [samselikoff/animated-carousel](https://github.com/samselikoff/2022-06-02-animated-carousel/blob/main/pages/final.jsx)
|
|
4
|
-
*/ export function usePrevious(state, defaulValue) {
|
|
5
|
-
const [tuple, setTuple] = useState([
|
|
6
|
-
state,
|
|
7
|
-
defaulValue
|
|
8
|
-
]);
|
|
9
|
-
if (tuple[1] !== state) {
|
|
10
|
-
setTuple([
|
|
11
|
-
tuple[1],
|
|
12
|
-
state
|
|
13
|
-
]);
|
|
14
|
-
}
|
|
15
|
-
return tuple[0];
|
|
16
|
-
}
|
|
17
|
-
export default usePrevious;
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { useRef } from "react";
|
|
2
|
-
import isBrowser from "@koine/utils/isBrowser";
|
|
3
|
-
import listenScroll from "@koine/dom/listenScroll";
|
|
4
|
-
import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect";
|
|
5
|
-
const zeroPosition = {
|
|
6
|
-
x: 0,
|
|
7
|
-
y: 0
|
|
8
|
-
};
|
|
9
|
-
const getClientRect = (element)=>element?.getBoundingClientRect();
|
|
10
|
-
const getScrollPosition = (element, boundingElement)=>{
|
|
11
|
-
if (!isBrowser) {
|
|
12
|
-
return zeroPosition;
|
|
13
|
-
}
|
|
14
|
-
if (!boundingElement) {
|
|
15
|
-
return {
|
|
16
|
-
x: window.scrollX,
|
|
17
|
-
y: window.scrollY
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
const targetPosition = getClientRect(element?.current || document.body);
|
|
21
|
-
const containerPosition = getClientRect(boundingElement.current);
|
|
22
|
-
if (!targetPosition) {
|
|
23
|
-
return zeroPosition;
|
|
24
|
-
}
|
|
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
|
-
};
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
|
|
35
|
-
*
|
|
36
|
-
* We've just:
|
|
37
|
-
* - reused internal helper functions
|
|
38
|
-
* - compacted object arguments in functions as plain argument list to improve compression
|
|
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);
|
|
44
|
-
effect(current, position.current);
|
|
45
|
-
position.current = current;
|
|
46
|
-
throttleTimeout = null;
|
|
47
|
-
};
|
|
48
|
-
useIsomorphicLayoutEffect(()=>{
|
|
49
|
-
if (!isBrowser) {
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
52
|
-
const handleScroll = ()=>{
|
|
53
|
-
if (wait) {
|
|
54
|
-
if (throttleTimeout === null) {
|
|
55
|
-
throttleTimeout = window.setTimeout(callBack, wait);
|
|
56
|
-
}
|
|
57
|
-
} else {
|
|
58
|
-
callBack();
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
const listener = listenScroll(handleScroll, boundingElement?.current);
|
|
62
|
-
return ()=>{
|
|
63
|
-
listener();
|
|
64
|
-
if (throttleTimeout) {
|
|
65
|
-
clearTimeout(throttleTimeout);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
}, deps);
|
|
69
|
-
};
|
|
70
|
-
export default useScrollPosition;
|