@koine/react 2.0.0-beta.37 → 2.0.0-beta.39
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/README.md +1 -0
- package/calendar/CalendarDaygridCell.d.ts +4 -4
- package/calendar/CalendarDaygridNav.d.ts +3 -3
- package/calendar/CalendarDaygridTable.d.ts +4 -4
- package/calendar/CalendarLegend.d.ts +3 -3
- package/calendar/calendar-api-google.d.ts +2 -2
- package/calendar/useCalendar.d.ts +5 -5
- package/calendar/useDateLocale.d.ts +2 -0
- package/calendar/utils.d.ts +11 -11
- package/calendar.cjs.d.ts +1 -0
- package/calendar.cjs.default.js +1 -0
- package/calendar.cjs.js +62 -0
- package/calendar.cjs.mjs +2 -0
- package/calendar.d.ts +7 -0
- package/calendar.esm.js +35 -0
- package/components/FaviconTags.d.ts +8 -0
- package/components/Meta.d.ts +4 -0
- package/components/NoJs.d.ts +2 -0
- package/forms/antispam.d.ts +6 -6
- package/forms.cjs.d.ts +1 -0
- package/forms.cjs.default.js +1 -0
- package/forms.cjs.js +11 -0
- package/forms.cjs.mjs +2 -0
- package/forms.d.ts +1 -0
- package/forms.esm.js +6 -0
- package/hooks/index.d.ts +19 -0
- package/{useAsyncFn.d.ts → hooks/useAsyncFn.d.ts} +3 -3
- package/hooks/useFirstMountState.d.ts +1 -0
- package/hooks/useFixedOffset.d.ts +1 -0
- package/hooks/useFocus.d.ts +1 -0
- package/hooks/useInterval.d.ts +1 -0
- package/hooks/useIsomorphicLayoutEffect.d.ts +2 -0
- package/hooks/useKeyUp.d.ts +1 -0
- package/{useMeasure.d.ts → hooks/useMeasure.d.ts} +2 -2
- package/hooks/useMountedState.d.ts +1 -0
- package/hooks/useNavigateAway.d.ts +2 -0
- package/hooks/usePrevious.d.ts +1 -0
- package/hooks/usePreviousRef.d.ts +1 -0
- package/{useReveal.d.ts → hooks/useReveal.d.ts} +1 -1
- package/hooks/useScrollPosition.d.ts +7 -0
- package/hooks/useScrollThreshold.d.ts +1 -0
- package/hooks/useScrollTo.d.ts +1 -0
- package/hooks/useSmoothScroll.d.ts +1 -0
- package/hooks/useSpinDelay.d.ts +1 -0
- package/hooks/useTraceUpdate.d.ts +1 -0
- package/hooks/useUpdateEffect.d.ts +2 -0
- package/hooks/useWindowSize.d.ts +2 -0
- package/index.cjs.d.ts +1 -0
- package/index.cjs.default.js +1 -0
- package/index.cjs.js +77 -0
- package/index.cjs.mjs +2 -0
- package/index.d.ts +3 -26
- package/index.esm.js +51 -0
- package/package.json +21 -646
- package/utils/classed.d.ts +8 -0
- package/{createUseMediaQueryWidth.d.ts → utils/createUseMediaQueryWidth.d.ts} +2 -2
- package/{extendComponent.d.ts → utils/extendComponent.d.ts} +2 -3
- package/utils/index.d.ts +5 -0
- package/utils/mergeRefs.d.ts +1 -0
- package/Alert/Alert.d.ts +0 -5
- package/Alert/Alert.js +0 -10
- package/Alert/index.d.ts +0 -1
- package/Alert/index.js +0 -1
- package/Animations/Reveal.d.ts +0 -3
- package/Animations/Reveal.js +0 -16
- package/Animations/Underline.d.ts +0 -1
- package/Animations/Underline.js +0 -5
- package/Animations/index.d.ts +0 -3
- package/Animations/index.js +0 -3
- package/Animations/useReveal.d.ts +0 -13
- package/Animations/useReveal.js +0 -43
- package/Autocomplete/AutocompleteDownshift.d.ts +0 -1
- package/Autocomplete/AutocompleteDownshift.js +0 -1
- package/Autocomplete/AutocompleteDownshiftMultiselect.d.ts +0 -1
- package/Autocomplete/AutocompleteDownshiftMultiselect.js +0 -1
- package/Autocomplete/AutocompleteMui.d.ts +0 -22
- package/Autocomplete/AutocompleteMui.js +0 -93
- package/Autocomplete/AutocompleteReach.d.ts +0 -1
- package/Autocomplete/AutocompleteReach.js +0 -1
- package/Autocomplete/components.d.ts +0 -12
- package/Autocomplete/components.js +0 -26
- package/Autocomplete/helpers.d.ts +0 -3
- package/Autocomplete/helpers.js +0 -16
- package/Autocomplete/index.d.ts +0 -2
- package/Autocomplete/index.js +0 -1
- package/Bg/BgColor.d.ts +0 -12
- package/Bg/BgColor.js +0 -16
- package/Bg/BgPhoto.d.ts +0 -8
- package/Bg/BgPhoto.js +0 -16
- package/Bg/BgSvg.d.ts +0 -4
- package/Bg/BgSvg.js +0 -9
- package/Bg/index.d.ts +0 -3
- package/Bg/index.js +0 -3
- package/Breadcrumbs/Breadcrumbs.d.ts +0 -13
- package/Breadcrumbs/Breadcrumbs.js +0 -27
- package/Breadcrumbs/index.d.ts +0 -1
- package/Breadcrumbs/index.js +0 -1
- package/Buttons/Button.d.ts +0 -14
- package/Buttons/Button.js +0 -10
- package/Buttons/ButtonComposite.d.ts +0 -22
- package/Buttons/ButtonComposite.js +0 -28
- package/Buttons/ButtonFab.d.ts +0 -4
- package/Buttons/ButtonFab.js +0 -6
- package/Buttons/ButtonLink.d.ts +0 -8
- package/Buttons/ButtonLink.js +0 -11
- package/Buttons/IconButton.d.ts +0 -8
- package/Buttons/IconButton.js +0 -7
- package/Buttons/index.d.ts +0 -5
- package/Buttons/index.js +0 -5
- package/Calendar/CalendarDaygridCell.d.ts +0 -35
- package/Calendar/CalendarDaygridCell.js +0 -46
- package/Calendar/CalendarDaygridNav.d.ts +0 -27
- package/Calendar/CalendarDaygridNav.js +0 -24
- package/Calendar/CalendarDaygridTable.d.ts +0 -25
- package/Calendar/CalendarDaygridTable.js +0 -45
- package/Calendar/CalendarLegend.d.ts +0 -18
- package/Calendar/CalendarLegend.js +0 -9
- package/Calendar/calendar-api-google.d.ts +0 -10
- package/Calendar/calendar-api-google.js +0 -124
- package/Calendar/index.d.ts +0 -6
- package/Calendar/index.js +0 -6
- package/Calendar/types.d.ts +0 -62
- package/Calendar/types.js +0 -1
- package/Calendar/useCalendar.d.ts +0 -35
- package/Calendar/useCalendar.js +0 -176
- package/Calendar/utils.d.ts +0 -11
- package/Calendar/utils.js +0 -185
- package/Carousel/Carousel.d.ts +0 -1
- package/Carousel/Carousel.js +0 -1
- package/Carousel/CarouselCss.d.ts +0 -13
- package/Carousel/CarouselCss.js +0 -19
- package/Carousel/index.d.ts +0 -1
- package/Carousel/index.js +0 -1
- package/Collapsable/Collapsable.d.ts +0 -1
- package/Collapsable/Collapsable.js +0 -1
- package/Collapsable/CollapsableReach.d.ts +0 -0
- package/Collapsable/CollapsableReach.js +0 -1
- package/Collapsable/index.d.ts +0 -1
- package/Collapsable/index.js +0 -1
- package/Debug/Debug.d.ts +0 -4
- package/Debug/Debug.js +0 -9
- package/Debug/index.d.ts +0 -1
- package/Debug/index.js +0 -1
- package/Details/Details.d.ts +0 -398
- package/Details/Details.js +0 -52
- package/Details/index.d.ts +0 -1
- package/Details/index.js +0 -1
- package/Dialog/DialogMui.d.ts +0 -165
- package/Dialog/DialogMui.js +0 -39
- package/Dialog/css/bare.d.ts +0 -171
- package/Dialog/css/bare.js +0 -21
- package/Dialog/index.d.ts +0 -2
- package/Dialog/index.js +0 -1
- package/Dialog/m/bare.d.ts +0 -4
- package/Dialog/m/bare.js +0 -3
- package/Dialog/m/basic.d.ts +0 -4
- package/Dialog/m/basic.js +0 -28
- package/Dialog/m/index.d.ts +0 -2
- package/Dialog/m/index.js +0 -4
- package/Dialog/sc/bare.d.ts +0 -61
- package/Dialog/sc/bare.js +0 -31
- package/Dialog/sc/framer.d.ts +0 -24
- package/Dialog/sc/framer.js +0 -16
- package/Dialog/sc/framerMaterial.d.ts +0 -24
- package/Dialog/sc/framerMaterial.js +0 -16
- package/Dialog/sc/material.d.ts +0 -60
- package/Dialog/sc/material.js +0 -21
- package/Dialog/tw/bare.d.ts +0 -208
- package/Dialog/tw/bare.js +0 -29
- package/Dialog/tw/elegant.d.ts +0 -270
- package/Dialog/tw/elegant.js +0 -21
- package/Dialog/tw/framer.d.ts +0 -108
- package/Dialog/tw/framer.js +0 -16
- package/Dialog/tw/framerMaterial.d.ts +0 -164
- package/Dialog/tw/framerMaterial.js +0 -16
- package/Dialog/tw/material.d.ts +0 -270
- package/Dialog/tw/material.js +0 -21
- package/Editor/Editor--tiptap.d.ts +0 -9
- package/Editor/Editor--tiptap.js +0 -26
- package/Editor/components.d.ts +0 -5
- package/Editor/components.js +0 -10
- package/Editor/index.d.ts +0 -1
- package/Editor/index.js +0 -1
- package/FaviconTags.d.ts +0 -9
- package/FaviconTags.js +0 -6
- package/Form/Form.d.ts +0 -125
- package/Form/Form.js +0 -60
- package/Form/index.d.ts +0 -1
- package/Form/index.js +0 -1
- package/Form/sc/bare.d.ts +0 -57
- package/Form/sc/bare.js +0 -20
- package/Forms/Checkbox/Checkbox.d.ts +0 -7
- package/Forms/Checkbox/Checkbox.js +0 -15
- package/Forms/Checkbox/index.d.ts +0 -1
- package/Forms/Checkbox/index.js +0 -1
- package/Forms/Feedback/Feedback.d.ts +0 -5
- package/Forms/Feedback/Feedback.js +0 -9
- package/Forms/Feedback/index.d.ts +0 -1
- package/Forms/Feedback/index.js +0 -1
- package/Forms/Field/Field.d.ts +0 -18
- package/Forms/Field/Field.js +0 -25
- package/Forms/Field/FieldControl.d.ts +0 -14
- package/Forms/Field/FieldControl.js +0 -35
- package/Forms/Field/FieldHint.d.ts +0 -1
- package/Forms/Field/FieldHint.js +0 -4
- package/Forms/Field/index.d.ts +0 -2
- package/Forms/Field/index.js +0 -2
- package/Forms/Input/Input.d.ts +0 -8
- package/Forms/Input/Input.js +0 -16
- package/Forms/Input/index.d.ts +0 -1
- package/Forms/Input/index.js +0 -1
- package/Forms/InputGroup/InputGroup.d.ts +0 -12
- package/Forms/InputGroup/InputGroup.js +0 -15
- package/Forms/InputGroup/index.d.ts +0 -1
- package/Forms/InputGroup/index.js +0 -1
- package/Forms/Label/Label.d.ts +0 -3
- package/Forms/Label/Label.js +0 -6
- package/Forms/Label/index.d.ts +0 -1
- package/Forms/Label/index.js +0 -1
- package/Forms/Password/Password.d.ts +0 -4
- package/Forms/Password/Password.js +0 -17
- package/Forms/Password/index.d.ts +0 -1
- package/Forms/Password/index.js +0 -1
- package/Forms/Radio/Radio.d.ts +0 -11
- package/Forms/Radio/Radio.js +0 -25
- package/Forms/Radio/index.d.ts +0 -1
- package/Forms/Radio/index.js +0 -1
- package/Forms/Switch/Switch.d.ts +0 -5
- package/Forms/Switch/Switch.js +0 -17
- package/Forms/Switch/index.d.ts +0 -1
- package/Forms/Switch/index.js +0 -1
- package/Forms/Textarea/Textarea.d.ts +0 -4
- package/Forms/Textarea/Textarea.js +0 -12
- package/Forms/Textarea/TextareaRich.d.ts +0 -5
- package/Forms/Textarea/TextareaRich.js +0 -26
- package/Forms/Textarea/index.d.ts +0 -2
- package/Forms/Textarea/index.js +0 -2
- package/Forms/Toggle/Toggle-tailwind.d.ts +0 -0
- package/Forms/Toggle/Toggle-tailwind.js +0 -1
- package/Forms/Toggle/Toggle.d.ts +0 -18
- package/Forms/Toggle/Toggle.js +0 -25
- package/Forms/Toggle/index.d.ts +0 -1
- package/Forms/Toggle/index.js +0 -1
- package/Forms/Toggle/useToggle-tailwind.d.ts +0 -0
- package/Forms/Toggle/useToggle-tailwind.js +0 -1
- package/Forms/Toggle/useToggle.d.ts +0 -16
- package/Forms/Toggle/useToggle.js +0 -85
- package/Forms/antispam.d.ts +0 -27
- package/Forms/antispam.js +0 -29
- package/Forms/helpers.d.ts +0 -18
- package/Forms/helpers.js +0 -35
- package/Forms/index.d.ts +0 -15
- package/Forms/index.js +0 -15
- package/Forms/styles.d.ts +0 -9
- package/Forms/styles.js +0 -19
- package/Gauge/Gauge.d.ts +0 -4
- package/Gauge/Gauge.js +0 -1
- package/Grid/Grid.d.ts +0 -32
- package/Grid/Grid.js +0 -52
- package/Grid/index.d.ts +0 -1
- package/Grid/index.js +0 -1
- package/Hamburger/Hamburger.d.ts +0 -5
- package/Hamburger/Hamburger.js +0 -47
- package/Hamburger/index.d.ts +0 -1
- package/Hamburger/index.js +0 -1
- package/Header/index.d.ts +0 -1
- package/Header/index.js +0 -1
- package/Header/useHeader.d.ts +0 -20
- package/Header/useHeader.js +0 -32
- package/Hidden/Hidden.d.ts +0 -6
- package/Hidden/Hidden.js +0 -10
- package/Hidden/index.d.ts +0 -1
- package/Hidden/index.js +0 -1
- package/Img/index.d.ts +0 -1
- package/Img/index.js +0 -1
- package/Img/sc/bare.d.ts +0 -2
- package/Img/sc/bare.js +0 -4
- package/Img/types.d.ts +0 -9
- package/Img/types.js +0 -1
- package/Link/Link.d.ts +0 -3
- package/Link/Link.js +0 -4
- package/Link/LinkBlank.d.ts +0 -5
- package/Link/LinkBlank.js +0 -15
- package/Link/index.d.ts +0 -2
- package/Link/index.js +0 -2
- package/Menu/Menu.d.ts +0 -1
- package/Menu/Menu.js +0 -4
- package/Menu/MenuMui.d.ts +0 -0
- package/Menu/MenuMui.js +0 -1
- package/Menu/index.d.ts +0 -1
- package/Menu/index.js +0 -1
- package/MenuItem/MenuItem.d.ts +0 -1
- package/MenuItem/MenuItem.js +0 -4
- package/MenuItem/MenuItemMui.d.ts +0 -0
- package/MenuItem/MenuItemMui.js +0 -1
- package/MenuItem/index.d.ts +0 -1
- package/MenuItem/index.js +0 -1
- package/MenuItem/useMenuItem.d.ts +0 -9
- package/MenuItem/useMenuItem.js +0 -42
- package/Meta.d.ts +0 -5
- package/Meta.js +0 -6
- package/NoJs.d.ts +0 -3
- package/NoJs.js +0 -7
- package/Pagination/PaginationNav.d.ts +0 -14
- package/Pagination/PaginationNav.js +0 -48
- package/Pagination/PaginationResults.d.ts +0 -3
- package/Pagination/PaginationResults.js +0 -11
- package/Pagination/index.d.ts +0 -2
- package/Pagination/index.js +0 -2
- package/Pill/Pill.d.ts +0 -5
- package/Pill/Pill.js +0 -7
- package/Pill/index.d.ts +0 -1
- package/Pill/index.js +0 -1
- package/Polymorphic.js +0 -1
- package/Progress/ProgressCircular.d.ts +0 -13
- package/Progress/ProgressCircular.js +0 -12
- package/Progress/ProgressLinear.d.ts +0 -15
- package/Progress/ProgressLinear.js +0 -21
- package/Progress/ProgressOverlay.d.ts +0 -4
- package/Progress/ProgressOverlay.js +0 -23
- package/Progress/index.d.ts +0 -3
- package/Progress/index.js +0 -3
- package/Rating/Rating.d.ts +0 -27
- package/Rating/Rating.js +0 -43
- package/Rating/index.d.ts +0 -8
- package/Rating/index.js +0 -45
- package/Select/SelectDownshift.d.ts +0 -5
- package/Select/SelectDownshift.js +0 -1
- package/Select/components.d.ts +0 -6
- package/Select/components.js +0 -12
- package/Select/index.d.ts +0 -2
- package/Select/index.js +0 -1
- package/Sidebar/Sidebar.d.ts +0 -3
- package/Sidebar/Sidebar.js +0 -23
- package/Sidebar/index.d.ts +0 -1
- package/Sidebar/index.js +0 -1
- package/Spacing/Spacing.d.ts +0 -17
- package/Spacing/Spacing.js +0 -32
- package/Spacing/index.d.ts +0 -1
- package/Spacing/index.js +0 -1
- package/Sticky/Sticky.d.ts +0 -2
- package/Sticky/Sticky.js +0 -1
- package/Sticky/StickyCss.d.ts +0 -5
- package/Sticky/StickyCss.js +0 -6
- package/Sticky/index.d.ts +0 -1
- package/Sticky/index.js +0 -1
- package/Tabs/TabsMui.d.ts +0 -84
- package/Tabs/TabsMui.js +0 -30
- package/Tabs/index.d.ts +0 -1
- package/Tabs/index.js +0 -1
- package/Tabs/sc/bare.d.ts +0 -0
- package/Tabs/sc/bare.js +0 -1
- package/Tabs/tw/bare.d.ts +0 -85
- package/Tabs/tw/bare.js +0 -17
- package/Tabs/tw/material.d.ts +0 -118
- package/Tabs/tw/material.js +0 -19
- package/Tabs/useTabs.d.ts +0 -21
- package/Tabs/useTabs.js +0 -44
- package/Typography/CopyPasteVisible.d.ts +0 -1
- package/Typography/CopyPasteVisible.js +0 -4
- package/Typography/Native.d.ts +0 -10
- package/Typography/Native.js +0 -14
- package/Typography/ReadMore.d.ts +0 -10
- package/Typography/ReadMore.js +0 -42
- package/Typography/TextLoop.d.ts +0 -16
- package/Typography/TextLoop.js +0 -45
- package/Typography/TypeStairs.d.ts +0 -6
- package/Typography/TypeStairs.js +0 -42
- package/Typography/index.d.ts +0 -5
- package/Typography/index.js +0 -5
- package/calendar/CalendarDaygridCell.js +0 -48
- package/calendar/CalendarDaygridNav.js +0 -24
- package/calendar/CalendarDaygridTable.js +0 -45
- package/calendar/CalendarLegend.js +0 -9
- package/calendar/calendar-api-google.js +0 -124
- package/calendar/index.d.ts +0 -6
- package/calendar/index.js +0 -6
- package/calendar/types.js +0 -1
- package/calendar/useCalendar.js +0 -176
- package/calendar/utils.js +0 -185
- package/classed.d.ts +0 -8
- package/classed.js +0 -43
- package/createUseMediaQueryWidth.js +0 -39
- package/css/index.d.ts +0 -1
- package/css/index.js +0 -1
- package/extendComponent.js +0 -9
- package/forms/antispam.js +0 -29
- package/forms/index.d.ts +0 -1
- package/forms/index.js +0 -1
- package/index.js +0 -24
- package/m/MotionProvider.d.ts +0 -6
- package/m/MotionProvider.js +0 -7
- package/m/index.d.ts +0 -1
- package/m/index.js +0 -1
- package/m/lite.d.ts +0 -2
- package/m/lite.js +0 -2
- package/m/max.d.ts +0 -2
- package/m/max.js +0 -2
- package/mergeRefs.d.ts +0 -2
- package/mergeRefs.js +0 -13
- package/sc/index.d.ts +0 -29
- package/sc/index.js +0 -29
- package/scm/index.d.ts +0 -28
- package/scm/index.js +0 -28
- package/shared/index.d.ts +0 -7
- package/shared/index.js +0 -7
- package/styles/Body.d.ts +0 -2
- package/styles/Body.js +0 -5
- package/styles/Global.d.ts +0 -2
- package/styles/Global.js +0 -5
- package/styles/index.d.ts +0 -7
- package/styles/index.js +0 -7
- package/styles/media.d.ts +0 -18
- package/styles/media.js +0 -75
- package/styles/spacing.d.ts +0 -12
- package/styles/spacing.js +0 -45
- package/styles/styled.d.ts +0 -8
- package/styles/styled.js +0 -9
- package/styles/theme--vanilla.d.ts +0 -17
- package/styles/theme--vanilla.js +0 -47
- package/styles/theme.d.ts +0 -53
- package/styles/theme.js +0 -30
- package/tw/index.d.ts +0 -1
- package/tw/index.js +0 -1
- package/twm/index.d.ts +0 -1
- package/twm/index.js +0 -1
- package/types.js +0 -1
- package/typings.d.ts +0 -6
- package/useAsyncFn.js +0 -33
- package/useDateLocale.d.ts +0 -3
- package/useDateLocale.js +0 -28
- package/useFirstMountState.d.ts +0 -2
- package/useFirstMountState.js +0 -10
- package/useFixedOffset.d.ts +0 -2
- package/useFixedOffset.js +0 -42
- package/useFocus.d.ts +0 -2
- package/useFocus.js +0 -9
- package/useInterval.d.ts +0 -2
- package/useInterval.js +0 -22
- package/useIsomorphicLayoutEffect.d.ts +0 -3
- package/useIsomorphicLayoutEffect.js +0 -6
- package/useKeyUp.d.ts +0 -2
- package/useKeyUp.js +0 -18
- package/useMeasure.js +0 -130
- package/useMountedState.d.ts +0 -2
- package/useMountedState.js +0 -13
- package/useNavigateAway.d.ts +0 -3
- package/useNavigateAway.js +0 -25
- package/usePrevious.d.ts +0 -2
- package/usePrevious.js +0 -10
- package/usePreviousRef.d.ts +0 -2
- package/usePreviousRef.js +0 -9
- package/useReveal.js +0 -43
- package/useScrollPosition.d.ts +0 -7
- package/useScrollPosition.js +0 -61
- package/useScrollThreshold.d.ts +0 -2
- package/useScrollThreshold.js +0 -27
- package/useScrollTo.d.ts +0 -2
- package/useScrollTo.js +0 -20
- package/useSmoothScroll.d.ts +0 -2
- package/useSmoothScroll.js +0 -32
- package/useSpinDelay.d.ts +0 -2
- package/useSpinDelay.js +0 -39
- package/useTraceUpdate.d.ts +0 -2
- package/useTraceUpdate.js +0 -19
- package/useUpdateEffect.d.ts +0 -3
- package/useUpdateEffect.js +0 -11
- package/useWindowSize.d.ts +0 -3
- package/useWindowSize.js +0 -20
- /package/{Polymorphic.d.ts → utils/Polymorphic.d.ts} +0 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @koine/react
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { KoineComponent, KoineComponentProps } from "../types
|
|
2
|
-
import type { CalendarView, CalendarViewDayProps, CalendarViewEvent, CalendarsMap } from "./types
|
|
3
|
-
import { UseCalendarReturn } from "./useCalendar
|
|
1
|
+
import type { KoineComponent, KoineComponentProps } from "../types";
|
|
2
|
+
import type { CalendarView, CalendarViewDayProps, CalendarViewEvent, CalendarsMap } from "./types";
|
|
3
|
+
import type { UseCalendarReturn } from "./useCalendar";
|
|
4
4
|
export type KoineCalendarDaygridCellProps = {
|
|
5
5
|
eventClicked?: UseCalendarReturn["eventClicked"];
|
|
6
6
|
setEventClicked: UseCalendarReturn["setEventClicked"];
|
|
@@ -32,4 +32,4 @@ export type CalendarDaygridCellComponents = {
|
|
|
32
32
|
CellEventStart?: KoineComponent;
|
|
33
33
|
};
|
|
34
34
|
export type CalendarDaygridCellProps = KoineComponentProps<KoineCalendarDaygridCellProps, CalendarDaygridCellComponents>;
|
|
35
|
-
export declare
|
|
35
|
+
export declare let CalendarDaygridCell: ({ eventClicked, setEventClicked, setEventHovered, view, maxEvents, events, calendarsMap, Cell, CellOverflow, CellEvent, CellEventBtn, CellEventTitle, CellEventStart, }: CalendarDaygridCellProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { KoineComponent, KoineComponentProps } from "../types
|
|
2
|
-
import type { CalendarRange, CalendarView } from "./types
|
|
1
|
+
import type { KoineComponent, KoineComponentProps } from "../types";
|
|
2
|
+
import type { CalendarRange, CalendarView } from "./types";
|
|
3
3
|
export type KoineCalendarDaygridNavProps = {
|
|
4
4
|
locale: string;
|
|
5
5
|
range: CalendarRange;
|
|
@@ -24,4 +24,4 @@ export type CalendarDaygridNavProps = KoineComponentProps<KoineCalendarDaygridNa
|
|
|
24
24
|
NavBtnViewMonth?: KoineComponent;
|
|
25
25
|
NavBtnViewWeek?: KoineComponent;
|
|
26
26
|
}>;
|
|
27
|
-
export declare
|
|
27
|
+
export declare let KoineCalendarDaygridNav: ({ range, view, todayInView, handlePrev, handleNext, handleToday, handleView, locale: localeCode, NavRoot, NavTitle, NavBtns, NavBtnPrev, NavBtnNext, NavBtnToday, NavBtnViewMonth, NavBtnViewWeek, }: CalendarDaygridNavProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { KoineComponent, KoineComponentProps } from "../types
|
|
2
|
-
import { CalendarDaygridCellComponents, CalendarDaygridCellProps } from "./CalendarDaygridCell
|
|
3
|
-
import type { CalendarEventsMap, CalendarRange, CalendarView, CalendarViewDayProps } from "./types
|
|
1
|
+
import type { KoineComponent, KoineComponentProps } from "../types";
|
|
2
|
+
import { CalendarDaygridCellComponents, CalendarDaygridCellProps } from "./CalendarDaygridCell";
|
|
3
|
+
import type { CalendarEventsMap, CalendarRange, CalendarView, CalendarViewDayProps } from "./types";
|
|
4
4
|
export type CalendarDaygridTableBodyCellProps = CalendarViewDayProps;
|
|
5
5
|
export type CalendarDaygridTableBodyCellDateProps = CalendarViewDayProps;
|
|
6
6
|
export type KoineCalendarDaygridTableProps = {
|
|
@@ -22,4 +22,4 @@ export type CalendarDaygridTableProps = KoineComponentProps<KoineCalendarDaygrid
|
|
|
22
22
|
TableBodyCellDate?: KoineComponent<CalendarDaygridTableBodyCellDateProps>;
|
|
23
23
|
TableBodyRow?: KoineComponent;
|
|
24
24
|
} & CalendarDaygridCellComponents>;
|
|
25
|
-
export declare
|
|
25
|
+
export declare let KoineCalendarDaygridTable: ({ locale: localeCode, handlePrev, handleNext, events, dayLabels, view, range, eventClicked, setEventClicked, eventHovered, setEventHovered, calendarsMap, maxEvents, Table, TableHead, TableHeadCell, TableBody, TableBodyRow, TableBodyCell, TableBodyCellDate, Cell, CellOverflow, CellEvent, CellEventBtn, CellEventTitle, CellEventStart, }: CalendarDaygridTableProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { KoineComponent, KoineComponentProps } from "../types
|
|
2
|
-
import type { CalendarsMap } from "./types
|
|
1
|
+
import type { KoineComponent, KoineComponentProps } from "../types";
|
|
2
|
+
import type { CalendarsMap } from "./types";
|
|
3
3
|
export type KoineCalendarLegendProps = {
|
|
4
4
|
toggleCalendarVisibility: (id: string) => void;
|
|
5
5
|
calendarsMap: CalendarsMap;
|
|
@@ -15,4 +15,4 @@ export type CalendarLegendProps = KoineComponentProps<KoineCalendarLegendProps,
|
|
|
15
15
|
LegendItemLabel?: KoineComponent;
|
|
16
16
|
LegendItemEvents?: KoineComponent;
|
|
17
17
|
}>;
|
|
18
|
-
export declare
|
|
18
|
+
export declare let KoineCalendarLegend: ({ calendarsMap, toggleCalendarVisibility, LegendItem, LegendItemStatus, LegendItemLabel, LegendItemEvents, }: CalendarLegendProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CalendarEventsMap, Calendars } from "./types
|
|
1
|
+
import type { CalendarEventsMap, Calendars } from "./types";
|
|
2
2
|
type GetCalendarsEventsFromGoogleOptions = {
|
|
3
3
|
apiKey?: string;
|
|
4
4
|
start: Date;
|
|
@@ -6,5 +6,5 @@ type GetCalendarsEventsFromGoogleOptions = {
|
|
|
6
6
|
timeZone?: string;
|
|
7
7
|
calendars: Calendars;
|
|
8
8
|
};
|
|
9
|
-
export declare
|
|
9
|
+
export declare let getCalendarsEventsFromGoogle: ({ calendars, ...options }: GetCalendarsEventsFromGoogleOptions) => Promise<CalendarEventsMap>;
|
|
10
10
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { KoineCalendarDaygridNavProps } from "./CalendarDaygridNav
|
|
2
|
-
import type { KoineCalendarDaygridTableProps } from "./CalendarDaygridTable
|
|
3
|
-
import type { KoineCalendarLegendProps } from "./CalendarLegend
|
|
4
|
-
import type { CalendarEvent, CalendarEventsMap, CalendarView, Calendars } from "./types
|
|
1
|
+
import type { KoineCalendarDaygridNavProps } from "./CalendarDaygridNav";
|
|
2
|
+
import type { KoineCalendarDaygridTableProps } from "./CalendarDaygridTable";
|
|
3
|
+
import type { KoineCalendarLegendProps } from "./CalendarLegend";
|
|
4
|
+
import type { CalendarEvent, CalendarEventsMap, CalendarView, Calendars } from "./types";
|
|
5
5
|
export type UseCalendarProps = {
|
|
6
6
|
locale: string;
|
|
7
7
|
calendars: Calendars;
|
|
@@ -23,7 +23,7 @@ export type CalendarsUpdateActionVisibility = {
|
|
|
23
23
|
payload: string | string[];
|
|
24
24
|
};
|
|
25
25
|
export type CalendarsUpdateAction = CalendarsUpdateActionEvents | CalendarsUpdateActionVisibility;
|
|
26
|
-
export declare
|
|
26
|
+
export declare let useCalendar: ({ locale, apiKey, calendars, events: initialEvents, start: initialStart, end: initialEnd, view: initialView, timeZone, onError, }: UseCalendarProps) => {
|
|
27
27
|
view: "month" | "week";
|
|
28
28
|
eventClicked: CalendarEvent | null;
|
|
29
29
|
setEventClicked: import("react").Dispatch<import("react").SetStateAction<CalendarEvent | null>>;
|
package/calendar/utils.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { CalendarEventsMap, CalendarView, CalendarViewWeeks } from "./types
|
|
2
|
-
export declare
|
|
3
|
-
export declare
|
|
4
|
-
export declare
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
7
|
-
export declare
|
|
8
|
-
export declare
|
|
9
|
-
export declare
|
|
10
|
-
export declare
|
|
11
|
-
export declare
|
|
1
|
+
import type { CalendarEventsMap, CalendarView, CalendarViewWeeks } from "./types";
|
|
2
|
+
export declare let getEventTimestamp: (dateLike: number | Date | string) => number;
|
|
3
|
+
export declare let getDisplayTime: (date: Date) => string;
|
|
4
|
+
export declare let getStartDate: (date: Date, view: CalendarView) => Date;
|
|
5
|
+
export declare let getEndDate: (start: Date, view: CalendarView) => Date;
|
|
6
|
+
export declare let getPrevDate: (date: Date, view: CalendarView) => Date;
|
|
7
|
+
export declare let getNextDate: (date: Date, view: CalendarView) => Date;
|
|
8
|
+
export declare let isTodayInView: (start: Date, end: Date) => boolean;
|
|
9
|
+
export declare let mergeCalendarEvents: (first: CalendarEventsMap, second: CalendarEventsMap) => CalendarEventsMap;
|
|
10
|
+
export declare let addCalendarEvents: (toAdd: CalendarEventsMap, toExtend: CalendarEventsMap) => CalendarEventsMap;
|
|
11
|
+
export declare let processEventsInView: (eventsMap: CalendarEventsMap, calendarView: CalendarView, month: number, weeks: Date[]) => CalendarViewWeeks;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./calendar";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./calendar.cjs.js').default;
|
package/calendar.cjs.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var addDays = require('date-fns/addDays');
|
|
8
|
+
var addMonths = require('date-fns/addMonths');
|
|
9
|
+
var addWeeks = require('date-fns/addWeeks');
|
|
10
|
+
var endOfMonth = require('date-fns/endOfMonth');
|
|
11
|
+
var endOfWeek = require('date-fns/endOfWeek');
|
|
12
|
+
var isWithinInterval = require('date-fns/isWithinInterval');
|
|
13
|
+
var startOfWeek = require('date-fns/startOfWeek');
|
|
14
|
+
var subMonths = require('date-fns/subMonths');
|
|
15
|
+
var subWeeks = require('date-fns/subWeeks');
|
|
16
|
+
var format = require('date-fns/format');
|
|
17
|
+
var eachWeekOfInterval = require('date-fns/eachWeekOfInterval');
|
|
18
|
+
var reactSwipeable = require('react-swipeable');
|
|
19
|
+
var differenceInDays = require('date-fns/differenceInDays');
|
|
20
|
+
var subDays = require('date-fns/subDays');
|
|
21
|
+
var utils = require('@koine/utils');
|
|
22
|
+
|
|
23
|
+
function _interopNamespace(e) {
|
|
24
|
+
if (e && e.__esModule) return e;
|
|
25
|
+
var n = Object.create(null);
|
|
26
|
+
if (e) {
|
|
27
|
+
Object.keys(e).forEach(function (k) {
|
|
28
|
+
if (k !== 'default') {
|
|
29
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
30
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () { return e[k]; }
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
n["default"] = e;
|
|
38
|
+
return Object.freeze(n);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let getEventTimestamp=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.valueOf()/1e3};let getDisplayTime=e=>e.getHours()+":"+"0".repeat(2-e.getMinutes().toString().length)+e.getMinutes();let getStartDate=(e,t)=>(e.setHours(0,0,0),"month"===t?e.setDate(1):"week"===t&&(e=startOfWeek.startOfWeek(e,{weekStartsOn:1})),e);let getEndDate=(e,t)=>{let r=e;return "month"===t?r=endOfMonth.endOfMonth(e):"week"===t&&(r=endOfWeek.endOfWeek(e,{weekStartsOn:1})),r.setHours(23,59,59),r};let getPrevDate=(e,t)=>"month"===t?subMonths.subMonths(e,1):subWeeks.subWeeks(e,1);let getNextDate=(e,a)=>"month"===a?addMonths.addMonths(e,1):addWeeks.addWeeks(e,1);let isTodayInView=(e,t)=>isWithinInterval.isWithinInterval(new Date,{start:e,end:t});let addCalendarEvents=(e,t)=>{for(let r in e){let a=e[r];t[r]=a;}return t};let i=e=>{let t={};for(let r in e){let a=e[r];a.days.forEach(e=>{t[e]=t[e]||{},t[e][r]=a;});}return t},d$1=e=>{let t=[];for(let r in e)t.push(e[r]);return t.sort((e,t)=>{let r=Number(t.multi)-Number(e.multi),a=Number(t.allDay)-Number(e.allDay),n=e.start.getTime()-t.start.getTime(),s=e.created.getTime()-t.created.getTime();return r||a||n||s}),t};let processEventsInView=(t,r,a,n)=>{let s=i(t),o=d$1(t),l=new Date,m=getEventTimestamp(l),p={},f=[];for(let t=0;t<n.length;t++){let i={props:{key:`week.${t}`},days:[]},d=n[t],u=d.getDate(),g=getEventTimestamp(new Date(d)),h=getEventTimestamp(addDays.addDays(new Date(d),6));for(let e=0;e<7;e++){let t=new Date(new Date(d).setDate(u+e)),n=getEventTimestamp(t),f={$isToday:m===n,$isOutOfRange:"month"===r&&t.getMonth()!==a},v={props:{key:`day.${n}`,...f},timestamp:n+"",label:t.getDate()+"",events:[]};if(s?.[n]){let t=Object.keys(s[n]).map(()=>0);for(let r=0;r<o.length;r++){let a;let s=o[r],m=1,i=0;if(s.daysMap[n]){if(s.multi&&(m=s.days.filter(e=>e>=g&&e<=h).length,(0===s.days.indexOf(n)||0===e)&&(a=!0)),p[s.uid])i=p[s.uid];else for(let e=0;e<t.length;e++)if(1!==t[e]){i=e;break}t[i]=1,a&&(p[s.uid]=i),v.events.push({key:`event.${n}-${i}`,...f,...s,isPast:l>s.end,firstOfMulti:a,top:i,width:m});}}for(let e=0;e<t.length;e++)1!==t[e]&&v.events.push({key:`event.${n}-${e}}`,placeholder:!0,top:e});v.events.sort((e,t)=>e.top-t.top);}i.days.push(v);}f.push(i);}return f};
|
|
42
|
+
|
|
43
|
+
let d=l=>jsxRuntime.jsxs("svg",{viewBox:"0 0 24 24",fill:"currentColor",stroke:"none",...l,children:[jsxRuntime.jsx("path",{d:"M0 0h24v24H0z"}),jsxRuntime.jsx("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})]}),o$1={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"};let CalendarDaygridCell=({eventClicked:a,setEventClicked:s,setEventHovered:h,view:c,maxEvents:u,events:p,calendarsMap:v,Cell:f="div",CellOverflow:y="div",CellEvent:$="div",CellEventBtn:m="div",CellEventTitle:w="span",CellEventStart:g="span"})=>{let[x,M]=react.useState(!1),O=p.filter(e=>!e.placeholder);return jsxRuntime.jsx(f,{children:p.map((t,p)=>{if(p===u&&!x)return jsxRuntime.jsxs(y,{onClick:()=>M(!0),children:[jsxRuntime.jsx(d,{}),O.length-u]},"overflowMessage"+p);if(p>u&&!x)return null;if(t.placeholder)return jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx($,{$placeholder:!0,children:jsxRuntime.jsx(m,{"aria-hidden":"true",style:{visibility:"hidden"},$placeholder:!0,children:jsxRuntime.jsx(w,{children:" "})})})},t.key);let f={zIndex:t.firstOfMulti?1:0,position:"relative",width:t.firstOfMulti?`${100*t.width}%`:"100%"};v[t.calendar.id].on||(o$1.display="none");let k={$view:c,$selected:a?.uid===t.uid,$past:t.isPast,$color:t.color,$isOutOfRange:t.$isOutOfRange,$isToday:t.$isToday};return jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx($,{style:f,...k,children:jsxRuntime.jsx(m,{role:"button",style:o$1,...k,onClick:()=>s(e=>e?.uid===t.uid?null:t),onMouseEnter:()=>h(t),onMouseLeave:()=>h(null),children:t.allDay?jsxRuntime.jsx(w,{children:t.title}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(g,{children:getDisplayTime(t.start)}),jsxRuntime.jsx(w,{children:t.title})]})})})},t.key)})})};
|
|
44
|
+
|
|
45
|
+
let useDateLocale=(a,l="en")=>{let[r,n]=react.useState(),[o,c]=react.useState(l);return react.useEffect(()=>{let e=async()=>{let e=await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('date-fns/locale/en-US')); });c(a||o),n(e.enUS);};a!==o&&e();},[a,o]),r};
|
|
46
|
+
|
|
47
|
+
let KoineCalendarDaygridNav=({range:a,view:l,todayInView:r,handlePrev:i,handleNext:M,handleToday:d,handleView:y,locale:c,NavRoot:m="nav",NavTitle:s="div",NavBtns:b="div",NavBtnPrev:k="button",NavBtnNext:u="button",NavBtnToday:h="button",NavBtnViewMonth:f="button",NavBtnViewWeek:g="button"})=>{let[C,p]=a,v={locale:useDateLocale(c)},x="";return "month"===l&&(x=format.format(C,"MMMM yyyy",v)),"week"===l&&(x=C.getMonth()===p.getMonth()?format.format(C,"# MMMM yyyy",v).replace("#",`${C.getDate()}-${p.getDate()}`):`${format.format(C,"d MMMM",v)} - ${format.format(p,"d MMMM yyyy",v)}`),jsxRuntime.jsxs(m,{children:[jsxRuntime.jsxs(b,{children:[jsxRuntime.jsx(k,{onClick:i}),jsxRuntime.jsx(u,{onClick:M}),jsxRuntime.jsx(h,{onClick:d,disabled:r}),jsxRuntime.jsx(f,{onClick:()=>y("month"),disabled:"month"===l}),jsxRuntime.jsx(g,{onClick:()=>y("week"),disabled:"week"===l})]}),jsxRuntime.jsx(s,{range:a,formatted:x})]})};
|
|
48
|
+
|
|
49
|
+
let KoineCalendarDaygridTable=({locale:d,handlePrev:s,handleNext:c,events:h,dayLabels:f,view:b,range:u,eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,calendarsMap:x={},maxEvents:j=5,Table:C="table",TableHead:D="thead",TableHeadCell:S="th",TableBody:k="tbody",TableBodyRow:z="tr",TableBodyCell:L="td",TableBodyCellDate:O="div",Cell:I,CellOverflow:K,CellEvent:M,CellEventBtn:R,CellEventTitle:T,CellEventStart:W})=>{let q={Cell:I,CellOverflow:K,CellEvent:M,CellEventBtn:R,CellEventTitle:T,CellEventStart:W},[A,B]=react.useState(f||[0,1,2,3,4,5,6]),[E,F]=react.useState([]),G=useDateLocale(d),{month:H,weeks:J}=react.useMemo(()=>(function(e){let[t,a]=e,i=eachWeekOfInterval.eachWeekOfInterval({start:t,end:a},{weekStartsOn:1});return {month:t.getMonth(),weeks:i}})(u),[u]),N=reactSwipeable.useSwipeable({onSwipedLeft:c,onSwipedRight:s});return react.useEffect(()=>{F(processEventsInView(h,b,H,J));},[h,b,H,J]),react.useEffect(()=>{G&&G.localize&&!f&&B([1,2,3,4,5,6,0].map(e=>G.localize.day(e,{width:"abbreviated"})));},[G,f]),jsxRuntime.jsxs(C,{...N,children:[jsxRuntime.jsx(D,{children:jsxRuntime.jsx("tr",{children:A.map(t=>jsxRuntime.jsx(S,{scope:"column",children:t},t))})}),jsxRuntime.jsx(k,{children:E.map((r,a)=>jsxRuntime.jsx(z,{...r.props,children:r.days.map(r=>jsxRuntime.jsxs(L,{...r.props,children:[jsxRuntime.jsx(O,{...r.props,children:r.label}),r.events.length>0&&jsxRuntime.jsx(CalendarDaygridCell,{eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,view:b,maxEvents:j,events:r.events,timestamp:r.timestamp,calendarsMap:x,...q})]}))}))})]})};
|
|
50
|
+
|
|
51
|
+
let KoineCalendarLegend=({calendarsMap:a={},toggleCalendarVisibility:s,LegendItem:d="div",LegendItemStatus:i="span",LegendItemLabel:l="span",LegendItemEvents:t="span"})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:Object.entries(a).map(([r,a])=>jsxRuntime.jsxs(d,{onClick:()=>s(r),$color:a.color,$empty:0===a.events,disabled:0===a.events,children:[jsxRuntime.jsx(i,{children:a.on?"⬤":"⭘"}),jsxRuntime.jsx(l,{children:a.name}),jsxRuntime.jsx(t,{children:a.events})]},"CalendarLegend."+r))});
|
|
52
|
+
|
|
53
|
+
let getCalendarsEventsFromGoogle=async({calendars:e,...t})=>{let a={};return await Promise.all(e.map(async e=>{addCalendarEvents(await o({calendar:e,...t}),a);})),a};async function o({apiKey:i,calendar:o,timeZone:m="",start:d,end:l}){let c={},u=new URLSearchParams({calendarId:o.id,timeZone:m,singleEvents:"true",maxAttendees:"1",maxResults:"9999",sanitizeHtml:"true",timeMin:d.toISOString(),timeMax:l.toISOString(),key:i||process.env.GOOGLE_CALENDAR_API_KEY||""}).toString(),f="https://www.googleapis.com/calendar/v3/calendars/"+o.id+"/events?"+u;try{let i=await fetch(f,{method:"GET"}),m=await i.json();o.name=o.name||m.summary,m.items.forEach(i=>{let m=function(i,o){let m=new Date(i.created),d=i.htmlLink,l=i.summary,c=i.status,u=new Date(i.start.date||i.start.dateTime),f=new Date(i.end.date||i.end.dateTime),w=o.color,g=utils.isUndefined(i.end.dateTime)&&utils.isString(i.end.date),p=i.location||"",D=i.description||"",h=m.getTime()+""+u.getTime();g&&f>u&&(f=subDays.subDays(f,1)).setHours(23,59,59);let y=function(){let t=new Date(u),a=new Date(f),n=[getEventTimestamp(t)];for(;differenceInDays.differenceInDays(a,t);)t.setDate(t.getDate()+1),n.push(getEventTimestamp(t));return n}(),E=utils.arrayToLookup(y),S=y.length>1;return {calendar:o,created:m,link:d,title:l,status:c,start:u,end:f,days:y,daysMap:E,multi:S,color:w,allDay:g,location:p,description:D,uid:h}}(i,o);c[m.uid]=m;});}catch(e){}return c}
|
|
54
|
+
|
|
55
|
+
let useCalendar=({locale:d,apiKey:c,calendars:p,events:g,start:m,end:y,view:v="month",timeZone:f="",onError:b})=>{let[w,T]=react.useState(v),D=m||getStartDate(new Date,w),h=y||getEndDate(D,w),[O,P]=react.useState([D,h]),[j,x]=react.useState(isTodayInView(D,h)),[C,L]=react.useState(g||{}),[N,k]=react.useState(null),[q,z]=react.useState(null),[A,B]=react.useReducer((e,t)=>{let{type:l}=t;switch(l){case"events":{let l=t.payload;return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,events:l[t]||0},e),{})}case"visibility":{let l=t.payload;if("string"==typeof l)return {...e,[l]:{...e[l],on:!e[l].on}};return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,on:l.indexOf(t)>-1},e),{})}default:return e}},p.reduce((e,t)=>(e[t.id]={...t,name:t.name||"",on:!0,events:0},e),{})),E=react.useCallback(e=>{B({type:"visibility",payload:e});},[B]),F=react.useCallback(e=>{let t={};for(let l in e){let{id:n}=e[l].calendar;t[n]=t[n]||0,t[n]++;}B({type:"events",payload:t});},[]),G=react.useCallback(async(e,t,l)=>{try{let n=await getCalendarsEventsFromGoogle({apiKey:c,calendars:e,timeZone:f,start:t,end:l});L(n);}catch(e){b&&b(e);}},[L,c,f,b]),H=react.useCallback(()=>{let[e,t]=O,l=getStartDate(new Date,w),n=getEndDate(l,w);P([l,n]),(e.getTime()!==l.getTime()||t.getTime()!==n.getTime())&&(z(null),k(null));},[w,O]),I=react.useCallback(()=>{P(([e])=>{let t=getPrevDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),J=react.useCallback(()=>{P(([e])=>{let t=getNextDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),K=react.useCallback(e=>{let t=getStartDate(D,e),l=getEndDate(t,e);P([t,l]),T(e),z(null),k(null);},[D]);return react.useEffect(()=>{let[e,t]=O;G(p,e,t),x(isTodayInView(e,t));},[O]),react.useEffect(()=>{C&&F(C);},[C,F]),react.useEffect(()=>{q&&!A[q.calendar.id].on&&z(null);},[A,q,z]),{view:w,eventClicked:q,setEventClicked:z,eventHovered:N,setEventHovered:k,getDaygridNavProps:()=>({locale:d,handlePrev:I,handleNext:J,handleToday:H,handleView:K,todayInView:j,range:O,view:w}),getDaygridTableProps:()=>({locale:d,events:C,eventClicked:q,setEventClicked:z,eventHovered:N,setEventHovered:k,handlePrev:I,handleNext:J,calendarsMap:A,range:O,view:w}),getLegendProps:()=>({calendarsMap:A,toggleCalendarVisibility:E})}};
|
|
56
|
+
|
|
57
|
+
exports.CalendarDaygridCell = CalendarDaygridCell;
|
|
58
|
+
exports.KoineCalendarDaygridNav = KoineCalendarDaygridNav;
|
|
59
|
+
exports.KoineCalendarDaygridTable = KoineCalendarDaygridTable;
|
|
60
|
+
exports.KoineCalendarLegend = KoineCalendarLegend;
|
|
61
|
+
exports.useCalendar = useCalendar;
|
|
62
|
+
exports.useDateLocale = useDateLocale;
|
package/calendar.cjs.mjs
ADDED
package/calendar.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "./calendar/CalendarDaygridCell";
|
|
2
|
+
export * from "./calendar/CalendarDaygridNav";
|
|
3
|
+
export * from "./calendar/CalendarDaygridTable";
|
|
4
|
+
export * from "./calendar/CalendarLegend";
|
|
5
|
+
export * from "./calendar/useCalendar";
|
|
6
|
+
export * from "./calendar/useDateLocale";
|
|
7
|
+
export * from "./calendar/types";
|
package/calendar.esm.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, Fragment, useEffect, useMemo, useReducer, useCallback } from 'react';
|
|
3
|
+
import { addDays } from 'date-fns/addDays';
|
|
4
|
+
import { addMonths } from 'date-fns/addMonths';
|
|
5
|
+
import { addWeeks } from 'date-fns/addWeeks';
|
|
6
|
+
import { endOfMonth } from 'date-fns/endOfMonth';
|
|
7
|
+
import { endOfWeek } from 'date-fns/endOfWeek';
|
|
8
|
+
import { isWithinInterval } from 'date-fns/isWithinInterval';
|
|
9
|
+
import { startOfWeek } from 'date-fns/startOfWeek';
|
|
10
|
+
import { subMonths } from 'date-fns/subMonths';
|
|
11
|
+
import { subWeeks } from 'date-fns/subWeeks';
|
|
12
|
+
import { format } from 'date-fns/format';
|
|
13
|
+
import { eachWeekOfInterval } from 'date-fns/eachWeekOfInterval';
|
|
14
|
+
import { useSwipeable } from 'react-swipeable';
|
|
15
|
+
import { differenceInDays } from 'date-fns/differenceInDays';
|
|
16
|
+
import { subDays } from 'date-fns/subDays';
|
|
17
|
+
import { isUndefined, isString, arrayToLookup } from '@koine/utils';
|
|
18
|
+
|
|
19
|
+
let getEventTimestamp=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.valueOf()/1e3};let getDisplayTime=e=>e.getHours()+":"+"0".repeat(2-e.getMinutes().toString().length)+e.getMinutes();let getStartDate=(e,t)=>(e.setHours(0,0,0),"month"===t?e.setDate(1):"week"===t&&(e=startOfWeek(e,{weekStartsOn:1})),e);let getEndDate=(e,t)=>{let r=e;return "month"===t?r=endOfMonth(e):"week"===t&&(r=endOfWeek(e,{weekStartsOn:1})),r.setHours(23,59,59),r};let getPrevDate=(e,t)=>"month"===t?subMonths(e,1):subWeeks(e,1);let getNextDate=(e,a)=>"month"===a?addMonths(e,1):addWeeks(e,1);let isTodayInView=(e,t)=>isWithinInterval(new Date,{start:e,end:t});let addCalendarEvents=(e,t)=>{for(let r in e){let a=e[r];t[r]=a;}return t};let i=e=>{let t={};for(let r in e){let a=e[r];a.days.forEach(e=>{t[e]=t[e]||{},t[e][r]=a;});}return t},d$1=e=>{let t=[];for(let r in e)t.push(e[r]);return t.sort((e,t)=>{let r=Number(t.multi)-Number(e.multi),a=Number(t.allDay)-Number(e.allDay),n=e.start.getTime()-t.start.getTime(),s=e.created.getTime()-t.created.getTime();return r||a||n||s}),t};let processEventsInView=(t,r,a,n)=>{let s=i(t),o=d$1(t),l=new Date,m=getEventTimestamp(l),p={},f=[];for(let t=0;t<n.length;t++){let i={props:{key:`week.${t}`},days:[]},d=n[t],u=d.getDate(),g=getEventTimestamp(new Date(d)),h=getEventTimestamp(addDays(new Date(d),6));for(let e=0;e<7;e++){let t=new Date(new Date(d).setDate(u+e)),n=getEventTimestamp(t),f={$isToday:m===n,$isOutOfRange:"month"===r&&t.getMonth()!==a},v={props:{key:`day.${n}`,...f},timestamp:n+"",label:t.getDate()+"",events:[]};if(s?.[n]){let t=Object.keys(s[n]).map(()=>0);for(let r=0;r<o.length;r++){let a;let s=o[r],m=1,i=0;if(s.daysMap[n]){if(s.multi&&(m=s.days.filter(e=>e>=g&&e<=h).length,(0===s.days.indexOf(n)||0===e)&&(a=!0)),p[s.uid])i=p[s.uid];else for(let e=0;e<t.length;e++)if(1!==t[e]){i=e;break}t[i]=1,a&&(p[s.uid]=i),v.events.push({key:`event.${n}-${i}`,...f,...s,isPast:l>s.end,firstOfMulti:a,top:i,width:m});}}for(let e=0;e<t.length;e++)1!==t[e]&&v.events.push({key:`event.${n}-${e}}`,placeholder:!0,top:e});v.events.sort((e,t)=>e.top-t.top);}i.days.push(v);}f.push(i);}return f};
|
|
20
|
+
|
|
21
|
+
let d=l=>jsxs("svg",{viewBox:"0 0 24 24",fill:"currentColor",stroke:"none",...l,children:[jsx("path",{d:"M0 0h24v24H0z"}),jsx("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})]}),o$1={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"};let CalendarDaygridCell=({eventClicked:a,setEventClicked:s,setEventHovered:h,view:c,maxEvents:u,events:p,calendarsMap:v,Cell:f="div",CellOverflow:y="div",CellEvent:$="div",CellEventBtn:m="div",CellEventTitle:w="span",CellEventStart:g="span"})=>{let[x,M]=useState(!1),O=p.filter(e=>!e.placeholder);return jsx(f,{children:p.map((t,p)=>{if(p===u&&!x)return jsxs(y,{onClick:()=>M(!0),children:[jsx(d,{}),O.length-u]},"overflowMessage"+p);if(p>u&&!x)return null;if(t.placeholder)return jsx(Fragment,{children:jsx($,{$placeholder:!0,children:jsx(m,{"aria-hidden":"true",style:{visibility:"hidden"},$placeholder:!0,children:jsx(w,{children:" "})})})},t.key);let f={zIndex:t.firstOfMulti?1:0,position:"relative",width:t.firstOfMulti?`${100*t.width}%`:"100%"};v[t.calendar.id].on||(o$1.display="none");let k={$view:c,$selected:a?.uid===t.uid,$past:t.isPast,$color:t.color,$isOutOfRange:t.$isOutOfRange,$isToday:t.$isToday};return jsx(Fragment,{children:jsx($,{style:f,...k,children:jsx(m,{role:"button",style:o$1,...k,onClick:()=>s(e=>e?.uid===t.uid?null:t),onMouseEnter:()=>h(t),onMouseLeave:()=>h(null),children:t.allDay?jsx(w,{children:t.title}):jsxs(Fragment$1,{children:[jsx(g,{children:getDisplayTime(t.start)}),jsx(w,{children:t.title})]})})})},t.key)})})};
|
|
22
|
+
|
|
23
|
+
let useDateLocale=(a,l="en")=>{let[r,n]=useState(),[o,c]=useState(l);return useEffect(()=>{let e=async()=>{let e=await import('date-fns/locale/en-US');c(a||o),n(e.enUS);};a!==o&&e();},[a,o]),r};
|
|
24
|
+
|
|
25
|
+
let KoineCalendarDaygridNav=({range:a,view:l,todayInView:r,handlePrev:i,handleNext:M,handleToday:d,handleView:y,locale:c,NavRoot:m="nav",NavTitle:s="div",NavBtns:b="div",NavBtnPrev:k="button",NavBtnNext:u="button",NavBtnToday:h="button",NavBtnViewMonth:f="button",NavBtnViewWeek:g="button"})=>{let[C,p]=a,v={locale:useDateLocale(c)},x="";return "month"===l&&(x=format(C,"MMMM yyyy",v)),"week"===l&&(x=C.getMonth()===p.getMonth()?format(C,"# MMMM yyyy",v).replace("#",`${C.getDate()}-${p.getDate()}`):`${format(C,"d MMMM",v)} - ${format(p,"d MMMM yyyy",v)}`),jsxs(m,{children:[jsxs(b,{children:[jsx(k,{onClick:i}),jsx(u,{onClick:M}),jsx(h,{onClick:d,disabled:r}),jsx(f,{onClick:()=>y("month"),disabled:"month"===l}),jsx(g,{onClick:()=>y("week"),disabled:"week"===l})]}),jsx(s,{range:a,formatted:x})]})};
|
|
26
|
+
|
|
27
|
+
let KoineCalendarDaygridTable=({locale:d,handlePrev:s,handleNext:c,events:h,dayLabels:f,view:b,range:u,eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,calendarsMap:x={},maxEvents:j=5,Table:C="table",TableHead:D="thead",TableHeadCell:S="th",TableBody:k="tbody",TableBodyRow:z="tr",TableBodyCell:L="td",TableBodyCellDate:O="div",Cell:I,CellOverflow:K,CellEvent:M,CellEventBtn:R,CellEventTitle:T,CellEventStart:W})=>{let q={Cell:I,CellOverflow:K,CellEvent:M,CellEventBtn:R,CellEventTitle:T,CellEventStart:W},[A,B]=useState(f||[0,1,2,3,4,5,6]),[E,F]=useState([]),G=useDateLocale(d),{month:H,weeks:J}=useMemo(()=>(function(e){let[t,a]=e,i=eachWeekOfInterval({start:t,end:a},{weekStartsOn:1});return {month:t.getMonth(),weeks:i}})(u),[u]),N=useSwipeable({onSwipedLeft:c,onSwipedRight:s});return useEffect(()=>{F(processEventsInView(h,b,H,J));},[h,b,H,J]),useEffect(()=>{G&&G.localize&&!f&&B([1,2,3,4,5,6,0].map(e=>G.localize.day(e,{width:"abbreviated"})));},[G,f]),jsxs(C,{...N,children:[jsx(D,{children:jsx("tr",{children:A.map(t=>jsx(S,{scope:"column",children:t},t))})}),jsx(k,{children:E.map((r,a)=>jsx(z,{...r.props,children:r.days.map(r=>jsxs(L,{...r.props,children:[jsx(O,{...r.props,children:r.label}),r.events.length>0&&jsx(CalendarDaygridCell,{eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,view:b,maxEvents:j,events:r.events,timestamp:r.timestamp,calendarsMap:x,...q})]}))}))})]})};
|
|
28
|
+
|
|
29
|
+
let KoineCalendarLegend=({calendarsMap:a={},toggleCalendarVisibility:s,LegendItem:d="div",LegendItemStatus:i="span",LegendItemLabel:l="span",LegendItemEvents:t="span"})=>jsx(Fragment$1,{children:Object.entries(a).map(([r,a])=>jsxs(d,{onClick:()=>s(r),$color:a.color,$empty:0===a.events,disabled:0===a.events,children:[jsx(i,{children:a.on?"⬤":"⭘"}),jsx(l,{children:a.name}),jsx(t,{children:a.events})]},"CalendarLegend."+r))});
|
|
30
|
+
|
|
31
|
+
let getCalendarsEventsFromGoogle=async({calendars:e,...t})=>{let a={};return await Promise.all(e.map(async e=>{addCalendarEvents(await o({calendar:e,...t}),a);})),a};async function o({apiKey:i,calendar:o,timeZone:m="",start:d,end:l}){let c={},u=new URLSearchParams({calendarId:o.id,timeZone:m,singleEvents:"true",maxAttendees:"1",maxResults:"9999",sanitizeHtml:"true",timeMin:d.toISOString(),timeMax:l.toISOString(),key:i||process.env.GOOGLE_CALENDAR_API_KEY||""}).toString(),f="https://www.googleapis.com/calendar/v3/calendars/"+o.id+"/events?"+u;try{let i=await fetch(f,{method:"GET"}),m=await i.json();o.name=o.name||m.summary,m.items.forEach(i=>{let m=function(i,o){let m=new Date(i.created),d=i.htmlLink,l=i.summary,c=i.status,u=new Date(i.start.date||i.start.dateTime),f=new Date(i.end.date||i.end.dateTime),w=o.color,g=isUndefined(i.end.dateTime)&&isString(i.end.date),p=i.location||"",D=i.description||"",h=m.getTime()+""+u.getTime();g&&f>u&&(f=subDays(f,1)).setHours(23,59,59);let y=function(){let t=new Date(u),a=new Date(f),n=[getEventTimestamp(t)];for(;differenceInDays(a,t);)t.setDate(t.getDate()+1),n.push(getEventTimestamp(t));return n}(),E=arrayToLookup(y),S=y.length>1;return {calendar:o,created:m,link:d,title:l,status:c,start:u,end:f,days:y,daysMap:E,multi:S,color:w,allDay:g,location:p,description:D,uid:h}}(i,o);c[m.uid]=m;});}catch(e){}return c}
|
|
32
|
+
|
|
33
|
+
let useCalendar=({locale:d,apiKey:c,calendars:p,events:g,start:m,end:y,view:v="month",timeZone:f="",onError:b})=>{let[w,T]=useState(v),D=m||getStartDate(new Date,w),h=y||getEndDate(D,w),[O,P]=useState([D,h]),[j,x]=useState(isTodayInView(D,h)),[C,L]=useState(g||{}),[N,k]=useState(null),[q,z]=useState(null),[A,B]=useReducer((e,t)=>{let{type:l}=t;switch(l){case"events":{let l=t.payload;return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,events:l[t]||0},e),{})}case"visibility":{let l=t.payload;if("string"==typeof l)return {...e,[l]:{...e[l],on:!e[l].on}};return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,on:l.indexOf(t)>-1},e),{})}default:return e}},p.reduce((e,t)=>(e[t.id]={...t,name:t.name||"",on:!0,events:0},e),{})),E=useCallback(e=>{B({type:"visibility",payload:e});},[B]),F=useCallback(e=>{let t={};for(let l in e){let{id:n}=e[l].calendar;t[n]=t[n]||0,t[n]++;}B({type:"events",payload:t});},[]),G=useCallback(async(e,t,l)=>{try{let n=await getCalendarsEventsFromGoogle({apiKey:c,calendars:e,timeZone:f,start:t,end:l});L(n);}catch(e){b&&b(e);}},[L,c,f,b]),H=useCallback(()=>{let[e,t]=O,l=getStartDate(new Date,w),n=getEndDate(l,w);P([l,n]),(e.getTime()!==l.getTime()||t.getTime()!==n.getTime())&&(z(null),k(null));},[w,O]),I=useCallback(()=>{P(([e])=>{let t=getPrevDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),J=useCallback(()=>{P(([e])=>{let t=getNextDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),K=useCallback(e=>{let t=getStartDate(D,e),l=getEndDate(t,e);P([t,l]),T(e),z(null),k(null);},[D]);return useEffect(()=>{let[e,t]=O;G(p,e,t),x(isTodayInView(e,t));},[O]),useEffect(()=>{C&&F(C);},[C,F]),useEffect(()=>{q&&!A[q.calendar.id].on&&z(null);},[A,q,z]),{view:w,eventClicked:q,setEventClicked:z,eventHovered:N,setEventHovered:k,getDaygridNavProps:()=>({locale:d,handlePrev:I,handleNext:J,handleToday:H,handleView:K,todayInView:j,range:O,view:w}),getDaygridTableProps:()=>({locale:d,events:C,eventClicked:q,setEventClicked:z,eventHovered:N,setEventHovered:k,handlePrev:I,handleNext:J,calendarsMap:A,range:O,view:w}),getLegendProps:()=>({calendarsMap:A,toggleCalendarVisibility:E})}};
|
|
34
|
+
|
|
35
|
+
export { CalendarDaygridCell, KoineCalendarDaygridNav, KoineCalendarDaygridTable, KoineCalendarLegend, useCalendar, useDateLocale };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type FaviconTagsProps = {
|
|
2
|
+
name: string;
|
|
3
|
+
color?: string;
|
|
4
|
+
safariTabColor?: string;
|
|
5
|
+
tileColor?: string;
|
|
6
|
+
themeColor?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare let FaviconTags: ({ name, color, safariTabColor, tileColor, themeColor, }: FaviconTagsProps) => import("react/jsx-runtime").JSX.Element;
|
package/forms/antispam.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ObjectShape } from "@kuus/yup";
|
|
2
|
-
export declare
|
|
2
|
+
export declare let encodeForm: <T extends ObjectShape = {}>(validationRules: T) => {
|
|
3
3
|
encodedSchema: import("@kuus/yup").ObjectSchema<{
|
|
4
4
|
[x: string]: T[keyof T] extends import("@kuus/yup").ISchema<any, any, any, any> ? T[keyof T]["__outputType"] : T[keyof T] extends {
|
|
5
5
|
readonly key: string;
|
|
@@ -8,20 +8,20 @@ export declare function encodeForm<T extends ObjectShape = {}>(validationRules:
|
|
|
8
8
|
readonly isSibling: boolean;
|
|
9
9
|
readonly path: any;
|
|
10
10
|
readonly getter: (data: unknown) => unknown;
|
|
11
|
-
readonly map?: ((value: unknown) => infer
|
|
11
|
+
readonly map?: ((value: unknown) => infer T_1) | undefined;
|
|
12
12
|
readonly __isYupRef: boolean;
|
|
13
|
-
getValue(value: any, parent?: {} | undefined, context?: {} | undefined): infer
|
|
13
|
+
getValue(value: any, parent?: {} | undefined, context?: {} | undefined): infer T_1;
|
|
14
14
|
cast(value: any, options?: {
|
|
15
15
|
parent?: {} | undefined;
|
|
16
16
|
context?: {} | undefined;
|
|
17
|
-
} | undefined): infer
|
|
17
|
+
} | undefined): infer T_1;
|
|
18
18
|
resolve(): any;
|
|
19
19
|
describe(): import("@kuus/yup").SchemaRefDescription;
|
|
20
20
|
toString(): string;
|
|
21
|
-
} ?
|
|
21
|
+
} ? T_1 : unknown;
|
|
22
22
|
}, import("@kuus/yup").AnyObject, {
|
|
23
23
|
[x: string]: T[keyof T] extends import("@kuus/yup").ISchema<any, import("@kuus/yup").AnyObject, any, any> ? T[keyof T]["__default"] : undefined;
|
|
24
24
|
}, "">;
|
|
25
25
|
encodedNames: Record<keyof T, string>;
|
|
26
26
|
};
|
|
27
|
-
export declare
|
|
27
|
+
export declare let decodeForm: <ReturnAs extends Record<string, unknown> = {}, FormData_1 extends Record<string, unknown> = {}>(formData: FormData_1) => ReturnAs;
|
package/forms.cjs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./forms";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./forms.cjs.js').default;
|
package/forms.cjs.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var yup = require('@kuus/yup');
|
|
6
|
+
var utils = require('@koine/utils');
|
|
7
|
+
|
|
8
|
+
let encodeForm=t=>{let o={},i={};for(let e in t)if(!e.startsWith("_")){let l=utils.encode(e);o[l]=t[e],i[e]=l;}return {encodedSchema:yup.object(o).required(),encodedNames:i}};let decodeForm=e=>{let r={};for(let i in e){let l=utils.decode(i);i.startsWith("_")?r[i.substring(1)]=e[i]:utils.isUndefined(e[i])||""!==e[l]||(r[l]=e[i]);}return r};
|
|
9
|
+
|
|
10
|
+
exports.decodeForm = decodeForm;
|
|
11
|
+
exports.encodeForm = encodeForm;
|
package/forms.cjs.mjs
ADDED
package/forms.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./forms/antispam";
|
package/forms.esm.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { object } from '@kuus/yup';
|
|
2
|
+
import { encode, decode, isUndefined } from '@koine/utils';
|
|
3
|
+
|
|
4
|
+
let encodeForm=t=>{let o={},i={};for(let e in t)if(!e.startsWith("_")){let l=encode(e);o[l]=t[e],i[e]=l;}return {encodedSchema:object(o).required(),encodedNames:i}};let decodeForm=e=>{let r={};for(let i in e){let l=decode(i);i.startsWith("_")?r[i.substring(1)]=e[i]:isUndefined(e[i])||""!==e[l]||(r[l]=e[i]);}return r};
|
|
5
|
+
|
|
6
|
+
export { decodeForm, encodeForm };
|
package/hooks/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { useAsyncFn, type UseAsyncFnReturn, type UseAsyncState, } from "./useAsyncFn";
|
|
2
|
+
export { useFirstMountState } from "./useFirstMountState";
|
|
3
|
+
export { useFixedOffset } from "./useFixedOffset";
|
|
4
|
+
export { useFocus } from "./useFocus";
|
|
5
|
+
export { useInterval } from "./useInterval";
|
|
6
|
+
export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
|
|
7
|
+
export { useKeyUp } from "./useKeyUp";
|
|
8
|
+
export { useMeasure, type UseMeasureOptions, type UseMeasureReturn, } from "./useMeasure";
|
|
9
|
+
export { useMountedState } from "./useMountedState";
|
|
10
|
+
export { useNavigateAway, type UseNavigateAwayHandler, } from "./useNavigateAway";
|
|
11
|
+
export { usePrevious } from "./usePrevious";
|
|
12
|
+
export { usePreviousRef } from "./usePreviousRef";
|
|
13
|
+
export { useScrollPosition } from "./useScrollPosition";
|
|
14
|
+
export { useScrollThreshold } from "./useScrollThreshold";
|
|
15
|
+
export { useSmoothScroll } from "./useSmoothScroll";
|
|
16
|
+
export { useSpinDelay } from "./useSpinDelay";
|
|
17
|
+
export { useTraceUpdate } from "./useTraceUpdate";
|
|
18
|
+
export { useUpdateEffect } from "./useUpdateEffect";
|
|
19
|
+
export { useWindowSize } from "./useWindowSize";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { FunctionReturningPromise, PromiseType } from "
|
|
2
|
+
import type { FunctionReturningPromise, PromiseType } from "../types";
|
|
3
3
|
export type UseAsyncState<T> = {
|
|
4
4
|
loading: boolean;
|
|
5
5
|
error?: undefined;
|
|
@@ -19,5 +19,5 @@ export type UseAsyncState<T> = {
|
|
|
19
19
|
};
|
|
20
20
|
type StateFromFunctionReturningPromise<T extends FunctionReturningPromise> = UseAsyncState<PromiseType<ReturnType<T>>>;
|
|
21
21
|
export type UseAsyncFnReturn<T extends FunctionReturningPromise = FunctionReturningPromise> = [StateFromFunctionReturningPromise<T>, T];
|
|
22
|
-
export declare
|
|
23
|
-
export
|
|
22
|
+
export declare let useAsyncFn: <T extends FunctionReturningPromise>(fn: T, deps?: React.DependencyList, initialState?: StateFromFunctionReturningPromise<T>) => UseAsyncFnReturn<T>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useFirstMountState: () => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useFixedOffset: (selector?: string) => import("react").MutableRefObject<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useFocus: () => (import("react").RefObject<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement> | (() => void))[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useInterval: <T extends () => unknown>(callback: T, delay: number, deps?: unknown[]) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useKeyUp: (callback: (event: KeyboardEvent) => void, deps?: unknown[]) => void;
|
|
@@ -18,5 +18,5 @@ export type UseMeasureReturn = [
|
|
|
18
18
|
RectReadOnly,
|
|
19
19
|
() => void
|
|
20
20
|
];
|
|
21
|
-
export declare
|
|
22
|
-
export
|
|
21
|
+
export declare let useMeasure: (options?: UseMeasureOptions) => UseMeasureReturn;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useMountedState: () => (() => boolean);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let usePrevious: <T extends unknown>(state: T, defaulValue: T) => T;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let usePreviousRef: <T extends unknown>(value: T) => T | undefined;
|
|
@@ -4,7 +4,7 @@ export type UseRevealOptions = {
|
|
|
4
4
|
offsetEndY?: number;
|
|
5
5
|
offsetStartX?: number | "all";
|
|
6
6
|
};
|
|
7
|
-
export declare
|
|
7
|
+
export declare let useReveal: <T extends HTMLElement = HTMLDivElement>({ direction, offsetStartY, offsetEndY, offsetStartX, }: UseRevealOptions) => {
|
|
8
8
|
ref: import("react").RefObject<T>;
|
|
9
9
|
startY: number;
|
|
10
10
|
endY: number;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type Position = {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
};
|
|
5
|
+
type ElementRef = React.MutableRefObject<HTMLElement | undefined>;
|
|
6
|
+
export declare let useScrollPosition: (effect: (currentPosition: Position, prevPosition: Position) => void, deps?: import("react").DependencyList, element?: ElementRef, boundingElement?: ElementRef, wait?: number) => void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useScrollThreshold: (threshold?: number, callback?: ((isAbove: boolean, isBelow: boolean) => void) | undefined) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useScrollTo: (id?: string, offset?: number) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useSmoothScroll: (disregardAutomaticFixedOffset?: boolean) => (to?: number | string, customOffset?: number, callback?: () => void, fallbackTimeout?: number, behavior?: ScrollBehavior) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useSpinDelay: (loading: boolean, delay?: number, minDuration?: number) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare let useTraceUpdate: (props: any) => void;
|
package/index.cjs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./index";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./index.cjs.js').default;
|
package/index.cjs.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var utils = require('@koine/utils');
|
|
7
|
+
var dom = require('@koine/dom');
|
|
8
|
+
|
|
9
|
+
let useMountedState=()=>{let u=react.useRef(!1),n=react.useCallback(()=>u.current,[]);return react.useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
|
|
10
|
+
|
|
11
|
+
let useAsyncFn=(o,l=[],u={loading:!1})=>{let a=react.useRef(0),i=useMountedState(),[d,c]=react.useState(u),g=react.useCallback((...r)=>{let t=++a.current;return d.loading||c(r=>({...r,loading:!0})),o(...r).then(r=>(i()&&t===a.current&&c({value:r,loading:!1}),r),r=>(i()&&t===a.current&&c({error:r,loading:!1}),r))},l);return [d,g]};
|
|
12
|
+
|
|
13
|
+
let useFirstMountState=()=>{let t=react.useRef(!0);return t.current?(t.current=!1,!0):t.current};
|
|
14
|
+
|
|
15
|
+
let useIsomorphicLayoutEffect=utils.isBrowser?react.useLayoutEffect:react.useEffect;
|
|
16
|
+
|
|
17
|
+
let n$1=e=>{dom.injectCss("useFixedOffset",`html{scroll-padding-top: ${e}px}`);};let useFixedOffset=i=>{let c=react.useRef(0);return useIsomorphicLayoutEffect(()=>{let e=()=>{let e=dom.calculateFixedOffset();c.current=e,n$1(e);};if(e(),!ResizeObserver)return dom.listenResizeDebounced(0,e);{let e=new ResizeObserver(e=>{let r=0;e.forEach(e=>{r+=e.contentRect.height;}),c.current=r,utils.debounce(()=>n$1(r),400,!0)();});return dom.$each(i||"[data-fixed]",t=>{e&&e.observe(t);}),()=>{e?.disconnect();}}},[i]),c};
|
|
18
|
+
|
|
19
|
+
let useFocus=()=>{let e=react.useRef(null);return [e,()=>{e.current&&e.current.focus();}]};
|
|
20
|
+
|
|
21
|
+
let useInterval=(n,l,u=[])=>{let o=react.useRef();react.useEffect(()=>{o.current=n;},[n,...u]),react.useEffect(()=>{if(null!==l){let r=setInterval(function(){o.current&&o.current();},l);return ()=>clearInterval(r)}return utils.noop},[l]);};
|
|
22
|
+
|
|
23
|
+
let useKeyUp=(o,r=[])=>{react.useEffect(()=>dom.on(window,"keyup",e=>{e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),[o,...r]);};
|
|
24
|
+
|
|
25
|
+
let e$1;let f=e=>{let t=[];if(!e||e===document.body)return t;let{overflow:r,overflowX:n,overflowY:l}=window.getComputedStyle(e);return [r,n,l].some(e=>"auto"===e||"scroll"===e)&&t.push(e),[...t,...f(e.parentElement)]},h=["x","y","top","bottom","left","right","width","height"],p=(e,t)=>h.every(r=>e[r]===t[r]);let useMeasure=h=>{let{scroll:d=!1}=h||{},[a,b]=react.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),g=react.useRef([null,null,null,a]),v=react.useRef(!1);react.useEffect(()=>(v.current=!0,()=>void(v.current=!1)),[]);let[w,,y]=react.useMemo(()=>{let e=(...e)=>{let[t,,,r]=g.current;if(!t)return;let n=t.getBoundingClientRect();Object.freeze(n),v.current&&!p(r,n)&&(g.current[3]=n,b(n));},t=utils.debounce(e);return [e,t,t]},[b]);function x(){let[,e,t]=g.current;e&&(e.forEach(e=>dom.off(e,"scroll",y)),g.current[1]=null),t&&(t.disconnect(),g.current[2]=null);}function z(){let[t,r]=g.current;t&&!e$1&&ResizeObserver&&(e$1=new ResizeObserver(y),g.current[2]=e$1,e$1.observe(t),d&&r&&r.forEach(e=>dom.on(e,"scroll",y,{capture:!0,passive:!0})));}return react.useEffect(()=>d?dom.listenScrollDebounced(0,w,100):utils.noop,[d,w]),react.useEffect(()=>dom.listenResizeDebounced(0,w,100),[w]),react.useEffect(()=>{x(),z();},[d]),react.useEffect(()=>(w(),x),[]),[e=>{e&&e!==g.current[0]&&(x(),g.current[0]=e,g.current[1]=f(e),z());},a,w]};
|
|
26
|
+
|
|
27
|
+
let useNavigateAway=o=>{let n=react.useRef();react.useEffect(()=>{n.current=e=>{let r=o(e);return (r&&e.preventDefault(),"string"==typeof r)?e.returnValue=r:e.defaultPrevented?e.returnValue="":void 0};},[o]),react.useEffect(()=>dom.on(window,"beforeunload",e=>n.current?.(e)),[]);};
|
|
28
|
+
|
|
29
|
+
let usePrevious=(r,t)=>{let[o,u]=react.useState([r,t]);return o[1]!==r&&u([o[1],r]),o[0]};
|
|
30
|
+
|
|
31
|
+
let usePreviousRef=t=>{let u=react.useRef();return react.useEffect(()=>{u.current=t;}),u.current};
|
|
32
|
+
|
|
33
|
+
let l={x:0,y:0},n=r=>r?.getBoundingClientRect(),u=(r,e)=>{if(!utils.isBrowser)return l;if(!e)return {x:window.scrollX,y:window.scrollY};let o=n(r?.current||document.body),u=n(e.current);return o?u?{x:(u.x||0)-(o.x||0),y:(u.y||0)-(o.y||0)}:{x:o.left,y:o.top}:l};let useScrollPosition=(l,n=[],i,c,m)=>{let f=react.useRef(u(null,c)),s=null,y=()=>{let r=u(i,c);l(r,f.current),f.current=r,s=null;};useIsomorphicLayoutEffect(()=>{if(!utils.isBrowser)return;let r=dom.listenScroll(()=>{m?null===s&&(s=window.setTimeout(y,m)):y();},c?.current);return ()=>{r(),s&&clearTimeout(s);}},n);};
|
|
34
|
+
|
|
35
|
+
let useScrollThreshold=(i,m)=>{let[n,f]=react.useState(!1),u=react.useCallback(()=>{if(i){let r=window.scrollY,o=r<i,e=r>i;f(e),m&&m(o,e);}},[i,m]);return react.useEffect(()=>{if(i){let r=dom.listenScroll(u);return u(),r}return utils.noop},[i,u]),n};
|
|
36
|
+
|
|
37
|
+
let useSmoothScroll=i=>{let l=useFixedOffset();return react.useCallback((e,m,f,n,u)=>{let c;let p=!1;if(utils.isNumber(e))c=e;else if(e){let t=document.getElementById(e);t&&(c=dom.getOffsetTopSlim(t)-l.current,p=!0);}utils.isNumber(c)&&dom.scrollTo(c=c+(m||0)+(i||p?0:l.current),f,n,u);},[i,l])};
|
|
38
|
+
|
|
39
|
+
var e,r;(r=e||(e={}))[r.IDLE=0]="IDLE",r[r.DELAY=1]="DELAY",r[r.DISPLAY=2]="DISPLAY",r[r.EXPIRE=3]="EXPIRE";let useSpinDelay=(e,r=500,i=200)=>{let[n,o]=react.useState(0),E=react.useRef();return react.useEffect(()=>{e&&0===n&&(clearTimeout(E.current),E.current=setTimeout(()=>{if(!e)return o(0);E.current=setTimeout(()=>{o(3);},i),o(2);},r),o(1)),e||2===n||(clearTimeout(E.current),o(0));},[e,n,r,i]),react.useEffect(()=>()=>clearTimeout(E.current),[]),2===n||3===n};
|
|
40
|
+
|
|
41
|
+
let useTraceUpdate=t=>{let c=react.useRef(t);react.useEffect(()=>{let e=Object.entries(t).reduce((e,[r,t])=>(c.current[r]!==t&&(e[r]=[c.current[r],t]),e),{});Object.keys(e).length>0&&console.info("[@koine/react:useTraceUpdate] changed props:",e),c.current=t;});};
|
|
42
|
+
|
|
43
|
+
let useUpdateEffect=(r,o)=>{let f=useFirstMountState();react.useEffect(()=>{if(!f)return r()},o);};
|
|
44
|
+
|
|
45
|
+
let useWindowSize=(n,o)=>{let[d,m]=react.useState(0),[w,l]=react.useState(0);return react.useEffect(()=>{let e=()=>{m(window.innerWidth),l(window.innerHeight);},r=n?dom.listenResizeDebounced(0,e,n,o):dom.listenResize(e);return e(),r},[n,o]),[d,w]};
|
|
46
|
+
|
|
47
|
+
let classed=r=>{let n=r.type||r;return function(r,...o){return react.forwardRef(function(e,s){let a=o.map((t,n)=>{let o="";return "function"==typeof t?o=t(e):void 0!==t&&(o=t.toString()),r[n]+o}).join(""),i="string"==typeof n,l=i?{}:e;if(i)for(let t in e)t.startsWith("$")||(l[t]=e[t]);let c=a||r[0];return c=(c.match(/class="([^"]*)/)?.[1]||c)+(e?.className?" "+e?.className:""),react.createElement(n,{...l,className:c||void 0,ref:s})})}};
|
|
48
|
+
|
|
49
|
+
let createUseMediaQueryWidth=i=>{let o=utils.getMediaQueryWidthResolvers(i);return function(t,i){let[s,a]=t.substring(1).split("-");utils.isUndefined(a)&&(a=s),utils.isUndefined(s)&&(s="min");let[m,d]=a.split("_"),l=o[s](m,d),[c,u]=react.useState(utils.isUndefined(i)?null:i);return useIsomorphicLayoutEffect(()=>{let e=window.matchMedia(l),t=e=>{u(e.matches);};return (u(e.matches),e.addEventListener)?(e.addEventListener("change",t),()=>{e.removeEventListener("change",t);}):(e.addListener(t),()=>{e.removeListener(t);})},[l]),c}};
|
|
50
|
+
|
|
51
|
+
let extendComponent=(t,o)=>Object.assign(o=>react.createElement(t,o),{...o,defaultProps:o});
|
|
52
|
+
|
|
53
|
+
let mergeRefs=e=>r=>{e.forEach(e=>{"function"==typeof e?e(r):null!=e&&(e.current=r);});};
|
|
54
|
+
|
|
55
|
+
exports.classed = classed;
|
|
56
|
+
exports.createUseMediaQueryWidth = createUseMediaQueryWidth;
|
|
57
|
+
exports.extendComponent = extendComponent;
|
|
58
|
+
exports.mergeRefs = mergeRefs;
|
|
59
|
+
exports.useAsyncFn = useAsyncFn;
|
|
60
|
+
exports.useFirstMountState = useFirstMountState;
|
|
61
|
+
exports.useFixedOffset = useFixedOffset;
|
|
62
|
+
exports.useFocus = useFocus;
|
|
63
|
+
exports.useInterval = useInterval;
|
|
64
|
+
exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
|
|
65
|
+
exports.useKeyUp = useKeyUp;
|
|
66
|
+
exports.useMeasure = useMeasure;
|
|
67
|
+
exports.useMountedState = useMountedState;
|
|
68
|
+
exports.useNavigateAway = useNavigateAway;
|
|
69
|
+
exports.usePrevious = usePrevious;
|
|
70
|
+
exports.usePreviousRef = usePreviousRef;
|
|
71
|
+
exports.useScrollPosition = useScrollPosition;
|
|
72
|
+
exports.useScrollThreshold = useScrollThreshold;
|
|
73
|
+
exports.useSmoothScroll = useSmoothScroll;
|
|
74
|
+
exports.useSpinDelay = useSpinDelay;
|
|
75
|
+
exports.useTraceUpdate = useTraceUpdate;
|
|
76
|
+
exports.useUpdateEffect = useUpdateEffect;
|
|
77
|
+
exports.useWindowSize = useWindowSize;
|