diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml
new file mode 100644
index 0000000..2a8895b
--- /dev/null
+++ b/.idea/material_theme_project_new.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/(auth)/_layout.tsx b/app/(auth)/_layout.tsx
index 1a9610f..5994627 100644
--- a/app/(auth)/_layout.tsx
+++ b/app/(auth)/_layout.tsx
@@ -1,433 +1,356 @@
-import React from "react";
-import { Drawer } from "expo-router/drawer";
-import { useSignOut } from "@/hooks/firebase/useSignOut";
-import {
- DrawerContentScrollView,
- DrawerNavigationOptions,
- DrawerNavigationProp,
-} from "@react-navigation/drawer";
-import {
- Button,
- ButtonSize,
- Text,
- TouchableOpacity,
- View,
-} from "react-native-ui-lib";
-import { ImageBackground, Pressable, StyleSheet } from "react-native";
+import React, {useCallback} from "react";
+import {Drawer} from "expo-router/drawer";
+import {DrawerContentScrollView, DrawerContentComponentProps, DrawerNavigationOptions} from "@react-navigation/drawer";
+import {ImageBackground, Pressable, StyleSheet} from "react-native";
+import {Button, ButtonSize, Text, View} from "react-native-ui-lib";
+import * as Device from "expo-device";
+import {useSetAtom} from "jotai";
+import {Ionicons} from "@expo/vector-icons";
+import {DeviceType} from "expo-device";
+import {DrawerNavigationProp} from "@react-navigation/drawer";
+import {ParamListBase, Theme} from '@react-navigation/native';
+import {RouteProp} from "@react-navigation/native";
+
+import {useSignOut} from "@/hooks/firebase/useSignOut";
+import {CalendarHeader} from "@/components/pages/calendar/CalendarHeader";
import DrawerButton from "@/components/shared/DrawerButton";
+import DrawerIcon from "@/assets/svgs/DrawerIcon";
import NavGroceryIcon from "@/assets/svgs/NavGroceryIcon";
import NavToDosIcon from "@/assets/svgs/NavToDosIcon";
import NavBrainDumpIcon from "@/assets/svgs/NavBrainDumpIcon";
import NavCalendarIcon from "@/assets/svgs/NavCalendarIcon";
import NavSettingsIcon from "@/assets/svgs/NavSettingsIcon";
-import ViewSwitch from "@/components/pages/(tablet_pages)/ViewSwitch";
-import { useSetAtom } from "jotai";
-import {
- isFamilyViewAtom,
- settingsPageIndex,
- toDosPageIndex,
- userSettingsView,
-} from "@/components/pages/calendar/atoms";
-import Ionicons from "@expo/vector-icons/Ionicons";
-import * as Device from "expo-device";
-import { DeviceType } from "expo-device";
import FeedbackNavIcon from "@/assets/svgs/FeedbackNavIcon";
-import DrawerIcon from "@/assets/svgs/DrawerIcon";
-import { RouteProp } from "@react-navigation/core";
-import RefreshButton from "@/components/shared/RefreshButton";
-import { useCalSync } from "@/hooks/useCalSync";
-import {useIsFetching} from "@tanstack/react-query";
-import { CalendarHeader } from "@/components/pages/calendar/CalendarHeader";
+import {
+ isFamilyViewAtom,
+ settingsPageIndex,
+ toDosPageIndex,
+ userSettingsView,
+} from "@/components/pages/calendar/atoms";
+import ViewSwitch from "@/components/pages/(tablet_pages)/ViewSwitch";
+
+const isTablet = Device.deviceType === DeviceType.TABLET;
type DrawerParamList = {
- index: undefined;
- calendar: undefined;
- todos: undefined;
+ index: undefined;
+ calendar: undefined;
+ brain_dump: undefined;
+ settings: undefined;
+ grocery: undefined;
+ reminders: undefined;
+ todos: undefined;
+ notifications: undefined;
+ feedback: undefined;
};
-type NavigationProp = DrawerNavigationProp;
+type DrawerScreenNavigationProp = DrawerNavigationProp;
-interface ViewSwitchProps {
- navigation: NavigationProp;
+interface DrawerButtonConfig {
+ id: string;
+ title: string;
+ color: string;
+ bgColor: string;
+ icon: React.FC;
+ route: keyof DrawerParamList;
}
+const DRAWER_BUTTONS: DrawerButtonConfig[] = [
+ {
+ id: 'calendar',
+ title: 'Calendar',
+ color: 'rgb(7, 184, 199)',
+ bgColor: 'rgb(231, 248, 250)',
+ icon: NavCalendarIcon,
+ route: 'calendar'
+ },
+ {
+ id: 'grocery',
+ title: 'Groceries',
+ color: '#50be0c',
+ bgColor: '#eef9e7',
+ icon: NavGroceryIcon,
+ route: 'grocery'
+ },
+ {
+ id: 'feedback',
+ title: 'Feedback',
+ color: '#ea156d',
+ bgColor: '#fdedf4',
+ icon: FeedbackNavIcon,
+ route: 'feedback'
+ },
+ {
+ id: 'todos',
+ title: 'To Dos',
+ color: '#8005eb',
+ bgColor: '#f3e6fd',
+ icon: NavToDosIcon,
+ route: 'todos'
+ },
+ {
+ id: 'brain_dump',
+ title: 'Brain Dump',
+ color: '#e0ca03',
+ bgColor: '#fffacb',
+ icon: NavBrainDumpIcon,
+ route: 'brain_dump'
+ },
+ {
+ id: 'notifications',
+ title: 'Notifications',
+ color: '#ffa200',
+ bgColor: '#ffdda1',
+ icon: () => ,
+ route: 'notifications'
+ }
+];
+
+interface DrawerContentProps {
+ props: DrawerContentComponentProps;
+}
+
+const DrawerContent: React.FC = ({props}) => {
+ const {mutateAsync: signOut} = useSignOut();
+ const setIsFamilyView = useSetAtom(isFamilyViewAtom);
+ const setPageIndex = useSetAtom(settingsPageIndex);
+ const setUserView = useSetAtom(userSettingsView);
+ const setToDosIndex = useSetAtom(toDosPageIndex);
+
+ const handleNavigation = useCallback((route: keyof DrawerParamList) => {
+ props.navigation.navigate(route);
+ setPageIndex(0);
+ setToDosIndex(0);
+ setUserView(true);
+ setIsFamilyView(false);
+ }, [props.navigation, setPageIndex, setToDosIndex, setUserView, setIsFamilyView]);
+
+ const renderDrawerButtons = () => {
+ const midPoint = Math.ceil(DRAWER_BUTTONS.length / 2);
+ const leftButtons = DRAWER_BUTTONS.slice(0, midPoint);
+ const rightButtons = DRAWER_BUTTONS.slice(midPoint);
+
+ return (
+
+
+ {leftButtons.map(button => (
+ handleNavigation(button.route)}
+ icon={}
+ />
+ ))}
+
+
+ {rightButtons.map(button => (
+ handleNavigation(button.route)}
+ icon={}
+ />
+ ))}
+
+
+ );
+ };
+
+ return (
+
+
+
+ Welcome to Cally
+
+
+ {renderDrawerButtons()}
+
+
+ );
+};
+
interface HeaderRightProps {
- routeName: keyof DrawerParamList;
- navigation: NavigationProp;
+ route: RouteProp;
+ navigation: DrawerScreenNavigationProp;
}
-const MemoizedViewSwitch = React.memo(({ navigation }) => (
-
-));
+const HeaderRight: React.FC = ({route, navigation}) => {
+ const showViewSwitch = ["calendar", "todos", "index"].includes(route.name);
+ const isCalendarPage = ["calendar", "index"].includes(route.name);
-const HeaderRight = React.memo(
- ({ routeName, navigation }) => {
- const showViewSwitch = ["calendar", "todos", "index"].includes(routeName);
-
- if (Device.deviceType !== DeviceType.TABLET || !showViewSwitch) {
- return null;
+ if (!isTablet || !showViewSwitch) {
+ return isCalendarPage ? : null;
}
- return ;
- }
-);
-export default function TabLayout() {
- const { mutateAsync: signOut } = useSignOut();
- const setIsFamilyView = useSetAtom(isFamilyViewAtom);
- const setPageIndex = useSetAtom(settingsPageIndex);
- const setUserView = useSetAtom(userSettingsView);
- const setToDosIndex = useSetAtom(toDosPageIndex);
- const { resyncAllCalendars, isSyncing } = useCalSync();
+ return (
+
+ {isTablet && isCalendarPage && (
+
+
+
+ )}
+
+
+ );
+};
- const isFetching = useIsFetching({queryKey: ['events']}) > 0;
-
- const isLoading = React.useMemo(() => {
- return isSyncing || isFetching;
- }, [isSyncing, isFetching]);
-
- const onRefresh = React.useCallback(async () => {
- try {
- await resyncAllCalendars();
- } catch (error) {
- console.error("Refresh failed:", error);
- }
- }, [resyncAllCalendars]);
-
- const screenOptions = ({
- navigation,
- route,
- }: {
- navigation: DrawerNavigationProp;
- route: RouteProp;
- }): DrawerNavigationOptions => ({
+const screenOptions: (props: {
+ route: RouteProp;
+ navigation: DrawerNavigationProp;
+ theme: Theme;
+}) => DrawerNavigationOptions = ({route, navigation}) => ({
lazy: true,
headerShown: true,
- headerTitleAlign:
- Device.deviceType === DeviceType.TABLET ? "left" : "unaligned",
- headerTitle: ({ children }) => {
+ headerTitleAlign: "left",
+ headerTitle: ({children}) => {
const isCalendarRoute = ["calendar", "index"].includes(route.name);
-
- if (isCalendarRoute && Device.deviceType !== DeviceType.TABLET) {
- return ;
- }
-
+ if (isCalendarRoute) return null;
+
return (
-
- {children}
-
+
+
+ {children}
+
+
);
- },
- headerTitleStyle: {
- fontFamily: "Manrope_600SemiBold",
- fontSize: Device.deviceType === DeviceType.TABLET ? 22 : 17,
},
headerLeft: () => (
- {
- navigation.toggleDrawer()
- }}
- hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}
- style={({ pressed }) => [
- {
- marginLeft: 16,
- opacity: pressed ? 0.4 : 1
- }
- ]}
-
- >
-
-
+ navigation.toggleDrawer()}
+ hitSlop={{top: 10, bottom: 10, left: 10, right: 10}}
+ style={({pressed}) => [styles.drawerTrigger, {opacity: pressed ? 0.4 : 1}]}
+ >
+
+
),
- headerRight: () => {
- const showViewSwitch = ["calendar", "todos", "index"].includes(
- route.name
- );
- const isCalendarPage = ["calendar", "index"].includes(route.name);
+ headerRight: () => }
+ navigation={navigation as DrawerNavigationProp}
+ />,
+ drawerStyle: styles.drawer,
+});
- if (Device.deviceType !== DeviceType.TABLET || !showViewSwitch) {
- return isCalendarPage ? (
-
-
-
- ) : null;
- }
-
- return (
-
- {Device.deviceType === DeviceType.TABLET && isCalendarPage &&
- }
- {isCalendarPage && (
-
- )}
-
-
- );
- },
- drawerStyle: {
- width: Device.deviceType === DeviceType.TABLET ? "30%" : "90%",
- backgroundColor: "#f9f8f7",
- height: "100%",
- },
- });
-
- return (
- {
- return (
-
-
-
- Welcome to Cally
-
-
-
- {
- props.navigation.navigate("calendar");
- setPageIndex(0);
- setToDosIndex(0);
- setUserView(true);
- setIsFamilyView(false);
- }}
- icon={}
- />
- {
- props.navigation.navigate("grocery");
- setPageIndex(0);
- setToDosIndex(0);
- setUserView(true);
- setIsFamilyView(false);
- }}
- icon={}
- />
- {
- props.navigation.navigate("feedback");
- setPageIndex(0);
- setToDosIndex(0);
- setUserView(true);
- setIsFamilyView(false);
- }}
- icon={}
- />
-
-
- {/* props.navigation.navigate("reminders")}
- icon={
-
- }
- />*/}
- {
- props.navigation.navigate("todos");
- setPageIndex(0);
- setToDosIndex(0);
- setUserView(true);
- setIsFamilyView(false);
- }}
- icon={}
- />
- {
- props.navigation.navigate("brain_dump");
- setPageIndex(0);
- setToDosIndex(0);
- setUserView(true);
- setIsFamilyView(false);
- }}
- icon={}
- />
- {
- props.navigation.navigate("notifications");
- setPageIndex(0);
- setToDosIndex(0);
- setUserView(true);
- setIsFamilyView(false);
- }}
- icon={
-
- }
- />
-
-
- {
- props.navigation.navigate("settings");
- setPageIndex(0);
- setToDosIndex(0);
- setUserView(true);
- setIsFamilyView(false);
- }}
- label={"Manage Settings"}
- labelStyle={styles.label}
- iconSource={() => (
-
-
-
- )}
- backgroundColor="white"
- color="#464039"
- paddingV-30
- marginH-30
- borderRadius={18.55}
- style={{ elevation: 0 }}
- />
-
- signOut()}
- />
-
- );
- }}
- >
-
-
-
-
-
-
-
-
-
-
- );
+interface DrawerScreen {
+ name: keyof DrawerParamList;
+ title: string;
+ hideInDrawer?: boolean;
}
+const DRAWER_SCREENS: DrawerScreen[] = [
+ {name: 'index', title: 'Calendar'},
+ {name: 'calendar', title: 'Calendar', hideInDrawer: true},
+ {name: 'brain_dump', title: 'Brain Dump'},
+ {name: 'settings', title: 'Settings'},
+ {name: 'grocery', title: 'Groceries'},
+ {name: 'reminders', title: 'Reminders'},
+ {name: 'todos', title: isTablet ? 'Family To Dos' : 'To Dos'},
+ {name: 'notifications', title: 'Notifications'},
+ {name: 'feedback', title: 'Feedback'}
+];
+
+const TabLayout: React.FC = () => {
+ return (
+ }
+ >
+ {DRAWER_SCREENS.map(screen => (
+
+ ))}
+
+ );
+};
+
const styles = StyleSheet.create({
- signOut: { fontFamily: "Poppins_500Medium", fontSize: 15 },
- label: { fontFamily: "Poppins_400Medium", fontSize: 15 },
- title: {
- fontSize: 26.13,
- fontFamily: "Manrope_600SemiBold",
- color: "#262627",
- },
+ drawer: {
+ width: isTablet ? "30%" : "90%",
+ backgroundColor: "#f9f8f7",
+ height: "100%",
+ },
+ drawerTrigger: {
+ marginLeft: 16,
+ },
+ headerTitle: {
+ fontFamily: "Manrope_600SemiBold",
+ fontSize: isTablet ? 22 : 17,
+ },
+ logo: {
+ backgroundColor: "transparent",
+ height: 51.43,
+ aspectRatio: 1,
+ marginRight: 8,
+ },
+ settingsIcon: {
+ backgroundColor: "#ededed",
+ width: 60,
+ height: 60,
+ borderRadius: 50,
+ marginRight: 10,
+ justifyContent: 'center',
+ alignItems: 'center',
+ },
+ signOutButton: {
+ marginTop: 50,
+ marginHorizontal: 10,
+ paddingVertical: 15,
+ backgroundColor: "transparent",
+ borderWidth: 1.3,
+ borderColor: "#fd1775",
+ },
+ signOut: {
+ fontFamily: "Poppins_500Medium",
+ fontSize: 15,
+ },
+ label: {
+ fontFamily: "Poppins_400Medium",
+ fontSize: 15,
+ },
+ title: {
+ fontSize: 26.13,
+ fontFamily: "Manrope_600SemiBold",
+ color: "#262627",
+ },
});
+
+export default TabLayout;
\ No newline at end of file
diff --git a/app/_layout.tsx b/app/_layout.tsx
index 0352a9e..5c2832c 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -50,15 +50,14 @@ import {Stack} from "expo-router";
import * as SplashScreen from "expo-splash-screen";
import "react-native-reanimated";
import {AuthContextProvider} from "@/contexts/AuthContext";
-import {QueryClient, QueryClientProvider} from "@tanstack/react-query";
import {TextProps, ThemeManager, Toast, Typography,} from "react-native-ui-lib";
import {Platform} from 'react-native';
import KeyboardManager from 'react-native-keyboard-manager';
-import {enableScreens} from 'react-native-screens';
+import {enableScreens, enableFreeze} from 'react-native-screens';
import {PersistQueryClientProvider} from "@/contexts/PersistQueryClientProvider";
-import auth from "@react-native-firebase/auth";
enableScreens(true)
+enableFreeze(true)
SplashScreen.preventAutoHideAsync();
diff --git a/components/pages/(tablet_pages)/tablet_components/UsersList.tsx b/components/pages/(tablet_pages)/tablet_components/UsersList.tsx
index e893cb3..92b0eba 100644
--- a/components/pages/(tablet_pages)/tablet_components/UsersList.tsx
+++ b/components/pages/(tablet_pages)/tablet_components/UsersList.tsx
@@ -20,7 +20,7 @@ const UsersList = () => {
const { user: currentUser } = useAuthContext();
const { data: familyMembers, refetch: refetchFamilyMembers } =
useGetFamilyMembers();
- const [selectedUser, setSelectedUser] = useAtom(selectedUserAtom);
+ const [selectedUser, setSelectedUser] = useAtom(selectedUserAtom);
useEffect(() => {
refetchFamilyMembers();
diff --git a/components/pages/calendar/CalendarController.tsx b/components/pages/calendar/CalendarController.tsx
new file mode 100644
index 0000000..390ca19
--- /dev/null
+++ b/components/pages/calendar/CalendarController.tsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import {useAtomValue} from 'jotai';
+import {selectedDateAtom} from '@/components/pages/calendar/atoms';
+import {FlashList} from "@shopify/flash-list";
+import {useDidUpdate} from "react-native-ui-lib/src/hooks";
+
+interface CalendarControllerProps {
+ scrollViewRef: React.RefObject>;
+ centerMonthIndex: number;
+}
+
+export const CalendarController: React.FC = (
+ {
+ scrollViewRef,
+ centerMonthIndex
+ }) => {
+ const selectedDate = useAtomValue(selectedDateAtom);
+
+ useDidUpdate(() => {
+ scrollViewRef.current?.scrollToIndex({
+ index: centerMonthIndex,
+ animated: false
+ })
+ }, [selectedDate, centerMonthIndex]);
+
+ return null;
+};
\ No newline at end of file
diff --git a/components/pages/calendar/CalendarHeader.tsx b/components/pages/calendar/CalendarHeader.tsx
index 399efa6..9f406be 100644
--- a/components/pages/calendar/CalendarHeader.tsx
+++ b/components/pages/calendar/CalendarHeader.tsx
@@ -1,121 +1,108 @@
-import React, {memo, useState} from "react";
+import React, {memo, useState, useMemo, useCallback} from "react";
+import {StyleSheet} from "react-native";
import {Button, Picker, PickerModes, SegmentedControl, Text, View} from "react-native-ui-lib";
import {MaterialIcons} from "@expo/vector-icons";
-import {months} from "./constants";
-import {StyleSheet} from "react-native";
import {useAtom} from "jotai";
-import {modeAtom, selectedDateAtom} from "@/components/pages/calendar/atoms";
-import {format, isSameDay} from "date-fns";
+import {format} from "date-fns";
import * as Device from "expo-device";
-import {Mode} from "react-native-big-calendar";
+import {useIsFetching} from "@tanstack/react-query";
+
+import {modeAtom, selectedDateAtom} from "@/components/pages/calendar/atoms";
+import {months} from "./constants";
+import RefreshButton from "@/components/shared/RefreshButton";
+import {useCalSync} from "@/hooks/useCalSync";
+
+type ViewMode = "day" | "week" | "month" | "3days";
+
+const isTablet = Device.deviceType === Device.DeviceType.TABLET;
+
+const SEGMENTS = isTablet
+ ? [{label: "D"}, {label: "W"}, {label: "M"}]
+ : [{label: "D"}, {label: "3D"}, {label: "M"}];
+
+const MODE_MAP = {
+ tablet: ["day", "week", "month"],
+ mobile: ["day", "3days", "month"]
+} as const;
export const CalendarHeader = memo(() => {
const [selectedDate, setSelectedDate] = useAtom(selectedDateAtom);
const [mode, setMode] = useAtom(modeAtom);
const [tempIndex, setTempIndex] = useState(null);
- const isTablet = Device.deviceType === Device.DeviceType.TABLET;
- const segments = isTablet
- ? [{label: "D"}, {label: "W"}, {label: "M"}]
- : [{label: "D"}, {label: "3D"}, {label: "M"}];
+ const {resyncAllCalendars, isSyncing} = useCalSync();
+ const isFetching = useIsFetching({queryKey: ['events']}) > 0;
- const handleSegmentChange = (index: number) => {
- let selectedMode: Mode;
- if (isTablet) {
- selectedMode = ["day", "week", "month"][index] as Mode;
- } else {
- selectedMode = ["day", "3days", "month"][index] as Mode;
- }
+ const isLoading = useMemo(() => isSyncing || isFetching, [isSyncing, isFetching]);
+
+ const handleSegmentChange = useCallback((index: number) => {
+ const modes = isTablet ? MODE_MAP.tablet : MODE_MAP.mobile;
+ const selectedMode = modes[index] as ViewMode;
setTempIndex(index);
+ setTimeout(() => {
+ setMode(selectedMode);
+ setTempIndex(null);
+ }, 150);
+ }, [setMode]);
- if (selectedMode) {
- setTimeout(() => {
- setMode(selectedMode as "day" | "week" | "month" | "3days");
- setTempIndex(null);
- }, 150);
- }
- };
-
- const handleMonthChange = (month: string) => {
- const currentDay = selectedDate.getDate();
- const currentYear = selectedDate.getFullYear();
+ const handleMonthChange = useCallback((month: string) => {
const newMonthIndex = months.indexOf(month);
-
- const updatedDate = new Date(currentYear, newMonthIndex, currentDay);
+ const updatedDate = new Date(
+ selectedDate.getFullYear(),
+ newMonthIndex,
+ selectedDate.getDate()
+ );
setSelectedDate(updatedDate);
- };
+ }, [selectedDate, setSelectedDate]);
- const isSelectedDateToday = isSameDay(selectedDate, new Date());
-
- const getInitialIndex = () => {
- if (isTablet) {
- switch (mode) {
- case "day":
- return 0;
- case "week":
- return 1;
- case "month":
- return 2;
- default:
- return 1;
- }
- } else {
- switch (mode) {
- case "day":
- return 0;
- case "3days":
- return 1;
- case "month":
- return 2;
- default:
- return 1;
- }
+ const handleRefresh = useCallback(async () => {
+ try {
+ await resyncAllCalendars();
+ } catch (error) {
+ console.error("Refresh failed:", error);
}
- };
+ }, [resyncAllCalendars]);
+
+ const getInitialIndex = useCallback(() => {
+ const modes = isTablet ? MODE_MAP.tablet : MODE_MAP.mobile;
+ //@ts-ignore
+ return modes.indexOf(mode);
+ }, [mode]);
+
+ const renderMonthPicker = () => (
+
+ {isTablet && (
+
+ {selectedDate.getFullYear()}
+
+ )}
+ handleMonthChange(value as string)}
+ trailingAccessory={}
+ topBarProps={{
+ title: selectedDate.getFullYear().toString(),
+ titleStyle: styles.yearText,
+ }}
+ >
+ {months.map(month => (
+
+ ))}
+
+
+ );
return (
-
-
- {isTablet && (
-
- {selectedDate.getFullYear()}
-
- )}
- handleMonthChange(itemValue as string)}
- trailingAccessory={}
- topBarProps={{
- title: selectedDate.getFullYear().toString(),
- titleStyle: {fontFamily: "Manrope_500Medium", fontSize: 17},
- }}
- >
- {months.map((month) => (
-
- ))}
-
-
+
+ {mode !== "month" ? renderMonthPicker() : }
-
+
{
{format(new Date(), "d")}
-
+
+
+
+
);
});
const styles = StyleSheet.create({
- segmentslblStyle: {
+ container: {
+ flexDirection: "row",
+ justifyContent: "space-between",
+ alignItems: "center",
+ paddingVertical: isTablet ? 8 : 0,
+ borderBottomLeftRadius: 0,
+ borderBottomRightRadius: 0,
+ paddingLeft: 10
+ },
+ yearText: {
+ fontFamily: "Manrope_500Medium",
+ fontSize: 17,
+ },
+ monthPicker: {
+ fontFamily: "Manrope_500Medium",
+ fontSize: 17,
+ width: 85,
+ },
+ segmentContainer: {
+ maxWidth: 120,
+ height: 40,
+ },
+ segmentLabel: {
fontSize: 12,
fontFamily: "Manrope_600SemiBold",
},
diff --git a/components/pages/calendar/CalendarPage.tsx b/components/pages/calendar/CalendarPage.tsx
index 182454a..4acf9a3 100644
--- a/components/pages/calendar/CalendarPage.tsx
+++ b/components/pages/calendar/CalendarPage.tsx
@@ -9,11 +9,6 @@ export default function CalendarPage() {
paddingH-0
paddingT-0
>
- {/**/}
);
diff --git a/components/pages/calendar/DetailedCalendar.tsx b/components/pages/calendar/DetailedCalendar.tsx
index c2d2a3b..0f70837 100644
--- a/components/pages/calendar/DetailedCalendar.tsx
+++ b/components/pages/calendar/DetailedCalendar.tsx
@@ -1,21 +1,20 @@
-import React, {useCallback, useEffect, useMemo, useRef, useState} from "react";
-import {useAuthContext} from "@/contexts/AuthContext";
-import {useAtomValue} from "jotai";
-import {modeAtom, selectedDateAtom, selectedUserAtom} from "@/components/pages/calendar/atoms";
-import {useGetFamilyMembers} from "@/hooks/firebase/useGetFamilyMembers";
+import React, {useCallback, useMemo, useRef, useState} from "react";
+import {View} from "react-native-ui-lib";
+import {DeviceType} from "expo-device";
+import * as Device from "expo-device";
import {CalendarBody, CalendarContainer, CalendarHeader, CalendarKitHandle} from "@howljs/calendar-kit";
+import {useAtomValue} from "jotai";
+import {selectedUserAtom} from "@/components/pages/calendar/atoms";
+
+import {useAuthContext} from "@/contexts/AuthContext";
+import {useGetFamilyMembers} from "@/hooks/firebase/useGetFamilyMembers";
import {useGetEvents} from "@/hooks/firebase/useGetEvents";
import {useFormattedEvents} from "@/components/pages/calendar/useFormattedEvents";
import {useCalendarControls} from "@/components/pages/calendar/useCalendarControls";
import {EventCell} from "@/components/pages/calendar/EventCell";
-import {isToday} from "date-fns";
-import {View} from "react-native-ui-lib";
-import {DeviceType} from "expo-device";
-import * as Device from "expo-device"
-import {useAtomCallback} from 'jotai/utils'
+import {DetailedCalendarController} from "@/components/pages/calendar/DetailedCalendarController";
interface EventCalendarProps {
- calendarHeight: number;
calendarWidth: number;
mode: "week" | "month" | "day" | "3days";
onLoad?: () => void;
@@ -36,14 +35,14 @@ const MODE_TO_DAYS = {
'3days': 3,
'day': 1,
'month': 1
-};
+} as const;
-const getContainerProps = (selectedDate: Date) => ({
+const getContainerProps = (date: Date, customKey: string) => ({
hourWidth: 70,
allowPinchToZoom: true,
useHaptic: true,
scrollToNow: true,
- initialDate: selectedDate.toISOString(),
+ initialDate: customKey !== "default" ? customKey : date.toISOString(),
});
const MemoizedEventCell = React.memo(EventCell, (prev, next) => {
@@ -51,37 +50,23 @@ const MemoizedEventCell = React.memo(EventCell, (prev, next) => {
prev.event.lastModified === next.event.lastModified;
});
-export const DetailedCalendar: React.FC = React.memo((
- {
- calendarHeight,
- calendarWidth,
- mode,
- onLoad
- }) => {
+export const DetailedCalendar: React.FC = React.memo(({
+ calendarWidth,
+ mode,
+ onLoad
+ }) => {
const {profileData} = useAuthContext();
- const selectedDate = useAtomValue(selectedDateAtom);
const {data: familyMembers} = useGetFamilyMembers();
- const calendarRef = useRef(null);
const {data: events} = useGetEvents();
const selectedUser = useAtomValue(selectedUserAtom);
+ const calendarRef = useRef(null);
const [customKey, setCustomKey] = useState("defaultKey");
const memoizedFamilyMembers = useMemo(() => familyMembers || [], [familyMembers]);
- const containerProps = useMemo(() => getContainerProps(selectedDate), [selectedDate]);
+ const currentDate = useMemo(() => new Date(), []);
+ const containerProps = useMemo(() => getContainerProps(currentDate, customKey), [currentDate, customKey]);
- const checkModeAndGoToDate = useAtomCallback(useCallback((get) => {
- const currentMode = get(modeAtom);
- if ((selectedDate && isToday(selectedDate)) || currentMode === "month") {
- calendarRef?.current?.goToDate({date: selectedDate});
- setCustomKey(selectedDate.toISOString())
- }
- }, [selectedDate]));
-
- useEffect(() => {
- checkModeAndGoToDate();
- }, [selectedDate, checkModeAndGoToDate]);
-
- const {data: formattedEvents} = useFormattedEvents(events ?? [], selectedDate, selectedUser);
+ const {data: formattedEvents} = useFormattedEvents(events ?? [], currentDate, selectedUser);
const {
handlePressEvent,
handlePressCell,
@@ -115,9 +100,12 @@ export const DetailedCalendar: React.FC = React.memo((
onPressEvent={handlePressEvent}
onPressBackground={handlePressCell}
onLoad={onLoad}
- key={customKey}
>
-
+
+
;
+ setCustomKey: (key: string) => void;
+}
+
+export const DetailedCalendarController: React.FC = ({
+ calendarRef,
+ setCustomKey
+ }) => {
+ const selectedDate = useAtomValue(selectedDateAtom);
+ const lastSelectedDate = useRef(selectedDate);
+
+ const checkModeAndGoToDate = useAtomCallback(useCallback((get) => {
+ const currentMode = get(modeAtom);
+ if ((selectedDate && isToday(selectedDate)) || currentMode === "month") {
+ if (currentMode === "month") {
+ setCustomKey(selectedDate.toISOString());
+ }
+ calendarRef?.current?.goToDate({date: selectedDate});
+ }
+ }, [selectedDate, calendarRef, setCustomKey]));
+
+ useEffect(() => {
+ if (selectedDate !== lastSelectedDate.current) {
+ checkModeAndGoToDate();
+ lastSelectedDate.current = selectedDate;
+ }
+ }, [selectedDate, checkModeAndGoToDate]);
+
+ return null;
+};
\ No newline at end of file
diff --git a/components/pages/calendar/EventCalendar.tsx b/components/pages/calendar/EventCalendar.tsx
index 556e2e0..97b8a1b 100644
--- a/components/pages/calendar/EventCalendar.tsx
+++ b/components/pages/calendar/EventCalendar.tsx
@@ -1,33 +1,31 @@
import React from 'react';
-import { StyleSheet, View, ActivityIndicator } from 'react-native';
-import { Text } from 'react-native-ui-lib';
+import {StyleSheet, View, ActivityIndicator} from 'react-native';
+import {Text} from 'react-native-ui-lib';
import Animated, {
withTiming,
useAnimatedStyle,
FadeOut,
useSharedValue,
- runOnJS
} from 'react-native-reanimated';
-import { useGetEvents } from '@/hooks/firebase/useGetEvents';
-import { useCalSync } from '@/hooks/useCalSync';
-import { useSyncEvents } from '@/hooks/useSyncOnScroll';
-import { useAtom } from 'jotai';
-import { modeAtom } from './atoms';
-import { MonthCalendar } from "@/components/pages/calendar/MonthCalendar";
+import {useGetEvents} from '@/hooks/firebase/useGetEvents';
+import {useCalSync} from '@/hooks/useCalSync';
+import {useSyncEvents} from '@/hooks/useSyncOnScroll';
+import {useAtom} from 'jotai';
+import {modeAtom} from './atoms';
+import {MonthCalendar} from "@/components/pages/calendar/MonthCalendar";
import DetailedCalendar from "@/components/pages/calendar/DetailedCalendar";
import * as Device from "expo-device";
export type CalendarMode = 'month' | 'day' | '3days' | 'week';
interface EventCalendarProps {
- calendarHeight: number;
calendarWidth: number;
}
export const EventCalendar: React.FC = React.memo((props) => {
- const { isLoading } = useGetEvents();
+ const {isLoading} = useGetEvents();
const [mode] = useAtom(modeAtom);
- const { isSyncing } = useSyncEvents();
+ const {isSyncing} = useSyncEvents();
const isTablet = Device.deviceType === Device.DeviceType.TABLET;
const isCalendarReady = useSharedValue(false);
useCalSync();
@@ -37,26 +35,26 @@ export const EventCalendar: React.FC = React.memo((props) =>
}, []);
const containerStyle = useAnimatedStyle(() => ({
- opacity: withTiming(isCalendarReady.value ? 1 : 0, { duration: 500 }),
+ opacity: withTiming(isCalendarReady.value ? 1 : 0, {duration: 500}),
flex: 1,
}));
const monthStyle = useAnimatedStyle(() => ({
- opacity: withTiming(mode === 'month' ? 1 : 0, { duration: 300 }),
+ opacity: withTiming(mode === 'month' ? 1 : 0, {duration: 300}),
position: 'absolute',
width: '100%',
height: '100%',
}));
const detailedDayStyle = useAnimatedStyle(() => ({
- opacity: withTiming(mode === 'day' ? 1 : 0, { duration: 300 }),
+ opacity: withTiming(mode === 'day' ? 1 : 0, {duration: 300}),
position: 'absolute',
width: '100%',
height: '100%',
}));
const detailedMultiStyle = useAnimatedStyle(() => ({
- opacity: withTiming(mode === (isTablet ? 'week' : '3days') ? 1 : 0, { duration: 300 }),
+ opacity: withTiming(mode === (isTablet ? 'week' : '3days') ? 1 : 0, {duration: 300}),
position: 'absolute',
width: '100%',
height: '100%',
@@ -64,7 +62,7 @@ export const EventCalendar: React.FC = React.memo((props) =>
return (
- {(isLoading || isSyncing) && mode !== 'month' && (
+ {(isLoading || isSyncing) && mode !== 'month' && (
= React.memo((props) =>
)}
-
+
-
+
{!isLoading && (
-
+
)}
diff --git a/components/pages/calendar/InnerCalendar.tsx b/components/pages/calendar/InnerCalendar.tsx
index d469d11..d76f2b4 100644
--- a/components/pages/calendar/InnerCalendar.tsx
+++ b/components/pages/calendar/InnerCalendar.tsx
@@ -4,19 +4,16 @@ import {LayoutChangeEvent} from "react-native";
import CalendarViewSwitch from "@/components/pages/calendar/CalendarViewSwitch";
import {AddEventDialog} from "@/components/pages/calendar/AddEventDialog";
import {ManuallyAddEventModal} from "@/components/pages/calendar/ManuallyAddEventModal";
-import {CalendarHeader} from "@/components/pages/calendar/CalendarHeader";
import {EventCalendar} from "@/components/pages/calendar/EventCalendar";
export const InnerCalendar = () => {
- const [calendarHeight, setCalendarHeight] = useState(0);
const [calendarWidth, setCalendarWidth] = useState(0);
const calendarContainerRef = useRef(null);
const hasSetInitialSize = useRef(false);
const onLayout = useCallback((event: LayoutChangeEvent) => {
if (!hasSetInitialSize.current) {
- const {height, width} = event.nativeEvent.layout;
- setCalendarHeight(height);
+ const width = event.nativeEvent.layout.width;
setCalendarWidth(width);
hasSetInitialSize.current = true;
}
@@ -30,12 +27,9 @@ export const InnerCalendar = () => {
onLayout={onLayout}
paddingB-0
>
- {calendarHeight > 0 && (
-
- )}
+
diff --git a/components/pages/calendar/ManuallyAddEventModal.tsx b/components/pages/calendar/ManuallyAddEventModal.tsx
index c8a99c2..03bf12e 100644
--- a/components/pages/calendar/ManuallyAddEventModal.tsx
+++ b/components/pages/calendar/ManuallyAddEventModal.tsx
@@ -122,7 +122,7 @@ export const ManuallyAddEventModal = () => {
const {
mutateAsync: createEvent,
- isLoading: isAdding,
+ isPending: isAdding,
isError,
} = useCreateEvent();
const {data: members} = useGetFamilyMembers(true);
@@ -178,15 +178,6 @@ export const ManuallyAddEventModal = () => {
if (!show) return null;
- const formatDateTime = (date?: Date | string) => {
- if (!date) return undefined;
- return new Date(date).toLocaleDateString("en-US", {
- weekday: "long",
- month: "short",
- day: "numeric",
- });
- };
-
const showDeleteEventModal = () => {
setDeleteModalVisible(true);
};
@@ -257,38 +248,6 @@ export const ManuallyAddEventModal = () => {
return true;
};
- const getRepeatLabel = () => {
- const selectedDays = repeatInterval;
- const allDays = [
- "sunday",
- "monday",
- "tuesday",
- "wednesday",
- "thursday",
- "friday",
- "saturday",
- ];
- const workDays = ["monday", "tuesday", "wednesday", "thursday", "friday"];
-
- const isEveryWorkDay = workDays.every((day) => selectedDays.includes(day));
-
- const isEveryDay = allDays.every((day) => selectedDays.includes(day));
-
- if (isEveryDay) {
- return "Every day";
- } else if (
- isEveryWorkDay &&
- !selectedDays.includes("saturday") &&
- !selectedDays.includes("sunday")
- ) {
- return "Every work day";
- } else {
- return selectedDays
- .map((item) => daysOfWeek.find((day) => day.value === item)?.label)
- .join(", ");
- }
- };
-
if (isLoading && !isError) {
return (
{
setDate(newDate);
if(isStart) {
- if (startTime.getHours() > endTime.getHours() &&
+ if (startTime.getHours() > endTime.getHours() &&
(isSameDay(newDate, endDate) || isAfter(newDate, endDate))) {
const newEndDate = new Date(newDate);
newEndDate.setDate(newEndDate.getDate() + 1);
@@ -364,7 +323,7 @@ export const ManuallyAddEventModal = () => {
setEndDate(newEndDate);
}
} else {
- if (endTime.getHours() < startTime.getHours() &&
+ if (endTime.getHours() < startTime.getHours() &&
(isSameDay(newDate, startDate) || isAfter(startDate, newDate))) {
const newStartDate = new Date(newDate);
newStartDate.setDate(newStartDate.getDate() - 1);
@@ -432,7 +391,7 @@ export const ManuallyAddEventModal = () => {
is24Hour={profileData?.userType === ProfileType.PARENT ? false : true}
onChange={(time) => {
if (endDate.getDate() === startDate.getDate() &&
- time.getHours() >= endTime.getHours() && time.getMinutes() >= endTime.getHours())
+ time.getHours() >= endTime.getHours() && time.getMinutes() >= endTime.getHours())
{
const newEndDate = new Date(endDate);
@@ -801,9 +760,9 @@ export const ManuallyAddEventModal = () => {
)}
- />
+ />
{editEvent && (
- void }) => (
@@ -78,7 +71,7 @@ const MultiDayEvent = React.memo(({
const style = {
position: 'absolute' as const,
height: 14,
- backgroundColor: event.color || '#6200ee',
+ backgroundColor: event?.eventColor || '#6200ee',
padding: 2,
zIndex: 1,
left: isStart ? 4 : -0.5, // Extend slightly into the border
@@ -103,22 +96,21 @@ const MultiDayEvent = React.memo(({
);
});
-const Day = React.memo(({
- date,
- selectedDate,
- events,
- multiDayEvents,
- dayWidth,
- onPress
- }: {
- date: Date;
- selectedDate: Date;
- events: CalendarEvent[];
- multiDayEvents: CalendarEvent[];
- dayWidth: number;
- onPress: (date: Date) => void;
-}) => {
- const isCurrentMonth = isSameMonth(date, selectedDate);
+const Day = React.memo((
+ {
+ date,
+ events,
+ multiDayEvents,
+ dayWidth,
+ onPress
+ }: {
+ date: Date;
+ events: CalendarEvent[];
+ multiDayEvents: CalendarEvent[];
+ dayWidth: number;
+ onPress: (date: Date) => void;
+ }) => {
+ const isCurrentMonth = isSameMonth(date, new Date());
const isToday = isSameDay(date, new Date());
const remainingSlots = Math.max(0, MAX_VISIBLE_EVENTS - multiDayEvents.length);
@@ -126,7 +118,6 @@ const Day = React.memo(({
const visibleSingleDayEvents = singleDayEvents.slice(0, remainingSlots);
const totalHiddenEvents = singleDayEvents.length - remainingSlots;
- // Calculate space needed for multi-day events
const maxMultiDayPosition = multiDayEvents.length > 0
? Math.max(...multiDayEvents.map(e => e.weekPosition || 0)) + 1
: 0;
@@ -140,7 +131,7 @@ const Day = React.memo(({
>
{
- let position = 0;
- while (usedPositions.includes(position)) {
- position++;
- }
- return position;
-};
-
export const MonthCalendar: React.FC = () => {
const {data: rawEvents} = useGetEvents();
- const [selectedDate, setSelectedDate] = useAtom(selectedDateAtom);
+ const setSelectedDate = useSetAtom(selectedDateAtom);
const setMode = useSetAtom(modeAtom);
const {profileData} = useAuthContext();
@@ -204,10 +186,8 @@ export const MonthCalendar: React.FC = () => {
const isTablet = Device.deviceType === Device.DeviceType.TABLET;
const screenWidth = isTablet ? Dimensions.get('window').width * 0.89 : Dimensions.get('window').width;
const screenHeight = isTablet ? Dimensions.get('window').height * 0.89 : Dimensions.get('window').height;
- const dayWidth = (screenWidth - 32) / 7;
- const centerMonth = useRef(selectedDate);
- const isScrolling = useRef(false);
- const lastScrollUpdate = useRef(new Date());
+ const dayWidth = screenWidth / 7;
+ const centerMonth = useRef(new Date());
const weekStartsOn = profileData?.firstDayOfWeek === "Sundays" ? 0 : 1;
@@ -255,10 +235,10 @@ export const MonthCalendar: React.FC = () => {
});
}
return months;
- }, [getMonthData]);
+ }, [getMonthData, rawEvents]);
const processedEvents = useMemo(() => {
- if (!rawEvents?.length || !selectedDate) return {
+ if (!rawEvents?.length) return {
eventMap: new Map(),
multiDayEvents: []
};
@@ -324,7 +304,6 @@ export const MonthCalendar: React.FC = () => {
= () => {
/>
), [getEventsForDay, getMultiDayEventsForDay, dayWidth, onDayPress, screenWidth, weekStartsOn]);
- const debouncedSetSelectedDate = useMemo(
- () => debounce(setSelectedDate, 500),
- [setSelectedDate]
- );
-
- const onScroll = useCallback((event: NativeSyntheticEvent) => {
- if (isScrolling.current) return;
-
- const currentMonthIndex = Math.round(event.nativeEvent.contentOffset.x / screenWidth);
- const currentMonth = monthsToRender[currentMonthIndex];
-
- if (currentMonth) {
- setSelectedDate(currentMonth.date);
- centerMonth.current = currentMonth.date;
- }
- }, [screenWidth, setSelectedDate, monthsToRender]);
-
- useEffect(() => {
- return () => {
- debouncedSetSelectedDate.clear();
- };
- }, [debouncedSetSelectedDate]);
-
return (
+
= () => {
pagingEnabled
showsHorizontalScrollIndicator={false}
initialScrollIndex={CENTER_MONTH_INDEX}
- onScroll={onScroll}
removeClippedSubviews={true}
estimatedItemSize={screenWidth}
estimatedListSize={{width: screenWidth, height: screenHeight * 0.9}}
@@ -391,7 +350,6 @@ const keyExtractor = (item: MonthData, index: number) => `month-${index}`;
const Month = React.memo(({
date,
days,
- selectedDate,
getEventsForDay,
getMultiDayEventsForDay,
dayWidth,
@@ -401,7 +359,6 @@ const Month = React.memo(({
}: {
date: Date;
days: Date[];
- selectedDate: Date;
getEventsForDay: (date: Date) => CalendarEvent[];
getMultiDayEventsForDay: (date: Date) => CalendarEvent[];
dayWidth: number;
@@ -481,7 +438,6 @@ const Month = React.memo(({
{
// Precompute time constants
const DAY_IN_MS = 24 * 60 * 60 * 1000;
-const PERIOD_IN_MS = 5 * DAY_IN_MS;
+const PERIOD_IN_MS = 180 * DAY_IN_MS;
const TIME_ZONE = Intl.DateTimeFormat().resolvedOptions().timeZone;
// Memoize date range calculations
diff --git a/components/pages/todos/AddChoreDialog.tsx b/components/pages/todos/AddChoreDialog.tsx
index 8bbb123..431c9a3 100644
--- a/components/pages/todos/AddChoreDialog.tsx
+++ b/components/pages/todos/AddChoreDialog.tsx
@@ -52,7 +52,7 @@ const AddChoreDialog = (addChoreDialogProps: IAddChoreDialog) => {
addChoreDialogProps.selectedTodo ?? defaultTodo
);
const [selectedAssignees, setSelectedAssignees] = useState(
- addChoreDialogProps?.selectedTodo?.assignees ?? [user?.uid]
+ addChoreDialogProps?.selectedTodo?.assignees ?? [user?.uid!]
);
const {width} = Dimensions.get("screen");
const [points, setPoints] = useState(todo.points);
diff --git a/components/shared/RefreshButton.tsx b/components/shared/RefreshButton.tsx
index 93f29c3..03cbaf2 100644
--- a/components/shared/RefreshButton.tsx
+++ b/components/shared/RefreshButton.tsx
@@ -1,6 +1,6 @@
import React, { useRef, useEffect } from 'react';
import { TouchableOpacity, Animated, Easing } from 'react-native';
-import { Feather } from '@expo/vector-icons';
+import { Feather } from '@expo/vector-icons';
interface RefreshButtonProps {
onRefresh: () => Promise;
@@ -9,12 +9,12 @@ interface RefreshButtonProps {
color?: string;
}
-const RefreshButton = ({
- onRefresh,
- isSyncing,
- size = 24,
- color = "#83807F"
-}: RefreshButtonProps) => {
+const RefreshButton = ({
+ onRefresh,
+ isSyncing,
+ size = 24,
+ color = "#83807F"
+ }: RefreshButtonProps) => {
const rotateAnim = useRef(new Animated.Value(0)).current;
const rotationLoop = useRef(null);
@@ -29,12 +29,12 @@ const RefreshButton = ({
const startContinuousRotation = () => {
rotateAnim.setValue(0);
rotationLoop.current = Animated.loop(
- Animated.timing(rotateAnim, {
- toValue: 1,
- duration: 1000,
- easing: Easing.linear,
- useNativeDriver: true,
- })
+ Animated.timing(rotateAnim, {
+ toValue: 1,
+ duration: 1000,
+ easing: Easing.linear,
+ useNativeDriver: true,
+ })
);
rotationLoop.current.start();
};
@@ -56,11 +56,28 @@ const RefreshButton = ({
};
return (
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/firebase/functions/index.js b/firebase/functions/index.js
index 86616a1..4defa60 100644
--- a/firebase/functions/index.js
+++ b/firebase/functions/index.js
@@ -1780,26 +1780,35 @@ async function syncEventToGoogle(event, accessToken, refreshToken, creatorId) {
});
let token = accessToken;
-
- // Construct the Google Calendar event
const googleEvent = {
summary: event.title,
start: {
dateTime: event.allDay ? undefined : event.startDate.toISOString(),
- date: event.allDay ? event.startDate.toISOString().split('T')[0] : undefined
+ date: event.allDay ? event.startDate.toISOString().split('T')[0] : undefined,
+ timeZone: 'UTC'
},
end: {
dateTime: event.allDay ? undefined : event.endDate.toISOString(),
- date: event.allDay ? new Date(event.endDate.getTime() + 24*60*60*1000).toISOString().split('T')[0] : undefined
+ date: event.allDay ? new Date(event.endDate.getTime() + 24*60*60*1000).toISOString().split('T')[0] : undefined,
+ timeZone: 'UTC'
},
visibility: event.private ? 'private' : 'default',
- id: event.id
+ status: 'confirmed',
+ reminders: {
+ useDefault: true
+ },
+ // Add extendedProperties to store our Firestore ID
+ extendedProperties: {
+ private: {
+ firestoreId: event.id
+ }
+ }
};
- const url = `https://www.googleapis.com/calendar/v3/calendars/primary/events/${event.id}`;
-
+ // For new events, use POST to create
+ const url = 'https://www.googleapis.com/calendar/v3/calendars/primary/events';
let response = await fetch(url, {
- method: 'PUT',
+ method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
@@ -1820,7 +1829,7 @@ async function syncEventToGoogle(event, accessToken, refreshToken, creatorId) {
// Retry with new token
response = await fetch(url, {
- method: 'PUT',
+ method: 'POST',
headers: {
'Authorization': `Bearer ${refreshedGoogleToken}`,
'Content-Type': 'application/json'
@@ -1834,9 +1843,16 @@ async function syncEventToGoogle(event, accessToken, refreshToken, creatorId) {
throw new Error(`Failed to sync event: ${errorData.error?.message || response.statusText}`);
}
- console.log('[GOOGLE_SYNC] Successfully synced event to Google Calendar', {
- eventId: event.id,
- creatorId
+ const responseData = await response.json();
+
+ // Store the Google Calendar event ID in Firestore
+ await db.collection('Events').doc(event.id).update({
+ googleEventId: responseData.id
+ });
+
+ console.log('[GOOGLE_SYNC] Successfully created event in Google Calendar', {
+ firestoreId: event.id,
+ googleEventId: responseData.id
});
return true;
@@ -1900,282 +1916,353 @@ async function deleteEventFromGoogle(eventId, accessToken, refreshToken, creator
}
}
+const createEventHash = (event) => {
+ const str = `${event.startDate?.seconds || ''}-${event.endDate?.seconds || ''}-${
+ event.title || ''
+ }-${event.location || ''}-${event.allDay ? 'true' : 'false'}`;
+ let hash = 0;
+ for (let i = 0; i < str.length; i++) {
+ const char = str.charCodeAt(i);
+ hash = ((hash << 5) - hash) + char;
+ hash = hash & hash;
+ }
+ return hash.toString(36);
+};
-// Cloud Function to handle event updates
- exports.syncEventToGoogleCalendar = functions.firestore
- .document('Events/{eventId}')
- .onWrite(async (change, context) => {
- const eventId = context.params.eventId;
- const afterData = change.after.exists ? change.after.data() : null;
- const beforeData = change.before.exists ? change.before.data() : null;
+async function fetchEventsFromFirestore(userId, profileData, isFamilyView) {
+ const db = admin.firestore();
+ const eventsQuery = db.collection("Events");
+ let constraints;
+ const familyId = profileData?.familyId;
- // Skip if this is a Google-originated event
- if (afterData?.externalOrigin === 'google' || beforeData?.externalOrigin === 'google') {
- console.log('[GOOGLE_SYNC] Skipping sync for Google-originated event', { eventId });
- return null;
+ if (profileData?.userType === "FAMILY_DEVICE") {
+ constraints = [
+ eventsQuery.where("familyId", "==", familyId)
+ ];
+ } else {
+ if (isFamilyView) {
+ constraints = [
+ eventsQuery.where("familyId", "==", familyId),
+ eventsQuery.where("creatorId", "==", userId),
+ eventsQuery.where("attendees", "array-contains", userId)
+ ];
+ } else {
+ constraints = [
+ eventsQuery.where("creatorId", "==", userId),
+ eventsQuery.where("attendees", "array-contains", userId)
+ ];
+ }
+ }
+
+ try {
+ const snapshots = await Promise.all(constraints.map(query => query.get()));
+
+ const uniqueEvents = new Map();
+ const processedHashes = new Set();
+ const creatorIds = new Set();
+
+ snapshots.forEach(snapshot => {
+ snapshot.docs.forEach(doc => {
+ const event = doc.data();
+ const hash = createEventHash(event);
+
+ if (!processedHashes.has(hash)) {
+ processedHashes.add(hash);
+ creatorIds.add(event.creatorId);
+ uniqueEvents.set(doc.id, event);
}
-
- try {
- // Handle deletion
- if (!afterData && beforeData) {
- console.log('[GOOGLE_SYNC] Processing event deletion', { eventId });
-
- // Only proceed if this was previously synced with Google
- if (!beforeData.email) {
- return null;
- }
-
- const creatorDoc = await db.collection('Profiles').doc(beforeData.creatorId).get();
- const creatorData = creatorDoc.data();
-
- if (!creatorData?.googleAccounts?.[beforeData.email]) {
- return null;
- }
-
- const accountData = creatorData.googleAccounts[beforeData.email];
-
- await deleteEventFromGoogle(
- eventId,
- accountData.accessToken,
- accountData.refreshToken,
- beforeData.creatorId,
- beforeData.email
- );
-
- return null;
- }
-
- // Handle creation or update
- if (afterData) {
- // Skip if no creator or email is set
- if (!afterData.creatorId || !afterData.email) {
- return null;
- }
-
- const creatorDoc = await db.collection('Profiles').doc(afterData.creatorId).get();
- const creatorData = creatorDoc.data();
-
- if (!creatorData?.googleAccounts?.[afterData.email]) {
- return null;
- }
-
- const accountData = creatorData.googleAccounts[afterData.email];
-
- await syncEventToGoogle(
- afterData,
- accountData.accessToken,
- accountData.refreshToken,
- afterData.creatorId
- );
- }
-
- return null;
- } catch (error) {
- console.error('[GOOGLE_SYNC] Error in sync function:', error);
-
- // Store the error for later retry or monitoring
- await db.collection('SyncErrors').add({
- eventId,
- error: error.message,
- timestamp: admin.firestore.FieldValue.serverTimestamp(),
- type: 'google'
- });
-
- throw error;
- }
- }););
-
- let token = accessToken;
-
- // Construct the Google Calendar event
- const googleEvent = {
- summary: event.title,
- start: {
- dateTime: event.allDay ? undefined : event.startDate.toISOString(),
- date: event.allDay ? event.startDate.toISOString().split('T')[0] : undefined
- },
- end: {
- dateTime: event.allDay ? undefined : event.endDate.toISOString(),
- date: event.allDay ? new Date(event.endDate.getTime() + 24*60*60*1000).toISOString().split('T')[0] : undefined
- },
- visibility: event.private ? 'private' : 'default',
- id: event.id
- };
-
- const url = `https://www.googleapis.com/calendar/v3/calendars/primary/events/${event.id}`;
-
- let response = await fetch(url, {
- method: 'PUT',
- headers: {
- 'Authorization': `Bearer ${token}`,
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(googleEvent)
+ });
});
- // Handle token refresh if needed
- if (response.status === 401 && refreshToken) {
- console.log('[GOOGLE_SYNC] Token expired, refreshing...');
- const { refreshedGoogleToken } = await refreshGoogleToken(refreshToken);
- token = refreshedGoogleToken;
+ const creatorIdsArray = Array.from(creatorIds);
+ const creatorProfiles = new Map();
+ const BATCH_SIZE = 10;
- // Update the token in Firestore
- await db.collection("Profiles").doc(creatorId).update({
- [`googleAccounts.${event.email}.accessToken`]: refreshedGoogleToken
+ for (let i = 0; i < creatorIdsArray.length; i += BATCH_SIZE) {
+ const chunk = creatorIdsArray.slice(i, i + BATCH_SIZE);
+ const profilesSnapshot = await db
+ .collection("Profiles")
+ .where(admin.firestore.FieldPath.documentId(), "in", chunk)
+ .get();
+
+ profilesSnapshot.docs.forEach(doc => {
+ creatorProfiles.set(doc.id, doc.data()?.eventColor || '#ff69b4');
});
+ }
- // Retry with new token
- response = await fetch(url, {
- method: 'PUT',
+ return Array.from(uniqueEvents.entries()).map(([id, event]) => ({
+ ...event,
+ id,
+ start: event.allDay
+ ? new Date(new Date(event.startDate.seconds * 1000).setHours(0, 0, 0, 0))
+ : new Date(event.startDate.seconds * 1000),
+ end: event.allDay
+ ? new Date(new Date(event.endDate.seconds * 1000).setHours(0, 0, 0, 0))
+ : new Date(event.endDate.seconds * 1000),
+ hideHours: event.allDay,
+ eventColor: creatorProfiles.get(event.creatorId) || '#ff69b4',
+ notes: event.notes
+ }));
+
+ } catch (error) {
+ console.error('Error fetching events:', error);
+ throw new functions.https.HttpsError('internal', 'Error fetching events');
+ }
+}
+
+exports.fetchEvents = functions.https.onCall(async (data, context) => {
+ if (!context.auth) {
+ throw new functions.https.HttpsError(
+ 'unauthenticated',
+ 'User must be authenticated'
+ );
+ }
+
+ try {
+ const { isFamilyView } = data;
+ const userId = context.auth.uid;
+
+ const profileDoc = await admin.firestore()
+ .collection('Profiles')
+ .doc(userId)
+ .get();
+
+ if (!profileDoc.exists) {
+ throw new functions.https.HttpsError(
+ 'not-found',
+ 'User profile not found'
+ );
+ }
+
+ const profileData = profileDoc.data();
+ const events = await fetchEventsFromFirestore(userId, profileData, isFamilyView);
+
+ return { events };
+
+ } catch (error) {
+ console.error('Error in fetchEvents:', error);
+ throw new functions.https.HttpsError(
+ 'internal',
+ error.message || 'An unknown error occurred'
+ );
+ }
+});
+
+exports.syncNewEventToGoogle = functions.firestore
+ .document('Events/{eventId}')
+ .onCreate(async (snapshot, context) => {
+ const newEvent = snapshot.data();
+ const eventId = context.params.eventId;
+
+ // Don't sync if this event came from Google
+ if (newEvent.externalOrigin === 'google') {
+ console.log('[GOOGLE_SYNC] Skipping sync for Google-originated event:', eventId);
+ return;
+ }
+
+ try {
+ // Get the creator's Google account credentials
+ const creatorDoc = await db.collection('Profiles').doc(newEvent.creatorId).get();
+ const creatorData = creatorDoc.data();
+
+ if (!creatorData?.googleAccounts) {
+ console.log('[GOOGLE_SYNC] Creator has no Google accounts:', newEvent.creatorId);
+ return;
+ }
+
+ // Get the first Google account (assuming one account per user)
+ const [email, accountData] = Object.entries(creatorData.googleAccounts)[0];
+
+ if (!accountData?.accessToken) {
+ console.log('[GOOGLE_SYNC] No access token found for creator:', newEvent.creatorId);
+ return;
+ }
+
+ await syncEventToGoogle(
+ {
+ ...newEvent,
+ email,
+ startDate: new Date(newEvent.startDate.seconds * 1000),
+ endDate: new Date(newEvent.endDate.seconds * 1000)
+ },
+ accountData.accessToken,
+ accountData.refreshToken,
+ newEvent.creatorId
+ );
+
+ console.log('[GOOGLE_SYNC] Successfully synced new event to Google:', eventId);
+ } catch (error) {
+ console.error('[GOOGLE_SYNC] Error syncing new event to Google:', error);
+ }
+ });
+
+exports.syncEventToGoogleOnUpdate = functions.firestore
+ .document('Events/{eventId}')
+ .onUpdate(async (change, context) => {
+ const eventBefore = change.before.data();
+ const eventAfter = change.after.data();
+ const eventId = context.params.eventId;
+
+ if (eventAfter.externalOrigin === 'google') {
+ console.log('[GOOGLE_SYNC] Skipping sync for Google-originated event:', eventId);
+ return;
+ }
+
+ if (JSON.stringify(eventBefore) === JSON.stringify(eventAfter)) {
+ console.log('[GOOGLE_SYNC] No changes detected for event:', eventId);
+ return;
+ }
+
+ try {
+ const creatorDoc = await db.collection('Profiles').doc(eventAfter.creatorId).get();
+ const creatorData = creatorDoc.data();
+
+ if (!creatorData?.googleAccounts) {
+ console.log('[GOOGLE_SYNC] Creator has no Google accounts:', eventAfter.creatorId);
+ return;
+ }
+
+ const [email, accountData] = Object.entries(creatorData.googleAccounts)[0];
+
+ if (!accountData?.accessToken) {
+ console.log('[GOOGLE_SYNC] No access token found for creator:', eventAfter.creatorId);
+ return;
+ }
+
+ const url = `https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId}`;
+ const googleEvent = {
+ summary: eventAfter.title,
+ start: {
+ dateTime: eventAfter.allDay ? undefined : new Date(eventAfter.startDate.seconds * 1000).toISOString(),
+ date: eventAfter.allDay ? new Date(eventAfter.startDate.seconds * 1000).toISOString().split('T')[0] : undefined,
+ timeZone: 'UTC'
+ },
+ end: {
+ dateTime: eventAfter.allDay ? undefined : new Date(eventAfter.endDate.seconds * 1000).toISOString(),
+ date: eventAfter.allDay ? new Date(new Date(eventAfter.endDate.seconds * 1000).getTime() + 24*60*60*1000).toISOString().split('T')[0] : undefined,
+ timeZone: 'UTC'
+ },
+ visibility: eventAfter.private ? 'private' : 'default',
+ status: 'confirmed',
+ reminders: {
+ useDefault: true
+ }
+ };
+
+ let response = await fetch(url, {
+ method: 'PATCH',
headers: {
- 'Authorization': `Bearer ${refreshedGoogleToken}`,
+ 'Authorization': `Bearer ${accountData.accessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(googleEvent)
});
- }
- if (!response.ok) {
- const errorData = await response.json();
- throw new Error(`Failed to sync event: ${errorData.error?.message || response.statusText}`);
- }
+ if (response.status === 401 && accountData.refreshToken) {
+ console.log('[GOOGLE_SYNC] Token expired, refreshing...');
+ const { refreshedGoogleToken } = await refreshGoogleToken(accountData.refreshToken);
+ await db.collection("Profiles").doc(eventAfter.creatorId).update({
+ [`googleAccounts.${email}.accessToken`]: refreshedGoogleToken
+ });
- console.log('[GOOGLE_SYNC] Successfully synced event to Google Calendar', {
- eventId: event.id,
- creatorId
- });
-
- return true;
- } catch (error) {
- console.error('[GOOGLE_SYNC] Error syncing event to Google Calendar:', error);
- throw error;
- }
-}
-
-async function deleteEventFromGoogle(eventId, accessToken, refreshToken, creatorId, email) {
- try {
- console.log('[GOOGLE_DELETE] Starting to delete event from Google Calendar', {
- eventId,
- creatorId
- });
-
- let token = accessToken;
- const url = `https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId}`;
-
- let response = await fetch(url, {
- method: 'DELETE',
- headers: {
- 'Authorization': `Bearer ${token}`
+ response = await fetch(url, {
+ method: 'PATCH',
+ headers: {
+ 'Authorization': `Bearer ${refreshedGoogleToken}`,
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify(googleEvent)
+ });
}
- });
- // Handle token refresh if needed
- if (response.status === 401 && refreshToken) {
- console.log('[GOOGLE_DELETE] Token expired, refreshing...');
- const { refreshedGoogleToken } = await refreshGoogleToken(refreshToken);
- token = refreshedGoogleToken;
+ // If event doesn't exist in Google Calendar, create it using insert
+ if (response.status === 404) {
+ console.log('[GOOGLE_SYNC] Event not found in Google Calendar, creating new event');
+ const insertUrl = 'https://www.googleapis.com/calendar/v3/calendars/primary/events';
+ response = await fetch(insertUrl, {
+ method: 'POST',
+ headers: {
+ 'Authorization': `Bearer ${accountData.accessToken}`,
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({
+ ...googleEvent,
+ id: eventId
+ })
+ });
+ }
- // Update the token in Firestore
- await db.collection("Profiles").doc(creatorId).update({
- [`googleAccounts.${email}.accessToken`]: refreshedGoogleToken
- });
+ if (!response.ok) {
+ const errorData = await response.json();
+ throw new Error(errorData.error?.message || response.statusText);
+ }
- // Retry with new token
- response = await fetch(url, {
- method: 'DELETE',
- headers: {
- 'Authorization': `Bearer ${refreshedGoogleToken}`
- }
- });
+ console.log('[GOOGLE_SYNC] Successfully synced event update to Google:', eventId);
+ } catch (error) {
+ console.error('[GOOGLE_SYNC] Error syncing event update to Google:', error);
}
+ });
- if (!response.ok && response.status !== 404) {
- const errorData = await response.json();
- throw new Error(`Failed to delete event: ${errorData.error?.message || response.statusText}`);
- }
-
- console.log('[GOOGLE_DELETE] Successfully deleted event from Google Calendar', {
- eventId,
- creatorId
- });
-
- return true;
- } catch (error) {
- console.error('[GOOGLE_DELETE] Error deleting event from Google Calendar:', error);
- throw error;
- }
-}
-
-exports.handleEventDelete = functions.firestore
+exports.syncEventToGoogleOnDelete = functions.firestore
.document('Events/{eventId}')
.onDelete(async (snapshot, context) => {
const deletedEvent = snapshot.data();
const eventId = context.params.eventId;
- // Skip if this was a Google-originated event to prevent sync loops
- if (deletedEvent?.externalOrigin === 'google') {
- console.log('[GOOGLE_DELETE] Skipping delete sync for Google-originated event', { eventId });
- return null;
+ if (deletedEvent.externalOrigin === 'google') {
+ console.log('[GOOGLE_SYNC] Skipping delete sync for Google-originated event:', eventId);
+ return;
}
try {
- // Only proceed if this was synced with Google (has an email)
- if (!deletedEvent?.email) {
- console.log('[GOOGLE_DELETE] Event not synced with Google, skipping', { eventId });
- return null;
- }
-
- const creatorDoc = await admin.firestore()
- .collection('Profiles')
- .doc(deletedEvent.creatorId)
- .get();
-
- if (!creatorDoc.exists) {
- console.log('[GOOGLE_DELETE] Creator profile not found', {
- eventId,
- creatorId: deletedEvent.creatorId
- });
- return null;
- }
-
+ const creatorDoc = await db.collection('Profiles').doc(deletedEvent.creatorId).get();
const creatorData = creatorDoc.data();
- const googleAccount = creatorData?.googleAccounts?.[deletedEvent.email];
- if (!googleAccount) {
- console.log('[GOOGLE_DELETE] No Google account found for email', {
- eventId,
- email: deletedEvent.email
- });
- return null;
+ if (!creatorData?.googleAccounts) {
+ console.log('[GOOGLE_SYNC] Creator has no Google accounts:', deletedEvent.creatorId);
+ return;
}
- await deleteEventFromGoogle(
- eventId,
- googleAccount.accessToken,
- googleAccount.refreshToken,
- deletedEvent.creatorId,
- deletedEvent.email
- );
+ const [email, accountData] = Object.entries(creatorData.googleAccounts)[0];
- console.log('[GOOGLE_DELETE] Successfully deleted event from Google Calendar', {
- eventId,
- email: deletedEvent.email
+ if (!accountData?.accessToken) {
+ console.log('[GOOGLE_SYNC] No access token found for creator:', deletedEvent.creatorId);
+ return;
+ }
+
+ const url = `https://www.googleapis.com/calendar/v3/calendars/primary/events/${eventId}`;
+ let response = await fetch(url, {
+ method: 'DELETE',
+ headers: {
+ 'Authorization': `Bearer ${accountData.accessToken}`
+ }
});
- } catch (error) {
- console.error('[GOOGLE_DELETE] Error deleting event from Google Calendar:', error);
-
- // Store the error for monitoring
- await admin.firestore()
- .collection('SyncErrors')
- .add({
- eventId,
- error: error.message,
- timestamp: admin.firestore.FieldValue.serverTimestamp(),
- type: 'google_delete'
+ if (response.status === 401 && accountData.refreshToken) {
+ console.log('[GOOGLE_SYNC] Token expired, refreshing...');
+ const { refreshedGoogleToken } = await refreshGoogleToken(accountData.refreshToken);
+ await db.collection("Profiles").doc(deletedEvent.creatorId).update({
+ [`googleAccounts.${email}.accessToken`]: refreshedGoogleToken
});
- throw error;
+ response = await fetch(url, {
+ method: 'DELETE',
+ headers: {
+ 'Authorization': `Bearer ${refreshedGoogleToken}`
+ }
+ });
+ }
+
+ if (!response.ok && response.status !== 404) {
+ const errorData = await response.json();
+ throw new Error(errorData.error?.message || response.statusText);
+ }
+
+ console.log('[GOOGLE_SYNC] Successfully deleted event from Google:', eventId);
+ } catch (error) {
+ console.error('[GOOGLE_SYNC] Error deleting event from Google:', error);
}
});
+
+exports.sendOverviews = functions.pubsub
\ No newline at end of file
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 0000000..7b64faa
--- /dev/null
+++ b/ios/Podfile.lock
@@ -0,0 +1,4001 @@
+PODS:
+ - abseil/algorithm (1.20240116.2):
+ - abseil/algorithm/algorithm (= 1.20240116.2)
+ - abseil/algorithm/container (= 1.20240116.2)
+ - abseil/algorithm/algorithm (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/algorithm/container (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base (1.20240116.2):
+ - abseil/base/atomic_hook (= 1.20240116.2)
+ - abseil/base/base (= 1.20240116.2)
+ - abseil/base/base_internal (= 1.20240116.2)
+ - abseil/base/config (= 1.20240116.2)
+ - abseil/base/core_headers (= 1.20240116.2)
+ - abseil/base/cycleclock_internal (= 1.20240116.2)
+ - abseil/base/dynamic_annotations (= 1.20240116.2)
+ - abseil/base/endian (= 1.20240116.2)
+ - abseil/base/errno_saver (= 1.20240116.2)
+ - abseil/base/fast_type_id (= 1.20240116.2)
+ - abseil/base/log_severity (= 1.20240116.2)
+ - abseil/base/malloc_internal (= 1.20240116.2)
+ - abseil/base/no_destructor (= 1.20240116.2)
+ - abseil/base/nullability (= 1.20240116.2)
+ - abseil/base/prefetch (= 1.20240116.2)
+ - abseil/base/pretty_function (= 1.20240116.2)
+ - abseil/base/raw_logging_internal (= 1.20240116.2)
+ - abseil/base/spinlock_wait (= 1.20240116.2)
+ - abseil/base/strerror (= 1.20240116.2)
+ - abseil/base/throw_delegate (= 1.20240116.2)
+ - abseil/base/atomic_hook (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/base (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/cycleclock_internal
+ - abseil/base/dynamic_annotations
+ - abseil/base/log_severity
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/spinlock_wait
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/base_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/config (1.20240116.2):
+ - abseil/xcprivacy
+ - abseil/base/core_headers (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/cycleclock_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/dynamic_annotations (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/endian (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/xcprivacy
+ - abseil/base/errno_saver (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/fast_type_id (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/log_severity (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/malloc_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/base/no_destructor (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/base/nullability (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/base/prefetch (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/base/pretty_function (1.20240116.2):
+ - abseil/xcprivacy
+ - abseil/base/raw_logging_internal (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/base/log_severity
+ - abseil/xcprivacy
+ - abseil/base/spinlock_wait (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/xcprivacy
+ - abseil/base/strerror (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/xcprivacy
+ - abseil/base/throw_delegate (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/cleanup/cleanup (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/cleanup/cleanup_internal
+ - abseil/xcprivacy
+ - abseil/cleanup/cleanup_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/common (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/container/common_policy_traits (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/compressed_tuple (1.20240116.2):
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/container_memory (1.20240116.2):
+ - abseil/base/config
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/fixed_array (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/throw_delegate
+ - abseil/container/compressed_tuple
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/flat_hash_map (1.20240116.2):
+ - abseil/algorithm/container
+ - abseil/base/core_headers
+ - abseil/container/container_memory
+ - abseil/container/hash_function_defaults
+ - abseil/container/raw_hash_map
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/flat_hash_set (1.20240116.2):
+ - abseil/algorithm/container
+ - abseil/base/core_headers
+ - abseil/container/container_memory
+ - abseil/container/hash_function_defaults
+ - abseil/container/raw_hash_set
+ - abseil/memory/memory
+ - abseil/xcprivacy
+ - abseil/container/hash_function_defaults (1.20240116.2):
+ - abseil/base/config
+ - abseil/hash/hash
+ - abseil/strings/cord
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/container/hash_policy_traits (1.20240116.2):
+ - abseil/container/common_policy_traits
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/hashtable_debug_hooks (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/container/hashtablez_sampler (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/memory/memory
+ - abseil/profiling/exponential_biased
+ - abseil/profiling/sample_recorder
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/inlined_vector (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/throw_delegate
+ - abseil/container/inlined_vector_internal
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/container/inlined_vector_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/container/compressed_tuple
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/container/layout (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/debugging/demangle_internal
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/container/raw_hash_map (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/throw_delegate
+ - abseil/container/container_memory
+ - abseil/container/raw_hash_set
+ - abseil/xcprivacy
+ - abseil/container/raw_hash_set (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/base/raw_logging_internal
+ - abseil/container/common
+ - abseil/container/compressed_tuple
+ - abseil/container/container_memory
+ - abseil/container/hash_policy_traits
+ - abseil/container/hashtable_debug_hooks
+ - abseil/container/hashtablez_sampler
+ - abseil/hash/hash
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/crc/cpu_detect (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/crc/crc32c (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/crc/cpu_detect
+ - abseil/crc/crc_internal
+ - abseil/crc/non_temporal_memcpy
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/crc/crc_cord_state (1.20240116.2):
+ - abseil/base/config
+ - abseil/crc/crc32c
+ - abseil/numeric/bits
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/crc/crc_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/base/raw_logging_internal
+ - abseil/crc/cpu_detect
+ - abseil/memory/memory
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/crc/non_temporal_arm_intrinsics (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/crc/non_temporal_memcpy (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/crc/non_temporal_arm_intrinsics
+ - abseil/xcprivacy
+ - abseil/debugging/debugging_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/errno_saver
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/debugging/demangle_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/debugging/examine_stack (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/xcprivacy
+ - abseil/debugging/stacktrace (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/debugging_internal
+ - abseil/xcprivacy
+ - abseil/debugging/symbolize (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/debugging_internal
+ - abseil/debugging/demangle_internal
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/commandlineflag (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/flags/commandlineflag_internal
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/flags/commandlineflag_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/xcprivacy
+ - abseil/flags/config (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/path_util
+ - abseil/flags/program_name
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/flags/flag (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/config
+ - abseil/flags/flag_internal
+ - abseil/flags/reflection
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/flag_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/flags/config
+ - abseil/flags/marshalling
+ - abseil/flags/reflection
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/flags/marshalling (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/numeric/int128
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/flags/path_util (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/private_handle_accessor (1.20240116.2):
+ - abseil/base/config
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/flags/program_name (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/flags/path_util
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/flags/reflection (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/container/flat_hash_map
+ - abseil/flags/commandlineflag
+ - abseil/flags/commandlineflag_internal
+ - abseil/flags/config
+ - abseil/flags/private_handle_accessor
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/functional/any_invocable (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/functional/bind_front (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/container/compressed_tuple
+ - abseil/meta/type_traits
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/functional/function_ref (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/core_headers
+ - abseil/functional/any_invocable
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/hash/city (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/xcprivacy
+ - abseil/hash/hash (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/container/fixed_array
+ - abseil/functional/function_ref
+ - abseil/hash/city
+ - abseil/hash/low_level_hash
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/variant
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/hash/low_level_hash (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/endian
+ - abseil/base/prefetch
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/log/absl_check (1.20240116.2):
+ - abseil/log/internal/check_impl
+ - abseil/xcprivacy
+ - abseil/log/absl_log (1.20240116.2):
+ - abseil/log/internal/log_impl
+ - abseil/xcprivacy
+ - abseil/log/absl_vlog_is_on (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/vlog_config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/check (1.20240116.2):
+ - abseil/log/internal/check_impl
+ - abseil/log/internal/check_op
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/globals (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/hash/hash
+ - abseil/log/internal/vlog_config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/append_truncated (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/check_impl (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/log/internal/check_op
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/internal/check_op (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/nullguard
+ - abseil/log/internal/nullstream
+ - abseil/log/internal/strip
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/conditions (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/log/internal/voidify
+ - abseil/xcprivacy
+ - abseil/log/internal/config (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/log/internal/fnmatch (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/format (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/log/internal/append_truncated
+ - abseil/log/internal/config
+ - abseil/log/internal/globals
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/globals (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/log/internal/log_impl (1.20240116.2):
+ - abseil/log/absl_vlog_is_on
+ - abseil/log/internal/conditions
+ - abseil/log/internal/log_message
+ - abseil/log/internal/strip
+ - abseil/xcprivacy
+ - abseil/log/internal/log_message (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/errno_saver
+ - abseil/base/log_severity
+ - abseil/base/raw_logging_internal
+ - abseil/base/strerror
+ - abseil/container/inlined_vector
+ - abseil/debugging/examine_stack
+ - abseil/log/globals
+ - abseil/log/internal/append_truncated
+ - abseil/log/internal/format
+ - abseil/log/internal/globals
+ - abseil/log/internal/log_sink_set
+ - abseil/log/internal/nullguard
+ - abseil/log/internal/proto
+ - abseil/log/log_entry
+ - abseil/log/log_sink
+ - abseil/log/log_sink_registry
+ - abseil/memory/memory
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/log_sink_set (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/base/no_destructor
+ - abseil/base/raw_logging_internal
+ - abseil/cleanup/cleanup
+ - abseil/log/globals
+ - abseil/log/internal/config
+ - abseil/log/internal/globals
+ - abseil/log/log_entry
+ - abseil/log/log_sink
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/nullguard (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/log/internal/nullstream (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/log/internal/proto (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/internal/strip (1.20240116.2):
+ - abseil/base/log_severity
+ - abseil/log/internal/log_message
+ - abseil/log/internal/nullstream
+ - abseil/xcprivacy
+ - abseil/log/internal/vlog_config (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/log/internal/fnmatch
+ - abseil/memory/memory
+ - abseil/strings/strings
+ - abseil/synchronization/synchronization
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/log/internal/voidify (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/log/log (1.20240116.2):
+ - abseil/log/internal/log_impl
+ - abseil/log/vlog_is_on
+ - abseil/xcprivacy
+ - abseil/log/log_entry (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/log_severity
+ - abseil/log/internal/config
+ - abseil/strings/strings
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/log/log_sink (1.20240116.2):
+ - abseil/base/config
+ - abseil/log/log_entry
+ - abseil/xcprivacy
+ - abseil/log/log_sink_registry (1.20240116.2):
+ - abseil/base/config
+ - abseil/log/internal/log_sink_set
+ - abseil/log/log_sink
+ - abseil/xcprivacy
+ - abseil/log/vlog_is_on (1.20240116.2):
+ - abseil/log/absl_vlog_is_on
+ - abseil/xcprivacy
+ - abseil/memory (1.20240116.2):
+ - abseil/memory/memory (= 1.20240116.2)
+ - abseil/memory/memory (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/meta (1.20240116.2):
+ - abseil/meta/type_traits (= 1.20240116.2)
+ - abseil/meta/type_traits (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/numeric/bits (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/numeric/int128 (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/numeric/representation (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/profiling/exponential_biased (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/xcprivacy
+ - abseil/profiling/sample_recorder (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/random/bit_gen_ref (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/base/fast_type_id
+ - abseil/meta/type_traits
+ - abseil/random/internal/distribution_caller
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/random/random
+ - abseil/xcprivacy
+ - abseil/random/distributions (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/random/internal/distribution_caller
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/generate_real
+ - abseil/random/internal/iostream_state_saver
+ - abseil/random/internal/traits
+ - abseil/random/internal/uniform_helper
+ - abseil/random/internal/wide_multiply
+ - abseil/strings/strings
+ - abseil/xcprivacy
+ - abseil/random/internal/distribution_caller (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/fast_type_id
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/random/internal/fast_uniform_bits (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/fastmath (1.20240116.2):
+ - abseil/numeric/bits
+ - abseil/xcprivacy
+ - abseil/random/internal/generate_real (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/iostream_state_saver (1.20240116.2):
+ - abseil/meta/type_traits
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/random/internal/nonsecure_base (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/container/inlined_vector
+ - abseil/meta/type_traits
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/salted_seed_seq
+ - abseil/random/internal/seed_material
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/pcg_engine (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/random/internal/fastmath
+ - abseil/random/internal/iostream_state_saver
+ - abseil/xcprivacy
+ - abseil/random/internal/platform (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/random/internal/pool_urbg (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/randen
+ - abseil/random/internal/seed_material
+ - abseil/random/internal/traits
+ - abseil/random/seed_gen_exception
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/randen (1.20240116.2):
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/platform
+ - abseil/random/internal/randen_hwaes
+ - abseil/random/internal/randen_slow
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_engine (1.20240116.2):
+ - abseil/base/endian
+ - abseil/meta/type_traits
+ - abseil/random/internal/iostream_state_saver
+ - abseil/random/internal/randen
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_hwaes (1.20240116.2):
+ - abseil/base/config
+ - abseil/random/internal/platform
+ - abseil/random/internal/randen_hwaes_impl
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_hwaes_impl (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/numeric/int128
+ - abseil/random/internal/platform
+ - abseil/xcprivacy
+ - abseil/random/internal/randen_slow (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/numeric/int128
+ - abseil/random/internal/platform
+ - abseil/xcprivacy
+ - abseil/random/internal/salted_seed_seq (1.20240116.2):
+ - abseil/container/inlined_vector
+ - abseil/meta/type_traits
+ - abseil/random/internal/seed_material
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/seed_material (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/raw_logging_internal
+ - abseil/random/internal/fast_uniform_bits
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/random/internal/traits (1.20240116.2):
+ - abseil/base/config
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/xcprivacy
+ - abseil/random/internal/uniform_helper (1.20240116.2):
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/numeric/int128
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/internal/wide_multiply (1.20240116.2):
+ - abseil/base/config
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/random/internal/traits
+ - abseil/xcprivacy
+ - abseil/random/random (1.20240116.2):
+ - abseil/random/distributions
+ - abseil/random/internal/nonsecure_base
+ - abseil/random/internal/pcg_engine
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/randen_engine
+ - abseil/random/seed_sequences
+ - abseil/xcprivacy
+ - abseil/random/seed_gen_exception (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/random/seed_sequences (1.20240116.2):
+ - abseil/base/config
+ - abseil/random/internal/pool_urbg
+ - abseil/random/internal/salted_seed_seq
+ - abseil/random/internal/seed_material
+ - abseil/random/seed_gen_exception
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/status/status (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/no_destructor
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/strerror
+ - abseil/container/inlined_vector
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/functional/function_ref
+ - abseil/memory/memory
+ - abseil/strings/cord
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/status/statusor (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/meta/type_traits
+ - abseil/status/status
+ - abseil/strings/has_ostream_operator
+ - abseil/strings/str_format
+ - abseil/strings/strings
+ - abseil/types/variant
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/strings/charset (1.20240116.2):
+ - abseil/base/core_headers
+ - abseil/strings/string_view
+ - abseil/xcprivacy
+ - abseil/strings/cord (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/container/inlined_vector
+ - abseil/crc/crc32c
+ - abseil/crc/crc_cord_state
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_functions
+ - abseil/strings/cordz_info
+ - abseil/strings/cordz_statistics
+ - abseil/strings/cordz_update_scope
+ - abseil/strings/cordz_update_tracker
+ - abseil/strings/internal
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cord_internal (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/base/throw_delegate
+ - abseil/container/compressed_tuple
+ - abseil/container/container_memory
+ - abseil/container/inlined_vector
+ - abseil/container/layout
+ - abseil/crc/crc_cord_state
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/strings/strings
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cordz_functions (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/profiling/exponential_biased
+ - abseil/xcprivacy
+ - abseil/strings/cordz_handle (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/synchronization/synchronization
+ - abseil/xcprivacy
+ - abseil/strings/cordz_info (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/container/inlined_vector
+ - abseil/debugging/stacktrace
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_functions
+ - abseil/strings/cordz_handle
+ - abseil/strings/cordz_statistics
+ - abseil/strings/cordz_update_tracker
+ - abseil/synchronization/synchronization
+ - abseil/time/time
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/cordz_statistics (1.20240116.2):
+ - abseil/base/config
+ - abseil/strings/cordz_update_tracker
+ - abseil/xcprivacy
+ - abseil/strings/cordz_update_scope (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/strings/cord_internal
+ - abseil/strings/cordz_info
+ - abseil/strings/cordz_update_tracker
+ - abseil/xcprivacy
+ - abseil/strings/cordz_update_tracker (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/strings/has_ostream_operator (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/strings/internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/raw_logging_internal
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/strings/str_format (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/strings/str_format_internal
+ - abseil/strings/string_view
+ - abseil/types/span
+ - abseil/xcprivacy
+ - abseil/strings/str_format_internal (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/container/fixed_array
+ - abseil/container/inlined_vector
+ - abseil/functional/function_ref
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/numeric/representation
+ - abseil/strings/strings
+ - abseil/types/optional
+ - abseil/types/span
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/strings/string_view (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/throw_delegate
+ - abseil/xcprivacy
+ - abseil/strings/strings (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/endian
+ - abseil/base/nullability
+ - abseil/base/raw_logging_internal
+ - abseil/base/throw_delegate
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/numeric/bits
+ - abseil/numeric/int128
+ - abseil/strings/charset
+ - abseil/strings/internal
+ - abseil/strings/string_view
+ - abseil/xcprivacy
+ - abseil/synchronization/graphcycles_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/synchronization/kernel_timeout_internal (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/synchronization/synchronization (1.20240116.2):
+ - abseil/base/atomic_hook
+ - abseil/base/base
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/dynamic_annotations
+ - abseil/base/malloc_internal
+ - abseil/base/raw_logging_internal
+ - abseil/debugging/stacktrace
+ - abseil/debugging/symbolize
+ - abseil/synchronization/graphcycles_internal
+ - abseil/synchronization/kernel_timeout_internal
+ - abseil/time/time
+ - abseil/xcprivacy
+ - abseil/time (1.20240116.2):
+ - abseil/time/internal (= 1.20240116.2)
+ - abseil/time/time (= 1.20240116.2)
+ - abseil/time/internal (1.20240116.2):
+ - abseil/time/internal/cctz (= 1.20240116.2)
+ - abseil/time/internal/cctz (1.20240116.2):
+ - abseil/time/internal/cctz/civil_time (= 1.20240116.2)
+ - abseil/time/internal/cctz/time_zone (= 1.20240116.2)
+ - abseil/time/internal/cctz/civil_time (1.20240116.2):
+ - abseil/base/config
+ - abseil/xcprivacy
+ - abseil/time/internal/cctz/time_zone (1.20240116.2):
+ - abseil/base/config
+ - abseil/time/internal/cctz/civil_time
+ - abseil/xcprivacy
+ - abseil/time/time (1.20240116.2):
+ - abseil/base/base
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/raw_logging_internal
+ - abseil/numeric/int128
+ - abseil/strings/strings
+ - abseil/time/internal/cctz/civil_time
+ - abseil/time/internal/cctz/time_zone
+ - abseil/types/optional
+ - abseil/xcprivacy
+ - abseil/types (1.20240116.2):
+ - abseil/types/any (= 1.20240116.2)
+ - abseil/types/bad_any_cast (= 1.20240116.2)
+ - abseil/types/bad_any_cast_impl (= 1.20240116.2)
+ - abseil/types/bad_optional_access (= 1.20240116.2)
+ - abseil/types/bad_variant_access (= 1.20240116.2)
+ - abseil/types/compare (= 1.20240116.2)
+ - abseil/types/optional (= 1.20240116.2)
+ - abseil/types/span (= 1.20240116.2)
+ - abseil/types/variant (= 1.20240116.2)
+ - abseil/types/any (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/fast_type_id
+ - abseil/meta/type_traits
+ - abseil/types/bad_any_cast
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/types/bad_any_cast (1.20240116.2):
+ - abseil/base/config
+ - abseil/types/bad_any_cast_impl
+ - abseil/xcprivacy
+ - abseil/types/bad_any_cast_impl (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/bad_optional_access (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/bad_variant_access (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/raw_logging_internal
+ - abseil/xcprivacy
+ - abseil/types/compare (1.20240116.2):
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/types/optional (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/memory/memory
+ - abseil/meta/type_traits
+ - abseil/types/bad_optional_access
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/types/span (1.20240116.2):
+ - abseil/algorithm/algorithm
+ - abseil/base/core_headers
+ - abseil/base/nullability
+ - abseil/base/throw_delegate
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/types/variant (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/base/core_headers
+ - abseil/meta/type_traits
+ - abseil/types/bad_variant_access
+ - abseil/utility/utility
+ - abseil/xcprivacy
+ - abseil/utility/utility (1.20240116.2):
+ - abseil/base/base_internal
+ - abseil/base/config
+ - abseil/meta/type_traits
+ - abseil/xcprivacy
+ - abseil/xcprivacy (1.20240116.2)
+ - boost (1.84.0)
+ - BoringSSL-GRPC (0.0.36):
+ - BoringSSL-GRPC/Implementation (= 0.0.36)
+ - BoringSSL-GRPC/Interface (= 0.0.36)
+ - BoringSSL-GRPC/Implementation (0.0.36):
+ - BoringSSL-GRPC/Interface (= 0.0.36)
+ - BoringSSL-GRPC/Interface (0.0.36)
+ - BVLinearGradient (2.8.3):
+ - React-Core
+ - DoubleConversion (1.1.6)
+ - EASClient (0.13.1):
+ - ExpoModulesCore
+ - EXApplication (6.0.1):
+ - ExpoModulesCore
+ - EXConstants (17.0.3):
+ - ExpoModulesCore
+ - EXImageLoader (5.0.0):
+ - ExpoModulesCore
+ - React-Core
+ - EXJSONUtils (0.14.0)
+ - EXManifests (0.15.4):
+ - ExpoModulesCore
+ - EXNotifications (0.29.11):
+ - ExpoModulesCore
+ - Expo (52.0.18):
+ - ExpoModulesCore
+ - expo-dev-client (5.0.6):
+ - EXManifests
+ - expo-dev-launcher
+ - expo-dev-menu
+ - expo-dev-menu-interface
+ - EXUpdatesInterface
+ - expo-dev-launcher (5.0.19):
+ - DoubleConversion
+ - EXManifests
+ - expo-dev-launcher/Main (= 5.0.19)
+ - expo-dev-menu
+ - expo-dev-menu-interface
+ - ExpoModulesCore
+ - EXUpdatesInterface
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTAppDelegate
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - expo-dev-launcher/Main (5.0.19):
+ - DoubleConversion
+ - EXManifests
+ - expo-dev-launcher/Unsafe
+ - expo-dev-menu
+ - expo-dev-menu-interface
+ - ExpoModulesCore
+ - EXUpdatesInterface
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTAppDelegate
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - expo-dev-launcher/Unsafe (5.0.19):
+ - DoubleConversion
+ - EXManifests
+ - expo-dev-menu
+ - expo-dev-menu-interface
+ - ExpoModulesCore
+ - EXUpdatesInterface
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTAppDelegate
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - expo-dev-menu (6.0.14):
+ - DoubleConversion
+ - expo-dev-menu/Main (= 6.0.14)
+ - expo-dev-menu/ReactNativeCompatibles (= 6.0.14)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - expo-dev-menu-interface (1.9.2)
+ - expo-dev-menu/Main (6.0.14):
+ - DoubleConversion
+ - EXManifests
+ - expo-dev-menu-interface
+ - expo-dev-menu/Vendored
+ - ExpoModulesCore
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - expo-dev-menu/ReactNativeCompatibles (6.0.14):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - expo-dev-menu/SafeAreaView (6.0.14):
+ - DoubleConversion
+ - ExpoModulesCore
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - expo-dev-menu/Vendored (6.0.14):
+ - DoubleConversion
+ - expo-dev-menu/SafeAreaView
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - ExpoAppleAuthentication (7.1.2):
+ - ExpoModulesCore
+ - ExpoAsset (11.0.1):
+ - ExpoModulesCore
+ - ExpoCalendar (14.0.5):
+ - ExpoModulesCore
+ - ExpoCamera (16.0.9):
+ - ExpoModulesCore
+ - ZXingObjC/OneD
+ - ZXingObjC/PDF417
+ - ExpoCrypto (14.0.1):
+ - ExpoModulesCore
+ - ExpoDevice (7.0.1):
+ - ExpoModulesCore
+ - ExpoFileSystem (18.0.5):
+ - ExpoModulesCore
+ - ExpoFont (13.0.1):
+ - ExpoModulesCore
+ - ExpoHaptics (14.0.0):
+ - ExpoModulesCore
+ - ExpoHead (4.0.11):
+ - ExpoModulesCore
+ - ExpoImagePicker (16.0.3):
+ - ExpoModulesCore
+ - ExpoKeepAwake (14.0.1):
+ - ExpoModulesCore
+ - ExpoLinking (7.0.3):
+ - ExpoModulesCore
+ - ExpoLocalization (16.0.0):
+ - ExpoModulesCore
+ - ExpoModulesCore (2.1.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTAppDelegate
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - ExpoScreenOrientation (8.0.1):
+ - DoubleConversion
+ - ExpoModulesCore
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - ExpoSplashScreen (0.29.18):
+ - ExpoModulesCore
+ - ExpoSystemUI (4.0.6):
+ - ExpoModulesCore
+ - ExpoWebBrowser (14.0.1):
+ - ExpoModulesCore
+ - EXStructuredHeaders (4.0.0)
+ - EXUpdates (0.26.10):
+ - DoubleConversion
+ - EASClient
+ - EXManifests
+ - ExpoModulesCore
+ - EXStructuredHeaders
+ - EXUpdatesInterface
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - ReachabilitySwift
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - EXUpdatesInterface (1.0.0):
+ - ExpoModulesCore
+ - FBLazyVector (0.76.5)
+ - Firebase/Auth (11.5.0):
+ - Firebase/CoreOnly
+ - FirebaseAuth (~> 11.5.0)
+ - Firebase/CoreOnly (11.5.0):
+ - FirebaseCore (= 11.5.0)
+ - Firebase/Crashlytics (11.5.0):
+ - Firebase/CoreOnly
+ - FirebaseCrashlytics (~> 11.5.0)
+ - Firebase/Firestore (11.5.0):
+ - Firebase/CoreOnly
+ - FirebaseFirestore (~> 11.5.0)
+ - Firebase/Functions (11.5.0):
+ - Firebase/CoreOnly
+ - FirebaseFunctions (~> 11.5.0)
+ - Firebase/Storage (11.5.0):
+ - Firebase/CoreOnly
+ - FirebaseStorage (~> 11.5.0)
+ - FirebaseAppCheckInterop (11.6.0)
+ - FirebaseAuth (11.5.0):
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseAuthInterop (~> 11.0)
+ - FirebaseCore (= 11.5)
+ - FirebaseCoreExtension (= 11.5)
+ - GoogleUtilities/AppDelegateSwizzler (~> 8.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GTMSessionFetcher/Core (< 5.0, >= 3.4)
+ - RecaptchaInterop (~> 100.0)
+ - FirebaseAuthInterop (11.6.0)
+ - FirebaseCore (11.5.0):
+ - FirebaseCoreInternal (= 11.5)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/Logger (~> 8.0)
+ - FirebaseCoreExtension (11.5.0):
+ - FirebaseCore (= 11.5)
+ - FirebaseCoreInternal (11.5.0):
+ - "GoogleUtilities/NSData+zlib (~> 8.0)"
+ - FirebaseCrashlytics (11.5.0):
+ - FirebaseCore (= 11.5)
+ - FirebaseInstallations (~> 11.0)
+ - FirebaseRemoteConfigInterop (~> 11.0)
+ - FirebaseSessions (~> 11.0)
+ - GoogleDataTransport (~> 10.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - nanopb (~> 3.30910.0)
+ - PromisesObjC (~> 2.4)
+ - FirebaseFirestore (11.5.0):
+ - FirebaseCore (= 11.5)
+ - FirebaseCoreExtension (= 11.5)
+ - FirebaseFirestoreInternal (= 11.5.0)
+ - FirebaseSharedSwift (~> 11.0)
+ - FirebaseFirestoreInternal (11.5.0):
+ - abseil/algorithm (~> 1.20240116.1)
+ - abseil/base (~> 1.20240116.1)
+ - abseil/container/flat_hash_map (~> 1.20240116.1)
+ - abseil/memory (~> 1.20240116.1)
+ - abseil/meta (~> 1.20240116.1)
+ - abseil/strings/strings (~> 1.20240116.1)
+ - abseil/time (~> 1.20240116.1)
+ - abseil/types (~> 1.20240116.1)
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseCore (= 11.5)
+ - "gRPC-C++ (~> 1.65.0)"
+ - gRPC-Core (~> 1.65.0)
+ - leveldb-library (~> 1.22)
+ - nanopb (~> 3.30910.0)
+ - FirebaseFunctions (11.5.0):
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseAuthInterop (~> 11.0)
+ - FirebaseCore (= 11.5)
+ - FirebaseCoreExtension (= 11.5)
+ - FirebaseMessagingInterop (~> 11.0)
+ - FirebaseSharedSwift (~> 11.0)
+ - GTMSessionFetcher/Core (< 5.0, >= 3.4)
+ - FirebaseInstallations (11.5.0):
+ - FirebaseCore (= 11.5)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/UserDefaults (~> 8.0)
+ - PromisesObjC (~> 2.4)
+ - FirebaseMessagingInterop (11.6.0)
+ - FirebaseRemoteConfigInterop (11.6.0)
+ - FirebaseSessions (11.5.0):
+ - FirebaseCore (= 11.5)
+ - FirebaseCoreExtension (= 11.5)
+ - FirebaseInstallations (~> 11.0)
+ - GoogleDataTransport (~> 10.0)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GoogleUtilities/UserDefaults (~> 8.0)
+ - nanopb (~> 3.30910.0)
+ - PromisesSwift (~> 2.1)
+ - FirebaseSharedSwift (11.6.0)
+ - FirebaseStorage (11.5.0):
+ - FirebaseAppCheckInterop (~> 11.0)
+ - FirebaseAuthInterop (~> 11.0)
+ - FirebaseCore (= 11.5)
+ - FirebaseCoreExtension (= 11.5)
+ - GoogleUtilities/Environment (~> 8.0)
+ - GTMSessionFetcher/Core (< 5.0, >= 3.4)
+ - fmt (9.1.0)
+ - glog (0.3.5)
+ - GoogleDataTransport (10.1.0):
+ - nanopb (~> 3.30910.0)
+ - PromisesObjC (~> 2.4)
+ - GoogleUtilities/AppDelegateSwizzler (8.0.2):
+ - GoogleUtilities/Environment
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Network
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Environment (8.0.2):
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Logger (8.0.2):
+ - GoogleUtilities/Environment
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Network (8.0.2):
+ - GoogleUtilities/Logger
+ - "GoogleUtilities/NSData+zlib"
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Reachability
+ - "GoogleUtilities/NSData+zlib (8.0.2)":
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/Privacy (8.0.2)
+ - GoogleUtilities/Reachability (8.0.2):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - GoogleUtilities/UserDefaults (8.0.2):
+ - GoogleUtilities/Logger
+ - GoogleUtilities/Privacy
+ - "gRPC-C++ (1.65.5)":
+ - "gRPC-C++/Implementation (= 1.65.5)"
+ - "gRPC-C++/Interface (= 1.65.5)"
+ - "gRPC-C++/Implementation (1.65.5)":
+ - abseil/algorithm/container (~> 1.20240116.2)
+ - abseil/base/base (~> 1.20240116.2)
+ - abseil/base/config (~> 1.20240116.2)
+ - abseil/base/core_headers (~> 1.20240116.2)
+ - abseil/base/log_severity (~> 1.20240116.2)
+ - abseil/base/no_destructor (~> 1.20240116.2)
+ - abseil/cleanup/cleanup (~> 1.20240116.2)
+ - abseil/container/flat_hash_map (~> 1.20240116.2)
+ - abseil/container/flat_hash_set (~> 1.20240116.2)
+ - abseil/container/inlined_vector (~> 1.20240116.2)
+ - abseil/flags/flag (~> 1.20240116.2)
+ - abseil/flags/marshalling (~> 1.20240116.2)
+ - abseil/functional/any_invocable (~> 1.20240116.2)
+ - abseil/functional/bind_front (~> 1.20240116.2)
+ - abseil/functional/function_ref (~> 1.20240116.2)
+ - abseil/hash/hash (~> 1.20240116.2)
+ - abseil/log/absl_check (~> 1.20240116.2)
+ - abseil/log/absl_log (~> 1.20240116.2)
+ - abseil/log/check (~> 1.20240116.2)
+ - abseil/log/globals (~> 1.20240116.2)
+ - abseil/log/log (~> 1.20240116.2)
+ - abseil/memory/memory (~> 1.20240116.2)
+ - abseil/meta/type_traits (~> 1.20240116.2)
+ - abseil/random/bit_gen_ref (~> 1.20240116.2)
+ - abseil/random/distributions (~> 1.20240116.2)
+ - abseil/random/random (~> 1.20240116.2)
+ - abseil/status/status (~> 1.20240116.2)
+ - abseil/status/statusor (~> 1.20240116.2)
+ - abseil/strings/cord (~> 1.20240116.2)
+ - abseil/strings/str_format (~> 1.20240116.2)
+ - abseil/strings/strings (~> 1.20240116.2)
+ - abseil/synchronization/synchronization (~> 1.20240116.2)
+ - abseil/time/time (~> 1.20240116.2)
+ - abseil/types/optional (~> 1.20240116.2)
+ - abseil/types/span (~> 1.20240116.2)
+ - abseil/types/variant (~> 1.20240116.2)
+ - abseil/utility/utility (~> 1.20240116.2)
+ - "gRPC-C++/Interface (= 1.65.5)"
+ - "gRPC-C++/Privacy (= 1.65.5)"
+ - gRPC-Core (= 1.65.5)
+ - "gRPC-C++/Interface (1.65.5)"
+ - "gRPC-C++/Privacy (1.65.5)"
+ - gRPC-Core (1.65.5):
+ - gRPC-Core/Implementation (= 1.65.5)
+ - gRPC-Core/Interface (= 1.65.5)
+ - gRPC-Core/Implementation (1.65.5):
+ - abseil/algorithm/container (~> 1.20240116.2)
+ - abseil/base/base (~> 1.20240116.2)
+ - abseil/base/config (~> 1.20240116.2)
+ - abseil/base/core_headers (~> 1.20240116.2)
+ - abseil/base/log_severity (~> 1.20240116.2)
+ - abseil/base/no_destructor (~> 1.20240116.2)
+ - abseil/cleanup/cleanup (~> 1.20240116.2)
+ - abseil/container/flat_hash_map (~> 1.20240116.2)
+ - abseil/container/flat_hash_set (~> 1.20240116.2)
+ - abseil/container/inlined_vector (~> 1.20240116.2)
+ - abseil/flags/flag (~> 1.20240116.2)
+ - abseil/flags/marshalling (~> 1.20240116.2)
+ - abseil/functional/any_invocable (~> 1.20240116.2)
+ - abseil/functional/bind_front (~> 1.20240116.2)
+ - abseil/functional/function_ref (~> 1.20240116.2)
+ - abseil/hash/hash (~> 1.20240116.2)
+ - abseil/log/check (~> 1.20240116.2)
+ - abseil/log/globals (~> 1.20240116.2)
+ - abseil/log/log (~> 1.20240116.2)
+ - abseil/memory/memory (~> 1.20240116.2)
+ - abseil/meta/type_traits (~> 1.20240116.2)
+ - abseil/random/bit_gen_ref (~> 1.20240116.2)
+ - abseil/random/distributions (~> 1.20240116.2)
+ - abseil/random/random (~> 1.20240116.2)
+ - abseil/status/status (~> 1.20240116.2)
+ - abseil/status/statusor (~> 1.20240116.2)
+ - abseil/strings/cord (~> 1.20240116.2)
+ - abseil/strings/str_format (~> 1.20240116.2)
+ - abseil/strings/strings (~> 1.20240116.2)
+ - abseil/synchronization/synchronization (~> 1.20240116.2)
+ - abseil/time/time (~> 1.20240116.2)
+ - abseil/types/optional (~> 1.20240116.2)
+ - abseil/types/span (~> 1.20240116.2)
+ - abseil/types/variant (~> 1.20240116.2)
+ - abseil/utility/utility (~> 1.20240116.2)
+ - BoringSSL-GRPC (= 0.0.36)
+ - gRPC-Core/Interface (= 1.65.5)
+ - gRPC-Core/Privacy (= 1.65.5)
+ - gRPC-Core/Interface (1.65.5)
+ - gRPC-Core/Privacy (1.65.5)
+ - GTMSessionFetcher/Core (4.1.0)
+ - hermes-engine (0.76.5):
+ - hermes-engine/Pre-built (= 0.76.5)
+ - hermes-engine/Pre-built (0.76.5)
+ - IQKeyboardManagerSwift (6.5.16)
+ - leveldb-library (1.22.6)
+ - nanopb (3.30910.0):
+ - nanopb/decode (= 3.30910.0)
+ - nanopb/encode (= 3.30910.0)
+ - nanopb/decode (3.30910.0)
+ - nanopb/encode (3.30910.0)
+ - PromisesObjC (2.4.0)
+ - PromisesSwift (2.4.0):
+ - PromisesObjC (= 2.4.0)
+ - RCT-Folly (2024.01.01.00):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCT-Folly/Default (= 2024.01.01.00)
+ - RCT-Folly/Default (2024.01.01.00):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCT-Folly/Fabric (2024.01.01.00):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCTDeprecation (0.76.5)
+ - RCTRequired (0.76.5)
+ - RCTTypeSafety (0.76.5):
+ - FBLazyVector (= 0.76.5)
+ - RCTRequired (= 0.76.5)
+ - React-Core (= 0.76.5)
+ - ReachabilitySwift (5.2.4)
+ - React (0.76.5):
+ - React-Core (= 0.76.5)
+ - React-Core/DevSupport (= 0.76.5)
+ - React-Core/RCTWebSocket (= 0.76.5)
+ - React-RCTActionSheet (= 0.76.5)
+ - React-RCTAnimation (= 0.76.5)
+ - React-RCTBlob (= 0.76.5)
+ - React-RCTImage (= 0.76.5)
+ - React-RCTLinking (= 0.76.5)
+ - React-RCTNetwork (= 0.76.5)
+ - React-RCTSettings (= 0.76.5)
+ - React-RCTText (= 0.76.5)
+ - React-RCTVibration (= 0.76.5)
+ - React-callinvoker (0.76.5)
+ - React-Core (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.76.5)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/CoreModulesHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/Default (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/DevSupport (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.76.5)
+ - React-Core/RCTWebSocket (= 0.76.5)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTActionSheetHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTAnimationHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTBlobHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTImageHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTLinkingHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTNetworkHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTSettingsHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTTextHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTVibrationHeaders (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-Core/RCTWebSocket (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTDeprecation
+ - React-Core/Default (= 0.76.5)
+ - React-cxxreact
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-perflogger
+ - React-runtimescheduler
+ - React-utils
+ - SocketRocket (= 0.7.1)
+ - Yoga
+ - React-CoreModules (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety (= 0.76.5)
+ - React-Core/CoreModulesHeaders (= 0.76.5)
+ - React-jsi (= 0.76.5)
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTBlob
+ - React-RCTImage (= 0.76.5)
+ - ReactCodegen
+ - ReactCommon
+ - SocketRocket (= 0.7.1)
+ - React-cxxreact (0.76.5):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.5)
+ - React-debug (= 0.76.5)
+ - React-jsi (= 0.76.5)
+ - React-jsinspector
+ - React-logger (= 0.76.5)
+ - React-perflogger (= 0.76.5)
+ - React-runtimeexecutor (= 0.76.5)
+ - React-timing (= 0.76.5)
+ - React-debug (0.76.5)
+ - React-defaultsnativemodule (0.76.5):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-domnativemodule
+ - React-Fabric
+ - React-featureflags
+ - React-featureflagsnativemodule
+ - React-graphics
+ - React-idlecallbacksnativemodule
+ - React-ImageManager
+ - React-microtasksnativemodule
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-domnativemodule (0.76.5):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-Fabric (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/animations (= 0.76.5)
+ - React-Fabric/attributedstring (= 0.76.5)
+ - React-Fabric/componentregistry (= 0.76.5)
+ - React-Fabric/componentregistrynative (= 0.76.5)
+ - React-Fabric/components (= 0.76.5)
+ - React-Fabric/core (= 0.76.5)
+ - React-Fabric/dom (= 0.76.5)
+ - React-Fabric/imagemanager (= 0.76.5)
+ - React-Fabric/leakchecker (= 0.76.5)
+ - React-Fabric/mounting (= 0.76.5)
+ - React-Fabric/observers (= 0.76.5)
+ - React-Fabric/scheduler (= 0.76.5)
+ - React-Fabric/telemetry (= 0.76.5)
+ - React-Fabric/templateprocessor (= 0.76.5)
+ - React-Fabric/uimanager (= 0.76.5)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/animations (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/attributedstring (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistry (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/componentregistrynative (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/components/legacyviewmanagerinterop (= 0.76.5)
+ - React-Fabric/components/root (= 0.76.5)
+ - React-Fabric/components/view (= 0.76.5)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/legacyviewmanagerinterop (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/root (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/components/view (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-Fabric/core (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/dom (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/imagemanager (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/leakchecker (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/mounting (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/observers (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events (= 0.76.5)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/observers/events (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/scheduler (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/observers/events
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-performancetimeline
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/telemetry (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/templateprocessor (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/uimanager (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric/uimanager/consistency (= 0.76.5)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-Fabric/uimanager/consistency (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCommon/turbomodule/core
+ - React-FabricComponents (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components (= 0.76.5)
+ - React-FabricComponents/textlayoutmanager (= 0.76.5)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents/components/inputaccessory (= 0.76.5)
+ - React-FabricComponents/components/iostextinput (= 0.76.5)
+ - React-FabricComponents/components/modal (= 0.76.5)
+ - React-FabricComponents/components/rncore (= 0.76.5)
+ - React-FabricComponents/components/safeareaview (= 0.76.5)
+ - React-FabricComponents/components/scrollview (= 0.76.5)
+ - React-FabricComponents/components/text (= 0.76.5)
+ - React-FabricComponents/components/textinput (= 0.76.5)
+ - React-FabricComponents/components/unimplementedview (= 0.76.5)
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/inputaccessory (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/iostextinput (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/modal (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/rncore (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/safeareaview (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/scrollview (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/text (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/textinput (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/components/unimplementedview (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricComponents/textlayoutmanager (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-cxxreact
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-logger
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-FabricImage (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - RCTRequired (= 0.76.5)
+ - RCTTypeSafety (= 0.76.5)
+ - React-Fabric
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsiexecutor (= 0.76.5)
+ - React-logger
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon
+ - Yoga
+ - React-featureflags (0.76.5)
+ - React-featureflagsnativemodule (0.76.5):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-graphics (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-jsi
+ - React-jsiexecutor
+ - React-utils
+ - React-hermes (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-cxxreact (= 0.76.5)
+ - React-jsi
+ - React-jsiexecutor (= 0.76.5)
+ - React-jsinspector
+ - React-perflogger (= 0.76.5)
+ - React-runtimeexecutor
+ - React-idlecallbacksnativemodule (0.76.5):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - React-ImageManager (0.76.5):
+ - glog
+ - RCT-Folly/Fabric
+ - React-Core/Default
+ - React-debug
+ - React-Fabric
+ - React-graphics
+ - React-rendererdebug
+ - React-utils
+ - React-jserrorhandler (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-cxxreact
+ - React-debug
+ - React-jsi
+ - React-jsi (0.76.5):
+ - boost
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-jsiexecutor (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-cxxreact (= 0.76.5)
+ - React-jsi (= 0.76.5)
+ - React-jsinspector
+ - React-perflogger (= 0.76.5)
+ - React-jsinspector (0.76.5):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-featureflags
+ - React-jsi
+ - React-perflogger (= 0.76.5)
+ - React-runtimeexecutor (= 0.76.5)
+ - React-jsitracing (0.76.5):
+ - React-jsi
+ - React-logger (0.76.5):
+ - glog
+ - React-Mapbuffer (0.76.5):
+ - glog
+ - React-debug
+ - React-microtasksnativemodule (0.76.5):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-blur (4.4.1):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - react-native-menu (1.1.6):
+ - React
+ - react-native-safe-area-context (4.12.0):
+ - React-Core
+ - React-nativeconfig (0.76.5)
+ - React-NativeModulesApple (0.76.5):
+ - glog
+ - hermes-engine
+ - React-callinvoker
+ - React-Core
+ - React-cxxreact
+ - React-jsi
+ - React-jsinspector
+ - React-runtimeexecutor
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - React-perflogger (0.76.5):
+ - DoubleConversion
+ - RCT-Folly (= 2024.01.01.00)
+ - React-performancetimeline (0.76.5):
+ - RCT-Folly (= 2024.01.01.00)
+ - React-cxxreact
+ - React-timing
+ - React-RCTActionSheet (0.76.5):
+ - React-Core/RCTActionSheetHeaders (= 0.76.5)
+ - React-RCTAnimation (0.76.5):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTAnimationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTAppDelegate (0.76.5):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-CoreModules
+ - React-debug
+ - React-defaultsnativemodule
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-hermes
+ - React-nativeconfig
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTImage
+ - React-RCTNetwork
+ - React-rendererdebug
+ - React-RuntimeApple
+ - React-RuntimeCore
+ - React-RuntimeHermes
+ - React-runtimescheduler
+ - React-utils
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTBlob (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-Core/RCTBlobHeaders
+ - React-Core/RCTWebSocket
+ - React-jsi
+ - React-jsinspector
+ - React-NativeModulesApple
+ - React-RCTNetwork
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTFabric (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricComponents
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-jsi
+ - React-jsinspector
+ - React-nativeconfig
+ - React-performancetimeline
+ - React-RCTImage
+ - React-RCTText
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimescheduler
+ - React-utils
+ - Yoga
+ - React-RCTImage (0.76.5):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTImageHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - React-RCTNetwork
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTLinking (0.76.5):
+ - React-Core/RCTLinkingHeaders (= 0.76.5)
+ - React-jsi (= 0.76.5)
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - ReactCommon/turbomodule/core (= 0.76.5)
+ - React-RCTNetwork (0.76.5):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTNetworkHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTSettings (0.76.5):
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTTypeSafety
+ - React-Core/RCTSettingsHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-RCTText (0.76.5):
+ - React-Core/RCTTextHeaders (= 0.76.5)
+ - Yoga
+ - React-RCTVibration (0.76.5):
+ - RCT-Folly (= 2024.01.01.00)
+ - React-Core/RCTVibrationHeaders
+ - React-jsi
+ - React-NativeModulesApple
+ - ReactCodegen
+ - ReactCommon
+ - React-rendererconsistency (0.76.5)
+ - React-rendererdebug (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - RCT-Folly (= 2024.01.01.00)
+ - React-debug
+ - React-rncore (0.76.5)
+ - React-RuntimeApple (0.76.5):
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-callinvoker
+ - React-Core/Default
+ - React-CoreModules
+ - React-cxxreact
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-Mapbuffer
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RuntimeCore
+ - React-runtimeexecutor
+ - React-RuntimeHermes
+ - React-runtimescheduler
+ - React-utils
+ - React-RuntimeCore (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-cxxreact
+ - React-featureflags
+ - React-jserrorhandler
+ - React-jsi
+ - React-jsiexecutor
+ - React-jsinspector
+ - React-performancetimeline
+ - React-runtimeexecutor
+ - React-runtimescheduler
+ - React-utils
+ - React-runtimeexecutor (0.76.5):
+ - React-jsi (= 0.76.5)
+ - React-RuntimeHermes (0.76.5):
+ - hermes-engine
+ - RCT-Folly/Fabric (= 2024.01.01.00)
+ - React-featureflags
+ - React-hermes
+ - React-jsi
+ - React-jsinspector
+ - React-jsitracing
+ - React-nativeconfig
+ - React-RuntimeCore
+ - React-utils
+ - React-runtimescheduler (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker
+ - React-cxxreact
+ - React-debug
+ - React-featureflags
+ - React-jsi
+ - React-performancetimeline
+ - React-rendererconsistency
+ - React-rendererdebug
+ - React-runtimeexecutor
+ - React-timing
+ - React-utils
+ - React-timing (0.76.5)
+ - React-utils (0.76.5):
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-debug
+ - React-jsi (= 0.76.5)
+ - ReactCodegen (0.76.5):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-FabricImage
+ - React-featureflags
+ - React-graphics
+ - React-jsi
+ - React-jsiexecutor
+ - React-NativeModulesApple
+ - React-rendererdebug
+ - React-utils
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - ReactCommon (0.76.5):
+ - ReactCommon/turbomodule (= 0.76.5)
+ - ReactCommon/turbomodule (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.5)
+ - React-cxxreact (= 0.76.5)
+ - React-jsi (= 0.76.5)
+ - React-logger (= 0.76.5)
+ - React-perflogger (= 0.76.5)
+ - ReactCommon/turbomodule/bridging (= 0.76.5)
+ - ReactCommon/turbomodule/core (= 0.76.5)
+ - ReactCommon/turbomodule/bridging (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.5)
+ - React-cxxreact (= 0.76.5)
+ - React-jsi (= 0.76.5)
+ - React-logger (= 0.76.5)
+ - React-perflogger (= 0.76.5)
+ - ReactCommon/turbomodule/core (0.76.5):
+ - DoubleConversion
+ - fmt (= 9.1.0)
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - React-callinvoker (= 0.76.5)
+ - React-cxxreact (= 0.76.5)
+ - React-debug (= 0.76.5)
+ - React-featureflags (= 0.76.5)
+ - React-jsi (= 0.76.5)
+ - React-logger (= 0.76.5)
+ - React-perflogger (= 0.76.5)
+ - React-utils (= 0.76.5)
+ - ReactNativeKeyboardManager (6.5.16-0):
+ - IQKeyboardManagerSwift (= 6.5.16)
+ - React-Core
+ - React-RCTText
+ - ReactNativeUiLib (4.3.2):
+ - React
+ - RecaptchaInterop (100.0.0)
+ - RNCAsyncStorage (1.23.1):
+ - React-Core
+ - RNDateTimePicker (8.2.0):
+ - React-Core
+ - RNFBApp (21.6.1):
+ - Firebase/CoreOnly (= 11.5.0)
+ - React-Core
+ - RNFBAuth (21.6.1):
+ - Firebase/Auth (= 11.5.0)
+ - React-Core
+ - RNFBApp
+ - RNFBCrashlytics (21.6.1):
+ - Firebase/Crashlytics (= 11.5.0)
+ - FirebaseCoreExtension
+ - React-Core
+ - RNFBApp
+ - RNFBFirestore (21.6.1):
+ - Firebase/Firestore (= 11.5.0)
+ - React-Core
+ - RNFBApp
+ - RNFBFunctions (21.6.1):
+ - Firebase/Functions (= 11.5.0)
+ - React-Core
+ - RNFBApp
+ - RNFBStorage (21.6.1):
+ - Firebase/Storage (= 11.5.0)
+ - React-Core
+ - RNFBApp
+ - RNFlashList (1.7.2):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - RNGestureHandler (2.20.2):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - RNReanimated (3.16.3):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - RNReanimated/reanimated (= 3.16.3)
+ - RNReanimated/worklets (= 3.16.3)
+ - Yoga
+ - RNReanimated/reanimated (3.16.3):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - RNReanimated/reanimated/apple (= 3.16.3)
+ - Yoga
+ - RNReanimated/reanimated/apple (3.16.3):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - RNReanimated/worklets (3.16.3):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - RNScreens (4.1.0):
+ - DoubleConversion
+ - glog
+ - hermes-engine
+ - RCT-Folly (= 2024.01.01.00)
+ - RCTRequired
+ - RCTTypeSafety
+ - React-Core
+ - React-debug
+ - React-Fabric
+ - React-featureflags
+ - React-graphics
+ - React-ImageManager
+ - React-NativeModulesApple
+ - React-RCTFabric
+ - React-RCTImage
+ - React-rendererdebug
+ - React-utils
+ - ReactCodegen
+ - ReactCommon/turbomodule/bridging
+ - ReactCommon/turbomodule/core
+ - Yoga
+ - RNSVG (15.8.0):
+ - React-Core
+ - SocketRocket (0.7.1)
+ - Yoga (0.0.0)
+ - ZXingObjC/Core (3.6.9)
+ - ZXingObjC/OneD (3.6.9):
+ - ZXingObjC/Core
+ - ZXingObjC/PDF417 (3.6.9):
+ - ZXingObjC/Core
+
+DEPENDENCIES:
+ - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
+ - BoringSSL-GRPC
+ - BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
+ - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
+ - EASClient (from `../node_modules/expo-eas-client/ios`)
+ - EXApplication (from `../node_modules/expo-application/ios`)
+ - EXConstants (from `../node_modules/expo-constants/ios`)
+ - EXImageLoader (from `../node_modules/expo-image-loader/ios`)
+ - EXJSONUtils (from `../node_modules/expo-json-utils/ios`)
+ - EXManifests (from `../node_modules/expo-manifests/ios`)
+ - EXNotifications (from `../node_modules/expo-notifications/ios`)
+ - Expo (from `../node_modules/expo`)
+ - expo-dev-client (from `../node_modules/expo-dev-client/ios`)
+ - expo-dev-launcher (from `../node_modules/expo-dev-launcher`)
+ - expo-dev-menu (from `../node_modules/expo-dev-menu`)
+ - expo-dev-menu-interface (from `../node_modules/expo-dev-menu-interface/ios`)
+ - ExpoAppleAuthentication (from `../node_modules/expo-apple-authentication/ios`)
+ - ExpoAsset (from `../node_modules/expo-asset/ios`)
+ - ExpoCalendar (from `../node_modules/expo-calendar/ios`)
+ - ExpoCamera (from `../node_modules/expo-camera/ios`)
+ - ExpoCrypto (from `../node_modules/expo-crypto/ios`)
+ - ExpoDevice (from `../node_modules/expo-device/ios`)
+ - ExpoFileSystem (from `../node_modules/expo-file-system/ios`)
+ - ExpoFont (from `../node_modules/expo-font/ios`)
+ - ExpoHaptics (from `../node_modules/expo-haptics/ios`)
+ - ExpoHead (from `../node_modules/expo-router/ios`)
+ - ExpoImagePicker (from `../node_modules/expo-image-picker/ios`)
+ - ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`)
+ - ExpoLinking (from `../node_modules/expo-linking/ios`)
+ - ExpoLocalization (from `../node_modules/expo-localization/ios`)
+ - ExpoModulesCore (from `../node_modules/expo-modules-core`)
+ - ExpoScreenOrientation (from `../node_modules/expo-screen-orientation/ios`)
+ - ExpoSplashScreen (from `../node_modules/expo-splash-screen/ios`)
+ - ExpoSystemUI (from `../node_modules/expo-system-ui/ios`)
+ - ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`)
+ - EXStructuredHeaders (from `../node_modules/expo-structured-headers/ios`)
+ - EXUpdates (from `../node_modules/expo-updates/ios`)
+ - EXUpdatesInterface (from `../node_modules/expo-updates-interface/ios`)
+ - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
+ - fmt (from `../node_modules/react-native/third-party-podspecs/fmt.podspec`)
+ - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
+ - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
+ - IQKeyboardManagerSwift (from `https://github.com/douglasjunior/IQKeyboardManager.git`, branch `react-native-keyboard-manager`)
+ - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
+ - RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
+ - RCTDeprecation (from `../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
+ - RCTRequired (from `../node_modules/react-native/Libraries/Required`)
+ - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
+ - React (from `../node_modules/react-native/`)
+ - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
+ - React-Core (from `../node_modules/react-native/`)
+ - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
+ - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
+ - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
+ - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`)
+ - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`)
+ - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`)
+ - React-Fabric (from `../node_modules/react-native/ReactCommon`)
+ - React-FabricComponents (from `../node_modules/react-native/ReactCommon`)
+ - React-FabricImage (from `../node_modules/react-native/ReactCommon`)
+ - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`)
+ - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`)
+ - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
+ - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
+ - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`)
+ - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
+ - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
+ - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
+ - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
+ - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector-modern`)
+ - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`)
+ - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
+ - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`)
+ - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)
+ - "react-native-blur (from `../node_modules/@react-native-community/blur`)"
+ - "react-native-menu (from `../node_modules/@react-native-menu/menu`)"
+ - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
+ - React-nativeconfig (from `../node_modules/react-native/ReactCommon`)
+ - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`)
+ - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
+ - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`)
+ - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
+ - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
+ - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
+ - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
+ - React-RCTFabric (from `../node_modules/react-native/React`)
+ - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
+ - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
+ - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
+ - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
+ - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
+ - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
+ - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`)
+ - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`)
+ - React-rncore (from `../node_modules/react-native/ReactCommon`)
+ - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`)
+ - React-RuntimeCore (from `../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
+ - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`)
+ - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`)
+ - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`)
+ - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`)
+ - ReactCodegen (from `build/generated/ios`)
+ - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
+ - ReactNativeKeyboardManager (from `../node_modules/react-native-keyboard-manager`)
+ - ReactNativeUiLib (from `../node_modules/react-native-ui-lib`)
+ - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)"
+ - "RNDateTimePicker (from `../node_modules/@react-native-community/datetimepicker`)"
+ - "RNFBApp (from `../node_modules/@react-native-firebase/app`)"
+ - "RNFBAuth (from `../node_modules/@react-native-firebase/auth`)"
+ - "RNFBCrashlytics (from `../node_modules/@react-native-firebase/crashlytics`)"
+ - "RNFBFirestore (from `../node_modules/@react-native-firebase/firestore`)"
+ - "RNFBFunctions (from `../node_modules/@react-native-firebase/functions`)"
+ - "RNFBStorage (from `../node_modules/@react-native-firebase/storage`)"
+ - "RNFlashList (from `../node_modules/@shopify/flash-list`)"
+ - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
+ - RNReanimated (from `../node_modules/react-native-reanimated`)
+ - RNScreens (from `../node_modules/react-native-screens`)
+ - RNSVG (from `../node_modules/react-native-svg`)
+ - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
+
+SPEC REPOS:
+ trunk:
+ - abseil
+ - BoringSSL-GRPC
+ - Firebase
+ - FirebaseAppCheckInterop
+ - FirebaseAuth
+ - FirebaseAuthInterop
+ - FirebaseCore
+ - FirebaseCoreExtension
+ - FirebaseCoreInternal
+ - FirebaseCrashlytics
+ - FirebaseFirestore
+ - FirebaseFirestoreInternal
+ - FirebaseFunctions
+ - FirebaseInstallations
+ - FirebaseMessagingInterop
+ - FirebaseRemoteConfigInterop
+ - FirebaseSessions
+ - FirebaseSharedSwift
+ - FirebaseStorage
+ - GoogleDataTransport
+ - GoogleUtilities
+ - "gRPC-C++"
+ - gRPC-Core
+ - GTMSessionFetcher
+ - leveldb-library
+ - nanopb
+ - PromisesObjC
+ - PromisesSwift
+ - ReachabilitySwift
+ - RecaptchaInterop
+ - SocketRocket
+ - ZXingObjC
+
+EXTERNAL SOURCES:
+ boost:
+ :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
+ BVLinearGradient:
+ :path: "../node_modules/react-native-linear-gradient"
+ DoubleConversion:
+ :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
+ EASClient:
+ :path: "../node_modules/expo-eas-client/ios"
+ EXApplication:
+ :path: "../node_modules/expo-application/ios"
+ EXConstants:
+ :path: "../node_modules/expo-constants/ios"
+ EXImageLoader:
+ :path: "../node_modules/expo-image-loader/ios"
+ EXJSONUtils:
+ :path: "../node_modules/expo-json-utils/ios"
+ EXManifests:
+ :path: "../node_modules/expo-manifests/ios"
+ EXNotifications:
+ :path: "../node_modules/expo-notifications/ios"
+ Expo:
+ :path: "../node_modules/expo"
+ expo-dev-client:
+ :path: "../node_modules/expo-dev-client/ios"
+ expo-dev-launcher:
+ :path: "../node_modules/expo-dev-launcher"
+ expo-dev-menu:
+ :path: "../node_modules/expo-dev-menu"
+ expo-dev-menu-interface:
+ :path: "../node_modules/expo-dev-menu-interface/ios"
+ ExpoAppleAuthentication:
+ :path: "../node_modules/expo-apple-authentication/ios"
+ ExpoAsset:
+ :path: "../node_modules/expo-asset/ios"
+ ExpoCalendar:
+ :path: "../node_modules/expo-calendar/ios"
+ ExpoCamera:
+ :path: "../node_modules/expo-camera/ios"
+ ExpoCrypto:
+ :path: "../node_modules/expo-crypto/ios"
+ ExpoDevice:
+ :path: "../node_modules/expo-device/ios"
+ ExpoFileSystem:
+ :path: "../node_modules/expo-file-system/ios"
+ ExpoFont:
+ :path: "../node_modules/expo-font/ios"
+ ExpoHaptics:
+ :path: "../node_modules/expo-haptics/ios"
+ ExpoHead:
+ :path: "../node_modules/expo-router/ios"
+ ExpoImagePicker:
+ :path: "../node_modules/expo-image-picker/ios"
+ ExpoKeepAwake:
+ :path: "../node_modules/expo-keep-awake/ios"
+ ExpoLinking:
+ :path: "../node_modules/expo-linking/ios"
+ ExpoLocalization:
+ :path: "../node_modules/expo-localization/ios"
+ ExpoModulesCore:
+ :path: "../node_modules/expo-modules-core"
+ ExpoScreenOrientation:
+ :path: "../node_modules/expo-screen-orientation/ios"
+ ExpoSplashScreen:
+ :path: "../node_modules/expo-splash-screen/ios"
+ ExpoSystemUI:
+ :path: "../node_modules/expo-system-ui/ios"
+ ExpoWebBrowser:
+ :path: "../node_modules/expo-web-browser/ios"
+ EXStructuredHeaders:
+ :path: "../node_modules/expo-structured-headers/ios"
+ EXUpdates:
+ :path: "../node_modules/expo-updates/ios"
+ EXUpdatesInterface:
+ :path: "../node_modules/expo-updates-interface/ios"
+ FBLazyVector:
+ :path: "../node_modules/react-native/Libraries/FBLazyVector"
+ fmt:
+ :podspec: "../node_modules/react-native/third-party-podspecs/fmt.podspec"
+ glog:
+ :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
+ hermes-engine:
+ :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
+ :tag: hermes-2024-11-12-RNv0.76.2-5b4aa20c719830dcf5684832b89a6edb95ac3d64
+ IQKeyboardManagerSwift:
+ :branch: react-native-keyboard-manager
+ :git: https://github.com/douglasjunior/IQKeyboardManager.git
+ RCT-Folly:
+ :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
+ RCTDeprecation:
+ :path: "../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation"
+ RCTRequired:
+ :path: "../node_modules/react-native/Libraries/Required"
+ RCTTypeSafety:
+ :path: "../node_modules/react-native/Libraries/TypeSafety"
+ React:
+ :path: "../node_modules/react-native/"
+ React-callinvoker:
+ :path: "../node_modules/react-native/ReactCommon/callinvoker"
+ React-Core:
+ :path: "../node_modules/react-native/"
+ React-CoreModules:
+ :path: "../node_modules/react-native/React/CoreModules"
+ React-cxxreact:
+ :path: "../node_modules/react-native/ReactCommon/cxxreact"
+ React-debug:
+ :path: "../node_modules/react-native/ReactCommon/react/debug"
+ React-defaultsnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults"
+ React-domnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom"
+ React-Fabric:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-FabricComponents:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-FabricImage:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-featureflags:
+ :path: "../node_modules/react-native/ReactCommon/react/featureflags"
+ React-featureflagsnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags"
+ React-graphics:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
+ React-hermes:
+ :path: "../node_modules/react-native/ReactCommon/hermes"
+ React-idlecallbacksnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks"
+ React-ImageManager:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
+ React-jserrorhandler:
+ :path: "../node_modules/react-native/ReactCommon/jserrorhandler"
+ React-jsi:
+ :path: "../node_modules/react-native/ReactCommon/jsi"
+ React-jsiexecutor:
+ :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
+ React-jsinspector:
+ :path: "../node_modules/react-native/ReactCommon/jsinspector-modern"
+ React-jsitracing:
+ :path: "../node_modules/react-native/ReactCommon/hermes/executor/"
+ React-logger:
+ :path: "../node_modules/react-native/ReactCommon/logger"
+ React-Mapbuffer:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-microtasksnativemodule:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
+ react-native-blur:
+ :path: "../node_modules/@react-native-community/blur"
+ react-native-menu:
+ :path: "../node_modules/@react-native-menu/menu"
+ react-native-safe-area-context:
+ :path: "../node_modules/react-native-safe-area-context"
+ React-nativeconfig:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-NativeModulesApple:
+ :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios"
+ React-perflogger:
+ :path: "../node_modules/react-native/ReactCommon/reactperflogger"
+ React-performancetimeline:
+ :path: "../node_modules/react-native/ReactCommon/react/performance/timeline"
+ React-RCTActionSheet:
+ :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
+ React-RCTAnimation:
+ :path: "../node_modules/react-native/Libraries/NativeAnimation"
+ React-RCTAppDelegate:
+ :path: "../node_modules/react-native/Libraries/AppDelegate"
+ React-RCTBlob:
+ :path: "../node_modules/react-native/Libraries/Blob"
+ React-RCTFabric:
+ :path: "../node_modules/react-native/React"
+ React-RCTImage:
+ :path: "../node_modules/react-native/Libraries/Image"
+ React-RCTLinking:
+ :path: "../node_modules/react-native/Libraries/LinkingIOS"
+ React-RCTNetwork:
+ :path: "../node_modules/react-native/Libraries/Network"
+ React-RCTSettings:
+ :path: "../node_modules/react-native/Libraries/Settings"
+ React-RCTText:
+ :path: "../node_modules/react-native/Libraries/Text"
+ React-RCTVibration:
+ :path: "../node_modules/react-native/Libraries/Vibration"
+ React-rendererconsistency:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency"
+ React-rendererdebug:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/debug"
+ React-rncore:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-RuntimeApple:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime/platform/ios"
+ React-RuntimeCore:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimeexecutor:
+ :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
+ React-RuntimeHermes:
+ :path: "../node_modules/react-native/ReactCommon/react/runtime"
+ React-runtimescheduler:
+ :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler"
+ React-timing:
+ :path: "../node_modules/react-native/ReactCommon/react/timing"
+ React-utils:
+ :path: "../node_modules/react-native/ReactCommon/react/utils"
+ ReactCodegen:
+ :path: build/generated/ios
+ ReactCommon:
+ :path: "../node_modules/react-native/ReactCommon"
+ ReactNativeKeyboardManager:
+ :path: "../node_modules/react-native-keyboard-manager"
+ ReactNativeUiLib:
+ :path: "../node_modules/react-native-ui-lib"
+ RNCAsyncStorage:
+ :path: "../node_modules/@react-native-async-storage/async-storage"
+ RNDateTimePicker:
+ :path: "../node_modules/@react-native-community/datetimepicker"
+ RNFBApp:
+ :path: "../node_modules/@react-native-firebase/app"
+ RNFBAuth:
+ :path: "../node_modules/@react-native-firebase/auth"
+ RNFBCrashlytics:
+ :path: "../node_modules/@react-native-firebase/crashlytics"
+ RNFBFirestore:
+ :path: "../node_modules/@react-native-firebase/firestore"
+ RNFBFunctions:
+ :path: "../node_modules/@react-native-firebase/functions"
+ RNFBStorage:
+ :path: "../node_modules/@react-native-firebase/storage"
+ RNFlashList:
+ :path: "../node_modules/@shopify/flash-list"
+ RNGestureHandler:
+ :path: "../node_modules/react-native-gesture-handler"
+ RNReanimated:
+ :path: "../node_modules/react-native-reanimated"
+ RNScreens:
+ :path: "../node_modules/react-native-screens"
+ RNSVG:
+ :path: "../node_modules/react-native-svg"
+ Yoga:
+ :path: "../node_modules/react-native/ReactCommon/yoga"
+
+CHECKOUT OPTIONS:
+ IQKeyboardManagerSwift:
+ :commit: 718cbed77cdd5ecd8b779afe543ba5b2df45b40a
+ :git: https://github.com/douglasjunior/IQKeyboardManager.git
+
+SPEC CHECKSUMS:
+ abseil: d121da9ef7e2ff4cab7666e76c5a3e0915ae08c3
+ boost: 1dca942403ed9342f98334bf4c3621f011aa7946
+ BoringSSL-GRPC: ca6a8e5d04812fce8ffd6437810c2d46f925eaeb
+ BVLinearGradient: cb006ba232a1f3e4f341bb62c42d1098c284da70
+ DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385
+ EASClient: d15d70e334b019ae5649609011cda761defe4b1a
+ EXApplication: 88ebf1a95f85faa5d2df160016d61f2d060e9438
+ EXConstants: 277129d9a42ba2cf1fad375e7eaa9939005c60be
+ EXImageLoader: e5da974e25b13585c196b658a440720c075482d5
+ EXJSONUtils: 01fc7492b66c234e395dcffdd5f53439c5c29c93
+ EXManifests: 8de88191fe548cd5aeafa4228ed92283b483b923
+ EXNotifications: 23f1620b7aab8a5c0566224cf555bcd3261c8bd5
+ Expo: a68bbe94f5cbf55c2d30178942cfd215a59e914f
+ expo-dev-client: 6c1b998cb4ef67f528138c0e46df793848c9b1ee
+ expo-dev-launcher: f4762cf64dba8ef5a8673f267ed71d90180020bb
+ expo-dev-menu: 50c0a1a19990f16c605db6890087b974651f4713
+ expo-dev-menu-interface: 4baf2f8b3b79ce37cf4b900e4b3ba6df3384f0a1
+ ExpoAppleAuthentication: 97195d0bb6676f83160b6a9fad020e90116319b9
+ ExpoAsset: 6f7a8887cbb9fb39fdb0808e7f6f74ba0e1ae9b6
+ ExpoCalendar: ac4cd16664d204d747b62f9f867f60e7dceaf4d4
+ ExpoCamera: bf2b44c5ab59e06431cf33f14f7e4015ce9ba4f0
+ ExpoCrypto: 483fc758365923f89ddaab4327c21cae9534841d
+ ExpoDevice: 449822f2c45660c1ce83283dd51c67fe5404996c
+ ExpoFileSystem: 6774e1aa2d3c7edfde11855cf5c635a3565a4918
+ ExpoFont: 12b0217e42ac97029d0f317f0486039a8508cf52
+ ExpoHaptics: f8eacde90398b8be3648ed823b6e9e6bf87ece3f
+ ExpoHead: 0a8bb3bdc603d2249e7a590a969310230ed1b389
+ ExpoImagePicker: 4eff722eec3f969b3978a8a3b64efbe52f800905
+ ExpoKeepAwake: 22173f45d767c7d37403fdf48292726901d69ce7
+ ExpoLinking: 40e30b571ffb77b280a38bed137d89b21f46f2a0
+ ExpoLocalization: d81f70d53db94b31e4a0b1e11007424ea1011a1c
+ ExpoModulesCore: f14bb59adb6c74a096ad0f4d5c259584248994d4
+ ExpoScreenOrientation: 4aec74c6d06be69bce64096978ddaf2313e5deaa
+ ExpoSplashScreen: b7d41a3769736c141e6f49780791e8757bc7ab09
+ ExpoSystemUI: 778d700c6f38d3d7b8794460f50c1ca05c4f7462
+ ExpoWebBrowser: b658ba8a9161f1b54afb279591cfce2cb73330fa
+ EXStructuredHeaders: 09c70347b282e3d2507e25fb4c747b1b885f87f6
+ EXUpdates: da6f0dfa30391fa631d47b5f24e6a2c792dc85c8
+ EXUpdatesInterface: 7c977640bdd8b85833c19e3959ba46145c5719db
+ FBLazyVector: 1bf99bb46c6af9a2712592e707347315f23947aa
+ Firebase: 7a56fe4f56b5ab81b86a6822f5b8f909ae6fc7e2
+ FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b
+ FirebaseAuth: d8ad770642af39d1be932094be5f5230efb0ea74
+ FirebaseAuthInterop: a919d415797d23b7bfe195a04f322b86c65020ef
+ FirebaseCore: 93abc05437f8064cd2bc0a53b768fb0bc5a1d006
+ FirebaseCoreExtension: ddb2eb987f736b714d30f6386795b52c4670439e
+ FirebaseCoreInternal: f47dd28ae7782e6a4738aad3106071a8fe0af604
+ FirebaseCrashlytics: 94c11c3bf296fde8c18f2c9f8e76bd9349227038
+ FirebaseFirestore: 3f59cb7b6f62b362886743d4c92e83a66b5e0a5d
+ FirebaseFirestoreInternal: d8d71a7f27834573404834172886183f1cd48c3d
+ FirebaseFunctions: 302356b97cd56d1d95dc9aca0ddcb0f1e0443b0c
+ FirebaseInstallations: d8063d302a426d114ac531cd82b1e335a0565745
+ FirebaseMessagingInterop: d768073b71144b7bceadfec019d3dc49c743d53e
+ FirebaseRemoteConfigInterop: e75e348953352a000331eb77caf01e424248e176
+ FirebaseSessions: b252b3f91a51186188882ea8e7e1730fc1eee391
+ FirebaseSharedSwift: a4e5dfca3e210633bb3a3dfb94176c019211948b
+ FirebaseStorage: 4e521b5c833f0f3d488dcbde0c72044d02c59146
+ fmt: 10c6e61f4be25dc963c36bd73fc7b1705fe975be
+ glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a
+ GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
+ GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
+ "gRPC-C++": 2fa52b3141e7789a28a737f251e0c45b4cb20a87
+ gRPC-Core: a27c294d6149e1c39a7d173527119cfbc3375ce4
+ GTMSessionFetcher: 923b710231ad3d6f3f0495ac1ced35421e07d9a6
+ hermes-engine: 06a9c6900587420b90accc394199527c64259db4
+ IQKeyboardManagerSwift: 90ba81812fbbd6694924a95a271fa3affdf04a14
+ leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19
+ nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
+ PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
+ PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
+ RCT-Folly: 84578c8756030547307e4572ab1947de1685c599
+ RCTDeprecation: fb7d408617e25d7f537940000d766d60149c5fea
+ RCTRequired: 9aaf0ffcc1f41f0c671af863970ef25c422a9920
+ RCTTypeSafety: e9a6e7d48184646eb0610295b74c0dd02768cbb2
+ ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
+ React: fffb3cf1b0d7aee03c4eb4952b2d58783615e9fa
+ React-callinvoker: 3c6ecc0315d42924e01b3ddc25cf2e49d33da169
+ React-Core: 1a5ddefb00dd72644171dd39bb4bbcd7849c70f0
+ React-CoreModules: 8de64f712fe272ed08f37aaf64633ddf793e70d3
+ React-cxxreact: e204185e1da1c843fec2bbb10bcc5b5800355dfa
+ React-debug: 02462c1bc08dae8a2994d1e710adba02c299724c
+ React-defaultsnativemodule: 57697530c24cf9c66ee6b8ccd836e16cd807b5ff
+ React-domnativemodule: a7765305675950ef69d1ec9f16d26692edc0136e
+ React-Fabric: dec910113e66ecc0bb01ca0450a670057913ea2b
+ React-FabricComponents: 39972a33b0aa0f497c8884904a9d34058c647e1d
+ React-FabricImage: 3bec45a3f523ae88bf94c67a483c1b0e055d0976
+ React-featureflags: 7c440ac7e6bf5f691a39178a3dec335dcca19760
+ React-featureflagsnativemodule: 4a1f4ac4e03c71d3c1f0bd369ce9bc6c409396bf
+ React-graphics: e36611400a08814f80b1496fa3e44cb2f4cb212d
+ React-hermes: a12bf33d9915dbe2dcde5b6b781faab6684883fb
+ React-idlecallbacksnativemodule: c0ecc1ae8ef566d3ea5da5fcaa24b120b0652ab8
+ React-ImageManager: c90a16c0b5c9fdaa82d318bf3244f46cc6df4514
+ React-jserrorhandler: 82a56fdcfb3a014915d75f0d14db8f82fcb87b16
+ React-jsi: 217274301608d7fa529bd275c73020b55cf39361
+ React-jsiexecutor: 1bcbc63a8c1d698b35c9fb521ee87aa48a3702d2
+ React-jsinspector: a84b39d1cda7843770c36f11ab370ba33b3f83cc
+ React-jsitracing: 9a32b035bd6399ddc5230bfb8b288d4488c5076c
+ React-logger: ae95f0effa7e1791bd6f7283caddca323d4fbc1e
+ React-Mapbuffer: f0c766c9dfb313c91b07457beb4e4ec9b2e02435
+ React-microtasksnativemodule: 2b269ab96f8d54e52c4534d1cf8012879663a28c
+ react-native-blur: aeda95624971b20d19c6c0fb291c411056e6d270
+ react-native-menu: 6eb1bc1cffd6f3f29e0d33f0326552f805637b9c
+ react-native-safe-area-context: 8b8404e70b0cbf2a56428a17017c14c1dcc16448
+ React-nativeconfig: 565ebf4340d9ede95b523f0e3640f48286985ef5
+ React-NativeModulesApple: 6ec0cac27d99644895c1c22b2b7a33441854a539
+ React-perflogger: 16e049953d21b37e9871ddf0b02f414e12ff14ba
+ React-performancetimeline: 1bd17418509e56758a1b4a363f75ffb17449eafa
+ React-RCTActionSheet: a4388035260b01ac38d3647da0433b0455da9bae
+ React-RCTAnimation: 9cc9e88ec5f94d573d3b5d5d9702f47774d8603c
+ React-RCTAppDelegate: 4a6d8313ccf569e49e0374ae85cc17698823e7d0
+ React-RCTBlob: f879b05cf702dd4099054c3c3bf05bd4757de701
+ React-RCTFabric: 480655dbfc22b45e6542e1e224fa19e2968f3962
+ React-RCTImage: 8fc2b137d17fb8756cdba38d74f4d40fb9499dee
+ React-RCTLinking: e691e89d8658aaa772c59084a45a96e8c9ef8df1
+ React-RCTNetwork: 749cb659702c3faf3efecfcb982150be0f2c834a
+ React-RCTSettings: 60c431627d37e6d996e0f61a9e84df8e41d898cb
+ React-RCTText: 74cc248bf8d2f6d07beb6196aa4c7055b3eb1a51
+ React-RCTVibration: 81ff3704c7ed66a99e2670167252fd0e9a10980b
+ React-rendererconsistency: daabe06163f9fcef3a3d25883eddc7115098b3b0
+ React-rendererdebug: 215df454a5d1cb3734c8438356302c8031de5d7a
+ React-rncore: 621a7b222dda9fe85a9922cb88d5e1ddcbd0e12b
+ React-RuntimeApple: 904dc291cd40fa9c616115e7f245b02e8b093145
+ React-RuntimeCore: 68a937463999e07447269d106a4c6891c83ddd39
+ React-runtimeexecutor: 10fae9492194097c99f6e34cedbb42a308922d32
+ React-RuntimeHermes: 9820773d433a8b8f7e47c5b589cd1c64c1003ad2
+ React-runtimescheduler: e20a7a00b1bf8cd15e564474e7fd175e19b1d383
+ React-timing: 0287e530587639771ca7eb52e2ca897f5755be53
+ React-utils: 89a30618bd38c591900879825de59104ded1e246
+ ReactCodegen: 28abe92ea9a1e277edc25d02d7d53ab3acf5cc07
+ ReactCommon: 7da12c0f59956995a153de45835b64c89e0a4a57
+ ReactNativeKeyboardManager: 5abe57da962b386508945888c75abee4b93f382d
+ ReactNativeUiLib: 4990e6d7c99b57513540f317b5fb560eacb8fbb5
+ RecaptchaInterop: 7d1a4a01a6b2cb1610a47ef3f85f0c411434cb21
+ RNCAsyncStorage: aa75595c1aefa18f868452091fa0c411a516ce11
+ RNDateTimePicker: 818460dc31b0dc5ec58289003e27dd8d022fb79c
+ RNFBApp: 72b96921c64702d51eca9f3ed579c1777efd0d7e
+ RNFBAuth: db39dbf0c9f10c50da349519551149a09dbb3656
+ RNFBCrashlytics: 22223ee96beba1130c8906253f5b900f629c2926
+ RNFBFirestore: d13b3429d574c8bb69867f08a8411b7c789bb492
+ RNFBFunctions: f117db5e99cfb64a40211dfc36b257ee8facf337
+ RNFBStorage: dcb4de202231f31ce5782732ccb725b302de54a3
+ RNFlashList: a826a72577131c42a7d27e04f194f9b6bfb0c125
+ RNGestureHandler: 987692c2cbd41ad765a9195675f96b65ab1c0c99
+ RNReanimated: f858cf8b4a9a47c8b190347c1a8dacbeab4a3255
+ RNScreens: 3ae60e6b62aabe98bba1f874fec15eaa453ad2d2
+ RNSVG: 8542aa11770b27563714bbd8494a8436385fc85f
+ SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
+ Yoga: 7548e4449365bf0ef60db4aefe58abff37fcabec
+ ZXingObjC: 8898711ab495761b2dbbdec76d90164a6d7e14c5
+
+PODFILE CHECKSUM: 38667d7f148920d0676457550577e3307724328d
+
+COCOAPODS: 1.16.2
diff --git a/package.json b/package.json
index ab7fdf1..0a07608 100644
--- a/package.json
+++ b/package.json
@@ -90,7 +90,6 @@
"react": "18.3.1",
"react-dom": "18.3.1",
"react-native": "0.76.5",
- "react-native-big-calendar": "^4.15.1",
"react-native-calendars": "^1.1306.0",
"react-native-element-dropdown": "^2.12.2",
"react-native-gesture-handler": "~2.20.2",
diff --git a/patches/@howljs+calendar-kit+2.2.1.patch b/patches/@howljs+calendar-kit+2.2.1.patch
new file mode 100644
index 0000000..4cca47b
--- /dev/null
+++ b/patches/@howljs+calendar-kit+2.2.1.patch
@@ -0,0 +1,148 @@
+diff --git a/node_modules/@howljs/calendar-kit/src/hooks/useSyncedList.tsx b/node_modules/@howljs/calendar-kit/src/hooks/useSyncedList.tsx
+index 2c2d340..c27d395 100644
+--- a/node_modules/@howljs/calendar-kit/src/hooks/useSyncedList.tsx
++++ b/node_modules/@howljs/calendar-kit/src/hooks/useSyncedList.tsx
+@@ -40,12 +40,12 @@ const useSyncedList = ({ id }: { id: ScrollType }) => {
+
+ const _onMomentumEnd = () => {
+ if (
+- isTriggerMomentum.current &&
+- startDateUnix.current !== visibleDateUnix.current
++ isTriggerMomentum.current &&
++ startDateUnix.current !== visibleDateUnix.current
+ ) {
+ triggerDateChanged.current = undefined;
+ onDateChanged?.(
+- dateTimeToISOString(parseDateTime(visibleDateUnix.current))
++ dateTimeToISOString(parseDateTime(visibleDateUnix.current))
+ );
+ notifyDateChanged(visibleDateUnix.current);
+ isTriggerMomentum.current = false;
+@@ -83,71 +83,70 @@ const useSyncedList = ({ id }: { id: ScrollType }) => {
+ });
+
+ const onVisibleColumnChanged = useCallback(
+- (props: {
+- index: number;
+- column: number;
+- columns: number;
+- offset: number;
+- extraScrollData: Record;
+- }) => {
+- const { index: pageIndex, column, columns, extraScrollData } = props;
+- const { visibleColumns, visibleDates } = extraScrollData;
++ (props: {
++ index: number;
++ column: number;
++ columns: number;
++ offset: number;
++ extraScrollData: Record;
++ }) => {
++ const { index: pageIndex, column, columns, extraScrollData } = props;
++ const { visibleColumns, visibleDates } = extraScrollData;
+
+- if (scrollType.current === id && visibleColumns && visibleDates) {
+- const dayIndex = pageIndex * columns + column;
+- const visibleStart = visibleDates[pageIndex * columns];
+- const visibleEnd =
+- visibleDates[pageIndex * columns + column + visibleColumns];
++ if (scrollType.current === id && visibleColumns && visibleDates) {
++ const dayIndex = pageIndex * columns + column;
++ const visibleStart = visibleDates[pageIndex * columns];
++ const visibleEnd =
++ visibleDates[pageIndex * columns + column + visibleColumns];
+
+- if (visibleStart && visibleEnd) {
+- const diffDays = Math.floor(
+- (visibleEnd - visibleStart) / MILLISECONDS_IN_DAY
+- );
+- if (diffDays <= 7) {
+- visibleWeeks.value = [visibleStart];
+- } else {
+- const nextWeekStart = visibleDates[pageIndex * columns + 7];
+- if (nextWeekStart) {
+- visibleWeeks.value = [visibleStart, nextWeekStart];
++ if (visibleStart && visibleEnd) {
++ const diffDays = Math.floor(
++ (visibleEnd - visibleStart) / MILLISECONDS_IN_DAY
++ );
++ if (diffDays <= 7) {
++ visibleWeeks.value = [visibleStart];
++ } else {
++ const nextWeekStart = visibleDates[pageIndex * columns + 7];
++ if (nextWeekStart) {
++ visibleWeeks.value = [visibleStart, nextWeekStart];
++ }
+ }
+ }
+- }
+-
+- const currentDate = visibleDates[dayIndex];
+- if (!currentDate) {
+- triggerDateChanged.current = undefined;
+- return;
+- }
+
+- if (visibleDateUnix.current !== currentDate) {
+- const dateIsoStr = dateTimeToISOString(parseDateTime(currentDate));
+- onChange?.(dateIsoStr);
+- if (
+- triggerDateChanged.current &&
+- triggerDateChanged.current === currentDate
+- ) {
++ const currentDate = visibleDates[dayIndex];
++ if (!currentDate) {
+ triggerDateChanged.current = undefined;
+- onDateChanged?.(dateIsoStr);
+- notifyDateChanged(currentDate);
++ return;
++ }
++
++ if (visibleDateUnix.current !== currentDate) {
++ const dateIsoStr = dateTimeToISOString(parseDateTime(currentDate));
++ onChange?.(dateIsoStr);
++ if (
++ triggerDateChanged?.current === currentDate
++ ) {
++ triggerDateChanged.current = undefined;
++ onDateChanged?.(dateIsoStr);
++ notifyDateChanged(currentDate);
++ }
++ visibleDateUnix.current = currentDate;
++ runOnUI(() => {
++ visibleDateUnixAnim.value = currentDate;
++ })();
+ }
+- visibleDateUnix.current = currentDate;
+- runOnUI(() => {
+- visibleDateUnixAnim.value = currentDate;
+- })();
+ }
+- }
+- },
+- [
+- scrollType,
+- id,
+- visibleDateUnix,
+- visibleWeeks,
+- triggerDateChanged,
+- onChange,
+- onDateChanged,
+- notifyDateChanged,
+- visibleDateUnixAnim,
+- ]
++ },
++ [
++ scrollType,
++ id,
++ visibleDateUnix,
++ visibleWeeks,
++ triggerDateChanged,
++ onChange,
++ onDateChanged,
++ notifyDateChanged,
++ visibleDateUnixAnim,
++ ]
+ );
+
+ return { onScroll, onVisibleColumnChanged };
diff --git a/patches/react-native-big-calendar+4.15.1.patch b/patches/react-native-big-calendar+4.15.1.patch
deleted file mode 100644
index 59c0912..0000000
--- a/patches/react-native-big-calendar+4.15.1.patch
+++ /dev/null
@@ -1,195 +0,0 @@
-diff --git a/node_modules/react-native-big-calendar/build/index.js b/node_modules/react-native-big-calendar/build/index.js
-index 848ceba..f326b8e 100644
---- a/node_modules/react-native-big-calendar/build/index.js
-+++ b/node_modules/react-native-big-calendar/build/index.js
-@@ -9,6 +9,17 @@ var isoWeek = require('dayjs/plugin/isoWeek');
- var React = require('react');
- var reactNative = require('react-native');
- var calendarize = require('calendarize');
-+var {
-+ startOfDay,
-+ endOfDay,
-+ startOfWeek,
-+ isAfter,
-+ isBefore,
-+ isSameDay,
-+ differenceInDays,
-+ add,
-+ getTime
-+} = require('date-fns');
-
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
-
-@@ -1000,87 +1011,91 @@ function _CalendarBodyForMonthView(_a) {
- var start = _a.start, end = _a.end;
- return day.isBetween(dayjs__default["default"](start).startOf('day'), dayjs__default["default"](end).endOf('day'), null, '[)');
- });
-- }
-- else {
-- /**
-- * Better way to sort overlapping events that spans accross multiple days
-- * For example, if you want following events
-- * Event 1, start = 01/01 12:00, end = 02/01 12:00
-- * Event 2, start = 02/01 12:00, end = 03/01 12:00
-- * Event 3, start = 03/01 12:00, end = 04/01 12:00
-- *
-- * When drawing calendar in month view, event 3 should be placed at 3rd index for 03/01, because Event 2 are placed at 2nd index for 02/01 and 03/01
-- *
-- */
-- var min_1 = day.startOf('day'), max_1 = day.endOf('day');
-- //filter all events that starts from the current week until the current day, and sort them by reverse starting time
-- var filteredEvents_1 = events
-- .filter(function (_a) {
-- var start = _a.start, end = _a.end;
-- return dayjs__default["default"](end).isAfter(day.startOf('week')) && dayjs__default["default"](start).isBefore(max_1);
-- })
-- .sort(function (a, b) {
-- if (dayjs__default["default"](a.start).isSame(b.start, 'day')) {
-- var aDuration = dayjs__default["default"].duration(dayjs__default["default"](a.end).diff(dayjs__default["default"](a.start))).days();
-- var bDuration = dayjs__default["default"].duration(dayjs__default["default"](b.end).diff(dayjs__default["default"](b.start))).days();
-- return aDuration - bDuration;
-- }
-- return b.start.getTime() - a.start.getTime();
-+ } else {
-+ // Convert day once and cache all the commonly used dates/times
-+ const jsDay = day?.toDate?.() || day;
-+ const weekStart = startOfWeek(jsDay);
-+ var min_1 = startOfDay(jsDay);
-+ var max_1 = endOfDay(jsDay);
-+ const max1Time = getTime(max_1);
-+ const min1Time = getTime(min_1);
-+
-+ // Pre-process events with dates and cache timestamps
-+ const processedEvents = events.map(event => {
-+ const startDay = event.start?.toDate?.() || new Date(event.start);
-+ const endDay = event.end?.toDate?.() || new Date(event.end);
-+ return {
-+ ...event,
-+ startDay,
-+ endDay,
-+ startTime: getTime(startDay),
-+ endTime: getTime(endDay),
-+ startDayStart: startOfDay(startDay)
-+ };
- });
-- /**
-- * find the most relevant min date to filter the events
-- * in the example:
-- * 1. when rendering for 01/01, min date will be 01/01 (start of day for event 1)
-- * 2. when rendering for 02/01, min date will be 01/01 (start of day for event 1)
-- * 3. when rendering for 03/01, min date will be 01/01 (start of day for event 1)
-- * 4. when rendering for 04/01, min date will be 01/01 (start of day for event 1)
-- * 5. when rendering for 05/01, min date will be 05/01 (no event overlaps with 05/01)
-- */
-- filteredEvents_1.forEach(function (_a) {
-- var start = _a.start, end = _a.end;
-- if (dayjs__default["default"](end).isAfter(min_1) && dayjs__default["default"](start).isBefore(min_1)) {
-- min_1 = dayjs__default["default"](start).startOf('day');
-+
-+ // Filter events within the weekly range and sort by reverse start time
-+ let filteredEvents_1 = processedEvents
-+ .filter(({ startTime, endTime }) =>
-+ endTime > getTime(weekStart) && startTime < max1Time
-+ )
-+ .sort((a, b) => {
-+ if (isSameDay(a.startDay, b.startDay)) {
-+ // Pre-calculate durations since they're used in sorting
-+ const aDuration = differenceInDays(a.endDay, a.startDay);
-+ const bDuration = differenceInDays(b.endDay, b.startDay);
-+ return bDuration - aDuration;
-+ }
-+ return b.startTime - a.startTime;
-+ });
-+
-+ // Update min_1 to the earliest startDay for overlapping events
-+ for (const event of filteredEvents_1) {
-+ if (event.endTime > min1Time && event.startTime < min1Time) {
-+ min_1 = event.startDayStart;
-+ break; // We only need the first one due to the sort order
- }
-- });
-+ }
-+
-+ // Filter to keep only events that overlap the min to max range, then reverse
-+ const min1TimeUpdated = getTime(min_1);
- filteredEvents_1 = filteredEvents_1
-- .filter(function (_a) {
-- var start = _a.start, end = _a.end;
-- return dayjs__default["default"](end).endOf('day').isAfter(min_1) && dayjs__default["default"](start).isBefore(max_1);
-- })
-+ .filter(({ startTime, endDay }) =>
-+ getTime(endOfDay(endDay)) > min1TimeUpdated && startTime < max1Time
-+ )
- .reverse();
-- /**
-- * We move eligible event to the top
-- * For example, when rendering for 03/01, Event 3 should be moved to the top, since there is a gap left by Event 1
-- */
-- var finalEvents_1 = [];
-- var tmpDay_1 = day.startOf('week');
-- //re-sort events from the start of week until the calendar cell date
-- //optimize sorting of event nodes and make sure that no empty gaps are left on top of calendar cell
-- while (!tmpDay_1.isAfter(day)) {
-- filteredEvents_1.forEach(function (event) {
-- if (dayjs__default["default"](event.end).isBefore(tmpDay_1.startOf('day'))) {
-- var eventToMoveUp = filteredEvents_1.find(function (e) {
-- return dayjs__default["default"](e.start).startOf('day').isSame(tmpDay_1.startOf('day'));
-- });
-- if (eventToMoveUp != undefined) {
-- //remove eventToMoveUp from finalEvents first
-- if (finalEvents_1.indexOf(eventToMoveUp) > -1) {
-- finalEvents_1.splice(finalEvents_1.indexOf(eventToMoveUp), 1);
-- }
-- if (finalEvents_1.indexOf(event) > -1) {
-- finalEvents_1.splice(finalEvents_1.indexOf(event), 1, eventToMoveUp);
-- }
-- else {
-+
-+ // Move eligible events to the top, preventing duplicate entries
-+ const finalEvents_1 = [];
-+ const seenEvents = new Set(); // Use Set for faster lookups
-+ let tmpDay_1 = weekStart;
-+
-+ while (!isAfter(tmpDay_1, jsDay)) {
-+ const tmpDayTime = getTime(tmpDay_1);
-+
-+ for (const event of filteredEvents_1) {
-+ const eventEndDayTime = getTime(startOfDay(event.endDay));
-+
-+ if (!seenEvents.has(event)) {
-+ if (eventEndDayTime < tmpDayTime) {
-+ // Find event starting on tmpDay
-+ const eventToMoveUp = filteredEvents_1.find(e =>
-+ isSameDay(e.startDayStart, tmpDay_1)
-+ );
-+ if (eventToMoveUp && !seenEvents.has(eventToMoveUp)) {
- finalEvents_1.push(eventToMoveUp);
-+ seenEvents.add(eventToMoveUp);
- }
-+ } else {
-+ finalEvents_1.push(event);
-+ seenEvents.add(event);
- }
- }
-- else if (finalEvents_1.indexOf(event) == -1) {
-- finalEvents_1.push(event);
-- }
-- });
-- tmpDay_1 = tmpDay_1.add(1, 'day');
-+ }
-+ tmpDay_1 = add(tmpDay_1, { days: 1 });
- }
-+
-+ console.log(finalEvents_1);
- return finalEvents_1;
- }
- }, [events, sortedMonthView]);
-@@ -1311,7 +1326,7 @@ function _CalendarHeader(_a) {
- !stringHasContent(dayHeaderHighlightColor) &&
- u['mt-6'],
- ] }, date.format('D')))),
-- showAllDayEventCell ? (React__namespace.createElement(reactNative.View, { style: [
-+ showAllDayEventCell ? (React__namespace.createElement(reactNative.ScrollView, { style: [
- u['border-l'],
- { borderColor: theme.palette.gray['200'] },
- { height: cellHeight },
diff --git a/yarn.lock b/yarn.lock
index 22b15a4..6dfe9a3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4394,11 +4394,6 @@ cacache@^18.0.2:
tar "^6.1.11"
unique-filename "^3.0.0"
-calendarize@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/calendarize/-/calendarize-1.1.1.tgz#0fa8b8de6b5e6ff9f9fbb89cc3a8c01aace291c2"
- integrity sha512-C2JyBAtNp2NG4DX4fA1EILggLt/5PlYzvQR0crHktoAPBc9TlIfdhzg7tWekCbe+pH6+9qoK+FhPbi+vYJJlqw==
-
call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
@@ -5005,7 +5000,7 @@ date-fns@^3.6.0:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-3.6.0.tgz#f20ca4fe94f8b754951b24240676e8618c0206bf"
integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==
-dayjs@^1.11.13, dayjs@^1.8.15:
+dayjs@^1.8.15:
version "1.11.13"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
@@ -9618,14 +9613,6 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-native-big-calendar@^4.15.1:
- version "4.15.1"
- resolved "https://registry.yarnpkg.com/react-native-big-calendar/-/react-native-big-calendar-4.15.1.tgz#9cfef290e40a51cbc59b1be4d065804b21f2f74f"
- integrity sha512-hNrzkM+9Kb2T0J/1fW9AMaeN+AuhakCfNtQPaQL29l3JXgOO14ikJ3iPqQkmNVbuiWYiMrpI25hrmXffiOVIgQ==
- dependencies:
- calendarize "^1.1.1"
- dayjs "^1.11.13"
-
react-native-calendars@^1.1306.0:
version "1.1307.0"
resolved "https://registry.yarnpkg.com/react-native-calendars/-/react-native-calendars-1.1307.0.tgz#2cb8c5abd322037e9b3ef5605afa86f25347068f"