UNPKG

@atlaskit/editor-plugin-rule

Version:

Rule plugin for @atlaskit/editor-core

137 lines • 5.94 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } import { ACTION, ACTION_SUBJECT, EVENT_TYPE, INPUT_METHOD } from '@atlaskit/editor-common/analytics/types/enums'; import { findSelectedNodeOfType, removeSelectedNode } from '@atlaskit/editor-prosemirror/utils'; import { DEFAULT_DIVIDER_STYLE, DEFAULT_DIVIDER_WEIGHT } from '../ui/constants'; import { createHorizontalRule } from './input-rule'; export var insertHorizontalRule = function insertHorizontalRule(editorAnalyticsAPI) { return function (inputMethod) { return function (state, dispatch) { var tr = createHorizontalRule(state, state.selection.from, state.selection.to, inputMethod, editorAnalyticsAPI); if (tr) { if (dispatch) { dispatch(tr); } return true; } return false; }; }; }; export var removeHorizontalRule = function removeHorizontalRule(editorAnalyticsAPI) { return function (state, dispatch) { var rule = state.schema.nodes.rule; if (!findSelectedNodeOfType(rule)(state.selection)) { return false; } if (dispatch) { var deleteTr = removeSelectedNode(state.tr); var payload = { action: ACTION.DELETED, actionSubject: ACTION_SUBJECT.DIVIDER, attributes: { inputMethod: INPUT_METHOD.FLOATING_TB }, eventType: EVENT_TYPE.TRACK }; editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(payload)(deleteTr); dispatch(deleteTr); } return true; }; }; export var updateHorizontalRuleWeight = function updateHorizontalRuleWeight(weight, editorAnalyticsAPI) { return function (state, dispatch) { var _selectedRule$node$at; var rule = state.schema.nodes.rule; var selectedRule = findSelectedNodeOfType(rule)(state.selection); if (!selectedRule) { return false; } var previousWeight = (_selectedRule$node$at = selectedRule.node.attrs.weight) !== null && _selectedRule$node$at !== void 0 ? _selectedRule$node$at : DEFAULT_DIVIDER_WEIGHT; if (previousWeight === weight) { return true; } if (dispatch) { var updateTr = state.tr.setNodeMarkup(selectedRule.pos, undefined, _objectSpread(_objectSpread({}, selectedRule.node.attrs), {}, { weight: weight })); editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({ action: ACTION.UPDATED, actionSubject: ACTION_SUBJECT.DIVIDER, attributes: { inputMethod: INPUT_METHOD.FLOATING_TB, previousWeight: previousWeight, weight: weight }, eventType: EVENT_TYPE.TRACK })(updateTr); dispatch(updateTr); } return true; }; }; export var updateHorizontalRuleStyle = function updateHorizontalRuleStyle(style, editorAnalyticsAPI) { return function (state, dispatch) { var _selectedRule$node$at2; var rule = state.schema.nodes.rule; var selectedRule = findSelectedNodeOfType(rule)(state.selection); if (!selectedRule) { return false; } var previousStyle = (_selectedRule$node$at2 = selectedRule.node.attrs.style) !== null && _selectedRule$node$at2 !== void 0 ? _selectedRule$node$at2 : DEFAULT_DIVIDER_STYLE; if (previousStyle === style) { return true; } if (dispatch) { var updateTr = state.tr.setNodeMarkup(selectedRule.pos, undefined, _objectSpread(_objectSpread({}, selectedRule.node.attrs), {}, { style: style })); editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({ action: ACTION.UPDATED, actionSubject: ACTION_SUBJECT.DIVIDER, attributes: { inputMethod: INPUT_METHOD.FLOATING_TB, previousStyle: previousStyle, style: style }, eventType: EVENT_TYPE.TRACK })(updateTr); dispatch(updateTr); } return true; }; }; export var updateHorizontalRuleColor = function updateHorizontalRuleColor(color, editorAnalyticsAPI) { return function (state, dispatch) { var rule = state.schema.nodes.rule; var selectedRule = findSelectedNodeOfType(rule)(state.selection); if (!selectedRule) { return false; } var defaultColor = "var(--ds-border, #0B120E24)"; var previousColor = typeof selectedRule.node.attrs.color === 'string' ? selectedRule.node.attrs.color : null; var updatedColor = color === defaultColor ? null : color; if (previousColor === updatedColor) { return true; } if (dispatch) { var updateTr = state.tr.setNodeMarkup(selectedRule.pos, undefined, _objectSpread(_objectSpread({}, selectedRule.node.attrs), {}, { color: updatedColor })); editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({ action: ACTION.UPDATED, actionSubject: ACTION_SUBJECT.DIVIDER, attributes: { inputMethod: INPUT_METHOD.FLOATING_TB, previousColor: previousColor, color: updatedColor }, eventType: EVENT_TYPE.TRACK })(updateTr); dispatch(updateTr); } return true; }; };