@atlaskit/editor-plugin-text-color
Version:
Text color plugin for @atlaskit/editor-core
68 lines (64 loc) • 2.64 kB
JavaScript
"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;
};