UNPKG

@atlaskit/renderer

Version:
47 lines (46 loc) 1.78 kB
export function markBlockAsInline({ nodes, onMark, parentPos, shouldDisplayExtensionAsInline }) { if (!nodes || nodes.length === 0 || nodes[0].isInline) { return; } function isInlineBodiedExtension(node) { var _node$attrs, _node$attrs2, _node$attrs3, _node$attrs4; return Boolean((node === null || node === void 0 ? void 0 : node.type.name) === 'bodiedExtension' && shouldDisplayExtensionAsInline({ type: node.type.name, extensionKey: (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.extensionKey, extensionType: (_node$attrs2 = node.attrs) === null || _node$attrs2 === void 0 ? void 0 : _node$attrs2.extensionType, parameters: (_node$attrs3 = node.attrs) === null || _node$attrs3 === void 0 ? void 0 : _node$attrs3.parameters, content: node.content, localId: (_node$attrs4 = node.attrs) === null || _node$attrs4 === void 0 ? void 0 : _node$attrs4.localId })); } try { let prevPos = parentPos; let pos = parentPos; let prevTextBlockType; for (const [index, node] of nodes.entries()) { const prevNode = nodes[index - 1]; // textblock + inlinedBodiedExtension if (prevNode !== null && prevNode !== void 0 && prevNode.isTextblock && isInlineBodiedExtension(node)) { onMark({ pos: prevPos }); } // inlinedBodiedExtension + textblock else if (isInlineBodiedExtension(prevNode) && node.isTextblock && (!prevTextBlockType || node.type === prevTextBlockType)) { onMark({ pos }); } if (!isInlineBodiedExtension(node)) { prevTextBlockType = node.isTextblock ? node.type : undefined; } prevPos = pos; pos += node.nodeSize; } } catch {} }