react-native-ll-calendar 0.17.0 → 0.17.1

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.
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import React, { useMemo } from 'react';
4
- import { Platform, RefreshControl, ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
3
+ import React, { memo, useMemo } from 'react';
4
+ import { FlatList, Platform, RefreshControl, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
5
5
  import dayjs from 'dayjs';
6
6
  import ResourcesCalendarEventPosition from "../../utils/resources-calendar-event-position.js";
7
7
  import { EVENT_GAP } from "../../constants/size.js";
@@ -9,14 +9,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
9
9
  export const CELL_BORDER_WIDTH = 0.5;
10
10
  export const BORDER_COLOR = 'lightslategrey';
11
11
  const DEFAULT_EVENT_HEIGHT = 22;
12
- function DayCell({
12
+ const DayCell = /*#__PURE__*/memo(function DayCell({
13
13
  resource,
14
14
  date,
15
15
  dateIndex,
16
16
  columnWidth,
17
17
  eventHeight,
18
- eventPosition,
19
- eventsByResourceId,
18
+ cellEvents,
20
19
  onPressCell,
21
20
  onLongPressCell,
22
21
  delayLongPressCell,
@@ -30,39 +29,6 @@ function DayCell({
30
29
  renderEventOverlay,
31
30
  cellContainerStyle
32
31
  }) {
33
- const resourceEvents = eventsByResourceId.get(resource.id) ?? [];
34
- const filteredEvents = resourceEvents.filter(event => {
35
- const startDjs = dayjs(event.start);
36
- const endDjs = dayjs(event.end);
37
- return startDjs.format('YYYY-MM-DD') === date.format('YYYY-MM-DD') || dateIndex === 0 && startDjs.isBefore(date) && !endDjs.startOf('day').isBefore(date.startOf('day'));
38
- }).sort((a, b) => {
39
- const aStartDjs = dateIndex === 0 ? date : dayjs(a.start);
40
- const bStartDjs = dateIndex === 0 ? date : dayjs(b.start);
41
- const aDiffDays = dayjs(a.end).startOf('day').diff(aStartDjs.startOf('day'), 'day');
42
- const bDiffDays = dayjs(b.end).startOf('day').diff(bStartDjs.startOf('day'), 'day');
43
- if (aDiffDays !== bDiffDays) {
44
- return bDiffDays - aDiffDays;
45
- }
46
- return dayjs(a.start).diff(dayjs(b.start));
47
- });
48
- const rowNums = eventPosition.getRowNums({
49
- resourceId: resource.id,
50
- date: date.toDate()
51
- });
52
- const cellEvents = [];
53
- const rowsLength = rowNums.length + filteredEvents.length;
54
- let eventIndex = 0;
55
- for (let ii = 1; ii <= rowsLength; ii++) {
56
- if (rowNums.includes(ii)) {
57
- cellEvents.push(ii);
58
- } else {
59
- const event = filteredEvents[eventIndex];
60
- if (event) {
61
- cellEvents.push(event);
62
- }
63
- eventIndex++;
64
- }
65
- }
66
32
  const showPrioritizedCellOverlay = prioritizeCellInteraction === true && (onPressCell != null || onLongPressCell != null);
67
33
  const cellWrapperStyle = [styles.dayCell, {
68
34
  width: columnWidth,
@@ -95,12 +61,6 @@ function DayCell({
95
61
  if (isNextWeekEvent) {
96
62
  width += EVENT_GAP + CELL_BORDER_WIDTH;
97
63
  }
98
- eventPosition.push({
99
- resourceId: resource.id,
100
- startDate: startDjs.toDate(),
101
- days: effectiveDiffDays + 1,
102
- rowNum: rowIndex + 1
103
- });
104
64
  const eventOverlayNode = renderEventOverlay?.(event);
105
65
  const showEventOverlay = renderEventOverlay != null && eventOverlayNode != null && eventOverlayNode !== false;
106
66
  return /*#__PURE__*/_jsxs(View, {
@@ -162,7 +122,7 @@ function DayCell({
162
122
  delayLongPress: delayLongPressCell,
163
123
  children: cellInner
164
124
  });
165
- }
125
+ });
166
126
  export function WeekPanel({
167
127
  weekKey,
168
128
  width,
@@ -190,12 +150,14 @@ export function WeekPanel({
190
150
  fixedRowCount
191
151
  }) {
192
152
  const columnWidth = width / 8;
193
- const startDjs = dayjs(weekKey);
194
- const days = Array.from({
195
- length: 7
196
- }, (_, i) => startDjs.add(i, 'day'));
197
153
  const resolvedEventHeight = eventHeight ?? DEFAULT_EVENT_HEIGHT;
198
154
  const resolvedFixedRowCount = fixedRowCount ?? 0;
155
+ const days = useMemo(() => {
156
+ const start = dayjs(weekKey);
157
+ return Array.from({
158
+ length: 7
159
+ }, (_, i) => start.add(i, 'day'));
160
+ }, [weekKey]);
199
161
  const eventsByResourceId = useMemo(() => {
200
162
  const deduped = new Map();
201
163
  for (const event of events) {
@@ -209,9 +171,66 @@ export function WeekPanel({
209
171
  }
210
172
  return map;
211
173
  }, [events]);
174
+ const cellDataMap = useMemo(() => {
175
+ const ep = new ResourcesCalendarEventPosition();
176
+ const map = new Map();
177
+ for (const resource of resources) {
178
+ for (let dateIndex = 0; dateIndex < days.length; dateIndex++) {
179
+ const date = days[dateIndex];
180
+ const resourceEvents = eventsByResourceId.get(resource.id) ?? [];
181
+ const filteredEvents = resourceEvents.filter(event => {
182
+ const startDjs = dayjs(event.start);
183
+ const endDjs = dayjs(event.end);
184
+ return startDjs.format('YYYY-MM-DD') === date.format('YYYY-MM-DD') || dateIndex === 0 && startDjs.isBefore(date) && !endDjs.startOf('day').isBefore(date.startOf('day'));
185
+ }).sort((a, b) => {
186
+ const aStartDjs = dateIndex === 0 ? date : dayjs(a.start);
187
+ const bStartDjs = dateIndex === 0 ? date : dayjs(b.start);
188
+ const aDiffDays = dayjs(a.end).startOf('day').diff(aStartDjs.startOf('day'), 'day');
189
+ const bDiffDays = dayjs(b.end).startOf('day').diff(bStartDjs.startOf('day'), 'day');
190
+ if (aDiffDays !== bDiffDays) return bDiffDays - aDiffDays;
191
+ return dayjs(a.start).diff(dayjs(b.start));
192
+ });
193
+ const rowNums = ep.getRowNums({
194
+ resourceId: resource.id,
195
+ date: date.toDate()
196
+ });
197
+ const cellEvents = [];
198
+ const rowsLength = rowNums.length + filteredEvents.length;
199
+ let eventIndex = 0;
200
+ for (let ii = 1; ii <= rowsLength; ii++) {
201
+ if (rowNums.includes(ii)) {
202
+ cellEvents.push(ii);
203
+ } else {
204
+ const event = filteredEvents[eventIndex];
205
+ if (event) cellEvents.push(event);
206
+ eventIndex++;
207
+ }
208
+ }
209
+ for (let rowIndex = 0; rowIndex < cellEvents.length; rowIndex++) {
210
+ const item = cellEvents[rowIndex];
211
+ if (item !== undefined && typeof item !== 'number') {
212
+ const rawStartDjs = dayjs(item.start);
213
+ const startDjs = dateIndex === 0 ? date : rawStartDjs;
214
+ const endDjs = dayjs(item.end);
215
+ const diffDays = endDjs.startOf('day').diff(startDjs.startOf('day'), 'day');
216
+ const remainingDaysInWeek = 6 - dateIndex;
217
+ const isNextWeekEvent = diffDays > remainingDaysInWeek;
218
+ const effectiveDiffDays = isNextWeekEvent ? remainingDaysInWeek : diffDays;
219
+ ep.push({
220
+ resourceId: resource.id,
221
+ startDate: startDjs.toDate(),
222
+ days: effectiveDiffDays + 1,
223
+ rowNum: rowIndex + 1
224
+ });
225
+ }
226
+ }
227
+ map.set(`${resource.id}-${date.format('YYYY-MM-DD')}`, cellEvents);
228
+ }
229
+ }
230
+ return map;
231
+ }, [resources, days, eventsByResourceId]);
212
232
  const fixedResources = useMemo(() => resources.slice(0, resolvedFixedRowCount), [resources, resolvedFixedRowCount]);
213
233
  const scrollableResources = useMemo(() => resources.slice(resolvedFixedRowCount), [resources, resolvedFixedRowCount]);
214
- const eventPosition = new ResourcesCalendarEventPosition();
215
234
  const renderResourceRow = (resource, showTopBorder) => /*#__PURE__*/_jsxs(View, {
216
235
  style: [styles.resourceRow, showTopBorder && styles.resourceRowFirst],
217
236
  children: [/*#__PURE__*/_jsx(View, {
@@ -230,8 +249,7 @@ export function WeekPanel({
230
249
  dateIndex: dateIndex,
231
250
  columnWidth: columnWidth,
232
251
  eventHeight: resolvedEventHeight,
233
- eventPosition: eventPosition,
234
- eventsByResourceId: eventsByResourceId,
252
+ cellEvents: cellDataMap.get(`${resource.id}-${day.format('YYYY-MM-DD')}`) ?? [],
235
253
  onPressCell: onPressCell,
236
254
  onLongPressCell: onLongPressCell,
237
255
  delayLongPressCell: delayLongPressCell,
@@ -270,17 +288,25 @@ export function WeekPanel({
270
288
  })]
271
289
  })
272
290
  }, day.format('YYYY-MM-DD')))]
273
- }), fixedResources.map((resource, index) => renderResourceRow(resource, index === 0)), /*#__PURE__*/_jsxs(ScrollView, {
291
+ }), fixedResources.map((resource, index) => renderResourceRow(resource, index === 0)), /*#__PURE__*/_jsx(FlatList, {
292
+ data: scrollableResources,
293
+ keyExtractor: item => item.id,
294
+ renderItem: ({
295
+ item,
296
+ index
297
+ }) => renderResourceRow(item, fixedResources.length === 0 && index === 0),
274
298
  showsVerticalScrollIndicator: false,
299
+ nestedScrollEnabled: true,
275
300
  refreshControl: /*#__PURE__*/_jsx(RefreshControl, {
276
301
  refreshing: refreshing ?? false,
277
302
  onRefresh: onRefresh
278
303
  }),
279
- children: [scrollableResources.map((resource, index) => renderResourceRow(resource, fixedResources.length === 0 && index === 0)), /*#__PURE__*/_jsx(View, {
304
+ ListFooterComponent: /*#__PURE__*/_jsx(View, {
280
305
  style: {
281
306
  height: bottomSpacing
282
307
  }
283
- })]
308
+ }),
309
+ removeClippedSubviews: false
284
310
  })]
285
311
  });
286
312
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","Platform","RefreshControl","ScrollView","StyleSheet","Text","TouchableOpacity","View","dayjs","ResourcesCalendarEventPosition","EVENT_GAP","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","CELL_BORDER_WIDTH","BORDER_COLOR","DEFAULT_EVENT_HEIGHT","DayCell","resource","date","dateIndex","columnWidth","eventHeight","eventPosition","eventsByResourceId","onPressCell","onLongPressCell","delayLongPressCell","onPressEvent","onLongPressEvent","delayLongPressEvent","prioritizeCellInteraction","eventTextStyle","eventEllipsizeMode","allowFontScaling","renderEventOverlay","cellContainerStyle","resourceEvents","get","id","filteredEvents","filter","event","startDjs","start","endDjs","end","format","isBefore","startOf","sort","a","b","aStartDjs","bStartDjs","aDiffDays","diff","bDiffDays","rowNums","getRowNums","resourceId","toDate","cellEvents","rowsLength","length","eventIndex","ii","includes","push","showPrioritizedCellOverlay","cellWrapperStyle","styles","dayCell","width","zIndex","cellInner","children","style","dayCellBackground","map","rowIndex","height","marginBottom","rawStartDjs","diffDays","isPrevDateEvent","remainingDaysInWeek","isNextWeekEvent","effectiveDiffDays","startDate","days","rowNum","eventOverlayNode","showEventOverlay","pointerEvents","eventOuter","prevDateEvent","backgroundColor","borderColor","borderStyle","undefined","borderWidth","borderRadius","prevDateEventInner","nextWeekEventInner","activeOpacity","onPress","onLongPress","delayLongPress","numberOfLines","ellipsizeMode","eventTitle","color","title","eventOverlayHost","accessible","cellInteractionOverlay","WeekPanel","weekKey","resources","events","dateCellContainerStyle","renderDateLabel","renderResourceNameLabel","onRefresh","refreshing","bottomSpacing","fixedRowCount","Array","from","_","i","add","resolvedEventHeight","resolvedFixedRowCount","deduped","Map","set","values","list","fixedResources","slice","scrollableResources","renderResourceRow","showTopBorder","resourceRow","resourceRowFirst","resourceNameCell","resourceNameText","name","day","panel","headerRow","headerCell","resourceNameHeaderCell","headerDayOfWeekText","headerDateText","index","showsVerticalScrollIndicator","refreshControl","create","flex","overflow","flexDirection","borderBottomWidth","borderBottomColor","alignItems","justifyContent","paddingVertical","borderRightWidth","borderRightColor","fontSize","fontWeight","minHeight","borderTopWidth","borderTopColor","paddingHorizontal","paddingBottom","position","absoluteFillObject","select","android","elevation","default","marginTop","marginLeft","borderTopStartRadius","borderBottomStartRadius","borderTopEndRadius","borderBottomEndRadius","paddingRight"],"sourceRoot":"../../../../src","sources":["calendar/week-resources-calendar/WeekPanel.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useMemo","FlatList","Platform","RefreshControl","StyleSheet","Text","TouchableOpacity","View","dayjs","ResourcesCalendarEventPosition","EVENT_GAP","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","CELL_BORDER_WIDTH","BORDER_COLOR","DEFAULT_EVENT_HEIGHT","DayCell","resource","date","dateIndex","columnWidth","eventHeight","cellEvents","onPressCell","onLongPressCell","delayLongPressCell","onPressEvent","onLongPressEvent","delayLongPressEvent","prioritizeCellInteraction","eventTextStyle","eventEllipsizeMode","allowFontScaling","renderEventOverlay","cellContainerStyle","showPrioritizedCellOverlay","cellWrapperStyle","styles","dayCell","width","zIndex","cellInner","children","style","dayCellBackground","toDate","map","event","rowIndex","height","marginBottom","rawStartDjs","start","startDjs","endDjs","end","diffDays","startOf","diff","isPrevDateEvent","isBefore","remainingDaysInWeek","isNextWeekEvent","effectiveDiffDays","eventOverlayNode","showEventOverlay","pointerEvents","eventOuter","prevDateEvent","backgroundColor","borderColor","borderStyle","undefined","borderWidth","borderRadius","prevDateEventInner","nextWeekEventInner","activeOpacity","onPress","onLongPress","delayLongPress","numberOfLines","ellipsizeMode","eventTitle","color","title","eventOverlayHost","id","accessible","cellInteractionOverlay","WeekPanel","weekKey","resources","events","dateCellContainerStyle","renderDateLabel","renderResourceNameLabel","onRefresh","refreshing","bottomSpacing","fixedRowCount","resolvedEventHeight","resolvedFixedRowCount","days","Array","from","length","_","i","add","eventsByResourceId","deduped","Map","set","values","list","get","resourceId","push","cellDataMap","ep","resourceEvents","filteredEvents","filter","format","sort","a","b","aStartDjs","bStartDjs","aDiffDays","bDiffDays","rowNums","getRowNums","rowsLength","eventIndex","ii","includes","item","startDate","rowNum","fixedResources","slice","scrollableResources","renderResourceRow","showTopBorder","resourceRow","resourceRowFirst","resourceNameCell","resourceNameText","name","day","panel","headerRow","headerCell","resourceNameHeaderCell","headerDayOfWeekText","headerDateText","index","data","keyExtractor","renderItem","showsVerticalScrollIndicator","nestedScrollEnabled","refreshControl","ListFooterComponent","removeClippedSubviews","create","flex","overflow","flexDirection","borderBottomWidth","borderBottomColor","alignItems","justifyContent","paddingVertical","borderRightWidth","borderRightColor","fontSize","fontWeight","minHeight","borderTopWidth","borderTopColor","paddingHorizontal","paddingBottom","position","absoluteFillObject","select","android","elevation","default","marginTop","marginLeft","borderTopStartRadius","borderBottomStartRadius","borderTopEndRadius","borderBottomEndRadius","paddingRight"],"sourceRoot":"../../../../src","sources":["calendar/week-resources-calendar/WeekPanel.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"WeekPanel.d.ts","sourceRoot":"","sources":["../../../../../src/calendar/week-resources-calendar/WeekPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAQL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,gCAAgC,CAAC;AAIxC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAG7C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACzD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IACnD,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC3E,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACpD,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AA+OF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,WAAW,EACX,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,GACd,EAAE,cAAc,2CAwIhB"}
1
+ {"version":3,"file":"WeekPanel.d.ts","sourceRoot":"","sources":["../../../../../src/calendar/week-resources-calendar/WeekPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAQL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,gCAAgC,CAAC;AAIxC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAG7C,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;IACzD,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IACnD,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;IAC3E,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACpD,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC5E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAuLF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,WAAW,EACX,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,aAAa,EACb,aAAa,GACd,EAAE,cAAc,2CA4NhB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ll-calendar",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "ReactNative Calendar Library",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,8 +1,8 @@
1
- import React, { useMemo, type ReactNode } from 'react';
1
+ import React, { memo, useMemo, type ReactNode } from 'react';
2
2
  import {
3
+ FlatList,
3
4
  Platform,
4
5
  RefreshControl,
5
- ScrollView,
6
6
  StyleSheet,
7
7
  Text,
8
8
  TouchableOpacity,
@@ -55,8 +55,7 @@ type DayCellProps = {
55
55
  dateIndex: number;
56
56
  columnWidth: number;
57
57
  eventHeight: number;
58
- eventPosition: ResourcesCalendarEventPosition;
59
- eventsByResourceId: Map<string, CalendarEvent[]>;
58
+ cellEvents: (CalendarEvent | number)[];
60
59
  onPressCell?: (resource: CalendarResource, date: Date) => void;
61
60
  onLongPressCell?: (resource: CalendarResource, date: Date) => void;
62
61
  delayLongPressCell?: number;
@@ -71,14 +70,13 @@ type DayCellProps = {
71
70
  cellContainerStyle?: (resource: CalendarResource, date: Date) => ViewStyle;
72
71
  };
73
72
 
74
- function DayCell({
73
+ const DayCell = memo(function DayCell({
75
74
  resource,
76
75
  date,
77
76
  dateIndex,
78
77
  columnWidth,
79
78
  eventHeight,
80
- eventPosition,
81
- eventsByResourceId,
79
+ cellEvents,
82
80
  onPressCell,
83
81
  onLongPressCell,
84
82
  delayLongPressCell,
@@ -92,53 +90,6 @@ function DayCell({
92
90
  renderEventOverlay,
93
91
  cellContainerStyle,
94
92
  }: DayCellProps) {
95
- const resourceEvents = eventsByResourceId.get(resource.id) ?? [];
96
-
97
- const filteredEvents = resourceEvents
98
- .filter((event) => {
99
- const startDjs = dayjs(event.start);
100
- const endDjs = dayjs(event.end);
101
- return (
102
- startDjs.format('YYYY-MM-DD') === date.format('YYYY-MM-DD') ||
103
- (dateIndex === 0 &&
104
- startDjs.isBefore(date) &&
105
- !endDjs.startOf('day').isBefore(date.startOf('day')))
106
- );
107
- })
108
- .sort((a, b) => {
109
- const aStartDjs = dateIndex === 0 ? date : dayjs(a.start);
110
- const bStartDjs = dateIndex === 0 ? date : dayjs(b.start);
111
- const aDiffDays = dayjs(a.end)
112
- .startOf('day')
113
- .diff(aStartDjs.startOf('day'), 'day');
114
- const bDiffDays = dayjs(b.end)
115
- .startOf('day')
116
- .diff(bStartDjs.startOf('day'), 'day');
117
- if (aDiffDays !== bDiffDays) {
118
- return bDiffDays - aDiffDays;
119
- }
120
- return dayjs(a.start).diff(dayjs(b.start));
121
- });
122
-
123
- const rowNums = eventPosition.getRowNums({
124
- resourceId: resource.id,
125
- date: date.toDate(),
126
- });
127
- const cellEvents: (CalendarEvent | number)[] = [];
128
- const rowsLength = rowNums.length + filteredEvents.length;
129
- let eventIndex = 0;
130
- for (let ii = 1; ii <= rowsLength; ii++) {
131
- if (rowNums.includes(ii)) {
132
- cellEvents.push(ii);
133
- } else {
134
- const event = filteredEvents[eventIndex];
135
- if (event) {
136
- cellEvents.push(event);
137
- }
138
- eventIndex++;
139
- }
140
- }
141
-
142
93
  const showPrioritizedCellOverlay =
143
94
  prioritizeCellInteraction === true &&
144
95
  (onPressCell != null || onLongPressCell != null);
@@ -190,13 +141,6 @@ function DayCell({
190
141
  width += EVENT_GAP + CELL_BORDER_WIDTH;
191
142
  }
192
143
 
193
- eventPosition.push({
194
- resourceId: resource.id,
195
- startDate: startDjs.toDate(),
196
- days: effectiveDiffDays + 1,
197
- rowNum: rowIndex + 1,
198
- });
199
-
200
144
  const eventOverlayNode = renderEventOverlay?.(event);
201
145
  const showEventOverlay =
202
146
  renderEventOverlay != null &&
@@ -284,7 +228,7 @@ function DayCell({
284
228
  {cellInner}
285
229
  </TouchableOpacity>
286
230
  );
287
- }
231
+ });
288
232
 
289
233
  export function WeekPanel({
290
234
  weekKey,
@@ -313,11 +257,14 @@ export function WeekPanel({
313
257
  fixedRowCount,
314
258
  }: WeekPanelProps) {
315
259
  const columnWidth = width / 8;
316
- const startDjs = dayjs(weekKey);
317
- const days = Array.from({ length: 7 }, (_, i) => startDjs.add(i, 'day'));
318
260
  const resolvedEventHeight = eventHeight ?? DEFAULT_EVENT_HEIGHT;
319
261
  const resolvedFixedRowCount = fixedRowCount ?? 0;
320
262
 
263
+ const days = useMemo(() => {
264
+ const start = dayjs(weekKey);
265
+ return Array.from({ length: 7 }, (_, i) => start.add(i, 'day'));
266
+ }, [weekKey]);
267
+
321
268
  const eventsByResourceId = useMemo(() => {
322
269
  const deduped = new Map<string, CalendarEvent>();
323
270
  for (const event of events) {
@@ -332,6 +279,88 @@ export function WeekPanel({
332
279
  return map;
333
280
  }, [events]);
334
281
 
282
+ const cellDataMap = useMemo(() => {
283
+ const ep = new ResourcesCalendarEventPosition();
284
+ const map = new Map<string, (CalendarEvent | number)[]>();
285
+
286
+ for (const resource of resources) {
287
+ for (let dateIndex = 0; dateIndex < days.length; dateIndex++) {
288
+ const date = days[dateIndex]!;
289
+ const resourceEvents = eventsByResourceId.get(resource.id) ?? [];
290
+
291
+ const filteredEvents = resourceEvents
292
+ .filter((event) => {
293
+ const startDjs = dayjs(event.start);
294
+ const endDjs = dayjs(event.end);
295
+ return (
296
+ startDjs.format('YYYY-MM-DD') === date.format('YYYY-MM-DD') ||
297
+ (dateIndex === 0 &&
298
+ startDjs.isBefore(date) &&
299
+ !endDjs.startOf('day').isBefore(date.startOf('day')))
300
+ );
301
+ })
302
+ .sort((a, b) => {
303
+ const aStartDjs = dateIndex === 0 ? date : dayjs(a.start);
304
+ const bStartDjs = dateIndex === 0 ? date : dayjs(b.start);
305
+ const aDiffDays = dayjs(a.end)
306
+ .startOf('day')
307
+ .diff(aStartDjs.startOf('day'), 'day');
308
+ const bDiffDays = dayjs(b.end)
309
+ .startOf('day')
310
+ .diff(bStartDjs.startOf('day'), 'day');
311
+ if (aDiffDays !== bDiffDays) return bDiffDays - aDiffDays;
312
+ return dayjs(a.start).diff(dayjs(b.start));
313
+ });
314
+
315
+ const rowNums = ep.getRowNums({
316
+ resourceId: resource.id,
317
+ date: date.toDate(),
318
+ });
319
+
320
+ const cellEvents: (CalendarEvent | number)[] = [];
321
+ const rowsLength = rowNums.length + filteredEvents.length;
322
+ let eventIndex = 0;
323
+ for (let ii = 1; ii <= rowsLength; ii++) {
324
+ if (rowNums.includes(ii)) {
325
+ cellEvents.push(ii);
326
+ } else {
327
+ const event = filteredEvents[eventIndex];
328
+ if (event) cellEvents.push(event);
329
+ eventIndex++;
330
+ }
331
+ }
332
+
333
+ for (let rowIndex = 0; rowIndex < cellEvents.length; rowIndex++) {
334
+ const item = cellEvents[rowIndex];
335
+ if (item !== undefined && typeof item !== 'number') {
336
+ const rawStartDjs = dayjs(item.start);
337
+ const startDjs = dateIndex === 0 ? date : rawStartDjs;
338
+ const endDjs = dayjs(item.end);
339
+ const diffDays = endDjs
340
+ .startOf('day')
341
+ .diff(startDjs.startOf('day'), 'day');
342
+ const remainingDaysInWeek = 6 - dateIndex;
343
+ const isNextWeekEvent = diffDays > remainingDaysInWeek;
344
+ const effectiveDiffDays = isNextWeekEvent
345
+ ? remainingDaysInWeek
346
+ : diffDays;
347
+
348
+ ep.push({
349
+ resourceId: resource.id,
350
+ startDate: startDjs.toDate(),
351
+ days: effectiveDiffDays + 1,
352
+ rowNum: rowIndex + 1,
353
+ });
354
+ }
355
+ }
356
+
357
+ map.set(`${resource.id}-${date.format('YYYY-MM-DD')}`, cellEvents);
358
+ }
359
+ }
360
+
361
+ return map;
362
+ }, [resources, days, eventsByResourceId]);
363
+
335
364
  const fixedResources = useMemo(
336
365
  () => resources.slice(0, resolvedFixedRowCount),
337
366
  [resources, resolvedFixedRowCount]
@@ -341,8 +370,6 @@ export function WeekPanel({
341
370
  [resources, resolvedFixedRowCount]
342
371
  );
343
372
 
344
- const eventPosition = new ResourcesCalendarEventPosition();
345
-
346
373
  const renderResourceRow = (
347
374
  resource: CalendarResource,
348
375
  showTopBorder: boolean
@@ -372,8 +399,9 @@ export function WeekPanel({
372
399
  dateIndex={dateIndex}
373
400
  columnWidth={columnWidth}
374
401
  eventHeight={resolvedEventHeight}
375
- eventPosition={eventPosition}
376
- eventsByResourceId={eventsByResourceId}
402
+ cellEvents={
403
+ cellDataMap.get(`${resource.id}-${day.format('YYYY-MM-DD')}`) ?? []
404
+ }
377
405
  onPressCell={onPressCell}
378
406
  onLongPressCell={onLongPressCell}
379
407
  delayLongPressCell={delayLongPressCell}
@@ -428,23 +456,23 @@ export function WeekPanel({
428
456
  renderResourceRow(resource, index === 0)
429
457
  )}
430
458
 
431
- <ScrollView
459
+ <FlatList
460
+ data={scrollableResources}
461
+ keyExtractor={(item) => item.id}
462
+ renderItem={({ item, index }) =>
463
+ renderResourceRow(item, fixedResources.length === 0 && index === 0)
464
+ }
432
465
  showsVerticalScrollIndicator={false}
466
+ nestedScrollEnabled
433
467
  refreshControl={
434
468
  <RefreshControl
435
469
  refreshing={refreshing ?? false}
436
470
  onRefresh={onRefresh}
437
471
  />
438
472
  }
439
- >
440
- {scrollableResources.map((resource, index) =>
441
- renderResourceRow(
442
- resource,
443
- fixedResources.length === 0 && index === 0
444
- )
445
- )}
446
- <View style={{ height: bottomSpacing }} />
447
- </ScrollView>
473
+ ListFooterComponent={<View style={{ height: bottomSpacing }} />}
474
+ removeClippedSubviews={false}
475
+ />
448
476
  </View>
449
477
  );
450
478
  }