import type { ScrollEdgeEffect } from "./ScrollEdgeEffect"; import React from "react"; import type * as ReactNative from "react-native"; import { type NativeProps, type OnCollapsibleStateChangedEventData, type OnNativeTabPressEventData } from "./CollapsiblePagerViewNativeComponent"; import type { OnPageScrollEventData, OnPageScrollStateChangedEventData, OnPageSelectedEventData } from "./PagerViewNativeComponent"; export type CollapsiblePagerDiagnostics = ReactNative.NativeSyntheticEvent; export type CollapsiblePagerMountState = Readonly<{ position: number; mountedPages: readonly number[]; pageKeys: readonly string[]; }>; export type CollapsiblePagerNativeTabBarItem = Readonly<{ key: string; title: string; accessibilityLabel?: string; testID?: string; }>; export type CollapsiblePagerNativeTabBarStyle = Readonly<{ height?: number; contentPaddingHorizontal?: number; itemSpacing?: number; fontSize?: number; fontFamily?: string; backgroundColor?: ReactNative.ColorValue; activeTextColor?: ReactNative.ColorValue; inactiveTextColor?: ReactNative.ColorValue; indicatorColor?: ReactNative.ColorValue; indicatorHeight?: number; indicatorBottom?: number; }>; export type CollapsiblePagerNativeTabBarConfig = Readonly<{ items: readonly CollapsiblePagerNativeTabBarItem[]; style?: CollapsiblePagerNativeTabBarStyle; }>; export type CollapsiblePagerNativeSubHeaderColumns = Readonly<{ leading: string; middle: string; trailing: string; }>; export type CollapsiblePagerNativeSubHeaderStyle = Readonly<{ height?: number; tabsHeight?: number; contentPaddingHorizontal?: number; itemSpacing?: number; fontSize?: number; columnFontSize?: number; trailingColumnWidth?: number; columnGap?: number; selectedBackgroundColor?: ReactNative.ColorValue; }>; export type CollapsiblePagerNativeSubHeaderConfig = Readonly<{ items: readonly CollapsiblePagerNativeTabBarItem[]; selectedKey: string; columns: CollapsiblePagerNativeSubHeaderColumns; style?: CollapsiblePagerNativeSubHeaderStyle; }>; export type CollapsiblePagerViewOnNativeTabPressEvent = ReactNative.NativeSyntheticEvent; export type CollapsiblePagerViewOnNativeSubHeaderPressEvent = ReactNative.NativeSyntheticEvent; export interface CollapsiblePagerViewProps extends Omit { /** Collapsible content rendered above the sticky bar. */ header: React.ReactNode; /** Bar which remains pinned after the header has collapsed. */ stickyHeader: React.ReactNode; /** Measured header height. It may be updated after an onLayout measurement. */ headerHeight: number; /** Measured sticky bar height. */ stickyHeaderHeight: number; /** Fixed content above the collapsible header on iOS 26 and newer. */ topOverlay?: React.ReactNode; /** Known overlay height to reserve until its first layout measurement. */ topOverlayHeightHint?: number; /** Existing fixed header shared with a parent pager on iOS 26 and newer. */ externalTopOverlayTag?: number; /** Selects UIKit's top scroll-edge effect on iOS 26 and newer. */ topScrollEdgeEffect?: `${ScrollEdgeEffect}`; /** Effective appearance of the fixed overlay or pinned sticky bar. */ topOverlayColorScheme?: "light" | "dark"; /** * Lets the active native list own vertical gestures that begin on pager headers. * Defaults to false and has no effect on Web. */ nativeSmoothHeaderScrollEnabled?: boolean; /** * Number of pages retained on either side of the selected page. Page slots * remain stable, while distant React/native list subtrees are really * unmounted. Defaults to one adjacent page. */ pageRetentionDistance?: number; layoutDirection?: "ltr" | "rtl" | "locale"; /** Optional native tab bar for iOS and Android. */ nativeTabBar?: CollapsiblePagerNativeTabBarConfig; onNativeTabPress?: (event: CollapsiblePagerViewOnNativeTabPressEvent) => void; /** * Defaults to animating adjacent native tab presses and jumping directly to * non-adjacent pages. Set true to always animate, or false to always jump. */ nativeTabPressAnimationEnabled?: boolean; /** Optional native secondary sticky header for iOS and Android. */ nativeSubHeader?: CollapsiblePagerNativeSubHeaderConfig; onNativeSubHeaderPress?: (event: CollapsiblePagerViewOnNativeSubHeaderPressEvent) => void; children?: React.ReactNode; onMountedPagesChanged?: (state: CollapsiblePagerMountState) => void; } type State = { selectedPage: number; transientRetainedPages: readonly number[]; topOverlayHeight: number | null; }; /** * Pager variant whose vertical header coordination is performed by the native * scrolling containers. React participates only at settled page boundaries to * retain the selected/adjacent heavy page subtrees. */ export declare class CollapsiblePagerView extends React.PureComponent { state: State; private nativeRef; private lastMountSignature; private nativeTabCommandId; private latestNativeTabTarget; private dispatchedNativeTabTarget; private latestNativeSelectedPage; private nativePagerScrollState; private nativeTabCommandQueuedDuringScroll; componentDidMount(): void; componentDidUpdate(previousProps: CollapsiblePagerViewProps): void; setPage: (selectedPage: number) => void; setPageWithoutAnimation: (selectedPage: number) => void; scrollToPageTop: (options?: Readonly<{ animated?: boolean; }>) => void; scrollToStickyTop: (options?: Readonly<{ animated?: boolean; }>) => void; setScrollEnabled: (scrollEnabled: boolean) => void; private pages; private nativeTabBarEnabled; private dispatchNativeTabPageCommand; private retentionDistance; private mountedPages; private notifyMountedPagesChanged; private onPageSelected; private onPageScrollStateChanged; private onNativeTabPress; private onNativeSubHeaderPress; render(): import("react/jsx-runtime").JSX.Element; } export type CollapsiblePagerViewOnPageScrollEvent = ReactNative.NativeSyntheticEvent; export type CollapsiblePagerViewOnPageSelectedEvent = ReactNative.NativeSyntheticEvent; export type CollapsiblePagerViewOnPageScrollStateChangedEvent = ReactNative.NativeSyntheticEvent; export {}; //# sourceMappingURL=CollapsiblePagerView.d.ts.map