@sunsama/event-calendar 0.2.0
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/LICENSE +20 -0
- package/README.md +105 -0
- package/lib/commonjs/components/all-day-events.js +117 -0
- package/lib/commonjs/components/all-day-events.js.map +1 -0
- package/lib/commonjs/components/background-hours-content.js +43 -0
- package/lib/commonjs/components/background-hours-content.js.map +1 -0
- package/lib/commonjs/components/background-hours-layout.js +57 -0
- package/lib/commonjs/components/background-hours-layout.js.map +1 -0
- package/lib/commonjs/components/drag-bar.js +84 -0
- package/lib/commonjs/components/drag-bar.js.map +1 -0
- package/lib/commonjs/components/edit-event-container.js +114 -0
- package/lib/commonjs/components/edit-event-container.js.map +1 -0
- package/lib/commonjs/components/event-container.js +37 -0
- package/lib/commonjs/components/event-container.js.map +1 -0
- package/lib/commonjs/components/new-event-container.js +73 -0
- package/lib/commonjs/components/new-event-container.js.map +1 -0
- package/lib/commonjs/components/time-indicator.js +64 -0
- package/lib/commonjs/components/time-indicator.js.map +1 -0
- package/lib/commonjs/components/timed-event-container.js +91 -0
- package/lib/commonjs/components/timed-event-container.js.map +1 -0
- package/lib/commonjs/components/timed-events.js +68 -0
- package/lib/commonjs/components/timed-events.js.map +1 -0
- package/lib/commonjs/components/zoom-provider.js +109 -0
- package/lib/commonjs/components/zoom-provider.js.map +1 -0
- package/lib/commonjs/enums.js +2 -0
- package/lib/commonjs/enums.js.map +1 -0
- package/lib/commonjs/hooks/use-cloned-events.js +25 -0
- package/lib/commonjs/hooks/use-cloned-events.js.map +1 -0
- package/lib/commonjs/hooks/use-events-layout.js +34 -0
- package/lib/commonjs/hooks/use-events-layout.js.map +1 -0
- package/lib/commonjs/hooks/use-is-editing.js +83 -0
- package/lib/commonjs/hooks/use-is-editing.js.map +1 -0
- package/lib/commonjs/index.js +129 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/types.js +24 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/calendar-layout.js +113 -0
- package/lib/commonjs/utils/calendar-layout.js.map +1 -0
- package/lib/commonjs/utils/compute-positioning.js +33 -0
- package/lib/commonjs/utils/compute-positioning.js.map +1 -0
- package/lib/commonjs/utils/date-utils.js +152 -0
- package/lib/commonjs/utils/date-utils.js.map +1 -0
- package/lib/commonjs/utils/double-tap-reset-zoom-gesture.js +19 -0
- package/lib/commonjs/utils/double-tap-reset-zoom-gesture.js.map +1 -0
- package/lib/commonjs/utils/generate-event-layouts.js +198 -0
- package/lib/commonjs/utils/generate-event-layouts.js.map +1 -0
- package/lib/commonjs/utils/globals.js +11 -0
- package/lib/commonjs/utils/globals.js.map +1 -0
- package/lib/commonjs/utils/pan-edit-event-gesture.js +41 -0
- package/lib/commonjs/utils/pan-edit-event-gesture.js.map +1 -0
- package/lib/module/components/all-day-events.js +110 -0
- package/lib/module/components/all-day-events.js.map +1 -0
- package/lib/module/components/background-hours-content.js +37 -0
- package/lib/module/components/background-hours-content.js.map +1 -0
- package/lib/module/components/background-hours-layout.js +51 -0
- package/lib/module/components/background-hours-layout.js.map +1 -0
- package/lib/module/components/drag-bar.js +78 -0
- package/lib/module/components/drag-bar.js.map +1 -0
- package/lib/module/components/edit-event-container.js +107 -0
- package/lib/module/components/edit-event-container.js.map +1 -0
- package/lib/module/components/event-container.js +33 -0
- package/lib/module/components/event-container.js.map +1 -0
- package/lib/module/components/new-event-container.js +67 -0
- package/lib/module/components/new-event-container.js.map +1 -0
- package/lib/module/components/time-indicator.js +57 -0
- package/lib/module/components/time-indicator.js.map +1 -0
- package/lib/module/components/timed-event-container.js +84 -0
- package/lib/module/components/timed-event-container.js.map +1 -0
- package/lib/module/components/timed-events.js +63 -0
- package/lib/module/components/timed-events.js.map +1 -0
- package/lib/module/components/zoom-provider.js +102 -0
- package/lib/module/components/zoom-provider.js.map +1 -0
- package/lib/module/enums.js +2 -0
- package/lib/module/enums.js.map +1 -0
- package/lib/module/hooks/use-cloned-events.js +21 -0
- package/lib/module/hooks/use-cloned-events.js.map +1 -0
- package/lib/module/hooks/use-events-layout.js +29 -0
- package/lib/module/hooks/use-events-layout.js.map +1 -0
- package/lib/module/hooks/use-is-editing.js +75 -0
- package/lib/module/hooks/use-is-editing.js.map +1 -0
- package/lib/module/index.js +124 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types.js +20 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/calendar-layout.js +108 -0
- package/lib/module/utils/calendar-layout.js.map +1 -0
- package/lib/module/utils/compute-positioning.js +28 -0
- package/lib/module/utils/compute-positioning.js.map +1 -0
- package/lib/module/utils/date-utils.js +139 -0
- package/lib/module/utils/date-utils.js.map +1 -0
- package/lib/module/utils/double-tap-reset-zoom-gesture.js +15 -0
- package/lib/module/utils/double-tap-reset-zoom-gesture.js.map +1 -0
- package/lib/module/utils/generate-event-layouts.js +192 -0
- package/lib/module/utils/generate-event-layouts.js.map +1 -0
- package/lib/module/utils/globals.js +7 -0
- package/lib/module/utils/globals.js.map +1 -0
- package/lib/module/utils/pan-edit-event-gesture.js +37 -0
- package/lib/module/utils/pan-edit-event-gesture.js.map +1 -0
- package/lib/typescript/commonjs/components/all-day-events.d.ts +3 -0
- package/lib/typescript/commonjs/components/all-day-events.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/background-hours-content.d.ts +7 -0
- package/lib/typescript/commonjs/components/background-hours-content.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/background-hours-layout.d.ts +7 -0
- package/lib/typescript/commonjs/components/background-hours-layout.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/drag-bar.d.ts +14 -0
- package/lib/typescript/commonjs/components/drag-bar.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/edit-event-container.d.ts +7 -0
- package/lib/typescript/commonjs/components/edit-event-container.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/event-container.d.ts +7 -0
- package/lib/typescript/commonjs/components/event-container.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/new-event-container.d.ts +3 -0
- package/lib/typescript/commonjs/components/new-event-container.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/time-indicator.d.ts +3 -0
- package/lib/typescript/commonjs/components/time-indicator.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/timed-event-container.d.ts +9 -0
- package/lib/typescript/commonjs/components/timed-event-container.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/timed-events.d.ts +7 -0
- package/lib/typescript/commonjs/components/timed-events.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/zoom-provider.d.ts +7 -0
- package/lib/typescript/commonjs/components/zoom-provider.d.ts.map +1 -0
- package/lib/typescript/commonjs/enums.d.ts +2 -0
- package/lib/typescript/commonjs/enums.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/use-cloned-events.d.ts +11 -0
- package/lib/typescript/commonjs/hooks/use-cloned-events.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/use-events-layout.d.ts +13 -0
- package/lib/typescript/commonjs/hooks/use-events-layout.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/use-is-editing.d.ts +17 -0
- package/lib/typescript/commonjs/hooks/use-is-editing.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +27 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/types.d.ts +128 -0
- package/lib/typescript/commonjs/types.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/__tests___/compute-positioning.test.d.ts +2 -0
- package/lib/typescript/commonjs/utils/__tests___/compute-positioning.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/__tests___/date-utils.test.d.ts +2 -0
- package/lib/typescript/commonjs/utils/__tests___/date-utils.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/__tests___/generate-event-layout.test.d.ts +2 -0
- package/lib/typescript/commonjs/utils/__tests___/generate-event-layout.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/calendar-layout.d.ts +36 -0
- package/lib/typescript/commonjs/utils/calendar-layout.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/compute-positioning.d.ts +10 -0
- package/lib/typescript/commonjs/utils/compute-positioning.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/date-utils.d.ts +30 -0
- package/lib/typescript/commonjs/utils/date-utils.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/double-tap-reset-zoom-gesture.d.ts +5 -0
- package/lib/typescript/commonjs/utils/double-tap-reset-zoom-gesture.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/generate-event-layouts.d.ts +15 -0
- package/lib/typescript/commonjs/utils/generate-event-layouts.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/globals.d.ts +5 -0
- package/lib/typescript/commonjs/utils/globals.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/pan-edit-event-gesture.d.ts +6 -0
- package/lib/typescript/commonjs/utils/pan-edit-event-gesture.d.ts.map +1 -0
- package/lib/typescript/module/components/all-day-events.d.ts +3 -0
- package/lib/typescript/module/components/all-day-events.d.ts.map +1 -0
- package/lib/typescript/module/components/background-hours-content.d.ts +7 -0
- package/lib/typescript/module/components/background-hours-content.d.ts.map +1 -0
- package/lib/typescript/module/components/background-hours-layout.d.ts +7 -0
- package/lib/typescript/module/components/background-hours-layout.d.ts.map +1 -0
- package/lib/typescript/module/components/drag-bar.d.ts +14 -0
- package/lib/typescript/module/components/drag-bar.d.ts.map +1 -0
- package/lib/typescript/module/components/edit-event-container.d.ts +7 -0
- package/lib/typescript/module/components/edit-event-container.d.ts.map +1 -0
- package/lib/typescript/module/components/event-container.d.ts +7 -0
- package/lib/typescript/module/components/event-container.d.ts.map +1 -0
- package/lib/typescript/module/components/new-event-container.d.ts +3 -0
- package/lib/typescript/module/components/new-event-container.d.ts.map +1 -0
- package/lib/typescript/module/components/time-indicator.d.ts +3 -0
- package/lib/typescript/module/components/time-indicator.d.ts.map +1 -0
- package/lib/typescript/module/components/timed-event-container.d.ts +9 -0
- package/lib/typescript/module/components/timed-event-container.d.ts.map +1 -0
- package/lib/typescript/module/components/timed-events.d.ts +7 -0
- package/lib/typescript/module/components/timed-events.d.ts.map +1 -0
- package/lib/typescript/module/components/zoom-provider.d.ts +7 -0
- package/lib/typescript/module/components/zoom-provider.d.ts.map +1 -0
- package/lib/typescript/module/enums.d.ts +2 -0
- package/lib/typescript/module/enums.d.ts.map +1 -0
- package/lib/typescript/module/hooks/use-cloned-events.d.ts +11 -0
- package/lib/typescript/module/hooks/use-cloned-events.d.ts.map +1 -0
- package/lib/typescript/module/hooks/use-events-layout.d.ts +13 -0
- package/lib/typescript/module/hooks/use-events-layout.d.ts.map +1 -0
- package/lib/typescript/module/hooks/use-is-editing.d.ts +17 -0
- package/lib/typescript/module/hooks/use-is-editing.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +27 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/types.d.ts +128 -0
- package/lib/typescript/module/types.d.ts.map +1 -0
- package/lib/typescript/module/utils/__tests___/compute-positioning.test.d.ts +2 -0
- package/lib/typescript/module/utils/__tests___/compute-positioning.test.d.ts.map +1 -0
- package/lib/typescript/module/utils/__tests___/date-utils.test.d.ts +2 -0
- package/lib/typescript/module/utils/__tests___/date-utils.test.d.ts.map +1 -0
- package/lib/typescript/module/utils/__tests___/generate-event-layout.test.d.ts +2 -0
- package/lib/typescript/module/utils/__tests___/generate-event-layout.test.d.ts.map +1 -0
- package/lib/typescript/module/utils/calendar-layout.d.ts +36 -0
- package/lib/typescript/module/utils/calendar-layout.d.ts.map +1 -0
- package/lib/typescript/module/utils/compute-positioning.d.ts +10 -0
- package/lib/typescript/module/utils/compute-positioning.d.ts.map +1 -0
- package/lib/typescript/module/utils/date-utils.d.ts +30 -0
- package/lib/typescript/module/utils/date-utils.d.ts.map +1 -0
- package/lib/typescript/module/utils/double-tap-reset-zoom-gesture.d.ts +5 -0
- package/lib/typescript/module/utils/double-tap-reset-zoom-gesture.d.ts.map +1 -0
- package/lib/typescript/module/utils/generate-event-layouts.d.ts +15 -0
- package/lib/typescript/module/utils/generate-event-layouts.d.ts.map +1 -0
- package/lib/typescript/module/utils/globals.d.ts +5 -0
- package/lib/typescript/module/utils/globals.d.ts.map +1 -0
- package/lib/typescript/module/utils/pan-edit-event-gesture.d.ts +6 -0
- package/lib/typescript/module/utils/pan-edit-event-gesture.d.ts.map +1 -0
- package/package.json +195 -0
- package/src/components/all-day-events.tsx +134 -0
- package/src/components/background-hours-content.tsx +51 -0
- package/src/components/background-hours-layout.tsx +61 -0
- package/src/components/drag-bar.tsx +120 -0
- package/src/components/edit-event-container.tsx +158 -0
- package/src/components/event-container.tsx +44 -0
- package/src/components/new-event-container.tsx +90 -0
- package/src/components/time-indicator.tsx +72 -0
- package/src/components/timed-event-container.tsx +124 -0
- package/src/components/timed-events.tsx +72 -0
- package/src/components/zoom-provider.tsx +146 -0
- package/src/enums.ts +0 -0
- package/src/hooks/use-cloned-events.ts +26 -0
- package/src/hooks/use-events-layout.ts +55 -0
- package/src/hooks/use-is-editing.tsx +109 -0
- package/src/index.tsx +165 -0
- package/src/types.ts +163 -0
- package/src/utils/__tests___/compute-positioning.test.ts +255 -0
- package/src/utils/__tests___/date-utils.test.ts +41 -0
- package/src/utils/__tests___/generate-event-layout.test.ts +277 -0
- package/src/utils/calendar-layout.ts +139 -0
- package/src/utils/compute-positioning.ts +44 -0
- package/src/utils/date-utils.ts +238 -0
- package/src/utils/double-tap-reset-zoom-gesture.ts +23 -0
- package/src/utils/generate-event-layouts.ts +314 -0
- package/src/utils/globals.ts +8 -0
- package/src/utils/pan-edit-event-gesture.ts +64 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useContext, useEffect, useRef } from "react";
|
|
4
|
+
import { useIsEditing } from "src/hooks/use-is-editing";
|
|
5
|
+
import { ConfigProvider } from "src/utils/globals";
|
|
6
|
+
import { Gesture, GestureDetector } from "react-native-gesture-handler";
|
|
7
|
+
import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle, useDerivedValue, useSharedValue } from "react-native-reanimated";
|
|
8
|
+
import { EventExtend } from "src/types";
|
|
9
|
+
import gesturePan from "src/utils/pan-edit-event-gesture";
|
|
10
|
+
import DragBar from "src/components/drag-bar";
|
|
11
|
+
import { StyleSheet } from "react-native";
|
|
12
|
+
import moment from "moment-timezone";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const EditEventContainer = /*#__PURE__*/memo(({
|
|
15
|
+
refNewEvent
|
|
16
|
+
}) => {
|
|
17
|
+
const {
|
|
18
|
+
currentY,
|
|
19
|
+
isEditing: editingEvent,
|
|
20
|
+
setIsEditing
|
|
21
|
+
} = useIsEditing();
|
|
22
|
+
const {
|
|
23
|
+
maximumHour,
|
|
24
|
+
fiveMinuteInterval,
|
|
25
|
+
renderDragBars,
|
|
26
|
+
zoomLevel,
|
|
27
|
+
renderEvent,
|
|
28
|
+
timezone,
|
|
29
|
+
dayDate
|
|
30
|
+
} = useContext(ConfigProvider);
|
|
31
|
+
const height = useSharedValue(0);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (editingEvent) {
|
|
34
|
+
height.value = editingEvent.position.height * zoomLevel.value;
|
|
35
|
+
currentY.value = editingEvent.position.top * zoomLevel.value;
|
|
36
|
+
}
|
|
37
|
+
}, [height, editingEvent, currentY, zoomLevel]);
|
|
38
|
+
useAnimatedReaction(() => zoomLevel.value, zoom => {
|
|
39
|
+
if (editingEvent) {
|
|
40
|
+
height.value = editingEvent.position.height * zoom;
|
|
41
|
+
currentY.value = editingEvent.position.top * zoom;
|
|
42
|
+
}
|
|
43
|
+
}, [height, currentY, zoomLevel, editingEvent]);
|
|
44
|
+
const styleAnimatedPosition = useAnimatedStyle(() => {
|
|
45
|
+
if (!editingEvent) {
|
|
46
|
+
return {
|
|
47
|
+
opacity: 0
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
marginLeft: StyleSheet.hairlineWidth,
|
|
52
|
+
position: "absolute",
|
|
53
|
+
height: height.value,
|
|
54
|
+
top: currentY.value,
|
|
55
|
+
opacity: 1,
|
|
56
|
+
width: "100%"
|
|
57
|
+
};
|
|
58
|
+
}, [editingEvent]);
|
|
59
|
+
const startY = useSharedValue(0);
|
|
60
|
+
const updatedStart = useDerivedValue(() => {
|
|
61
|
+
return currentY.value / zoomLevel.value;
|
|
62
|
+
}, []);
|
|
63
|
+
const updatedEnd = useDerivedValue(() => {
|
|
64
|
+
return (currentY.value + height.value) / zoomLevel.value;
|
|
65
|
+
}, []);
|
|
66
|
+
const endEventEditing = useCallback((newStart, newEnd) => {
|
|
67
|
+
// Format the new start and end times
|
|
68
|
+
setIsEditing(null, {
|
|
69
|
+
updatedStart: moment.tz(dayDate, timezone).minutes(newStart).format(),
|
|
70
|
+
updatedEnd: moment.tz(dayDate, timezone).minutes(newEnd).format()
|
|
71
|
+
});
|
|
72
|
+
}, [dayDate, setIsEditing, timezone]);
|
|
73
|
+
const gestureTap = Gesture.Tap().numberOfTaps(1).onStart(() => {
|
|
74
|
+
runOnJS(endEventEditing)(updatedStart.value, updatedEnd.value);
|
|
75
|
+
});
|
|
76
|
+
const refMainContainer = useRef();
|
|
77
|
+
if (!editingEvent) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return /*#__PURE__*/_jsx(GestureDetector, {
|
|
81
|
+
gesture: Gesture.Simultaneous(gestureTap, gesturePan(startY, currentY, currentY, zoomLevel, maximumHour, height, refNewEvent, fiveMinuteInterval).withRef(refMainContainer)),
|
|
82
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
83
|
+
style: styleAnimatedPosition,
|
|
84
|
+
children: [renderEvent(editingEvent.event, EventExtend.None, height, {
|
|
85
|
+
updatedEnd,
|
|
86
|
+
updatedStart
|
|
87
|
+
}), renderDragBars?.top ? /*#__PURE__*/_jsx(DragBar, {
|
|
88
|
+
top: currentY,
|
|
89
|
+
height: height,
|
|
90
|
+
render: renderDragBars.top,
|
|
91
|
+
refMainContainer: refMainContainer,
|
|
92
|
+
zoomLevel: zoomLevel,
|
|
93
|
+
maximumHour: maximumHour,
|
|
94
|
+
fiveMinuteInterval: fiveMinuteInterval
|
|
95
|
+
}) : null, renderDragBars?.bottom ? /*#__PURE__*/_jsx(DragBar, {
|
|
96
|
+
height: height,
|
|
97
|
+
render: renderDragBars.bottom,
|
|
98
|
+
refMainContainer: refMainContainer,
|
|
99
|
+
zoomLevel: zoomLevel,
|
|
100
|
+
maximumHour: maximumHour,
|
|
101
|
+
fiveMinuteInterval: fiveMinuteInterval
|
|
102
|
+
}) : null]
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
}, () => true);
|
|
106
|
+
export default EditEventContainer;
|
|
107
|
+
//# sourceMappingURL=edit-event-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useContext","useEffect","useRef","useIsEditing","ConfigProvider","Gesture","GestureDetector","Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useDerivedValue","useSharedValue","EventExtend","gesturePan","DragBar","StyleSheet","moment","jsx","_jsx","jsxs","_jsxs","EditEventContainer","refNewEvent","currentY","isEditing","editingEvent","setIsEditing","maximumHour","fiveMinuteInterval","renderDragBars","zoomLevel","renderEvent","timezone","dayDate","height","value","position","top","zoom","styleAnimatedPosition","opacity","marginLeft","hairlineWidth","width","startY","updatedStart","updatedEnd","endEventEditing","newStart","newEnd","tz","minutes","format","gestureTap","Tap","numberOfTaps","onStart","refMainContainer","gesture","Simultaneous","withRef","children","View","style","event","None","render","bottom"],"sourceRoot":"../../../src","sources":["components/edit-event-container.tsx"],"mappings":";;AAAA,SACEA,IAAI,EAEJC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,MAAM,QACD,OAAO;AACd,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA8B;AACvE,OAAOC,QAAQ,IACbC,OAAO,EACPC,mBAAmB,EACnBC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACT,yBAAyB;AAChC,SAASC,WAAW,QAAQ,WAAW;AACvC,OAAOC,UAAU,MAAM,kCAAkC;AACzD,OAAOC,OAAO,MAAM,yBAAyB;AAC7C,SAASC,UAAU,QAAQ,cAAc;AACzC,OAAOC,MAAM,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMrC,MAAMC,kBAAkB,gBAAGxB,IAAI,CAC7B,CAAC;EAAEyB;AAAqC,CAAC,KAAK;EAC5C,MAAM;IAAEC,QAAQ;IAAEC,SAAS,EAAEC,YAAY;IAAEC;EAAa,CAAC,GAAGxB,YAAY,CAAC,CAAC;EAC1E,MAAM;IACJyB,WAAW;IACXC,kBAAkB;IAClBC,cAAc;IACdC,SAAS;IACTC,WAAW;IACXC,QAAQ;IACRC;EACF,CAAC,GAAGlC,UAAU,CAACI,cAAc,CAAC;EAC9B,MAAM+B,MAAM,GAAGvB,cAAc,CAAC,CAAC,CAAC;EAEhCX,SAAS,CAAC,MAAM;IACd,IAAIyB,YAAY,EAAE;MAChBS,MAAM,CAACC,KAAK,GAAGV,YAAY,CAACW,QAAQ,CAACF,MAAM,GAAGJ,SAAS,CAACK,KAAK;MAC7DZ,QAAQ,CAACY,KAAK,GAAGV,YAAY,CAACW,QAAQ,CAACC,GAAG,GAAGP,SAAS,CAACK,KAAK;IAC9D;EACF,CAAC,EAAE,CAACD,MAAM,EAAET,YAAY,EAAEF,QAAQ,EAAEO,SAAS,CAAC,CAAC;EAE/CtB,mBAAmB,CACjB,MAAMsB,SAAS,CAACK,KAAK,EACpBG,IAAI,IAAK;IACR,IAAIb,YAAY,EAAE;MAChBS,MAAM,CAACC,KAAK,GAAGV,YAAY,CAACW,QAAQ,CAACF,MAAM,GAAGI,IAAI;MAClDf,QAAQ,CAACY,KAAK,GAAGV,YAAY,CAACW,QAAQ,CAACC,GAAG,GAAGC,IAAI;IACnD;EACF,CAAC,EACD,CAACJ,MAAM,EAAEX,QAAQ,EAAEO,SAAS,EAAEL,YAAY,CAC5C,CAAC;EAED,MAAMc,qBAAqB,GAAG9B,gBAAgB,CAAC,MAAM;IACnD,IAAI,CAACgB,YAAY,EAAE;MACjB,OAAO;QAAEe,OAAO,EAAE;MAAE,CAAC;IACvB;IAEA,OAAO;MACLC,UAAU,EAAE1B,UAAU,CAAC2B,aAAa;MACpCN,QAAQ,EAAE,UAAU;MACpBF,MAAM,EAAEA,MAAM,CAACC,KAAK;MACpBE,GAAG,EAAEd,QAAQ,CAACY,KAAK;MACnBK,OAAO,EAAE,CAAC;MACVG,KAAK,EAAE;IACT,CAAC;EACH,CAAC,EAAE,CAAClB,YAAY,CAAC,CAAC;EAElB,MAAMmB,MAAM,GAAGjC,cAAc,CAAC,CAAC,CAAC;EAEhC,MAAMkC,YAAY,GAAGnC,eAAe,CAAC,MAAM;IACzC,OAAOa,QAAQ,CAACY,KAAK,GAAGL,SAAS,CAACK,KAAK;EACzC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMW,UAAU,GAAGpC,eAAe,CAAC,MAAM;IACvC,OAAO,CAACa,QAAQ,CAACY,KAAK,GAAGD,MAAM,CAACC,KAAK,IAAIL,SAAS,CAACK,KAAK;EAC1D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMY,eAAe,GAAGjD,WAAW,CACjC,CAACkD,QAAgB,EAAEC,MAAc,KAAK;IACpC;IACAvB,YAAY,CAAC,IAAI,EAAE;MACjBmB,YAAY,EAAE7B,MAAM,CAACkC,EAAE,CAACjB,OAAO,EAAED,QAAQ,CAAC,CAACmB,OAAO,CAACH,QAAQ,CAAC,CAACI,MAAM,CAAC,CAAC;MACrEN,UAAU,EAAE9B,MAAM,CAACkC,EAAE,CAACjB,OAAO,EAAED,QAAQ,CAAC,CAACmB,OAAO,CAACF,MAAM,CAAC,CAACG,MAAM,CAAC;IAClE,CAAC,CAAC;EACJ,CAAC,EACD,CAACnB,OAAO,EAAEP,YAAY,EAAEM,QAAQ,CAClC,CAAC;EAED,MAAMqB,UAAU,GAAGjD,OAAO,CAACkD,GAAG,CAAC,CAAC,CAC7BC,YAAY,CAAC,CAAC,CAAC,CACfC,OAAO,CAAC,MAAM;IACbjD,OAAO,CAACwC,eAAe,CAAC,CAACF,YAAY,CAACV,KAAK,EAAEW,UAAU,CAACX,KAAK,CAAC;EAChE,CAAC,CAAC;EAEJ,MAAMsB,gBAAgB,GAAGxD,MAAM,CAAC,CAAC;EAEjC,IAAI,CAACwB,YAAY,EAAE;IACjB,OAAO,IAAI;EACb;EAEA,oBACEP,IAAA,CAACb,eAAe;IACdqD,OAAO,EAAEtD,OAAO,CAACuD,YAAY,CAC3BN,UAAU,EACVxC,UAAU,CACR+B,MAAM,EACNrB,QAAQ,EACRA,QAAQ,EACRO,SAAS,EACTH,WAAW,EACXO,MAAM,EACNZ,WAAW,EACXM,kBACF,CAAC,CAACgC,OAAO,CAACH,gBAAgB,CAC5B,CAAE;IAAAI,QAAA,eAEFzC,KAAA,CAACd,QAAQ,CAACwD,IAAI;MAACC,KAAK,EAAExB,qBAAsB;MAAAsB,QAAA,GACzC9B,WAAW,CAACN,YAAY,CAACuC,KAAK,EAAEpD,WAAW,CAACqD,IAAI,EAAE/B,MAAM,EAAE;QACzDY,UAAU;QACVD;MACF,CAAC,CAAC,EACDhB,cAAc,EAAEQ,GAAG,gBAClBnB,IAAA,CAACJ,OAAO;QACNuB,GAAG,EAAEd,QAAS;QACdW,MAAM,EAAEA,MAAO;QACfgC,MAAM,EAAErC,cAAc,CAACQ,GAAI;QAC3BoB,gBAAgB,EAAEA,gBAAiB;QACnC3B,SAAS,EAAEA,SAAU;QACrBH,WAAW,EAAEA,WAAY;QACzBC,kBAAkB,EAAEA;MAAmB,CACxC,CAAC,GACA,IAAI,EACPC,cAAc,EAAEsC,MAAM,gBACrBjD,IAAA,CAACJ,OAAO;QACNoB,MAAM,EAAEA,MAAO;QACfgC,MAAM,EAAErC,cAAc,CAACsC,MAAO;QAC9BV,gBAAgB,EAAEA,gBAAiB;QACnC3B,SAAS,EAAEA,SAAU;QACrBH,WAAW,EAAEA,WAAY;QACzBC,kBAAkB,EAAEA;MAAmB,CACxC,CAAC,GACA,IAAI;IAAA,CACK;EAAC,CACD,CAAC;AAEtB,CAAC,EACD,MAAM,IACR,CAAC;AAED,eAAeP,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { ConfigProvider } from "src/utils/globals";
|
|
4
|
+
import { useCallback, useContext, useMemo } from "react";
|
|
5
|
+
import { Pressable } from "react-native-gesture-handler";
|
|
6
|
+
import { View } from "react-native";
|
|
7
|
+
import { EventExtend } from "src/types";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const EventContainer = ({
|
|
10
|
+
layout
|
|
11
|
+
}) => {
|
|
12
|
+
const {
|
|
13
|
+
onPressEvent,
|
|
14
|
+
renderEvent,
|
|
15
|
+
initialZoomLevel
|
|
16
|
+
} = useContext(ConfigProvider);
|
|
17
|
+
const render = useMemo(() => renderEvent(layout.event, layout.extend ? layout.extend : EventExtend.None), [layout, renderEvent]);
|
|
18
|
+
const stylePosition = useMemo(() => ({
|
|
19
|
+
height: Math.max(28, 24 * initialZoomLevel)
|
|
20
|
+
}), [initialZoomLevel]);
|
|
21
|
+
const onPress = useCallback(() => {
|
|
22
|
+
onPressEvent && onPressEvent(layout.event);
|
|
23
|
+
}, [layout.event, onPressEvent]);
|
|
24
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
25
|
+
onPress: onPress,
|
|
26
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
27
|
+
style: stylePosition,
|
|
28
|
+
children: render
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
export default EventContainer;
|
|
33
|
+
//# sourceMappingURL=event-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ConfigProvider","useCallback","useContext","useMemo","Pressable","View","EventExtend","jsx","_jsx","EventContainer","layout","onPressEvent","renderEvent","initialZoomLevel","render","event","extend","None","stylePosition","height","Math","max","onPress","children","style"],"sourceRoot":"../../../src","sources":["components/event-container.tsx"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,mBAAmB;AAClD,SAASC,WAAW,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AACxD,SAASC,SAAS,QAAQ,8BAA8B;AACxD,SAASC,IAAI,QAAQ,cAAc;AACnC,SAAgCC,WAAW,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM/D,MAAMC,cAAc,GAAGA,CAAC;EAAEC;AAA4B,CAAC,KAAK;EAC1D,MAAM;IAAEC,YAAY;IAAEC,WAAW;IAAEC;EAAiB,CAAC,GACnDX,UAAU,CAACF,cAAc,CAAC;EAE5B,MAAMc,MAAM,GAAGX,OAAO,CACpB,MACES,WAAW,CACTF,MAAM,CAACK,KAAK,EACXL,MAAM,CAA2BM,MAAM,GACnCN,MAAM,CAA2BM,MAAM,GACxCV,WAAW,CAACW,IAClB,CAAC,EACH,CAACP,MAAM,EAAEE,WAAW,CACtB,CAAC;EAED,MAAMM,aAAa,GAAGf,OAAO,CAC3B,OAAO;IACLgB,MAAM,EAAEC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAGR,gBAAgB;EAC5C,CAAC,CAAC,EACF,CAACA,gBAAgB,CACnB,CAAC;EAED,MAAMS,OAAO,GAAGrB,WAAW,CAAC,MAAM;IAChCU,YAAY,IAAIA,YAAY,CAACD,MAAM,CAACK,KAAK,CAAC;EAC5C,CAAC,EAAE,CAACL,MAAM,CAACK,KAAK,EAAEJ,YAAY,CAAC,CAAC;EAEhC,oBACEH,IAAA,CAACJ,SAAS;IAACkB,OAAO,EAAEA,OAAQ;IAAAC,QAAA,eAC1Bf,IAAA,CAACH,IAAI;MAACmB,KAAK,EAAEN,aAAc;MAAAK,QAAA,EAAET;IAAM,CAAO;EAAC,CAClC,CAAC;AAEhB,CAAC;AAED,eAAeL,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useContext, useMemo, useState } from "react";
|
|
4
|
+
import { ConfigProvider, TOP_MARGIN_PIXEL_OFFSET } from "src/utils/globals";
|
|
5
|
+
import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle } from "react-native-reanimated";
|
|
6
|
+
import { StyleSheet, View } from "react-native";
|
|
7
|
+
import { useIsEditing } from "src/hooks/use-is-editing";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const NewEventContainer = /*#__PURE__*/memo(() => {
|
|
10
|
+
const {
|
|
11
|
+
fiveMinuteInterval,
|
|
12
|
+
renderNewEventContainer,
|
|
13
|
+
zoomLevel,
|
|
14
|
+
createY,
|
|
15
|
+
theme
|
|
16
|
+
} = useContext(ConfigProvider);
|
|
17
|
+
const {
|
|
18
|
+
isEditing
|
|
19
|
+
} = useIsEditing();
|
|
20
|
+
const styleVisible = useAnimatedStyle(() => {
|
|
21
|
+
return {
|
|
22
|
+
opacity: !isEditing && createY.value >= 0 ? 1 : 0,
|
|
23
|
+
transform: [{
|
|
24
|
+
translateY: createY.value - TOP_MARGIN_PIXEL_OFFSET
|
|
25
|
+
}],
|
|
26
|
+
height: zoomLevel.value * 60
|
|
27
|
+
};
|
|
28
|
+
}, [isEditing]);
|
|
29
|
+
const [[hour, minute], setTime] = useState([0, 0]);
|
|
30
|
+
const hasRenderEvent = useMemo(() => !!renderNewEventContainer, [renderNewEventContainer]);
|
|
31
|
+
useAnimatedReaction(() => ({
|
|
32
|
+
zoomLevel: zoomLevel.value,
|
|
33
|
+
createY: createY.value
|
|
34
|
+
}), state => {
|
|
35
|
+
if (!hasRenderEvent) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const freshTime = Math.floor(state.createY / state.zoomLevel);
|
|
39
|
+
const freshHour = Math.floor(freshTime / 60);
|
|
40
|
+
const freshMinute = !fiveMinuteInterval ? freshTime - freshHour * 60 : Math.round(freshTime / 5) * 5 - freshHour * 60;
|
|
41
|
+
runOnJS(setTime)([freshHour, freshMinute]);
|
|
42
|
+
}, []);
|
|
43
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
44
|
+
style: [styles.container, styleVisible],
|
|
45
|
+
children: renderNewEventContainer ? renderNewEventContainer(hour, minute) : /*#__PURE__*/_jsx(View, {
|
|
46
|
+
style: [styles.defaultContainer, theme?.newEventContainer]
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
}, () => true);
|
|
50
|
+
export default NewEventContainer;
|
|
51
|
+
const styles = StyleSheet.create({
|
|
52
|
+
container: {
|
|
53
|
+
position: "absolute",
|
|
54
|
+
top: 0,
|
|
55
|
+
left: 51,
|
|
56
|
+
right: 10,
|
|
57
|
+
height: 50
|
|
58
|
+
},
|
|
59
|
+
defaultContainer: {
|
|
60
|
+
flex: 1,
|
|
61
|
+
borderRadius: 3,
|
|
62
|
+
padding: 5,
|
|
63
|
+
backgroundColor: "pink",
|
|
64
|
+
opacity: 0.8
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=new-event-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useContext","useMemo","useState","ConfigProvider","TOP_MARGIN_PIXEL_OFFSET","Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","StyleSheet","View","useIsEditing","jsx","_jsx","NewEventContainer","fiveMinuteInterval","renderNewEventContainer","zoomLevel","createY","theme","isEditing","styleVisible","opacity","value","transform","translateY","height","hour","minute","setTime","hasRenderEvent","state","freshTime","Math","floor","freshHour","freshMinute","round","style","styles","container","children","defaultContainer","newEventContainer","create","position","top","left","right","flex","borderRadius","padding","backgroundColor"],"sourceRoot":"../../../src","sources":["components/new-event-container.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useContext, useEffect } from "react";
|
|
4
|
+
import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanimated";
|
|
5
|
+
import { ConfigProvider } from "src/utils/globals";
|
|
6
|
+
import moment from "moment-timezone";
|
|
7
|
+
import { AppState, StyleSheet } from "react-native";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const TimeIndicator = /*#__PURE__*/memo(() => {
|
|
10
|
+
const {
|
|
11
|
+
zoomLevel,
|
|
12
|
+
timezone,
|
|
13
|
+
theme
|
|
14
|
+
} = useContext(ConfigProvider);
|
|
15
|
+
const currentMinutes = useCallback(() => {
|
|
16
|
+
const time = moment.tz(timezone);
|
|
17
|
+
return time.minutes() + time.hours() * 60;
|
|
18
|
+
}, [timezone]);
|
|
19
|
+
const currentMoment = useSharedValue(currentMinutes());
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
let interval = setInterval(() => {
|
|
22
|
+
currentMoment.value = currentMinutes();
|
|
23
|
+
}, 20000);
|
|
24
|
+
const subscription = AppState.addEventListener("change", appState => {
|
|
25
|
+
clearInterval(interval);
|
|
26
|
+
if (appState === "active") {
|
|
27
|
+
interval = setInterval(() => {
|
|
28
|
+
currentMoment.value = currentMinutes();
|
|
29
|
+
}, 20000);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return () => {
|
|
33
|
+
clearInterval(interval);
|
|
34
|
+
subscription.remove();
|
|
35
|
+
};
|
|
36
|
+
}, [currentMinutes, currentMoment]);
|
|
37
|
+
const style = useAnimatedStyle(() => ({
|
|
38
|
+
top: zoomLevel.value * currentMoment.value
|
|
39
|
+
}));
|
|
40
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
41
|
+
style: [styles.timeIndicator, style, theme?.timeIndicator]
|
|
42
|
+
});
|
|
43
|
+
}, () => true);
|
|
44
|
+
export default TimeIndicator;
|
|
45
|
+
const styles = StyleSheet.create({
|
|
46
|
+
timeIndicator: {
|
|
47
|
+
position: "absolute",
|
|
48
|
+
left: 0,
|
|
49
|
+
width: "110%",
|
|
50
|
+
borderTopWidth: 2,
|
|
51
|
+
borderTopColor: "#f25a43",
|
|
52
|
+
zIndex: 2,
|
|
53
|
+
elevation: 2,
|
|
54
|
+
opacity: 0.6
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=time-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useContext","useEffect","Animated","useAnimatedStyle","useSharedValue","ConfigProvider","moment","AppState","StyleSheet","jsx","_jsx","TimeIndicator","zoomLevel","timezone","theme","currentMinutes","time","tz","minutes","hours","currentMoment","interval","setInterval","value","subscription","addEventListener","appState","clearInterval","remove","style","top","View","styles","timeIndicator","create","position","left","width","borderTopWidth","borderTopColor","zIndex","elevation","opacity"],"sourceRoot":"../../../src","sources":["components/time-indicator.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,SAAS,QAAQ,OAAO;AAChE,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,cAAc,QACT,yBAAyB;AAChC,SAASC,cAAc,QAAQ,mBAAmB;AAClD,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpD,MAAMC,aAAa,gBAAGb,IAAI,CACxB,MAAM;EACJ,MAAM;IAAEc,SAAS;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGd,UAAU,CAACK,cAAc,CAAC;EAEjE,MAAMU,cAAc,GAAGhB,WAAW,CAAC,MAAM;IACvC,MAAMiB,IAAI,GAAGV,MAAM,CAACW,EAAE,CAACJ,QAAQ,CAAC;IAEhC,OAAOG,IAAI,CAACE,OAAO,CAAC,CAAC,GAAGF,IAAI,CAACG,KAAK,CAAC,CAAC,GAAG,EAAE;EAC3C,CAAC,EAAE,CAACN,QAAQ,CAAC,CAAC;EAEd,MAAMO,aAAa,GAAGhB,cAAc,CAASW,cAAc,CAAC,CAAC,CAAC;EAE9Dd,SAAS,CAAC,MAAM;IACd,IAAIoB,QAAQ,GAAGC,WAAW,CAAC,MAAM;MAC/BF,aAAa,CAACG,KAAK,GAAGR,cAAc,CAAC,CAAC;IACxC,CAAC,EAAE,KAAK,CAAC;IAET,MAAMS,YAAY,GAAGjB,QAAQ,CAACkB,gBAAgB,CAC5C,QAAQ,EACPC,QAAgB,IAAK;MACpBC,aAAa,CAACN,QAAQ,CAAC;MAEvB,IAAIK,QAAQ,KAAK,QAAQ,EAAE;QACzBL,QAAQ,GAAGC,WAAW,CAAC,MAAM;UAC3BF,aAAa,CAACG,KAAK,GAAGR,cAAc,CAAC,CAAC;QACxC,CAAC,EAAE,KAAK,CAAC;MACX;IACF,CACF,CAAC;IAED,OAAO,MAAM;MACXY,aAAa,CAACN,QAAQ,CAAC;MACvBG,YAAY,CAACI,MAAM,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACb,cAAc,EAAEK,aAAa,CAAC,CAAC;EAEnC,MAAMS,KAAK,GAAG1B,gBAAgB,CAAC,OAAO;IACpC2B,GAAG,EAAElB,SAAS,CAACW,KAAK,GAAGH,aAAa,CAACG;EACvC,CAAC,CAAC,CAAC;EAEH,oBACEb,IAAA,CAACR,QAAQ,CAAC6B,IAAI;IACZF,KAAK,EAAE,CAACG,MAAM,CAACC,aAAa,EAAEJ,KAAK,EAAEf,KAAK,EAAEmB,aAAa;EAAE,CAC5D,CAAC;AAEN,CAAC,EACD,MAAM,IACR,CAAC;AAED,eAAetB,aAAa;AAE5B,MAAMqB,MAAM,GAAGxB,UAAU,CAAC0B,MAAM,CAAC;EAC/BD,aAAa,EAAE;IACbE,QAAQ,EAAE,UAAU;IACpBC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,MAAM;IACbC,cAAc,EAAE,CAAC;IACjBC,cAAc,EAAE,SAAS;IACzBC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,CAAC;IACZC,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Animated, { runOnJS, useAnimatedReaction, useAnimatedStyle, useSharedValue } from "react-native-reanimated";
|
|
4
|
+
import { ConfigProvider } from "src/utils/globals";
|
|
5
|
+
import { useCallback, useContext, useMemo } from "react";
|
|
6
|
+
import { Gesture, GestureDetector } from "react-native-gesture-handler";
|
|
7
|
+
import { StyleSheet, View } from "react-native";
|
|
8
|
+
import { useIsEditing } from "src/hooks/use-is-editing";
|
|
9
|
+
import gesturePan from "src/utils/pan-edit-event-gesture";
|
|
10
|
+
import doubleTapGesture from "src/utils/double-tap-reset-zoom-gesture";
|
|
11
|
+
import { EventExtend } from "src/types";
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
const TimedEventContainer = ({
|
|
14
|
+
layout,
|
|
15
|
+
refNewEvent
|
|
16
|
+
}) => {
|
|
17
|
+
const {
|
|
18
|
+
currentY,
|
|
19
|
+
setIsEditing,
|
|
20
|
+
isEditing
|
|
21
|
+
} = useIsEditing();
|
|
22
|
+
const {
|
|
23
|
+
onPressEvent,
|
|
24
|
+
maximumHour,
|
|
25
|
+
fiveMinuteInterval,
|
|
26
|
+
zoomLevel,
|
|
27
|
+
renderEvent,
|
|
28
|
+
initialZoomLevel,
|
|
29
|
+
onZoomChange
|
|
30
|
+
} = useContext(ConfigProvider);
|
|
31
|
+
const height = useSharedValue(0);
|
|
32
|
+
const top = useSharedValue(0);
|
|
33
|
+
const startEditing = useCallback(() => {
|
|
34
|
+
setIsEditing(layout);
|
|
35
|
+
}, [layout, setIsEditing]);
|
|
36
|
+
const gestureTap = Gesture.Tap().enabled(!isEditing).onStart(() => {
|
|
37
|
+
if (onPressEvent) {
|
|
38
|
+
runOnJS(onPressEvent)(layout.event);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
const startY = useSharedValue(0);
|
|
42
|
+
const gestures = Gesture.Exclusive(doubleTapGesture(zoomLevel, initialZoomLevel, onZoomChange), gestureTap, gesturePan(startY, top, currentY, zoomLevel, maximumHour, height, refNewEvent, fiveMinuteInterval, isEditing, startEditing).activateAfterLongPress(500));
|
|
43
|
+
useAnimatedReaction(() => zoomLevel.value, newZoomLevel => {
|
|
44
|
+
height.value = newZoomLevel * layout.position.height;
|
|
45
|
+
}, [layout.position.height]);
|
|
46
|
+
useAnimatedReaction(() => zoomLevel.value, newZoomLevel => {
|
|
47
|
+
top.value = newZoomLevel * layout.position.top;
|
|
48
|
+
}, [layout.position.top]);
|
|
49
|
+
const render = useMemo(() => renderEvent(layout.event, EventExtend.None, height), [height, layout.event, renderEvent]);
|
|
50
|
+
const stylePosition = useAnimatedStyle(() => {
|
|
51
|
+
const basePosition = {
|
|
52
|
+
position: "absolute",
|
|
53
|
+
height: height.value,
|
|
54
|
+
top: top.value,
|
|
55
|
+
opacity: 1,
|
|
56
|
+
width: layout.position.width,
|
|
57
|
+
marginLeft: layout.position.marginLeft,
|
|
58
|
+
// This is to prevent the event from being clickable while editing
|
|
59
|
+
pointerEvents: isEditing ? "none" : "auto"
|
|
60
|
+
};
|
|
61
|
+
if (isEditing?.event.id === layout.event.id) {
|
|
62
|
+
basePosition.opacity = 0.5;
|
|
63
|
+
}
|
|
64
|
+
return basePosition;
|
|
65
|
+
}, [layout, isEditing]);
|
|
66
|
+
return /*#__PURE__*/_jsx(GestureDetector, {
|
|
67
|
+
gesture: gestures,
|
|
68
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
69
|
+
style: stylePosition,
|
|
70
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
71
|
+
style: styles.hairline,
|
|
72
|
+
children: render
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const styles = StyleSheet.create({
|
|
78
|
+
hairline: {
|
|
79
|
+
marginHorizontal: StyleSheet.hairlineWidth,
|
|
80
|
+
flex: 1
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
export default TimedEventContainer;
|
|
84
|
+
//# sourceMappingURL=timed-event-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Animated","runOnJS","useAnimatedReaction","useAnimatedStyle","useSharedValue","ConfigProvider","useCallback","useContext","useMemo","Gesture","GestureDetector","StyleSheet","View","useIsEditing","gesturePan","doubleTapGesture","EventExtend","jsx","_jsx","TimedEventContainer","layout","refNewEvent","currentY","setIsEditing","isEditing","onPressEvent","maximumHour","fiveMinuteInterval","zoomLevel","renderEvent","initialZoomLevel","onZoomChange","height","top","startEditing","gestureTap","Tap","enabled","onStart","event","startY","gestures","Exclusive","activateAfterLongPress","value","newZoomLevel","position","render","None","stylePosition","basePosition","opacity","width","marginLeft","pointerEvents","id","gesture","children","style","styles","hairline","create","marginHorizontal","hairlineWidth","flex"],"sourceRoot":"../../../src","sources":["components/timed-event-container.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet, View } from "react-native";
|
|
4
|
+
import { useContext, useMemo } from "react";
|
|
5
|
+
import { ConfigProvider, TOP_MARGIN_PIXEL_OFFSET } from "src/utils/globals";
|
|
6
|
+
import BackgroundHoursLayout from "src/components/background-hours-layout";
|
|
7
|
+
import { generatePrefabHours } from "src/utils/date-utils";
|
|
8
|
+
import BackgroundHoursContent from "src/components/background-hours-content";
|
|
9
|
+
import TimedEventContainer from "src/components/timed-event-container";
|
|
10
|
+
import TimeIndicator from "src/components/time-indicator";
|
|
11
|
+
import NewEventContainer from "src/components/new-event-container";
|
|
12
|
+
import EditEventContainer from "src/components/edit-event-container";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
const TimedEvents = ({
|
|
15
|
+
refNewEvent
|
|
16
|
+
}) => {
|
|
17
|
+
const {
|
|
18
|
+
theme,
|
|
19
|
+
canCreateEvents,
|
|
20
|
+
canEditEvent,
|
|
21
|
+
timeFormat,
|
|
22
|
+
layout,
|
|
23
|
+
showTimeIndicator,
|
|
24
|
+
extraTimedComponents,
|
|
25
|
+
zoomLevel
|
|
26
|
+
} = useContext(ConfigProvider);
|
|
27
|
+
const hours = useMemo(() => generatePrefabHours(timeFormat), [timeFormat]);
|
|
28
|
+
const extraRender = useMemo(() => extraTimedComponents?.(zoomLevel) || null, [extraTimedComponents, zoomLevel]);
|
|
29
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
30
|
+
style: [styles.container, theme?.timedEventsContainer],
|
|
31
|
+
children: [/*#__PURE__*/_jsx(BackgroundHoursLayout, {
|
|
32
|
+
hours: hours
|
|
33
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
34
|
+
style: styles.backgroundContainer,
|
|
35
|
+
children: [/*#__PURE__*/_jsx(BackgroundHoursContent, {
|
|
36
|
+
hours: hours
|
|
37
|
+
}), extraRender, layout.partDayEventsLayout.map(partDayLayout => /*#__PURE__*/_jsx(TimedEventContainer, {
|
|
38
|
+
layout: partDayLayout,
|
|
39
|
+
refNewEvent: refNewEvent
|
|
40
|
+
}, partDayLayout.event.id)), showTimeIndicator ? /*#__PURE__*/_jsx(TimeIndicator, {}) : null, canEditEvent ? /*#__PURE__*/_jsx(EditEventContainer, {
|
|
41
|
+
refNewEvent: refNewEvent
|
|
42
|
+
}) : null]
|
|
43
|
+
}), canCreateEvents ? /*#__PURE__*/_jsx(NewEventContainer, {}) : null]
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
export default TimedEvents;
|
|
47
|
+
const styles = StyleSheet.create({
|
|
48
|
+
container: {
|
|
49
|
+
flex: 1,
|
|
50
|
+
flexDirection: "row",
|
|
51
|
+
marginBottom: 30,
|
|
52
|
+
marginTop: 10
|
|
53
|
+
},
|
|
54
|
+
backgroundContainer: {
|
|
55
|
+
position: "relative",
|
|
56
|
+
marginTop: -TOP_MARGIN_PIXEL_OFFSET,
|
|
57
|
+
flexDirection: "column",
|
|
58
|
+
flex: 1,
|
|
59
|
+
paddingRight: 10,
|
|
60
|
+
overflow: "hidden"
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=timed-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","View","useContext","useMemo","ConfigProvider","TOP_MARGIN_PIXEL_OFFSET","BackgroundHoursLayout","generatePrefabHours","BackgroundHoursContent","TimedEventContainer","TimeIndicator","NewEventContainer","EditEventContainer","jsx","_jsx","jsxs","_jsxs","TimedEvents","refNewEvent","theme","canCreateEvents","canEditEvent","timeFormat","layout","showTimeIndicator","extraTimedComponents","zoomLevel","hours","extraRender","style","styles","container","timedEventsContainer","children","backgroundContainer","partDayEventsLayout","map","partDayLayout","event","id","create","flex","flexDirection","marginBottom","marginTop","position","paddingRight","overflow"],"sourceRoot":"../../../src","sources":["components/timed-events.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAAoBC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AACtD,SAASC,cAAc,EAAEC,uBAAuB,QAAQ,mBAAmB;AAC3E,OAAOC,qBAAqB,MAAM,wCAAwC;AAC1E,SAASC,mBAAmB,QAAQ,sBAAsB;AAC1D,OAAOC,sBAAsB,MAAM,yCAAyC;AAC5E,OAAOC,mBAAmB,MAAM,sCAAsC;AACtE,OAAOC,aAAa,MAAM,+BAA+B;AACzD,OAAOC,iBAAiB,MAAM,oCAAoC;AAClE,OAAOC,kBAAkB,MAAM,qCAAqC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMrE,MAAMC,WAAW,GAAGA,CAAC;EAAEC;AAA8B,CAAC,KAAK;EACzD,MAAM;IACJC,KAAK;IACLC,eAAe;IACfC,YAAY;IACZC,UAAU;IACVC,MAAM;IACNC,iBAAiB;IACjBC,oBAAoB;IACpBC;EACF,CAAC,GAAGxB,UAAU,CAACE,cAAc,CAAC;EAC9B,MAAMuB,KAAK,GAAGxB,OAAO,CAAC,MAAMI,mBAAmB,CAACe,UAAU,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAE1E,MAAMM,WAAW,GAAGzB,OAAO,CACzB,MAAMsB,oBAAoB,GAAGC,SAAS,CAAC,IAAI,IAAI,EAC/C,CAACD,oBAAoB,EAAEC,SAAS,CAClC,CAAC;EAED,oBACEV,KAAA,CAACf,IAAI;IAAC4B,KAAK,EAAE,CAACC,MAAM,CAACC,SAAS,EAAEZ,KAAK,EAAEa,oBAAoB,CAAE;IAAAC,QAAA,gBAC3DnB,IAAA,CAACR,qBAAqB;MAACqB,KAAK,EAAEA;IAAM,CAAE,CAAC,eACvCX,KAAA,CAACf,IAAI;MAAC4B,KAAK,EAAEC,MAAM,CAACI,mBAAoB;MAAAD,QAAA,gBACtCnB,IAAA,CAACN,sBAAsB;QAACmB,KAAK,EAAEA;MAAM,CAAE,CAAC,EACvCC,WAAW,EACXL,MAAM,CAACY,mBAAmB,CAACC,GAAG,CAAEC,aAAa,iBAC5CvB,IAAA,CAACL,mBAAmB;QAElBc,MAAM,EAAEc,aAAc;QACtBnB,WAAW,EAAEA;MAAY,GAFpBmB,aAAa,CAACC,KAAK,CAACC,EAG1B,CACF,CAAC,EACDf,iBAAiB,gBAAGV,IAAA,CAACJ,aAAa,IAAE,CAAC,GAAG,IAAI,EAC5CW,YAAY,gBAAGP,IAAA,CAACF,kBAAkB;QAACM,WAAW,EAAEA;MAAY,CAAE,CAAC,GAAG,IAAI;IAAA,CACnE,CAAC,EACNE,eAAe,gBAAGN,IAAA,CAACH,iBAAiB,IAAE,CAAC,GAAG,IAAI;EAAA,CAC3C,CAAC;AAEX,CAAC;AAED,eAAeM,WAAW;AAE1B,MAAMa,MAAM,GAAG9B,UAAU,CAACwC,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,IAAI,EAAE,CAAC;IACPC,aAAa,EAAE,KAAK;IACpBC,YAAY,EAAE,EAAE;IAChBC,SAAS,EAAE;EACb,CAAC;EACDV,mBAAmB,EAAE;IACnBW,QAAQ,EAAE,UAAU;IACpBD,SAAS,EAAE,CAACvC,uBAAuB;IACnCqC,aAAa,EAAE,QAAQ;IACvBD,IAAI,EAAE,CAAC;IACPK,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Animated, { runOnJS, useAnimatedReaction, useSharedValue } from "react-native-reanimated";
|
|
4
|
+
import { Gesture, GestureDetector } from "react-native-gesture-handler";
|
|
5
|
+
import { forwardRef, useContext, useEffect } from "react";
|
|
6
|
+
import { ConfigProvider, TOP_MARGIN_PIXEL_OFFSET } from "src/utils/globals";
|
|
7
|
+
import { StyleSheet } from "react-native";
|
|
8
|
+
import { useIsEditing } from "src/hooks/use-is-editing";
|
|
9
|
+
import doubleTapGesture from "src/utils/double-tap-reset-zoom-gesture";
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
// This fraction determines how quickly zoom grows
|
|
12
|
+
const fraction = 0.1;
|
|
13
|
+
const ZoomProvider = /*#__PURE__*/forwardRef(({
|
|
14
|
+
children
|
|
15
|
+
}, refNewEvent) => {
|
|
16
|
+
const {
|
|
17
|
+
canCreateEvents,
|
|
18
|
+
zoomLevel,
|
|
19
|
+
initialZoomLevel,
|
|
20
|
+
createY,
|
|
21
|
+
onCreateEvent,
|
|
22
|
+
maximumHour,
|
|
23
|
+
onZoomChange
|
|
24
|
+
} = useContext(ConfigProvider);
|
|
25
|
+
const previewScale = useSharedValue(-1);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
previewScale.value = zoomLevel.get();
|
|
28
|
+
}, [zoomLevel, previewScale]);
|
|
29
|
+
const pinchGesture = Gesture.Pinch().onUpdate(event => {
|
|
30
|
+
"worklet";
|
|
31
|
+
|
|
32
|
+
const newScale = previewScale.value * (1 + fraction * (event.scale - 1));
|
|
33
|
+
zoomLevel.value = Math.min(3, Math.max(0.54, newScale));
|
|
34
|
+
previewScale.value = zoomLevel.value;
|
|
35
|
+
}).onEnd(() => {
|
|
36
|
+
if (onZoomChange) {
|
|
37
|
+
runOnJS(onZoomChange)(zoomLevel.value);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
const yPosition = useSharedValue(-1);
|
|
41
|
+
const {
|
|
42
|
+
isEditing
|
|
43
|
+
} = useIsEditing();
|
|
44
|
+
const isDragging = useSharedValue(false);
|
|
45
|
+
useAnimatedReaction(() => zoomLevel.value, zoom => {
|
|
46
|
+
maximumHour.value = 1440 * zoom;
|
|
47
|
+
}, [maximumHour]);
|
|
48
|
+
const longPressGesture = Gesture.LongPress().enabled(canCreateEvents && !isEditing).withRef(refNewEvent).numberOfPointers(1).minDuration(250).maxDistance(10000).onStart(event => {
|
|
49
|
+
"worklet";
|
|
50
|
+
|
|
51
|
+
isDragging.value = true;
|
|
52
|
+
createY.value = Math.max(0, event.y - TOP_MARGIN_PIXEL_OFFSET - zoomLevel.value * 60 / 2);
|
|
53
|
+
}).onTouchesMove(event => {
|
|
54
|
+
"worklet";
|
|
55
|
+
|
|
56
|
+
if (!isDragging.value) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
createY.value = Math.max(0, event.allTouches[0].y - TOP_MARGIN_PIXEL_OFFSET - zoomLevel.value * 60 / 2);
|
|
60
|
+
}).onEnd((event, success) => {
|
|
61
|
+
"worklet";
|
|
62
|
+
|
|
63
|
+
if (!isDragging.value) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Make sure it doesn't show the new event component anymore
|
|
68
|
+
createY.value = -1;
|
|
69
|
+
yPosition.value = -1;
|
|
70
|
+
isDragging.value = false;
|
|
71
|
+
if (!success) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Determine the hour that was clicked and trigger the event creation
|
|
76
|
+
const normalizedY = event.y - TOP_MARGIN_PIXEL_OFFSET - zoomLevel.value * 60 / 2;
|
|
77
|
+
const time = Math.floor(normalizedY / zoomLevel.value);
|
|
78
|
+
const hour = Math.floor(time / 60);
|
|
79
|
+
const minute = time - hour * 60;
|
|
80
|
+
if (onCreateEvent) {
|
|
81
|
+
runOnJS(onCreateEvent)({
|
|
82
|
+
hour,
|
|
83
|
+
minute
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const combinedGesture = Gesture.Simultaneous(pinchGesture, longPressGesture, doubleTapGesture(zoomLevel, initialZoomLevel, onZoomChange));
|
|
88
|
+
return /*#__PURE__*/_jsx(GestureDetector, {
|
|
89
|
+
gesture: combinedGesture,
|
|
90
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
91
|
+
style: styles.container,
|
|
92
|
+
children: children
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
const styles = StyleSheet.create({
|
|
97
|
+
container: {
|
|
98
|
+
flex: 1
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
export default ZoomProvider;
|
|
102
|
+
//# sourceMappingURL=zoom-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Animated","runOnJS","useAnimatedReaction","useSharedValue","Gesture","GestureDetector","forwardRef","useContext","useEffect","ConfigProvider","TOP_MARGIN_PIXEL_OFFSET","StyleSheet","useIsEditing","doubleTapGesture","jsx","_jsx","fraction","ZoomProvider","children","refNewEvent","canCreateEvents","zoomLevel","initialZoomLevel","createY","onCreateEvent","maximumHour","onZoomChange","previewScale","value","get","pinchGesture","Pinch","onUpdate","event","newScale","scale","Math","min","max","onEnd","yPosition","isEditing","isDragging","zoom","longPressGesture","LongPress","enabled","withRef","numberOfPointers","minDuration","maxDistance","onStart","y","onTouchesMove","allTouches","success","normalizedY","time","floor","hour","minute","combinedGesture","Simultaneous","gesture","View","style","styles","container","create","flex"],"sourceRoot":"../../../src","sources":["components/zoom-provider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["enums.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { cloneDeep } from "lodash";
|
|
5
|
+
export let updateClonedEvents;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Returns a cloned version of the events array if the updateLocalStateAfterEdit is set to true.
|
|
9
|
+
* We do this to make local state updates faster and more responsive. If the updateLocalStateAfterEdit is set to false,
|
|
10
|
+
* we return the original events array and don't clone it.
|
|
11
|
+
*/
|
|
12
|
+
const useClonedEvents = (events, updateLocalStateAfterEdit) => {
|
|
13
|
+
const [clonedEvents, setClonedEvents] = useState(events);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
setClonedEvents(updateLocalStateAfterEdit ? cloneDeep(events) : events);
|
|
16
|
+
updateClonedEvents = setClonedEvents;
|
|
17
|
+
}, [events, updateLocalStateAfterEdit]);
|
|
18
|
+
return clonedEvents;
|
|
19
|
+
};
|
|
20
|
+
export default useClonedEvents;
|
|
21
|
+
//# sourceMappingURL=use-cloned-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","cloneDeep","updateClonedEvents","useClonedEvents","events","updateLocalStateAfterEdit","clonedEvents","setClonedEvents"],"sourceRoot":"../../../src","sources":["hooks/use-cloned-events.ts"],"mappings":";;AAAA,SAAmCA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AACrE,SAASC,SAAS,QAAQ,QAAQ;AAGlC,OAAO,IAAIC,kBAA6D;;AAExE;AACA;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAGA,CACtBC,MAAuB,EACvBC,yBAAkC,KAC/B;EACH,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGP,QAAQ,CAACI,MAAM,CAAC;EAExDL,SAAS,CAAC,MAAM;IACdQ,eAAe,CAACF,yBAAyB,GAAGJ,SAAS,CAACG,MAAM,CAAC,GAAGA,MAAM,CAAC;IACvEF,kBAAkB,GAAGK,eAAe;EACtC,CAAC,EAAE,CAACH,MAAM,EAAEC,yBAAyB,CAAC,CAAC;EAEvC,OAAOC,YAAY;AACrB,CAAC;AAED,eAAeH,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { create } from "zustand";
|
|
4
|
+
import { immer } from "zustand/middleware/immer";
|
|
5
|
+
import generateEventLayouts from "../utils/generate-event-layouts.js";
|
|
6
|
+
import { useEffect } from "react";
|
|
7
|
+
const useEventsLayoutStore = create()(immer(set => ({
|
|
8
|
+
events: {
|
|
9
|
+
allDayEventsLayout: [],
|
|
10
|
+
partDayEventsLayout: []
|
|
11
|
+
},
|
|
12
|
+
updateEvents: props => set(state => {
|
|
13
|
+
state.events = generateEventLayouts(props)[props.startCalendarDate] || {
|
|
14
|
+
partDayEventsLayout: [],
|
|
15
|
+
allDayEventsLayout: []
|
|
16
|
+
};
|
|
17
|
+
})
|
|
18
|
+
})));
|
|
19
|
+
const useEventsLayout = props => {
|
|
20
|
+
const {
|
|
21
|
+
events: layoutEvents
|
|
22
|
+
} = useEventsLayoutStore();
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
useEventsLayoutStore.getState().updateEvents(props);
|
|
25
|
+
}, [props]);
|
|
26
|
+
return layoutEvents;
|
|
27
|
+
};
|
|
28
|
+
export default useEventsLayout;
|
|
29
|
+
//# sourceMappingURL=use-events-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["create","immer","generateEventLayouts","useEffect","useEventsLayoutStore","set","events","allDayEventsLayout","partDayEventsLayout","updateEvents","props","state","startCalendarDate","useEventsLayout","layoutEvents","getState"],"sourceRoot":"../../../src","sources":["hooks/use-events-layout.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,KAAK,QAAQ,0BAA0B;AAChD,OAAOC,oBAAoB,MAAM,oCAAiC;AAClE,SAASC,SAAS,QAAQ,OAAO;AAyBjC,MAAMC,oBAAoB,GAAGJ,MAAM,CAAkB,CAAC,CACpDC,KAAK,CAAEI,GAAG,KAAM;EACdC,MAAM,EAAE;IACNC,kBAAkB,EAAE,EAAE;IACtBC,mBAAmB,EAAE;EACvB,CAAC;EACDC,YAAY,EAAGC,KAAkB,IAC/BL,GAAG,CAAEM,KAAK,IAAK;IACbA,KAAK,CAACL,MAAM,GAAGJ,oBAAoB,CAACQ,KAAK,CAAC,CAACA,KAAK,CAACE,iBAAiB,CAAC,IAAI;MACrEJ,mBAAmB,EAAE,EAAE;MACvBD,kBAAkB,EAAE;IACtB,CAAC;EACH,CAAC;AACL,CAAC,CAAC,CACJ,CAAC;AAED,MAAMM,eAAe,GAAIH,KAAkB,IAAK;EAC9C,MAAM;IAAEJ,MAAM,EAAEQ;EAAa,CAAC,GAAGV,oBAAoB,CAAC,CAAC;EAEvDD,SAAS,CAAC,MAAM;IACdC,oBAAoB,CAACW,QAAQ,CAAC,CAAC,CAACN,YAAY,CAACC,KAAK,CAAC;EACrD,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,OAAOI,YAAY;AACrB,CAAC;AAED,eAAeD,eAAe","ignoreList":[]}
|