react-native
Version:
A framework for building native apps using React
52 lines (44 loc) • 1.78 kB
JavaScript
/**
* Copyright (c) Meta Platforms, Inc. and 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
* @format
*/
import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport';
import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry';
export type NativeIntersectionObserverEntry = {
intersectionObserverId: number,
targetInstanceHandle: mixed,
targetRect: $ReadOnlyArray<number>, // It's actually a tuple with x, y, width and height
rootRect: $ReadOnlyArray<number>, // It's actually a tuple with x, y, width and height
// TODO(T209328432) - Remove optionality of intersectionRect when native changes are released
intersectionRect: ?$ReadOnlyArray<number>, // It's actually a tuple with x, y, width and height
isIntersectingAboveThresholds: boolean,
time: number,
};
export type NativeIntersectionObserverObserveOptions = {
intersectionObserverId: number,
rootShadowNode?: ?mixed,
targetShadowNode: mixed,
thresholds: $ReadOnlyArray<number>,
rootThresholds?: ?$ReadOnlyArray<number>,
};
export opaque type NativeIntersectionObserverToken = mixed;
export interface Spec extends TurboModule {
+observeV2?: (
options: NativeIntersectionObserverObserveOptions,
) => NativeIntersectionObserverToken;
+unobserveV2?: (
intersectionObserverId: number,
token: NativeIntersectionObserverToken,
) => void;
+connect: (notifyIntersectionObserversCallback: () => void) => void;
+disconnect: () => void;
+takeRecords: () => $ReadOnlyArray<NativeIntersectionObserverEntry>;
}
export default (TurboModuleRegistry.get<Spec>(
'NativeIntersectionObserverCxx',
): ?Spec);