ngx-diagrams
Version:
> Light Weight, Modular, Typed Diagram Engine for Angular
37 lines • 6.24 kB
JavaScript
import { AbstractPortFactory } from '../../factories/port.factory';
import { DefaultPortModel } from '../models/default-port.model';
import { DefaultPortComponent } from '../components/default-port/default-port.component';
export class DefaultPortFactory extends AbstractPortFactory {
constructor(resolver, renderer) {
super('default');
this.resolver = resolver;
this.renderer = renderer;
}
generateWidget(port, portsHost) {
const componentRef = portsHost.createComponent(this.getRecipe());
// attach coordinates and default positional behaviour to the generated component host
const rootNode = componentRef.location.nativeElement;
// data attributes
this.renderer.setAttribute(rootNode, 'data-portid', port.id);
this.renderer.setAttribute(rootNode, 'data-name', port.getName());
port.in
? this.renderer.addClass(rootNode, 'in')
: this.renderer.addClass(rootNode, 'out');
// assign all passed properties to node initialization.
Object.entries(port).forEach(([key, value]) => {
componentRef.instance[key] = value;
});
port.onEntityDestroy().subscribe(() => {
componentRef.destroy();
});
componentRef.instance.setPainted(true);
return componentRef;
}
getRecipe() {
return this.resolver.resolveComponentFactory(DefaultPortComponent);
}
getNewInstance(initialConfig) {
return new DefaultPortModel(Object.assign({ isInput: true, name: 'unknown' }, initialConfig));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wb3J0LmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vbGlicy9uZ3gtZGlhZ3JhbXMvc3JjLyIsInNvdXJjZXMiOlsibGliL2RlZmF1bHRzL2ZhY3Rvcmllcy9kZWZhdWx0LXBvcnQuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVFoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV6RixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsbUJBQXFDO0lBQzNFLFlBQ1ksUUFBa0MsRUFDbEMsUUFBbUI7UUFFN0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBSFAsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUcvQixDQUFDO0lBRUQsY0FBYyxDQUNaLElBQXNCLEVBQ3RCLFNBQTJCO1FBRTNCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFakUsc0ZBQXNGO1FBQ3RGLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBNEIsQ0FBQztRQUVwRSxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVsRSxJQUFJLENBQUMsRUFBRTtZQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUMsdURBQXVEO1FBQ3ZELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWMsQ0FBQyxhQUFtQjtRQUNoQyxPQUFPLElBQUksZ0JBQWdCLGlCQUN6QixPQUFPLEVBQUUsSUFBSSxFQUNiLElBQUksRUFBRSxTQUFTLElBQ1osYUFBYSxFQUNoQixDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RQb3J0RmFjdG9yeSB9IGZyb20gJy4uLy4uL2ZhY3Rvcmllcy9wb3J0LmZhY3RvcnknO1xuaW1wb3J0IHsgRGVmYXVsdFBvcnRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9kZWZhdWx0LXBvcnQubW9kZWwnO1xuaW1wb3J0IHtcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50UmVmLFxuICBDb21wb25lbnRGYWN0b3J5LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0UG9ydENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVmYXVsdC1wb3J0L2RlZmF1bHQtcG9ydC5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBvcnRGYWN0b3J5IGV4dGVuZHMgQWJzdHJhY3RQb3J0RmFjdG9yeTxEZWZhdWx0UG9ydE1vZGVsPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIHN1cGVyKCdkZWZhdWx0Jyk7XG4gIH1cblxuICBnZW5lcmF0ZVdpZGdldChcbiAgICBwb3J0OiBEZWZhdWx0UG9ydE1vZGVsLFxuICAgIHBvcnRzSG9zdDogVmlld0NvbnRhaW5lclJlZlxuICApOiBDb21wb25lbnRSZWY8RGVmYXVsdFBvcnRDb21wb25lbnQ+IHtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSBwb3J0c0hvc3QuY3JlYXRlQ29tcG9uZW50KHRoaXMuZ2V0UmVjaXBlKCkpO1xuXG4gICAgLy8gYXR0YWNoIGNvb3JkaW5hdGVzIGFuZCBkZWZhdWx0IHBvc2l0aW9uYWwgYmVoYXZpb3VyIHRvIHRoZSBnZW5lcmF0ZWQgY29tcG9uZW50IGhvc3RcbiAgICBjb25zdCByb290Tm9kZSA9IGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgLy8gZGF0YSBhdHRyaWJ1dGVzXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUocm9vdE5vZGUsICdkYXRhLXBvcnRpZCcsIHBvcnQuaWQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHJvb3ROb2RlLCAnZGF0YS1uYW1lJywgcG9ydC5nZXROYW1lKCkpO1xuXG4gICAgcG9ydC5pblxuICAgICAgPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHJvb3ROb2RlLCAnaW4nKVxuICAgICAgOiB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHJvb3ROb2RlLCAnb3V0Jyk7XG5cbiAgICAvLyBhc3NpZ24gYWxsIHBhc3NlZCBwcm9wZXJ0aWVzIHRvIG5vZGUgaW5pdGlhbGl6YXRpb24uXG4gICAgT2JqZWN0LmVudHJpZXMocG9ydCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Vba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgcG9ydC5vbkVudGl0eURlc3Ryb3koKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9KTtcblxuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXRQYWludGVkKHRydWUpO1xuICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gIH1cblxuICBnZXRSZWNpcGUoKTogQ29tcG9uZW50RmFjdG9yeTxEZWZhdWx0UG9ydENvbXBvbmVudD4ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KERlZmF1bHRQb3J0Q29tcG9uZW50KTtcbiAgfVxuXG4gIGdldE5ld0luc3RhbmNlKGluaXRpYWxDb25maWc/OiBhbnkpOiBEZWZhdWx0UG9ydE1vZGVsIHtcbiAgICByZXR1cm4gbmV3IERlZmF1bHRQb3J0TW9kZWwoe1xuICAgICAgaXNJbnB1dDogdHJ1ZSxcbiAgICAgIG5hbWU6ICd1bmtub3duJyxcbiAgICAgIC4uLmluaXRpYWxDb25maWcsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==