UNPKG

3.27 kBTypeScriptView Raw
1import React from 'react';
2import { Element, NodeEntry, Range, Text } from 'slate';
3import { ReactEditor } from '..';
4import { DOMNode, DOMRange } from '../utils/dom';
5/**
6 * `RenderElementProps` are passed to the `renderElement` handler.
7 */
8export interface RenderElementProps {
9 children: any;
10 element: Element;
11 attributes: {
12 'data-slate-node': 'element';
13 'data-slate-inline'?: true;
14 'data-slate-void'?: true;
15 dir?: 'rtl';
16 ref: any;
17 };
18}
19/**
20 * `RenderLeafProps` are passed to the `renderLeaf` handler.
21 */
22export interface RenderLeafProps {
23 children: any;
24 leaf: Text;
25 text: Text;
26 attributes: {
27 'data-slate-leaf': true;
28 };
29}
30/**
31 * `EditableProps` are passed to the `<Editable>` component.
32 */
33export declare type EditableProps = {
34 decorate?: (entry: NodeEntry) => Range[];
35 onDOMBeforeInput?: (event: InputEvent) => void;
36 placeholder?: string;
37 readOnly?: boolean;
38 role?: string;
39 style?: React.CSSProperties;
40 renderElement?: (props: RenderElementProps) => JSX.Element;
41 renderLeaf?: (props: RenderLeafProps) => JSX.Element;
42 renderPlaceholder?: (props: RenderPlaceholderProps) => JSX.Element;
43 scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void;
44 as?: React.ElementType;
45} & React.TextareaHTMLAttributes<HTMLDivElement>;
46/**
47 * Editable.
48 */
49export declare const Editable: (props: EditableProps) => JSX.Element;
50/**
51 * The props that get passed to renderPlaceholder
52 */
53export declare type RenderPlaceholderProps = {
54 children: any;
55 attributes: {
56 'data-slate-placeholder': boolean;
57 dir?: 'rtl';
58 contentEditable: boolean;
59 ref: React.RefObject<any>;
60 style: React.CSSProperties;
61 };
62};
63/**
64 * The default placeholder element
65 */
66export declare const DefaultPlaceholder: ({ attributes, children, }: RenderPlaceholderProps) => JSX.Element;
67/**
68 * A default memoized decorate function.
69 */
70export declare const defaultDecorate: (entry: NodeEntry) => Range[];
71/**
72 * Check if two DOM range objects are equal.
73 */
74export declare const isRangeEqual: (a: DOMRange, b: DOMRange) => boolean;
75/**
76 * Check if the target is in the editor.
77 */
78export declare const hasTarget: (editor: ReactEditor, target: EventTarget | null) => target is DOMNode;
79/**
80 * Check if the target is editable and in the editor.
81 */
82export declare const hasEditableTarget: (editor: ReactEditor, target: EventTarget | null) => target is DOMNode;
83/**
84 * Check if the target is inside void and in an non-readonly editor.
85 */
86export declare const isTargetInsideNonReadonlyVoid: (editor: ReactEditor, target: EventTarget | null) => boolean;
87/**
88 * Check if an event is overrided by a handler.
89 */
90export declare const isEventHandled: <EventType extends React.SyntheticEvent<unknown, unknown>>(event: EventType, handler?: ((event: EventType) => void | boolean) | undefined) => boolean;
91/**
92 * Check if a DOM event is overrided by a handler.
93 */
94export declare const isDOMEventHandled: <E extends Event>(event: E, handler?: ((event: E) => void | boolean) | undefined) => boolean;
95//# sourceMappingURL=editable.d.ts.map
\No newline at end of file