UNPKG

@atlaskit/editor-plugin-text-color

Version:

Text color plugin for @atlaskit/editor-core

68 lines (64 loc) 2.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDisabledStateNew = exports.getDisabledState = void 0; var _mark = require("@atlaskit/editor-common/mark"); var _constants = require("./constants"); var hasLinkMark = function hasLinkMark($pos) { var linkMarkType = $pos.doc.type.schema.marks.link, pos = $pos.pos; if (!linkMarkType) { return false; } return $pos.doc.rangeHasMark(pos, Math.min(pos + 1, $pos.doc.content.size), linkMarkType); }; /** * Use getDisabledStateNew instead and pass in `tr` */ var getDisabledState = exports.getDisabledState = function getDisabledState(state) { var textColor = state.schema.marks.textColor; if (textColor) { var _state$storedMarks; var _ref = state.selection, empty = _ref.empty, ranges = _ref.ranges, $cursor = _ref.$cursor; if (empty && !$cursor || $cursor && hasLinkMark($cursor) || (0, _mark.isMarkAllowedInRange)(state.doc, ranges, textColor) === false) { return true; } // Allow "excluded" marks that can be overridden // These marks are explicitly removed before applying the new mark (see toggleColor command) var omitOverrides = function omitOverrides(mark) { return !_constants.overrideMarks.includes(mark.type.name); }; if ((0, _mark.isMarkExcluded)(textColor, ((_state$storedMarks = state.storedMarks) === null || _state$storedMarks === void 0 ? void 0 : _state$storedMarks.filter(omitOverrides)) || $cursor && $cursor.marks().filter(omitOverrides))) { return true; } return false; } return true; }; var getDisabledStateNew = exports.getDisabledStateNew = function getDisabledStateNew(tr) { var textColor = tr.doc.type.schema.marks.textColor; if (textColor) { var _tr$storedMarks; var _ref2 = tr.selection, empty = _ref2.empty, ranges = _ref2.ranges, $cursor = _ref2.$cursor; if (empty && !$cursor || $cursor && hasLinkMark($cursor) || (0, _mark.isMarkAllowedInRange)(tr.doc, ranges, textColor) === false) { return true; } // Allow "excluded" marks that can be overridden // These marks are explicitly removed before applying the new mark (see toggleColor command) var omitOverrides = function omitOverrides(mark) { return !_constants.overrideMarks.includes(mark.type.name); }; if ((0, _mark.isMarkExcluded)(textColor, ((_tr$storedMarks = tr.storedMarks) === null || _tr$storedMarks === void 0 ? void 0 : _tr$storedMarks.filter(omitOverrides)) || $cursor && $cursor.marks().filter(omitOverrides))) { return true; } return false; } return true; };