create-expo-cljs-app
Version:
Create a react native application with Expo and Shadow-CLJS!
94 lines (86 loc) • 2.48 kB
Flow
/**
* 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;