UNPKG

@atlaskit/editor-plugin-text-color

Version:

Text color plugin for @atlaskit/editor-core

91 lines (90 loc) 4.28 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.ACTIONS = void 0; exports.createPlugin = createPlugin; exports.pluginKey = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _safePlugin = require("@atlaskit/editor-common/safe-plugin"); var _uiColor = require("@atlaskit/editor-common/ui-color"); var _state = require("@atlaskit/editor-prosemirror/state"); var _color = require("./utils/color"); var _constants = require("./utils/constants"); var _disabled = require("./utils/disabled"); 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) { (0, _defineProperty2.default)(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; } function createInitialPluginState(editorState, pluginConfig) { var defaultColor = (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.defaultColor) || _constants.DEFAULT_COLOR; var palette = [{ value: defaultColor.color, label: defaultColor.label, border: "var(--ds-border, #0B120E24)" }].concat((0, _toConsumableArray2.default)(_uiColor.textColorPalette)); var state = { color: (0, _color.getActiveColor)(editorState), disabled: (0, _disabled.getDisabledState)(editorState), palette: palette, defaultColor: defaultColor.color, isPaletteOpen: false }; return state; } var ACTIONS = exports.ACTIONS = /*#__PURE__*/function (ACTIONS) { ACTIONS[ACTIONS["RESET_COLOR"] = 0] = "RESET_COLOR"; ACTIONS[ACTIONS["SET_COLOR"] = 1] = "SET_COLOR"; ACTIONS[ACTIONS["DISABLE"] = 2] = "DISABLE"; ACTIONS[ACTIONS["SET_PALETTE"] = 3] = "SET_PALETTE"; return ACTIONS; }({}); var pluginKey = exports.pluginKey = new _state.PluginKey('textColorPlugin'); function createPlugin(dispatch, pluginConfig) { return new _safePlugin.SafePlugin({ key: pluginKey, state: { init: function init(_config, editorState) { return createInitialPluginState(editorState, pluginConfig); }, apply: function apply(tr, pluginState, _, newState) { var meta = tr.getMeta(pluginKey) || {}; var nextState; switch (meta.action) { case ACTIONS.RESET_COLOR: nextState = _objectSpread(_objectSpread({}, pluginState), {}, { color: pluginState.defaultColor }); break; case ACTIONS.SET_COLOR: nextState = _objectSpread(_objectSpread({}, pluginState), {}, { color: meta.color, disabled: false, isPaletteOpen: false }); break; case ACTIONS.DISABLE: nextState = _objectSpread(_objectSpread({}, pluginState), {}, { disabled: true }); break; case ACTIONS.SET_PALETTE: nextState = _objectSpread(_objectSpread({}, pluginState), {}, { isPaletteOpen: meta.isPaletteOpen }); break; default: nextState = _objectSpread(_objectSpread({}, pluginState), {}, { color: (0, _color.getActiveColor)(newState), disabled: (0, _disabled.getDisabledState)(newState) }); } if (pluginState && pluginState.color !== nextState.color || pluginState && pluginState.disabled !== nextState.disabled || pluginState && pluginState.isPaletteOpen !== nextState.isPaletteOpen) { dispatch(pluginKey, nextState); return nextState; } return pluginState; } } }); }