@atlaskit/editor-plugin-block-type
Version:
BlockType plugin for @atlaskit/editor-core
176 lines (175 loc) • 7.96 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getBlockTypeComponents = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _blockMenu = require("@atlaskit/editor-common/block-menu");
var _key = require("@atlaskit/editor-common/block-menu/key");
var _rank = require("@atlaskit/editor-common/block-menu/rank");
var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
var _HeadingBlockMenuItem = require("./HeadingBlockMenuItem");
var _ParagraphBlockMenuItem = require("./ParagraphBlockMenuItem");
var _QuoteBlockMenuItem = require("./QuoteBlockMenuItem");
var _SmallTextBlockMenuItem = require("./SmallTextBlockMenuItem");
var HEADING_NODE_NAME = 'heading';
var QUOTE_NODE_NAME = 'blockquote';
var PARAGRAPH_NODE_NAME = 'paragraph';
var getBlockTypeComponents = exports.getBlockTypeComponents = function getBlockTypeComponents(api) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
allowFontSize = _ref.allowFontSize;
var isSmallTextExperimentEnabled = (0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_block_menu_small_text');
var isSmallTextEnabled = Boolean(allowFontSize && isSmallTextExperimentEnabled);
var textFormattingRank = isSmallTextExperimentEnabled ? _rank.TRANSFORM_TEXT_FORMATTING_MENU_SECTION_RANK : _blockMenu.TRANSFORM_HEADINGS_MENU_SECTION_RANK;
var isTransformHeadingDisabled = function isTransformHeadingDisabled(level) {
var _api$blockMenu;
return Boolean(api === null || api === void 0 || (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 ? void 0 : _api$blockMenu.actions.isTransformOptionDisabled(HEADING_NODE_NAME, {
level: level
}));
};
return [{
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_HEADINGS_H1_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key,
rank: textFormattingRank[_blockMenu.TRANSFORM_HEADINGS_H1_MENU_ITEM.key]
},
component: (0, _HeadingBlockMenuItem.createHeadingBlockMenuItem)({
level: 1,
api: api
}),
isHidden: function isHidden() {
return isTransformHeadingDisabled(1);
}
}, {
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_HEADINGS_H2_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key,
rank: textFormattingRank[_blockMenu.TRANSFORM_HEADINGS_H2_MENU_ITEM.key]
},
component: (0, _HeadingBlockMenuItem.createHeadingBlockMenuItem)({
level: 2,
api: api
}),
isHidden: function isHidden() {
return isTransformHeadingDisabled(2);
}
}, {
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_HEADINGS_H3_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key,
rank: textFormattingRank[_blockMenu.TRANSFORM_HEADINGS_H3_MENU_ITEM.key]
},
component: (0, _HeadingBlockMenuItem.createHeadingBlockMenuItem)({
level: 3,
api: api
}),
isHidden: function isHidden() {
return isTransformHeadingDisabled(3);
}
}, {
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_HEADINGS_H4_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key,
rank: textFormattingRank[_blockMenu.TRANSFORM_HEADINGS_H4_MENU_ITEM.key]
},
component: (0, _HeadingBlockMenuItem.createHeadingBlockMenuItem)({
level: 4,
api: api
}),
isHidden: function isHidden() {
return isTransformHeadingDisabled(4);
}
}, {
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_HEADINGS_H5_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key,
rank: textFormattingRank[_blockMenu.TRANSFORM_HEADINGS_H5_MENU_ITEM.key]
},
component: (0, _HeadingBlockMenuItem.createHeadingBlockMenuItem)({
level: 5,
api: api
}),
isHidden: function isHidden() {
return isTransformHeadingDisabled(5);
}
}, {
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_HEADINGS_H6_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key,
rank: textFormattingRank[_blockMenu.TRANSFORM_HEADINGS_H6_MENU_ITEM.key]
},
component: (0, _HeadingBlockMenuItem.createHeadingBlockMenuItem)({
level: 6,
api: api
}),
isHidden: function isHidden() {
return isTransformHeadingDisabled(6);
}
}, {
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_STRUCTURE_QUOTE_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: isSmallTextExperimentEnabled ? _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key : _blockMenu.TRANSFORM_STRUCTURE_MENU_SECTION.key,
rank: isSmallTextExperimentEnabled ? _rank.TRANSFORM_TEXT_FORMATTING_MENU_SECTION_RANK[_blockMenu.TRANSFORM_STRUCTURE_QUOTE_MENU_ITEM.key] : _blockMenu.TRANSFORM_STRUCTURE_MENU_SECTION_RANK[_blockMenu.TRANSFORM_STRUCTURE_QUOTE_MENU_ITEM.key]
},
component: (0, _QuoteBlockMenuItem.createQuoteBlockMenuItem)({
api: api
}),
isHidden: function isHidden() {
var _api$blockMenu2;
return Boolean(api === null || api === void 0 || (_api$blockMenu2 = api.blockMenu) === null || _api$blockMenu2 === void 0 ? void 0 : _api$blockMenu2.actions.isTransformOptionDisabled(QUOTE_NODE_NAME));
}
}, {
type: 'block-menu-item',
key: _blockMenu.TRANSFORM_STRUCTURE_PARAGRAPH_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: isSmallTextExperimentEnabled ? _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key : _blockMenu.TRANSFORM_STRUCTURE_MENU_SECTION.key,
rank: isSmallTextExperimentEnabled ? _rank.TRANSFORM_TEXT_FORMATTING_MENU_SECTION_RANK[_blockMenu.TRANSFORM_STRUCTURE_PARAGRAPH_MENU_ITEM.key] : _blockMenu.TRANSFORM_STRUCTURE_MENU_SECTION_RANK[_blockMenu.TRANSFORM_STRUCTURE_PARAGRAPH_MENU_ITEM.key]
},
component: (0, _ParagraphBlockMenuItem.createParagraphBlockMenuItem)({
api: api
}),
isHidden: function isHidden() {
var _api$blockMenu3;
return Boolean(api === null || api === void 0 || (_api$blockMenu3 = api.blockMenu) === null || _api$blockMenu3 === void 0 ? void 0 : _api$blockMenu3.actions.isTransformOptionDisabled(PARAGRAPH_NODE_NAME, undefined, isSmallTextExperimentEnabled ? {
marksToRemove: ['fontSize']
} : undefined));
}
}].concat((0, _toConsumableArray2.default)(isSmallTextEnabled ? [{
type: 'block-menu-item',
key: _key.TRANSFORM_TEXT_FORMATTING_SMALL_TEXT_MENU_ITEM.key,
parent: {
type: 'block-menu-section',
key: _key.TRANSFORM_TEXTFORMATTING_MENU_SECTION.key,
rank: _rank.TRANSFORM_TEXT_FORMATTING_MENU_SECTION_RANK[_key.TRANSFORM_TEXT_FORMATTING_SMALL_TEXT_MENU_ITEM.key]
},
component: (0, _SmallTextBlockMenuItem.createSmallTextBlockMenuItem)({
api: api
}),
isHidden: function isHidden() {
var _api$core$sharedState, _api$blockMenu4;
return !(api !== null && api !== void 0 && (_api$core$sharedState = api.core.sharedState.currentState()) !== null && _api$core$sharedState !== void 0 && (_api$core$sharedState = _api$core$sharedState.schema) !== null && _api$core$sharedState !== void 0 && _api$core$sharedState.marks.fontSize) || Boolean(api === null || api === void 0 || (_api$blockMenu4 = api.blockMenu) === null || _api$blockMenu4 === void 0 ? void 0 : _api$blockMenu4.actions.isTransformOptionDisabled(PARAGRAPH_NODE_NAME, undefined, {
marksToAdd: {
fontSize: {
fontSize: 'small'
}
}
}));
}
}] : []));
};