@koine/react 1.0.10 → 1.0.13
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.d.ts +5 -0
- package/Alert/Alert.js +10 -0
- package/Alert/index.d.ts +1 -0
- package/Alert/index.js +1 -0
- package/Alert/package.json +6 -0
- package/Animations/Reveal.d.ts +4 -0
- package/Animations/Reveal.js +17 -0
- package/Animations/Underline.d.ts +1 -0
- package/Animations/Underline.js +5 -0
- package/Animations/index.d.ts +3 -0
- package/Animations/index.js +3 -0
- package/Animations/package.json +6 -0
- package/Animations/useReveal.d.ts +33 -0
- package/Animations/useReveal.js +71 -0
- package/Autocomplete/AutocompleteDownshift.d.ts +1 -0
- package/Autocomplete/AutocompleteDownshift.js +158 -0
- package/Autocomplete/AutocompleteDownshiftMultiselect.d.ts +1 -0
- package/Autocomplete/AutocompleteDownshiftMultiselect.js +353 -0
- package/Autocomplete/AutocompleteMui.d.ts +47 -0
- package/Autocomplete/AutocompleteMui.js +182 -0
- package/Autocomplete/AutocompleteReach.d.ts +1 -0
- package/Autocomplete/AutocompleteReach.js +112 -0
- package/Autocomplete/components.d.ts +21 -0
- package/Autocomplete/components.js +34 -0
- package/Autocomplete/helpers.d.ts +3 -0
- package/Autocomplete/helpers.js +28 -0
- package/Autocomplete/index.d.ts +2 -0
- package/Autocomplete/index.js +3 -0
- package/Autocomplete/package.json +6 -0
- package/Bg/BgColor.d.ts +36 -0
- package/Bg/BgColor.js +21 -0
- package/Bg/BgPhoto.d.ts +13 -0
- package/Bg/BgPhoto.js +16 -0
- package/Bg/BgSvg.d.ts +7 -0
- package/Bg/BgSvg.js +12 -0
- package/Bg/index.d.ts +3 -0
- package/Bg/index.js +3 -0
- package/Bg/package.json +6 -0
- package/Breadcrumbs/Breadcrumbs.d.ts +13 -0
- package/Breadcrumbs/Breadcrumbs.js +27 -0
- package/Breadcrumbs/index.d.ts +1 -0
- package/Breadcrumbs/index.js +1 -0
- package/Breadcrumbs/package.json +6 -0
- package/Buttons/Button.d.ts +18 -0
- package/Buttons/Button.js +14 -0
- package/Buttons/ButtonComposite.d.ts +23 -0
- package/Buttons/ButtonComposite.js +28 -0
- package/Buttons/ButtonFab.d.ts +7 -0
- package/Buttons/ButtonFab.js +6 -0
- package/Buttons/ButtonLink.d.ts +8 -0
- package/Buttons/ButtonLink.js +11 -0
- package/Buttons/IconButton.d.ts +11 -0
- package/Buttons/IconButton.js +7 -0
- package/Buttons/index.d.ts +5 -0
- package/Buttons/index.js +5 -0
- package/Buttons/package.json +6 -0
- package/Calendar/CalendarDaygridCell.d.ts +36 -0
- package/Calendar/CalendarDaygridCell.js +57 -0
- package/Calendar/CalendarDaygridNav.d.ts +27 -0
- package/Calendar/CalendarDaygridNav.js +23 -0
- package/Calendar/CalendarDaygridTable.d.ts +25 -0
- package/Calendar/CalendarDaygridTable.js +57 -0
- package/Calendar/CalendarLegend.d.ts +19 -0
- package/Calendar/CalendarLegend.js +16 -0
- package/Calendar/calendar-api-google.d.ts +18 -0
- package/Calendar/calendar-api-google.js +127 -0
- package/Calendar/index.d.ts +6 -0
- package/Calendar/index.js +6 -0
- package/Calendar/package.json +6 -0
- package/Calendar/types.d.ts +81 -0
- package/Calendar/types.js +1 -0
- package/Calendar/useCalendar.d.ts +49 -0
- package/Calendar/useCalendar.js +183 -0
- package/Calendar/utils.d.ts +11 -0
- package/Calendar/utils.js +202 -0
- package/Carousel/Carousel.d.ts +1 -0
- package/Carousel/Carousel.js +378 -0
- package/Carousel/CarouselCss.d.ts +47 -0
- package/Carousel/CarouselCss.js +23 -0
- package/Carousel/index.d.ts +1 -0
- package/Carousel/index.js +1 -0
- package/Carousel/package.json +6 -0
- package/Collapsable/Collapsable.d.ts +1 -0
- package/Collapsable/Collapsable.js +1 -0
- package/Collapsable/CollapsableReach.d.ts +6 -0
- package/Collapsable/CollapsableReach.js +253 -0
- package/Collapsable/index.d.ts +1 -0
- package/Collapsable/index.js +2 -0
- package/Collapsable/package.json +6 -0
- package/Debug/Debug.d.ts +4 -0
- package/Debug/Debug.js +9 -0
- package/Debug/index.d.ts +1 -0
- package/Debug/index.js +1 -0
- package/Debug/package.json +6 -0
- package/Details/Details.d.ts +114 -0
- package/Details/Details.js +65 -0
- package/Details/index.d.ts +1 -0
- package/Details/index.js +1 -0
- package/Details/package.json +6 -0
- package/Dialog/DialogMui.d.ts +139 -0
- package/Dialog/DialogMui.js +80 -0
- package/Dialog/css/bare.d.ts +145 -0
- package/Dialog/css/bare.js +21 -0
- package/Dialog/index.d.ts +2 -0
- package/Dialog/index.js +1 -0
- package/Dialog/m/bare.d.ts +56 -0
- package/Dialog/m/bare.js +52 -0
- package/Dialog/m/basic.d.ts +4 -0
- package/Dialog/m/basic.js +31 -0
- package/Dialog/m/index.d.ts +2 -0
- package/Dialog/m/index.js +4 -0
- package/Dialog/m/package.json +6 -0
- package/Dialog/package.json +6 -0
- package/Dialog/sc/bare.d.ts +105 -0
- package/Dialog/sc/bare.js +43 -0
- package/Dialog/sc/framer.d.ts +80 -0
- package/Dialog/sc/framer.js +16 -0
- package/Dialog/sc/framerMaterial.d.ts +79 -0
- package/Dialog/sc/framerMaterial.js +16 -0
- package/Dialog/sc/material.d.ts +94 -0
- package/Dialog/sc/material.js +21 -0
- package/Dialog/tw/bare.d.ts +196 -0
- package/Dialog/tw/bare.js +42 -0
- package/Dialog/tw/elegant.d.ts +244 -0
- package/Dialog/tw/elegant.js +20 -0
- package/Dialog/tw/framer.d.ts +112 -0
- package/Dialog/tw/framer.js +16 -0
- package/Dialog/tw/framerMaterial.d.ts +167 -0
- package/Dialog/tw/framerMaterial.js +16 -0
- package/Dialog/tw/material.d.ts +244 -0
- package/Dialog/tw/material.js +20 -0
- package/Editor/Editor--tiptap.d.ts +9 -0
- package/Editor/Editor--tiptap.js +26 -0
- package/Editor/components.d.ts +7 -0
- package/Editor/components.js +10 -0
- package/Editor/index.d.ts +1 -0
- package/Editor/index.js +1 -0
- package/Editor/package.json +6 -0
- package/Favicon/FaviconTags.d.ts +18 -0
- package/Favicon/FaviconTags.js +15 -0
- package/Favicon/index.d.ts +1 -0
- package/Favicon/index.js +1 -0
- package/Favicon/package.json +6 -0
- package/Form/Form.d.ts +111 -0
- package/Form/Form.js +61 -0
- package/Form/index.d.ts +1 -0
- package/Form/index.js +1 -0
- package/Form/package.json +6 -0
- package/Form/sc/bare.d.ts +33 -0
- package/Form/sc/bare.js +20 -0
- package/Forms/Checkbox/Checkbox.d.ts +11 -0
- package/Forms/Checkbox/Checkbox.js +18 -0
- package/Forms/Checkbox/index.d.ts +1 -0
- package/Forms/Checkbox/index.js +1 -0
- package/Forms/Checkbox/package.json +6 -0
- package/Forms/Feedback/Feedback.d.ts +5 -0
- package/Forms/Feedback/Feedback.js +9 -0
- package/Forms/Feedback/index.d.ts +1 -0
- package/Forms/Feedback/index.js +1 -0
- package/Forms/Feedback/package.json +6 -0
- package/Forms/Field/Field.d.ts +15 -0
- package/Forms/Field/Field.js +48 -0
- package/Forms/Field/FieldControl.d.ts +26 -0
- package/Forms/Field/FieldControl.js +47 -0
- package/Forms/Field/FieldHint.d.ts +1 -0
- package/Forms/Field/FieldHint.js +4 -0
- package/Forms/Field/index.d.ts +2 -0
- package/Forms/Field/index.js +2 -0
- package/Forms/Field/package.json +6 -0
- package/Forms/Input/Input.d.ts +9 -0
- package/Forms/Input/Input.js +17 -0
- package/Forms/Input/index.d.ts +1 -0
- package/Forms/Input/index.js +1 -0
- package/Forms/Input/package.json +6 -0
- package/Forms/InputGroup/InputGroup.d.ts +13 -0
- package/Forms/InputGroup/InputGroup.js +15 -0
- package/Forms/InputGroup/index.d.ts +1 -0
- package/Forms/InputGroup/index.js +1 -0
- package/Forms/InputGroup/package.json +6 -0
- package/Forms/Label/Label.d.ts +3 -0
- package/Forms/Label/Label.js +6 -0
- package/Forms/Label/index.d.ts +1 -0
- package/Forms/Label/index.js +1 -0
- package/Forms/Label/package.json +6 -0
- package/Forms/Password/Password.d.ts +5 -0
- package/Forms/Password/Password.js +17 -0
- package/Forms/Password/index.d.ts +1 -0
- package/Forms/Password/index.js +1 -0
- package/Forms/Password/package.json +6 -0
- package/Forms/Radio/Radio.d.ts +12 -0
- package/Forms/Radio/Radio.js +25 -0
- package/Forms/Radio/index.d.ts +1 -0
- package/Forms/Radio/index.js +1 -0
- package/Forms/Radio/package.json +6 -0
- package/Forms/Switch/Switch.d.ts +9 -0
- package/Forms/Switch/Switch.js +20 -0
- package/Forms/Switch/index.d.ts +1 -0
- package/Forms/Switch/index.js +1 -0
- package/Forms/Switch/package.json +6 -0
- package/Forms/Textarea/Textarea.d.ts +5 -0
- package/Forms/Textarea/Textarea.js +12 -0
- package/Forms/Textarea/TextareaRich.d.ts +6 -0
- package/Forms/Textarea/TextareaRich.js +28 -0
- package/Forms/Textarea/index.d.ts +2 -0
- package/Forms/Textarea/index.js +2 -0
- package/Forms/Textarea/package.json +6 -0
- package/Forms/Toggle/Toggle.d.ts +19 -0
- package/Forms/Toggle/Toggle.js +32 -0
- package/Forms/Toggle/index.d.ts +1 -0
- package/Forms/Toggle/index.js +1 -0
- package/Forms/Toggle/package.json +6 -0
- package/Forms/Toggle/useToggle.d.ts +46 -0
- package/Forms/Toggle/useToggle.js +145 -0
- package/Forms/antispam.d.ts +24 -0
- package/Forms/antispam.js +56 -0
- package/Forms/helpers.d.ts +26 -0
- package/Forms/helpers.js +45 -0
- package/Forms/index.d.ts +15 -0
- package/Forms/index.js +16 -0
- package/Forms/package.json +6 -0
- package/Forms/styles.d.ts +19 -0
- package/Forms/styles.js +29 -0
- package/Gauge/Gauge.d.ts +5 -0
- package/Gauge/Gauge.js +102 -0
- package/Grid/Grid.d.ts +64 -0
- package/Grid/Grid.js +53 -0
- package/Grid/index.d.ts +1 -0
- package/Grid/index.js +1 -0
- package/Grid/package.json +6 -0
- package/Hamburger/Hamburger.d.ts +6 -0
- package/Hamburger/Hamburger.js +52 -0
- package/Hamburger/index.d.ts +1 -0
- package/Hamburger/index.js +1 -0
- package/Hamburger/package.json +6 -0
- package/Header/index.d.ts +1 -0
- package/Header/index.js +1 -0
- package/Header/package.json +6 -0
- package/Header/useHeader.d.ts +24 -0
- package/Header/useHeader.js +30 -0
- package/Hidden/Hidden.d.ts +6 -0
- package/Hidden/Hidden.js +10 -0
- package/Hidden/index.d.ts +1 -0
- package/Hidden/index.js +1 -0
- package/Hidden/package.json +6 -0
- package/Img/index.d.ts +1 -0
- package/Img/index.js +1 -0
- package/Img/package.json +6 -0
- package/Img/sc/bare.d.ts +2 -0
- package/Img/sc/bare.js +39 -0
- package/Img/types.d.ts +9 -0
- package/Img/types.js +1 -0
- package/Link/Link.d.ts +5 -0
- package/Link/Link.js +4 -0
- package/Link/LinkBlank.d.ts +8 -0
- package/Link/LinkBlank.js +17 -0
- package/Link/index.d.ts +2 -0
- package/Link/index.js +2 -0
- package/Link/package.json +6 -0
- package/Menu/Menu.d.ts +1 -0
- package/Menu/Menu.js +4 -0
- package/Menu/index.d.ts +1 -0
- package/Menu/index.js +1 -0
- package/Menu/package.json +6 -0
- package/MenuItem/MenuItem.d.ts +4 -0
- package/MenuItem/MenuItem.js +4 -0
- package/MenuItem/index.d.ts +1 -0
- package/MenuItem/index.js +1 -0
- package/MenuItem/package.json +6 -0
- package/Meta/Meta.d.ts +14 -0
- package/Meta/Meta.js +5 -0
- package/Meta/index.d.ts +1 -0
- package/Meta/index.js +1 -0
- package/Meta/package.json +6 -0
- package/NoJs/NoJs.d.ts +2 -0
- package/NoJs/NoJs.js +6 -0
- package/NoJs/index.d.ts +1 -0
- package/NoJs/index.js +1 -0
- package/NoJs/package.json +6 -0
- package/Pagination/PaginationNav.d.ts +22 -0
- package/Pagination/PaginationNav.js +61 -0
- package/Pagination/PaginationResults.d.ts +3 -0
- package/Pagination/PaginationResults.js +11 -0
- package/Pagination/index.d.ts +2 -0
- package/Pagination/index.js +2 -0
- package/Pagination/package.json +6 -0
- package/Pill/Pill.d.ts +5 -0
- package/Pill/Pill.js +7 -0
- package/Pill/index.d.ts +1 -0
- package/Pill/index.js +1 -0
- package/Pill/package.json +6 -0
- package/Progress/ProgressCircular.d.ts +19 -0
- package/Progress/ProgressCircular.js +15 -0
- package/Progress/ProgressLinear.d.ts +22 -0
- package/Progress/ProgressLinear.js +24 -0
- package/Progress/ProgressOverlay.d.ts +4 -0
- package/Progress/ProgressOverlay.js +24 -0
- package/Progress/index.d.ts +3 -0
- package/Progress/index.js +3 -0
- package/Progress/package.json +6 -0
- package/Rating/Rating.d.ts +35 -0
- package/Rating/Rating.js +71 -0
- package/Rating/index.d.ts +11 -0
- package/Rating/index.js +49 -0
- package/Rating/package.json +6 -0
- package/Select/SelectDownshift.d.ts +5 -0
- package/Select/SelectDownshift.js +38 -0
- package/Select/components.d.ts +6 -0
- package/Select/components.js +12 -0
- package/Select/index.d.ts +2 -0
- package/Select/index.js +3 -0
- package/Select/package.json +6 -0
- package/Sidebar/Sidebar.d.ts +3 -0
- package/Sidebar/Sidebar.js +23 -0
- package/Sidebar/index.d.ts +1 -0
- package/Sidebar/index.js +1 -0
- package/Sidebar/package.json +6 -0
- package/Spacing/Spacing.d.ts +30 -0
- package/Spacing/Spacing.js +45 -0
- package/Spacing/index.d.ts +1 -0
- package/Spacing/index.js +1 -0
- package/Spacing/package.json +6 -0
- package/Sticky/Sticky.d.ts +2 -0
- package/Sticky/Sticky.js +219 -0
- package/Sticky/StickyCss.d.ts +5 -0
- package/Sticky/StickyCss.js +6 -0
- package/Sticky/index.d.ts +1 -0
- package/Sticky/index.js +1 -0
- package/Sticky/package.json +6 -0
- package/Tabs/TabsMui.d.ts +244 -0
- package/Tabs/TabsMui.js +46 -0
- package/Tabs/index.d.ts +1 -0
- package/Tabs/index.js +1 -0
- package/Tabs/package.json +6 -0
- package/Tabs/sc/bare.d.ts +5 -0
- package/Tabs/sc/bare.js +87 -0
- package/Tabs/tw/bare.d.ts +248 -0
- package/Tabs/tw/bare.js +17 -0
- package/Tabs/tw/material.d.ts +472 -0
- package/Tabs/tw/material.js +18 -0
- package/Tabs/useTabs.d.ts +43 -0
- package/Tabs/useTabs.js +44 -0
- package/Typography/CopyPasteVisible.d.ts +1 -0
- package/Typography/CopyPasteVisible.js +4 -0
- package/Typography/Native.d.ts +10 -0
- package/Typography/Native.js +14 -0
- package/Typography/ReadMore.d.ts +12 -0
- package/Typography/ReadMore.js +43 -0
- package/Typography/TextLoop.d.ts +16 -0
- package/Typography/TextLoop.js +46 -0
- package/Typography/TypeStairs.d.ts +6 -0
- package/Typography/TypeStairs.js +50 -0
- package/Typography/index.d.ts +5 -0
- package/Typography/index.js +5 -0
- package/Typography/package.json +6 -0
- package/css/index.d.ts +2 -0
- package/css/index.js +31 -0
- package/css/package.json +6 -0
- package/helpers/classed.d.ts +22 -0
- package/helpers/classed.js +68 -0
- package/helpers/extend-component.d.ts +28 -0
- package/helpers/extend-component.js +12 -0
- package/helpers/index.d.ts +3 -0
- package/helpers/index.js +2 -0
- package/helpers/package.json +6 -0
- package/hooks/index.d.ts +14 -0
- package/hooks/index.js +15 -0
- package/hooks/package.json +6 -0
- package/hooks/types.d.ts +8 -0
- package/hooks/types.js +1 -0
- package/hooks/useAsyncFn.d.ts +26 -0
- package/hooks/useAsyncFn.js +36 -0
- package/hooks/useDateLocale.d.ts +7 -0
- package/hooks/useDateLocale.js +38 -0
- package/hooks/useEffectOnce.d.ts +5 -0
- package/hooks/useEffectOnce.js +8 -0
- package/hooks/useFirstMountState.d.ts +4 -0
- package/hooks/useFirstMountState.js +12 -0
- package/hooks/useFocus.d.ts +4 -0
- package/hooks/useFocus.js +11 -0
- package/hooks/useId.d.ts +4 -0
- package/hooks/useId.js +8 -0
- package/hooks/useIsomorphicLayoutEffect.d.ts +5 -0
- package/hooks/useIsomorphicLayoutEffect.js +8 -0
- package/hooks/useMount.d.ts +4 -0
- package/hooks/useMount.js +9 -0
- package/hooks/useMountedState.d.ts +4 -0
- package/hooks/useMountedState.js +15 -0
- package/hooks/usePrevious.d.ts +1 -0
- package/hooks/usePrevious.js +8 -0
- package/hooks/useScrollPosition.d.ts +15 -0
- package/hooks/useScrollPosition.js +80 -0
- package/hooks/useScrollTo.d.ts +1 -0
- package/hooks/useScrollTo.js +21 -0
- package/hooks/useTraceUpdate.d.ts +4 -0
- package/hooks/useTraceUpdate.js +21 -0
- package/hooks/useUpdateEffect.d.ts +5 -0
- package/hooks/useUpdateEffect.js +14 -0
- package/hooks/useWindowSize.d.ts +1 -0
- package/hooks/useWindowSize.js +13 -0
- package/index.d.ts +1 -0
- package/index.js +5 -0
- package/m/MotionProvider.d.ts +37 -0
- package/m/MotionProvider.js +39 -0
- package/m/index.d.ts +6 -0
- package/m/index.js +6 -0
- package/m/lite.d.ts +2 -0
- package/m/lite.js +2 -0
- package/m/max.d.ts +2 -0
- package/m/max.js +2 -0
- package/m/package.json +6 -0
- package/package.json +6 -9
- package/sc/index.d.ts +30 -0
- package/sc/index.js +31 -0
- package/sc/package.json +6 -0
- package/scm/index.d.ts +29 -0
- package/scm/index.js +31 -0
- package/scm/package.json +6 -0
- package/shared/index.d.ts +8 -0
- package/shared/index.js +8 -0
- package/shared/package.json +6 -0
- package/styles/Body.d.ts +10 -0
- package/styles/Body.js +13 -0
- package/styles/Global.d.ts +15 -0
- package/styles/Global.js +18 -0
- package/styles/index.d.ts +7 -0
- package/styles/index.js +7 -0
- package/styles/media.d.ts +67 -0
- package/styles/media.js +155 -0
- package/styles/package.json +6 -0
- package/styles/spacing.d.ts +13 -0
- package/styles/spacing.js +45 -0
- package/styles/styled.d.ts +12 -0
- package/styles/styled.js +13 -0
- package/styles/theme--vanilla.d.ts +18 -0
- package/styles/theme--vanilla.js +55 -0
- package/styles/theme.d.ts +82 -0
- package/styles/theme.js +41 -0
- package/tw/index.d.ts +2 -0
- package/tw/index.js +31 -0
- package/tw/package.json +6 -0
- package/twm/index.d.ts +2 -0
- package/twm/index.js +31 -0
- package/twm/package.json +6 -0
- package/types.d.ts +10 -0
- package/types.js +1 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { __assign, __awaiter, __generator } from "tslib";
|
|
2
|
+
import { useCallback, useEffect, useReducer, useState } from "react";
|
|
3
|
+
import { getCalendarsEventsFromGoogle } from "./calendar-api-google";
|
|
4
|
+
import { getStartDate, getEndDate, getPrevDate, getNextDate, isTodayInView, } from "./utils";
|
|
5
|
+
export function useCalendar(_a) {
|
|
6
|
+
var _this = this;
|
|
7
|
+
var locale = _a.locale, apiKey = _a.apiKey, calendars = _a.calendars, initialEvents = _a.events, initialStart = _a.start, initialEnd = _a.end, _b = _a.view, initialView = _b === void 0 ? "month" : _b, _c = _a.timeZone, timeZone = _c === void 0 ? "" : _c, onError = _a.onError;
|
|
8
|
+
var _d = useState(initialView), view = _d[0], setView = _d[1];
|
|
9
|
+
var start = initialStart || getStartDate(new Date(), view);
|
|
10
|
+
var end = initialEnd || getEndDate(start, view);
|
|
11
|
+
var _e = useState([start, end]), range = _e[0], setRange = _e[1];
|
|
12
|
+
var _f = useState(isTodayInView(start, end)), todayInView = _f[0], setTodayInView = _f[1];
|
|
13
|
+
var _g = useState(initialEvents || {}), events = _g[0], setEvents = _g[1];
|
|
14
|
+
var _h = useState(null), eventHovered = _h[0], setEventHovered = _h[1];
|
|
15
|
+
var _j = useState(null), eventClicked = _j[0], setEventClicked = _j[1];
|
|
16
|
+
var _k = useReducer(function (state, action) {
|
|
17
|
+
var _a;
|
|
18
|
+
var type = action.type;
|
|
19
|
+
switch (type) {
|
|
20
|
+
case "events": {
|
|
21
|
+
var events_1 = action.payload;
|
|
22
|
+
return Object.entries(state).reduce(function (map, _a) {
|
|
23
|
+
var id = _a[0], calendar = _a[1];
|
|
24
|
+
map[id] = __assign(__assign({}, calendar), { events: events_1[id] || 0 });
|
|
25
|
+
return map;
|
|
26
|
+
}, {});
|
|
27
|
+
}
|
|
28
|
+
case "visibility": {
|
|
29
|
+
var visible_1 = action.payload;
|
|
30
|
+
if (typeof visible_1 === "string") {
|
|
31
|
+
return __assign(__assign({}, state), (_a = {}, _a[visible_1] = __assign(__assign({}, state[visible_1]), { on: !state[visible_1].on }), _a));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return Object.entries(state).reduce(function (map, _a) {
|
|
35
|
+
var id = _a[0], calendar = _a[1];
|
|
36
|
+
map[id] = __assign(__assign({}, calendar), { on: visible_1.indexOf(id) > -1 });
|
|
37
|
+
return map;
|
|
38
|
+
}, {});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
default:
|
|
42
|
+
return state;
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
// initial state
|
|
46
|
+
calendars.reduce(function (map, calendar) {
|
|
47
|
+
map[calendar.id] = __assign(__assign({}, calendar), { name: calendar.name || "", on: true, events: 0 });
|
|
48
|
+
return map;
|
|
49
|
+
}, {})), calendarsMap = _k[0], updateCalendars = _k[1];
|
|
50
|
+
var toggleCalendarVisibility = useCallback(function (idOrIds) {
|
|
51
|
+
updateCalendars({ type: "visibility", payload: idOrIds });
|
|
52
|
+
}, [updateCalendars]);
|
|
53
|
+
var updateCalendarsBasedOnEvents = useCallback(function (events) {
|
|
54
|
+
var payload = {};
|
|
55
|
+
for (var uid in events) {
|
|
56
|
+
var id = events[uid].calendar.id;
|
|
57
|
+
payload[id] = payload[id] || 0;
|
|
58
|
+
payload[id]++;
|
|
59
|
+
}
|
|
60
|
+
updateCalendars({ type: "events", payload: payload });
|
|
61
|
+
}, []);
|
|
62
|
+
var loadCalendars = useCallback(function (calendars, start, end) { return __awaiter(_this, void 0, void 0, function () {
|
|
63
|
+
var newEvents, e_1;
|
|
64
|
+
return __generator(this, function (_a) {
|
|
65
|
+
switch (_a.label) {
|
|
66
|
+
case 0:
|
|
67
|
+
_a.trys.push([0, 2, , 3]);
|
|
68
|
+
return [4 /*yield*/, getCalendarsEventsFromGoogle({
|
|
69
|
+
apiKey: apiKey,
|
|
70
|
+
calendars: calendars,
|
|
71
|
+
timeZone: timeZone,
|
|
72
|
+
start: start,
|
|
73
|
+
end: end,
|
|
74
|
+
})];
|
|
75
|
+
case 1:
|
|
76
|
+
newEvents = _a.sent();
|
|
77
|
+
// setEvents(mergeCalendarEvents(events, newEvents));
|
|
78
|
+
setEvents(newEvents);
|
|
79
|
+
return [3 /*break*/, 3];
|
|
80
|
+
case 2:
|
|
81
|
+
e_1 = _a.sent();
|
|
82
|
+
if (onError)
|
|
83
|
+
onError(e_1);
|
|
84
|
+
return [3 /*break*/, 3];
|
|
85
|
+
case 3: return [2 /*return*/];
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}); }, [setEvents, apiKey, timeZone, onError]);
|
|
89
|
+
var handleToday = useCallback(function () {
|
|
90
|
+
var start = range[0], end = range[1];
|
|
91
|
+
var newStart = getStartDate(new Date(), view);
|
|
92
|
+
var newEnd = getEndDate(newStart, view);
|
|
93
|
+
setRange([newStart, newEnd]);
|
|
94
|
+
// reset event only if we are not on the current view already
|
|
95
|
+
if (start.getTime() !== newStart.getTime() ||
|
|
96
|
+
end.getTime() !== newEnd.getTime()) {
|
|
97
|
+
setEventClicked(null);
|
|
98
|
+
setEventHovered(null);
|
|
99
|
+
}
|
|
100
|
+
}, [view, range]);
|
|
101
|
+
var handlePrev = useCallback(function () {
|
|
102
|
+
setRange(function (_a) {
|
|
103
|
+
var start = _a[0];
|
|
104
|
+
var newStart = getPrevDate(start, view);
|
|
105
|
+
var newEnd = getEndDate(newStart, view);
|
|
106
|
+
return [newStart, newEnd];
|
|
107
|
+
});
|
|
108
|
+
setEventClicked(null);
|
|
109
|
+
setEventHovered(null);
|
|
110
|
+
}, [view]);
|
|
111
|
+
var handleNext = useCallback(function () {
|
|
112
|
+
setRange(function (_a) {
|
|
113
|
+
var start = _a[0];
|
|
114
|
+
var newStart = getNextDate(start, view);
|
|
115
|
+
var newEnd = getEndDate(newStart, view);
|
|
116
|
+
return [newStart, newEnd];
|
|
117
|
+
});
|
|
118
|
+
setEventClicked(null);
|
|
119
|
+
setEventHovered(null);
|
|
120
|
+
}, [view]);
|
|
121
|
+
var handleView = useCallback(function (newView) {
|
|
122
|
+
var newStart = getStartDate(start, newView);
|
|
123
|
+
var newEnd = getEndDate(newStart, newView);
|
|
124
|
+
setRange([newStart, newEnd]);
|
|
125
|
+
setView(newView);
|
|
126
|
+
setEventClicked(null);
|
|
127
|
+
setEventHovered(null);
|
|
128
|
+
}, [start]);
|
|
129
|
+
useEffect(function () {
|
|
130
|
+
var start = range[0], end = range[1];
|
|
131
|
+
loadCalendars(calendars, start, end);
|
|
132
|
+
setTodayInView(isTodayInView(start, end));
|
|
133
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
134
|
+
}, [range]);
|
|
135
|
+
useEffect(function () {
|
|
136
|
+
if (events) {
|
|
137
|
+
updateCalendarsBasedOnEvents(events);
|
|
138
|
+
}
|
|
139
|
+
}, [events, updateCalendarsBasedOnEvents]);
|
|
140
|
+
// when toggling a calendar we also remove the clicked event if that belongs
|
|
141
|
+
// to a now hidden calendar
|
|
142
|
+
useEffect(function () {
|
|
143
|
+
if (eventClicked) {
|
|
144
|
+
if (!calendarsMap[eventClicked.calendar.id].on) {
|
|
145
|
+
setEventClicked(null);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}, [calendarsMap, eventClicked, setEventClicked]);
|
|
149
|
+
return {
|
|
150
|
+
view: view,
|
|
151
|
+
eventClicked: eventClicked,
|
|
152
|
+
setEventClicked: setEventClicked,
|
|
153
|
+
eventHovered: eventHovered,
|
|
154
|
+
setEventHovered: setEventHovered,
|
|
155
|
+
getDaygridNavProps: function () { return ({
|
|
156
|
+
locale: locale,
|
|
157
|
+
handlePrev: handlePrev,
|
|
158
|
+
handleNext: handleNext,
|
|
159
|
+
handleToday: handleToday,
|
|
160
|
+
handleView: handleView,
|
|
161
|
+
todayInView: todayInView,
|
|
162
|
+
range: range,
|
|
163
|
+
view: view,
|
|
164
|
+
}); },
|
|
165
|
+
getDaygridTableProps: function () { return ({
|
|
166
|
+
locale: locale,
|
|
167
|
+
events: events,
|
|
168
|
+
eventClicked: eventClicked,
|
|
169
|
+
setEventClicked: setEventClicked,
|
|
170
|
+
eventHovered: eventHovered,
|
|
171
|
+
setEventHovered: setEventHovered,
|
|
172
|
+
handlePrev: handlePrev,
|
|
173
|
+
handleNext: handleNext,
|
|
174
|
+
calendarsMap: calendarsMap,
|
|
175
|
+
range: range,
|
|
176
|
+
view: view,
|
|
177
|
+
}); },
|
|
178
|
+
getLegendProps: function () { return ({
|
|
179
|
+
calendarsMap: calendarsMap,
|
|
180
|
+
toggleCalendarVisibility: toggleCalendarVisibility,
|
|
181
|
+
}); },
|
|
182
|
+
};
|
|
183
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CalendarEventsMap, CalendarView, CalendarViewWeeks } from "./types";
|
|
2
|
+
export declare function getEventTimestamp(dateLike: number | Date | string): number;
|
|
3
|
+
export declare function getDisplayTime(date: Date): string;
|
|
4
|
+
export declare function getStartDate(date: Date, view: CalendarView): Date;
|
|
5
|
+
export declare function getEndDate(start: Date, view: CalendarView): Date;
|
|
6
|
+
export declare function getPrevDate(date: Date, view: CalendarView): Date;
|
|
7
|
+
export declare function getNextDate(date: Date, view: CalendarView): Date;
|
|
8
|
+
export declare function isTodayInView(start: Date, end: Date): boolean;
|
|
9
|
+
export declare function mergeCalendarEvents(first: CalendarEventsMap, second: CalendarEventsMap): CalendarEventsMap;
|
|
10
|
+
export declare function addCalendarEvents(toAdd: CalendarEventsMap, toExtend: CalendarEventsMap): CalendarEventsMap;
|
|
11
|
+
export declare function processEventsInView(eventsMap: CalendarEventsMap, calendarView: CalendarView, month: number, weeks: Date[]): CalendarViewWeeks;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
import isWithinInterval from "date-fns/isWithinInterval";
|
|
3
|
+
import endOfMonth from "date-fns/endOfMonth";
|
|
4
|
+
import startOfWeek from "date-fns/startOfWeek";
|
|
5
|
+
import endOfWeek from "date-fns/endOfWeek";
|
|
6
|
+
import subMonths from "date-fns/subMonths";
|
|
7
|
+
import addMonths from "date-fns/addMonths";
|
|
8
|
+
import subWeeks from "date-fns/subWeeks";
|
|
9
|
+
import addWeeks from "date-fns/addWeeks";
|
|
10
|
+
import addDays from "date-fns/addDays";
|
|
11
|
+
export function getEventTimestamp(dateLike) {
|
|
12
|
+
var date = new Date(dateLike);
|
|
13
|
+
date.setHours(0, 0, 0, 0);
|
|
14
|
+
return date.valueOf() / 1000;
|
|
15
|
+
}
|
|
16
|
+
export function getDisplayTime(date) {
|
|
17
|
+
return (date.getHours() +
|
|
18
|
+
":" +
|
|
19
|
+
"0".repeat(2 - date.getMinutes().toString().length) +
|
|
20
|
+
date.getMinutes());
|
|
21
|
+
}
|
|
22
|
+
export function getStartDate(date, view) {
|
|
23
|
+
date.setHours(0, 0, 0);
|
|
24
|
+
if (view === "month") {
|
|
25
|
+
date.setDate(1);
|
|
26
|
+
}
|
|
27
|
+
else if (view === "week") {
|
|
28
|
+
date = startOfWeek(date, { weekStartsOn: 1 });
|
|
29
|
+
}
|
|
30
|
+
return date;
|
|
31
|
+
}
|
|
32
|
+
export function getEndDate(start, view) {
|
|
33
|
+
var end = start;
|
|
34
|
+
if (view === "month") {
|
|
35
|
+
end = endOfMonth(start);
|
|
36
|
+
}
|
|
37
|
+
else if (view === "week") {
|
|
38
|
+
end = endOfWeek(start, { weekStartsOn: 1 });
|
|
39
|
+
}
|
|
40
|
+
end.setHours(23, 59, 59);
|
|
41
|
+
return end;
|
|
42
|
+
}
|
|
43
|
+
export function getPrevDate(date, view) {
|
|
44
|
+
if (view === "month") {
|
|
45
|
+
return subMonths(date, 1);
|
|
46
|
+
}
|
|
47
|
+
return subWeeks(date, 1);
|
|
48
|
+
}
|
|
49
|
+
export function getNextDate(date, view) {
|
|
50
|
+
if (view === "month") {
|
|
51
|
+
return addMonths(date, 1);
|
|
52
|
+
}
|
|
53
|
+
return addWeeks(date, 1);
|
|
54
|
+
}
|
|
55
|
+
export function isTodayInView(start, end) {
|
|
56
|
+
return isWithinInterval(new Date(), { start: start, end: end });
|
|
57
|
+
}
|
|
58
|
+
export function mergeCalendarEvents(first, second) {
|
|
59
|
+
var all = {};
|
|
60
|
+
addCalendarEvents(first, all);
|
|
61
|
+
addCalendarEvents(second, all);
|
|
62
|
+
return all;
|
|
63
|
+
}
|
|
64
|
+
export function addCalendarEvents(toAdd, toExtend) {
|
|
65
|
+
for (var id in toAdd) {
|
|
66
|
+
var event_1 = toAdd[id];
|
|
67
|
+
toExtend[id] = event_1;
|
|
68
|
+
}
|
|
69
|
+
return toExtend;
|
|
70
|
+
}
|
|
71
|
+
function getEventsByTimestamp(events) {
|
|
72
|
+
var output = {};
|
|
73
|
+
var _loop_1 = function (uid) {
|
|
74
|
+
var event_2 = events[uid];
|
|
75
|
+
event_2.days.forEach(function (timestamp) {
|
|
76
|
+
output[timestamp] = (output[timestamp] || {});
|
|
77
|
+
output[timestamp][uid] = event_2;
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
for (var uid in events) {
|
|
81
|
+
_loop_1(uid);
|
|
82
|
+
}
|
|
83
|
+
return output;
|
|
84
|
+
}
|
|
85
|
+
function getSortedEvents(events) {
|
|
86
|
+
var output = [];
|
|
87
|
+
for (var uid in events) {
|
|
88
|
+
output.push(events[uid]);
|
|
89
|
+
}
|
|
90
|
+
// sort events first multi, then all day then by start then by created date
|
|
91
|
+
output.sort(function (a, b) {
|
|
92
|
+
var multi = Number(b.multi) - Number(a.multi);
|
|
93
|
+
var allDay = Number(b.allDay) - Number(a.allDay);
|
|
94
|
+
var start = a.start.getTime() - b.start.getTime();
|
|
95
|
+
var created = a.created.getTime() - b.created.getTime();
|
|
96
|
+
return multi || allDay || start || created;
|
|
97
|
+
});
|
|
98
|
+
return output;
|
|
99
|
+
}
|
|
100
|
+
var FREE_SLOT = 0;
|
|
101
|
+
var BUSY_SLOT = 1;
|
|
102
|
+
export function processEventsInView(eventsMap, calendarView, month, weeks) {
|
|
103
|
+
var eventsByTimestamp = getEventsByTimestamp(eventsMap);
|
|
104
|
+
var eventsList = getSortedEvents(eventsMap);
|
|
105
|
+
var todayDate = new Date();
|
|
106
|
+
var todayTimestamp = getEventTimestamp(todayDate);
|
|
107
|
+
var startedAtTopMap = {};
|
|
108
|
+
var viewWeeks = [];
|
|
109
|
+
var _loop_2 = function (weekIdx) {
|
|
110
|
+
var viewWeek = {
|
|
111
|
+
props: { key: "week.".concat(weekIdx) },
|
|
112
|
+
days: [],
|
|
113
|
+
};
|
|
114
|
+
var weekStartDate = weeks[weekIdx];
|
|
115
|
+
var weekStartDay = weekStartDate.getDate();
|
|
116
|
+
var weekStartTimestamp = getEventTimestamp(new Date(weekStartDate));
|
|
117
|
+
var weekEndTimestamp = getEventTimestamp(addDays(new Date(weekStartDate), 6));
|
|
118
|
+
for (var dayNumber = 0; dayNumber < 7; dayNumber++) {
|
|
119
|
+
var dayDate = new Date(new Date(weekStartDate).setDate(weekStartDay + dayNumber));
|
|
120
|
+
var dayTimestamp = getEventTimestamp(dayDate);
|
|
121
|
+
var $isToday = todayTimestamp === dayTimestamp;
|
|
122
|
+
var $isOutOfRange = calendarView === "month" && dayDate.getMonth() !== month;
|
|
123
|
+
var contextualProps = {
|
|
124
|
+
$isToday: $isToday,
|
|
125
|
+
$isOutOfRange: $isOutOfRange,
|
|
126
|
+
};
|
|
127
|
+
var viewDay = {
|
|
128
|
+
props: __assign({ key: "day.".concat(dayTimestamp) }, contextualProps),
|
|
129
|
+
timestamp: dayTimestamp + "",
|
|
130
|
+
label: dayDate.getDate() + "",
|
|
131
|
+
events: [],
|
|
132
|
+
};
|
|
133
|
+
// check that we have events in this day
|
|
134
|
+
if (eventsByTimestamp === null || eventsByTimestamp === void 0 ? void 0 : eventsByTimestamp[dayTimestamp]) {
|
|
135
|
+
var verticalSlots = Object.keys(eventsByTimestamp[dayTimestamp]).map(function () { return FREE_SLOT; });
|
|
136
|
+
for (var eventIdx = 0; eventIdx < eventsList.length; eventIdx++) {
|
|
137
|
+
var event_3 = eventsList[eventIdx];
|
|
138
|
+
var width = 1;
|
|
139
|
+
var top_1 = 0;
|
|
140
|
+
var firstOfMulti = void 0;
|
|
141
|
+
if (!event_3.daysMap[dayTimestamp]) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
// only for multi days events:
|
|
145
|
+
if (event_3.multi) {
|
|
146
|
+
// filter out the days outside of the current week view to avoid
|
|
147
|
+
// making a multi-days event chip wider than the week row or shorter
|
|
148
|
+
// than it should be (when event spans across weeks)
|
|
149
|
+
width = event_3.days.filter(function (t) { return t >= weekStartTimestamp && t <= weekEndTimestamp; }).length;
|
|
150
|
+
// flag the first day of multi-days events, consider that an event
|
|
151
|
+
// might start in a day earlier (hence outside) of the current
|
|
152
|
+
// week/month view, so we always check for Mondays (dayNumber === 0)
|
|
153
|
+
if (event_3.days.indexOf(dayTimestamp) === 0 || dayNumber === 0) {
|
|
154
|
+
firstOfMulti = true;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// if we already have the information on when the event has been
|
|
158
|
+
// vertically positioned use that index
|
|
159
|
+
if (startedAtTopMap[event_3.uid]) {
|
|
160
|
+
top_1 = startedAtTopMap[event_3.uid];
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
// now look for a free slot and use its index as `top`
|
|
164
|
+
for (var verticalIdx = 0; verticalIdx < verticalSlots.length; verticalIdx++) {
|
|
165
|
+
var freeOrBusy = verticalSlots[verticalIdx];
|
|
166
|
+
if (freeOrBusy !== BUSY_SLOT) {
|
|
167
|
+
top_1 = verticalIdx;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// now mark the slot as busy
|
|
173
|
+
verticalSlots[top_1] = BUSY_SLOT;
|
|
174
|
+
// store the slot vertical position consistently for multi-days events
|
|
175
|
+
if (firstOfMulti) {
|
|
176
|
+
startedAtTopMap[event_3.uid] = top_1;
|
|
177
|
+
}
|
|
178
|
+
// push the event, they will be sorted later
|
|
179
|
+
viewDay.events.push(__assign(__assign(__assign({ key: "event.".concat(dayTimestamp, "-").concat(top_1) }, contextualProps), event_3), { isPast: todayDate > event_3.end, firstOfMulti: firstOfMulti, top: top_1, width: width }));
|
|
180
|
+
}
|
|
181
|
+
// fill the empty slots with events' placeholders
|
|
182
|
+
for (var i = 0; i < verticalSlots.length; i++) {
|
|
183
|
+
if (verticalSlots[i] !== BUSY_SLOT) {
|
|
184
|
+
viewDay.events.push({
|
|
185
|
+
key: "event.".concat(dayTimestamp, "-").concat(i, "}"),
|
|
186
|
+
placeholder: true,
|
|
187
|
+
top: i,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// sort events and events placeholders by top position
|
|
192
|
+
viewDay.events.sort(function (a, b) { return a.top - b.top; });
|
|
193
|
+
}
|
|
194
|
+
viewWeek.days.push(viewDay);
|
|
195
|
+
}
|
|
196
|
+
viewWeeks.push(viewWeek);
|
|
197
|
+
};
|
|
198
|
+
for (var weekIdx = 0; weekIdx < weeks.length; weekIdx++) {
|
|
199
|
+
_loop_2(weekIdx);
|
|
200
|
+
}
|
|
201
|
+
return viewWeeks;
|
|
202
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const KoineCarousel: null;
|