@atlaskit/adf-schema
Version:
Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs
50 lines (48 loc) • 963 B
JavaScript
import { FONT_STYLE } from '../groups';
/**
* @name subsup_mark
*/
function getAttrFromVerticalAlign(node) {
if (node.style.verticalAlign) {
const type = node.style.verticalAlign.slice(0, 3);
if (type === 'sub' || type === 'sup') {
return {
type
};
}
}
return false;
}
export const subsup = {
inclusive: true,
group: FONT_STYLE,
attrs: {
type: {
default: 'sub'
}
},
parseDOM: [{
tag: 'sub',
attrs: {
type: 'sub'
}
}, {
tag: 'sup',
attrs: {
type: 'sup'
}
}, {
// Special case for pasting from Google Docs
// Google Docs uses vertical align to denote subscript and super script
tag: 'span',
style: 'vertical-align=super',
getAttrs: node => getAttrFromVerticalAlign(node)
}, {
tag: 'span',
style: 'vertical-align=sub',
getAttrs: node => getAttrFromVerticalAlign(node)
}],
toDOM(mark) {
return [mark.attrs.type];
}
};