@atlaskit/adf-schema
Version:
Shared package that contains the ADF-schema (json) and ProseMirror node/mark specs
31 lines (28 loc) • 1.26 kB
JavaScript
/* eslint-disable @atlaskit/editor/no-re-export -- VOLTC-139 tracks removal of these deprecated compatibility re-export shims. */
import { Schema } from '@atlaskit/editor-prosemirror/model';
import { addItems } from './add-items';
import { markGroupDeclarationsNames } from './mark-group-declarations-names';
import { marksInOrder } from './marks-in-order';
import { nodesInOrder } from './nodes-in-order';
import { sanitizeNodes } from './sanitizeNodes';
/**
* Creates a schema preserving order of marks and nodes.
*/
export function createSchema(config) {
const {
customNodeSpecs,
customMarkSpecs
} = config;
const nodesConfig = Object.keys(customNodeSpecs || {}).concat(config.nodes);
const marksConfig = Object.keys(customMarkSpecs || {}).concat(config.marks || []).concat(markGroupDeclarationsNames);
let nodes = addItems(nodesInOrder, nodesConfig, customNodeSpecs);
const marks = addItems(marksInOrder, marksConfig, customMarkSpecs);
nodes = sanitizeNodes(nodes, marks);
return new Schema({
nodes,
marks
});
}
export const allowCustomPanel = true;
// eslint-disable-next-line @atlaskit/volt-strict-mode/no-re-exports -- Public compatibility re-export.
export { getNodesAndMarksMap } from './get-nodes-and-marks-map';