react-native-resource-calendar 1.1.6 → 1.1.8

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/dist/index.js CHANGED
@@ -1439,16 +1439,10 @@ var CalendarInner = (props) => {
1439
1439
  const selectedEvent = useGetSelectedEvent2();
1440
1440
  const setSelectedEvent = useSetSelectedEvent2();
1441
1441
  const setDraggedEventDraft = useSetDraggedEventDraft2();
1442
- const APPOINTMENT_BLOCK_WIDTH = React19.useMemo(
1443
- () => (width - TIME_LABEL_WIDTH) / numberOfColumns,
1444
- [width, numberOfColumns]
1445
- );
1446
1442
  const hourHeightRef = React19.useRef(hourHeight);
1447
1443
  hourHeightRef.current = hourHeight;
1448
1444
  const resourcesRef = React19.useRef(resources);
1449
1445
  resourcesRef.current = resources;
1450
- const apptWidthRef = React19.useRef(APPOINTMENT_BLOCK_WIDTH);
1451
- apptWidthRef.current = APPOINTMENT_BLOCK_WIDTH;
1452
1446
  const isMultiDayRef = React19.useRef(isMultiDay);
1453
1447
  isMultiDayRef.current = isMultiDay;
1454
1448
  const daysRef = React19.useRef(days);
@@ -1461,13 +1455,19 @@ var CalendarInner = (props) => {
1461
1455
  }, [selectedEvent, setSelectedEvent, setDraggedEventDraft]);
1462
1456
  React19.useEffect(() => {
1463
1457
  scrollX.value = 0;
1464
- }, [mode, numberOfColumns]);
1458
+ }, [mode, numberOfColumns, width]);
1465
1459
  const verticalScrollViewRef = Animated2.useAnimatedRef();
1466
1460
  const headerScrollViewRef = Animated2.useAnimatedRef();
1467
1461
  const flashListRef = React19.useRef(null);
1468
1462
  const prevResourceIdsRef = React19.useRef([]);
1469
1463
  const [layout, setLayout] = React19.useState(null);
1470
1464
  const [dragReady, setDragReady] = React19.useState(false);
1465
+ const APPOINTMENT_BLOCK_WIDTH = React19.useMemo(
1466
+ () => ((layout?.width ?? width) - TIME_LABEL_WIDTH) / numberOfColumns,
1467
+ [layout?.width, width, numberOfColumns]
1468
+ );
1469
+ const apptWidthRef = React19.useRef(APPOINTMENT_BLOCK_WIDTH);
1470
+ apptWidthRef.current = APPOINTMENT_BLOCK_WIDTH;
1471
1471
  const dateRef = React19.useRef(date);
1472
1472
  dateRef.current = date;
1473
1473
  const eventStartedTop = Animated2.useSharedValue(0);
@@ -1517,7 +1517,7 @@ var CalendarInner = (props) => {
1517
1517
  resourceId: landedResourceId,
1518
1518
  date: landedDate
1519
1519
  });
1520
- }, [mode, resourceIds, activeResourceId, selectedEvent, hourHeight, setDraggedEventDraft, days]);
1520
+ }, [mode, resourceIds, activeResourceId, selectedEvent, hourHeight, setDraggedEventDraft, days, date]);
1521
1521
  const columns = React19.useMemo(() => {
1522
1522
  if (!isMultiDay) {
1523
1523
  return resourceIds.map((resourceId) => ({ kind: "resource", resourceId }));
@@ -1710,21 +1710,25 @@ var CalendarInner = (props) => {
1710
1710
  const days2 = daysRef.current;
1711
1711
  const APPOINTMENT_BLOCK_WIDTH2 = apptWidthRef.current;
1712
1712
  const isMultiDay2 = isMultiDayRef.current;
1713
- const EPS = 1e-4;
1714
- const leftmostColumnIndex = Math.max(0, Math.floor((scrollX.value + EPS) / APPOINTMENT_BLOCK_WIDTH2));
1715
1713
  let absoluteColIndex;
1716
1714
  if (!isMultiDay2) {
1717
1715
  absoluteColIndex = findResourceIndexFor(event.resourceId, resources2?.map((r) => r.id));
1718
1716
  } else {
1719
1717
  absoluteColIndex = findDayIndexFor(event.date, days2);
1720
1718
  }
1721
- const screenColumn = absoluteColIndex - leftmostColumnIndex;
1722
- const selectedAppointmentStartedX = TIME_LABEL_WIDTH + APPOINTMENT_BLOCK_WIDTH2 / 2 + APPOINTMENT_BLOCK_WIDTH2 * screenColumn;
1719
+ const selectedAppointmentStartedX = TIME_LABEL_WIDTH + APPOINTMENT_BLOCK_WIDTH2 * absoluteColIndex + APPOINTMENT_BLOCK_WIDTH2 / 2 - scrollX.value;
1723
1720
  panXAbs.value = selectedAppointmentStartedX;
1724
1721
  startedX.value = selectedAppointmentStartedX;
1725
1722
  lastHapticScrollY.value = scrollY.value;
1726
1723
  eventHeight.value = initialHeight;
1727
1724
  setSelectedEvent(event);
1725
+ setDraggedEventDraft({
1726
+ event,
1727
+ from: positionToMinutes(eventTop, hh),
1728
+ to: positionToMinutes(eventTop + initialHeight, hh),
1729
+ resourceId: event.resourceId,
1730
+ date: event.date
1731
+ });
1728
1732
  requestAnimationFrame(() => setDragReady(true));
1729
1733
  triggerHaptic("Medium");
1730
1734
  };
@@ -1763,16 +1767,15 @@ var CalendarInner = (props) => {
1763
1767
  }, [resources, onBlockTap]);
1764
1768
  React19.useEffect(() => {
1765
1769
  const handleOrientationChange = () => {
1766
- if (selectedEvent) {
1767
- setSelectedEvent(null);
1768
- setDragReady(false);
1769
- }
1770
+ setSelectedEvent(null);
1771
+ setDragReady(false);
1772
+ setLayout(null);
1770
1773
  };
1771
1774
  const subscription = reactNative.Dimensions.addEventListener("change", handleOrientationChange);
1772
1775
  return () => {
1773
1776
  subscription.remove();
1774
1777
  };
1775
- }, [setSelectedEvent, selectedEvent, setDragReady]);
1778
+ }, [setSelectedEvent, setDragReady]);
1776
1779
  const renderItem = React19.useCallback(({ item, index }) => {
1777
1780
  const rid = !isMultiDay ? item : activeResourceId ?? resourceIds[0];
1778
1781
  const dayDate = !isMultiDay ? void 0 : item.dayDate;