UNPKG

@paperbits/core

Version:
46 lines (39 loc) 1.74 kB
import { Divider } from "./dividerViewModel"; import { ViewModelBinder } from "@paperbits/common/widgets"; import { DividerModel } from "../dividerModel"; import { EventManager, Events } from "@paperbits/common/events"; import { StyleCompiler } from "@paperbits/common/styles"; import { Bag } from "@paperbits/common"; import { IWidgetBinding } from "@paperbits/common/editing"; import { ComponentFlow } from "@paperbits/common/components"; export class DividerViewModelBinder implements ViewModelBinder<DividerModel, Divider> { constructor( private readonly eventManager: EventManager, private readonly styleCompiler: StyleCompiler ) { } public async modelToViewModel(model: DividerModel, viewModel?: Divider, bindingContext?: Bag<any>): Promise<Divider> { if (!viewModel) { viewModel = new Divider(); } if (model.styles) { viewModel.styles(await this.styleCompiler.getStyleModelAsync(model.styles, bindingContext?.styleManager)); } const binding: IWidgetBinding<DividerModel, Divider> = { name: "divider", displayName: "Divider", layer: bindingContext?.layer, model: model, draggable: true, flow: ComponentFlow.Block, applyChanges: async () => { await this.modelToViewModel(model, viewModel, bindingContext); this.eventManager.dispatchEvent(Events.ContentUpdate); } }; viewModel["widgetBinding"] = binding; return viewModel; } public canHandleModel(model: DividerModel): boolean { return model instanceof DividerModel; } }