@portabletext/schema
Version:
Portable Text Schema
55 lines (54 loc) • 1.73 kB
JavaScript
function compileSchema(definition) {
const styles = (definition.styles ?? []).map((style) => ({
...style,
value: style.name
})), blockFields = [];
if (definition.block?.fields)
for (const field of definition.block.fields) {
if (field.name === "_type" || field.name === "_key" || field.name === "children" || field.name === "markDefs" || field.name === "style" || field.name === "listItem" || field.name === "level") {
console.warn(
`"${field.name}" is a reserved field name on Portable Text blocks`
);
continue;
}
blockFields.push(field);
}
return {
block: {
name: definition.block?.name ?? "block",
...blockFields.length > 0 ? { fields: blockFields } : {}
},
span: {
name: "span"
},
styles: styles.some((style) => style.value === "normal") ? styles : [{ value: "normal", name: "normal", title: "Normal" }, ...styles],
lists: (definition.lists ?? []).map((list) => ({
...list,
value: list.name
})),
decorators: (definition.decorators ?? []).map((decorator) => ({
...decorator,
value: decorator.name
})),
annotations: (definition.annotations ?? []).map((annotation) => ({
...annotation,
fields: annotation.fields ?? []
})),
blockObjects: (definition.blockObjects ?? []).map((blockObject) => ({
...blockObject,
fields: blockObject.fields ?? []
})),
inlineObjects: (definition.inlineObjects ?? []).map((inlineObject) => ({
...inlineObject,
fields: inlineObject.fields ?? []
}))
};
}
function defineSchema(definition) {
return definition;
}
export {
compileSchema,
defineSchema
};
//# sourceMappingURL=index.js.map