UNPKG

ngx-diagrams

Version:

> Light Weight, Modular, Typed Diagram Engine for Angular

36 lines 5.68 kB
import { AbstractLabelFactory } from '../../factories/label.factory'; import { DefaultLabelComponent } from '../components/default-label/default-label.component'; import { DefaultLabelModel } from '../models/default-label.model'; export class DefaultLabelFactory extends AbstractLabelFactory { constructor(resolver, renderer) { super('default'); this.resolver = resolver; this.renderer = renderer; } generateWidget(label, labelHost) { const componentRef = labelHost.createComponent(this.getRecipe()); // attach coordinates and default positional behaviour to the generated component host const rootNode = componentRef.location.nativeElement; // default style for link this.renderer.setStyle(rootNode, 'position', 'absolute'); // data attributes this.renderer.setAttribute(rootNode, 'data-labelid', label.id); // on destroy make sure to destroy the componentRef label.onEntityDestroy().subscribe(() => { componentRef.destroy(); }); // assign all passed properties to node initialization. Object.entries(label).forEach(([key, value]) => { componentRef.instance[key] = value; }); componentRef.instance.setPainted(true); return componentRef; } getRecipe() { return this.resolver.resolveComponentFactory(DefaultLabelComponent); } getNewInstance() { return new DefaultLabelModel(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1sYWJlbC5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL2xpYnMvbmd4LWRpYWdyYW1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZWZhdWx0cy9mYWN0b3JpZXMvZGVmYXVsdC1sYWJlbC5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWxFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxvQkFFeEM7SUFDQyxZQUNZLFFBQWtDLEVBQ2xDLFFBQW1CO1FBRTdCLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUhQLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVc7SUFHL0IsQ0FBQztJQUVELGNBQWMsQ0FDWixLQUE0QixFQUM1QixTQUEyQjtRQUUzQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLHNGQUFzRjtRQUN0RixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUVyRCx5QkFBeUI7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV6RCxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFL0QsbURBQW1EO1FBQ25ELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILHVEQUF1RDtRQUN2RCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDN0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDakMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudEZhY3RvcnksXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdExhYmVsRmFjdG9yeSB9IGZyb20gJy4uLy4uL2ZhY3Rvcmllcy9sYWJlbC5mYWN0b3J5JztcbmltcG9ydCB7IERlZmF1bHRMYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmYXVsdC1sYWJlbC9kZWZhdWx0LWxhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0TGFiZWxNb2RlbCB9IGZyb20gJy4uL21vZGVscy9kZWZhdWx0LWxhYmVsLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIERlZmF1bHRMYWJlbEZhY3RvcnkgZXh0ZW5kcyBBYnN0cmFjdExhYmVsRmFjdG9yeTxcbiAgRGVmYXVsdExhYmVsTW9kZWxcbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICBzdXBlcignZGVmYXVsdCcpO1xuICB9XG5cbiAgZ2VuZXJhdGVXaWRnZXQoXG4gICAgbGFiZWw6IERlZmF1bHRMYWJlbENvbXBvbmVudCxcbiAgICBsYWJlbEhvc3Q6IFZpZXdDb250YWluZXJSZWZcbiAgKTogQ29tcG9uZW50UmVmPERlZmF1bHRMYWJlbENvbXBvbmVudD4ge1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGxhYmVsSG9zdC5jcmVhdGVDb21wb25lbnQodGhpcy5nZXRSZWNpcGUoKSk7XG5cbiAgICAvLyBhdHRhY2ggY29vcmRpbmF0ZXMgYW5kIGRlZmF1bHQgcG9zaXRpb25hbCBiZWhhdmlvdXIgdG8gdGhlIGdlbmVyYXRlZCBjb21wb25lbnQgaG9zdFxuICAgIGNvbnN0IHJvb3ROb2RlID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBkZWZhdWx0IHN0eWxlIGZvciBsaW5rXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyb290Tm9kZSwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG5cbiAgICAvLyBkYXRhIGF0dHJpYnV0ZXNcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShyb290Tm9kZSwgJ2RhdGEtbGFiZWxpZCcsIGxhYmVsLmlkKTtcblxuICAgIC8vIG9uIGRlc3Ryb3kgbWFrZSBzdXJlIHRvIGRlc3Ryb3kgdGhlIGNvbXBvbmVudFJlZlxuICAgIGxhYmVsLm9uRW50aXR5RGVzdHJveSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgLy8gYXNzaWduIGFsbCBwYXNzZWQgcHJvcGVydGllcyB0byBub2RlIGluaXRpYWxpemF0aW9uLlxuICAgIE9iamVjdC5lbnRyaWVzKGxhYmVsKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZVtrZXldID0gdmFsdWU7XG4gICAgfSk7XG5cbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2V0UGFpbnRlZCh0cnVlKTtcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICB9XG5cbiAgZ2V0UmVjaXBlKCk6IENvbXBvbmVudEZhY3Rvcnk8RGVmYXVsdExhYmVsQ29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRGVmYXVsdExhYmVsQ29tcG9uZW50KTtcbiAgfVxuXG4gIGdldE5ld0luc3RhbmNlKCkge1xuICAgIHJldHVybiBuZXcgRGVmYXVsdExhYmVsTW9kZWwoKTtcbiAgfVxufVxuIl19