UNPKG

@udecode/plate-heading

Version:

Headings plugin for Plate

79 lines (76 loc) 1.7 kB
// src/lib/BaseHeadingPlugin.ts import { createSlatePlugin, createTSlatePlugin, KEYS } from "@udecode/plate"; var BaseHeadingPlugin = createTSlatePlugin({ key: "heading", options: { levels: [1, 2, 3, 4, 5, 6] } }).extend(({ plugin }) => { const { options: { levels } } = plugin; const plugins = []; const headingLevels = Array.isArray(levels) ? levels : Array.from({ length: levels || 6 }, (_, i) => i + 1); headingLevels.forEach((level) => { const plugin2 = createSlatePlugin({ key: KEYS.heading[level - 1], node: { isElement: true }, parsers: { html: { deserializer: { rules: [ { validNodeName: `H${level}` } ] } } }, render: { as: `h${level}` } }); plugins.push(plugin2); }); return { plugins }; }); // src/lib/BaseTocPlugin.ts import { createTSlatePlugin as createTSlatePlugin2, KEYS as KEYS2 } from "@udecode/plate"; var BaseTocPlugin = createTSlatePlugin2({ key: KEYS2.toc, node: { isElement: true, isVoid: true }, options: { isScroll: true, topOffset: 80 } }); // src/lib/transforms/insertToc.ts import { KEYS as KEYS3 } from "@udecode/plate"; var insertToc = (editor, options) => { editor.tf.insertNodes( { children: [{ text: "" }], type: editor.getType(KEYS3.toc) }, options ); }; // src/lib/utils/isHeading.ts import { KEYS as KEYS4 } from "@udecode/plate"; var isHeading = (node) => { return node.type && KEYS4.heading.includes(node.type); }; export { BaseHeadingPlugin, BaseTocPlugin, insertToc, isHeading }; //# sourceMappingURL=index.mjs.map