mattermost-mobile/app/screens/gallery/image_renderer/index.tsx
Elias Nahum 0c0f92a237
[Gekidou] Markdown SVG & image size support (#6032)
* Support Markdown svg and custom size inline images

* remove commonmark patches

* move getMarkdownImageSize to @utils/markdown

* Fix worklet not present while running unit tests that use calculateDimensions

* Set max size for SVG

* Set svg dimensions based on calculated size

* feedback review
2022-03-10 09:03:09 -03:00

56 lines
1.7 KiB
TypeScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React, {useMemo} from 'react';
import {PagerProps} from '../pager';
import {RenderPageProps} from '../pager/page';
import ImageTransformer, {ImageTransformerProps} from './transformer';
export interface Handlers {
onTap?: ImageTransformerProps['onTap'];
onDoubleTap?: ImageTransformerProps['onDoubleTap'];
onInteraction?: ImageTransformerProps['onInteraction'];
onPagerTranslateChange?: (translateX: number) => void;
onGesture?: PagerProps['onGesture'];
onPagerEnabledGesture?: PagerProps['onEnabledGesture'];
shouldPagerHandleGestureEvent?: PagerProps['shouldHandleGestureEvent'];
onShouldHideControls?: (shouldHide: boolean) => void;
}
export type ImageRendererProps = RenderPageProps & Handlers
function ImageRenderer({
height,
isPageActive,
isPagerInProgress,
item,
onDoubleTap,
onInteraction,
onPageStateChange,
onTap,
pagerRefs,
width,
}: ImageRendererProps) {
const targetDimensions = useMemo(() => ({height, width}), [height, width]);
return (
<ImageTransformer
outerGestureHandlerActive={isPagerInProgress}
isActive={isPageActive}
targetDimensions={targetDimensions}
height={item.height}
isSvg={item.extension === 'svg'}
onStateChange={onPageStateChange}
outerGestureHandlerRefs={pagerRefs}
source={item.uri}
width={item.width}
onDoubleTap={onDoubleTap}
onTap={onTap}
onInteraction={onInteraction}
/>
);
}
export default ImageRenderer;