substance
Version:
Substance is a JavaScript library for web-based content editing. It provides building blocks for realizing custom text editors and web-based publishing system. It is developed to power our online editing platform [Substance](http://substance.io).
25 lines (22 loc) • 815 B
JavaScript
import SchemaDefinition from './_SchemaDefinition'
import { CHILDREN_PROPERTY_TYPES } from './_SchemaConstants'
export default function createDefinition (version, actions) {
const definition = new SchemaDefinition()
for (const action of actions) {
definition.apply(action)
if (definition.version > version) break
}
definition.version = version
// compute childPropertyCount for every node spec
for (const nodeSpec of definition.nodes.values()) {
const childPropertyNames = []
for (const [propName, propSpec] of nodeSpec.properties) {
if (CHILDREN_PROPERTY_TYPES.has(propSpec.type)) {
childPropertyNames.push(propName)
}
}
nodeSpec.childPropertyNames = childPropertyNames
nodeSpec.childPropertyCount = childPropertyNames.length
}
return definition
}