38 lines
2.6 KiB
TypeScript
38 lines
2.6 KiB
TypeScript
import type { TurboModule } from "react-native";
|
|
import { TurboModuleRegistry } from "react-native";
|
|
|
|
type RuntimeState = "DISABLED" | "WAITING_FOR_FIELDS" | "READY" | "ERROR";
|
|
type PlaybackState = "PLAY" | "PAUSE";
|
|
type TargetFps = "AUTO" | "FPS_30" | "FPS_60";
|
|
type CommandResult = "ACCEPTED" | "REJECTED";
|
|
type FieldSubmitResult = "REJECTED_SOURCE_MODE" | "REJECTED_ADAPTER" | "REJECTED_INCOMPATIBLE" | "REJECTED_NON_MONOTONIC" | "REJECTED_CAPACITY" | "ACCEPTED_PENDING_INITIAL_WINDOW" | "INITIAL_WINDOW_READY" | "ACCEPTED_NEXT_SNAPSHOT" | "DUPLICATE" | "UNKNOWN";
|
|
type ColorStop = { speedMps: number; red: number; green: number; blue: number; alpha: number };
|
|
type RuntimeSnapshot = { state: RuntimeState; playbackState: PlaybackState; targetFps: TargetFps; disposed: boolean };
|
|
|
|
export interface Spec extends TurboModule {
|
|
attach(reactTag: number): Promise<RuntimeSnapshot>;
|
|
detach(reactTag: number): Promise<void>;
|
|
getState(reactTag: number): Promise<RuntimeSnapshot>;
|
|
clearWindFields(reactTag: number): Promise<CommandResult>;
|
|
submitWindField(reactTag: number, metadataJson: string, payloadFileUri: string): Promise<FieldSubmitResult>;
|
|
setWeatherEnabled(reactTag: number, enabled: boolean): Promise<CommandResult>;
|
|
setWeatherColorVisible(reactTag: number, visible: boolean): Promise<CommandResult>;
|
|
setParticleVisible(reactTag: number, visible: boolean): Promise<CommandResult>;
|
|
setTargetFps(reactTag: number, target: TargetFps): Promise<CommandResult>;
|
|
setForecastTime(reactTag: number, timestampMs: number): Promise<CommandResult>;
|
|
setPlaybackState(reactTag: number, playback: PlaybackState): Promise<CommandResult>;
|
|
setPlaybackSpeed(reactTag: number, speed: "HALF" | "NORMAL" | "DOUBLE"): Promise<CommandResult>;
|
|
setWeatherColorStops(reactTag: number, stops: ColorStop[]): Promise<CommandResult>;
|
|
setParticleColor(reactTag: number, red: number, green: number, blue: number, alpha: number): Promise<CommandResult>;
|
|
setTrailColor(reactTag: number, red: number, green: number, blue: number, alpha: number): Promise<CommandResult>;
|
|
setParticleCount(reactTag: number, count: number): Promise<CommandResult>;
|
|
setParticleLineWidth(reactTag: number, value: number): Promise<CommandResult>;
|
|
setParticleLength(reactTag: number, value: number): Promise<CommandResult>;
|
|
setParticleOpacity(reactTag: number, value: number): Promise<CommandResult>;
|
|
setTrailOpacity(reactTag: number, value: number): Promise<CommandResult>;
|
|
setTrailFade(reactTag: number, value: number): Promise<CommandResult>;
|
|
setWeatherColorOpacity(reactTag: number, value: number): Promise<CommandResult>;
|
|
}
|
|
|
|
export default TurboModuleRegistry.getEnforcing<Spec>("WeatherRuntimeBridge");
|