UNPKG

@udecode/plate-alignment

Version:

Text alignment plugin for Plate

93 lines (87 loc) 2.83 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/react/index.ts var react_exports = {}; __export(react_exports, { TextAlignPlugin: () => TextAlignPlugin }); module.exports = __toCommonJS(react_exports); // src/react/TextAlignPlugin.tsx var import_react = require("@udecode/plate/react"); // src/lib/BaseTextAlignPlugin.ts var import_plate2 = require("@udecode/plate"); // src/lib/transforms/setAlign.ts var import_plate = require("@udecode/plate"); var setAlign = (editor, value, setNodesOptions) => { const { defaultNodeValue, nodeKey } = editor.getInjectProps(BaseTextAlignPlugin); const match = (0, import_plate.getInjectMatch)( editor, editor.getPlugin({ key: import_plate.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 = (0, import_plate2.createSlatePlugin)({ key: import_plate2.KEYS.textAlign, inject: { isBlock: true, nodeProps: { defaultNodeValue: "start", nodeKey: "align", styleKey: "textAlign", validNodeValues: ["start", "left", "center", "right", "end", "justify"] }, targetPlugins: [import_plate2.KEYS.p], targetPluginToInject: ({ editor }) => ({ parsers: { html: { deserializer: { parse: ({ element, node }) => { if (element.style.textAlign) { node[editor.getType(import_plate2.KEYS.textAlign)] = element.style.textAlign; } } } } } }) } }).extendTransforms(({ editor }) => ({ set: (0, import_plate2.bindFirst)(setAlign, editor) })); // src/react/TextAlignPlugin.tsx var TextAlignPlugin = (0, import_react.toPlatePlugin)(BaseTextAlignPlugin); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { TextAlignPlugin }); //# sourceMappingURL=index.js.map