/* eslint-enable react-native/no-unused-styles */
import React, { useMemo } from "react";
import { View, StyleSheet } from "react-native";
import { FocusableGroup } from "@applicaster/zapp-react-native-ui-components/Components/FocusableGroup";
import { platformSelect } from "@applicaster/zapp-react-native-utils/reactUtils";
import { useNavigation } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
import { withNestedNavigationContextProvider } from "@applicaster/zapp-react-native-ui-components/Contexts/NestedNavigationContext";
const getStyles = () => {
return StyleSheet.create({
tabContent: platformSelect({
tvos: {
flex: 1,
zIndex: -1,
marginLeft: 1,
paddingLeft: 1,
},
}),
tabContentFocusableGroup: platformSelect({
tvos: {
width: "100%",
height: "100%",
// hack to limit the size of the screen container for tvos, so it doesn't intercept the focus from tabs when navigating down
borderWidth: StyleSheet.hairlineWidth,
borderColor: "transparent",
},
}),
});
};
const FocusableWrapper = ({ groupId, id, parentFocus, children }) => {
const { tabContent, tabContentFocusableGroup } = useMemo(
() => getStyles(),
[]
);
return platformSelect({
android_tv: <>{children}>,
default: (
{children}
),
});
};
const TabContentComponent = ({
Component,
groupId,
id,
entry,
parentFocus,
}: TabContentProps) => {
const navigator = useNavigation();
const nestedEntry = navigator.getNestedEntry();
const isContextUptoDate = nestedEntry?.id === entry?.id;
return isContextUptoDate && Component ? (
) : null;
};
export const TabContent =
withNestedNavigationContextProvider(TabContentComponent);