@thachnuida/ngx-uplot
Version:
Angular wrapper for uplot.
1 lines • 10.1 kB
Source Map (JSON)
{"version":3,"file":"thachnuida-ngx-uplot.mjs","sources":["../../../projects/ngx-uplot/src/lib/ngx-uplot.service.ts","../../../projects/ngx-uplot/src/lib/ngx-uplot.component.ts","../../../projects/ngx-uplot/src/lib/ngx-uplot.module.ts","../../../projects/ngx-uplot/src/public-api.ts","../../../projects/ngx-uplot/src/thachnuida-ngx-uplot.ts"],"sourcesContent":["// This file is based on https://github.com/skalinichev/uplot-wrappers/blob/master/common/index.ts\n\nimport { Injectable } from '@angular/core';\n\nimport * as uPlot from 'uplot';\n\ntype OptionsUpdateState = 'keep' | 'update' | 'create';\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nif (!Object.is) {\n // eslint-disable-next-line\n Object.defineProperty(Object, \"is\", {value: (x: any, y: any) =>\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n });\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxUplotService {\n\n constructor() { }\n\n optionsUpdateState(_lhs: uPlot.Options, _rhs: uPlot.Options): OptionsUpdateState {\n if (!_lhs) return 'create';\n\n const {width: lhsWidth, height: lhsHeight, ...lhs} = _lhs;\n const {width: rhsWidth, height: rhsHeight, ...rhs} = _rhs;\n\n let state: OptionsUpdateState = 'keep';\n if (lhsHeight !== rhsHeight || lhsWidth !== rhsWidth) {\n state = 'update';\n }\n if (Object.keys(lhs).length !== Object.keys(rhs).length) {\n return 'create';\n }\n for (const k of Object.keys(lhs)) {\n if (!Object.is((lhs as any)[k], (rhs as any)[k])) {\n state = 'create';\n break;\n }\n }\n return state;\n }\n\n dataMatch(lhs: uPlot.AlignedData, rhs: uPlot.AlignedData): boolean {\n if (!lhs) return false;\n\n if (lhs.length !== rhs.length) {\n return false;\n }\n return lhs.every((lhsOneSeries, seriesIdx) => {\n const rhsOneSeries = rhs[seriesIdx];\n if (lhsOneSeries.length !== rhsOneSeries.length) {\n return false;\n }\n return (lhsOneSeries as any).every((value: any, valueIdx: number) => value === rhsOneSeries[valueIdx]);\n });\n }\n}\n","import { Component, Input, OnInit, OnChanges, SimpleChanges, ElementRef, OnDestroy } from '@angular/core';\nimport * as _uPlot from 'uplot';\nimport { NgxUplotService } from './ngx-uplot.service';\n\nconst uPlot = (_uPlot as any).default ? (_uPlot as any).default : _uPlot;\n\n@Component({\n selector: 'ngx-uplot',\n template: ``,\n styles: [\n `\n :host {display: block;}\n `\n ]\n})\nexport class NgxUplotComponent implements OnChanges, OnDestroy {\n\n @Input() options!: any;\n @Input() data!: uPlot.AlignedData;\n /**\n * Flag controlling whether to reset the scales on data change. Defaults to true.\n */\n @Input() resetScales = true;\n\n chartElm!: uPlot;\n\n constructor(\n private _element: ElementRef,\n private service: NgxUplotService\n ) { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['options']) {\n this.addChartSize();\n const optionState = this.service.optionsUpdateState(changes['options'].previousValue, this.options);\n if (this.chartElm || optionState === 'create') {\n this.create();\n } else if (optionState === 'update') {\n (this.chartElm as uPlot).setSize({ width: this.options.width, height: this.options.height });\n }\n\n }\n\n if (changes['data']) {\n if (!this.chartElm) {\n this.create();\n } else if (!this.service.dataMatch(changes['data'].previousValue, this.data)) {\n if (this.resetScales) {\n this.chartElm.setData(this.data, true);\n } else {\n this.chartElm.setData(this.data, false);\n this.chartElm.redraw();\n }\n }\n }\n }\n\n addChartSize() {\n if (!this.options.width) {\n this.options.width = this._element.nativeElement.clientWidth;\n }\n if (!this.options.height) {\n this.options.height = this._element.nativeElement.clientHeight || 600;\n }\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n destroy() {\n if (this.chartElm) {\n this.chartElm.destroy();\n }\n }\n\n create() {\n this.destroy();\n if (this.options && this.data) {\n this.chartElm = new uPlot(this.options, this.data, this._element.nativeElement);\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { NgxUplotComponent } from './ngx-uplot.component';\n\n\n\n@NgModule({\n declarations: [\n NgxUplotComponent\n ],\n imports: [\n ],\n exports: [\n NgxUplotComponent\n ]\n})\nexport class NgxUplotModule { }\n","/*\n * Public API Surface of ngx-uplot\n */\n\nexport * from './lib/ngx-uplot.service';\nexport * from './lib/ngx-uplot.component';\nexport * from './lib/ngx-uplot.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxUplotService"],"mappings":"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"}