@udecode/plate-heading
Version:
Headings plugin for Plate
108 lines (95 loc) • 4.05 kB
TypeScript
import * as _udecode_plate_core from '@udecode/plate-core';
import { a as HeadingLevel, H as Heading } from '../types-DBDYSKgi.js';
import { PlatePlugin } from '@udecode/plate-common/react';
import * as _udecode_plate_core_react from '@udecode/plate-core/react';
import React$1 from 'react';
import '@udecode/plate-common';
import 'slate';
declare const HeadingPlugin: PlatePlugin<_udecode_plate_core.PluginConfig<"heading", {
levels?: HeadingLevel | HeadingLevel[];
}, {}, {}>>;
declare const TocPlugin: _udecode_plate_core_react.PlatePlugin<_udecode_plate_core.PluginConfig<"toc", {
isScroll: boolean;
topOffset: number;
queryHeading?: (editor: _udecode_plate_core.SlateEditor) => Heading[];
}, {}, {}>>;
interface TocSideBarProps {
open?: boolean;
rootMargin?: string;
topOffset?: number;
}
interface UseContentController {
containerRef: React.RefObject<HTMLDivElement>;
isObserve: boolean;
rootMargin: string;
topOffset: number;
}
declare const useContentController: ({ containerRef, isObserve, rootMargin, topOffset, }: UseContentController) => {
activeContentId: string;
onContentScroll: ({ id, behavior, el, }: {
id: string;
el: HTMLElement;
behavior?: ScrollBehavior;
}) => void;
};
interface UseContentObserver {
editorContentRef: React$1.RefObject<HTMLElement>;
isObserve: boolean;
isScroll: boolean;
rootMargin: string;
status: number;
}
declare const useContentObserver: ({ editorContentRef, isObserve, isScroll, rootMargin, status, }: UseContentObserver) => {
activeId: string;
};
interface UseTocController {
activeId: string;
isObserve: boolean;
tocRef: React$1.RefObject<HTMLElement>;
}
declare const useTocController: ({ activeId, isObserve, tocRef, }: UseTocController) => void;
declare const useTocElementState: () => {
editor: _udecode_plate_core_react.PlateEditor;
headingList: Heading[];
onContentScroll: (el: HTMLElement, id: string, behavior?: ScrollBehavior) => void;
};
declare const useTocElement: ({ editor, onContentScroll, }: ReturnType<typeof useTocElementState>) => {
props: {
onClick: (e: React$1.MouseEvent<HTMLElement, globalThis.MouseEvent>, item: Heading, behavior: ScrollBehavior) => void;
};
};
interface UseTocObserver {
activeId: string;
isObserve: boolean;
tocRef: React$1.RefObject<HTMLElement>;
}
declare const useTocObserver: ({ activeId, isObserve, tocRef, }: UseTocObserver) => {
offset: number;
visible: boolean;
};
declare const useTocSideBarState: ({ open, rootMargin, topOffset, }: TocSideBarProps) => {
activeContentId: string;
editor: _udecode_plate_core_react.PlateEditor;
headingList: Heading[];
mouseInToc: boolean;
open: boolean;
setIsObserve: React$1.Dispatch<React$1.SetStateAction<boolean>>;
setMouseInToc: React$1.Dispatch<React$1.SetStateAction<boolean>>;
tocRef: React$1.RefObject<HTMLElement>;
onContentScroll: ({ id, behavior, el, }: {
id: string;
el: HTMLElement;
behavior?: ScrollBehavior;
}) => void;
};
declare const useTocSideBar: ({ editor, mouseInToc, open, setIsObserve, setMouseInToc, tocRef, onContentScroll, }: ReturnType<typeof useTocSideBarState>) => {
navProps: {
ref: React$1.RefObject<HTMLElement>;
onMouseEnter: () => void;
onMouseLeave: (e: React$1.MouseEvent<HTMLElement, globalThis.MouseEvent>) => void;
};
onContentClick: (e: React$1.MouseEvent<HTMLElement, globalThis.MouseEvent>, item: Heading, behavior?: ScrollBehavior) => void;
};
declare function checkIn(e: React.MouseEvent<HTMLElement, globalThis.MouseEvent>): boolean;
declare const heightToTop: (ele: HTMLElement, editorContentRef?: React$1.RefObject<HTMLDivElement>) => number;
export { HeadingPlugin, TocPlugin, type TocSideBarProps, type UseContentController, checkIn, heightToTop, useContentController, useContentObserver, useTocController, useTocElement, useTocElementState, useTocObserver, useTocSideBar, useTocSideBarState };