@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,198 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.generateEventLayouts = exports.default = void 0;
|
|
7
|
+
var _partition2 = _interopRequireDefault(require("lodash/partition"));
|
|
8
|
+
var _reduce2 = _interopRequireDefault(require("lodash/reduce"));
|
|
9
|
+
var _sortBy2 = _interopRequireDefault(require("lodash/sortBy"));
|
|
10
|
+
var _reverse2 = _interopRequireDefault(require("lodash/reverse"));
|
|
11
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
12
|
+
var _calendarLayout = require("src/utils/calendar-layout");
|
|
13
|
+
var _dateUtils = require("src/utils/date-utils");
|
|
14
|
+
var _computePositioning = _interopRequireDefault(require("src/utils/compute-positioning"));
|
|
15
|
+
var _types = require("src/types");
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
const generateEventLayouts = ({
|
|
18
|
+
events,
|
|
19
|
+
startCalendarDate,
|
|
20
|
+
endCalendarDate,
|
|
21
|
+
userCalendarId,
|
|
22
|
+
calendarViewInterval = "1day",
|
|
23
|
+
startDayOfWeekOffset = 0,
|
|
24
|
+
timezone
|
|
25
|
+
}) => {
|
|
26
|
+
// Calculate spacial layout for CalendarViewDay events
|
|
27
|
+
// in month view, midnight-spanning part-day events are rendered as all-day multi-day
|
|
28
|
+
const [allDayEvents, partDayEvents] = (0, _partition2.default)([...events], event => (0, _dateUtils.isAllDayOrSpansMidnight)(event, timezone));
|
|
29
|
+
|
|
30
|
+
// lowest priority sort by ID for consistent ordering of otherwise equal events
|
|
31
|
+
let allDayEventsSorted = (0, _sortBy2.default)(allDayEvents, event => event.id);
|
|
32
|
+
|
|
33
|
+
// secondary sort by length descending
|
|
34
|
+
allDayEventsSorted = (0, _sortBy2.default)(allDayEventsSorted, event => (0, _dateUtils.getDurationInDays)(event, timezone));
|
|
35
|
+
allDayEventsSorted = (0, _reverse2.default)(allDayEventsSorted);
|
|
36
|
+
|
|
37
|
+
// primary sort by start ascending
|
|
38
|
+
allDayEventsSorted = (0, _sortBy2.default)(allDayEventsSorted, event => new Date(event.start).valueOf());
|
|
39
|
+
|
|
40
|
+
// lowest priority sort by ID for consistent ordering of otherwise equal events
|
|
41
|
+
let partDayEventsSorted = (0, _sortBy2.default)(partDayEvents, event => event.id);
|
|
42
|
+
partDayEventsSorted = (0, _sortBy2.default)(partDayEventsSorted, event => (0, _dateUtils.getDuration)(event)); // secondary sort by duration ascending
|
|
43
|
+
partDayEventsSorted = (0, _sortBy2.default)(partDayEventsSorted, event => new Date(event.start).valueOf()); // primary sort by start ascending
|
|
44
|
+
const calendarViewDayEvents = [...allDayEventsSorted, ...(calendarViewInterval === "month" ? partDayEventsSorted : [])];
|
|
45
|
+
const visibleDayCount = _momentTimezone.default.tz(endCalendarDate, timezone).diff(_momentTimezone.default.tz(startCalendarDate, timezone), "days");
|
|
46
|
+
const visibleDays = [];
|
|
47
|
+
for (let dayCount = 0; dayCount <= visibleDayCount; dayCount++) {
|
|
48
|
+
visibleDays.push(_momentTimezone.default.tz(startCalendarDate, timezone).add(dayCount, "day").format("YYYY-MM-DD"));
|
|
49
|
+
}
|
|
50
|
+
const calendarViewDateRanges = visibleDays.map(visibleDay => {
|
|
51
|
+
return (0, _dateUtils.computeCalendarDateRange)(visibleDay, timezone, calendarViewInterval, startDayOfWeekOffset);
|
|
52
|
+
});
|
|
53
|
+
const result = {};
|
|
54
|
+
calendarViewDateRanges.forEach(date => {
|
|
55
|
+
const calendarLayoutOptions = {
|
|
56
|
+
visibleX: date.dayIndexes,
|
|
57
|
+
enableWeekBreaks: calendarViewInterval === "month",
|
|
58
|
+
startOfWeekXOffset: _momentTimezone.default.tz(date.basisDate, timezone).diff((0, _dateUtils.startOfUserWeek)(startDayOfWeekOffset, date.basisDate, timezone), "days")
|
|
59
|
+
};
|
|
60
|
+
const calendarViewDayLayout = (0, _reduce2.default)(calendarViewDayEvents, (calendarLayout, event) => {
|
|
61
|
+
const eventStartIndex = _momentTimezone.default.tz(event.start, timezone).startOf("day").diff(_momentTimezone.default.tz(date.basisDate, timezone), "days");
|
|
62
|
+
const eventDurationDays = (0, _dateUtils.getDurationInDays)(event, timezone);
|
|
63
|
+
calendarLayout.findFitAndInsert(eventStartIndex, eventDurationDays, event);
|
|
64
|
+
return calendarLayout;
|
|
65
|
+
}, new _calendarLayout.CalendarLayout(calendarLayoutOptions));
|
|
66
|
+
const calendarViewDayRowHeight = calendarViewDayLayout.height();
|
|
67
|
+
|
|
68
|
+
// set the calendar layout for each day
|
|
69
|
+
const calendarDates = date.calendarDates || [];
|
|
70
|
+
calendarDates.forEach(calendarDate => {
|
|
71
|
+
const currentDayDate = _momentTimezone.default.tz(calendarDate, timezone).startOf("day");
|
|
72
|
+
const startDate = currentDayDate.toDate();
|
|
73
|
+
const endDate = _momentTimezone.default.tz(startDate, timezone).endOf("day").toDate();
|
|
74
|
+
const showHours = !["month"].includes(calendarViewInterval);
|
|
75
|
+
const dayId = calendarDate;
|
|
76
|
+
const allDayEventsLayout = [];
|
|
77
|
+
let partDayEventsLayout = [];
|
|
78
|
+
const x = (0, _momentTimezone.default)(startDate).diff(_momentTimezone.default.tz(date.basisDate, timezone), "days");
|
|
79
|
+
for (let y = 0; y < calendarViewDayRowHeight; ++y) {
|
|
80
|
+
const {
|
|
81
|
+
event,
|
|
82
|
+
visibleWidthDays,
|
|
83
|
+
extend = _types.EventExtend.None,
|
|
84
|
+
isPrimaryRendered
|
|
85
|
+
} = calendarViewDayLayout.getViewAt(x, y);
|
|
86
|
+
if (event) {
|
|
87
|
+
allDayEventsLayout.push({
|
|
88
|
+
event,
|
|
89
|
+
rowIndex: y,
|
|
90
|
+
// @ts-ignore we know visibleWidthDays will be set for all day events if an event is returned
|
|
91
|
+
visibleWidthDays,
|
|
92
|
+
extend,
|
|
93
|
+
isPrimaryRendered
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Handle part day events according to view type
|
|
99
|
+
if (showHours) {
|
|
100
|
+
// Bucket, partition, sort, and handle collisions
|
|
101
|
+
partDayEventsLayout = partDayEventsLayout.concat(handleCollisions(events.filter(event => !(0, _dateUtils.isAllDayOrSpansMidnight)(event, timezone) && (0, _dateUtils.dateRangeIntersect)({
|
|
102
|
+
startDate: new Date(event.start),
|
|
103
|
+
endDate: new Date(event.end)
|
|
104
|
+
}, {
|
|
105
|
+
startDate,
|
|
106
|
+
endDate
|
|
107
|
+
})), userCalendarId, currentDayDate, timezone));
|
|
108
|
+
}
|
|
109
|
+
result[dayId] = {
|
|
110
|
+
allDayEventsLayout,
|
|
111
|
+
partDayEventsLayout
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
return result;
|
|
116
|
+
};
|
|
117
|
+
exports.generateEventLayouts = generateEventLayouts;
|
|
118
|
+
const combineEventPosition = (dayDate, timezone, collisionObject) => {
|
|
119
|
+
const position = (0, _computePositioning.default)({
|
|
120
|
+
timezone,
|
|
121
|
+
collisionObject: collisionObject,
|
|
122
|
+
startOfDayMoment: dayDate
|
|
123
|
+
});
|
|
124
|
+
return {
|
|
125
|
+
...collisionObject,
|
|
126
|
+
position
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
const handleCollisions = (allEvents, userCalendarId, dayDate, timezone) => {
|
|
130
|
+
let stackableEvents = (0, _sortBy2.default)(allEvents, event => event.id);
|
|
131
|
+
stackableEvents = (0, _sortBy2.default)(stackableEvents, event => {
|
|
132
|
+
// current user's primary calendar should always be leftmost option
|
|
133
|
+
return event.calendarId && !event.calendarId.includes(userCalendarId);
|
|
134
|
+
});
|
|
135
|
+
stackableEvents = (0, _sortBy2.default)(stackableEvents, event => new Date(event.start).valueOf());
|
|
136
|
+
// calculate overlap stack properties
|
|
137
|
+
const stackedEvtsByPos = {};
|
|
138
|
+
let curStack = [];
|
|
139
|
+
for (const evt of stackableEvents) {
|
|
140
|
+
// already sorted by startDate
|
|
141
|
+
for (let idx = 0; idx < curStack.length; idx++) {
|
|
142
|
+
const stackEvt = curStack[idx];
|
|
143
|
+
if (stackEvt) {
|
|
144
|
+
const stackEvtEnd = new Date(stackEvt.event.end).valueOf();
|
|
145
|
+
const stackEvtStart = new Date(stackEvt.event.start).valueOf();
|
|
146
|
+
const eventStart = new Date(evt.start).valueOf();
|
|
147
|
+
|
|
148
|
+
// events shorter than 15 minutes behave as if they had 15 minute duration.
|
|
149
|
+
// matches behavior in calendar view, where the shortest 'height' an event is given matches the height of a 15 minute event.
|
|
150
|
+
const duration = (stackEvtEnd - stackEvtStart) / (1000 * 60);
|
|
151
|
+
const endDate = duration < 15 ? stackEvtStart + 15 * 60 * 1000 : stackEvtEnd;
|
|
152
|
+
if (endDate <= eventStart) {
|
|
153
|
+
// null out this event's position in stack
|
|
154
|
+
curStack[idx] = null;
|
|
155
|
+
if (curStack.length > 1) {
|
|
156
|
+
stackEvt.collisions = {
|
|
157
|
+
total: curStack.length,
|
|
158
|
+
order: idx
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
stackedEvtsByPos[idx] ? stackedEvtsByPos[idx].push(combineEventPosition(dayDate, timezone, stackEvt)) : stackedEvtsByPos[idx] = [combineEventPosition(dayDate, timezone, stackEvt)];
|
|
162
|
+
if (!curStack.some(el => el)) {
|
|
163
|
+
curStack = [];
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// plop evt into first null placeholder we find, or just push if we don't have any.
|
|
170
|
+
const spliceIdx = curStack.findIndex(stackEvt => !stackEvt);
|
|
171
|
+
spliceIdx > -1 ? curStack.splice(spliceIdx, 1, {
|
|
172
|
+
event: evt
|
|
173
|
+
}) : curStack.splice(curStack.length, 0, {
|
|
174
|
+
event: evt
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// clean up stack if we've exhausted allEvents and it's unpopped.
|
|
179
|
+
for (let idx = 0; idx < curStack.length; idx++) {
|
|
180
|
+
const stackEvt = curStack[idx];
|
|
181
|
+
if (stackEvt) {
|
|
182
|
+
if (curStack.length > 1) {
|
|
183
|
+
stackEvt.collisions = {
|
|
184
|
+
total: curStack.length,
|
|
185
|
+
order: idx
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
stackedEvtsByPos[idx] ? stackedEvtsByPos[idx].push(combineEventPosition(dayDate, timezone, stackEvt)) : stackedEvtsByPos[idx] = [combineEventPosition(dayDate, timezone, stackEvt)];
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// always draw position 0 stack elements first.
|
|
193
|
+
let stackedEvents = [];
|
|
194
|
+
Object.keys(stackedEvtsByPos).forEach(pos => stackedEvents = stackedEvents.concat(stackedEvtsByPos[pos]));
|
|
195
|
+
return [...stackedEvents];
|
|
196
|
+
};
|
|
197
|
+
var _default = exports.default = generateEventLayouts;
|
|
198
|
+
//# sourceMappingURL=generate-event-layouts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_partition2","_interopRequireDefault","require","_reduce2","_sortBy2","_reverse2","_momentTimezone","_calendarLayout","_dateUtils","_computePositioning","_types","e","__esModule","default","generateEventLayouts","events","startCalendarDate","endCalendarDate","userCalendarId","calendarViewInterval","startDayOfWeekOffset","timezone","allDayEvents","partDayEvents","_partition","event","isAllDayOrSpansMidnight","allDayEventsSorted","_sortBy","id","getDurationInDays","_reverse","Date","start","valueOf","partDayEventsSorted","getDuration","calendarViewDayEvents","visibleDayCount","moment","tz","diff","visibleDays","dayCount","push","add","format","calendarViewDateRanges","map","visibleDay","computeCalendarDateRange","result","forEach","date","calendarLayoutOptions","visibleX","dayIndexes","enableWeekBreaks","startOfWeekXOffset","basisDate","startOfUserWeek","calendarViewDayLayout","_reduce","calendarLayout","eventStartIndex","startOf","eventDurationDays","findFitAndInsert","CalendarLayout","calendarViewDayRowHeight","height","calendarDates","calendarDate","currentDayDate","startDate","toDate","endDate","endOf","showHours","includes","dayId","allDayEventsLayout","partDayEventsLayout","x","y","visibleWidthDays","extend","EventExtend","None","isPrimaryRendered","getViewAt","rowIndex","concat","handleCollisions","filter","dateRangeIntersect","end","exports","combineEventPosition","dayDate","collisionObject","position","computePositioning","startOfDayMoment","allEvents","stackableEvents","calendarId","stackedEvtsByPos","curStack","evt","idx","length","stackEvt","stackEvtEnd","stackEvtStart","eventStart","duration","collisions","total","order","some","el","spliceIdx","findIndex","splice","stackedEvents","Object","keys","pos","_default"],"sourceRoot":"../../../src","sources":["utils/generate-event-layouts.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TOP_MARGIN_PIXEL_OFFSET = exports.DEFAULT_MINUTE_HEIGHT = exports.ConfigProvider = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
const ConfigProvider = exports.ConfigProvider = /*#__PURE__*/(0, _react.createContext)(undefined);
|
|
9
|
+
const DEFAULT_MINUTE_HEIGHT = exports.DEFAULT_MINUTE_HEIGHT = 0.8;
|
|
10
|
+
const TOP_MARGIN_PIXEL_OFFSET = exports.TOP_MARGIN_PIXEL_OFFSET = 5;
|
|
11
|
+
//# sourceMappingURL=globals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","ConfigProvider","exports","createContext","undefined","DEFAULT_MINUTE_HEIGHT","TOP_MARGIN_PIXEL_OFFSET"],"sourceRoot":"../../../src","sources":["utils/globals.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,cAAc,GAAAC,OAAA,CAAAD,cAAA,gBAAG,IAAAE,oBAAa,EAASC,SAAkB,CAAC;AAEhE,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAAG,GAAG;AAEjC,MAAMC,uBAAuB,GAAAJ,OAAA,CAAAI,uBAAA,GAAG,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
8
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
+
const gesturePan = (startY, top, currentY, zoomLevel, maximumHour, height, refNewEvent, fiveMinuteInterval, isEditing, startEditing) => _reactNativeGestureHandler.Gesture.Pan().blocksExternalGesture(refNewEvent).onStart(() => {
|
|
10
|
+
if (startEditing) {
|
|
11
|
+
if (isEditing) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (!isEditing) {
|
|
15
|
+
(0, _reactNativeReanimated.runOnJS)(startEditing)();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
startY.value = top.value;
|
|
19
|
+
}).onUpdate(({
|
|
20
|
+
translationY
|
|
21
|
+
}) => {
|
|
22
|
+
let freshUpdatedStartTime;
|
|
23
|
+
if (fiveMinuteInterval) {
|
|
24
|
+
// Set the updated time in 15 minute increments but make sure we never go lower
|
|
25
|
+
// than the first minute of the day
|
|
26
|
+
freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
|
|
27
|
+
} else {
|
|
28
|
+
// Set the updated time in 1 minute increments but make sure we never go lower
|
|
29
|
+
// than the first minute of the day
|
|
30
|
+
freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Make sure the event does not span after midnight, and if so make sure it
|
|
34
|
+
// is limited to exactly midnight
|
|
35
|
+
if (freshUpdatedStartTime > maximumHour.value - height.value) {
|
|
36
|
+
freshUpdatedStartTime = maximumHour.value - height.value;
|
|
37
|
+
}
|
|
38
|
+
currentY.value = freshUpdatedStartTime;
|
|
39
|
+
});
|
|
40
|
+
var _default = exports.default = gesturePan;
|
|
41
|
+
//# sourceMappingURL=pan-edit-event-gesture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeGestureHandler","require","_reactNativeReanimated","gesturePan","startY","top","currentY","zoomLevel","maximumHour","height","refNewEvent","fiveMinuteInterval","isEditing","startEditing","Gesture","Pan","blocksExternalGesture","onStart","runOnJS","value","onUpdate","translationY","freshUpdatedStartTime","Math","max","floor","_default","exports","default"],"sourceRoot":"../../../src","sources":["utils/pan-edit-event-gesture.ts"],"mappings":";;;;;;AAAA,IAAAA,0BAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AAIA,MAAME,UAAU,GAAGA,CACjBC,MAA2B,EAC3BC,GAAwB,EACxBC,QAA6B,EAC7BC,SAA8B,EAC9BC,WAAgC,EAChCC,MAA2B,EAC3BC,WAA2B,EAC3BC,kBAA4B,EAC5BC,SAAyC,EACzCC,YAAyB,KAEzBC,kCAAO,CAACC,GAAG,CAAC,CAAC,CACVC,qBAAqB,CAACN,WAAW,CAAC,CAClCO,OAAO,CAAC,MAAM;EACb,IAAIJ,YAAY,EAAE;IAChB,IAAID,SAAS,EAAE;MACb;IACF;IAEA,IAAI,CAACA,SAAS,EAAE;MACd,IAAAM,8BAAO,EAACL,YAAY,CAAC,CAAC,CAAC;IACzB;EACF;EAEAT,MAAM,CAACe,KAAK,GAAGd,GAAG,CAACc,KAAK;AAC1B,CAAC,CAAC,CACDC,QAAQ,CAAC,CAAC;EAAEC;AAAa,CAAC,KAAK;EAC9B,IAAIC,qBAAqB;EAEzB,IAAIX,kBAAkB,EAAE;IACtB;IACA;IACAW,qBAAqB,GAAGC,IAAI,CAACC,GAAG,CAC9B,CAAC,EACDpB,MAAM,CAACe,KAAK,GACVI,IAAI,CAACE,KAAK,CAACJ,YAAY,GAAGd,SAAS,CAACY,KAAK,GAAG,CAAC,CAAC,IAC3CZ,SAAS,CAACY,KAAK,GAAG,CAAC,CAC1B,CAAC;EACH,CAAC,MAAM;IACL;IACA;IACAG,qBAAqB,GAAGC,IAAI,CAACC,GAAG,CAC9B,CAAC,EACDpB,MAAM,CAACe,KAAK,GACVI,IAAI,CAACE,KAAK,CAACJ,YAAY,GAAGd,SAAS,CAACY,KAAK,CAAC,GAAGZ,SAAS,CAACY,KAC3D,CAAC;EACH;;EAEA;EACA;EACA,IAAIG,qBAAqB,GAAGd,WAAW,CAACW,KAAK,GAAGV,MAAM,CAACU,KAAK,EAAE;IAC5DG,qBAAqB,GAAGd,WAAW,CAACW,KAAK,GAAGV,MAAM,CAACU,KAAK;EAC1D;EAEAb,QAAQ,CAACa,KAAK,GAAGG,qBAAqB;AACxC,CAAC,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEQzB,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback, useContext, useState } from "react";
|
|
4
|
+
import { ConfigProvider } from "src/utils/globals";
|
|
5
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
6
|
+
import EventContainer from "src/components/event-container";
|
|
7
|
+
import { Pressable } from "react-native-gesture-handler";
|
|
8
|
+
import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from "react-native-reanimated";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const AllDayEvents = /*#__PURE__*/memo(() => {
|
|
11
|
+
const {
|
|
12
|
+
layout,
|
|
13
|
+
theme,
|
|
14
|
+
maxAllDayEvents
|
|
15
|
+
} = useContext(ConfigProvider);
|
|
16
|
+
const [showAllDayEvents, setShowAllDayEvents] = useState(false);
|
|
17
|
+
const measuredHeight = useSharedValue(0);
|
|
18
|
+
const originalHeight = useSharedValue(0);
|
|
19
|
+
const onPress = useCallback(() => {
|
|
20
|
+
const newState = !showAllDayEvents;
|
|
21
|
+
if (!newState) {
|
|
22
|
+
measuredHeight.value = withTiming(originalHeight.value, {
|
|
23
|
+
duration: 250
|
|
24
|
+
}, () => {
|
|
25
|
+
runOnJS(setShowAllDayEvents)(newState);
|
|
26
|
+
});
|
|
27
|
+
} else {
|
|
28
|
+
setShowAllDayEvents(newState);
|
|
29
|
+
}
|
|
30
|
+
}, [measuredHeight, originalHeight, showAllDayEvents]);
|
|
31
|
+
const allDayEvents = showAllDayEvents ? layout.allDayEventsLayout : layout.allDayEventsLayout.slice(0, maxAllDayEvents);
|
|
32
|
+
const restEventAmount = layout.allDayEventsLayout.length - allDayEvents.length;
|
|
33
|
+
|
|
34
|
+
// Called whenever the content inside changes layout
|
|
35
|
+
const onContentLayout = useCallback(e => {
|
|
36
|
+
const {
|
|
37
|
+
height
|
|
38
|
+
} = e.nativeEvent.layout;
|
|
39
|
+
if (!originalHeight.value) {
|
|
40
|
+
originalHeight.value = height;
|
|
41
|
+
measuredHeight.value = height;
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Animate from the old height to the new height
|
|
46
|
+
measuredHeight.value = withTiming(height, {
|
|
47
|
+
duration: 250
|
|
48
|
+
});
|
|
49
|
+
}, [measuredHeight, originalHeight]);
|
|
50
|
+
|
|
51
|
+
// Apply the animated height to the wrapping container
|
|
52
|
+
const animatedStyle = useAnimatedStyle(() => {
|
|
53
|
+
return {
|
|
54
|
+
// This ensures the container’s height animates smoothly
|
|
55
|
+
height: measuredHeight.value
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
return /*#__PURE__*/_jsx(View, {
|
|
59
|
+
style: [styles.container, theme?.allDayContainer],
|
|
60
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
61
|
+
style: [styles.eventContainer, theme?.allDayEventContainer],
|
|
62
|
+
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
63
|
+
style: [animatedStyle, {
|
|
64
|
+
overflow: "hidden",
|
|
65
|
+
// so children get clipped during animation
|
|
66
|
+
backgroundColor: "lightgrey",
|
|
67
|
+
minHeight: 1
|
|
68
|
+
}],
|
|
69
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
70
|
+
onLayout: onContentLayout,
|
|
71
|
+
children: allDayEvents.map(allDayLayout => /*#__PURE__*/_jsx(EventContainer, {
|
|
72
|
+
layout: allDayLayout
|
|
73
|
+
}, allDayLayout.event.id))
|
|
74
|
+
})
|
|
75
|
+
}), layout.allDayEventsLayout.length > maxAllDayEvents ? /*#__PURE__*/_jsx(Pressable, {
|
|
76
|
+
onPress: onPress,
|
|
77
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
78
|
+
style: [styles.moreContainer, theme?.allDayShowMoreContainer],
|
|
79
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
80
|
+
style: [styles.moreContainerText, theme?.allDayShowMoreText],
|
|
81
|
+
children: restEventAmount ? `${restEventAmount} more` : "Show less"
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
}) : null]
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
}, () => true);
|
|
88
|
+
export default AllDayEvents;
|
|
89
|
+
const styles = StyleSheet.create({
|
|
90
|
+
container: {
|
|
91
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
92
|
+
borderColor: "black",
|
|
93
|
+
overflow: "hidden"
|
|
94
|
+
},
|
|
95
|
+
eventContainer: {
|
|
96
|
+
marginLeft: 50,
|
|
97
|
+
marginRight: 10,
|
|
98
|
+
borderLeftWidth: StyleSheet.hairlineWidth,
|
|
99
|
+
borderColor: "black"
|
|
100
|
+
},
|
|
101
|
+
moreContainer: {
|
|
102
|
+
padding: 5
|
|
103
|
+
},
|
|
104
|
+
moreContainerText: {
|
|
105
|
+
fontSize: 12,
|
|
106
|
+
fontWeight: "bold",
|
|
107
|
+
color: "grey"
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=all-day-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useContext","useState","ConfigProvider","StyleSheet","Text","View","EventContainer","Pressable","Animated","runOnJS","useAnimatedStyle","useSharedValue","withTiming","jsx","_jsx","jsxs","_jsxs","AllDayEvents","layout","theme","maxAllDayEvents","showAllDayEvents","setShowAllDayEvents","measuredHeight","originalHeight","onPress","newState","value","duration","allDayEvents","allDayEventsLayout","slice","restEventAmount","length","onContentLayout","e","height","nativeEvent","animatedStyle","style","styles","container","allDayContainer","children","eventContainer","allDayEventContainer","overflow","backgroundColor","minHeight","onLayout","map","allDayLayout","event","id","moreContainer","allDayShowMoreContainer","moreContainerText","allDayShowMoreText","create","borderBottomWidth","hairlineWidth","borderColor","marginLeft","marginRight","borderLeftWidth","padding","fontSize","fontWeight","color"],"sourceRoot":"../../../src","sources":["components/all-day-events.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useContext } from "react";
|
|
4
|
+
import Animated, { useAnimatedStyle } from "react-native-reanimated";
|
|
5
|
+
import { StyleSheet } from "react-native";
|
|
6
|
+
import { ConfigProvider } from "src/utils/globals";
|
|
7
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
8
|
+
const BackgroundHoursContent = /*#__PURE__*/memo(({
|
|
9
|
+
hours
|
|
10
|
+
}) => {
|
|
11
|
+
const {
|
|
12
|
+
theme,
|
|
13
|
+
zoomLevel
|
|
14
|
+
} = useContext(ConfigProvider);
|
|
15
|
+
const styleHourSize = useAnimatedStyle(() => {
|
|
16
|
+
return {
|
|
17
|
+
height: zoomLevel.value * 60
|
|
18
|
+
};
|
|
19
|
+
}, []);
|
|
20
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
21
|
+
children: hours.map(hour => /*#__PURE__*/_jsx(Animated.View, {
|
|
22
|
+
style: [styles.hourContainer, hour === hours[hours.length - 1] ? styles.bottomBorder : undefined, theme?.backgroundHoursLayoutContainer, styleHourSize]
|
|
23
|
+
}, hour.increment))
|
|
24
|
+
});
|
|
25
|
+
}, () => true);
|
|
26
|
+
const styles = StyleSheet.create({
|
|
27
|
+
hourContainer: {
|
|
28
|
+
borderTopWidth: StyleSheet.hairlineWidth,
|
|
29
|
+
marginRight: -20,
|
|
30
|
+
borderColor: "black"
|
|
31
|
+
},
|
|
32
|
+
bottomBorder: {
|
|
33
|
+
borderBottomWidth: StyleSheet.hairlineWidth
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
export default BackgroundHoursContent;
|
|
37
|
+
//# sourceMappingURL=background-hours-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useContext","Animated","useAnimatedStyle","StyleSheet","ConfigProvider","jsx","_jsx","Fragment","_Fragment","BackgroundHoursContent","hours","theme","zoomLevel","styleHourSize","height","value","children","map","hour","View","style","styles","hourContainer","length","bottomBorder","undefined","backgroundHoursLayoutContainer","increment","create","borderTopWidth","hairlineWidth","marginRight","borderColor","borderBottomWidth"],"sourceRoot":"../../../src","sources":["components/background-hours-content.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,UAAU,QAAQ,OAAO;AACxC,OAAOC,QAAQ,IAAIC,gBAAgB,QAAQ,yBAAyB;AACpE,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,cAAc,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAOnD,MAAMC,sBAAsB,gBAAGV,IAAI,CACjC,CAAC;EAAEW;AAAmC,CAAC,KAAK;EAC1C,MAAM;IAAEC,KAAK;IAAEC;EAAU,CAAC,GAAGZ,UAAU,CAACI,cAAc,CAAC;EAEvD,MAAMS,aAAa,GAAGX,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MAAEY,MAAM,EAAEF,SAAS,CAACG,KAAK,GAAG;IAAG,CAAC;EACzC,CAAC,EAAE,EAAE,CAAC;EAEN,oBACET,IAAA,CAAAE,SAAA;IAAAQ,QAAA,EACGN,KAAK,CAACO,GAAG,CAAEC,IAAI,iBACdZ,IAAA,CAACL,QAAQ,CAACkB,IAAI;MACZC,KAAK,EAAE,CACLC,MAAM,CAACC,aAAa,EACpBJ,IAAI,KAAKR,KAAK,CAACA,KAAK,CAACa,MAAM,GAAG,CAAC,CAAC,GAC5BF,MAAM,CAACG,YAAY,GACnBC,SAAS,EACbd,KAAK,EAAEe,8BAA8B,EACrCb,aAAa;IACb,GACGK,IAAI,CAACS,SACX,CACF;EAAC,CACF,CAAC;AAEP,CAAC,EACD,MAAM,IACR,CAAC;AAED,MAAMN,MAAM,GAAGlB,UAAU,CAACyB,MAAM,CAAC;EAC/BN,aAAa,EAAE;IACbO,cAAc,EAAE1B,UAAU,CAAC2B,aAAa;IACxCC,WAAW,EAAE,CAAC,EAAE;IAChBC,WAAW,EAAE;EACf,CAAC;EACDR,YAAY,EAAE;IACZS,iBAAiB,EAAE9B,UAAU,CAAC2B;EAChC;AACF,CAAC,CAAC;AAEF,eAAerB,sBAAsB","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useContext } from "react";
|
|
4
|
+
import Animated, { useAnimatedStyle } from "react-native-reanimated";
|
|
5
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
6
|
+
import { ConfigProvider } from "src/utils/globals";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const BackgroundHoursLayout = /*#__PURE__*/memo(({
|
|
9
|
+
hours
|
|
10
|
+
}) => {
|
|
11
|
+
const {
|
|
12
|
+
theme,
|
|
13
|
+
zoomLevel
|
|
14
|
+
} = useContext(ConfigProvider);
|
|
15
|
+
const styleHourSize = useAnimatedStyle(() => {
|
|
16
|
+
return {
|
|
17
|
+
height: zoomLevel.value * 60
|
|
18
|
+
};
|
|
19
|
+
}, []);
|
|
20
|
+
return /*#__PURE__*/_jsx(View, {
|
|
21
|
+
style: [styles.hourContainer, theme?.backgroundHoursContainer],
|
|
22
|
+
children: hours.map(hour => /*#__PURE__*/_jsx(Animated.View, {
|
|
23
|
+
style: [styles.hourInnerContainer, theme?.backgroundHoursInnerContainer, styleHourSize],
|
|
24
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
25
|
+
style: [styles.hourText, theme?.backgroundHoursText],
|
|
26
|
+
children: hour.hourFormatted
|
|
27
|
+
})
|
|
28
|
+
}, hour.increment))
|
|
29
|
+
});
|
|
30
|
+
}, () => true);
|
|
31
|
+
const styles = StyleSheet.create({
|
|
32
|
+
hourContainer: {
|
|
33
|
+
flexDirection: "column",
|
|
34
|
+
flexGrow: 0,
|
|
35
|
+
flexShrink: 0,
|
|
36
|
+
flexBasis: 50,
|
|
37
|
+
paddingRight: 6
|
|
38
|
+
},
|
|
39
|
+
hourInnerContainer: {
|
|
40
|
+
marginTop: -12,
|
|
41
|
+
marginBottom: 12,
|
|
42
|
+
marginRight: 0
|
|
43
|
+
},
|
|
44
|
+
hourText: {
|
|
45
|
+
textAlign: "right",
|
|
46
|
+
color: "black",
|
|
47
|
+
fontSize: 10
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
export default BackgroundHoursLayout;
|
|
51
|
+
//# sourceMappingURL=background-hours-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useContext","Animated","useAnimatedStyle","StyleSheet","Text","View","ConfigProvider","jsx","_jsx","BackgroundHoursLayout","hours","theme","zoomLevel","styleHourSize","height","value","style","styles","hourContainer","backgroundHoursContainer","children","map","hour","hourInnerContainer","backgroundHoursInnerContainer","hourText","backgroundHoursText","hourFormatted","increment","create","flexDirection","flexGrow","flexShrink","flexBasis","paddingRight","marginTop","marginBottom","marginRight","textAlign","color","fontSize"],"sourceRoot":"../../../src","sources":["components/background-hours-layout.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,UAAU,QAAQ,OAAO;AACxC,OAAOC,QAAQ,IAAIC,gBAAgB,QAAQ,yBAAyB;AACpE,SAASC,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SAASC,cAAc,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOnD,MAAMC,qBAAqB,gBAAGV,IAAI,CAChC,CAAC;EAAEW;AAAkC,CAAC,KAAK;EACzC,MAAM;IAAEC,KAAK;IAAEC;EAAU,CAAC,GAAGZ,UAAU,CAACM,cAAc,CAAC;EAEvD,MAAMO,aAAa,GAAGX,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MAAEY,MAAM,EAAEF,SAAS,CAACG,KAAK,GAAG;IAAG,CAAC;EACzC,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEP,IAAA,CAACH,IAAI;IAACW,KAAK,EAAE,CAACC,MAAM,CAACC,aAAa,EAAEP,KAAK,EAAEQ,wBAAwB,CAAE;IAAAC,QAAA,EAClEV,KAAK,CAACW,GAAG,CAAEC,IAAI,iBACdd,IAAA,CAACP,QAAQ,CAACI,IAAI;MACZW,KAAK,EAAE,CACLC,MAAM,CAACM,kBAAkB,EACzBZ,KAAK,EAAEa,6BAA6B,EACpCX,aAAa,CACb;MAAAO,QAAA,eAGFZ,IAAA,CAACJ,IAAI;QAACY,KAAK,EAAE,CAACC,MAAM,CAACQ,QAAQ,EAAEd,KAAK,EAAEe,mBAAmB,CAAE;QAAAN,QAAA,EACxDE,IAAI,CAACK;MAAa,CACf;IAAC,GAJFL,IAAI,CAACM,SAKG,CAChB;EAAC,CACE,CAAC;AAEX,CAAC,EACD,MAAM,IACR,CAAC;AAED,MAAMX,MAAM,GAAGd,UAAU,CAAC0B,MAAM,CAAC;EAC/BX,aAAa,EAAE;IACbY,aAAa,EAAE,QAAQ;IACvBC,QAAQ,EAAE,CAAC;IACXC,UAAU,EAAE,CAAC;IACbC,SAAS,EAAE,EAAE;IACbC,YAAY,EAAE;EAChB,CAAC;EACDX,kBAAkB,EAAE;IAClBY,SAAS,EAAE,CAAC,EAAE;IACdC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE;EACf,CAAC;EACDZ,QAAQ,EAAE;IACRa,SAAS,EAAE,OAAO;IAClBC,KAAK,EAAE,OAAO;IACdC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAe/B,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Animated, { useSharedValue } from "react-native-reanimated";
|
|
4
|
+
import { useMemo } from "react";
|
|
5
|
+
import { Gesture, GestureDetector } from "react-native-gesture-handler";
|
|
6
|
+
import { StyleSheet } from "react-native";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const DragBar = ({
|
|
9
|
+
top,
|
|
10
|
+
height,
|
|
11
|
+
render,
|
|
12
|
+
refMainContainer,
|
|
13
|
+
fiveMinuteInterval,
|
|
14
|
+
zoomLevel,
|
|
15
|
+
maximumHour
|
|
16
|
+
}) => {
|
|
17
|
+
const startY = useSharedValue(0);
|
|
18
|
+
const gesturePan = Gesture.Pan().blocksExternalGesture(refMainContainer).onStart(() => {
|
|
19
|
+
startY.value = top ? top.value : height.value;
|
|
20
|
+
}).onUpdate(({
|
|
21
|
+
translationY
|
|
22
|
+
}) => {
|
|
23
|
+
if (top) {
|
|
24
|
+
const originalY = top.value;
|
|
25
|
+
let freshUpdatedStartTime;
|
|
26
|
+
if (fiveMinuteInterval) {
|
|
27
|
+
// Set the updated time in 15 minute increments but make sure we never go lower
|
|
28
|
+
// than the first minute of the day
|
|
29
|
+
freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
|
|
30
|
+
} else {
|
|
31
|
+
// Set the updated time in 1 minute increments but make sure we never go lower
|
|
32
|
+
// than the first minute of the day
|
|
33
|
+
freshUpdatedStartTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Make sure the event does not span after midnight, and if so make sure it
|
|
37
|
+
// is limited to exactly midnight
|
|
38
|
+
if (freshUpdatedStartTime > maximumHour.value - height.value) {
|
|
39
|
+
freshUpdatedStartTime = maximumHour.value - height.value;
|
|
40
|
+
}
|
|
41
|
+
top.value = freshUpdatedStartTime;
|
|
42
|
+
height.value = height.value + (originalY - top.value);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
let freshUpdatedEndTime;
|
|
46
|
+
if (fiveMinuteInterval) {
|
|
47
|
+
// Set the updated time in 15 minute increments but make sure we never go lower
|
|
48
|
+
// than the first minute of the day
|
|
49
|
+
freshUpdatedEndTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value / 5) * (zoomLevel.value * 5));
|
|
50
|
+
} else {
|
|
51
|
+
// Set the updated time in 1 minute increments but make sure we never go lower
|
|
52
|
+
// than the first minute of the day
|
|
53
|
+
freshUpdatedEndTime = Math.max(0, startY.value + Math.floor(translationY / zoomLevel.value) * zoomLevel.value);
|
|
54
|
+
}
|
|
55
|
+
height.value = freshUpdatedEndTime;
|
|
56
|
+
});
|
|
57
|
+
const styleDragBar = useMemo(() => ({
|
|
58
|
+
bottom: !top ? 0 : undefined,
|
|
59
|
+
top: top ? 0 : undefined
|
|
60
|
+
}), [top]);
|
|
61
|
+
const renderedComponent = useMemo(render, [render]);
|
|
62
|
+
return /*#__PURE__*/_jsx(GestureDetector, {
|
|
63
|
+
gesture: gesturePan,
|
|
64
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
65
|
+
style: [styles.dragBar, styleDragBar],
|
|
66
|
+
children: renderedComponent
|
|
67
|
+
})
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
export default DragBar;
|
|
71
|
+
const styles = StyleSheet.create({
|
|
72
|
+
dragBar: {
|
|
73
|
+
position: "absolute",
|
|
74
|
+
left: 0,
|
|
75
|
+
right: 0
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=drag-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Animated","useSharedValue","useMemo","Gesture","GestureDetector","StyleSheet","jsx","_jsx","DragBar","top","height","render","refMainContainer","fiveMinuteInterval","zoomLevel","maximumHour","startY","gesturePan","Pan","blocksExternalGesture","onStart","value","onUpdate","translationY","originalY","freshUpdatedStartTime","Math","max","floor","freshUpdatedEndTime","styleDragBar","bottom","undefined","renderedComponent","gesture","children","View","style","styles","dragBar","create","position","left","right"],"sourceRoot":"../../../src","sources":["components/drag-bar.tsx"],"mappings":"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","ignoreList":[]}
|