'use client'; import type { CodegenTypes as CT, ViewProps, HostComponent, } from 'react-native'; import { codegenNativeCommands, codegenNativeComponent } from 'react-native'; // eslint-disable-next-line @typescript-eslint/ban-types type GenericEmptyEvent = Readonly<{}>; type DisplayModeWillChangeEvent = { currentDisplayMode: string; nextDisplayMode: string; }; type SplitViewDisplayModeButtonVisibility = 'always' | 'automatic' | 'never'; type SplitViewSplitBehavior = 'automatic' | 'displace' | 'overlay' | 'tile'; type SplitViewPrimaryEdge = 'leading' | 'trailing'; type SplitViewDisplayMode = | 'automatic' | 'secondaryOnly' | 'oneBesideSecondary' | 'oneOverSecondary' | 'twoBesideSecondary' | 'twoOverSecondary' | 'twoDisplaceSecondary'; type SplitViewOrientation = | 'inherit' | 'all' | 'allButUpsideDown' | 'portrait' | 'portraitUp' | 'portraitDown' | 'landscape' | 'landscapeLeft' | 'landscapeRight'; type SplitViewColorScheme = 'inherit' | 'light' | 'dark'; type SplitViewPrimaryBackgroundStyle = 'default' | 'none' | 'sidebar'; type SplitViewTopColumnForCollapsing = | 'default' | 'primary' | 'supplementary' | 'secondary'; interface ColumnMetrics { minimumPrimaryColumnWidth?: CT.WithDefault; maximumPrimaryColumnWidth?: CT.WithDefault; preferredPrimaryColumnWidthOrFraction?: CT.WithDefault; minimumSupplementaryColumnWidth?: CT.WithDefault; maximumSupplementaryColumnWidth?: CT.WithDefault; preferredSupplementaryColumnWidthOrFraction?: CT.WithDefault; // iOS 26 only minimumSecondaryColumnWidth?: CT.WithDefault; preferredSecondaryColumnWidthOrFraction?: CT.WithDefault; minimumInspectorColumnWidth?: CT.WithDefault; maximumInspectorColumnWidth?: CT.WithDefault; preferredInspectorColumnWidthOrFraction?: CT.WithDefault; } interface NativeProps extends ViewProps { // Appearance preferredDisplayMode?: CT.WithDefault; preferredSplitBehavior?: CT.WithDefault; primaryEdge?: CT.WithDefault; showSecondaryToggleButton?: CT.WithDefault; displayModeButtonVisibility?: CT.WithDefault< SplitViewDisplayModeButtonVisibility, 'automatic' >; columnMetrics?: ColumnMetrics | undefined; orientation?: CT.WithDefault; colorScheme?: CT.WithDefault; primaryBackgroundStyle?: CT.WithDefault< SplitViewPrimaryBackgroundStyle, 'default' >; // Behavior topColumnForCollapsing?: CT.WithDefault< SplitViewTopColumnForCollapsing, 'default' >; // Interactions presentsWithGesture?: CT.WithDefault; showInspector?: CT.WithDefault; // Custom events onCollapse?: CT.DirectEventHandler | undefined; onDisplayModeWillChange?: | CT.DirectEventHandler | undefined; onExpand?: CT.DirectEventHandler | undefined; onInspectorHide?: CT.DirectEventHandler | undefined; } type ComponentType = HostComponent; interface NativeCommands { showColumn: ( viewRef: React.ComponentRef, column: string, ) => void; } export const Commands: NativeCommands = codegenNativeCommands({ supportedCommands: ['showColumn'], }); export default codegenNativeComponent( 'RNSSplitHost', {}, ) as HostComponent;