react-rough-fiber
Version:
A React renderer for rendering hand-drawn SVGs.
317 lines (312 loc) • 18.7 kB
TypeScript
import * as react_jsx_runtime from 'react/jsx-runtime';
import * as react from 'react';
import { PropsWithChildren, HTMLAttributes } from 'react';
import { Options as Options$1 } from 'roughjs/bin/core';
export { Options as RoughOptions } from 'roughjs/bin/core';
type Options = Options$1 | ((shape: SVGShape, props: HTMLAttributes<SVGElement>) => Options$1);
type SVGShape = {
type: 'path';
d: string;
} | {
type: 'circle';
cx: number;
cy: number;
r: number;
} | {
type: 'line';
x1: number;
y1: number;
x2: number;
y2: number;
} | {
type: 'rect';
x: number;
y: number;
width: number;
height: number;
} | {
type: 'ellipse';
cx: number;
cy: number;
rx: number;
ry: number;
} | {
type: 'polygon';
points: string;
} | {
type: 'polyline';
points: string;
};
type RoughSVGProps = PropsWithChildren<{
containerType?: string;
options?: Options;
} & HTMLAttributes<HTMLOrSVGElement>>;
declare function WCRoughSVG(props: RoughSVGProps): react_jsx_runtime.JSX.Element;
declare function RoughSVG({ containerType, children, options, ...restProps }: RoughSVGProps): react.DOMElement<{
defaultChecked?: boolean | undefined;
defaultValue?: string | number | readonly string[] | undefined;
suppressContentEditableWarning?: boolean | undefined;
suppressHydrationWarning?: boolean | undefined;
accessKey?: string | undefined;
autoFocus?: boolean | undefined;
className?: string | undefined;
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
contextMenu?: string | undefined;
dir?: string | undefined;
draggable?: (boolean | "true" | "false") | undefined;
hidden?: boolean | undefined;
id?: string | undefined;
lang?: string | undefined;
nonce?: string | undefined;
slot?: string | undefined;
spellCheck?: (boolean | "true" | "false") | undefined;
style?: react.CSSProperties | undefined;
tabIndex?: number | undefined;
title?: string | undefined;
translate?: "yes" | "no" | undefined;
radioGroup?: string | undefined;
role?: react.AriaRole | undefined;
about?: string | undefined;
content?: string | undefined;
datatype?: string | undefined;
inlist?: any;
prefix?: string | undefined;
property?: string | undefined;
rel?: string | undefined;
resource?: string | undefined;
rev?: string | undefined;
typeof?: string | undefined;
vocab?: string | undefined;
autoCapitalize?: string | undefined;
autoCorrect?: string | undefined;
autoSave?: string | undefined;
color?: string | undefined;
itemProp?: string | undefined;
itemScope?: boolean | undefined;
itemType?: string | undefined;
itemID?: string | undefined;
itemRef?: string | undefined;
results?: number | undefined;
security?: string | undefined;
unselectable?: "on" | "off" | undefined;
inputMode?: "none" | "text" | "search" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
is?: string | undefined;
"aria-activedescendant"?: string | undefined;
"aria-atomic"?: (boolean | "true" | "false") | undefined;
"aria-autocomplete"?: "none" | "list" | "inline" | "both" | undefined;
"aria-braillelabel"?: string | undefined;
"aria-brailleroledescription"?: string | undefined;
"aria-busy"?: (boolean | "true" | "false") | undefined;
"aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
"aria-colcount"?: number | undefined;
"aria-colindex"?: number | undefined;
"aria-colindextext"?: string | undefined;
"aria-colspan"?: number | undefined;
"aria-controls"?: string | undefined;
"aria-current"?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
"aria-describedby"?: string | undefined;
"aria-description"?: string | undefined;
"aria-details"?: string | undefined;
"aria-disabled"?: (boolean | "true" | "false") | undefined;
"aria-dropeffect"?: "none" | "copy" | "link" | "execute" | "move" | "popup" | undefined;
"aria-errormessage"?: string | undefined;
"aria-expanded"?: (boolean | "true" | "false") | undefined;
"aria-flowto"?: string | undefined;
"aria-grabbed"?: (boolean | "true" | "false") | undefined;
"aria-haspopup"?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
"aria-hidden"?: (boolean | "true" | "false") | undefined;
"aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
"aria-keyshortcuts"?: string | undefined;
"aria-label"?: string | undefined;
"aria-labelledby"?: string | undefined;
"aria-level"?: number | undefined;
"aria-live"?: "off" | "assertive" | "polite" | undefined;
"aria-modal"?: (boolean | "true" | "false") | undefined;
"aria-multiline"?: (boolean | "true" | "false") | undefined;
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
"aria-orientation"?: "horizontal" | "vertical" | undefined;
"aria-owns"?: string | undefined;
"aria-placeholder"?: string | undefined;
"aria-posinset"?: number | undefined;
"aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
"aria-readonly"?: (boolean | "true" | "false") | undefined;
"aria-relevant"?: "text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
"aria-required"?: (boolean | "true" | "false") | undefined;
"aria-roledescription"?: string | undefined;
"aria-rowcount"?: number | undefined;
"aria-rowindex"?: number | undefined;
"aria-rowindextext"?: string | undefined;
"aria-rowspan"?: number | undefined;
"aria-selected"?: (boolean | "true" | "false") | undefined;
"aria-setsize"?: number | undefined;
"aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
"aria-valuemax"?: number | undefined;
"aria-valuemin"?: number | undefined;
"aria-valuenow"?: number | undefined;
"aria-valuetext"?: string | undefined;
dangerouslySetInnerHTML?: {
__html: string | TrustedHTML;
} | undefined;
onCopy?: react.ClipboardEventHandler<HTMLOrSVGElement> | undefined;
onCopyCapture?: react.ClipboardEventHandler<HTMLOrSVGElement> | undefined;
onCut?: react.ClipboardEventHandler<HTMLOrSVGElement> | undefined;
onCutCapture?: react.ClipboardEventHandler<HTMLOrSVGElement> | undefined;
onPaste?: react.ClipboardEventHandler<HTMLOrSVGElement> | undefined;
onPasteCapture?: react.ClipboardEventHandler<HTMLOrSVGElement> | undefined;
onCompositionEnd?: react.CompositionEventHandler<HTMLOrSVGElement> | undefined;
onCompositionEndCapture?: react.CompositionEventHandler<HTMLOrSVGElement> | undefined;
onCompositionStart?: react.CompositionEventHandler<HTMLOrSVGElement> | undefined;
onCompositionStartCapture?: react.CompositionEventHandler<HTMLOrSVGElement> | undefined;
onCompositionUpdate?: react.CompositionEventHandler<HTMLOrSVGElement> | undefined;
onCompositionUpdateCapture?: react.CompositionEventHandler<HTMLOrSVGElement> | undefined;
onFocus?: react.FocusEventHandler<HTMLOrSVGElement> | undefined;
onFocusCapture?: react.FocusEventHandler<HTMLOrSVGElement> | undefined;
onBlur?: react.FocusEventHandler<HTMLOrSVGElement> | undefined;
onBlurCapture?: react.FocusEventHandler<HTMLOrSVGElement> | undefined;
onChange?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onChangeCapture?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onBeforeInput?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onBeforeInputCapture?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onInput?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onInputCapture?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onReset?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onResetCapture?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onSubmit?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onSubmitCapture?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onInvalid?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onInvalidCapture?: react.FormEventHandler<HTMLOrSVGElement> | undefined;
onLoad?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onLoadCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onError?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onErrorCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onKeyDown?: react.KeyboardEventHandler<HTMLOrSVGElement> | undefined;
onKeyDownCapture?: react.KeyboardEventHandler<HTMLOrSVGElement> | undefined;
onKeyPress?: react.KeyboardEventHandler<HTMLOrSVGElement> | undefined;
onKeyPressCapture?: react.KeyboardEventHandler<HTMLOrSVGElement> | undefined;
onKeyUp?: react.KeyboardEventHandler<HTMLOrSVGElement> | undefined;
onKeyUpCapture?: react.KeyboardEventHandler<HTMLOrSVGElement> | undefined;
onAbort?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onAbortCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onCanPlay?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onCanPlayCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onCanPlayThrough?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onCanPlayThroughCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onDurationChange?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onDurationChangeCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onEmptied?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onEmptiedCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onEncrypted?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onEncryptedCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onEnded?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onEndedCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onLoadedData?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onLoadedDataCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onLoadedMetadata?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onLoadedMetadataCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onLoadStart?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onLoadStartCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onPause?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onPauseCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onPlay?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onPlayCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onPlaying?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onPlayingCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onProgress?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onProgressCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onRateChange?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onRateChangeCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onResize?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onResizeCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onSeeked?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onSeekedCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onSeeking?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onSeekingCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onStalled?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onStalledCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onSuspend?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onSuspendCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onTimeUpdate?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onTimeUpdateCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onVolumeChange?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onVolumeChangeCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onWaiting?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onWaitingCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onAuxClick?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onAuxClickCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onClick?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onClickCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onContextMenu?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onContextMenuCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onDoubleClick?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onDoubleClickCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onDrag?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragEnd?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragEndCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragEnter?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragEnterCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragExit?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragExitCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragLeave?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragLeaveCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragOver?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragOverCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragStart?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDragStartCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDrop?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onDropCapture?: react.DragEventHandler<HTMLOrSVGElement> | undefined;
onMouseDown?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseDownCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseEnter?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseLeave?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseMove?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseMoveCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseOut?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseOutCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseOver?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseOverCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseUp?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onMouseUpCapture?: react.MouseEventHandler<HTMLOrSVGElement> | undefined;
onSelect?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onSelectCapture?: react.ReactEventHandler<HTMLOrSVGElement> | undefined;
onTouchCancel?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onTouchCancelCapture?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onTouchEnd?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onTouchEndCapture?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onTouchMove?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onTouchMoveCapture?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onTouchStart?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onTouchStartCapture?: react.TouchEventHandler<HTMLOrSVGElement> | undefined;
onPointerDown?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerDownCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerMove?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerMoveCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerUp?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerUpCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerCancel?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerCancelCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerEnter?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerLeave?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerOver?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerOverCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerOut?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onPointerOutCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onGotPointerCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onGotPointerCaptureCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onLostPointerCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onLostPointerCaptureCapture?: react.PointerEventHandler<HTMLOrSVGElement> | undefined;
onScroll?: react.UIEventHandler<HTMLOrSVGElement> | undefined;
onScrollCapture?: react.UIEventHandler<HTMLOrSVGElement> | undefined;
onWheel?: react.WheelEventHandler<HTMLOrSVGElement> | undefined;
onWheelCapture?: react.WheelEventHandler<HTMLOrSVGElement> | undefined;
onAnimationStart?: react.AnimationEventHandler<HTMLOrSVGElement> | undefined;
onAnimationStartCapture?: react.AnimationEventHandler<HTMLOrSVGElement> | undefined;
onAnimationEnd?: react.AnimationEventHandler<HTMLOrSVGElement> | undefined;
onAnimationEndCapture?: react.AnimationEventHandler<HTMLOrSVGElement> | undefined;
onAnimationIteration?: react.AnimationEventHandler<HTMLOrSVGElement> | undefined;
onAnimationIterationCapture?: react.AnimationEventHandler<HTMLOrSVGElement> | undefined;
onTransitionEnd?: react.TransitionEventHandler<HTMLOrSVGElement> | undefined;
onTransitionEndCapture?: react.TransitionEventHandler<HTMLOrSVGElement> | undefined;
ref: react.RefObject<HTMLDivElement>;
}, HTMLDivElement>;
export { type Options, RoughSVG, type RoughSVGProps, type SVGShape, WCRoughSVG };