@tetacom/ng-threejs-chart 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/.eslintrc.json +3 -5
  2. package/component/three/custom-series/custom-series.component.d.ts +1 -3
  3. package/component/three/three-chart/area-3d/area-3d.component.d.ts +5 -4
  4. package/component/three/three-chart/axes-3d/axes-3d.component.d.ts +0 -1
  5. package/component/three/three-chart/base-3d-series/base3d-series.component.d.ts +2 -3
  6. package/component/three/three-chart/block-3d/block-3d.component.d.ts +3 -5
  7. package/component/three/three-chart/canvas/canvas.component.d.ts +2 -2
  8. package/component/three/three-chart/line-3d/line-3d.component.d.ts +1 -3
  9. package/component/three/three-chart/scene/scene.component.d.ts +1 -2
  10. package/component/three/three-chart/three-chart.component.d.ts +0 -2
  11. package/fesm2022/tetacom-ng-threejs-chart.mjs +91 -114
  12. package/fesm2022/tetacom-ng-threejs-chart.mjs.map +1 -1
  13. package/package.json +3 -5
  14. package/esm2022/common/model/base-3d-point.mjs +0 -2
  15. package/esm2022/component/three/custom-series/custom-series.component.mjs +0 -32
  16. package/esm2022/component/three/public-api.mjs +0 -12
  17. package/esm2022/component/three/three-chart/area-3d/area-3d.component.mjs +0 -54
  18. package/esm2022/component/three/three-chart/axes-3d/axes-3d.component.mjs +0 -59
  19. package/esm2022/component/three/three-chart/base-3d-series/base3d-series.component.mjs +0 -28
  20. package/esm2022/component/three/three-chart/block-3d/block-3d.component.mjs +0 -74
  21. package/esm2022/component/three/three-chart/canvas/canvas.component.mjs +0 -22
  22. package/esm2022/component/three/three-chart/directive/canvas-3d-host.mjs +0 -45
  23. package/esm2022/component/three/three-chart/directive/public-api.mjs +0 -3
  24. package/esm2022/component/three/three-chart/directive/series-3d-host.mjs +0 -45
  25. package/esm2022/component/three/three-chart/line-3d/line-3d.component.mjs +0 -40
  26. package/esm2022/component/three/three-chart/model/axes-3d-min-max.mjs +0 -2
  27. package/esm2022/component/three/three-chart/model/axis-3d-point.mjs +0 -2
  28. package/esm2022/component/three/three-chart/model/base-3d-series.mjs +0 -2
  29. package/esm2022/component/three/three-chart/model/base-3d-three-point.mjs +0 -2
  30. package/esm2022/component/three/three-chart/model/block-3d-series.mjs +0 -2
  31. package/esm2022/component/three/three-chart/model/block3d-point.mjs +0 -2
  32. package/esm2022/component/three/three-chart/model/enum/public-api.mjs +0 -2
  33. package/esm2022/component/three/three-chart/model/enum/series-3d-type.mjs +0 -6
  34. package/esm2022/component/three/three-chart/model/i-3d-chart-config.mjs +0 -2
  35. package/esm2022/component/three/three-chart/model/line-3d-point.mjs +0 -2
  36. package/esm2022/component/three/three-chart/model/line-3d-series.mjs +0 -2
  37. package/esm2022/component/three/three-chart/model/public-api.mjs +0 -11
  38. package/esm2022/component/three/three-chart/scene/scene.component.mjs +0 -45
  39. package/esm2022/component/three/three-chart/service/chart-3d.service.mjs +0 -83
  40. package/esm2022/component/three/three-chart/three-chart.component.mjs +0 -45
  41. package/esm2022/index.mjs +0 -2
  42. package/esm2022/tetacom-ng-threejs-chart.mjs +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"tetacom-ng-threejs-chart.mjs","sources":["../../src/component/three/three-chart/service/chart-3d.service.ts","../../src/component/three/three-chart/base-3d-series/base3d-series.component.ts","../../src/component/three/three-chart/base-3d-series/base3d-series.component.html","../../src/component/three/custom-series/custom-series.component.ts","../../src/component/three/custom-series/custom-series.component.html","../../src/component/three/three-chart/area-3d/area-3d.component.ts","../../src/component/three/three-chart/area-3d/area-3d.component.html","../../src/component/three/three-chart/axes-3d/axes-3d.component.ts","../../src/component/three/three-chart/axes-3d/axes-3d.component.html","../../src/component/three/three-chart/block-3d/block-3d.component.ts","../../src/component/three/three-chart/block-3d/block-3d.component.html","../../src/component/three/three-chart/line-3d/line-3d.component.ts","../../src/component/three/three-chart/line-3d/line-3d.component.html","../../src/component/three/three-chart/model/enum/series-3d-type.ts","../../src/component/three/three-chart/directive/series-3d-host.ts","../../src/component/three/three-chart/scene/scene.component.ts","../../src/component/three/three-chart/scene/scene.component.html","../../src/component/three/three-chart/canvas/canvas.component.ts","../../src/component/three/three-chart/canvas/canvas.component.html","../../src/component/three/three-chart/directive/canvas-3d-host.ts","../../src/component/three/three-chart/three-chart.component.ts","../../src/component/three/three-chart/three-chart.component.html","../../src/tetacom-ng-threejs-chart.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as d3 from 'd3';\nimport { map, Observable, ReplaySubject, shareReplay} from 'rxjs';\n\nimport { Axes3dMinMax } from '../model/axes-3d-min-max';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Chart3dService {\n public minMax: Observable<Axes3dMinMax>;\n public data: Observable<I3dChartConfig>;\n public scales: Observable<{ x; y; z }>;\n private data$: ReplaySubject<I3dChartConfig> =\n new ReplaySubject<I3dChartConfig>(1);\n\n constructor() {\n this.data = this.data$.asObservable();\n this.minMax = this.data.pipe(\n map(_ => {\n return this.getAxesMinMax(_);\n })\n );\n this.scales = this.minMax.pipe(\n map(minMax => {\n return this.getScales(minMax);\n }),\n shareReplay(1)\n );\n }\n\n setData(data) {\n this.data$.next(data);\n }\n\n private getAxesMinMax(data: I3dChartConfig): Axes3dMinMax {\n const zArr: number[] = data.series\n .map(_ => {\n return _?.data?.map(d => d?.z);\n })\n .flat()\n .filter(_ => {\n return _ !== null && _ !== undefined;\n });\n const xArr: number[] = data.series\n .map(_ => {\n return _?.data?.map(d => d?.x);\n })\n .flat()\n .filter(_ => {\n return _ !== null && _ !== undefined;\n });\n const yArr: number[] = data.series\n .map(_ => {\n return _?.data?.map(d => d?.y);\n })\n .flat()\n .filter(_ => {\n return _ !== null && _ !== undefined;\n });\n const ZMinMaxVal: [number, number] = [Math.min(...zArr), Math.max(...zArr)];\n const XMinMaxVal: [number, number] = [Math.min(...xArr), Math.max(...xArr)];\n const YMinMaxVal: [number, number] = [Math.min(...yArr), Math.max(...yArr)];\n return {\n z: this.getMinMaxRange(ZMinMaxVal, data.zAxis?.min, data.zAxis?.max),\n x: this.getMinMaxRange(XMinMaxVal, data.xAxis?.min, data.xAxis?.max),\n y: this.getMinMaxRange(YMinMaxVal, data.yAxis?.min, data.yAxis?.max),\n };\n }\n\n private getMinMaxRange(\n minMax: [number, number],\n axisMin: number,\n axisMax: number\n ): [number, number] {\n const min =\n axisMin ||\n (Math.abs(minMax[0] - minMax[1]) < 0.0000001\n ? minMax[0] - Math.abs(minMax[0] - 1) * 0.1\n : minMax[0]);\n const max =\n axisMax ||\n (Math.abs(minMax[0] - minMax[1]) < 0.0000001\n ? minMax[1] + Math.abs(minMax[1] + 1) * 0.1\n : minMax[1]);\n return [min, max];\n }\n\n private getScales(axesMinMax: Axes3dMinMax) {\n const z = d3.scaleLinear().domain(axesMinMax.z).range([50, -50]);\n const x = d3.scaleLinear().domain(axesMinMax.x).range([25, 0]);\n const y = d3.scaleLinear().domain(axesMinMax.y).range([50, -50]);\n return {\n x,\n y,\n z,\n };\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { Base3dThreePoint } from '../model/base-3d-three-point';\nimport { Base3dSeries } from '../model/base-3d-series';\nimport { NgtStore } from 'angular-three';\n\n@Component({\n selector: 'teta-base3d-series',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './base3d-series.component.html',\n styleUrls: ['./base3d-series.component.scss'],\n})\nexport class Base3dSeriesComponent<T extends Base3dThreePoint> {\n @Input()\n set series(series: Base3dSeries<T>) {\n this._series = series;\n }\n\n get series() {\n return this._series;\n }\n protected _series: Base3dSeries<T>;\n constructor(protected svc: Chart3dService, protected ngtStore: NgtStore) {}\n}\n","<p>base3d-series works!</p>\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n OnInit,\n} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Base3dSeriesComponent} from '../three-chart/base-3d-series/base3d-series.component';\nimport {Base3dPoint} from '../../../common/model/base-3d-point';\nimport {Chart3dService} from '../three-chart/service/chart-3d.service';\nimport {extend, NgtArgs, NgtStore} from 'angular-three';\nimport {Observable} from 'rxjs';\nimport * as THREE from 'three';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-custom-series',\n standalone: true,\n imports: [CommonModule, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './custom-series.component.html',\n})\nexport class CustomSeriesComponent\n extends Base3dSeriesComponent<Base3dPoint>\n implements OnInit {\n public scales: Observable<{ x; y; z }>;\n\n constructor(override svc: Chart3dService, override ngtStore: NgtStore) {\n super(svc, ngtStore);\n this.scales = this.svc.scales;\n }\n\n ngOnInit(): void {\n setTimeout(() => {\n this.ngtStore.get('camera').zoom = 2;\n this.ngtStore.get('camera').updateProjectionMatrix();\n }, 1000);\n }\n}\n","<ng-container *ngIf=\" {scales:scales|async} as scales\">\n <ngt-mesh [position]=\"[scales.scales.x(this.series.data[0].x),scales.scales.y(this.series.data[0].y),scales.scales.z(this.series.data[0].z) ]\">\n <ngt-box-geometry *args=\"[5,5,5]\"></ngt-box-geometry>\n <ngt-mesh-basic-material></ngt-mesh-basic-material>\n </ngt-mesh>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n OnInit,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as THREE from 'three';\nimport { GridHelper } from 'three';\nimport { extend, NgtArgs } from 'angular-three';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-area-3d',\n templateUrl: './area-3d.component.html',\n standalone: true,\n imports: [CommonModule, NgtArgs],\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class Area3dComponent implements OnInit {\n public area: GridHelper[];\n\n protected readonly THREE = THREE;\n\n createArea() {\n const grids: GridHelper[] = [];\n grids.push(this.getMainGrid());\n grids.push(...this.createGrid(4, 25, 3, 'vertical'));\n grids.push(...this.createGrid(4, 25, 3, 'horizontal'));\n return grids;\n }\n\n getMainGrid() {\n const mainGrid = new GridHelper(100, 12);\n mainGrid.position.set(0, 0, 0);\n mainGrid.rotateZ(Math.PI / 2);\n return mainGrid;\n }\n\n createGrid(\n gridsCount: number,\n gridSize: number,\n rectsInGrid: number,\n direction: 'vertical' | 'horizontal'\n ) {\n const plane: GridHelper[] = [];\n for (let p = 0; p <= gridsCount - 1; p++) {\n plane[p] = new THREE.GridHelper(gridSize, rectsInGrid, '#666', '#666');\n plane[p].renderOrder = -1;\n switch (direction) {\n case 'horizontal':\n plane[p].position.set(\n gridSize / 2,\n -50,\n gridSize * p + gridSize / 2 - 50\n );\n break;\n case 'vertical':\n plane[p].position.set(\n gridSize / 2,\n gridSize * p + gridSize / 2 - 50,\n -50\n );\n plane[p].rotateZ(Math.PI / 2);\n plane[p].rotateX(Math.PI / 2);\n break;\n }\n }\n return plane;\n }\n\n ngOnInit(): void {\n this.area = this.createArea();\n }\n}\n","<ngt-mesh>\n <ngt-mesh-basic-material [side]=\"THREE.DoubleSide\"></ngt-mesh-basic-material>\n <ng-container *ngFor=\"let rect of area\">\n <ngt-primitive *args=\"[rect]\"></ngt-primitive>\n </ng-container>\n</ngt-mesh>\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgtsText } from 'angular-three-soba/abstractions';\nimport * as d3 from 'd3';\nimport * as THREE from 'three';\nimport { Euler } from 'three';\nimport { extend } from 'angular-three';\nimport { Axis3dPoint } from '../model/axis-3d-point';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { combineLatest, map, Observable, takeWhile } from 'rxjs';\nimport { Axes3dMinMax } from '../model/axes-3d-min-max';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-axes-3d',\n templateUrl: './axes-3d.component.html',\n standalone: true,\n imports: [CommonModule, NgtsText],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Axes3dComponent implements OnDestroy {\n @Input() rotation: Euler;\n public axes: Observable<{\n z: Axis3dPoint[];\n y: Axis3dPoint[];\n x: Axis3dPoint[];\n }>;\n private _alive = true;\n\n protected readonly chartService = inject(Chart3dService);\n constructor() {\n this.axes = combineLatest([\n this.chartService.scales,\n this.chartService.minMax,\n ]).pipe(\n takeWhile(() => this._alive),\n map(([scales, minMax]) => {\n return this.createAxes(scales, minMax);\n })\n );\n }\n\n createAxes(scales, minMax: Axes3dMinMax) {\n const axisZ = this.generateTicks(minMax.z, 12).map(_ => {\n return { value: _.toFixed(1), position: scales.z(_) };\n });\n const axisY = this.generateTicks(minMax.y, 12).map(_ => {\n return { value: _.toFixed(1), position: scales.y(_) };\n });\n const axisX = this.generateTicks(minMax.x, 4).map(_ => {\n return { value: _.toFixed(1), position: scales.x(_) };\n });\n return { z: axisZ, y: axisY, x: axisX };\n }\n generateTicks(extremes: number[], count = 10) {\n const [min, max] = extremes;\n const tickStep = (max - min) / count;\n\n const ticks = d3\n .range(min, max + tickStep, tickStep)\n .filter(step => step <= max);\n\n return ticks;\n }\n trackBy(i) {\n return i;\n }\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<ng-container *ngIf='{axes:axes|async}as data'>\n <ngts-text *ngFor='let tick of data.axes?.x;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[tick.position, -50, 50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.y;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[0,tick.position,50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.z;let i=index; trackBy: trackBy' [text]='tick.value'\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[25,-50,tick.position]'\n ></ngts-text>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n OnDestroy,\n} from '@angular/core';\nimport {extend, NgtArgs, NgtStore} from 'angular-three';\nimport {NgtsText} from 'angular-three-soba/abstractions';\nimport {map, Observable, takeWhile} from 'rxjs';\nimport * as THREE from 'three';\nimport {Texture} from 'three';\n\nimport {Base3dSeriesComponent} from '../base-3d-series/base3d-series.component';\nimport {Block3dPoint} from '../model/block3d-point';\nimport {Chart3dService} from '../service/chart-3d.service';\nimport { AsyncPipe, NgForOf, NgIf } from '@angular/common';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-block-3d',\n templateUrl: './block-3d.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgtArgs, NgtsText, NgIf, AsyncPipe, NgForOf],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class Block3dComponent<T extends Block3dPoint>\n extends Base3dSeriesComponent<T>\n implements OnDestroy {\n public blocks: Observable<{\n component: THREE.Mesh<THREE.PlaneGeometry, THREE.MeshBasicMaterial>;\n position: number;\n }[][]>;\n private _alive = true;\n protected readonly Math = Math;\n\n constructor(override svc: Chart3dService, override ngtStore: NgtStore) {\n super(svc, ngtStore);\n this.blocks = this.svc.scales.pipe(\n takeWhile(() => this._alive),\n map(scales => {\n return this.series?.data?.map(_ => {\n return this.createSVGTexture(scales.y(_?.y), scales.y(_?.y1), _?.iconId);\n });\n })\n );\n }\n\n createSVGTexture(y: number, y1: number, iconId: number) {\n const max = Math.max(y, y1);\n const min = Math.min(y, y1);\n const height = Math.abs(max - min);\n const icon = iconId ? document.querySelector(`#${iconId}`) : null;\n const svgString =icon? `<svg width='100' height='100' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'>${icon?.innerHTML}</svg>`:null;\n const loader = new THREE.TextureLoader();\n const texture = loader.load(\n `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgString)}`\n );\n const plane = this.createTexturedPlane(texture, 100, height, !!icon);\n const plane1 = this.createTexturedPlane(texture, 25, height, !!icon);\n plane.rotation.set(0, Math.PI / 2, 0);\n plane.position.set(0.17, min + height / 2, 0);\n plane1.position.set(25 / 2, min + height / 2, -50 + 0.17);\n return [\n {component: plane, position: min + height / 2},\n {component: plane1, position: min + height / 2},\n ];\n }\n\n createTexturedPlane(\n texture: Texture,\n width: number,\n height: number,\n visible: boolean\n ) {\n texture.wrapS = THREE.RepeatWrapping;\n texture.wrapT = THREE.RepeatWrapping;\n texture.repeat.set(10, height / 9);\n const material = new THREE.MeshBasicMaterial({map: texture, visible});\n const geometry = new THREE.PlaneGeometry(width, height, 1, 1);\n const uvs = geometry.attributes['uv'].array;\n const newUvs = new Float32Array(uvs);\n newUvs[0] = 0;\n newUvs[1] = 1;\n newUvs[2] = width / 100;\n newUvs[3] = 1;\n newUvs[4] = 0;\n newUvs[5] = 0;\n newUvs[6] = width / 100;\n newUvs[7] = 0;\n geometry.attributes['uv'].needsUpdate = true;\n geometry.setAttribute('uv', new THREE.BufferAttribute(newUvs, 2));\n return new THREE.Mesh(geometry, material);\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<ng-container *ngIf='{\n blocks: blocks | async,\n scales: svc.scales | async\n } as data'>\n <ng-container *ngFor='let mesh of data.blocks; let i=index'>\n <ngt-primitive *args='[mesh[0].component]'></ngt-primitive>\n <ngts-text [text]='series.data[i].name'\n color='black'\n [fontSize]='2.5'\n [rotation]='[0,Math.PI/2,0]'\n [position]='[1,mesh[0].position,5]'\n [textAlign]=\"'left'\"\n [anchorX]=\"'center'\"\n [anchorY]=\"'middle'\"></ngts-text>\n <ngt-primitive *args='[mesh[1].component]'></ngt-primitive>\n </ng-container>\n</ng-container>\n\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n OnDestroy,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { extend, NgtArgs, NgtStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { map, Observable, takeWhile } from 'rxjs';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';\nimport { Line3dPoint } from '../model/line-3d-point';\n\nextend(THREE);\n@Component({\n selector: 'teta-line-3d',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, NgtsLine, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './line-3d.component.html',\n})\nexport class Line3dComponent\n extends Base3dSeriesComponent<Line3dPoint>\n implements OnDestroy\n{\n public points: Observable<[number,number,number]>;\n private _alive = true;\n\n protected readonly Math = Math;\n constructor(override svc: Chart3dService, override ngtStore: NgtStore) {\n super(svc, ngtStore);\n this.points = this.svc.scales.pipe(\n takeWhile(() => this._alive),\n map(scales => {\n return this.getPoints(scales);\n })\n );\n }\n getPoints(scales) {\n return this.series?.data?.map(_ => {\n return [scales.x(_?.x), scales.y(_?.y), scales.z(_?.z)];\n }).flat() as [number,number,number];\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","<ng-container *ngIf=\"{points:points|async}as data\">\n <ngt-mesh *ngIf=\"data?.points?.length\">\n <ngts-line [color]=\"series.color\" [lineWidth]=\"2\" [points]=\"data.points\"></ngts-line>\n <ngt-line-basic-material></ngt-line-basic-material>\n </ngt-mesh>\n</ng-container>\n","export enum Series3dType {\n line,\n block,\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';\nimport { Block3dComponent } from '../block-3d/block-3d.component';\nimport { Line3dComponent } from '../line-3d/line-3d.component';\nimport { Base3dSeries } from '../model/base-3d-series';\nimport { Base3dThreePoint } from '../model/base-3d-three-point';\nimport { Series3dType } from '../model/enum/series-3d-type';\n\n@Component({\n selector: '[teta-series-3d-host]',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Series3dHost<T extends Base3dThreePoint> implements OnInit {\n @Input() series: Base3dSeries<T>;\n\n private seriesMap: Map<Series3dType, typeof Base3dSeriesComponent> = new Map()\n .set(Series3dType.line, Line3dComponent)\n .set(Series3dType.block, Block3dComponent);\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (\n !Object.prototype.isPrototypeOf.call(\n Base3dSeriesComponent,\n this.series.component\n )\n ) {\n this.series.component = this.seriesMap.get(this.series.type);\n }\n this._componentRef = this.viewContainerRef.createComponent(\n this.series.component\n );\n\n this._componentRef.instance.series = this.series;\n this._init = true;\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (\n this._init &&\n (Object.prototype.hasOwnProperty.call(changes, 'series') ||\n changes.hasOwnProperty('config'))\n ) {\n this._componentRef.instance.series = this.series;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n OnInit,\n} from '@angular/core';\nimport { NgtStore } from 'angular-three';\nimport { NgtsOrbitControls } from 'angular-three-soba/controls';\nimport { Observable } from 'rxjs';\nimport { Euler } from 'three';\n\nimport { Area3dComponent } from '../area-3d/area-3d.component';\nimport { Axes3dComponent } from '../axes-3d/axes-3d.component';\nimport { Block3dComponent } from '../block-3d/block-3d.component';\nimport { Series3dHost } from '../directive/series-3d-host';\nimport { Line3dComponent } from '../line-3d/line-3d.component';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\nimport { Chart3dService } from '../service/chart-3d.service';\n\n@Component({\n standalone: true,\n selector: 'teta-scene',\n templateUrl: './scene.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgtsOrbitControls,\n CommonModule,\n Area3dComponent,\n Line3dComponent,\n Axes3dComponent,\n Block3dComponent,\n Series3dHost,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class SceneComponent implements OnInit {\n public data: Observable<I3dChartConfig>;\n public rotation: Euler;\n public readonly store = inject(NgtStore);\n protected readonly Math = Math;\n protected readonly chartService = inject(Chart3dService);\n protected readonly _cdr = inject(ChangeDetectorRef);\n\n constructor() {\n this.data = this.chartService.data;\n }\n\n setRotation() {\n this.rotation = null;\n this._cdr.detectChanges();\n this.rotation = this.store.get('camera').rotation;\n this._cdr.detectChanges();\n }\n\n ngOnInit(): void {\n this.rotation = this.store.get('camera').rotation;\n }\n}\n","<ng-container *ngIf='{data:data|async} as config'>\n <ngt-scene>\n <ngts-orbit-controls [minAzimuthAngle]='0'\n [maxAzimuthAngle]='Math.PI/2'\n [maxZoom]='30'\n [minZoom]='2'\n (change)='setRotation()'></ngts-orbit-controls>\n </ngt-scene>\n <teta-area-3d></teta-area-3d>\n <ng-container *ngFor='let s of config.data?.series;'>\n <div teta-series-3d-host [series]='s'></div>\n </ng-container>\n <teta-axes-3d [rotation]='rotation'></teta-axes-3d>\n</ng-container>\n\n\n","import {\n ChangeDetectionStrategy,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgtCanvas, NgtStore } from 'angular-three';\nimport { SceneComponent } from '../scene/scene.component';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\nimport { Camera } from 'three';\n\n@Component({\n selector: 'teta-canvas',\n standalone: true,\n templateUrl: './canvas.component.html',\n styleUrls: ['./canvas.component.scss'],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NgtStore],\n imports: [NgtCanvas, SceneComponent, CommonModule],\n})\nexport class CanvasComponent {\n @Input() scene: typeof SceneComponent;\n @Input() camera: Camera;\n @Input() data: I3dChartConfig;\n}\n","<ngt-canvas *ngIf=\"data?.series?.length;else noData\" [sceneGraph]=\"scene\"\n [camera]=\"camera\">\n</ngt-canvas>\n<ng-template #noData>\n <p>{{data?.noDataText || 'no data'}}</p>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnChanges,\n OnInit,\n ViewContainerRef,\n} from '@angular/core';\nimport { Camera } from 'three';\n\nimport { CanvasComponent } from '../canvas/canvas.component';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\nimport { SceneComponent } from '../scene/scene.component';\n\n@Component({\n selector: '[teta-canvas-3d-host]',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Canvas3dHost implements OnInit, OnChanges {\n @Input() scene: typeof SceneComponent;\n @Input() camera: Camera;\n @Input() data: I3dChartConfig;\n\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n this.createCanvas();\n this._init = true;\n }\n\n ngOnChanges(): void {\n if (this._init) {\n this.createCanvas();\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n createCanvas() {\n this.viewContainerRef.clear();\n this._componentRef = this.viewContainerRef.createComponent(CanvasComponent);\n this._componentRef.instance.scene = this.scene;\n this._componentRef.instance.camera = this.camera;\n this._componentRef.instance.data = this.data;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { extend, NgtCanvas, NgtStore } from 'angular-three';\nimport * as THREE from 'three';\nimport { OrthographicCamera } from 'three';\n\nimport { I3dChartConfig } from './model/i-3d-chart-config';\nimport { SceneComponent } from './scene/scene.component';\nimport { Chart3dService } from './service/chart-3d.service';\nimport { CanvasComponent } from './canvas/canvas.component';\nimport { Canvas3dHost } from './directive/canvas-3d-host';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-three-chart',\n templateUrl: './three-chart.component.html',\n styleUrls: ['./three-chart.component.scss'],\n standalone: true,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [NgtStore],\n imports: [\n NgtCanvas,\n SceneComponent,\n CommonModule,\n CanvasComponent,\n Canvas3dHost,\n ],\n})\nexport class ThreeChartComponent implements OnInit, OnChanges {\n @Input() data: I3dChartConfig;\n public scene: typeof SceneComponent;\n public camera: OrthographicCamera;\n\n protected readonly chartService = inject(Chart3dService);\n protected readonly store = inject(NgtStore);\n protected readonly cdr = inject(ChangeDetectorRef);\n\n ngOnInit(): void {\n this.scene = SceneComponent;\n this.camera = new OrthographicCamera(20, 20, 20, 20, 0.1, 1000);\n this.camera.position.set(100, 20, 70);\n this.camera.zoom = 4.5;\n this.camera.updateProjectionMatrix();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.data?.series?.length) {\n this.chartService.setData(this.data);\n }\n }\n}\n","<div class=\"column_auto column justify-content-center align-center\" style=\"height: 100%;width: 100%;\">\n <div teta-canvas-3d-host [camera]=\"camera\" [data]=\"data\" [scene]=\"scene\"></div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Chart3dService"],"mappings":"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"}
1
+ {"version":3,"file":"tetacom-ng-threejs-chart.mjs","sources":["../../src/component/three/three-chart/service/chart-3d.service.ts","../../src/component/three/three-chart/base-3d-series/base3d-series.component.ts","../../src/component/three/three-chart/base-3d-series/base3d-series.component.html","../../src/component/three/custom-series/custom-series.component.ts","../../src/component/three/custom-series/custom-series.component.html","../../src/component/three/three-chart/area-3d/area-3d.component.ts","../../src/component/three/three-chart/area-3d/area-3d.component.html","../../src/component/three/three-chart/axes-3d/axes-3d.component.ts","../../src/component/three/three-chart/axes-3d/axes-3d.component.html","../../src/component/three/three-chart/block-3d/block-3d.component.ts","../../src/component/three/three-chart/block-3d/block-3d.component.html","../../src/component/three/three-chart/line-3d/line-3d.component.ts","../../src/component/three/three-chart/line-3d/line-3d.component.html","../../src/component/three/three-chart/model/enum/series-3d-type.ts","../../src/component/three/three-chart/directive/series-3d-host.ts","../../src/component/three/three-chart/scene/scene.component.ts","../../src/component/three/three-chart/scene/scene.component.html","../../src/component/three/three-chart/canvas/canvas.component.ts","../../src/component/three/three-chart/canvas/canvas.component.html","../../src/component/three/three-chart/directive/canvas-3d-host.ts","../../src/component/three/three-chart/three-chart.component.ts","../../src/component/three/three-chart/three-chart.component.html","../../src/tetacom-ng-threejs-chart.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport * as d3 from 'd3';\nimport { map, Observable, ReplaySubject, shareReplay } from 'rxjs';\n\nimport { Axes3dMinMax } from '../model/axes-3d-min-max';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Chart3dService {\n public minMax: Observable<Axes3dMinMax>;\n public data: Observable<I3dChartConfig>;\n public scales: Observable<{ x; y; z }>;\n private data$: ReplaySubject<I3dChartConfig> = new ReplaySubject<I3dChartConfig>(1);\n\n constructor() {\n this.data = this.data$.asObservable();\n this.minMax = this.data.pipe(\n map((_) => {\n return this.getAxesMinMax(_);\n }),\n );\n this.scales = this.minMax.pipe(\n map((minMax) => {\n return this.getScales(minMax);\n }),\n shareReplay(1),\n );\n }\n\n setData(data) {\n this.data$.next(data);\n }\n\n private getAxesMinMax(data: I3dChartConfig): Axes3dMinMax {\n const zArr: number[] = data.series\n .map((_) => {\n return _?.data?.map((d) => d?.z);\n })\n .flat()\n .filter((_) => {\n return _ !== null && _ !== undefined;\n });\n const xArr: number[] = data.series\n .map((_) => {\n return _?.data?.map((d) => d?.x);\n })\n .flat()\n .filter((_) => {\n return _ !== null && _ !== undefined;\n });\n const yArr: number[] = data.series\n .map((_) => {\n return _?.data?.map((d) => d?.y);\n })\n .flat()\n .filter((_) => {\n return _ !== null && _ !== undefined;\n });\n const ZMinMaxVal: [number, number] = [Math.min(...zArr), Math.max(...zArr)];\n const XMinMaxVal: [number, number] = [Math.min(...xArr), Math.max(...xArr)];\n const YMinMaxVal: [number, number] = [Math.min(...yArr), Math.max(...yArr)];\n return {\n z: this.getMinMaxRange(ZMinMaxVal, data.zAxis?.min, data.zAxis?.max),\n x: this.getMinMaxRange(XMinMaxVal, data.xAxis?.min, data.xAxis?.max),\n y: this.getMinMaxRange(YMinMaxVal, data.yAxis?.min, data.yAxis?.max),\n };\n }\n\n private getMinMaxRange(minMax: [number, number], axisMin: number, axisMax: number): [number, number] {\n const min =\n axisMin || (Math.abs(minMax[0] - minMax[1]) < 0.0000001 ? minMax[0] - Math.abs(minMax[0] - 1) * 0.1 : minMax[0]);\n const max =\n axisMax || (Math.abs(minMax[0] - minMax[1]) < 0.0000001 ? minMax[1] + Math.abs(minMax[1] + 1) * 0.1 : minMax[1]);\n return [min, max];\n }\n\n private getScales(axesMinMax: Axes3dMinMax) {\n const z = d3.scaleLinear().domain(axesMinMax.z).range([50, -50]);\n const x = d3.scaleLinear().domain(axesMinMax.x).range([25, 0]);\n const y = d3.scaleLinear().domain(axesMinMax.y).range([50, -50]);\n return {\n x,\n y,\n z,\n };\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { Base3dThreePoint } from '../model/base-3d-three-point';\nimport { Base3dSeries } from '../model/base-3d-series';\nimport { injectStore} from 'angular-three';\n\n@Component({\n selector: 'teta-base3d-series',\n imports: [CommonModule],\n templateUrl: './base3d-series.component.html',\n styleUrls: ['./base3d-series.component.scss']\n})\nexport class Base3dSeriesComponent<T extends Base3dThreePoint> {\n protected ngtStore = injectStore();\n @Input()\n set series(series: Base3dSeries<T>) {\n this._series = series;\n }\n\n get series() {\n return this._series;\n }\n protected _series: Base3dSeries<T>;\n constructor(\n protected svc: Chart3dService,\n\n ) {}\n}\n","<p>base3d-series works!</p>\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Base3dSeriesComponent } from '../three-chart/base-3d-series/base3d-series.component';\nimport { Base3dPoint } from '../../../common/model/base-3d-point';\nimport { Chart3dService } from '../three-chart/service/chart-3d.service';\nimport { extend, NgtArgs } from 'angular-three';\nimport { Observable } from 'rxjs';\nimport * as THREE from 'three';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-custom-series',\n imports: [CommonModule, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './custom-series.component.html'\n})\nexport class CustomSeriesComponent extends Base3dSeriesComponent<Base3dPoint> implements OnInit {\n public scales: Observable<{ x; y; z }>;\n\n constructor(\n override svc: Chart3dService,\n ) {\n super(svc);\n this.scales = this.svc.scales;\n }\n\n ngOnInit(): void {\n setTimeout(() => {\n this.ngtStore.get('camera').zoom = 2;\n this.ngtStore.get('camera').updateProjectionMatrix();\n }, 1000);\n }\n}\n","@if ({ scales: scales | async }; as scales) {\n <ngt-mesh\n [position]=\"[\n scales.scales.x(this.series.data[0].x),\n scales.scales.y(this.series.data[0].y),\n scales.scales.z(this.series.data[0].z),\n ]\"\n >\n <ngt-box-geometry *args=\"[5, 5, 5]\"></ngt-box-geometry>\n <ngt-mesh-basic-material></ngt-mesh-basic-material>\n </ngt-mesh>\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as THREE from 'three';\nimport { GridHelper } from 'three';\nimport { extend, NgtArgs } from 'angular-three';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-area-3d',\n templateUrl: './area-3d.component.html',\n imports: [CommonModule, NgtArgs],\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class Area3dComponent implements OnInit {\n public area: GridHelper[];\n\n protected readonly THREE = THREE;\n\n createArea() {\n const grids: GridHelper[] = [];\n grids.push(this.getMainGrid());\n grids.push(...this.createGrid(4, 25, 3, 'vertical'));\n grids.push(...this.createGrid(4, 25, 3, 'horizontal'));\n return grids;\n }\n\n getMainGrid() {\n const mainGrid = new GridHelper(100, 12);\n mainGrid.position.set(0, 0, 0);\n mainGrid.rotateZ(Math.PI / 2);\n return mainGrid;\n }\n\n createGrid(gridsCount: number, gridSize: number, rectsInGrid: number, direction: 'vertical' | 'horizontal') {\n const plane: GridHelper[] = [];\n for (let p = 0; p <= gridsCount - 1; p++) {\n plane[p] = new THREE.GridHelper(gridSize, rectsInGrid, '#666', '#666');\n plane[p].renderOrder = -1;\n switch (direction) {\n case 'horizontal':\n plane[p].position.set(gridSize / 2, -50, gridSize * p + gridSize / 2 - 50);\n break;\n case 'vertical':\n plane[p].position.set(gridSize / 2, gridSize * p + gridSize / 2 - 50, -50);\n plane[p].rotateZ(Math.PI / 2);\n plane[p].rotateX(Math.PI / 2);\n break;\n }\n }\n return plane;\n }\n\n ngOnInit(): void {\n this.area = this.createArea();\n }\n}\n","<ngt-mesh>\n <ngt-mesh-basic-material [side]=\"THREE.DoubleSide\"></ngt-mesh-basic-material>\n @for (rect of area; track rect) {\n <ngt-primitive *args=\"[rect]\"></ngt-primitive>\n }\n</ngt-mesh>\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgtsText } from 'angular-three-soba/abstractions';\nimport * as d3 from 'd3';\nimport * as THREE from 'three';\nimport { Euler } from 'three';\nimport { extend } from 'angular-three';\nimport { Axis3dPoint } from '../model/axis-3d-point';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { combineLatest, map, Observable, takeWhile } from 'rxjs';\nimport { Axes3dMinMax } from '../model/axes-3d-min-max';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-axes-3d',\n templateUrl: './axes-3d.component.html',\n imports: [CommonModule, NgtsText],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Axes3dComponent implements OnDestroy {\n @Input() rotation: Euler;\n public axes: Observable<{\n z: Axis3dPoint[];\n y: Axis3dPoint[];\n x: Axis3dPoint[];\n }>;\n private _alive = true;\n\n protected readonly chartService = inject(Chart3dService);\n\n constructor() {\n this.axes = combineLatest([this.chartService.scales, this.chartService.minMax]).pipe(\n takeWhile(() => this._alive),\n map(([scales, minMax]) => {\n return this.createAxes(scales, minMax);\n }),\n );\n }\n\n createAxes(scales, minMax: Axes3dMinMax) {\n const axisZ = this.generateTicks(minMax.z, 12).map((_) => {\n return { value: _.toFixed(1), position: scales.z(_) };\n });\n const axisY = this.generateTicks(minMax.y, 12).map((_) => {\n return { value: _.toFixed(1), position: scales.y(_) };\n });\n const axisX = this.generateTicks(minMax.x, 4).map((_) => {\n return { value: _.toFixed(1), position: scales.x(_) };\n });\n return { z: axisZ, y: axisY, x: axisX };\n }\n\n generateTicks(extremes: number[], count = 10) {\n const [min, max] = extremes;\n const tickStep = (max - min) / count;\n\n const ticks = d3.range(min, max + tickStep, tickStep).filter((step) => step <= max);\n\n return ticks;\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if ({ axes: axes | async }; as data) {\n @for (tick of data.axes?.x; track tick) {\n <ngts-text\n [text]=\"tick.value + '-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]=\"rotation\"\n [fontSize]=\"2.5\"\n [position]=\"[tick.position, -50, 50]\"\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n }\n @for (tick of data.axes?.y; track tick) {\n <ngts-text\n [text]=\"tick.value + '-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]=\"rotation\"\n [fontSize]=\"2.5\"\n [position]=\"[0, tick.position, 50]\"\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n }\n @for (tick of data.axes?.z; track tick) {\n <ngts-text\n [text]=\"tick.value\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]=\"rotation\"\n [fontSize]=\"2.5\"\n [position]=\"[25, -50, tick.position]\"\n ></ngts-text>\n }\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, OnDestroy } from '@angular/core';\nimport { extend, NgtArgs } from 'angular-three';\nimport { NgtsText } from 'angular-three-soba/abstractions';\nimport { map, Observable, takeWhile } from 'rxjs';\nimport * as THREE from 'three';\nimport { Texture } from 'three';\n\nimport { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';\nimport { Block3dPoint } from '../model/block3d-point';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { AsyncPipe } from '@angular/common';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-block-3d',\n templateUrl: './block-3d.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgtArgs, NgtsText, AsyncPipe],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class Block3dComponent<T extends Block3dPoint> extends Base3dSeriesComponent<T> implements OnDestroy {\n public blocks: Observable<\n {\n component: THREE.Mesh<THREE.PlaneGeometry, THREE.MeshBasicMaterial>;\n position: number;\n }[][]\n >;\n private _alive = true;\n protected readonly Math = Math;\n\n constructor(\n override svc: Chart3dService,\n ) {\n super(svc);\n this.blocks = this.svc.scales.pipe(\n takeWhile(() => this._alive),\n map((scales) => {\n return this.series?.data?.map((_) => {\n return this.createSVGTexture(scales.y(_?.y), scales.y(_?.y1), _?.iconId);\n });\n }),\n );\n }\n\n createSVGTexture(y: number, y1: number, iconId: number) {\n const max = Math.max(y, y1);\n const min = Math.min(y, y1);\n const height = Math.abs(max - min);\n const icon = iconId ? document.querySelector(`#${iconId}`) : null;\n const svgString = icon\n ? `<svg width='100' height='100' viewBox='0 0 16 16' fill='none' xmlns='http://www.w3.org/2000/svg'>${icon?.innerHTML}</svg>`\n : null;\n const loader = new THREE.TextureLoader();\n const texture = loader.load(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgString)}`);\n const plane = this.createTexturedPlane(texture, 100, height, !!icon);\n const plane1 = this.createTexturedPlane(texture, 25, height, !!icon);\n plane.rotation.set(0, Math.PI / 2, 0);\n plane.position.set(0.17, min + height / 2, 0);\n plane1.position.set(25 / 2, min + height / 2, -50 + 0.17);\n return [\n { component: plane, position: min + height / 2 },\n { component: plane1, position: min + height / 2 },\n ];\n }\n\n createTexturedPlane(texture: Texture, width: number, height: number, visible: boolean) {\n texture.wrapS = THREE.RepeatWrapping;\n texture.wrapT = THREE.RepeatWrapping;\n texture.repeat.set(10, height / 9);\n const material = new THREE.MeshBasicMaterial({ map: texture, visible });\n const geometry = new THREE.PlaneGeometry(width, height, 1, 1);\n const uvs = geometry.attributes['uv'].array;\n const newUvs = new Float32Array(uvs);\n newUvs[0] = 0;\n newUvs[1] = 1;\n newUvs[2] = width / 100;\n newUvs[3] = 1;\n newUvs[4] = 0;\n newUvs[5] = 0;\n newUvs[6] = width / 100;\n newUvs[7] = 0;\n geometry.attributes['uv'].needsUpdate = true;\n geometry.setAttribute('uv', new THREE.BufferAttribute(newUvs, 2));\n return new THREE.Mesh(geometry, material);\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if ({ blocks: blocks | async, scales: svc.scales | async }; as data) {\n @for (mesh of data.blocks; let i = $index; track mesh) {\n <ngt-primitive *args=\"[mesh[0].component]\"></ngt-primitive>\n <ngts-text\n [text]=\"series.data[i].name\"\n color=\"black\"\n [fontSize]=\"2.5\"\n [rotation]=\"[0, Math.PI / 2, 0]\"\n [position]=\"[1, mesh[0].position, 5]\"\n [textAlign]=\"'left'\"\n [anchorX]=\"'center'\"\n [anchorY]=\"'middle'\"\n ></ngts-text>\n <ngt-primitive *args=\"[mesh[1].component]\"></ngt-primitive>\n }\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { extend, NgtArgs } from 'angular-three';\nimport * as THREE from 'three';\nimport { map, Observable, takeWhile } from 'rxjs';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';\nimport { Line3dPoint } from '../model/line-3d-point';\n\nextend(THREE);\n@Component({\n selector: 'teta-line-3d',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, NgtsLine, NgtArgs],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n templateUrl: './line-3d.component.html'\n})\nexport class Line3dComponent extends Base3dSeriesComponent<Line3dPoint> implements OnDestroy {\n public points: Observable<[number, number, number]>;\n private _alive = true;\n\n protected readonly Math = Math;\n constructor(\n override svc: Chart3dService,\n ) {\n super(svc);\n this.points = this.svc.scales.pipe(\n takeWhile(() => this._alive),\n map((scales) => {\n return this.getPoints(scales);\n }),\n );\n }\n getPoints(scales) {\n return this.series?.data\n ?.map((_) => {\n return [scales.x(_?.x), scales.y(_?.y), scales.z(_?.z)];\n })\n .flat() as [number, number, number];\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n}\n","@if ({ points: points | async }; as data) {\n @if (data?.points?.length) {\n <ngt-mesh>\n <ngts-line [color]=\"series.color\" [lineWidth]=\"2\" [points]=\"data.points\"></ngts-line>\n <ngt-line-basic-material></ngt-line-basic-material>\n </ngt-mesh>\n }\n}\n","export enum Series3dType {\n line,\n block,\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';\nimport { Block3dComponent } from '../block-3d/block-3d.component';\nimport { Line3dComponent } from '../line-3d/line-3d.component';\nimport { Base3dSeries } from '../model/base-3d-series';\nimport { Base3dThreePoint } from '../model/base-3d-three-point';\nimport { Series3dType } from '../model/enum/series-3d-type';\n\n@Component({\n selector: '[teta-series-3d-host]',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Series3dHost<T extends Base3dThreePoint> implements OnInit {\n @Input() series: Base3dSeries<T>;\n\n private seriesMap: Map<Series3dType, typeof Base3dSeriesComponent> = new Map()\n .set(Series3dType.line, Line3dComponent)\n .set(Series3dType.block, Block3dComponent);\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n if (!Object.prototype.isPrototypeOf.call(Base3dSeriesComponent, this.series.component)) {\n this.series.component = this.seriesMap.get(this.series.type);\n }\n this._componentRef = this.viewContainerRef.createComponent(this.series.component);\n\n this._componentRef.instance.series = this.series;\n this._init = true;\n }\n ngOnChanges(changes: SimpleChanges): void {\n if (this._init && (Object.prototype.hasOwnProperty.call(changes, 'series') || changes.hasOwnProperty('config'))) {\n this._componentRef.instance.series = this.series;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n OnInit,\n} from '@angular/core';\nimport { NgtsOrbitControls } from 'angular-three-soba/controls';\nimport { Observable } from 'rxjs';\nimport { Euler } from 'three';\n\nimport { Area3dComponent } from '../area-3d/area-3d.component';\nimport { Axes3dComponent } from '../axes-3d/axes-3d.component';\nimport { Block3dComponent } from '../block-3d/block-3d.component';\nimport { Series3dHost } from '../directive/series-3d-host';\nimport { Line3dComponent } from '../line-3d/line-3d.component';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\nimport { Chart3dService } from '../service/chart-3d.service';\nimport { injectStore } from 'angular-three';\n\n@Component({\n selector: 'teta-scene',\n templateUrl: './scene.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgtsOrbitControls,\n CommonModule,\n Area3dComponent,\n Line3dComponent,\n Axes3dComponent,\n Block3dComponent,\n Series3dHost,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class SceneComponent implements OnInit {\n public data: Observable<I3dChartConfig>;\n public rotation: Euler;\n public readonly store = injectStore();\n protected readonly Math = Math;\n protected readonly chartService = inject(Chart3dService);\n protected readonly _cdr = inject(ChangeDetectorRef);\n\n constructor() {\n this.data = this.chartService.data;\n }\n\n setRotation() {\n this.rotation = null;\n this._cdr.detectChanges();\n this.rotation = this.store.get('camera').rotation;\n this._cdr.detectChanges();\n }\n\n ngOnInit(): void {\n this.rotation = this.store.get('camera').rotation;\n }\n}\n","@if ({ data: data | async }; as config) {\n <ngt-scene>\n <ngts-orbit-controls\n [minAzimuthAngle]=\"0\"\n [maxAzimuthAngle]=\"Math.PI / 2\"\n [maxZoom]=\"30\"\n [minZoom]=\"2\"\n (change)=\"setRotation()\"\n ></ngts-orbit-controls>\n </ngt-scene>\n <teta-area-3d></teta-area-3d>\n @for (s of config.data?.series; track s) {\n <div teta-series-3d-host [series]=\"s\"></div>\n }\n <teta-axes-3d [rotation]=\"rotation\"></teta-axes-3d>\n}\n","import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgtCamera, NgtCanvas } from 'angular-three';\nimport { SceneComponent } from '../scene/scene.component';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\n\n@Component({\n selector: 'teta-canvas',\n templateUrl: './canvas.component.html',\n styleUrls: ['./canvas.component.scss'],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgtCanvas, SceneComponent, CommonModule]\n})\nexport class CanvasComponent {\n @Input() scene: typeof SceneComponent;\n @Input() camera: NgtCamera;\n @Input() data: I3dChartConfig;\n}\n","@if (data?.series?.length) {\n <ngt-canvas [sceneGraph]=\"scene\" [camera]=\"camera\"> </ngt-canvas>\n} @else {\n <p>{{ data?.noDataText || 'no data' }}</p>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input,\n OnChanges,\n OnInit,\n ViewContainerRef,\n} from '@angular/core';\nimport { Camera } from 'three';\n\nimport { CanvasComponent } from '../canvas/canvas.component';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\nimport { SceneComponent } from '../scene/scene.component';\n\n@Component({\n selector: '[teta-canvas-3d-host]',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Canvas3dHost implements OnInit, OnChanges {\n @Input() scene: typeof SceneComponent;\n @Input() camera: Camera;\n @Input() data: I3dChartConfig;\n\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit(): void {\n this.createCanvas();\n this._init = true;\n }\n\n ngOnChanges(): void {\n if (this._init) {\n this.createCanvas();\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n\n createCanvas() {\n this.viewContainerRef.clear();\n this._componentRef = this.viewContainerRef.createComponent(CanvasComponent);\n this._componentRef.instance.scene = this.scene;\n this._componentRef.instance.camera = this.camera;\n this._componentRef.instance.data = this.data;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n CUSTOM_ELEMENTS_SCHEMA,\n inject,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { extend } from 'angular-three';\nimport * as THREE from 'three';\nimport { OrthographicCamera } from 'three';\n\nimport { I3dChartConfig } from './model/i-3d-chart-config';\nimport { SceneComponent } from './scene/scene.component';\nimport { Chart3dService } from './service/chart-3d.service';\nimport { Canvas3dHost } from './directive/canvas-3d-host';\n\nextend(THREE);\n\n@Component({\n selector: 'teta-three-chart',\n templateUrl: './three-chart.component.html',\n styleUrls: ['./three-chart.component.scss'],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, Canvas3dHost],\n})\nexport class ThreeChartComponent implements OnInit, OnChanges {\n @Input() data: I3dChartConfig;\n public scene: typeof SceneComponent;\n public camera: OrthographicCamera;\n\n protected readonly chartService = inject(Chart3dService);\n protected readonly cdr = inject(ChangeDetectorRef);\n\n ngOnInit(): void {\n this.scene = SceneComponent;\n this.camera = new OrthographicCamera(20, 20, 20, 20, 0.1, 1000);\n this.camera.position.set(100, 20, 70);\n this.camera.zoom = 4.5;\n this.camera.updateProjectionMatrix();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.data?.series?.length) {\n this.chartService.setData(this.data);\n }\n }\n}\n","<div class=\"column_auto column justify-content-center align-center\" style=\"height: 100%; width: 100%\">\n <div teta-canvas-3d-host [camera]=\"camera\" [data]=\"data\" [scene]=\"scene\"></div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.Chart3dService","i1"],"mappings":";;;;;;;;;;;;MAUa,cAAc,CAAA;AAMzB,IAAA,WAAA,GAAA;AAFQ,QAAA,IAAA,CAAA,KAAK,GAAkC,IAAI,aAAa,CAAiB,CAAC,CAAC;QAGjF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SAC7B,CAAC,CACH;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAC5B,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAC/B,SAAC,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,CACf;;AAGH,IAAA,OAAO,CAAC,IAAI,EAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGf,IAAA,aAAa,CAAC,IAAoB,EAAA;AACxC,QAAA,MAAM,IAAI,GAAa,IAAI,CAAC;AACzB,aAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,SAAC;AACA,aAAA,IAAI;AACJ,aAAA,MAAM,CAAC,CAAC,CAAC,KAAI;AACZ,YAAA,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;AACtC,SAAC,CAAC;AACJ,QAAA,MAAM,IAAI,GAAa,IAAI,CAAC;AACzB,aAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,SAAC;AACA,aAAA,IAAI;AACJ,aAAA,MAAM,CAAC,CAAC,CAAC,KAAI;AACZ,YAAA,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;AACtC,SAAC,CAAC;AACJ,QAAA,MAAM,IAAI,GAAa,IAAI,CAAC;AACzB,aAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACT,YAAA,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClC,SAAC;AACA,aAAA,IAAI;AACJ,aAAA,MAAM,CAAC,CAAC,CAAC,KAAI;AACZ,YAAA,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;AACtC,SAAC,CAAC;AACJ,QAAA,MAAM,UAAU,GAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E,QAAA,MAAM,UAAU,GAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3E,OAAO;AACL,YAAA,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACpE,YAAA,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACpE,YAAA,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;SACrE;;AAGK,IAAA,cAAc,CAAC,MAAwB,EAAE,OAAe,EAAE,OAAe,EAAA;QAC/E,MAAM,GAAG,GACP,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAClH,MAAM,GAAG,GACP,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAClH,QAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;;AAGX,IAAA,SAAS,CAAC,UAAwB,EAAA;QACxC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO;YACL,CAAC;YACD,CAAC;YACD,CAAC;SACF;;8GA5EQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCIY,qBAAqB,CAAA;IAEhC,IACI,MAAM,CAAC,MAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;;AAGvB,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;;AAGrB,IAAA,WAAA,CACY,GAAmB,EAAA;QAAnB,IAAG,CAAA,GAAA,GAAH,GAAG;QAXL,IAAQ,CAAA,QAAA,GAAG,WAAW,EAAE;;8GADvB,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,+BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQc,YAAY,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAIb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACI,oBAAoB,EAAA,OAAA,EACrB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,+BAAA,EAAA;gFAOrB,MAAM,EAAA,CAAA;sBADT;;;AENH,MAAM,CAAC,KAAK,CAAC;AASP,MAAO,qBAAsB,SAAQ,qBAAkC,CAAA;AAG3E,IAAA,WAAA,CACW,GAAmB,EAAA;QAE5B,KAAK,CAAC,GAAG,CAAC;QAFD,IAAG,CAAA,GAAA,GAAH,GAAG;QAGZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM;;IAG/B,QAAQ,GAAA;QACN,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,sBAAsB,EAAE;SACrD,EAAE,IAAI,CAAC;;8GAdC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EClBlC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,uXAYA,EDCc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,oFAAE,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKtB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA,CAAC,YAAY,EAAE,OAAO,CAAC,EACvB,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAChB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uXAAA,EAAA;;;AETnD,MAAM,CAAC,KAAK,CAAC;MASA,eAAe,CAAA;AAP5B,IAAA,WAAA,GAAA;QAUqB,IAAK,CAAA,KAAA,GAAG,KAAK;AAuCjC;IArCC,UAAU,GAAA;QACR,MAAM,KAAK,GAAiB,EAAE;QAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC9B,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACpD,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AACtD,QAAA,OAAO,KAAK;;IAGd,WAAW,GAAA;QACT,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,QAAA,OAAO,QAAQ;;AAGjB,IAAA,UAAU,CAAC,UAAkB,EAAE,QAAgB,EAAE,WAAmB,EAAE,SAAoC,EAAA;QACxG,MAAM,KAAK,GAAiB,EAAE;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACxC,YAAA,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC;YACtE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;YACzB,QAAQ,SAAS;AACf,gBAAA,KAAK,YAAY;oBACf,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC;oBAC1E;AACF,gBAAA,KAAK,UAAU;oBACb,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1E,oBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7B,oBAAA,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC7B;;;AAGN,QAAA,OAAO,KAAK;;IAGd,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;;8GAxCpB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,ECf5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8MAMA,EDKc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAItB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEf,OAAA,EAAA,CAAC,YAAY,EAAE,OAAO,CAAC,EACf,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,8MAAA,EAAA;;;AEDrC,MAAM,CAAC,KAAK,CAAC;MASA,eAAe,CAAA;AAW1B,IAAA,WAAA,GAAA;QAJQ,IAAM,CAAA,MAAA,GAAG,IAAI;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AAGtD,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAClF,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAC5B,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAI;YACvB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;SACvC,CAAC,CACH;;IAGH,UAAU,CAAC,MAAM,EAAE,MAAoB,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACvD,YAAA,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,SAAC,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACvD,YAAA,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,SAAC,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AACtD,YAAA,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,SAAC,CAAC;AACF,QAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;;AAGzC,IAAA,aAAa,CAAC,QAAkB,EAAE,KAAK,GAAG,EAAE,EAAA;AAC1C,QAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ;QAC3B,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,KAAK;QAEpC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;AAEnF,QAAA,OAAO,KAAK;;IAGd,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;8GA3CV,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,ECrB5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,w/BAmCA,EDlBc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,oFAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIvB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEf,OAAA,EAAA,CAAC,YAAY,EAAE,QAAQ,CAAC,EACxB,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAChB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,w/BAAA,EAAA;wDAGxC,QAAQ,EAAA,CAAA;sBAAhB;;;AEVH,MAAM,CAAC,KAAK,CAAC;AASP,MAAO,gBAAyC,SAAQ,qBAAwB,CAAA;AAUpF,IAAA,WAAA,CACW,GAAmB,EAAA;QAE5B,KAAK,CAAC,GAAG,CAAC;QAFD,IAAG,CAAA,GAAA,GAAH,GAAG;QAJN,IAAM,CAAA,MAAA,GAAG,IAAI;QACF,IAAI,CAAA,IAAA,GAAG,IAAI;QAM5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAChC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAC5B,GAAG,CAAC,CAAC,MAAM,KAAI;YACb,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAI;gBAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;AAC1E,aAAC,CAAC;SACH,CAAC,CACH;;AAGH,IAAA,gBAAgB,CAAC,CAAS,EAAE,EAAU,EAAE,MAAc,EAAA;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AAClC,QAAA,MAAM,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,MAAM,CAAE,CAAA,CAAC,GAAG,IAAI;QACjE,MAAM,SAAS,GAAG;AAChB,cAAE,CAAA,kGAAA,EAAqG,IAAI,EAAE,SAAS,CAAQ,MAAA;cAC5H,IAAI;AACR,QAAA,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,EAAE;AACxC,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAoC,iCAAA,EAAA,kBAAkB,CAAC,SAAS,CAAC,CAAA,CAAE,CAAC;AAChG,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;AACpE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;AACpE,QAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,QAAA,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACzD,OAAO;YACL,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE;YAChD,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE;SAClD;;AAGH,IAAA,mBAAmB,CAAC,OAAgB,EAAE,KAAa,EAAE,MAAc,EAAE,OAAgB,EAAA;AACnF,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;AACpC,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;QACpC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK;AAC3C,QAAA,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC;AACpC,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACb,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACb,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG;AACvB,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACb,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACb,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACb,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG;AACvB,QAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QACb,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,IAAI;AAC5C,QAAA,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;;IAG3C,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;8GAnEV,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,gGCrB7B,kkBAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEc,OAAO,EAAE,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,mGAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAG7B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAER,eAAA,EAAA,uBAAuB,CAAC,MAAM,WACtC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAC9B,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,kkBAAA,EAAA;;;AETrC,MAAM,CAAC,KAAK,CAAC;AAQP,MAAO,eAAgB,SAAQ,qBAAkC,CAAA;AAKrE,IAAA,WAAA,CACW,GAAmB,EAAA;QAE5B,KAAK,CAAC,GAAG,CAAC;QAFD,IAAG,CAAA,GAAA,GAAH,GAAG;QAJN,IAAM,CAAA,MAAA,GAAG,IAAI;QAEF,IAAI,CAAA,IAAA,GAAG,IAAI;QAK5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAChC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAC5B,GAAG,CAAC,CAAC,MAAM,KAAI;AACb,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC9B,CAAC,CACH;;AAEH,IAAA,SAAS,CAAC,MAAM,EAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;AAClB,cAAE,GAAG,CAAC,CAAC,CAAC,KAAI;AACV,YAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,SAAC;AACA,aAAA,IAAI,EAA8B;;IAGvC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;8GAzBV,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EClB5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,sRAQA,EDMc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,oFAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIvB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EACP,eAAA,EAAA,uBAAuB,CAAC,MAAM,WACtC,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,EACjC,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,sRAAA,EAAA;;;IEfzB;AAAZ,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACP,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;;MCqBY,YAAY,CAAA;AASvB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAN5B,IAAS,CAAA,SAAA,GAAoD,IAAI,GAAG;AACzE,aAAA,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,eAAe;AACtC,aAAA,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC;QACpC,IAAK,CAAA,KAAA,GAAG,KAAK;;IAKrB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACtF,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;AAE9D,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAEjF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;AAEnB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC/G,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAChD,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE;;;8GAvB3D,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,oIAJb,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAID,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;qFAEU,MAAM,EAAA,CAAA;sBAAd;;;MCYU,cAAc,CAAA;AAQzB,IAAA,WAAA,GAAA;QALgB,IAAK,CAAA,KAAA,GAAG,WAAW,EAAE;QAClB,IAAI,CAAA,IAAA,GAAG,IAAI;AACX,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAGjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI;;IAGpC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;IAG3B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ;;8GApBxC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC3B,geAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDWQ,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEf,YAAY,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEL,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACL,iBAAiB;wBACjB,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,YAAY;qBACf,EACQ,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,geAAA,EAAA;;;MErBxB,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,ECd5B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qKAKA,EDOc,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,+SAAkB,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAExC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAGd,OAAA,EAAA,CAAC,sBAAsB,CAAC,mBAChB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,SAAS,EAAE,cAAc,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,qKAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA;8BAG3C,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;MEKU,YAAY,CAAA;AAQvB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAH5B,IAAK,CAAA,KAAA,GAAG,KAAK;;IAKrB,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;IAGnB,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE;;;IAItE,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;;8GA3BnC,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,kKAJb,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAID,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;qFAEU,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,IAAI,EAAA,CAAA;sBAAZ;;;ACJH,MAAM,CAAC,KAAK,CAAC;MAUA,mBAAmB,CAAA;AARhC,IAAA,WAAA,GAAA;AAaqB,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAenD;IAbC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,cAAc;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC;AAC/D,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;;AAGtC,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;YAC7B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;;8GAlB7B,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EC/BhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+MAGA,ED0BY,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAAE,YAAY,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEzB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGnB,OAAA,EAAA,CAAC,sBAAsB,CAAC,EAChB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,YAAY,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,+MAAA,EAAA,MAAA,EAAA,CAAA,iCAAA,CAAA,EAAA;8BAG5B,IAAI,EAAA,CAAA;sBAAZ;;;AEhCH;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@tetacom/ng-threejs-chart",
3
- "version": "1.0.1",
3
+ "version": "1.2.0",
4
4
  "peerDependencies": {
5
- "@angular/common": "^17.1.0",
6
- "@angular/core": "^17.1.0"
5
+ "@angular/common": "^19.0.5",
6
+ "@angular/core": "^19.0.5"
7
7
  },
8
8
  "dependencies": {
9
9
  "tslib": "^2.3.0"
@@ -21,8 +21,6 @@
21
21
  },
22
22
  ".": {
23
23
  "types": "./index.d.ts",
24
- "esm2022": "./esm2022/tetacom-ng-threejs-chart.mjs",
25
- "esm": "./esm2022/tetacom-ng-threejs-chart.mjs",
26
24
  "default": "./fesm2022/tetacom-ng-threejs-chart.mjs"
27
25
  }
28
26
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS0zZC1wb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vbW9kZWwvYmFzZS0zZC1wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCYXNlM2RQb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB6OiBudW1iZXI7XG59XG4iXX0=
@@ -1,32 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { Base3dSeriesComponent } from '../three-chart/base-3d-series/base3d-series.component';
4
- import { Chart3dService } from '../three-chart/service/chart-3d.service';
5
- import { extend, NgtArgs, NgtStore } from 'angular-three';
6
- import * as THREE from 'three';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../three-chart/service/chart-3d.service";
9
- import * as i2 from "angular-three";
10
- import * as i3 from "@angular/common";
11
- extend(THREE);
12
- export class CustomSeriesComponent extends Base3dSeriesComponent {
13
- constructor(svc, ngtStore) {
14
- super(svc, ngtStore);
15
- this.svc = svc;
16
- this.ngtStore = ngtStore;
17
- this.scales = this.svc.scales;
18
- }
19
- ngOnInit() {
20
- setTimeout(() => {
21
- this.ngtStore.get('camera').zoom = 2;
22
- this.ngtStore.get('camera').updateProjectionMatrix();
23
- }, 1000);
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: CustomSeriesComponent, deps: [{ token: i1.Chart3dService }, { token: i2.NgtStore }], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: CustomSeriesComponent, isStandalone: true, selector: "teta-custom-series", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\" {scales:scales|async} as scales\">\n <ngt-mesh [position]=\"[scales.scales.x(this.series.data[0].x),scales.scales.y(this.series.data[0].y),scales.scales.z(this.series.data[0].z) ]\">\n <ngt-box-geometry *args=\"[5,5,5]\"></ngt-box-geometry>\n <ngt-mesh-basic-material></ngt-mesh-basic-material>\n </ngt-mesh>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: CustomSeriesComponent, decorators: [{
29
- type: Component,
30
- args: [{ selector: 'teta-custom-series', standalone: true, imports: [CommonModule, NgtArgs], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\" {scales:scales|async} as scales\">\n <ngt-mesh [position]=\"[scales.scales.x(this.series.data[0].x),scales.scales.y(this.series.data[0].y),scales.scales.z(this.series.data[0].z) ]\">\n <ngt-box-geometry *args=\"[5,5,5]\"></ngt-box-geometry>\n <ngt-mesh-basic-material></ngt-mesh-basic-material>\n </ngt-mesh>\n</ng-container>\n" }]
31
- }], ctorParameters: () => [{ type: i1.Chart3dService }, { type: i2.NgtStore }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlcmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL2N1c3RvbS1zZXJpZXMvY3VzdG9tLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL2N1c3RvbS1zZXJpZXMvY3VzdG9tLXNlcmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxzQkFBc0IsR0FFdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBRTVGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFeEQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7O0FBRS9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQVVkLE1BQU0sT0FBTyxxQkFDWCxTQUFRLHFCQUFrQztJQUkxQyxZQUFxQixHQUFtQixFQUFXLFFBQWtCO1FBQ25FLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFERixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBRUQsUUFBUTtRQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdkQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs4R0FmVSxxQkFBcUI7a0dBQXJCLHFCQUFxQixxR0N4QmxDLGtYQU1BLDJDRGFZLFlBQVksd0xBQUUsT0FBTzs7MkZBS3BCLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxXQUN2QixDQUFDLHNCQUFzQixDQUFDLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCYXNlM2RTZXJpZXNDb21wb25lbnR9IGZyb20gJy4uL3RocmVlLWNoYXJ0L2Jhc2UtM2Qtc2VyaWVzL2Jhc2UzZC1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7QmFzZTNkUG9pbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9tb2RlbC9iYXNlLTNkLXBvaW50JztcbmltcG9ydCB7Q2hhcnQzZFNlcnZpY2V9IGZyb20gJy4uL3RocmVlLWNoYXJ0L3NlcnZpY2UvY2hhcnQtM2Quc2VydmljZSc7XG5pbXBvcnQge2V4dGVuZCwgTmd0QXJncywgTmd0U3RvcmV9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuZXh0ZW5kKFRIUkVFKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1jdXN0b20tc2VyaWVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmd0QXJnc10sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tc2VyaWVzLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tU2VyaWVzQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZTNkU2VyaWVzQ29tcG9uZW50PEJhc2UzZFBvaW50PlxuICBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBzY2FsZXM6IE9ic2VydmFibGU8eyB4OyB5OyB6IH0+O1xuXG4gIGNvbnN0cnVjdG9yKG92ZXJyaWRlIHN2YzogQ2hhcnQzZFNlcnZpY2UsIG92ZXJyaWRlIG5ndFN0b3JlOiBOZ3RTdG9yZSkge1xuICAgIHN1cGVyKHN2Yywgbmd0U3RvcmUpO1xuICAgIHRoaXMuc2NhbGVzID0gdGhpcy5zdmMuc2NhbGVzO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm5ndFN0b3JlLmdldCgnY2FtZXJhJykuem9vbSA9IDI7XG4gICAgICB0aGlzLm5ndFN0b3JlLmdldCgnY2FtZXJhJykudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuICAgIH0sIDEwMDApO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIHtzY2FsZXM6c2NhbGVzfGFzeW5jfSBhcyBzY2FsZXNcIj5cbiAgICA8bmd0LW1lc2ggW3Bvc2l0aW9uXT1cIltzY2FsZXMuc2NhbGVzLngodGhpcy5zZXJpZXMuZGF0YVswXS54KSxzY2FsZXMuc2NhbGVzLnkodGhpcy5zZXJpZXMuZGF0YVswXS55KSxzY2FsZXMuc2NhbGVzLnoodGhpcy5zZXJpZXMuZGF0YVswXS56KSBdXCI+XG4gICAgICA8bmd0LWJveC1nZW9tZXRyeSAgICphcmdzPVwiWzUsNSw1XVwiPjwvbmd0LWJveC1nZW9tZXRyeT5cbiAgICAgIDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbD48L25ndC1tZXNoLWJhc2ljLW1hdGVyaWFsPlxuICAgIDwvbmd0LW1lc2g+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,12 +0,0 @@
1
- export * from './custom-series/custom-series.component';
2
- export * from './three-chart/area-3d/area-3d.component';
3
- export * from './three-chart/axes-3d/axes-3d.component';
4
- export * from './three-chart/base-3d-series/base3d-series.component';
5
- export * from './three-chart/block-3d/block-3d.component';
6
- export * from './three-chart/directive/public-api';
7
- export * from './three-chart/line-3d/line-3d.component';
8
- export * from './three-chart/model/public-api';
9
- export * from './three-chart/canvas/canvas.component';
10
- export * from './three-chart/scene/scene.component';
11
- export * from './three-chart/three-chart.component';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNEQUFzRCxDQUFDO0FBQ3JFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2N1c3RvbS1zZXJpZXMvY3VzdG9tLXNlcmllcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90aHJlZS1jaGFydC9hcmVhLTNkL2FyZWEtM2QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWUtY2hhcnQvYXhlcy0zZC9heGVzLTNkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RocmVlLWNoYXJ0L2Jhc2UtM2Qtc2VyaWVzL2Jhc2UzZC1zZXJpZXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWUtY2hhcnQvYmxvY2stM2QvYmxvY2stM2QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWUtY2hhcnQvZGlyZWN0aXZlL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi90aHJlZS1jaGFydC9saW5lLTNkL2xpbmUtM2QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWUtY2hhcnQvbW9kZWwvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL3RocmVlLWNoYXJ0L2NhbnZhcy9jYW52YXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWUtY2hhcnQvc2NlbmUvc2NlbmUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGhyZWUtY2hhcnQvdGhyZWUtY2hhcnQuY29tcG9uZW50JztcbiJdfQ==
@@ -1,54 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import * as THREE from 'three';
4
- import { GridHelper } from 'three';
5
- import { extend, NgtArgs } from 'angular-three';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- extend(THREE);
9
- export class Area3dComponent {
10
- constructor() {
11
- this.THREE = THREE;
12
- }
13
- createArea() {
14
- const grids = [];
15
- grids.push(this.getMainGrid());
16
- grids.push(...this.createGrid(4, 25, 3, 'vertical'));
17
- grids.push(...this.createGrid(4, 25, 3, 'horizontal'));
18
- return grids;
19
- }
20
- getMainGrid() {
21
- const mainGrid = new GridHelper(100, 12);
22
- mainGrid.position.set(0, 0, 0);
23
- mainGrid.rotateZ(Math.PI / 2);
24
- return mainGrid;
25
- }
26
- createGrid(gridsCount, gridSize, rectsInGrid, direction) {
27
- const plane = [];
28
- for (let p = 0; p <= gridsCount - 1; p++) {
29
- plane[p] = new THREE.GridHelper(gridSize, rectsInGrid, '#666', '#666');
30
- plane[p].renderOrder = -1;
31
- switch (direction) {
32
- case 'horizontal':
33
- plane[p].position.set(gridSize / 2, -50, gridSize * p + gridSize / 2 - 50);
34
- break;
35
- case 'vertical':
36
- plane[p].position.set(gridSize / 2, gridSize * p + gridSize / 2 - 50, -50);
37
- plane[p].rotateZ(Math.PI / 2);
38
- plane[p].rotateX(Math.PI / 2);
39
- break;
40
- }
41
- }
42
- return plane;
43
- }
44
- ngOnInit() {
45
- this.area = this.createArea();
46
- }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Area3dComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: Area3dComponent, isStandalone: true, selector: "teta-area-3d", ngImport: i0, template: "<ngt-mesh>\n <ngt-mesh-basic-material [side]=\"THREE.DoubleSide\"></ngt-mesh-basic-material>\n <ng-container *ngFor=\"let rect of area\">\n <ngt-primitive *args=\"[rect]\"></ngt-primitive>\n </ng-container>\n</ngt-mesh>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
- }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Area3dComponent, decorators: [{
51
- type: Component,
52
- args: [{ selector: 'teta-area-3d', standalone: true, imports: [CommonModule, NgtArgs], changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<ngt-mesh>\n <ngt-mesh-basic-material [side]=\"THREE.DoubleSide\"></ngt-mesh-basic-material>\n <ng-container *ngFor=\"let rect of area\">\n <ngt-primitive *args=\"[rect]\"></ngt-primitive>\n </ng-container>\n</ngt-mesh>\n" }]
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS0zZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2FyZWEtM2QvYXJlYS0zZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2FyZWEtM2QvYXJlYS0zZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxzQkFBc0IsR0FFdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUVoRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFVZCxNQUFNLE9BQU8sZUFBZTtJQVI1QjtRQVdxQixVQUFLLEdBQUcsS0FBSyxDQUFDO0tBb0RsQztJQWxEQyxVQUFVO1FBQ1IsTUFBTSxLQUFLLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDckQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN2RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxVQUFVLENBQ1IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsV0FBbUIsRUFDbkIsU0FBb0M7UUFFcEMsTUFBTSxLQUFLLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMxQixRQUFRLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixLQUFLLFlBQVk7b0JBQ2YsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ25CLFFBQVEsR0FBRyxDQUFDLEVBQ1osQ0FBQyxFQUFFLEVBQ0gsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FDakMsQ0FBQztvQkFDRixNQUFNO2dCQUNSLEtBQUssVUFBVTtvQkFDYixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDbkIsUUFBUSxHQUFHLENBQUMsRUFDWixRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUNoQyxDQUFDLEVBQUUsQ0FDSixDQUFDO29CQUNGLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUM5QixNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDaEMsQ0FBQzs4R0F0RFUsZUFBZTtrR0FBZixlQUFlLHdFQ3JCNUIscU9BTUEsMkNEV1ksWUFBWSw0SkFBRSxPQUFPOzsyRkFJcEIsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxjQUFjLGNBRVosSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxtQkFDZix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IEdyaWRIZWxwZXIgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBleHRlbmQsIE5ndEFyZ3MgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuZXh0ZW5kKFRIUkVFKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1hcmVhLTNkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FyZWEtM2QuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBOZ3RBcmdzXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJlYTNkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGFyZWE6IEdyaWRIZWxwZXJbXTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgVEhSRUUgPSBUSFJFRTtcblxuICBjcmVhdGVBcmVhKCkge1xuICAgIGNvbnN0IGdyaWRzOiBHcmlkSGVscGVyW10gPSBbXTtcbiAgICBncmlkcy5wdXNoKHRoaXMuZ2V0TWFpbkdyaWQoKSk7XG4gICAgZ3JpZHMucHVzaCguLi50aGlzLmNyZWF0ZUdyaWQoNCwgMjUsIDMsICd2ZXJ0aWNhbCcpKTtcbiAgICBncmlkcy5wdXNoKC4uLnRoaXMuY3JlYXRlR3JpZCg0LCAyNSwgMywgJ2hvcml6b250YWwnKSk7XG4gICAgcmV0dXJuIGdyaWRzO1xuICB9XG5cbiAgZ2V0TWFpbkdyaWQoKSB7XG4gICAgY29uc3QgbWFpbkdyaWQgPSBuZXcgR3JpZEhlbHBlcigxMDAsIDEyKTtcbiAgICBtYWluR3JpZC5wb3NpdGlvbi5zZXQoMCwgMCwgMCk7XG4gICAgbWFpbkdyaWQucm90YXRlWihNYXRoLlBJIC8gMik7XG4gICAgcmV0dXJuIG1haW5HcmlkO1xuICB9XG5cbiAgY3JlYXRlR3JpZChcbiAgICBncmlkc0NvdW50OiBudW1iZXIsXG4gICAgZ3JpZFNpemU6IG51bWJlcixcbiAgICByZWN0c0luR3JpZDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJ1xuICApIHtcbiAgICBjb25zdCBwbGFuZTogR3JpZEhlbHBlcltdID0gW107XG4gICAgZm9yIChsZXQgcCA9IDA7IHAgPD0gZ3JpZHNDb3VudCAtIDE7IHArKykge1xuICAgICAgcGxhbmVbcF0gPSBuZXcgVEhSRUUuR3JpZEhlbHBlcihncmlkU2l6ZSwgcmVjdHNJbkdyaWQsICcjNjY2JywgJyM2NjYnKTtcbiAgICAgIHBsYW5lW3BdLnJlbmRlck9yZGVyID0gLTE7XG4gICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgICBwbGFuZVtwXS5wb3NpdGlvbi5zZXQoXG4gICAgICAgICAgICBncmlkU2l6ZSAvIDIsXG4gICAgICAgICAgICAtNTAsXG4gICAgICAgICAgICBncmlkU2l6ZSAqIHAgKyBncmlkU2l6ZSAvIDIgLSA1MFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICBwbGFuZVtwXS5wb3NpdGlvbi5zZXQoXG4gICAgICAgICAgICBncmlkU2l6ZSAvIDIsXG4gICAgICAgICAgICBncmlkU2l6ZSAqIHAgKyBncmlkU2l6ZSAvIDIgLSA1MCxcbiAgICAgICAgICAgIC01MFxuICAgICAgICAgICk7XG4gICAgICAgICAgcGxhbmVbcF0ucm90YXRlWihNYXRoLlBJIC8gMik7XG4gICAgICAgICAgcGxhbmVbcF0ucm90YXRlWChNYXRoLlBJIC8gMik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwbGFuZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXJlYSA9IHRoaXMuY3JlYXRlQXJlYSgpO1xuICB9XG59XG4iLCI8bmd0LW1lc2g+XG4gIDxuZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbCBbc2lkZV09XCJUSFJFRS5Eb3VibGVTaWRlXCI+PC9uZ3QtbWVzaC1iYXNpYy1tYXRlcmlhbD5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVjdCBvZiBhcmVhXCI+XG4gICAgPG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbcmVjdF1cIj48L25ndC1wcmltaXRpdmU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZ3QtbWVzaD5cbiJdfQ==
@@ -1,59 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { NgtsText } from 'angular-three-soba/abstractions';
4
- import * as d3 from 'd3';
5
- import * as THREE from 'three';
6
- import { Euler } from 'three';
7
- import { extend } from 'angular-three';
8
- import { Chart3dService } from '../service/chart-3d.service';
9
- import { combineLatest, map, takeWhile } from 'rxjs';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/common";
12
- extend(THREE);
13
- export class Axes3dComponent {
14
- constructor() {
15
- this._alive = true;
16
- this.chartService = inject(Chart3dService);
17
- this.axes = combineLatest([
18
- this.chartService.scales,
19
- this.chartService.minMax,
20
- ]).pipe(takeWhile(() => this._alive), map(([scales, minMax]) => {
21
- return this.createAxes(scales, minMax);
22
- }));
23
- }
24
- createAxes(scales, minMax) {
25
- const axisZ = this.generateTicks(minMax.z, 12).map(_ => {
26
- return { value: _.toFixed(1), position: scales.z(_) };
27
- });
28
- const axisY = this.generateTicks(minMax.y, 12).map(_ => {
29
- return { value: _.toFixed(1), position: scales.y(_) };
30
- });
31
- const axisX = this.generateTicks(minMax.x, 4).map(_ => {
32
- return { value: _.toFixed(1), position: scales.x(_) };
33
- });
34
- return { z: axisZ, y: axisY, x: axisX };
35
- }
36
- generateTicks(extremes, count = 10) {
37
- const [min, max] = extremes;
38
- const tickStep = (max - min) / count;
39
- const ticks = d3
40
- .range(min, max + tickStep, tickStep)
41
- .filter(step => step <= max);
42
- return ticks;
43
- }
44
- trackBy(i) {
45
- return i;
46
- }
47
- ngOnDestroy() {
48
- this._alive = false;
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Axes3dComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: Axes3dComponent, isStandalone: true, selector: "teta-axes-3d", inputs: { rotation: "rotation" }, ngImport: i0, template: "<ng-container *ngIf='{axes:axes|async}as data'>\n <ngts-text *ngFor='let tick of data.axes?.x;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[tick.position, -50, 50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.y;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[0,tick.position,50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.z;let i=index; trackBy: trackBy' [text]='tick.value'\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[25,-50,tick.position]'\n ></ngts-text>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: NgtsText, selector: "ngts-text[text]", inputs: ["textRef", "text", "characters", "font", "anchorX", "anchorY"], outputs: ["sync"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Axes3dComponent, decorators: [{
54
- type: Component,
55
- args: [{ selector: 'teta-axes-3d', standalone: true, imports: [CommonModule, NgtsText], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf='{axes:axes|async}as data'>\n <ngts-text *ngFor='let tick of data.axes?.x;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[tick.position, -50, 50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.y;let i=index; trackBy: trackBy' [text]=\"tick.value+'-'\"\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[0,tick.position,50]'\n [anchorX]=\"'right'\"\n [anchorY]=\"'middle'\"\n [textAlign]=\"'right'\"\n ></ngts-text>\n <ngts-text *ngFor='let tick of data.axes?.z;let i=index; trackBy: trackBy' [text]='tick.value'\n [color]=\"'var(--color-text-90)'\"\n [rotation]='rotation'\n [fontSize]='2.5'\n [position]='[25,-50,tick.position]'\n ></ngts-text>\n</ng-container>\n" }]
56
- }], ctorParameters: () => [], propDecorators: { rotation: [{
57
- type: Input
58
- }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy0zZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2F4ZXMtM2QvYXhlcy0zZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2F4ZXMtM2QvYXhlcy0zZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsTUFBTSxFQUNOLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHakUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBVWQsTUFBTSxPQUFPLGVBQWU7SUFVMUI7UUFIUSxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBRUgsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdkQsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTTtTQUN6QixDQUFDLENBQUMsSUFBSSxDQUNMLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBb0I7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUNELGFBQWEsQ0FBQyxRQUFrQixFQUFFLEtBQUssR0FBRyxFQUFFO1FBQzFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzVCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUVyQyxNQUFNLEtBQUssR0FBRyxFQUFFO2FBQ2IsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsUUFBUSxFQUFFLFFBQVEsQ0FBQzthQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFFL0IsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDUCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQzs4R0FqRFUsZUFBZTtrR0FBZixlQUFlLDBHQzdCNUIseW5DQTBCQSwyQ0REWSxZQUFZLHFUQUFFLFFBQVE7OzJGQUlyQixlQUFlO2tCQVIzQixTQUFTOytCQUNFLGNBQWMsY0FFWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFdBQ3hCLENBQUMsc0JBQXNCLENBQUMsbUJBQ2hCLHVCQUF1QixDQUFDLE1BQU07d0RBR3RDLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5ndHNUZXh0IH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL2Fic3RyYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBFdWxlciB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IGV4dGVuZCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgQXhpczNkUG9pbnQgfSBmcm9tICcuLi9tb2RlbC9heGlzLTNkLXBvaW50JztcbmltcG9ydCB7IENoYXJ0M2RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jaGFydC0zZC5zZXJ2aWNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBeGVzM2RNaW5NYXggfSBmcm9tICcuLi9tb2RlbC9heGVzLTNkLW1pbi1tYXgnO1xuXG5leHRlbmQoVEhSRUUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLWF4ZXMtM2QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXhlcy0zZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5ndHNUZXh0XSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXhlczNkQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcm90YXRpb246IEV1bGVyO1xuICBwdWJsaWMgYXhlczogT2JzZXJ2YWJsZTx7XG4gICAgejogQXhpczNkUG9pbnRbXTtcbiAgICB5OiBBeGlzM2RQb2ludFtdO1xuICAgIHg6IEF4aXMzZFBvaW50W107XG4gIH0+O1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0U2VydmljZSA9IGluamVjdChDaGFydDNkU2VydmljZSk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYXhlcyA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGFydFNlcnZpY2Uuc2NhbGVzLFxuICAgICAgdGhpcy5jaGFydFNlcnZpY2UubWluTWF4LFxuICAgIF0pLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgbWFwKChbc2NhbGVzLCBtaW5NYXhdKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUF4ZXMoc2NhbGVzLCBtaW5NYXgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlQXhlcyhzY2FsZXMsIG1pbk1heDogQXhlczNkTWluTWF4KSB7XG4gICAgY29uc3QgYXhpc1ogPSB0aGlzLmdlbmVyYXRlVGlja3MobWluTWF4LnosIDEyKS5tYXAoXyA9PiB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogXy50b0ZpeGVkKDEpLCBwb3NpdGlvbjogc2NhbGVzLnooXykgfTtcbiAgICB9KTtcbiAgICBjb25zdCBheGlzWSA9IHRoaXMuZ2VuZXJhdGVUaWNrcyhtaW5NYXgueSwgMTIpLm1hcChfID0+IHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBfLnRvRml4ZWQoMSksIHBvc2l0aW9uOiBzY2FsZXMueShfKSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGF4aXNYID0gdGhpcy5nZW5lcmF0ZVRpY2tzKG1pbk1heC54LCA0KS5tYXAoXyA9PiB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogXy50b0ZpeGVkKDEpLCBwb3NpdGlvbjogc2NhbGVzLngoXykgfTtcbiAgICB9KTtcbiAgICByZXR1cm4geyB6OiBheGlzWiwgeTogYXhpc1ksIHg6IGF4aXNYIH07XG4gIH1cbiAgZ2VuZXJhdGVUaWNrcyhleHRyZW1lczogbnVtYmVyW10sIGNvdW50ID0gMTApIHtcbiAgICBjb25zdCBbbWluLCBtYXhdID0gZXh0cmVtZXM7XG4gICAgY29uc3QgdGlja1N0ZXAgPSAobWF4IC0gbWluKSAvIGNvdW50O1xuXG4gICAgY29uc3QgdGlja3MgPSBkM1xuICAgICAgLnJhbmdlKG1pbiwgbWF4ICsgdGlja1N0ZXAsIHRpY2tTdGVwKVxuICAgICAgLmZpbHRlcihzdGVwID0+IHN0ZXAgPD0gbWF4KTtcblxuICAgIHJldHVybiB0aWNrcztcbiAgfVxuICB0cmFja0J5KGkpIHtcbiAgICByZXR1cm4gaTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPSd7YXhlczpheGVzfGFzeW5jfWFzIGRhdGEnPlxuICA8bmd0cy10ZXh0ICpuZ0Zvcj0nbGV0IHRpY2sgb2YgZGF0YS5heGVzPy54O2xldCBpPWluZGV4OyB0cmFja0J5OiB0cmFja0J5JyBbdGV4dF09XCJ0aWNrLnZhbHVlKyctJ1wiXG4gICAgICAgICAgICAgW2NvbG9yXT1cIid2YXIoLS1jb2xvci10ZXh0LTkwKSdcIlxuICAgICAgICAgICAgIFtyb3RhdGlvbl09J3JvdGF0aW9uJ1xuICAgICAgICAgICAgIFtmb250U2l6ZV09JzIuNSdcbiAgICAgICAgICAgICBbcG9zaXRpb25dPSdbdGljay5wb3NpdGlvbiwgLTUwLCA1MF0nXG4gICAgICAgICAgICAgW2FuY2hvclhdPVwiJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgW2FuY2hvclldPVwiJ21pZGRsZSdcIlxuICAgICAgICAgICAgIFt0ZXh0QWxpZ25dPVwiJ3JpZ2h0J1wiXG4gID48L25ndHMtdGV4dD5cbiAgPG5ndHMtdGV4dCAqbmdGb3I9J2xldCB0aWNrIG9mIGRhdGEuYXhlcz8ueTtsZXQgaT1pbmRleDsgdHJhY2tCeTogdHJhY2tCeScgW3RleHRdPVwidGljay52YWx1ZSsnLSdcIlxuICAgICAgICAgICAgIFtjb2xvcl09XCIndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgICAgICAgICBbcm90YXRpb25dPSdyb3RhdGlvbidcbiAgICAgICAgICAgICBbZm9udFNpemVdPScyLjUnXG4gICAgICAgICAgICAgW3Bvc2l0aW9uXT0nWzAsdGljay5wb3NpdGlvbiw1MF0nXG4gICAgICAgICAgICAgW2FuY2hvclhdPVwiJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgW2FuY2hvclldPVwiJ21pZGRsZSdcIlxuICAgICAgICAgICAgIFt0ZXh0QWxpZ25dPVwiJ3JpZ2h0J1wiXG4gID48L25ndHMtdGV4dD5cbiAgPG5ndHMtdGV4dCAqbmdGb3I9J2xldCB0aWNrIG9mIGRhdGEuYXhlcz8uejtsZXQgaT1pbmRleDsgdHJhY2tCeTogdHJhY2tCeScgW3RleHRdPSd0aWNrLnZhbHVlJ1xuICAgICAgICAgICAgIFtjb2xvcl09XCIndmFyKC0tY29sb3ItdGV4dC05MCknXCJcbiAgICAgICAgICAgICBbcm90YXRpb25dPSdyb3RhdGlvbidcbiAgICAgICAgICAgICBbZm9udFNpemVdPScyLjUnXG4gICAgICAgICAgICAgW3Bvc2l0aW9uXT0nWzI1LC01MCx0aWNrLnBvc2l0aW9uXSdcbiAgPjwvbmd0cy10ZXh0PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,28 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { Chart3dService } from '../service/chart-3d.service';
4
- import { NgtStore } from 'angular-three';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../service/chart-3d.service";
7
- import * as i2 from "angular-three";
8
- export class Base3dSeriesComponent {
9
- set series(series) {
10
- this._series = series;
11
- }
12
- get series() {
13
- return this._series;
14
- }
15
- constructor(svc, ngtStore) {
16
- this.svc = svc;
17
- this.ngtStore = ngtStore;
18
- }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Base3dSeriesComponent, deps: [{ token: i1.Chart3dService }, { token: i2.NgtStore }], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: Base3dSeriesComponent, isStandalone: true, selector: "teta-base3d-series", inputs: { series: "series" }, ngImport: i0, template: "<p>base3d-series works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Base3dSeriesComponent, decorators: [{
23
- type: Component,
24
- args: [{ selector: 'teta-base3d-series', standalone: true, imports: [CommonModule], template: "<p>base3d-series works!</p>\n" }]
25
- }], ctorParameters: () => [{ type: i1.Chart3dService }, { type: i2.NgtStore }], propDecorators: { series: [{
26
- type: Input
27
- }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTNkLXNlcmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2Jhc2UtM2Qtc2VyaWVzL2Jhc2UzZC1zZXJpZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90aHJlZS90aHJlZS1jaGFydC9iYXNlLTNkLXNlcmllcy9iYXNlM2Qtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVN6QyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLElBQ0ksTUFBTSxDQUFDLE1BQXVCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQXNCLEdBQW1CLEVBQVksUUFBa0I7UUFBakQsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFBWSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQzs4R0FWaEUscUJBQXFCO2tHQUFyQixxQkFBcUIsNEdDZGxDLCtCQUNBLHlERFNZLFlBQVk7OzJGQUlYLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzBHQU1uQixNQUFNO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhcnQzZFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LTNkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZTNkVGhyZWVQb2ludCB9IGZyb20gJy4uL21vZGVsL2Jhc2UtM2QtdGhyZWUtcG9pbnQnO1xuaW1wb3J0IHsgQmFzZTNkU2VyaWVzIH0gZnJvbSAnLi4vbW9kZWwvYmFzZS0zZC1zZXJpZXMnO1xuaW1wb3J0IHsgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1iYXNlM2Qtc2VyaWVzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlM2Qtc2VyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmFzZTNkLXNlcmllcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlM2RTZXJpZXNDb21wb25lbnQ8VCBleHRlbmRzIEJhc2UzZFRocmVlUG9pbnQ+IHtcbiAgQElucHV0KClcbiAgc2V0IHNlcmllcyhzZXJpZXM6IEJhc2UzZFNlcmllczxUPikge1xuICAgIHRoaXMuX3NlcmllcyA9IHNlcmllcztcbiAgfVxuXG4gIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcbiAgfVxuICBwcm90ZWN0ZWQgX3NlcmllczogQmFzZTNkU2VyaWVzPFQ+O1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3ZjOiBDaGFydDNkU2VydmljZSwgcHJvdGVjdGVkIG5ndFN0b3JlOiBOZ3RTdG9yZSkge31cbn1cbiIsIjxwPmJhc2UzZC1zZXJpZXMgd29ya3MhPC9wPlxuIl19