UNPKG

@swimlane/ngx-charts

Version:

Declarative Charting Framework for Angular

67 lines 8.73 kB
export class InjectionRegisteryService { constructor(injectionService) { this.injectionService = injectionService; this.defaults = {}; this.components = new Map(); } getByType(type = this.type) { return this.components.get(type); } create(bindings) { return this.createByType(this.type, bindings); } createByType(type, bindings) { bindings = this.assignDefaults(bindings); const component = this.injectComponent(type, bindings); this.register(type, component); return component; } destroy(instance) { const compsByType = this.components.get(instance.componentType); if (compsByType && compsByType.length) { const idx = compsByType.indexOf(instance); if (idx > -1) { const component = compsByType[idx]; component.destroy(); compsByType.splice(idx, 1); } } } destroyAll() { this.destroyByType(this.type); } destroyByType(type) { const comps = this.components.get(type); if (comps && comps.length) { let i = comps.length - 1; while (i >= 0) { this.destroy(comps[i--]); } } } injectComponent(type, bindings) { return this.injectionService.appendComponent(type, bindings); } assignDefaults(bindings) { const inputs = { ...this.defaults.inputs }; const outputs = { ...this.defaults.outputs }; if (!bindings.inputs && !bindings.outputs) { bindings = { inputs: bindings }; } if (inputs) { bindings.inputs = { ...inputs, ...bindings.inputs }; } if (outputs) { bindings.outputs = { ...outputs, ...bindings.outputs }; } return bindings; } register(type, component) { if (!this.components.has(type)) { this.components.set(type, []); } const types = this.components.get(type); types.push(component); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLXJlZ2lzdGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3dpbWxhbmUvbmd4LWNoYXJ0cy9zcmMvbGliL2NvbW1vbi90b29sdGlwL2luamVjdGlvbi1yZWdpc3Rlcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQWdCLHlCQUF5QjtJQU03QyxZQUFtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUgzQyxhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUMvQixlQUFVLEdBQXFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFFWCxDQUFDO0lBRXpELFNBQVMsQ0FBQyxPQUFnQixJQUFJLENBQUMsSUFBSTtRQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFhLEVBQUUsUUFBeUI7UUFDbkQsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFL0IsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUF5QjtRQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFaEUsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRTFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNaLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM1QjtTQUNGO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWE7UUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBRVMsZUFBZSxDQUFDLElBQWEsRUFBRSxRQUF5QjtRQUNoRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFUyxjQUFjLENBQUMsUUFBeUI7UUFDaEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQ3pDLFFBQVEsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxPQUFPLEVBQUU7WUFDWCxRQUFRLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDeEQ7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRVMsUUFBUSxDQUFDLElBQWEsRUFBRSxTQUEwQjtRQUMxRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEluamVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2luamVjdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aWFsQmluZGluZ3Mge1xuICBpbnB1dHM/OiBvYmplY3Q7XG4gIG91dHB1dHM/OiBvYmplY3Q7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbmplY3Rpb25SZWdpc3RlcnlTZXJ2aWNlPFQgPSBhbnk+IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHR5cGU6IFR5cGU8VD47XG5cbiAgcHJvdGVjdGVkIGRlZmF1bHRzOiBQYXJ0aWFsQmluZGluZ3MgPSB7fTtcbiAgcHJvdGVjdGVkIGNvbXBvbmVudHM6IE1hcDxhbnksIEFycmF5PENvbXBvbmVudFJlZjxUPj4+ID0gbmV3IE1hcCgpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmplY3Rpb25TZXJ2aWNlOiBJbmplY3Rpb25TZXJ2aWNlKSB7fVxuXG4gIGdldEJ5VHlwZSh0eXBlOiBUeXBlPFQ+ID0gdGhpcy50eXBlKSB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50cy5nZXQodHlwZSk7XG4gIH1cblxuICBjcmVhdGUoYmluZGluZ3M6IG9iamVjdCk6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQnlUeXBlKHRoaXMudHlwZSwgYmluZGluZ3MpO1xuICB9XG5cbiAgY3JlYXRlQnlUeXBlKHR5cGU6IFR5cGU8VD4sIGJpbmRpbmdzOiBQYXJ0aWFsQmluZGluZ3MpOiBDb21wb25lbnRSZWY8VD4ge1xuICAgIGJpbmRpbmdzID0gdGhpcy5hc3NpZ25EZWZhdWx0cyhiaW5kaW5ncyk7XG5cbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmluamVjdENvbXBvbmVudCh0eXBlLCBiaW5kaW5ncyk7XG4gICAgdGhpcy5yZWdpc3Rlcih0eXBlLCBjb21wb25lbnQpO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgfVxuXG4gIGRlc3Ryb3koaW5zdGFuY2U6IENvbXBvbmVudFJlZjxUPik6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBzQnlUeXBlID0gdGhpcy5jb21wb25lbnRzLmdldChpbnN0YW5jZS5jb21wb25lbnRUeXBlKTtcblxuICAgIGlmIChjb21wc0J5VHlwZSAmJiBjb21wc0J5VHlwZS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGlkeCA9IGNvbXBzQnlUeXBlLmluZGV4T2YoaW5zdGFuY2UpO1xuXG4gICAgICBpZiAoaWR4ID4gLTEpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gY29tcHNCeVR5cGVbaWR4XTtcbiAgICAgICAgY29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICAgICAgY29tcHNCeVR5cGUuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lCeVR5cGUodGhpcy50eXBlKTtcbiAgfVxuXG4gIGRlc3Ryb3lCeVR5cGUodHlwZTogVHlwZTxUPik6IHZvaWQge1xuICAgIGNvbnN0IGNvbXBzID0gdGhpcy5jb21wb25lbnRzLmdldCh0eXBlKTtcblxuICAgIGlmIChjb21wcyAmJiBjb21wcy5sZW5ndGgpIHtcbiAgICAgIGxldCBpID0gY29tcHMubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpID49IDApIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KGNvbXBzW2ktLV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBpbmplY3RDb21wb25lbnQodHlwZTogVHlwZTxUPiwgYmluZGluZ3M6IFBhcnRpYWxCaW5kaW5ncyk6IENvbXBvbmVudFJlZjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0aW9uU2VydmljZS5hcHBlbmRDb21wb25lbnQodHlwZSwgYmluZGluZ3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzc2lnbkRlZmF1bHRzKGJpbmRpbmdzOiBQYXJ0aWFsQmluZGluZ3MpOiBQYXJ0aWFsQmluZGluZ3Mge1xuICAgIGNvbnN0IGlucHV0cyA9IHsgLi4udGhpcy5kZWZhdWx0cy5pbnB1dHMgfTtcbiAgICBjb25zdCBvdXRwdXRzID0geyAuLi50aGlzLmRlZmF1bHRzLm91dHB1dHMgfTtcblxuICAgIGlmICghYmluZGluZ3MuaW5wdXRzICYmICFiaW5kaW5ncy5vdXRwdXRzKSB7XG4gICAgICBiaW5kaW5ncyA9IHsgaW5wdXRzOiBiaW5kaW5ncyB9O1xuICAgIH1cblxuICAgIGlmIChpbnB1dHMpIHtcbiAgICAgIGJpbmRpbmdzLmlucHV0cyA9IHsgLi4uaW5wdXRzLCAuLi5iaW5kaW5ncy5pbnB1dHMgfTtcbiAgICB9XG5cbiAgICBpZiAob3V0cHV0cykge1xuICAgICAgYmluZGluZ3Mub3V0cHV0cyA9IHsgLi4ub3V0cHV0cywgLi4uYmluZGluZ3Mub3V0cHV0cyB9O1xuICAgIH1cblxuICAgIHJldHVybiBiaW5kaW5ncztcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3Rlcih0eXBlOiBUeXBlPFQ+LCBjb21wb25lbnQ6IENvbXBvbmVudFJlZjxUPik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb21wb25lbnRzLmhhcyh0eXBlKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRzLnNldCh0eXBlLCBbXSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmNvbXBvbmVudHMuZ2V0KHR5cGUpO1xuICAgIHR5cGVzLnB1c2goY29tcG9uZW50KTtcbiAgfVxufVxuIl19