UNPKG

@atlaskit/editor-plugin-show-diff

Version:

ShowDiff plugin for @atlaskit/editor-core

60 lines (59 loc) 2.36 kB
import { convertToInlineCss } from '@atlaskit/editor-common/lazy-node-view'; import { Decoration } from '@atlaskit/editor-prosemirror/view'; import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals'; import { editingStyle, editingStyleActive, deletedContentStyle, deletedContentStyleActive } from './colorSchemes/standard'; import { traditionalInsertStyle, traditionalInsertStyleActive, getDeletedTraditionalInlineStyle } from './colorSchemes/traditional'; var displayNoneStyle = convertToInlineCss({ display: 'none' }); /** * Inline decoration used for insertions as the content already exists in the document * * @param change Changeset "change" containing information about the change content + range * @returns Prosemirror inline decoration */ export var createInlineChangedDecoration = function createInlineChangedDecoration(_ref) { var change = _ref.change, colorScheme = _ref.colorScheme, _ref$isActive = _ref.isActive, isActive = _ref$isActive === void 0 ? false : _ref$isActive, _ref$isInserted = _ref.isInserted, isInserted = _ref$isInserted === void 0 ? true : _ref$isInserted, _ref$shouldHideDelete = _ref.shouldHideDeleted, shouldHideDeleted = _ref$shouldHideDelete === void 0 ? false : _ref$shouldHideDelete; if (shouldHideDeleted) { return Decoration.inline(change.fromB, change.toB, { style: displayNoneStyle }, { key: 'diff-inline' }); } var style; if (expValEquals('platform_editor_diff_plugin_extended', 'isEnabled', true)) { if (isInserted) { if (colorScheme === 'traditional') { style = isActive ? traditionalInsertStyleActive : traditionalInsertStyle; } else { style = isActive ? editingStyleActive : editingStyle; } } else { if (colorScheme === 'traditional') { style = getDeletedTraditionalInlineStyle(false); } else { style = isActive ? deletedContentStyleActive : deletedContentStyle; } } } else { if (colorScheme === 'traditional') { style = isActive ? traditionalInsertStyleActive : traditionalInsertStyle; } else { style = isActive ? editingStyleActive : editingStyle; } } return Decoration.inline(change.fromB, change.toB, { style: style, 'data-testid': 'show-diff-changed-decoration' }, { key: 'diff-inline' }); };