{"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":";;;;;AAQA;AACA,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;;IAEd,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,CAAC,CAAM,EAAE,CAAM,KACvD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpE,KAAA,CAAC,CAAC;AACJ,CAAA;MAKY,eAAe,CAAA;AAE1B,IAAA,WAAA,GAAA,GAAiB;IAEjB,kBAAkB,CAAC,IAAmB,EAAE,IAAmB,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,QAAQ,CAAC;AAE3B,QAAA,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAY,GAAA,IAAI,EAAX,GAAG,GAAA,MAAA,CAAI,IAAI,EAAnD,CAAA,OAAA,EAAA,QAAA,CAA4C,CAAO,CAAC;AAC1D,QAAA,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAY,GAAA,IAAI,EAAX,GAAG,GAAA,MAAA,CAAI,IAAI,EAAnD,CAAA,OAAA,EAAA,QAAA,CAA4C,CAAO,CAAC;QAE1D,IAAI,KAAK,GAAuB,MAAM,CAAC;AACvC,QAAA,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,EAAE;YAClD,KAAK,GAAG,QAAQ,CAAC;AACpB,SAAA;AACD,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACrD,YAAA,OAAO,QAAQ,CAAC;AACnB,SAAA;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAE,GAAW,CAAC,CAAC,CAAC,EAAG,GAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9C,KAAK,GAAG,QAAQ,CAAC;gBACjB,MAAM;AACT,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,SAAS,CAAC,GAAsB,EAAE,GAAsB,EAAA;AACtD,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,KAAK,CAAC;AAEvB,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,SAAS,KAAI;AACzC,YAAA,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AACpC,YAAA,IAAI,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE;AAC7C,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACD,YAAA,OAAQ,YAAoB,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,QAAgB,KAAK,KAAK,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3G,SAAC,CAAC,CAAC;KACJ;;6GAvCU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;ACdD,MAAM,KAAK,GAAI,MAAc,CAAC,OAAO,GAAI,MAAc,CAAC,OAAO,GAAG,MAAM,CAAC;MAW5D,iBAAiB,CAAA;IAW5B,WACU,CAAA,QAAoB,EACpB,OAAwB,EAAA;AADxB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;AACpB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;AATlC;;AAEG;AACM,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;KAOvB;AAEL,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACpG,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,WAAW,KAAK,QAAQ,EAAE;gBAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,aAAA;iBAAM,IAAI,WAAW,KAAK,QAAQ,EAAE;gBAClC,IAAI,CAAC,QAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9F,aAAA;AAEF,SAAA;AAED,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,aAAA;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5E,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,oBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AACxB,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC;AAC9D,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,IAAI,GAAG,CAAC;AACvE,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACzB,SAAA;KACF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACjF,SAAA;KACF;;+GAlEU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,gJAPlB,CAAE,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;4FAOD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,YACX,CAAA,CAAE,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;4HASH,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAIG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;MCPK,cAAc,CAAA;;4GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAd,cAAc,EAAA,YAAA,EAAA,CARvB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAKjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;6GAGR,cAAc,EAAA,CAAA,CAAA;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;AAClB,qBAAA;iBACF,CAAA;;;ACdD;;AAEG;;ACFH;;AAEG;;;;"}