UNPKG

@paperbits/core

Version:
47 lines (35 loc) 1.61 kB
import { BlockModel } from "@paperbits/common/text/models"; import { CollectionModelBinder, IModelBinder } from "@paperbits/common/editing"; import { Contract, Bag } from "@paperbits/common"; import { TextblockModel } from "./textblockModel"; import { TextBlockContract } from "./textblockContract"; export class TextblockModelBinder implements IModelBinder<TextblockModel> { constructor(private readonly containerModelBinder: CollectionModelBinder) { } public async contractToModel(contract: TextBlockContract, bindingContext?: Bag<any>): Promise<TextblockModel> { let content: BlockModel[] = []; if (contract.nodes && contract.nodes.length > 0) { content = await this.containerModelBinder.getChildModels(contract.nodes, bindingContext); } const model = new TextblockModel(content); model.styles = contract.styles; model.roles = contract.roles; return model; } public modelToContract(model: TextblockModel): Contract { let content: Contract[]; const isArray = Array.isArray(model.content); if (isArray) { const contentItems = model.content as Object[]; if (contentItems && contentItems.length > 0) { content = this.containerModelBinder.getChildContracts(contentItems); } } const contract: TextBlockContract = { type: "text-block", nodes: content, styles: model.styles, roles: model.roles }; return contract; } }