UNPKG

@print-one/grapesjs

Version:

Free and Open Source Web Builder Framework

42 lines (33 loc) 1.26 kB
import { isArray } from 'underscore'; import { Collection, Model } from '../../common'; import Component from '../../dom_components/model/Component'; export class Selectable extends Model {} export default class Selected extends Collection<Selectable> { getByComponent(component: Component) { return this.filter(s => this.getComponent(s) === component)[0]; } addComponent(component: Component, opts: any) { const toAdd = (isArray(component) ? component : [component]) .filter(c => !this.hasComponent(c)) .map(component => new Selectable({ component }))[0]; return this.push(toAdd, opts); } getComponent(model: Selectable): Component { return model.get('component'); } hasComponent(component: Component) { const model = this.getByComponent(component); return model && this.contains(model); } lastComponent() { const last = this.last(); return last ? this.getComponent(last) : undefined; } allComponents() { return this.map(s => this.getComponent(s)).filter(i => i); } removeComponent(component: Component | Component[], opts: any) { const toRemove = (isArray(component) ? component : [component]).map(c => this.getByComponent(c)); return this.remove(toRemove, opts); } }