@udecode/plate-alignment
Version:
Text alignment plugin for Plate
1 lines • 3.35 kB
Source Map (JSON)
{"version":3,"sources":["../../src/react/TextAlignPlugin.tsx","../../src/lib/BaseTextAlignPlugin.ts","../../src/lib/transforms/setAlign.ts"],"sourcesContent":["import { toPlatePlugin } from '@udecode/plate/react';\n\nimport { BaseTextAlignPlugin } from '../lib/index';\n\nexport const TextAlignPlugin = toPlatePlugin(BaseTextAlignPlugin);\n","import { bindFirst, createSlatePlugin, KEYS } from '@udecode/plate';\n\nimport { setAlign } from './transforms';\n\n/** Creates a plugin that adds alignment functionality to the editor. */\nexport const BaseTextAlignPlugin = createSlatePlugin({\n key: KEYS.textAlign,\n inject: {\n isBlock: true,\n nodeProps: {\n defaultNodeValue: 'start',\n nodeKey: 'align',\n styleKey: 'textAlign',\n validNodeValues: ['start', 'left', 'center', 'right', 'end', 'justify'],\n },\n targetPlugins: [KEYS.p],\n targetPluginToInject: ({ editor }) => ({\n parsers: {\n html: {\n deserializer: {\n parse: ({ element, node }) => {\n if (element.style.textAlign) {\n node[editor.getType(KEYS.textAlign)] = element.style.textAlign;\n }\n },\n },\n },\n },\n }),\n },\n}).extendTransforms(({ editor }) => ({\n set: bindFirst(setAlign, editor),\n}));\n","import {\n type SetNodesOptions,\n type SlateEditor,\n getInjectMatch,\n KEYS,\n} from '@udecode/plate';\n\nimport { BaseTextAlignPlugin } from '../BaseTextAlignPlugin';\n\nexport type Alignment =\n | 'center'\n | 'end'\n | 'justify'\n | 'left'\n | 'right'\n | 'start';\n\nexport const setAlign = (\n editor: SlateEditor,\n value: Alignment,\n setNodesOptions?: SetNodesOptions\n) => {\n const { defaultNodeValue, nodeKey } =\n editor.getInjectProps(BaseTextAlignPlugin);\n\n const match = getInjectMatch(\n editor,\n editor.getPlugin({ key: KEYS.textAlign })\n );\n\n if (value === defaultNodeValue) {\n editor.tf.unsetNodes(nodeKey!, {\n match,\n ...setNodesOptions,\n });\n } else {\n editor.tf.setNodes(\n { [nodeKey!]: value },\n {\n match: match as any,\n ...setNodesOptions,\n }\n );\n }\n};\n"],"mappings":";AAAA,SAAS,qBAAqB;;;ACA9B,SAAS,WAAW,mBAAmB,QAAAA,aAAY;;;ACAnD;AAAA,EAGE;AAAA,EACA;AAAA,OACK;AAYA,IAAM,WAAW,CACtB,QACA,OACA,oBACG;AACH,QAAM,EAAE,kBAAkB,QAAQ,IAChC,OAAO,eAAe,mBAAmB;AAE3C,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,OAAO,UAAU,EAAE,KAAK,KAAK,UAAU,CAAC;AAAA,EAC1C;AAEA,MAAI,UAAU,kBAAkB;AAC9B,WAAO,GAAG,WAAW,SAAU;AAAA,MAC7B;AAAA,MACA,GAAG;AAAA,IACL,CAAC;AAAA,EACH,OAAO;AACL,WAAO,GAAG;AAAA,MACR,EAAE,CAAC,OAAQ,GAAG,MAAM;AAAA,MACpB;AAAA,QACE;AAAA,QACA,GAAG;AAAA,MACL;AAAA,IACF;AAAA,EACF;AACF;;;ADvCO,IAAM,sBAAsB,kBAAkB;AAAA,EACnD,KAAKC,MAAK;AAAA,EACV,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,MACT,kBAAkB;AAAA,MAClB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,iBAAiB,CAAC,SAAS,QAAQ,UAAU,SAAS,OAAO,SAAS;AAAA,IACxE;AAAA,IACA,eAAe,CAACA,MAAK,CAAC;AAAA,IACtB,sBAAsB,CAAC,EAAE,OAAO,OAAO;AAAA,MACrC,SAAS;AAAA,QACP,MAAM;AAAA,UACJ,cAAc;AAAA,YACZ,OAAO,CAAC,EAAE,SAAS,KAAK,MAAM;AAC5B,kBAAI,QAAQ,MAAM,WAAW;AAC3B,qBAAK,OAAO,QAAQA,MAAK,SAAS,CAAC,IAAI,QAAQ,MAAM;AAAA,cACvD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC,EAAE,iBAAiB,CAAC,EAAE,OAAO,OAAO;AAAA,EACnC,KAAK,UAAU,UAAU,MAAM;AACjC,EAAE;;;AD5BK,IAAM,kBAAkB,cAAc,mBAAmB;","names":["KEYS","KEYS"]}