UNPKG

@atlaskit/editor-plugin-alignment

Version:

Alignment plugin for @atlaskit/editor-core

36 lines 1.25 kB
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin'; import { PluginKey } from '@atlaskit/editor-prosemirror/state'; import { isAlignable } from '../editor-commands'; import { getActiveAlignment } from './utils'; function createInitialPluginState(editorState, pluginConfig) { return { align: getActiveAlignment(editorState) || pluginConfig.align, isEnabled: true }; } export const pluginKey = new PluginKey('alignmentPlugin'); export function createPlugin(dispatch, pluginConfig) { return new SafePlugin({ key: pluginKey, state: { init(_, editorState) { return createInitialPluginState(editorState, pluginConfig); }, apply(_tr, state, _prevState, nextState) { // Ignored via go/ees005 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const nextPluginState = getActiveAlignment(nextState); const isEnabled = isAlignable(nextPluginState)(nextState); const newState = { ...state, align: nextPluginState, isEnabled }; if (nextPluginState !== state.align || isEnabled !== state.isEnabled) { dispatch(pluginKey, newState); } return newState; } } }); }