@atlaskit/adf-schema
Version:
Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs
57 lines (53 loc) • 1.61 kB
JavaScript
import { getExtensionAttrs } from '../../utils/extensions';
import { multiBodiedExtensionStage0 as multiBodiedExtensionStage0Factory } from '../../next-schema/generated/nodeTypes';
import { extensionFrameStage0 as extensionFrameStage0Factory } from '../../next-schema/generated/nodeTypes';
/**
* @stage 0
* @name extensionFrame_node
* @description Wraps the block content
*/
/**
* @returns NodeSpec for ExtensionFrameDefinition
*/
export const extensionFrame = extensionFrameStage0Factory({
parseDOM: [{
context: 'extensionFrame//',
tag: 'div[data-extension-frame]',
skip: true
}, {
tag: 'div[data-extension-frame]'
}],
toDOM() {
const attrs = {
'data-extension-frame': 'true'
};
return ['div', attrs, 0];
}
});
/**
* @stage 0
* @name multiBodiedExtension_node
* @description Wraps multiple extensionFrame objects.
*/
export const multiBodiedExtension = multiBodiedExtensionStage0Factory({
parseDOM: [{
context: 'multiBodiedExtension//',
tag: '[data-node-type="multi-bodied-extension"]',
skip: true
}, {
tag: '[data-node-type="multi-bodied-extension"]',
getAttrs: domNode => getExtensionAttrs(domNode)
}],
toDOM(node) {
const attrs = {
'data-node-type': 'multi-bodied-extension',
'data-extension-type': node.attrs.extensionType,
'data-extension-key': node.attrs.extensionKey,
'data-text': node.attrs.text,
'data-parameters': JSON.stringify(node.attrs.parameters),
'data-layout': node.attrs.layout,
'data-local-id:': node.attrs.localId
};
return ['div', attrs, 0];
}
});