ng-units
Version:
Angular component library for units of measurement.
45 lines • 5.44 kB
JavaScript
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { filter } from 'rxjs/operators';
import * as i0 from "@angular/core";
export class QuantityMessage {
quantity;
}
export class SystemOfUnits {
quantities = [];
quantityChange = new Subject();
changes$ = this.quantityChange.asObservable();
add(...quantities) {
this.quantities.push(...quantities);
}
get(quantityName) {
const quantity = this.quantities.find(q => q.name === quantityName);
return quantity;
}
selectUnit(quantity, unit) {
quantity.selectUnit(unit);
this.broadcast(quantity);
}
/**
* @depracted since 11.0.0. Use changes$ instead.
*/
changes() {
return this.changes$;
}
/**
* @depracted since 11.0.0. Use changes$ instead.
*/
subscribe(quantity, callback) {
return this.quantityChange.pipe(filter(m => m.quantity === quantity))
.subscribe(callback);
}
broadcast(quantity) {
this.quantityChange.next({ quantity });
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: SystemOfUnits, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: SystemOfUnits });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.2", ngImport: i0, type: SystemOfUnits, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLW9mLXVuaXRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy11bml0cy9zcmMvbGliL3N5c3RlbS1vZi11bml0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFnQixPQUFPLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUd4QyxNQUFNLE9BQU8sZUFBZTtJQUN4QixRQUFRLENBQVk7Q0FDdkI7QUFHRCxNQUFNLE9BQU8sYUFBYTtJQUV0QixVQUFVLEdBQWUsRUFBRSxDQUFDO0lBRVgsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0lBQ2pELFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRzlELEdBQUcsQ0FBQyxHQUFHLFVBQXNCO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxZQUFvQjtRQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDcEUsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUFrQixFQUFFLElBQWlCO1FBQzVDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxRQUFrQixFQUFFLFFBQXlDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBa0I7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7dUdBeENRLGFBQWE7MkdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUXVhbnRpdHkgfSBmcm9tICcuL3F1YW50aXR5JztcclxuaW1wb3J0IHsgVW5pdCB9IGZyb20gJy4vdW5pdCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFF1YW50aXR5TWVzc2FnZSB7XHJcbiAgICBxdWFudGl0eT86IFF1YW50aXR5O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTeXN0ZW1PZlVuaXRzIHtcclxuXHJcbiAgICBxdWFudGl0aWVzOiBRdWFudGl0eVtdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWFudGl0eUNoYW5nZSA9IG5ldyBTdWJqZWN0PFF1YW50aXR5TWVzc2FnZT4oKTtcclxuICAgIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzJCA9IHRoaXMucXVhbnRpdHlDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG5cclxuICAgIGFkZCguLi5xdWFudGl0aWVzOiBRdWFudGl0eVtdKSB7XHJcbiAgICAgICAgdGhpcy5xdWFudGl0aWVzLnB1c2goLi4ucXVhbnRpdGllcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KHF1YW50aXR5TmFtZTogc3RyaW5nKTogUXVhbnRpdHl8dW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBxdWFudGl0eSA9IHRoaXMucXVhbnRpdGllcy5maW5kKHEgPT4gcS5uYW1lID09PSBxdWFudGl0eU5hbWUpO1xyXG4gICAgICAgIHJldHVybiBxdWFudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RVbml0KHF1YW50aXR5OiBRdWFudGl0eSwgdW5pdDogc3RyaW5nfFVuaXQpIHtcclxuICAgICAgICBxdWFudGl0eS5zZWxlY3RVbml0KHVuaXQpO1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0KHF1YW50aXR5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByYWN0ZWQgc2luY2UgMTEuMC4wLiBVc2UgY2hhbmdlcyQgaW5zdGVhZC5cclxuICAgICAqL1xyXG4gICAgY2hhbmdlcygpOiBPYnNlcnZhYmxlPFF1YW50aXR5TWVzc2FnZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNoYW5nZXMkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJhY3RlZCBzaW5jZSAxMS4wLjAuIFVzZSBjaGFuZ2VzJCBpbnN0ZWFkLlxyXG4gICAgICovXHJcbiAgICBzdWJzY3JpYmUocXVhbnRpdHk6IFF1YW50aXR5LCBjYWxsYmFjazogKG06IFF1YW50aXR5TWVzc2FnZSkgPT4gdW5rbm93bik6IFN1YnNjcmlwdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVhbnRpdHlDaGFuZ2UucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKG0gPT4gbS5xdWFudGl0eSA9PT0gcXVhbnRpdHkpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGNhbGxiYWNrKTtcclxuICAgIH1cclxuXHJcbiAgICBicm9hZGNhc3QocXVhbnRpdHk6IFF1YW50aXR5KSB7XHJcbiAgICAgICAgdGhpcy5xdWFudGl0eUNoYW5nZS5uZXh0KHsgcXVhbnRpdHkgfSk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==