@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
TypeScript
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 };