UNPKG

create-expo-cljs-app

Version:

Create a react native application with Expo and Shadow-CLJS!

94 lines (86 loc) 2.48 kB
/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict-local * @format */ import type VirtualizedList from './'; import * as React from 'react'; import { useMemo, useContext } from 'react'; const __DEV__ = process.env.NODE_ENV !== 'production'; type Frame = $ReadOnly<{ offset: number, length: number, index: number, inLayout: boolean, }>; export type ChildListState = $ReadOnly<{ first: number, last: number, frames: { [key: number]: Frame }, }>; // Data propagated through nested lists (regardless of orientation) that is // useful for producing diagnostics for usage errors involving nesting (e.g // missing/duplicate keys). export type ListDebugInfo = $ReadOnly<{ cellKey: string, listKey: string, parent: ?ListDebugInfo, // We include all ancestors regardless of orientation, so this is not always // identical to the child's orientation. horizontal: boolean, }>; type Context = $ReadOnly<{ cellKey: ?string, getScrollMetrics: () => { contentLength: number, dOffset: number, dt: number, offset: number, timestamp: number, velocity: number, visibleLength: number, }, horizontal: ?boolean, getOutermostParentListRef: () => VirtualizedList, getNestedChildState: (string) => ?ChildListState, registerAsNestedChild: ({ cellKey: string, key: string, ref: VirtualizedList, parentDebugInfo: ListDebugInfo, }) => ?ChildListState, unregisterAsNestedChild: ({ key: string, state: ChildListState, }) => void, debugInfo: ListDebugInfo, }>; export const VirtualizedListContext: React.Context<?Context> = React.createContext(null); if (__DEV__) { VirtualizedListContext.displayName = 'VirtualizedListContext'; } /** * Resets the context. Intended for use by portal-like components (e.g. Modal). */ declare export function VirtualizedListContextResetter(arg0: { children: React.Node }): React.Node; /** * Sets the context with memoization. Intended to be used by `VirtualizedList`. */ declare export function VirtualizedListContextProvider(arg0: { children: React.Node, value: Context, }): React.Node; /** * Sets the `cellKey`. Intended to be used by `VirtualizedList` for each cell. */ declare export function VirtualizedListCellContextProvider(arg0: { cellKey: string, children: React.Node, }): React.Node;