/** * This code was generated by "react-native codegen-lib-harmony" */ import { Descriptor as ComponentDescriptor, ViewBaseProps, ViewRawProps, ViewDescriptorWrapperBase, ColorValue, Color, RNInstance, Tag, RNComponentCommandReceiver, ViewPropsSelector, } from '@rnoh/react-native-openharmony/ts'; export namespace LottieTurboAnimationView { export const NAME = "LottieTurboAnimationView" as const export interface DirectRawProps { resizeMode?: string; renderMode?: string; sourceName?: string; sourceJson?: string; sourceURL?: string; imageAssetsFolder?: string; progress?: number; speed?: number; loop?: boolean; autoPlay?: boolean; enableMergePathsAndroidForKitKatAndAbove?: boolean; hardwareAccelerationAndroid?: boolean; cacheComposition?: boolean; colorFilters?: unknown; } export interface Props extends ViewBaseProps {} export interface State {} export interface RawProps extends ViewRawProps, DirectRawProps {} export class PropsSelector extends ViewPropsSelector { get resizeMode() { return this.rawProps.resizeMode; } get renderMode() { return this.rawProps.renderMode; } get sourceName() { return this.rawProps.sourceName; } get sourceJson() { return this.rawProps.sourceJson; } get sourceURL() { return this.rawProps.sourceURL; } get imageAssetsFolder() { return this.rawProps.imageAssetsFolder; } get progress() { return this.rawProps.progress ?? 0; } get speed() { return this.rawProps.speed ?? 0; } get loop() { return this.rawProps.loop ?? false; } get autoPlay() { return this.rawProps.autoPlay ?? false; } get enableMergePathsAndroidForKitKatAndAbove() { return this.rawProps.enableMergePathsAndroidForKitKatAndAbove ?? false; } get hardwareAccelerationAndroid() { return this.rawProps.hardwareAccelerationAndroid ?? false; } get cacheComposition() { return this.rawProps.cacheComposition ?? false; } get colorFilters() { return this.rawProps.colorFilters; } } export type Descriptor = ComponentDescriptor< typeof NAME, Props, State, RawProps >; export class DescriptorWrapper extends ViewDescriptorWrapperBase< typeof NAME, Props, State, RawProps, PropsSelector > { protected createPropsSelector() { return new PropsSelector(this.descriptor.props, this.descriptor.rawProps) } } export interface EventPayloadByName { "animationFinish": {isCancelled: boolean} "animationFailure": {error: string} "animationLoaded": {} "animationLoop": {} } export class EventEmitter { constructor(private rnInstance: RNInstance, private tag: Tag) {} emit(eventName: TEventName, payload: EventPayloadByName[TEventName]) { this.rnInstance.emitComponentEvent(this.tag, eventName, payload) } } export interface CommandArgvByName { "play": [number, number] "reset": [] "pause": [] "resume": [] } export class CommandReceiver { private listenersByCommandName = new Map void>>() private cleanUp: (() => void) | undefined = undefined constructor(private componentCommandReceiver: RNComponentCommandReceiver, private tag: Tag) { } subscribe(commandName: TCommandName, listener: (argv: CommandArgvByName[TCommandName]) => void) { if (!this.listenersByCommandName.has(commandName)) { this.listenersByCommandName.set(commandName, new Set()) } this.listenersByCommandName.get(commandName)!.add(listener) const hasRegisteredCommandReceiver = !!this.cleanUp if (!hasRegisteredCommandReceiver) { this.cleanUp = this.componentCommandReceiver.registerCommandCallback(this.tag, (commandName: string, argv: any[]) => { if (this.listenersByCommandName.has(commandName)) { const listeners = this.listenersByCommandName.get(commandName)! listeners.forEach(listener => { listener(argv) }) } }) } return () => { this.listenersByCommandName.get(commandName)?.delete(listener) if (this.listenersByCommandName.get(commandName)?.size ?? 0 === 0) { this.listenersByCommandName.delete(commandName) } if (this.listenersByCommandName.size === 0) { this.cleanUp?.() } } } } }