@atlaskit/adf-utils
Version:
Set of utilities to traverse, modify and create ADF documents.
35 lines (34 loc) • 1.13 kB
JavaScript
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
};
};