Skip to content

Repository files navigation

rc-image

React Image.

NPM versionnpm downloadbuild statusCodecovbundle sizedumi

Feature

  • Placeholder
  • Preview
  • Rotate
  • Zoom
  • Flip
  • Fallback
  • Multiple Preview

install

rc-image

Usage

npm install
npm start
importImagefrom'rc-image';exportdefault()=>(<Imagesrc="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"/>);

API

NameTypeDefaultDescription
previewboolean | PreviewTypetrueWhether to show preview
prefixClsstringrc-imageClassname prefix
placeholderboolean | ReactElement-if true will set default placeholder or use ReactElement set customize placeholder
fallbackstring-Load failed src
previewPrefixClsstringrc-image-previewPreview classname prefix
onError(event: Event) => void-Load failed callback

PreviewType

NameTypeDefaultDescription
visibleboolean-Whether the preview is open or not
closeIconReact.ReactNode-Custom close icon
srcstring-Customize preview src
movablebooleantrueEnable drag
scaleStepnumber0.5The number to which the scale is increased or decreased
minScalenumber1Min scale
maxScalenumber50Max scale
forceRenderboolean-Force render preview
getContainerstring | HTMLElement | (() => HTMLElement) | falsedocument.bodyReturn the mount node for preview
imageRender(originalNode: React.ReactElement, info: { transform: TransformType }) => React.ReactNode-Customize image
toolbarRender(originalNode: React.ReactElement, info: Omit<ToolbarRenderInfoType, 'current' | 'total'>) => React.ReactNode-Customize toolbar
onVisibleChange(visible: boolean, prevVisible: boolean) => void-Callback when visible is changed
onTransform{ transform: TransformType, action: TransformAction }-Callback when transform is changed

Image.PreviewGroup

preview the merged src

importImagefrom'rc-image';exportdefault()=>(<Image.PreviewGroup><Imagesrc="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"/><Imagesrc="https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*P0S-QIRUbsUAAAAAAAAAAABkARQnAQ"/></Image.PreviewGroup>);

API

NameTypeDefaultDescription
previewboolean | PreviewGroupTypetrueWhether to show preview,
current: If Preview the show img index, default 0
previewPrefixClsstringrc-image-previewPreview classname prefix
icons{ [iconKey]?: ReactNode }-Icons in the top operation bar, iconKey: 'rotateLeft' | 'rotateRight' | 'zoomIn' | 'zoomOut' | 'close' | 'left' | 'right'
fallbackstring-Load failed src
items(string | { src: string, alt: string, crossOrigin: string, ... })[]-preview group

PreviewGroupType

NameTypeDefaultDescription
visibleboolean-Whether the preview is open or not
movablebooleantrueEnable drag
currentnumber-Current index
closeIconReact.ReactNode-Custom close icon
scaleStepnumber0.5The number to which the scale is increased or decreased
minScalenumber1Min scale
maxScalenumber50Max scale
forceRenderboolean-Force render preview
getContainerstring | HTMLElement | (() => HTMLElement) | falsedocument.bodyReturn the mount node for preview
countRender(current: number, total: number) => ReactNode-Customize count
imageRender(originalNode: React.ReactElement, info: { transform: TransformType, current: number }) => React.ReactNode-Customize image
toolbarRender(originalNode: React.ReactElement, info: ToolbarRenderInfoType) => React.ReactNode-Customize toolbar
onVisibleChange(visible: boolean, prevVisible: boolean, current: number) => void-Callback when visible is changed
onTransform{ transform: TransformType, action: TransformAction }-Callback when transform is changed

TransformType

{
x: number;
y: number;
rotate: number;
scale: number;
flipX: boolean;
flipY: boolean;}

TransformAction

typeTransformAction=|'flipY'|'flipX'|'rotateLeft'|'rotateRight'|'zoomIn'|'zoomOut'|'close'|'prev'|'next'|'wheel'|'doubleClick'|'move'|'dragRebound';

ToolbarRenderInfoType

{
icons: {prevIcon?: React.ReactNode;
nextIcon?: React.ReactNode;
flipYIcon: React.ReactNode;
flipXIcon: React.ReactNode;
rotateLeftIcon: React.ReactNode;
rotateRightIcon: React.ReactNode;
zoomOutIcon: React.ReactNode;
zoomInIcon: React.ReactNode;};
actions: {onActive?: (offset: number)=>void;onFlipY: ()=>void;onFlipX: ()=>void;onRotateLeft: ()=>void;onRotateRight: ()=>void;onZoomOut: ()=>void;onZoomIn: ()=>void;onClose: ()=>void;onReset: ()=>void;};transform: {x: number;y: number;rotate: number;scale: number;flipX: boolean;flipY: boolean;},current: number;
total: number;}

Example

http://localhost:8003/examples/

Test Case

npm test

Coverage

npm run coverage

License

rc-image is released under the MIT license.

About

🖼 React Image Component

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages