UNPKG

@harshtalks/image-tiptap

Version:

A Tiptap extension for React.js to add image resize and alignment options to the image extension.

73 lines (66 loc) 2.68 kB
import { Editor, BubbleMenuProps } from '@tiptap/react'; import * as React from 'react'; import { MoveableProps } from 'react-moveable'; import * as _tiptap_core from '@tiptap/core'; import * as _tiptap_extension_image from '@tiptap/extension-image'; type Alignment = "left" | "center" | "right"; declare const DATA_ALIGNMENT_KEY = "data-alignment"; declare module "@tiptap/react" { interface Commands<ReturnType> { imageResize: { setImage: (options: { height?: number; width?: number; src: string; alt?: string; title?: string; [DATA_ALIGNMENT_KEY]: Alignment; }) => ReturnType; }; } } interface ImageResizerProps extends Omit<MoveableProps, "target" | "container"> { editor?: Editor | null; } declare module "@tiptap/react" { interface Commands<ReturnType> { imageResize: { setImage: (options: { height?: number; width?: number; src: string; alt?: string; title?: string; [DATA_ALIGNMENT_KEY]: Alignment; }) => ReturnType; }; } } declare namespace ImageAligner { type RootProps = ImageResizerProps & { children?: React.ReactNode; editor?: Editor | null; }; type AlignMenuProps = Omit<BubbleMenuProps, "editor">; type AlignerContext = Editor | null; type ItemsProps = React.ComponentPropsWithoutRef<"div">; type ItemsRef = React.ElementRef<"div">; type ItemsDisplayName = "ImageAligner.Items"; type ItemProps = React.ComponentPropsWithoutRef<"button"> & { alignment: Alignment; asChild?: boolean; }; type ItemRef = React.ElementRef<"button">; type ItemDisplayName = "ImageAligner.Item"; } declare const ImageAligner: { Root: ({ children, editor: propEditor, ...resizerProps }: ImageAligner.RootProps) => React.JSX.Element; AlignMenu: ({ shouldShow, children, ...props }: ImageAligner.AlignMenuProps) => React.JSX.Element | null; Items: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>; Item: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & { alignment: Alignment; asChild?: boolean; } & React.RefAttributes<HTMLButtonElement>>; }; declare const ImageExtension: _tiptap_core.Node<_tiptap_extension_image.ImageOptions, any>; export { ImageAligner, ImageExtension };