UNPKG

@udecode/plate-alignment

Version:

Text alignment plugin for Plate

64 lines (62 loc) 1.55 kB
// src/lib/BaseTextAlignPlugin.ts import { bindFirst, createSlatePlugin, KEYS as KEYS2 } from "@udecode/plate"; // src/lib/transforms/setAlign.ts import { getInjectMatch, KEYS } from "@udecode/plate"; var setAlign = (editor, value, setNodesOptions) => { const { defaultNodeValue, nodeKey } = editor.getInjectProps(BaseTextAlignPlugin); const match = getInjectMatch( editor, editor.getPlugin({ key: KEYS.textAlign }) ); if (value === defaultNodeValue) { editor.tf.unsetNodes(nodeKey, { match, ...setNodesOptions }); } else { editor.tf.setNodes( { [nodeKey]: value }, { match, ...setNodesOptions } ); } }; // src/lib/BaseTextAlignPlugin.ts var BaseTextAlignPlugin = createSlatePlugin({ key: KEYS2.textAlign, inject: { isBlock: true, nodeProps: { defaultNodeValue: "start", nodeKey: "align", styleKey: "textAlign", validNodeValues: ["start", "left", "center", "right", "end", "justify"] }, targetPlugins: [KEYS2.p], targetPluginToInject: ({ editor }) => ({ parsers: { html: { deserializer: { parse: ({ element, node }) => { if (element.style.textAlign) { node[editor.getType(KEYS2.textAlign)] = element.style.textAlign; } } } } } }) } }).extendTransforms(({ editor }) => ({ set: bindFirst(setAlign, editor) })); export { BaseTextAlignPlugin, setAlign }; //# sourceMappingURL=index.mjs.map