ngx-diagrams
Version:
> Light Weight, Modular, Typed Diagram Engine for Angular
36 lines • 5.68 kB
JavaScript
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