UNPKG

expo-asset

Version:

An Expo universal module to download assets and pass them into other APIs

46 lines (37 loc) 1.24 kB
import { getAssetByID } from '@react-native/assets-registry/registry'; import AssetSourceResolver, { ResolvedAssetSource } from './AssetSourceResolver'; let _customSourceTransformer: (resolver: AssetSourceResolver) => ResolvedAssetSource; export function setCustomSourceTransformer( transformer: (resolver: AssetSourceResolver) => ResolvedAssetSource ): void { _customSourceTransformer = transformer; } /** * `source` is either a number (opaque type returned by require('./foo.png')) * or an `ImageSource` like { uri: '<http location || file path>' } */ export default function resolveAssetSource(source: any): ResolvedAssetSource | null { if (typeof source === 'object') { return source; } const asset = getAssetByID(source); if (!asset) { return null; } const resolver = new AssetSourceResolver( // Doesn't matter since this is removed on web 'https://expo.dev', null, asset ); if (_customSourceTransformer) { return _customSourceTransformer(resolver); } return resolver.defaultAsset(); } Object.defineProperty(resolveAssetSource, 'setCustomSourceTransformer', { get() { return setCustomSourceTransformer; }, }); export const { pickScale } = AssetSourceResolver;