feat: add typescript (#3266)

* chore: update dependencies
* chore: add typescript config
* feat: add types
* chore: add build command
* chore: fix types
* fix: update linters
* chore: add display name to component
* chore: fix types
* chore: remove re-declare name variables
* docs: update changelog
This commit is contained in:
Krzysztof Moch
2023-10-06 18:39:14 +02:00
committed by GitHub
parent f4acaccd80
commit 92831afd5f
20 changed files with 1259 additions and 619 deletions

37
src/utils.ts Normal file
View File

@@ -0,0 +1,37 @@
import type { Component, RefObject, ComponentClass } from 'react';
import { Image, UIManager, findNodeHandle } from "react-native";
import type { ImageSourcePropType } from 'react-native';
import type { ReactVideoSource } from './types/video';
type Source = ImageSourcePropType | ReactVideoSource;
export function resolveAssetSourceForVideo(source: Source): ReactVideoSource {
if (typeof source === 'number') {
return {
uri: Image.resolveAssetSource(source).uri,
};
}
return source as ReactVideoSource;
}
export function getReactTag(ref: RefObject<Component<any, any, any> | ComponentClass<any, any> | null>): number {
if (!ref.current) {
throw new Error("Video Component is not mounted");
}
const reactTag = findNodeHandle(ref.current);
if (!reactTag) {
throw new Error("Cannot find reactTag for Video Component in components tree");
}
return reactTag;
}
export function getViewManagerConfig(name: string) {
if('getViewManagerConfig' in UIManager) {
return UIManager.getViewManagerConfig(name);
}
return UIManager[name];
}