UNPKG

@atlaskit/adf-utils

Version:

Set of utilities to traverse, modify and create ADF documents.

35 lines (34 loc) 1.13 kB
import { traverse } from '../traverse/traverse'; const hasLinkAndCodeMarks = node => { var _node$marks; const marks = (_node$marks = node.marks) === null || _node$marks === void 0 ? void 0 : _node$marks.map(mark => mark.type); return (marks === null || marks === void 0 ? void 0 : marks.includes('link')) && (marks === null || marks === void 0 ? void 0 : marks.includes('code')); }; const removeCodeMarks = node => { if (node.marks) { return { ...node, marks: node.marks.filter(mark => mark.type !== 'code') }; } return node; }; // See: HOT-97965 https://product-fabric.atlassian.net/browse/ED-14400 // We declared in code mark spec that links and marks should not co-exist on // text nodes. This util strips code marks from bad text nodes and preserves links. export const transformTextLinkCodeMarks = adf => { let isTransformed = false; const transformedAdf = traverse(adf, { text: node => { if (hasLinkAndCodeMarks(node)) { isTransformed = true; return removeCodeMarks(node); } return; } }); return { transformedAdf, isTransformed }; };