UNPKG

carbon-components-angular

Version:
89 lines 10.7 kB
import { Injectable } from "@angular/core"; import * as i0 from "@angular/core"; /** * Singleton service used to register the container for out-of-flow components to insert into. * Also used to insert/remove components from that view. */ export class PlaceholderService { constructor() { /** * Main `ViewContainerRef` to insert components into */ this.viewContainerRef = null; /** * Map of id's to secondary `ViewContainerRef`s */ this.viewContainerMap = new Map(); } /** * Used by `Placeholder` to register view-container reference. */ registerViewContainerRef(vcRef, id) { if (id) { this.viewContainerMap.set(id, vcRef); } else { this.viewContainerRef = vcRef; } } /** * Creates and returns component in the view. */ createComponent(component, injector, id, environment = undefined) { if (id) { if (!this.viewContainerMap.has(id)) { console.error(`No view container with id ${id} found`); return; } return this.viewContainerMap.get(id).createComponent(component, { index: this.viewContainerMap.size, injector }); } if (!this.viewContainerRef) { console.error("No view container defined! Likely due to a missing `cds-placeholder`"); return; } return this.viewContainerRef.createComponent(component, { index: this.viewContainerRef.length, injector, environmentInjector: environment }); } destroyComponent(component) { component.destroy(); } hasComponentRef(component, id) { if (id) { return !(this.viewContainerMap.get(id).indexOf(component.hostView) < 0); } return !(this.viewContainerRef.indexOf(component.hostView) < 0); } hasPlaceholderRef(id) { if (id) { return this.viewContainerMap.has(id); } return !!this.viewContainerRef; } appendElement(element, id) { if (id) { return this.viewContainerMap.get(id).element.nativeElement.appendChild(element); } return this.viewContainerRef.element.nativeElement.appendChild(element); } removeElement(element, id) { if (id) { return this.viewContainerMap.get(id).element.nativeElement.removeChild(element); } return this.viewContainerRef.element.nativeElement.removeChild(element); } hasElement(element, id) { if (id) { return this.viewContainerMap.get(id).element.nativeElement.contains(element); } return this.viewContainerRef.element.nativeElement.contains(element); } } PlaceholderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PlaceholderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); PlaceholderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PlaceholderService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PlaceholderService, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbGFjZWhvbGRlci9wbGFjZWhvbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFQzs7V0FFRztRQUNPLHFCQUFnQixHQUFxQixJQUFJLENBQUM7UUFDcEQ7O1dBRUc7UUFDTyxxQkFBZ0IsR0FBK0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztLQWdGbkU7SUEvRUE7O09BRUc7SUFDSCx3QkFBd0IsQ0FBQyxLQUF1QixFQUFFLEVBQVE7UUFDekQsSUFBSSxFQUFFLEVBQUU7WUFDUCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUM5QjtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FDZCxTQUE0QixFQUM1QixRQUFrQixFQUNsQixFQUFRLEVBQ1IsY0FBbUMsU0FBUztRQUU1QyxJQUFJLEVBQUUsRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN2RCxPQUFPO2FBQ1A7WUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLFNBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ3hIO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLHNFQUFzRSxDQUFDLENBQUM7WUFDdEYsT0FBTztTQUNQO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFNBQWdCLEVBQzVEO1lBQ0MsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNO1lBQ25DLFFBQVE7WUFDUixtQkFBbUIsRUFBRSxXQUFXO1NBQ2hDLENBQ0QsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUE0QjtRQUM1QyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUE0QixFQUFFLEVBQVE7UUFDckQsSUFBSSxFQUFFLEVBQUU7WUFDUCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDeEU7UUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBUTtRQUN6QixJQUFJLEVBQUUsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNyQztRQUNELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQW9CLEVBQUUsRUFBUTtRQUMzQyxJQUFJLEVBQUUsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoRjtRQUNELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBb0IsRUFBRSxFQUFRO1FBQzNDLElBQUksRUFBRSxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFvQixFQUFFLEVBQVE7UUFDeEMsSUFBSSxFQUFFLEVBQUU7WUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0U7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RSxDQUFDOzsrR0F2Rlcsa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudFJlZixcblx0Vmlld0NvbnRhaW5lclJlZixcblx0SW5qZWN0b3IsXG5cdEVudmlyb25tZW50SW5qZWN0b3IsXG5cdGluamVjdFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbi8qKlxuICogU2luZ2xldG9uIHNlcnZpY2UgdXNlZCB0byByZWdpc3RlciB0aGUgY29udGFpbmVyIGZvciBvdXQtb2YtZmxvdyBjb21wb25lbnRzIHRvIGluc2VydCBpbnRvLlxuICogQWxzbyB1c2VkIHRvIGluc2VydC9yZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoYXQgdmlldy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFBsYWNlaG9sZGVyU2VydmljZSB7XG5cdC8qKlxuXHQgKiBNYWluIGBWaWV3Q29udGFpbmVyUmVmYCB0byBpbnNlcnQgY29tcG9uZW50cyBpbnRvXG5cdCAqL1xuXHRwcm90ZWN0ZWQgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiA9IG51bGw7XG5cdC8qKlxuXHQgKiBNYXAgb2YgaWQncyB0byBzZWNvbmRhcnkgYFZpZXdDb250YWluZXJSZWZgc1xuXHQgKi9cblx0cHJvdGVjdGVkIHZpZXdDb250YWluZXJNYXA6IE1hcDxhbnksIFZpZXdDb250YWluZXJSZWY+ID0gbmV3IE1hcCgpO1xuXHQvKipcblx0ICogVXNlZCBieSBgUGxhY2Vob2xkZXJgIHRvIHJlZ2lzdGVyIHZpZXctY29udGFpbmVyIHJlZmVyZW5jZS5cblx0ICovXG5cdHJlZ2lzdGVyVmlld0NvbnRhaW5lclJlZih2Y1JlZjogVmlld0NvbnRhaW5lclJlZiwgaWQ/OiBhbnkpOiB2b2lkIHtcblx0XHRpZiAoaWQpIHtcblx0XHRcdHRoaXMudmlld0NvbnRhaW5lck1hcC5zZXQoaWQsIHZjUmVmKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy52aWV3Q29udGFpbmVyUmVmID0gdmNSZWY7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW5kIHJldHVybnMgY29tcG9uZW50IGluIHRoZSB2aWV3LlxuXHQgKi9cblx0Y3JlYXRlQ29tcG9uZW50KFxuXHRcdGNvbXBvbmVudDogQ29tcG9uZW50UmVmPGFueT4sXG5cdFx0aW5qZWN0b3I6IEluamVjdG9yLFxuXHRcdGlkPzogYW55LFxuXHRcdGVudmlyb25tZW50OiBFbnZpcm9ubWVudEluamVjdG9yID0gdW5kZWZpbmVkXG5cdCk6IENvbXBvbmVudFJlZjxhbnk+IHtcblx0XHRpZiAoaWQpIHtcblx0XHRcdGlmICghdGhpcy52aWV3Q29udGFpbmVyTWFwLmhhcyhpZCkpIHtcblx0XHRcdFx0Y29uc29sZS5lcnJvcihgTm8gdmlldyBjb250YWluZXIgd2l0aCBpZCAke2lkfSBmb3VuZGApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyTWFwLmdldChpZCkuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCBhcyBhbnksIHsgaW5kZXg6IHRoaXMudmlld0NvbnRhaW5lck1hcC5zaXplLCBpbmplY3RvciB9KTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLnZpZXdDb250YWluZXJSZWYpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCJObyB2aWV3IGNvbnRhaW5lciBkZWZpbmVkISBMaWtlbHkgZHVlIHRvIGEgbWlzc2luZyBgY2RzLXBsYWNlaG9sZGVyYFwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50IGFzIGFueSxcblx0XHRcdHtcblx0XHRcdFx0aW5kZXg6IHRoaXMudmlld0NvbnRhaW5lclJlZi5sZW5ndGgsXG5cdFx0XHRcdGluamVjdG9yLFxuXHRcdFx0XHRlbnZpcm9ubWVudEluamVjdG9yOiBlbnZpcm9ubWVudFxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblxuXHRkZXN0cm95Q29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50UmVmPGFueT4pIHtcblx0XHRjb21wb25lbnQuZGVzdHJveSgpO1xuXHR9XG5cblx0aGFzQ29tcG9uZW50UmVmKGNvbXBvbmVudDogQ29tcG9uZW50UmVmPGFueT4sIGlkPzogYW55KSB7XG5cdFx0aWYgKGlkKSB7XG5cdFx0XHRyZXR1cm4gISh0aGlzLnZpZXdDb250YWluZXJNYXAuZ2V0KGlkKS5pbmRleE9mKGNvbXBvbmVudC5ob3N0VmlldykgPCAwKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gISh0aGlzLnZpZXdDb250YWluZXJSZWYuaW5kZXhPZihjb21wb25lbnQuaG9zdFZpZXcpIDwgMCk7XG5cdH1cblxuXHRoYXNQbGFjZWhvbGRlclJlZihpZD86IGFueSkge1xuXHRcdGlmIChpZCkge1xuXHRcdFx0cmV0dXJuIHRoaXMudmlld0NvbnRhaW5lck1hcC5oYXMoaWQpO1xuXHRcdH1cblx0XHRyZXR1cm4gISF0aGlzLnZpZXdDb250YWluZXJSZWY7XG5cdH1cblxuXHRhcHBlbmRFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpZD86IGFueSk6IEhUTUxFbGVtZW50IHtcblx0XHRpZiAoaWQpIHtcblx0XHRcdHJldHVybiB0aGlzLnZpZXdDb250YWluZXJNYXAuZ2V0KGlkKS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuXHR9XG5cblx0cmVtb3ZlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCwgaWQ/OiBhbnkpOiBIVE1MRWxlbWVudCB7XG5cdFx0aWYgKGlkKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyTWFwLmdldChpZCkuZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTtcblx0fVxuXG5cdGhhc0VsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGlkPzogYW55KTogYm9vbGVhbiB7XG5cdFx0aWYgKGlkKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyTWFwLmdldChpZCkuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGVsZW1lbnQpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy52aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhlbGVtZW50KTtcblx0fVxufVxuIl19