@atlaskit/adf-utils
Version:
Set of utilities to traverse, modify and create ADF documents.
55 lines • 1.49 kB
JavaScript
import { traverse } from '../traverse/traverse';
export const syncBlockFallbackTransform = (schema, adf) => {
let isTransformed = false;
const {
syncBlock,
bodiedSyncBlock,
unsupportedBlock
} = schema.nodes;
if (!unsupportedBlock) {
return {
isTransformed,
transformedAdf: adf
};
}
const transformedAdf = traverse(adf, {
syncBlock: node => {
if (syncBlock) {
return node;
}
isTransformed = true;
const unsupportedBlockNode = unsupportedBlock.createChecked({
originalValue: node
});
return unsupportedBlockNode.toJSON();
},
bodiedSyncBlock: node => {
if (bodiedSyncBlock) {
return node;
}
isTransformed = true;
const unsupportedBlockNode = unsupportedBlock.createChecked({
originalValue: node
});
return unsupportedBlockNode.toJSON();
},
unsupportedBlock: node => {
var _node$attrs;
if (!((_node$attrs = node.attrs) !== null && _node$attrs !== void 0 && _node$attrs.originalValue)) {
return node;
}
if (node.attrs.originalValue.type === 'syncBlock' && syncBlock) {
isTransformed = true;
return node.attrs.originalValue;
} else if (node.attrs.originalValue.type === 'bodiedSyncBlock' && bodiedSyncBlock) {
isTransformed = true;
return node.attrs.originalValue;
}
return node;
}
});
return {
transformedAdf,
isTransformed
};
};