@atlaskit/renderer
Version:
Renderer component
667 lines (661 loc) • 21.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BlockCard = void 0;
Object.defineProperty(exports, "Blockquote", {
enumerable: true,
get: function get() {
return _blockquote.default;
}
});
Object.defineProperty(exports, "BodiedExtension", {
enumerable: true,
get: function get() {
return _bodiedExtension.default;
}
});
Object.defineProperty(exports, "BulletList", {
enumerable: true,
get: function get() {
return _bulletList.default;
}
});
Object.defineProperty(exports, "Caption", {
enumerable: true,
get: function get() {
return _caption.default;
}
});
exports.DecisionList = exports.DecisionItem = exports.Date = exports.CodeBlock = void 0;
Object.defineProperty(exports, "Doc", {
enumerable: true,
get: function get() {
return _doc.default;
}
});
Object.defineProperty(exports, "DocWithSelectAllTrap", {
enumerable: true,
get: function get() {
return _doc.DocWithSelectAllTrap;
}
});
exports.Expand = exports.Emoji = exports.EmbedCard = void 0;
Object.defineProperty(exports, "Extension", {
enumerable: true,
get: function get() {
return _extension.default;
}
});
Object.defineProperty(exports, "ExtensionFrame", {
enumerable: true,
get: function get() {
return _extensionFrame.default;
}
});
Object.defineProperty(exports, "HardBreak", {
enumerable: true,
get: function get() {
return _hardBreak.default;
}
});
Object.defineProperty(exports, "Heading", {
enumerable: true,
get: function get() {
return _heading.default;
}
});
exports.InlineCard = void 0;
Object.defineProperty(exports, "InlineExtension", {
enumerable: true,
get: function get() {
return _inlineExtension.default;
}
});
Object.defineProperty(exports, "LayoutColumn", {
enumerable: true,
get: function get() {
return _layoutColumn.default;
}
});
Object.defineProperty(exports, "LayoutSection", {
enumerable: true,
get: function get() {
return _layoutSection.default;
}
});
Object.defineProperty(exports, "ListItem", {
enumerable: true,
get: function get() {
return _listItem.default;
}
});
exports.Mention = exports.MediaSingle = exports.MediaInline = exports.MediaGroup = exports.Media = void 0;
Object.defineProperty(exports, "MultiBodiedExtension", {
enumerable: true,
get: function get() {
return _multiBodiedExtension.default;
}
});
Object.defineProperty(exports, "OrderedList", {
enumerable: true,
get: function get() {
return _orderedList.default;
}
});
exports.Panel = void 0;
Object.defineProperty(exports, "Paragraph", {
enumerable: true,
get: function get() {
return _paragraph.default;
}
});
Object.defineProperty(exports, "Placeholder", {
enumerable: true,
get: function get() {
return _placeholder.default;
}
});
Object.defineProperty(exports, "Rule", {
enumerable: true,
get: function get() {
return _rule.default;
}
});
exports.Status = void 0;
Object.defineProperty(exports, "Table", {
enumerable: true,
get: function get() {
return _table.default;
}
});
Object.defineProperty(exports, "TableCell", {
enumerable: true,
get: function get() {
return _tableCell.TableCell;
}
});
Object.defineProperty(exports, "TableRow", {
enumerable: true,
get: function get() {
return _tableRow.default;
}
});
exports.TaskList = exports.TaskItem = void 0;
Object.defineProperty(exports, "UnknownBlock", {
enumerable: true,
get: function get() {
return _unknownBlock.default;
}
});
exports.isText = exports.isEmojiDoc = exports.WindowedCodeBlock = void 0;
exports.isTextNode = isTextNode;
exports.toReact = exports.nodeToReact = exports.mergeTextNodes = exports.isTextWrapper = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _reactLoadable = _interopRequireDefault(require("react-loadable"));
var _ui = require("@atlaskit/editor-common/ui");
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
var _blockquote = _interopRequireDefault(require("./blockquote"));
var _bodiedExtension = _interopRequireDefault(require("./bodiedExtension"));
var _multiBodiedExtension = _interopRequireDefault(require("./multiBodiedExtension"));
var _extensionFrame = _interopRequireDefault(require("./extensionFrame"));
var _bulletList = _interopRequireDefault(require("./bulletList"));
var _doc = _interopRequireWildcard(require("./doc"));
var _extension = _interopRequireDefault(require("./extension"));
var _hardBreak = _interopRequireDefault(require("./hardBreak"));
var _heading = _interopRequireDefault(require("./heading"));
var _inlineExtension = _interopRequireDefault(require("./inlineExtension"));
var _layoutSection = _interopRequireDefault(require("./layoutSection"));
var _layoutColumn = _interopRequireDefault(require("./layoutColumn"));
var _listItem = _interopRequireDefault(require("./listItem"));
var _caption = _interopRequireDefault(require("./caption"));
var _orderedList = _interopRequireDefault(require("./orderedList"));
var _paragraph = _interopRequireDefault(require("./paragraph"));
var _placeholder = _interopRequireDefault(require("./placeholder"));
var _rule = _interopRequireDefault(require("./rule"));
var _table = _interopRequireDefault(require("./table"));
var _tableCell = require("./tableCell");
var _tableRow = _interopRequireDefault(require("./tableRow"));
var _unknownBlock = _interopRequireDefault(require("./unknownBlock"));
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 _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } /* eslint-disable @atlaskit/editor/no-re-export */ // Mapping file
// Ignored via go/ees005
// eslint-disable-next-line import/no-named-as-default
var WindowedCodeBlock = exports.WindowedCodeBlock = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_WindowedCodeBlock" */
'./codeBlock/windowedCodeBlock'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var CodeBlock = exports.CodeBlock = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_CodeBlock" */
'./codeBlock/codeBlock'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var TaskList = exports.TaskList = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_TaskList" */
'./taskList'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var TaskItem = exports.TaskItem = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_TaskItem" */
'./taskItem'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var DecisionList = exports.DecisionList = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_DecisionList" */
'./decisionList'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var DecisionItem = exports.DecisionItem = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_DecisionItem" */
'./decisionItem'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var Date = exports.Date = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_Date" */
'./date'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var Status = exports.Status = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_Status" */
'./status'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var Emoji = exports.Emoji = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_Emoji" */
'./emoji'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var Panel = exports.Panel = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_Panel" */
'./panel'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var EmbedCard = exports.EmbedCard = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_EmbedCard" */
'./embedCard'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var InlineCard = exports.InlineCard = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_InlineCard" */
'./inlineCard'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var BlockCard = exports.BlockCard = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_BlockCard" */
'./blockCard'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var Media = exports.Media = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_Media" */
'./media'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var MediaGroup = exports.MediaGroup = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_MediaGroup" */
'./mediaGroup'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var MediaInline = exports.MediaInline = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_MediaInline" */
'./mediaInline'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var MediaSingle = exports.MediaSingle = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_MediaSingle" */
'./mediaSingle'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var Mention = exports.Mention = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_Mention" */
'./mention'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var Expand = exports.Expand = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_Expand" */
'../../ui/Expand'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var SyncBlockLoader = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_SyncBlock" */
'./syncBlock'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var BodiedSyncBlock = (0, _reactLoadable.default)({
loader: function loader() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_renderer-node_BodiedSyncBlock" */'./bodiedSyncBlock'));
}).then(function (mod) {
return mod.default;
});
},
loading: function loading() {
return null;
}
});
var nodeToReact = exports.nodeToReact = {
blockquote: _blockquote.default,
bulletList: _bulletList.default,
blockCard: BlockCard,
caption: _caption.default,
date: Date,
decisionItem: DecisionItem,
decisionList: DecisionList,
doc: _doc.default,
emoji: Emoji,
extension: _extension.default,
bodiedExtension: _bodiedExtension.default,
multiBodiedExtension: _multiBodiedExtension.default,
extensionFrame: _extensionFrame.default,
hardBreak: _hardBreak.default,
heading: _heading.default,
inlineCard: InlineCard,
inlineExtension: _inlineExtension.default,
layoutSection: _layoutSection.default,
layoutColumn: _layoutColumn.default,
listItem: _listItem.default,
media: Media,
mediaGroup: MediaGroup,
mediaInline: MediaInline,
mediaSingle: MediaSingle,
mention: Mention,
orderedList: _orderedList.default,
panel: Panel,
panel_c1: Panel,
paragraph: _paragraph.default,
placeholder: _placeholder.default,
rule: _rule.default,
status: Status,
taskItem: TaskItem,
taskList: TaskList,
table: _table.default,
tableCell: _tableCell.TableCell,
tableHeader: _tableCell.TableHeader,
tableRow: _tableRow.default,
unknownBlock: _unknownBlock.default,
unsupportedBlock: _ui.UnsupportedBlock,
unsupportedInline: _ui.UnsupportedInline,
expand: Expand,
syncBlock: SyncBlockLoader,
bodiedSyncBlock: BodiedSyncBlock,
nestedExpand: Expand,
embedCard: EmbedCard,
blockTaskItem: TaskItem
};
var toReact = exports.toReact = function toReact(node, flags, nodeComponents
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-explicit-any
) {
if (node.type.name === 'doc' && (flags === null || flags === void 0 ? void 0 : flags.allowSelectAllTrap) === true) {
return _doc.DocWithSelectAllTrap;
}
if (!(0, _platformFeatureFlags.fg)('jfp-magma-ssr-iv-editor-codeblock')) {
if (node.type.name === 'codeBlock') {
if ((flags === null || flags === void 0 ? void 0 : flags.allowWindowedCodeBlock) === true) {
return WindowedCodeBlock;
}
return CodeBlock;
}
}
// Allowing custom components to override those provided in nodeToReact
var nodes = _objectSpread(_objectSpread({}, nodeToReact), nodeComponents);
if ((0, _platformFeatureFlags.fg)('jfp-magma-ssr-iv-editor-codeblock')) {
if (node.type.name === 'codeBlock') {
var _nodes$codeBlock;
if ((flags === null || flags === void 0 ? void 0 : flags.allowWindowedCodeBlock) === true) {
var _nodes$windowedCodeBl;
return (_nodes$windowedCodeBl = nodes.windowedCodeBlock) !== null && _nodes$windowedCodeBl !== void 0 ? _nodes$windowedCodeBl : WindowedCodeBlock;
}
return (_nodes$codeBlock = nodes.codeBlock) !== null && _nodes$codeBlock !== void 0 ? _nodes$codeBlock : CodeBlock;
}
}
nodes['multiBodiedExtension'] = _multiBodiedExtension.default;
return nodes[node.type.name];
};
/*
* Wraps adjacent textnodes in a textWrapper
*
* Input:
* [
* {
* type: 'text',
* text: 'Hello'
* },
* {
* type: 'text',
* text: 'World!',
* marks: [
* {
* type: 'strong'
* }
* ]
* }
* ]
*
* Output:
* [
* {
* type: 'textWrapper',
* content: [
* {
* type: 'text',
* text: 'Hello'
* },
* {
* type: 'text',
* text: 'World!',
* marks: [
* {
* type: 'strong'
* }
* ]
* }
* ]
* }
* ]
*/
var mergeTextNodes = exports.mergeTextNodes = function mergeTextNodes(nodes) {
return nodes.reduce(function (acc, current) {
if (!isText(current.type.name)) {
acc.push(current);
return acc;
}
// Append node to previous node, if it was a text wrapper
if (acc.length > 0 && isTextWrapper(acc[acc.length - 1])) {
var textWrapper = acc[acc.length - 1];
// Ignored via go/ees005
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
textWrapper.content.push(current);
textWrapper.nodeSize += current.nodeSize;
} else {
acc.push({
type: {
name: 'textWrapper'
},
content: [current],
nodeSize: current.nodeSize
});
}
return acc;
}, []);
};
var isText = exports.isText = function isText(type) {
return type === 'text';
};
var isTextWrapper = exports.isTextWrapper = function isTextWrapper(node) {
return node.type.name === 'textWrapper';
};
function isTextNode(node) {
return node.type.name === 'text';
}
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var whitespaceRegex = /^\s*$/;
/**
* Detects whether a fragment contains a single paragraph node
* whose content satisfies the condition for an emoji block
*/
var isEmojiDoc = exports.isEmojiDoc = function isEmojiDoc(doc) {
if (doc.childCount !== 1) {
return false;
}
var parentNodes = [];
doc.forEach(function (child) {
return parentNodes.push(child);
});
var node = parentNodes[0];
return node.type.name === 'paragraph' && isEmojiBlock(node.content);
};
var isEmojiBlock = function isEmojiBlock(pnode) {
var content = [];
// Optimisation for long documents - worst case block will be space-emoji-space
if (pnode.childCount > 7) {
return false;
}
pnode.forEach(function (child) {
return content.push(child);
});
var emojiCount = 0;
for (var i = 0; i < content.length; ++i) {
var node = content[i];
switch (node.type.name) {
case 'text':
if (node.text && !node.text.match(whitespaceRegex)) {
return false;
}
continue;
case 'emoji':
if (++emojiCount > 3) {
return false;
}
continue;
default:
// Only text and emoji nodes are allowed
return false;
}
}
return emojiCount > 0;
};