UNPKG

@atlaskit/editor-plugin-highlight

Version:

Highlight plugin for @atlaskit/editor-core

62 lines 2.45 kB
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics'; import { removeMark, toggleMark } from '@atlaskit/editor-common/mark'; import { highlightColorPalette, REMOVE_HIGHLIGHT_COLOR } from '@atlaskit/editor-common/ui-color'; import { HighlightPluginAction, highlightPluginKey } from '../pm-plugins/main'; import { getActiveColor } from './color'; export var changeColor = function changeColor(editorAnalyticsAPI) { return function (_ref) { var color = _ref.color, inputMethod = _ref.inputMethod; return function (_ref2) { var tr = _ref2.tr; var backgroundColor = tr.doc.type.schema.marks.backgroundColor; if (!backgroundColor) { return null; } editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(createAnalyticsEvent(color, inputMethod, tr))(tr); tr.scrollIntoView(); if (color === REMOVE_HIGHLIGHT_COLOR) { removeMark(backgroundColor)({ tr: tr }); } else { tr.setMeta(highlightPluginKey, { type: HighlightPluginAction.CHANGE_COLOR, color: color }); toggleMark(backgroundColor, { color: color })({ tr: tr }); } return tr; }; }; }; var createAnalyticsEvent = function createAnalyticsEvent(color, inputMethod, tr) { var _getActiveColor; var previousColor = (_getActiveColor = getActiveColor(tr)) !== null && _getActiveColor !== void 0 ? _getActiveColor : REMOVE_HIGHLIGHT_COLOR; // get color names from palette var newColorFromPalette = highlightColorPalette.find(function (_ref3) { var value = _ref3.value; return value === color; }); var previousColorFromPalette = highlightColorPalette.find(function (_ref4) { var value = _ref4.value; return value === previousColor; }); var newColorLabel = newColorFromPalette ? newColorFromPalette.label : color; var previousColorLabel = previousColorFromPalette ? previousColorFromPalette.label : previousColor; return { action: ACTION.FORMATTED, actionSubject: ACTION_SUBJECT.TEXT, actionSubjectId: ACTION_SUBJECT_ID.FORMAT_BACKGROUND_COLOR, eventType: EVENT_TYPE.TRACK, attributes: { newColor: newColorLabel.toLowerCase(), previousColor: previousColorLabel ? previousColorLabel.toLowerCase() : '', inputMethod: inputMethod } }; };