@paperbits/core
Version:
Paperbits core components.
35 lines (28 loc) • 1.39 kB
text/typescript
import { Bag, Contract } from "@paperbits/common";
import { CollectionModelBinder, IModelBinder } from "@paperbits/common/editing";
import { IWidgetService, ModelBinderSelector } from "@paperbits/common/widgets";
import { TableCellContract } from "./tableCellContract";
import { TableCellModel } from "./tableCellModel";
export class TableCellModelBinder extends CollectionModelBinder implements IModelBinder<TableCellModel> {
constructor(protected readonly widgetService: IWidgetService, protected modelBinderSelector: ModelBinderSelector) {
super(widgetService, modelBinderSelector);
}
public canHandleContract(contract: Contract): boolean {
return contract.type === "table-cell";
}
public canHandleModel(model: Object): boolean {
return model instanceof TableCellModel;
}
public async contractToModel(contract: TableCellContract, bindingContext?: Bag<any>): Promise<TableCellModel> {
const tableCellModel = new TableCellModel();
tableCellModel.widgets = await this.getChildModels(contract.nodes, bindingContext);
return tableCellModel;
}
public modelToContract(model: TableCellModel): Contract {
const contract: any = {
type: "table-cell",
nodes: this.getChildContracts(model.widgets)
};
return contract;
}
}