@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
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
|
-
import isUndefined from "@koine/utils/isUndefined";
|
|
3
2
|
import getMediaQueryWidthResolvers from "@koine/utils/getMediaQueryWidthResolvers";
|
|
3
|
+
import isUndefined from "@koine/utils/isUndefined";
|
|
4
4
|
import useIsomorphicLayoutEffect from "../hooks/useIsomorphicLayoutEffect";
|
|
5
5
|
/**
|
|
6
6
|
* Use `null` instead of `false` as default value, @see https://observablehq.com/@werehamster/avoiding-hydration-mismatch-when-using-react-hooks
|
|
7
7
|
*
|
|
8
8
|
* @param customBreakpoints
|
|
9
9
|
* @returns
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
var queryResolvers = getMediaQueryWidthResolvers(customBreakpoints);
|
|
10
|
+
*/ export function createUseMediaQueryWidth(customBreakpoints) {
|
|
11
|
+
const queryResolvers = getMediaQueryWidthResolvers(customBreakpoints);
|
|
13
12
|
return function useMediaQueryWidth(media, serverValue) {
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const definition = media.substring(1);
|
|
14
|
+
let [rule, ruleBreakpoint] = definition.split("-");
|
|
16
15
|
if (isUndefined(ruleBreakpoint)) {
|
|
17
16
|
ruleBreakpoint = rule;
|
|
18
17
|
}
|
|
@@ -24,12 +23,12 @@ export function createUseMediaQueryWidth(customBreakpoints) {
|
|
|
24
23
|
// typeof ruleBreakpoint,
|
|
25
24
|
// "-"
|
|
26
25
|
// >;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
useIsomorphicLayoutEffect(
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const [br1, br2] = ruleBreakpoint.split("_");
|
|
27
|
+
const query = queryResolvers[rule](br1, br2);
|
|
28
|
+
const [matches, setMatches] = useState(isUndefined(serverValue) ? null : serverValue);
|
|
29
|
+
useIsomorphicLayoutEffect(()=>{
|
|
30
|
+
const mq = window.matchMedia(query);
|
|
31
|
+
const handleChange = (event)=>{
|
|
33
32
|
setMatches(event.matches);
|
|
34
33
|
};
|
|
35
34
|
setMatches(mq.matches);
|
|
@@ -39,140 +38,141 @@ export function createUseMediaQueryWidth(customBreakpoints) {
|
|
|
39
38
|
// Update the state whenever the media query match state changes
|
|
40
39
|
mq.addListener(handleChange);
|
|
41
40
|
// Clean up on unmount and if the query changes
|
|
42
|
-
return
|
|
41
|
+
return ()=>{
|
|
43
42
|
mq.removeListener(handleChange);
|
|
44
43
|
};
|
|
45
44
|
}
|
|
46
45
|
mq.addEventListener("change", handleChange);
|
|
47
|
-
return
|
|
46
|
+
return ()=>{
|
|
48
47
|
mq.removeEventListener("change", handleChange);
|
|
49
48
|
};
|
|
50
|
-
}, [
|
|
49
|
+
}, [
|
|
50
|
+
query
|
|
51
|
+
]);
|
|
51
52
|
return matches;
|
|
52
53
|
};
|
|
53
54
|
}
|
|
54
|
-
export default createUseMediaQueryWidth;
|
|
55
|
-
////
|
|
56
|
-
|
|
57
|
-
// import {
|
|
58
|
-
// import
|
|
59
|
-
// import
|
|
60
|
-
// import {
|
|
61
|
-
//
|
|
62
|
-
// type
|
|
63
|
-
// type
|
|
64
|
-
//
|
|
65
|
-
// | `
|
|
66
|
-
// | `
|
|
67
|
-
// | `
|
|
68
|
-
// | `
|
|
69
|
-
// | `
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
//
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
//
|
|
79
|
-
//
|
|
80
|
-
// )
|
|
81
|
-
// .
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
// *
|
|
89
|
-
// *
|
|
90
|
-
// *
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
// *
|
|
96
|
-
// *
|
|
97
|
-
// *
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
// *
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
// *
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
//
|
|
124
|
-
//
|
|
125
|
-
//
|
|
126
|
-
// *
|
|
127
|
-
//
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
//
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
//
|
|
145
|
-
//
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
// const
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
//
|
|
154
|
-
// );
|
|
155
|
-
//
|
|
156
|
-
//
|
|
157
|
-
// const
|
|
158
|
-
//
|
|
159
|
-
//
|
|
160
|
-
//
|
|
161
|
-
//
|
|
162
|
-
// //
|
|
163
|
-
//
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
//
|
|
174
|
-
//
|
|
175
|
-
//
|
|
176
|
-
//
|
|
177
|
-
//
|
|
178
|
-
// }
|
|
55
|
+
export default createUseMediaQueryWidth; //// without creator it would be:
|
|
56
|
+
//// ---------------------------------------------------------------------------
|
|
57
|
+
// import { useState, useIsomorphicLayoutEffect, useMemo } from "react";
|
|
58
|
+
// import type { Split } from "@koine/utils";
|
|
59
|
+
// import isBrowser from "@koine/utils/isBrowser";
|
|
60
|
+
// import { breakpoints as themeBreakpoints } from "@/config/theme/breakpoints";
|
|
61
|
+
// import { useIsomorphicLayoutEffect } from "../hooks/useIsomorphicLayoutEffect"
|
|
62
|
+
// type Breakpoint = "xs" | "sm" | "md" | "lg" | "xl";
|
|
63
|
+
// type Breakpoints = Record<Breakpoint, number>;
|
|
64
|
+
// type MediaQuery =
|
|
65
|
+
// | `max:${Breakpoint}`
|
|
66
|
+
// | `min:${Breakpoint}`
|
|
67
|
+
// | `down:${Breakpoint}`
|
|
68
|
+
// | `up:${Breakpoint}`
|
|
69
|
+
// | `between:${Breakpoint}-${Breakpoint}`
|
|
70
|
+
// | `only:${Breakpoint}`;
|
|
71
|
+
// const breakpoints: Breakpoints = {
|
|
72
|
+
// xs: 0,
|
|
73
|
+
// ...themeBreakpoints,
|
|
74
|
+
// };
|
|
75
|
+
// const sortedBreakpointsNames = (
|
|
76
|
+
// Object.keys(breakpoints).map((key) => {
|
|
77
|
+
// const br = key as keyof typeof breakpoints;
|
|
78
|
+
// return [br, breakpoints[br]];
|
|
79
|
+
// }) as [Breakpoint, number][]
|
|
80
|
+
// )
|
|
81
|
+
// .sort((a, b) => a[1] - b[1])
|
|
82
|
+
// .map((item) => item[0]);
|
|
83
|
+
// const getNextBreakpoint = (breakpoint: Breakpoint) => {
|
|
84
|
+
// const index = sortedBreakpointsNames.indexOf(breakpoint);
|
|
85
|
+
// return sortedBreakpointsNames[index + 1];
|
|
86
|
+
// };
|
|
87
|
+
// /**
|
|
88
|
+
// * It behaves the same as `(min-width: ${value}px)`
|
|
89
|
+
// * where value is the given breakpoint value.
|
|
90
|
+
// * For ease of use this can be used both as a function `min("md")` and as an
|
|
91
|
+
// * object literal `min.md`.
|
|
92
|
+
// */
|
|
93
|
+
// const min = (br: Breakpoint) => `(min-width: ${breakpoints[br]}px)`;
|
|
94
|
+
// /**
|
|
95
|
+
// * It behaves the same as `(max-width: ${value}px)`
|
|
96
|
+
// * where value is the given breakpoint value.
|
|
97
|
+
// * For ease of use this can be used both as a function `max("md")` and as an
|
|
98
|
+
// * object literal `max.md`.
|
|
99
|
+
// */
|
|
100
|
+
// const max = (br: Breakpoint) => `(max-width: ${breakpoints[br] - 0.02}px)`;
|
|
101
|
+
// /**
|
|
102
|
+
// * It behaves the same as `min`
|
|
103
|
+
// * @inheritdoc {max}
|
|
104
|
+
// */
|
|
105
|
+
// const up = min;
|
|
106
|
+
// /**
|
|
107
|
+
// * It behaves similarly to `max` but you will use the "next" breakpoint,
|
|
108
|
+
// * specifying CSS that will apply from the given breakpoint and down.
|
|
109
|
+
// */
|
|
110
|
+
// const down = (br: Breakpoint) => {
|
|
111
|
+
// const brNext = getNextBreakpoint(br);
|
|
112
|
+
// // TODO: if br does not exists otherwise throw Error
|
|
113
|
+
// return brNext && `(max-width: ${breakpoints[brNext] - 0.02}px)`;
|
|
114
|
+
// };
|
|
115
|
+
// /**
|
|
116
|
+
// * Media query between the two given breakpoints
|
|
117
|
+
// */
|
|
118
|
+
// const between = (br1: Breakpoint, br2?: Breakpoint) => {
|
|
119
|
+
// return br2
|
|
120
|
+
// ? `(min-width: ${breakpoints[br1]}px) and (max-width: ${
|
|
121
|
+
// breakpoints[br2] - 0.02
|
|
122
|
+
// }px)`
|
|
123
|
+
// : min(br1);
|
|
124
|
+
// };
|
|
125
|
+
// /**
|
|
126
|
+
// * Media query to apply from the given breakpoint until the next, just for its
|
|
127
|
+
// * full range
|
|
128
|
+
// */
|
|
129
|
+
// const only = (br: Breakpoint) => {
|
|
130
|
+
// const brNext = getNextBreakpoint(br);
|
|
131
|
+
// return brNext ? between(br, brNext) : min(br);
|
|
132
|
+
// };
|
|
133
|
+
// const queryResolvers = {
|
|
134
|
+
// max,
|
|
135
|
+
// min,
|
|
136
|
+
// down,
|
|
137
|
+
// up,
|
|
138
|
+
// between,
|
|
139
|
+
// only,
|
|
140
|
+
// };
|
|
141
|
+
// export function useMqWidth(media: MediaQuery) {
|
|
142
|
+
// const [rule = "min", ruleBreakpoint] = media.split(":") as Split<
|
|
143
|
+
// MediaQuery,
|
|
144
|
+
// ":"
|
|
145
|
+
// >;
|
|
146
|
+
// const [br1, br2] = ruleBreakpoint.split("-") as Split<
|
|
147
|
+
// typeof ruleBreakpoint,
|
|
148
|
+
// "-"
|
|
149
|
+
// >;
|
|
150
|
+
// const query = queryResolvers[rule](br1, br2);
|
|
151
|
+
// const mq = useMemo(
|
|
152
|
+
// () => (isBrowser ? window.matchMedia(query) : { matches: false }),
|
|
153
|
+
// [query]
|
|
154
|
+
// );
|
|
155
|
+
// const [matches, setMatches] = useState(mq.matches);
|
|
156
|
+
// useIsomorphicLayoutEffect(() => {
|
|
157
|
+
// const mq = window.matchMedia(query);
|
|
158
|
+
// const handleChange = (event: MediaQueryListEvent) => {
|
|
159
|
+
// setMatches(event.matches);
|
|
160
|
+
// };
|
|
161
|
+
// setMatches(mq.matches);
|
|
162
|
+
// // Safari < 14 can't use addEventListener on a MediaQueryList
|
|
163
|
+
// // https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList#Browser_compatibility
|
|
164
|
+
// if (!mq.addEventListener) {
|
|
165
|
+
// // Update the state whenever the media query match state changes
|
|
166
|
+
// mq.addListener(handleChange);
|
|
167
|
+
// // Clean up on unmount and if the query changes
|
|
168
|
+
// return () => {
|
|
169
|
+
// mq.removeListener(handleChange);
|
|
170
|
+
// };
|
|
171
|
+
// }
|
|
172
|
+
// mq.addEventListener("change", handleChange);
|
|
173
|
+
// return () => {
|
|
174
|
+
// mq.removeEventListener("change", handleChange);
|
|
175
|
+
// };
|
|
176
|
+
// }, [query]);
|
|
177
|
+
// return matches;
|
|
178
|
+
// }
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export var extendComponent = function (component, defaultProps) {
|
|
1
|
+
import React, { createElement } from "react";
|
|
2
|
+
export const extendComponent = (component, defaultProps)=>{
|
|
4
3
|
// FIXME: check if we need to forwardRef or not
|
|
5
|
-
|
|
6
|
-
return createElement(component, props);
|
|
7
|
-
};
|
|
4
|
+
const NewComponent = (props)=>createElement(component, props);
|
|
8
5
|
// const NewComponent = forwardRef<React.ComponentProps<Component>, Component>(
|
|
9
6
|
// (props, ref) => createElement(component, { ...props, ref })
|
|
10
7
|
// );
|
|
11
|
-
return Object.assign(NewComponent,
|
|
8
|
+
return Object.assign(NewComponent, {
|
|
9
|
+
...defaultProps,
|
|
10
|
+
defaultProps
|
|
11
|
+
});
|
|
12
12
|
};
|
|
13
13
|
export default extendComponent;
|
package/helpers/mergeRefs.mjs
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export function mergeRefs(refs) {
|
|
2
|
-
return
|
|
3
|
-
refs.forEach(
|
|
2
|
+
return (value)=>{
|
|
3
|
+
refs.forEach((ref)=>{
|
|
4
4
|
if (typeof ref === "function") {
|
|
5
5
|
ref(value);
|
|
6
|
-
}
|
|
7
|
-
else if (ref != null) {
|
|
6
|
+
} else if (ref != null) {
|
|
8
7
|
ref.current = value;
|
|
9
8
|
}
|
|
10
9
|
});
|
package/hooks/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { useAsyncFn
|
|
1
|
+
export { useAsyncFn } from "./useAsyncFn";
|
|
2
2
|
export { useDateLocale } from "./useDateLocale";
|
|
3
3
|
export { useFirstMountState } from "./useFirstMountState";
|
|
4
4
|
export { useFixedOffset } from "./useFixedOffset";
|
|
@@ -6,9 +6,9 @@ export { useFocus } from "./useFocus";
|
|
|
6
6
|
export { useInterval } from "./useInterval";
|
|
7
7
|
export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
|
|
8
8
|
export { useKeyUp } from "./useKeyUp";
|
|
9
|
-
export { useMeasure
|
|
9
|
+
export { useMeasure } from "./useMeasure";
|
|
10
10
|
export { useMountedState } from "./useMountedState";
|
|
11
|
-
export { useNavigateAway
|
|
11
|
+
export { useNavigateAway } from "./useNavigateAway";
|
|
12
12
|
export { usePrevious } from "./usePrevious";
|
|
13
13
|
export { usePreviousRef } from "./usePreviousRef";
|
|
14
14
|
export { useScrollPosition } from "./useScrollPosition";
|
package/hooks/types.mjs
CHANGED
package/hooks/useAsyncFn.mjs
CHANGED
|
@@ -1,37 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useCallback, useRef, useState } from "react";
|
|
1
|
+
import React, { useCallback, useRef, useState } from "react";
|
|
3
2
|
import { useMountedState } from "./useMountedState";
|
|
4
3
|
/**
|
|
5
4
|
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useAsyncFn.ts)
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var args = [];
|
|
15
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
16
|
-
args[_i] = arguments[_i];
|
|
17
|
-
}
|
|
18
|
-
var callId = ++lastCallId.current;
|
|
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;
|
|
19
13
|
if (!state.loading) {
|
|
20
|
-
set(
|
|
14
|
+
set((prevState)=>({
|
|
15
|
+
...prevState,
|
|
16
|
+
loading: true
|
|
17
|
+
}));
|
|
21
18
|
}
|
|
22
|
-
return fn
|
|
23
|
-
isMounted() &&
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
return fn(...args).then((value)=>{
|
|
20
|
+
isMounted() && callId === lastCallId.current && set({
|
|
21
|
+
value,
|
|
22
|
+
loading: false
|
|
23
|
+
});
|
|
26
24
|
return value;
|
|
27
|
-
},
|
|
28
|
-
isMounted() &&
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
}, (error)=>{
|
|
26
|
+
isMounted() && callId === lastCallId.current && set({
|
|
27
|
+
error,
|
|
28
|
+
loading: false
|
|
29
|
+
});
|
|
31
30
|
return error;
|
|
32
31
|
});
|
|
33
|
-
|
|
32
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
33
|
}, deps);
|
|
35
|
-
return [
|
|
34
|
+
return [
|
|
35
|
+
state,
|
|
36
|
+
callback
|
|
37
|
+
];
|
|
36
38
|
}
|
|
37
39
|
export default useAsyncFn;
|
package/hooks/useDateLocale.mjs
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { __awaiter, __generator } from "tslib";
|
|
2
1
|
import { useEffect, useState } from "react";
|
|
3
2
|
/**
|
|
4
3
|
* Dynamically import the date-fns correct locale
|
|
5
4
|
*
|
|
6
5
|
* Inspired by:
|
|
7
6
|
* @see https://robertmarshall.dev/blog/dynamically-import-datefns-locale-mui-datepicker-localization/
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (defaultLocale === void 0) { defaultLocale = "en"; }
|
|
12
|
-
var _a = useState(), data = _a[0], setData = _a[1];
|
|
13
|
-
var _b = useState(defaultLocale), current = _b[0], setCurrent = _b[1];
|
|
7
|
+
*/ export function useDateLocale(locale, defaultLocale = "en") {
|
|
8
|
+
const [data, setData] = useState();
|
|
9
|
+
const [current, setCurrent] = useState(defaultLocale);
|
|
14
10
|
// const [ready, setReady] = useState(false);
|
|
15
11
|
// If the user changes the locale listen to the change and import the locale that is now required.
|
|
16
|
-
useEffect(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
+
};
|
|
30
27
|
// If the locale has not yet been loaded.
|
|
31
28
|
if (locale !== current) {
|
|
32
29
|
importLocaleFile();
|
|
33
30
|
}
|
|
34
|
-
}, [
|
|
31
|
+
}, [
|
|
32
|
+
locale,
|
|
33
|
+
current
|
|
34
|
+
]);
|
|
35
35
|
return data;
|
|
36
36
|
}
|
|
37
37
|
export default useDateLocale;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { useRef } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useFirstMountState.ts)
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
var isFirst = useRef(true);
|
|
4
|
+
*/ export function useFirstMountState() {
|
|
5
|
+
const isFirst = useRef(true);
|
|
7
6
|
if (isFirst.current) {
|
|
8
7
|
isFirst.current = false;
|
|
9
8
|
return true;
|
package/hooks/useFixedOffset.mjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { useRef } from "react";
|
|
2
|
-
import
|
|
2
|
+
import debounce from "@koine/utils/debounce";
|
|
3
|
+
import $each from "@koine/dom/$each";
|
|
3
4
|
import calculateFixedOffset from "@koine/dom/calculateFixedOffset";
|
|
5
|
+
import injectCss from "@koine/dom/injectCss";
|
|
4
6
|
import listenResizeDebounced from "@koine/dom/listenResizeDebounced";
|
|
5
|
-
import $each from "@koine/dom/$each";
|
|
6
|
-
import debounce from "@koine/utils/debounce";
|
|
7
7
|
import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect";
|
|
8
|
-
|
|
9
|
-
injectCss("useFixedOffset",
|
|
8
|
+
const inject = (value)=>{
|
|
9
|
+
injectCss("useFixedOffset", `html{scroll-padding-top: ${value}px}`);
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
* # Use fixed offset
|
|
@@ -16,12 +16,11 @@ var inject = function (value) {
|
|
|
16
16
|
* @see https://web.dev/resize-observer/
|
|
17
17
|
*
|
|
18
18
|
* @param selector By default `[data-fixed]`: anyhting with the data attribute `data-fixed`
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
var newFixedOffset = calculateFixedOffset();
|
|
19
|
+
*/ export function useFixedOffset(selector) {
|
|
20
|
+
const fixedOffset = useRef(0);
|
|
21
|
+
useIsomorphicLayoutEffect(()=>{
|
|
22
|
+
const update = ()=>{
|
|
23
|
+
const newFixedOffset = calculateFixedOffset();
|
|
25
24
|
fixedOffset.current = newFixedOffset;
|
|
26
25
|
// inject this CSS make the hashed deeplinks position the scroll at the
|
|
27
26
|
// right offset
|
|
@@ -30,28 +29,28 @@ export function useFixedOffset(selector) {
|
|
|
30
29
|
update();
|
|
31
30
|
if (ResizeObserver) {
|
|
32
31
|
// const elements = $$("[data-fixed]");
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
entries.forEach(
|
|
32
|
+
const observer = new ResizeObserver((entries)=>{
|
|
33
|
+
let newFixedOffset = 0;
|
|
34
|
+
entries.forEach((entry)=>{
|
|
36
35
|
newFixedOffset += entry.contentRect.height;
|
|
37
36
|
});
|
|
38
37
|
fixedOffset.current = newFixedOffset;
|
|
39
|
-
|
|
38
|
+
const updateOnResize = debounce(()=>inject(newFixedOffset), 400, true);
|
|
40
39
|
updateOnResize();
|
|
41
40
|
});
|
|
42
|
-
$each(selector || "[data-fixed]",
|
|
43
|
-
if (
|
|
44
|
-
observer_1.observe($el);
|
|
41
|
+
$each(selector || "[data-fixed]", ($el)=>{
|
|
42
|
+
if (observer) observer.observe($el);
|
|
45
43
|
});
|
|
46
|
-
return
|
|
47
|
-
|
|
44
|
+
return ()=>{
|
|
45
|
+
observer?.disconnect();
|
|
48
46
|
};
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
var listener = listenResizeDebounced(0, update);
|
|
47
|
+
} else {
|
|
48
|
+
const listener = listenResizeDebounced(0, update);
|
|
52
49
|
return listener;
|
|
53
50
|
}
|
|
54
|
-
}, [
|
|
51
|
+
}, [
|
|
52
|
+
selector
|
|
53
|
+
]);
|
|
55
54
|
return fixedOffset;
|
|
56
55
|
}
|
|
57
56
|
export default useFixedOffset;
|
package/hooks/useFocus.mjs
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { useRef } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* @see https://stackoverflow.com/a/54159564/1938970
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var setFocus = function () {
|
|
4
|
+
*/ export const useFocus = ()=>{
|
|
5
|
+
const elementRef = useRef(null);
|
|
6
|
+
const setFocus = ()=>{
|
|
8
7
|
elementRef.current && elementRef.current.focus();
|
|
9
8
|
};
|
|
10
|
-
return [
|
|
9
|
+
return [
|
|
10
|
+
elementRef,
|
|
11
|
+
setFocus
|
|
12
|
+
];
|
|
11
13
|
};
|
|
12
14
|
export default useFocus;
|