UNPKG

@paperbits/core

Version:
50 lines (43 loc) 1.89 kB
import { Bag } from "@paperbits/common"; import { IModelBinder } from "@paperbits/common/editing"; import { IPermalinkResolver } from "@paperbits/common/permalinks"; import { PictureContract } from "./pictureContract"; import { PictureModel } from "./pictureModel"; export class PictureModelBinder implements IModelBinder<PictureModel> { constructor(private readonly permalinkResolver: IPermalinkResolver) { } public async contractToModel(contract: PictureContract, bindingContext: Bag<any>): Promise<PictureModel> { const model = new PictureModel(); model.caption = contract.caption; model.width = contract.width; model.height = contract.height; model.styles = contract.styles || { appearance: "components/picture/default" }; model.sourceKey = contract.sourceKey; if (contract.hyperlink) { try { model.hyperlink = await this.permalinkResolver.getHyperlinkFromContract(contract.hyperlink, bindingContext?.locale); } catch (error) { console.log(error); } } return model; } public modelToContract(pictureModel: PictureModel): PictureContract { const pictureContract: PictureContract = { type: "picture", caption: pictureModel.caption, width: pictureModel.width, height: pictureModel.height, styles: pictureModel.styles, sourceKey: pictureModel.sourceKey }; if (pictureModel.hyperlink) { pictureContract.hyperlink = { target: pictureModel.hyperlink.target, targetKey: pictureModel.hyperlink.targetKey, triggerEvent: pictureModel.hyperlink.triggerEvent }; } return pictureContract; } }