UNPKG

react-native-image-colors

Version:
51 lines 1.74 kB
// Import the native module. On web, it will be resolved to RNImageColors.web.ts // and on native platforms to RNImageColors.ts import { Image } from 'react-native'; import { cache } from './cache'; import RNImageColorsModule from './module'; const MAX_KEY_LEN = 500; const resolveImageSource = (source) => { if (typeof source === 'string') { return source; } else { return Image.resolveAssetSource(source).uri; } }; /** * * @param uri - source of the image. Can be a remote URL, a base64 string or a local file path. * ```ts * const fromUrl = await getColors('https://example.com/image.jpg') * * const fromBase64 = await getColors('data:image/jpeg;base64,/9j/4Ri...') * * const fromLocalFile = await getColors(require('./images/cat.jpg')) * ``` * @param config - configuration */ const getColors = async (uri, config = {}) => { const resolvedSrc = resolveImageSource(uri); if (config?.cache) { const cachedResult = config.key ? cache.getItem(config.key) : cache.getItem(resolvedSrc); if (cachedResult) return cachedResult; } const result = await RNImageColorsModule.getColors(resolvedSrc, config); if (config?.cache) { if (!config.key && resolvedSrc.length > MAX_KEY_LEN) { throw new Error(`You enabled caching, but you didn't pass a key. We fallback to using the image URI as the key. However the URI is longer than ${MAX_KEY_LEN}. Please pass a short unique key.`); } cache.setItem(config.key ?? resolvedSrc, result); } return result; }; const ImageColors = { getColors, cache, }; export default ImageColors; export { getColors, cache }; //# sourceMappingURL=index.js.map