@vandrei977/react-native-render-html
Version:
The hackable, full-featured Open Source HTML rendering solution for React Native.
32 lines (30 loc) • 954 B
text/typescript
import { useMemo, useRef } from 'react';
import { useSharedProps } from '../context/SharedPropsProvider';
import {
IncompleteImageDimensions,
UseIMGElementStateProps
} from './img-types';
export default function useIMGNormalizedSource({
source,
specifiedDimensions
}: Pick<UseIMGElementStateProps, 'source'> & {
specifiedDimensions: IncompleteImageDimensions;
}) {
const cachedDimensions = useRef(specifiedDimensions);
const { provideEmbeddedHeaders } = useSharedProps();
return useMemo(() => {
if (source.uri && typeof provideEmbeddedHeaders === 'function') {
const headers = provideEmbeddedHeaders(source.uri, 'img', {
printWidth: cachedDimensions.current?.width || undefined,
printHeight: cachedDimensions.current?.height || undefined
});
if (headers) {
return {
headers,
...source
};
}
}
return source;
}, [provideEmbeddedHeaders, source]);
}