UNPKG

@atlaskit/editor-plugin-paste

Version:

Paste plugin for @atlaskit/editor-core

30 lines 1.16 kB
import { pluginFactory } from '@atlaskit/editor-common/utils'; // eslint-disable-next-line @typescript-eslint/consistent-type-imports import { PluginKey } from '@atlaskit/editor-prosemirror/state'; import { reducer } from './reducer'; export const pluginKey = new PluginKey('pastePlugin'); const dest = pluginFactory(pluginKey, reducer, { mapping: (tr, pluginState) => { if (tr.docChanged) { let atLeastOnePositionChanged = false; const positionsMappedThroughChanges = Object.entries(pluginState.pastedMacroPositions).reduce((acc, [key, position]) => { const mappedPosition = tr.mapping.map(position); if (position !== mappedPosition) { atLeastOnePositionChanged = true; } acc[key] = tr.mapping.map(position); return acc; }, {}); if (atLeastOnePositionChanged) { return { ...pluginState, pastedMacroPositions: positionsMappedThroughChanges }; } } return pluginState; } }); export const createPluginState = dest.createPluginState; export const createCommand = dest.createCommand; export const getPluginState = dest.getPluginState;