UNPKG

carbon-components-angular

Version:
72 lines 6.91 kB
import { Injectable } from "@angular/core"; import { ReplaySubject } from "rxjs"; import * as i0 from "@angular/core"; export class TreeViewService { constructor() { /** * Variable used across all nodes and wrapper to determine if we should allow content projection * or generate the tree * * Value is updated by passing a value to `tree` input in wrapper component. */ this.contentProjected = true; /** * **Experimental** */ this.isMultiSelect = false; this.selectionSubject = new ReplaySubject(1); this.focusNodeSubject = new ReplaySubject(1); /** * Hold's list of selected nodes and preserves order */ this.value = new Map(); this.selectionObservable = this.selectionSubject.asObservable(); this.focusNodeObservable = this.focusNodeSubject.asObservable(); } /** * Emits the focused node * @param node: Node */ focusNode(node) { this.focusNodeSubject.next(node); } /** * Store selected node in map * @param node: Node */ selectNode(node) { if (!node) { return; } // Since multiselect is not enabled, we clear existing map if (!this.isMultiSelect) { this.value.clear(); } this.value.set(node.id, node); this.selectionSubject.next(this.value); } /** * Removes selected node from the map * @param node: Node */ deselectNode(node) { if (!node) { return; } this.value.delete(node.id); this.selectionSubject.next(this.value); } /** * Removes all selected nodes from the map */ deselectAllNodes() { this.value.clear(); this.selectionSubject.next(this.value); } } TreeViewService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); TreeViewService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmVldmlldy90cmVldmlldy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJakQsTUFBTSxPQUFPLGVBQWU7SUF1QjNCO1FBcEJBOzs7OztXQUtHO1FBQ0gscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFZCxxQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFDM0QscUJBQWdCLEdBQUcsSUFBSSxhQUFhLENBQU8sQ0FBQyxDQUFDLENBQUM7UUFFdEQ7O1dBRUc7UUFDSyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUd6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxJQUFVO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUFVO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVixPQUFPO1NBQ1A7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxJQUFVO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVixPQUFPO1NBQ1A7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs0R0F4RVcsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gXCIuL3RyZWUtbm9kZS50eXBlc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJlZVZpZXdTZXJ2aWNlIHtcblx0c2VsZWN0aW9uT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxhbnkgfCBhbnlbXT47XG5cdGZvY3VzTm9kZU9ic2VydmFibGU6IE9ic2VydmFibGU8Tm9kZT47XG5cdC8qKlxuXHQgKiBWYXJpYWJsZSB1c2VkIGFjcm9zcyBhbGwgbm9kZXMgYW5kIHdyYXBwZXIgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBhbGxvdyBjb250ZW50IHByb2plY3Rpb25cblx0ICogb3IgZ2VuZXJhdGUgdGhlIHRyZWVcblx0ICpcblx0ICogVmFsdWUgaXMgdXBkYXRlZCBieSBwYXNzaW5nIGEgdmFsdWUgdG8gYHRyZWVgIGlucHV0IGluIHdyYXBwZXIgY29tcG9uZW50LlxuXHQgKi9cblx0Y29udGVudFByb2plY3RlZCA9IHRydWU7XG5cdC8qKlxuXHQgKiAqKkV4cGVyaW1lbnRhbCoqXG5cdCAqL1xuXHRpc011bHRpU2VsZWN0ID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBzZWxlY3Rpb25TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TWFwPHN0cmluZywgTm9kZT4+KDEpO1xuXHRwcml2YXRlIGZvY3VzTm9kZVN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxOb2RlPigxKTtcblxuXHQvKipcblx0ICogSG9sZCdzIGxpc3Qgb2Ygc2VsZWN0ZWQgbm9kZXMgYW5kIHByZXNlcnZlcyBvcmRlclxuXHQgKi9cblx0cHJpdmF0ZSB2YWx1ZSA9IG5ldyBNYXAoKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnNlbGVjdGlvbk9ic2VydmFibGUgPSB0aGlzLnNlbGVjdGlvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdFx0dGhpcy5mb2N1c05vZGVPYnNlcnZhYmxlID0gdGhpcy5mb2N1c05vZGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVtaXRzIHRoZSBmb2N1c2VkIG5vZGVcblx0ICogQHBhcmFtIG5vZGU6IE5vZGVcblx0ICovXG5cdGZvY3VzTm9kZShub2RlOiBOb2RlKSB7XG5cdFx0dGhpcy5mb2N1c05vZGVTdWJqZWN0Lm5leHQobm9kZSk7XG5cdH1cblxuXHQvKipcblx0ICogU3RvcmUgc2VsZWN0ZWQgbm9kZSBpbiBtYXBcblx0ICogQHBhcmFtIG5vZGU6IE5vZGVcblx0ICovXG5cdHNlbGVjdE5vZGUobm9kZTogTm9kZSkge1xuXHRcdGlmICghbm9kZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFNpbmNlIG11bHRpc2VsZWN0IGlzIG5vdCBlbmFibGVkLCB3ZSBjbGVhciBleGlzdGluZyBtYXBcblx0XHRpZiAoIXRoaXMuaXNNdWx0aVNlbGVjdCkge1xuXHRcdFx0dGhpcy52YWx1ZS5jbGVhcigpO1xuXHRcdH1cblx0XHR0aGlzLnZhbHVlLnNldChub2RlLmlkLCBub2RlKTtcblx0XHR0aGlzLnNlbGVjdGlvblN1YmplY3QubmV4dCh0aGlzLnZhbHVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHNlbGVjdGVkIG5vZGUgZnJvbSB0aGUgbWFwXG5cdCAqIEBwYXJhbSBub2RlOiBOb2RlXG5cdCAqL1xuXHRkZXNlbGVjdE5vZGUobm9kZTogTm9kZSkge1xuXHRcdGlmICghbm9kZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMudmFsdWUuZGVsZXRlKG5vZGUuaWQpO1xuXHRcdHRoaXMuc2VsZWN0aW9uU3ViamVjdC5uZXh0KHRoaXMudmFsdWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYWxsIHNlbGVjdGVkIG5vZGVzIGZyb20gdGhlIG1hcFxuXHQgKi9cblx0ZGVzZWxlY3RBbGxOb2RlcygpIHtcblx0XHR0aGlzLnZhbHVlLmNsZWFyKCk7XG5cdFx0dGhpcy5zZWxlY3Rpb25TdWJqZWN0Lm5leHQodGhpcy52YWx1ZSk7XG5cdH1cbn1cbiJdfQ==