UNPKG

@atlaskit/renderer

Version:
667 lines (661 loc) • 21.6 kB
"use strict"; 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; };