ng-units
Version:
Angular component library for units of measurement.
1 lines • 36.4 kB
Source Map (JSON)
{"version":3,"file":"ng-units.mjs","sources":["../../../projects/ng-units/src/lib/unit.ts","../../../projects/ng-units/src/lib/formatters.ts","../../../projects/ng-units/src/lib/parsers.ts","../../../projects/ng-units/src/lib/quantity.ts","../../../projects/ng-units/src/lib/system-of-units.service.ts","../../../projects/ng-units/src/lib/quantity.pipe.ts","../../../projects/ng-units/src/lib/quantity.directive.ts","../../../projects/ng-units/src/lib/system-of-units.service.provider.ts","../../../projects/ng-units/src/lib/unit-select.component.ts","../../../projects/ng-units/src/lib/ng-units.module.ts","../../../projects/ng-units/src/lib/quantities/area.ts","../../../projects/ng-units/src/lib/quantities/frequency.ts","../../../projects/ng-units/src/lib/quantities/length.ts","../../../projects/ng-units/src/lib/quantities/mass.ts","../../../projects/ng-units/src/lib/quantities/pressure.ts","../../../projects/ng-units/src/lib/quantities/temperature.ts","../../../projects/ng-units/src/lib/quantities/time.ts","../../../projects/ng-units/src/lib/quantities/volume.ts","../../../projects/ng-units/src/ng-units.ts"],"sourcesContent":["export interface Unit {\r\n symbol: string;\r\n fromBase(value: number): number;\r\n toBase(value: number): number;\r\n}\r\n\r\n\r\nexport interface SimpleUnitDefinition {\r\n symbol: string;\r\n factor: number;\r\n offset?: number;\r\n}\r\n\r\n\r\nexport class SimpleUnit {\r\n constructor(public symbol: string, public factor: number, public offset: number = 0) {\r\n }\r\n\r\n fromBase(value: number): number {\r\n return value * this.factor - this.offset;\r\n }\r\n\r\n toBase(value: number): number {\r\n return (value + this.offset) / this.factor;\r\n }\r\n}\r\n","\r\nexport type QuantityFormatter = (value: number) => string;\r\n\r\nexport const QuantityFormatters: { [name: string]: QuantityFormatter } = {\r\n 'default': function (value: number): string {\r\n const abs = Math.abs(value);\r\n let text: string;\r\n if (abs && (abs >= 1e5 || abs <= 1e-2)) {\r\n text = removeZeroDigits(value.toExponential(3));\r\n }\r\n else {\r\n if (abs > 1) {\r\n text = value.toFixed(2);\r\n }\r\n else {\r\n text = value.toPrecision(3);\r\n }\r\n text = Number(text).toString();\r\n }\r\n return text;\r\n },\r\n 'currency': function (value: number): string {\r\n return value.toFixed(2);\r\n }\r\n};\r\n\r\nfunction removeZeroDigits(text: string) {\r\n return text.replace(/\\.?0+e/, 'e');\r\n}\r\n","export type QuantityParser = (value?: string|number|null) => number|null|undefined;\r\n\r\nexport const QuantityParsers: { [name: string]: QuantityParser } = {\r\n\r\n 'default': function(value?: string|number|null) {\r\n if (typeof value === 'string') {\r\n const str = value.replace(',', '.');\r\n return str === '' ? null : Number(str);\r\n }\r\n return value;\r\n }\r\n};\r\n","import { SimpleUnit, Unit } from './unit';\r\nimport { QuantityFormatter, QuantityFormatters } from './formatters';\r\nimport { QuantityParser, QuantityParsers } from './parsers';\r\n\r\n\r\nexport interface QuantityDefinition {\r\n name: string;\r\n units: { [symbol: string]: number[] };\r\n formatter?: string;\r\n parser?: string;\r\n}\r\n\r\n\r\nexport class Quantity {\r\n name!: string;\r\n unit!: Unit;\r\n units: Unit[] = [];\r\n formatter!: QuantityFormatter;\r\n parser!: QuantityParser;\r\n\r\n constructor(definition?: QuantityDefinition) {\r\n if (definition) {\r\n this.name = definition.name;\r\n for (const symbol of Object.keys(definition.units)) {\r\n const def = definition.units[symbol];\r\n this.units.push(new SimpleUnit(symbol, def[0], def[1]));\r\n }\r\n this.unit = this.units[0];\r\n const formatterName = definition.formatter || 'default';\r\n const parserName = definition.parser || 'default';\r\n this.formatter = QuantityFormatters[formatterName];\r\n this.parser = QuantityParsers[parserName];\r\n }\r\n }\r\n\r\n fromBase(value: string|number|undefined|null, unit?: Unit|string): number|null {\r\n const n = this.parser(value);\r\n return isNumeric(n) ? this.getUnit(unit).fromBase(n) : null;\r\n }\r\n\r\n toBase(value: string|number|null|undefined, unit?: Unit|string): number|null {\r\n const n = this.parser(value);\r\n return isNumeric(n) ? this.getUnit(unit).toBase(n) : null;\r\n }\r\n\r\n private getUnit(unit?: string|Unit) {\r\n return this.findUnit(unit) || this.unit;\r\n }\r\n\r\n selectUnit(unit?: string|Unit|null) {\r\n const u = this.findUnit(unit);\r\n if (u) {\r\n this.unit = u;\r\n }\r\n }\r\n\r\n findUnit(unit?: string|Unit|null): Unit|undefined {\r\n if (!unit) {\r\n return;\r\n }\r\n const id = typeof unit === 'string' ? unit : unit.symbol;\r\n const units = this.units;\r\n for (let i = 0, e = units.length; i !== e; i++) {\r\n if (units[i].symbol === id) {\r\n return units[i];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns a string containing formatted number and unit symbol (optional).\r\n * @param value string or number\r\n */\r\n print(value: string|number|null|undefined, addUnitSymbol?: boolean, unit?: string|Unit) {\r\n const number = this.parser(value);\r\n if (typeof number !== 'number') {\r\n return '';\r\n }\r\n const result = this.formatter(number);\r\n return addUnitSymbol ? (result + ' ' + this.getUnit(unit).symbol) : result;\r\n }\r\n}\r\n\r\nfunction isNumeric(value: unknown): value is number {\r\n return typeof value === 'number' && !isNaN(value);\r\n}\r\n\r\nexport function defaultPrint(value: string|number|undefined|null): string {\r\n const num = QuantityParsers['default'](value);\r\n return typeof num === 'number' ? QuantityFormatters['default'](num) : '';\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Quantity } from './quantity';\r\nimport { Unit } from './unit';\r\nimport { Subscription, Subject, Observable } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n\r\nexport class QuantityMessage {\r\n quantity?: Quantity;\r\n}\r\n\r\n@Injectable()\r\nexport class SystemOfUnits {\r\n\r\n quantities: Quantity[] = [];\r\n\r\n private readonly quantityChange = new Subject<QuantityMessage>();\r\n public readonly changes$ = this.quantityChange.asObservable();\r\n\r\n\r\n add(...quantities: Quantity[]) {\r\n this.quantities.push(...quantities);\r\n }\r\n\r\n get(quantityName: string): Quantity|undefined {\r\n const quantity = this.quantities.find(q => q.name === quantityName);\r\n return quantity;\r\n }\r\n\r\n selectUnit(quantity: Quantity, unit: string|Unit) {\r\n quantity.selectUnit(unit);\r\n this.broadcast(quantity);\r\n }\r\n\r\n /**\r\n * @depracted since 11.0.0. Use changes$ instead.\r\n */\r\n changes(): Observable<QuantityMessage> {\r\n return this.changes$;\r\n }\r\n\r\n /**\r\n * @depracted since 11.0.0. Use changes$ instead.\r\n */\r\n subscribe(quantity: Quantity, callback: (m: QuantityMessage) => unknown): Subscription {\r\n return this.quantityChange.pipe(\r\n filter(m => m.quantity === quantity))\r\n .subscribe(callback);\r\n }\r\n\r\n broadcast(quantity: Quantity) {\r\n this.quantityChange.next({ quantity });\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { defaultPrint, Quantity } from './quantity';\r\nimport { SystemOfUnits } from './system-of-units.service';\r\nimport { Unit } from './unit';\r\n\r\n@Pipe({\r\n name: 'ngQuantity',\r\n pure: false\r\n})\r\nexport class QuantityPipe implements PipeTransform {\r\n\r\n constructor(private system: SystemOfUnits) {\r\n }\r\n\r\n transform(value: string | number | null | undefined,\r\n quantity?: Quantity | string,\r\n addSymbolOrUnit?: boolean|Unit|string,\r\n addSymbol?: boolean): string|undefined\r\n {\r\n if (typeof quantity === 'string') {\r\n quantity = this.system.get(quantity);\r\n }\r\n\r\n let unit: string|Unit|undefined;\r\n if (typeof addSymbolOrUnit === 'boolean') {\r\n addSymbol = addSymbolOrUnit;\r\n }\r\n else {\r\n unit = addSymbolOrUnit;\r\n }\r\n\r\n if (value === null || value === undefined) {\r\n if (!quantity || !addSymbol) {\r\n return '';\r\n }\r\n if (unit) {\r\n return quantity.findUnit(unit)?.symbol;\r\n }\r\n return quantity.unit.symbol;\r\n }\r\n return quantity ? quantity.print(quantity.fromBase(value, unit), addSymbol, unit) : defaultPrint(value);\r\n }\r\n}\r\n\r\n","import {\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n forwardRef,\r\n HostListener,\r\n Input,\r\n} from '@angular/core';\r\n\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { defaultPrint, Quantity } from './quantity';\r\nimport { SystemOfUnits } from './system-of-units.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { Unit } from './unit';\r\n\r\n\r\nconst CONTROL_VALUE_ACCESSOR = {\r\n name: 'ngQuantityValueAccessor',\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => QuantityDirective),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n // tslint:disable-next-line:directive-selector\r\n selector: '[ngQuantity]',\r\n providers: [\r\n CONTROL_VALUE_ACCESSOR\r\n ]\r\n})\r\nexport class QuantityDirective implements ControlValueAccessor, OnInit, OnChanges, OnDestroy {\r\n\r\n @Input('ngQuantity') quantityAttr?: string | Quantity;\r\n @Input() ngUnit?: string|Unit;\r\n\r\n quantity?: Quantity;\r\n\r\n private inputElement!: HTMLInputElement;\r\n private onTouch?: () => void;\r\n private onModelChange?: (value: string|number|undefined|null) => void;\r\n private currentModelValue?: string|number|null;\r\n private subscription?: Subscription;\r\n\r\n constructor(private elementRef: ElementRef, private system: SystemOfUnits) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.inputElement = this.getInputElement();\r\n this.initQuantity();\r\n }\r\n\r\n private initQuantity() {\r\n this.unsubscribe();\r\n this.quantity = typeof this.quantityAttr === 'string' ?\r\n this.system.get(this.quantityAttr) : this.quantityAttr;\r\n this.subscribe();\r\n this.updateUnit();\r\n }\r\n\r\n private subscribe() {\r\n if (this.quantity) {\r\n this.subscription = this.system.changes$.subscribe(m => {\r\n if (m.quantity === this.quantity) {\r\n this.updateUnit();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private updateUnit() {\r\n this.updateView(this.currentModelValue);\r\n }\r\n\r\n private unsubscribe() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const change = changes['quantityAttr'];\r\n if (change && !change.isFirstChange()) {\r\n this.initQuantity();\r\n }\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.onTouch = fn;\r\n }\r\n\r\n registerOnChange(fn: (value: string|number|undefined|null) => void) {\r\n this.onModelChange = fn;\r\n }\r\n\r\n // Parser: View to Model\r\n @HostListener('input', ['$event'])\r\n onControlInput() {\r\n\r\n const rawValue = this.inputElement.value;\r\n const modelValue = this.quantity ? this.quantity.toBase(rawValue, this.ngUnit) : rawValue;\r\n this.currentModelValue = modelValue;\r\n\r\n if (this.onTouch) {\r\n this.onTouch();\r\n }\r\n\r\n if (this.onModelChange) {\r\n this.onModelChange(modelValue);\r\n }\r\n }\r\n\r\n\r\n // Formatter: Model to View\r\n writeValue(rawValue: string|number): void {\r\n this.currentModelValue = rawValue;\r\n this.updateView(rawValue);\r\n }\r\n\r\n private updateView(modelValue: string|number|undefined|null) {\r\n if (!this.quantity) {\r\n this.inputElement.value = defaultPrint(modelValue);\r\n return;\r\n }\r\n const converted = this.quantity.fromBase(modelValue, this.ngUnit);\r\n if (converted !== null && converted !== undefined) {\r\n this.inputElement.value = this.quantity.print(converted, false);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n this.inputElement.value = null!;\r\n }\r\n }\r\n\r\n private getInputElement(): HTMLInputElement {\r\n let input: HTMLInputElement;\r\n const element = this.elementRef.nativeElement;\r\n if (element.tagName === 'INPUT') {\r\n input = element;\r\n }\r\n else {\r\n input = element.querySelector('input');\r\n }\r\n\r\n if (!input) {\r\n throw new Error('ngQuantity only allowed on inputs or elements containing inputs.');\r\n }\r\n return input;\r\n }\r\n\r\n}\r\n","import { SystemOfUnits } from './system-of-units.service';\r\nimport { Quantity, QuantityDefinition } from './quantity';\r\n\r\nexport interface SystemOfUnitsConfig {\r\n quantities: QuantityDefinition[];\r\n}\r\n\r\nexport function systemOfUnitsFactory(config?: SystemOfUnitsConfig) {\r\n const system = new SystemOfUnits();\r\n if (config && config.quantities) {\r\n system.add(...config.quantities.map(q => new Quantity(q)));\r\n }\r\n return system;\r\n}\r\n","import { OnDestroy, AfterViewInit, Output, EventEmitter } from '@angular/core';\r\nimport { ElementRef, Component, Input, HostListener } from '@angular/core';\r\nimport { Quantity } from './quantity';\r\nimport { Unit } from './unit';\r\nimport { SystemOfUnits } from './system-of-units.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[ngUnitSelect]',\r\n template: `<option *ngFor=\"let u of quantity?.units\">{{u.symbol}}</option>`,\r\n})\r\nexport class UnitSelectComponent implements OnDestroy, AfterViewInit {\r\n\r\n // tslint:disable-next-line:no-input-rename\r\n @Input('ngUnitSelect') set quantityAttr(value: string | Quantity) {\r\n\r\n this.initQuantity(value);\r\n setTimeout(() => this.selectUnit(), 0);\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n this.subscription = this.system.changes$.subscribe((msg) => {\r\n if (msg.quantity === this.quantity) {\r\n this.selectUnit();\r\n }\r\n });\r\n }\r\n @Output() changeUnit = new EventEmitter<Unit>();\r\n\r\n quantity?: Quantity;\r\n\r\n private currentUnit?: Unit|null;\r\n private select: HTMLSelectElement;\r\n private subscription?: Subscription;\r\n\r\n constructor(elementRef: ElementRef, private system: SystemOfUnits) {\r\n this.select = elementRef.nativeElement;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.selectUnit();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n private initQuantity(quantity: string | Quantity) {\r\n this.quantity = typeof quantity === 'string' ? this.system.get(quantity) : quantity;\r\n }\r\n\r\n private selectUnit() {\r\n const quantity = this.quantity;\r\n this.currentUnit = quantity ? quantity.unit : null;\r\n this.select.selectedIndex = (this.currentUnit && quantity) ? quantity.units.indexOf(this.currentUnit) : -1;\r\n }\r\n\r\n @HostListener('change', ['$event'])\r\n change() {\r\n if (!this.quantity) {\r\n return;\r\n }\r\n const index = this.select.selectedIndex;\r\n const unit = this.quantity.units[index];\r\n this.currentUnit = unit;\r\n this.system.selectUnit(this.quantity, unit);\r\n this.changeUnit.emit(unit);\r\n }\r\n}\r\n\r\n","import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { QuantityPipe } from './quantity.pipe';\r\nimport { QuantityDirective } from './quantity.directive';\r\nimport { SystemOfUnits } from './system-of-units.service';\r\nimport { SystemOfUnitsConfig, systemOfUnitsFactory } from './system-of-units.service.provider';\r\nimport { UnitSelectComponent } from './unit-select.component';\r\n\r\nexport const SYSTEM_OF_UNITS_CONFIGURATION = new InjectionToken<SystemOfUnitsConfig>('SYSTEM_OF_UNITS_CONFIGURATION');\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n QuantityPipe,\r\n QuantityDirective,\r\n UnitSelectComponent\r\n ],\r\n exports: [\r\n QuantityPipe,\r\n QuantityDirective,\r\n UnitSelectComponent\r\n ]\r\n})\r\nexport class NgUnitsModule {\r\n static forRoot(config?: SystemOfUnitsConfig): ModuleWithProviders<NgUnitsModule> {\r\n return {\r\n ngModule: NgUnitsModule,\r\n providers: [\r\n { provide: SYSTEM_OF_UNITS_CONFIGURATION, useValue: config || {} },\r\n {\r\n provide: SystemOfUnits,\r\n useFactory: systemOfUnitsFactory,\r\n deps: [SYSTEM_OF_UNITS_CONFIGURATION]\r\n }\r\n ]\r\n };\r\n }\r\n static forChild(): ModuleWithProviders<NgUnitsModule> {\r\n return {\r\n ngModule: NgUnitsModule,\r\n providers: []\r\n };\r\n }\r\n}\r\n","export const area = {\r\n name: 'Area',\r\n units: {\r\n 'm²' : [1],\r\n 'cm²': [10000],\r\n 'mm³': [1000000],\r\n },\r\n};\r\n","export const frequency = {\r\n name: 'Frequency',\r\n units: {\r\n 'Hz' : [1],\r\n 'kHz': [1e-3],\r\n 'MHz': [1e-6],\r\n 'rpm': [60]\r\n },\r\n};\r\n","export const length = {\r\n name: 'Length',\r\n units: {\r\n 'm' : [1],\r\n 'cm': [100],\r\n 'mm': [1000],\r\n 'in': [1000 / 25.4],\r\n 'ft': [1000 / 12 / 25.4],\r\n },\r\n};\r\n","export const mass = {\r\n name: 'Mass',\r\n units: {\r\n 'g' : [1e3],\r\n 'kg': [1],\r\n 't' : [1e-3],\r\n },\r\n};\r\n","export const pressure = {\r\n name: 'Pressure',\r\n units: {\r\n 'Pa' : [1],\r\n 'bar' : [1e-5],\r\n 'mbar' : [1e-2],\r\n 'Torr' : [760 / 101325],\r\n 'mTorr': [760000 / 101325],\r\n 'psi' : [0.0254 * 0.0254 / 0.453592 / 9.80665],\r\n 'inHg' : [760 / 101325 / 25.4],\r\n },\r\n};\r\n","export const temperature = {\r\n name: 'Temperature',\r\n units: {\r\n 'K' : [1],\r\n '°C': [1, 273.15],\r\n '°F': [1.8, (273.15 * 1.8) - 32],\r\n },\r\n};\r\n","export const time = {\r\n name: 'Time',\r\n units: {\r\n 'ms' : [1000],\r\n 's' : [1],\r\n 'min': [1 / 60],\r\n 'h' : [1 / 3600],\r\n },\r\n};\r\n","export const volume = {\r\n name: 'Volume',\r\n units: {\r\n 'm³' : [1],\r\n 'cm³': [1000000],\r\n 'mm³': [1000000000],\r\n },\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SystemOfUnits"],"mappings":"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"}