/** * 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. * * @format */ /** * @see https://reactnative.dev/docs/platform-specific-code#content */ export type PlatformOSType = | 'ios' | 'android' | 'macos' | 'windows' | 'web' | "harmony" // RNOH: patch | 'native'; type PlatformConstants = { isTesting: boolean; reactNativeVersion: { major: number; minor: number; patch: number; prerelease?: number | null | undefined; }; }; interface PlatformStatic { isTV: boolean; isTesting: boolean; Version: number | string; constants: PlatformConstants; /** * @see https://reactnative.dev/docs/platform-specific-code#content */ select( specifics: | ({ [platform in PlatformOSType]?: T } & { default: T; }) | { [platform in PlatformOSType]: T }, ): T; select(specifics: { [platform in PlatformOSType]?: T }): T | undefined; } interface PlatformIOSStatic extends PlatformStatic { constants: PlatformConstants & { forceTouchAvailable: boolean; interfaceIdiom: string; osVersion: string; systemName: string; }; OS: 'ios'; isPad: boolean; isTV: boolean; Version: string; } interface PlatformAndroidStatic extends PlatformStatic { constants: PlatformConstants & { Version: number; Release: string; Serial: string; Fingerprint: string; Model: string; Brand: string; Manufacturer: string; ServerHost?: string | undefined; uiMode: 'car' | 'desk' | 'normal' | 'tv' | 'watch' | 'unknown'; }; OS: 'android'; Version: number; } interface PlatformMacOSStatic extends PlatformStatic { OS: 'macos'; Version: string; constants: PlatformConstants & { osVersion: string; }; } interface PlatformWindowsOSStatic extends PlatformStatic { OS: 'windows'; Version: number; constants: PlatformConstants & { osVersion: number; }; } interface PlatformWebStatic extends PlatformStatic { OS: 'web'; } // begin RNOH: patch export type PlatformHarmonyConstants = PlatformConstants & { deviceType: "default" | "phone" | "wearable" | "liteWearable" | "tablet" | "tv" | "car" | "smartVision"; osFullName: string; Model: string; }; export interface PlatformHarmonyStatic extends PlatformStatic { OS: 'harmony'; constants: PlatformHarmonyConstants; } // end RNOH: patch export type Platform = | PlatformIOSStatic | PlatformAndroidStatic | PlatformWindowsOSStatic | PlatformMacOSStatic | PlatformWebStatic | PlatformHarmonyStatic; // RNOH: patch export const Platform: Platform;