@tetacom/ng-threejs-chart 1.0.1

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 (62) hide show
  1. package/.eslintrc.json +43 -0
  2. package/README.md +7 -0
  3. package/common/model/base-3d-point.d.ts +5 -0
  4. package/component/three/custom-series/custom-series.component.d.ts +20 -0
  5. package/component/three/public-api.d.ts +11 -0
  6. package/component/three/three-chart/area-3d/area-3d.component.d.ts +13 -0
  7. package/component/three/three-chart/axes-3d/axes-3d.component.d.ts +28 -0
  8. package/component/three/three-chart/base-3d-series/base3d-series.component.d.ts +15 -0
  9. package/component/three/three-chart/block-3d/block-3d.component.d.ts +28 -0
  10. package/component/three/three-chart/canvas/canvas.component.d.ts +11 -0
  11. package/component/three/three-chart/directive/canvas-3d-host.d.ts +19 -0
  12. package/component/three/three-chart/directive/public-api.d.ts +2 -0
  13. package/component/three/three-chart/directive/series-3d-host.d.ts +16 -0
  14. package/component/three/three-chart/line-3d/line-3d.component.d.ts +19 -0
  15. package/component/three/three-chart/model/axes-3d-min-max.d.ts +5 -0
  16. package/component/three/three-chart/model/axis-3d-point.d.ts +4 -0
  17. package/component/three/three-chart/model/base-3d-series.d.ts +11 -0
  18. package/component/three/three-chart/model/base-3d-three-point.d.ts +8 -0
  19. package/component/three/three-chart/model/block-3d-series.d.ts +6 -0
  20. package/component/three/three-chart/model/block3d-point.d.ts +5 -0
  21. package/component/three/three-chart/model/enum/public-api.d.ts +1 -0
  22. package/component/three/three-chart/model/enum/series-3d-type.d.ts +4 -0
  23. package/component/three/three-chart/model/i-3d-chart-config.d.ts +14 -0
  24. package/component/three/three-chart/model/line-3d-point.d.ts +5 -0
  25. package/component/three/three-chart/model/line-3d-series.d.ts +6 -0
  26. package/component/three/three-chart/model/public-api.d.ts +10 -0
  27. package/component/three/three-chart/scene/scene.component.d.ts +20 -0
  28. package/component/three/three-chart/service/chart-3d.service.d.ts +21 -0
  29. package/component/three/three-chart/three-chart.component.d.ts +19 -0
  30. package/esm2022/common/model/base-3d-point.mjs +2 -0
  31. package/esm2022/component/three/custom-series/custom-series.component.mjs +32 -0
  32. package/esm2022/component/three/public-api.mjs +12 -0
  33. package/esm2022/component/three/three-chart/area-3d/area-3d.component.mjs +54 -0
  34. package/esm2022/component/three/three-chart/axes-3d/axes-3d.component.mjs +59 -0
  35. package/esm2022/component/three/three-chart/base-3d-series/base3d-series.component.mjs +28 -0
  36. package/esm2022/component/three/three-chart/block-3d/block-3d.component.mjs +74 -0
  37. package/esm2022/component/three/three-chart/canvas/canvas.component.mjs +22 -0
  38. package/esm2022/component/three/three-chart/directive/canvas-3d-host.mjs +45 -0
  39. package/esm2022/component/three/three-chart/directive/public-api.mjs +3 -0
  40. package/esm2022/component/three/three-chart/directive/series-3d-host.mjs +45 -0
  41. package/esm2022/component/three/three-chart/line-3d/line-3d.component.mjs +40 -0
  42. package/esm2022/component/three/three-chart/model/axes-3d-min-max.mjs +2 -0
  43. package/esm2022/component/three/three-chart/model/axis-3d-point.mjs +2 -0
  44. package/esm2022/component/three/three-chart/model/base-3d-series.mjs +2 -0
  45. package/esm2022/component/three/three-chart/model/base-3d-three-point.mjs +2 -0
  46. package/esm2022/component/three/three-chart/model/block-3d-series.mjs +2 -0
  47. package/esm2022/component/three/three-chart/model/block3d-point.mjs +2 -0
  48. package/esm2022/component/three/three-chart/model/enum/public-api.mjs +2 -0
  49. package/esm2022/component/three/three-chart/model/enum/series-3d-type.mjs +6 -0
  50. package/esm2022/component/three/three-chart/model/i-3d-chart-config.mjs +2 -0
  51. package/esm2022/component/three/three-chart/model/line-3d-point.mjs +2 -0
  52. package/esm2022/component/three/three-chart/model/line-3d-series.mjs +2 -0
  53. package/esm2022/component/three/three-chart/model/public-api.mjs +11 -0
  54. package/esm2022/component/three/three-chart/scene/scene.component.mjs +45 -0
  55. package/esm2022/component/three/three-chart/service/chart-3d.service.mjs +83 -0
  56. package/esm2022/component/three/three-chart/three-chart.component.mjs +45 -0
  57. package/esm2022/index.mjs +2 -0
  58. package/esm2022/tetacom-ng-threejs-chart.mjs +5 -0
  59. package/fesm2022/tetacom-ng-threejs-chart.mjs +496 -0
  60. package/fesm2022/tetacom-ng-threejs-chart.mjs.map +1 -0
  61. package/index.d.ts +1 -0
  62. package/package.json +29 -0
@@ -0,0 +1,59 @@
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=
@@ -0,0 +1,28 @@
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
@@ -0,0 +1,74 @@
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, } from '@angular/core';
2
+ import { extend, NgtArgs, NgtStore } from 'angular-three';
3
+ import { NgtsText } from 'angular-three-soba/abstractions';
4
+ import { map, takeWhile } from 'rxjs';
5
+ import * as THREE from 'three';
6
+ import { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';
7
+ import { Chart3dService } from '../service/chart-3d.service';
8
+ import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../service/chart-3d.service";
11
+ import * as i2 from "angular-three";
12
+ extend(THREE);
13
+ export class Block3dComponent extends Base3dSeriesComponent {
14
+ constructor(svc, ngtStore) {
15
+ super(svc, ngtStore);
16
+ this.svc = svc;
17
+ this.ngtStore = ngtStore;
18
+ this._alive = true;
19
+ this.Math = Math;
20
+ this.blocks = this.svc.scales.pipe(takeWhile(() => this._alive), map(scales => {
21
+ return this.series?.data?.map(_ => {
22
+ return this.createSVGTexture(scales.y(_?.y), scales.y(_?.y1), _?.iconId);
23
+ });
24
+ }));
25
+ }
26
+ createSVGTexture(y, y1, iconId) {
27
+ const max = Math.max(y, y1);
28
+ const min = Math.min(y, y1);
29
+ const height = Math.abs(max - min);
30
+ const icon = iconId ? document.querySelector(`#${iconId}`) : null;
31
+ 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;
32
+ const loader = new THREE.TextureLoader();
33
+ const texture = loader.load(`data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgString)}`);
34
+ const plane = this.createTexturedPlane(texture, 100, height, !!icon);
35
+ const plane1 = this.createTexturedPlane(texture, 25, height, !!icon);
36
+ plane.rotation.set(0, Math.PI / 2, 0);
37
+ plane.position.set(0.17, min + height / 2, 0);
38
+ plane1.position.set(25 / 2, min + height / 2, -50 + 0.17);
39
+ return [
40
+ { component: plane, position: min + height / 2 },
41
+ { component: plane1, position: min + height / 2 },
42
+ ];
43
+ }
44
+ createTexturedPlane(texture, width, height, visible) {
45
+ texture.wrapS = THREE.RepeatWrapping;
46
+ texture.wrapT = THREE.RepeatWrapping;
47
+ texture.repeat.set(10, height / 9);
48
+ const material = new THREE.MeshBasicMaterial({ map: texture, visible });
49
+ const geometry = new THREE.PlaneGeometry(width, height, 1, 1);
50
+ const uvs = geometry.attributes['uv'].array;
51
+ const newUvs = new Float32Array(uvs);
52
+ newUvs[0] = 0;
53
+ newUvs[1] = 1;
54
+ newUvs[2] = width / 100;
55
+ newUvs[3] = 1;
56
+ newUvs[4] = 0;
57
+ newUvs[5] = 0;
58
+ newUvs[6] = width / 100;
59
+ newUvs[7] = 0;
60
+ geometry.attributes['uv'].needsUpdate = true;
61
+ geometry.setAttribute('uv', new THREE.BufferAttribute(newUvs, 2));
62
+ return new THREE.Mesh(geometry, material);
63
+ }
64
+ ngOnDestroy() {
65
+ this._alive = false;
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Block3dComponent, deps: [{ token: i1.Chart3dService }, { token: i2.NgtStore }], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: Block3dComponent, isStandalone: true, selector: "teta-block-3d", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }, { kind: "component", type: NgtsText, selector: "ngts-text[text]", inputs: ["textRef", "text", "characters", "font", "anchorX", "anchorY"], outputs: ["sync"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Block3dComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'teta-block-3d', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgtArgs, NgtsText, NgIf, AsyncPipe, NgForOf], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<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" }]
73
+ }], ctorParameters: () => [{ type: i1.Chart3dService }, { type: i2.NgtStore }] });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stM2QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90aHJlZS90aHJlZS1jaGFydC9ibG9jay0zZC9ibG9jay0zZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2Jsb2NrLTNkL2Jsb2NrLTNkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixHQUV2QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pELE9BQU8sRUFBQyxHQUFHLEVBQWMsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRy9CLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRWhGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUUzRCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFVZCxNQUFNLE9BQU8sZ0JBQ1gsU0FBUSxxQkFBd0I7SUFTaEMsWUFBcUIsR0FBbUIsRUFBVyxRQUFrQjtRQUNuRSxLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBREYsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFBVyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSDdELFdBQU0sR0FBRyxJQUFJLENBQUM7UUFDSCxTQUFJLEdBQUcs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LENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7OEdBdkVVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLGdHQzNCN0IsNnBCQWtCQSw0Q0RNWSxPQUFPLHFFQUFFLFFBQVEsd0pBQUUsSUFBSSx3RkFBRSxTQUFTLDhDQUFFLE9BQU87OzJGQUcxQyxnQkFBZ0I7a0JBUjVCLFNBQVM7K0JBQ0UsZUFBZSxjQUViLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FDN0MsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2V4dGVuZCwgTmd0QXJncywgTmd0U3RvcmV9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHtOZ3RzVGV4dH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL2Fic3RyYWN0aW9ucyc7XG5pbXBvcnQge21hcCwgT2JzZXJ2YWJsZSwgdGFrZVdoaWxlfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7VGV4dHVyZX0gZnJvbSAndGhyZWUnO1xuXG5pbXBvcnQge0Jhc2UzZFNlcmllc0NvbXBvbmVudH0gZnJvbSAnLi4vYmFzZS0zZC1zZXJpZXMvYmFzZTNkLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHtCbG9jazNkUG9pbnR9IGZyb20gJy4uL21vZGVsL2Jsb2NrM2QtcG9pbnQnO1xuaW1wb3J0IHtDaGFydDNkU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9jaGFydC0zZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4dGVuZChUSFJFRSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtYmxvY2stM2QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmxvY2stM2QuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW05ndEFyZ3MsIE5ndHNUZXh0LCBOZ0lmLCBBc3luY1BpcGUsIE5nRm9yT2ZdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIEJsb2NrM2RDb21wb25lbnQ8VCBleHRlbmRzIEJsb2NrM2RQb2ludD5cbiAgZXh0ZW5kcyBCYXNlM2RTZXJpZXNDb21wb25lbnQ8VD5cbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgYmxvY2tzOiBPYnNlcnZhYmxlPHtcbiAgICBjb21wb25lbnQ6IFRIUkVFLk1lc2g8VEhSRUUuUGxhbmVHZW9tZXRyeSwgVEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWw+O1xuICAgIHBvc2l0aW9uOiBudW1iZXI7XG4gIH1bXVtdPjtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgTWF0aCA9IE1hdGg7XG5cbiAgY29uc3RydWN0b3Iob3ZlcnJpZGUgc3ZjOiBDaGFydDNkU2VydmljZSwgb3ZlcnJpZGUgbmd0U3RvcmU6IE5ndFN0b3JlKSB7XG4gICAgc3VwZXIoc3ZjLCBuZ3RTdG9yZSk7XG4gICAgdGhpcy5ibG9ja3MgPSB0aGlzLnN2Yy5zY2FsZXMucGlwZShcbiAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICBtYXAoc2NhbGVzID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VyaWVzPy5kYXRhPy5tYXAoXyA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU1ZHVGV4dHVyZShzY2FsZXMueShfPy55KSwgc2NhbGVzLnkoXz8ueTEpLCBfPy5pY29uSWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNyZWF0ZVNWR1RleHR1cmUoeTogbnVtYmVyLCB5MTogbnVtYmVyLCBpY29uSWQ6IG51bWJlcikge1xuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHksIHkxKTtcbiAgICBjb25zdCBtaW4gPSBNYXRoLm1pbih5LCB5MSk7XG4gICAgY29uc3QgaGVpZ2h0ID0gTWF0aC5hYnMobWF4IC0gbWluKTtcbiAgICBjb25zdCBpY29uID0gaWNvbklkID8gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7aWNvbklkfWApIDogbnVsbDtcbiAgICBjb25zdCBzdmdTdHJpbmcgPWljb24/IGA8c3ZnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJyB2aWV3Qm94PScwIDAgMTYgMTYnIGZpbGw9J25vbmUnICB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPiR7aWNvbj8uaW5uZXJIVE1MfTwvc3ZnPmA6bnVsbDtcbiAgICBjb25zdCBsb2FkZXIgPSBuZXcgVEhSRUUuVGV4dHVyZUxvYWRlcigpO1xuICAgIGNvbnN0IHRleHR1cmUgPSBsb2FkZXIubG9hZChcbiAgICAgIGBkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwke2VuY29kZVVSSUNvbXBvbmVudChzdmdTdHJpbmcpfWBcbiAgICApO1xuICAgIGNvbnN0IHBsYW5lID0gdGhpcy5jcmVhdGVUZXh0dXJlZFBsYW5lKHRleHR1cmUsIDEwMCwgaGVpZ2h0LCAhIWljb24pO1xuICAgIGNvbnN0IHBsYW5lMSA9IHRoaXMuY3JlYXRlVGV4dHVyZWRQbGFuZSh0ZXh0dXJlLCAyNSwgaGVpZ2h0LCAhIWljb24pO1xuICAgIHBsYW5lLnJvdGF0aW9uLnNldCgwLCBNYXRoLlBJIC8gMiwgMCk7XG4gICAgcGxhbmUucG9zaXRpb24uc2V0KDAuMTcsIG1pbiArIGhlaWdodCAvIDIsIDApO1xuICAgIHBsYW5lMS5wb3NpdGlvbi5zZXQoMjUgLyAyLCBtaW4gKyBoZWlnaHQgLyAyLCAtNTAgKyAwLjE3KTtcbiAgICByZXR1cm4gW1xuICAgICAge2NvbXBvbmVudDogcGxhbmUsIHBvc2l0aW9uOiBtaW4gKyBoZWlnaHQgLyAyfSxcbiAgICAgIHtjb21wb25lbnQ6IHBsYW5lMSwgcG9zaXRpb246IG1pbiArIGhlaWdodCAvIDJ9LFxuICAgIF07XG4gIH1cblxuICBjcmVhdGVUZXh0dXJlZFBsYW5lKFxuICAgIHRleHR1cmU6IFRleHR1cmUsXG4gICAgd2lkdGg6IG51bWJlcixcbiAgICBoZWlnaHQ6IG51bWJlcixcbiAgICB2aXNpYmxlOiBib29sZWFuXG4gICkge1xuICAgIHRleHR1cmUud3JhcFMgPSBUSFJFRS5SZXBlYXRXcmFwcGluZztcbiAgICB0ZXh0dXJlLndyYXBUID0gVEhSRUUuUmVwZWF0V3JhcHBpbmc7XG4gICAgdGV4dHVyZS5yZXBlYXQuc2V0KDEwLCBoZWlnaHQgLyA5KTtcbiAgICBjb25zdCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7bWFwOiB0ZXh0dXJlLCB2aXNpYmxlfSk7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuUGxhbmVHZW9tZXRyeSh3aWR0aCwgaGVpZ2h0LCAxLCAxKTtcbiAgICBjb25zdCB1dnMgPSBnZW9tZXRyeS5hdHRyaWJ1dGVzWyd1diddLmFycmF5O1xuICAgIGNvbnN0IG5ld1V2cyA9IG5ldyBGbG9hdDMyQXJyYXkodXZzKTtcbiAgICBuZXdVdnNbMF0gPSAwO1xuICAgIG5ld1V2c1sxXSA9IDE7XG4gICAgbmV3VXZzWzJdID0gd2lkdGggLyAxMDA7XG4gICAgbmV3VXZzWzNdID0gMTtcbiAgICBuZXdVdnNbNF0gPSAwO1xuICAgIG5ld1V2c1s1XSA9IDA7XG4gICAgbmV3VXZzWzZdID0gd2lkdGggLyAxMDA7XG4gICAgbmV3VXZzWzddID0gMDtcbiAgICBnZW9tZXRyeS5hdHRyaWJ1dGVzWyd1diddLm5lZWRzVXBkYXRlID0gdHJ1ZTtcbiAgICBnZW9tZXRyeS5zZXRBdHRyaWJ1dGUoJ3V2JywgbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZShuZXdVdnMsIDIpKTtcbiAgICByZXR1cm4gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIG1hdGVyaWFsKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9J3tcbiAgICBibG9ja3M6IGJsb2NrcyB8IGFzeW5jLFxuICAgIHNjYWxlczogc3ZjLnNjYWxlcyB8IGFzeW5jXG4gIH0gYXMgZGF0YSc+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPSdsZXQgbWVzaCBvZiBkYXRhLmJsb2NrczsgbGV0IGk9aW5kZXgnPlxuICAgIDxuZ3QtcHJpbWl0aXZlICphcmdzPSdbbWVzaFswXS5jb21wb25lbnRdJz48L25ndC1wcmltaXRpdmU+XG4gICAgPG5ndHMtdGV4dCBbdGV4dF09J3Nlcmllcy5kYXRhW2ldLm5hbWUnXG4gICAgICAgICAgICAgICBjb2xvcj0nYmxhY2snXG4gICAgICAgICAgICAgICBbZm9udFNpemVdPScyLjUnXG4gICAgICAgICAgICAgICBbcm90YXRpb25dPSdbMCxNYXRoLlBJLzIsMF0nXG4gICAgICAgICAgICAgICBbcG9zaXRpb25dPSdbMSxtZXNoWzBdLnBvc2l0aW9uLDVdJ1xuICAgICAgICAgICAgICAgW3RleHRBbGlnbl09XCInbGVmdCdcIlxuICAgICAgICAgICAgICAgW2FuY2hvclhdPVwiJ2NlbnRlcidcIlxuICAgICAgICAgICAgICAgW2FuY2hvclldPVwiJ21pZGRsZSdcIj48L25ndHMtdGV4dD5cbiAgICA8bmd0LXByaW1pdGl2ZSAqYXJncz0nW21lc2hbMV0uY29tcG9uZW50XSc+PC9uZ3QtcHJpbWl0aXZlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, Input, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgtCanvas, NgtStore } from 'angular-three';
4
+ import { SceneComponent } from '../scene/scene.component';
5
+ import { Camera } from 'three';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class CanvasComponent {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: CanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: CanvasComponent, isStandalone: true, selector: "teta-canvas", inputs: { scene: "scene", camera: "camera", data: "data" }, providers: [NgtStore], ngImport: i0, template: "<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", styles: [":host{width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: NgtCanvas, selector: "ngt-canvas", inputs: ["sceneGraph", "sceneGraphInputs", "compoundPrefixes", "linear", "legacy", "flat", "orthographic", "frameloop", "dpr", "raycaster", "shadows", "camera", "gl", "eventSource", "eventPrefix", "lookAt", "performance"], outputs: ["created", "pointerMissed"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: CanvasComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'teta-canvas', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, providers: [NgtStore], imports: [NgtCanvas, SceneComponent, CommonModule], template: "<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", styles: [":host{width:100%;height:100%}\n"] }]
15
+ }], propDecorators: { scene: [{
16
+ type: Input
17
+ }], camera: [{
18
+ type: Input
19
+ }], data: [{
20
+ type: Input
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvY2FudmFzL2NhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2NhbnZhcy9jYW52YXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7OztBQVkvQixNQUFNLE9BQU8sZUFBZTs4R0FBZixlQUFlO2tHQUFmLGVBQWUsc0hBSGYsQ0FBQyxRQUFRLENBQUMsMEJDbkJ2QixxTkFNQSx5RkRjWSxTQUFTLDRUQUFrQixZQUFZOzsyRkFFdEMsZUFBZTtrQkFWM0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUdQLENBQUMsc0JBQXNCLENBQUMsbUJBQ2hCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxRQUFRLENBQUMsV0FDWixDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDOzhCQUd6QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3RDYW52YXMsIE5ndFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBTY2VuZUNvbXBvbmVudCB9IGZyb20gJy4uL3NjZW5lL3NjZW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJM2RDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktM2QtY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IENhbWVyYSB9IGZyb20gJ3RocmVlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1jYW52YXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FudmFzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FudmFzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW05ndFN0b3JlXSxcbiAgaW1wb3J0czogW05ndENhbnZhcywgU2NlbmVDb21wb25lbnQsIENvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENhbnZhc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNjZW5lOiB0eXBlb2YgU2NlbmVDb21wb25lbnQ7XG4gIEBJbnB1dCgpIGNhbWVyYTogQ2FtZXJhO1xuICBASW5wdXQoKSBkYXRhOiBJM2RDaGFydENvbmZpZztcbn1cbiIsIjxuZ3QtY2FudmFzICpuZ0lmPVwiZGF0YT8uc2VyaWVzPy5sZW5ndGg7ZWxzZSBub0RhdGFcIiBbc2NlbmVHcmFwaF09XCJzY2VuZVwiXG4gICAgICAgICAgICBbY2FtZXJhXT1cImNhbWVyYVwiPlxuPC9uZ3QtY2FudmFzPlxuPG5nLXRlbXBsYXRlICNub0RhdGE+XG4gIDxwPnt7ZGF0YT8ubm9EYXRhVGV4dCB8fCAnbm8gZGF0YSd9fTwvcD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,45 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewContainerRef, } from '@angular/core';
2
+ import { Camera } from 'three';
3
+ import { CanvasComponent } from '../canvas/canvas.component';
4
+ import * as i0 from "@angular/core";
5
+ export class Canvas3dHost {
6
+ constructor(viewContainerRef) {
7
+ this.viewContainerRef = viewContainerRef;
8
+ this._init = false;
9
+ }
10
+ ngOnInit() {
11
+ this.createCanvas();
12
+ this._init = true;
13
+ }
14
+ ngOnChanges() {
15
+ if (this._init) {
16
+ this.createCanvas();
17
+ this._componentRef.injector.get(ChangeDetectorRef).detectChanges();
18
+ }
19
+ }
20
+ createCanvas() {
21
+ this.viewContainerRef.clear();
22
+ this._componentRef = this.viewContainerRef.createComponent(CanvasComponent);
23
+ this._componentRef.instance.scene = this.scene;
24
+ this._componentRef.instance.camera = this.camera;
25
+ this._componentRef.instance.data = this.data;
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Canvas3dHost, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: Canvas3dHost, isStandalone: true, selector: "[teta-canvas-3d-host]", inputs: { scene: "scene", camera: "camera", data: "data" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
+ }
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Canvas3dHost, decorators: [{
31
+ type: Component,
32
+ args: [{
33
+ selector: '[teta-canvas-3d-host]',
34
+ template: '',
35
+ standalone: true,
36
+ changeDetection: ChangeDetectionStrategy.OnPush,
37
+ }]
38
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { scene: [{
39
+ type: Input
40
+ }], camera: [{
41
+ type: Input
42
+ }], data: [{
43
+ type: Input
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLTNkLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2RpcmVjdGl2ZS9jYW52YXMtM2QtaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsS0FBSyxFQUdMLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFVN0QsTUFBTSxPQUFPLFlBQVk7SUFRdkIsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFIOUMsVUFBSyxHQUFHLEtBQUssQ0FBQztJQUdtQyxDQUFDO0lBRTFELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQy9DLENBQUM7OEdBNUJVLFlBQVk7a0dBQVosWUFBWSxrS0FKYixFQUFFOzsyRkFJRCxZQUFZO2tCQU54QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7cUZBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FtZXJhIH0gZnJvbSAndGhyZWUnO1xuXG5pbXBvcnQgeyBDYW52YXNDb21wb25lbnQgfSBmcm9tICcuLi9jYW52YXMvY2FudmFzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJM2RDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktM2QtY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IFNjZW5lQ29tcG9uZW50IH0gZnJvbSAnLi4vc2NlbmUvc2NlbmUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtY2FudmFzLTNkLWhvc3RdJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FudmFzM2RIb3N0IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBzY2VuZTogdHlwZW9mIFNjZW5lQ29tcG9uZW50O1xuICBASW5wdXQoKSBjYW1lcmE6IENhbWVyYTtcbiAgQElucHV0KCkgZGF0YTogSTNkQ2hhcnRDb25maWc7XG5cbiAgcHJpdmF0ZSBfaW5pdCA9IGZhbHNlO1xuICBwcml2YXRlIF9jb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUNhbnZhcygpO1xuICAgIHRoaXMuX2luaXQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2luaXQpIHtcbiAgICAgIHRoaXMuY3JlYXRlQ2FudmFzKCk7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgY3JlYXRlQ2FudmFzKCkge1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoQ2FudmFzQ29tcG9uZW50KTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2NlbmUgPSB0aGlzLnNjZW5lO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5jYW1lcmEgPSB0aGlzLmNhbWVyYTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0YSA9IHRoaXMuZGF0YTtcbiAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './series-3d-host';
2
+ export * from './canvas-3d-host';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvZGlyZWN0aXZlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZXJpZXMtM2QtaG9zdCc7XG5leHBvcnQgKiBmcm9tICcuL2NhbnZhcy0zZC1ob3N0JztcbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewContainerRef, } from '@angular/core';
2
+ import { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';
3
+ import { Block3dComponent } from '../block-3d/block-3d.component';
4
+ import { Line3dComponent } from '../line-3d/line-3d.component';
5
+ import { Series3dType } from '../model/enum/series-3d-type';
6
+ import * as i0 from "@angular/core";
7
+ export class Series3dHost {
8
+ constructor(viewContainerRef) {
9
+ this.viewContainerRef = viewContainerRef;
10
+ this.seriesMap = new Map()
11
+ .set(Series3dType.line, Line3dComponent)
12
+ .set(Series3dType.block, Block3dComponent);
13
+ this._init = false;
14
+ }
15
+ ngOnInit() {
16
+ if (!Object.prototype.isPrototypeOf.call(Base3dSeriesComponent, this.series.component)) {
17
+ this.series.component = this.seriesMap.get(this.series.type);
18
+ }
19
+ this._componentRef = this.viewContainerRef.createComponent(this.series.component);
20
+ this._componentRef.instance.series = this.series;
21
+ this._init = true;
22
+ }
23
+ ngOnChanges(changes) {
24
+ if (this._init &&
25
+ (Object.prototype.hasOwnProperty.call(changes, 'series') ||
26
+ changes.hasOwnProperty('config'))) {
27
+ this._componentRef.instance.series = this.series;
28
+ this._componentRef.injector.get(ChangeDetectorRef).detectChanges();
29
+ }
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Series3dHost, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: Series3dHost, isStandalone: true, selector: "[teta-series-3d-host]", inputs: { series: "series" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Series3dHost, decorators: [{
35
+ type: Component,
36
+ args: [{
37
+ selector: '[teta-series-3d-host]',
38
+ template: '',
39
+ standalone: true,
40
+ changeDetection: ChangeDetectionStrategy.OnPush,
41
+ }]
42
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { series: [{
43
+ type: Input
44
+ }] } });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLTNkLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2RpcmVjdGl2ZS9zZXJpZXMtM2QtaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsS0FBSyxFQUdMLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVE1RCxNQUFNLE9BQU8sWUFBWTtJQVN2QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQU45QyxjQUFTLEdBQW9ELElBQUksR0FBRyxFQUFFO2FBQzNFLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQzthQUN2QyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JDLFVBQUssR0FBRyxLQUFLLENBQUM7SUFHbUMsQ0FBQztJQUUxRCxRQUFRO1FBQ04sSUFDRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbEMscUJBQXFCLEVBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUN0QixFQUNELENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUN0QixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUNFLElBQUksQ0FBQyxLQUFLO1lBQ1YsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQztnQkFDdEQsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUNuQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckUsQ0FBQztJQUNILENBQUM7OEdBcENVLFlBQVk7a0dBQVosWUFBWSxvSUFKYixFQUFFOzsyRkFJRCxZQUFZO2tCQU54QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7cUZBRVUsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2UzZFNlcmllc0NvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtM2Qtc2VyaWVzL2Jhc2UzZC1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IEJsb2NrM2RDb21wb25lbnQgfSBmcm9tICcuLi9ibG9jay0zZC9ibG9jay0zZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGluZTNkQ29tcG9uZW50IH0gZnJvbSAnLi4vbGluZS0zZC9saW5lLTNkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlM2RTZXJpZXMgfSBmcm9tICcuLi9tb2RlbC9iYXNlLTNkLXNlcmllcyc7XG5pbXBvcnQgeyBCYXNlM2RUaHJlZVBvaW50IH0gZnJvbSAnLi4vbW9kZWwvYmFzZS0zZC10aHJlZS1wb2ludCc7XG5pbXBvcnQgeyBTZXJpZXMzZFR5cGUgfSBmcm9tICcuLi9tb2RlbC9lbnVtL3Nlcmllcy0zZC10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtc2VyaWVzLTNkLWhvc3RdJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2VyaWVzM2RIb3N0PFQgZXh0ZW5kcyBCYXNlM2RUaHJlZVBvaW50PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNlcmllczogQmFzZTNkU2VyaWVzPFQ+O1xuXG4gIHByaXZhdGUgc2VyaWVzTWFwOiBNYXA8U2VyaWVzM2RUeXBlLCB0eXBlb2YgQmFzZTNkU2VyaWVzQ29tcG9uZW50PiA9IG5ldyBNYXAoKVxuICAgIC5zZXQoU2VyaWVzM2RUeXBlLmxpbmUsIExpbmUzZENvbXBvbmVudClcbiAgICAuc2V0KFNlcmllczNkVHlwZS5ibG9jaywgQmxvY2szZENvbXBvbmVudCk7XG4gIHByaXZhdGUgX2luaXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIU9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKFxuICAgICAgICBCYXNlM2RTZXJpZXNDb21wb25lbnQsXG4gICAgICAgIHRoaXMuc2VyaWVzLmNvbXBvbmVudFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhpcy5zZXJpZXMuY29tcG9uZW50ID0gdGhpcy5zZXJpZXNNYXAuZ2V0KHRoaXMuc2VyaWVzLnR5cGUpO1xuICAgIH1cbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgdGhpcy5zZXJpZXMuY29tcG9uZW50XG4gICAgKTtcblxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXJpZXMgPSB0aGlzLnNlcmllcztcbiAgICB0aGlzLl9pbml0ID0gdHJ1ZTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5faW5pdCAmJlxuICAgICAgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnc2VyaWVzJykgfHxcbiAgICAgICAgY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnY29uZmlnJykpXG4gICAgKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VyaWVzID0gdGhpcy5zZXJpZXM7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgtsLine } from 'angular-three-soba/abstractions';
4
+ import { extend, NgtArgs, NgtStore } from 'angular-three';
5
+ import * as THREE from 'three';
6
+ import { map, takeWhile } from 'rxjs';
7
+ import { Chart3dService } from '../service/chart-3d.service';
8
+ import { Base3dSeriesComponent } from '../base-3d-series/base3d-series.component';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../service/chart-3d.service";
11
+ import * as i2 from "angular-three";
12
+ import * as i3 from "@angular/common";
13
+ extend(THREE);
14
+ export class Line3dComponent extends Base3dSeriesComponent {
15
+ constructor(svc, ngtStore) {
16
+ super(svc, ngtStore);
17
+ this.svc = svc;
18
+ this.ngtStore = ngtStore;
19
+ this._alive = true;
20
+ this.Math = Math;
21
+ this.points = this.svc.scales.pipe(takeWhile(() => this._alive), map(scales => {
22
+ return this.getPoints(scales);
23
+ }));
24
+ }
25
+ getPoints(scales) {
26
+ return this.series?.data?.map(_ => {
27
+ return [scales.x(_?.x), scales.y(_?.y), scales.z(_?.z)];
28
+ }).flat();
29
+ }
30
+ ngOnDestroy() {
31
+ this._alive = false;
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Line3dComponent, deps: [{ token: i1.Chart3dService }, { token: i2.NgtStore }], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: Line3dComponent, isStandalone: true, selector: "teta-line-3d", usesInheritance: true, ngImport: i0, template: "<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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "component", type: NgtsLine, selector: "ngts-line[points]", inputs: ["lineRef", "points", "segments"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: Line3dComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'teta-line-3d', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, NgtsLine, NgtArgs], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<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" }]
39
+ }], ctorParameters: () => [{ type: i1.Chart3dService }, { type: i2.NgtStore }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS0zZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2xpbmUtM2QvbGluZS0zZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L2xpbmUtM2QvbGluZS0zZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxzQkFBc0IsR0FFdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7OztBQUdsRixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFTZCxNQUFNLE9BQU8sZUFDWCxTQUFRLHFCQUFrQztJQU8xQyxZQUFxQixHQUFtQixFQUFXLFFBQWtCO1FBQ25FLEtBQUssQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFERixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVU7UUFIN0QsV0FBTSxHQUFHLElBQUksQ0FBQztRQUVILFNBQUksR0FBRyxJQUFJLENBQUM7UUFHN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2hDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUE0QixDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQzs4R0F6QlUsZUFBZTtrR0FBZixlQUFlLCtGQ3hCNUIsZ1NBTUEsMkNEY1ksWUFBWSx3TEFBRSxRQUFROzsyRkFJckIsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FDakMsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmd0c0xpbmUgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvYWJzdHJhY3Rpb25zJztcbmltcG9ydCB7IGV4dGVuZCwgTmd0QXJncywgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgdGFrZVdoaWxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFydDNkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQtM2Quc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlM2RTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLTNkLXNlcmllcy9iYXNlM2Qtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaW5lM2RQb2ludCB9IGZyb20gJy4uL21vZGVsL2xpbmUtM2QtcG9pbnQnO1xuXG5leHRlbmQoVEhSRUUpO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1saW5lLTNkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE5ndHNMaW5lLCBOZ3RBcmdzXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluZS0zZC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIExpbmUzZENvbXBvbmVudFxuICBleHRlbmRzIEJhc2UzZFNlcmllc0NvbXBvbmVudDxMaW5lM2RQb2ludD5cbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgcHVibGljIHBvaW50czogT2JzZXJ2YWJsZTxbbnVtYmVyLG51bWJlcixudW1iZXJdPjtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBNYXRoID0gTWF0aDtcbiAgY29uc3RydWN0b3Iob3ZlcnJpZGUgc3ZjOiBDaGFydDNkU2VydmljZSwgb3ZlcnJpZGUgbmd0U3RvcmU6IE5ndFN0b3JlKSB7XG4gICAgc3VwZXIoc3ZjLCBuZ3RTdG9yZSk7XG4gICAgdGhpcy5wb2ludHMgPSB0aGlzLnN2Yy5zY2FsZXMucGlwZShcbiAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICBtYXAoc2NhbGVzID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UG9pbnRzKHNjYWxlcyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgZ2V0UG9pbnRzKHNjYWxlcykge1xuICAgIHJldHVybiB0aGlzLnNlcmllcz8uZGF0YT8ubWFwKF8gPT4ge1xuICAgICAgcmV0dXJuIFtzY2FsZXMueChfPy54KSwgc2NhbGVzLnkoXz8ueSksIHNjYWxlcy56KF8/LnopXTtcbiAgICB9KS5mbGF0KCkgYXMgW251bWJlcixudW1iZXIsbnVtYmVyXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7cG9pbnRzOnBvaW50c3xhc3luY31hcyBkYXRhXCI+XG4gIDxuZ3QtbWVzaCAqbmdJZj1cImRhdGE/LnBvaW50cz8ubGVuZ3RoXCI+XG4gICAgPG5ndHMtbGluZSBbY29sb3JdPVwic2VyaWVzLmNvbG9yXCIgW2xpbmVXaWR0aF09XCIyXCIgW3BvaW50c109XCJkYXRhLnBvaW50c1wiPjwvbmd0cy1saW5lPlxuICAgIDxuZ3QtbGluZS1iYXNpYy1tYXRlcmlhbD48L25ndC1saW5lLWJhc2ljLW1hdGVyaWFsPlxuICA8L25ndC1tZXNoPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy0zZC1taW4tbWF4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90aHJlZS90aHJlZS1jaGFydC9tb2RlbC9heGVzLTNkLW1pbi1tYXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQXhlczNkTWluTWF4IHtcbiAgeDpbbnVtYmVyLG51bWJlcl0sXG4gIHk6W251bWJlcixudW1iZXJdLFxuICB6OltudW1iZXIsbnVtYmVyXSxcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy0zZC1wb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvbW9kZWwvYXhpcy0zZC1wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBeGlzM2RQb2ludCB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS0zZC1zZXJpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L21vZGVsL2Jhc2UtM2Qtc2VyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlM2RUaHJlZVBvaW50IH0gZnJvbSAnLi9iYXNlLTNkLXRocmVlLXBvaW50JztcbmltcG9ydCB7IFNlcmllczNkVHlwZSB9IGZyb20gJy4vZW51bS9zZXJpZXMtM2QtdHlwZSc7XG5pbXBvcnQgeyBCYXNlM2RTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLTNkLXNlcmllcy9iYXNlM2Qtc2VyaWVzLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZTNkU2VyaWVzPFQgZXh0ZW5kcyBCYXNlM2RUaHJlZVBvaW50PiB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU6IFNlcmllczNkVHlwZTtcbiAgY29tcG9uZW50PzogdHlwZW9mIEJhc2UzZFNlcmllc0NvbXBvbmVudDtcbiAgZGF0YTogVFtdO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgY29sb3I/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS0zZC10aHJlZS1wb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvbW9kZWwvYmFzZS0zZC10aHJlZS1wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCYXNlM2RUaHJlZVBvaW50IHtcbiAgeDogbnVtYmVyO1xuICB4MT86IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB5MT86IG51bWJlcjtcbiAgejogbnVtYmVyO1xuICB6MT86IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stM2Qtc2VyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90aHJlZS90aHJlZS1jaGFydC9tb2RlbC9ibG9jay0zZC1zZXJpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2UzZFNlcmllcyB9IGZyb20gJy4vYmFzZS0zZC1zZXJpZXMnO1xuaW1wb3J0IHsgQmxvY2szZFBvaW50IH0gZnJvbSAnLi9ibG9jazNkLXBvaW50JztcbmltcG9ydCB7IFNlcmllczNkVHlwZSB9IGZyb20gJy4vZW51bS9zZXJpZXMtM2QtdHlwZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2szZFNlcmllcyBleHRlbmRzIEJhc2UzZFNlcmllczxCbG9jazNkUG9pbnQ+IHtcbiAgdHlwZTogU2VyaWVzM2RUeXBlLmJsb2NrO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2szZC1wb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvbW9kZWwvYmxvY2szZC1wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZTNkVGhyZWVQb2ludCB9IGZyb20gJy4vYmFzZS0zZC10aHJlZS1wb2ludCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmxvY2szZFBvaW50IGV4dGVuZHMgQmFzZTNkVGhyZWVQb2ludCB7XG4gIGljb25JZDogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './series-3d-type';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvbW9kZWwvZW51bS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Nlcmllcy0zZC10eXBlJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export var Series3dType;
2
+ (function (Series3dType) {
3
+ Series3dType[Series3dType["line"] = 0] = "line";
4
+ Series3dType[Series3dType["block"] = 1] = "block";
5
+ })(Series3dType || (Series3dType = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLTNkLXR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L21vZGVsL2VudW0vc2VyaWVzLTNkLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QiwrQ0FBSSxDQUFBO0lBQ0osaURBQUssQ0FBQTtBQUNQLENBQUMsRUFIVyxZQUFZLEtBQVosWUFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNlcmllczNkVHlwZSB7XG4gIGxpbmUsXG4gIGJsb2NrLFxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaS0zZC1jaGFydC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L21vZGVsL2ktM2QtY2hhcnQtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlM2RTZXJpZXMgfSBmcm9tICcuL2Jhc2UtM2Qtc2VyaWVzJztcbmltcG9ydCB7IEJhc2UzZFRocmVlUG9pbnQgfSBmcm9tICcuL2Jhc2UtM2QtdGhyZWUtcG9pbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEkzZENoYXJ0Q29uZmlnIHtcbiAgc2VyaWVzPzogQmFzZTNkU2VyaWVzPEJhc2UzZFRocmVlUG9pbnQ+W107XG4gIG5vRGF0YVRleHQ/OiBzdHJpbmc7XG4gIHhBeGlzPzogbWluTWF4O1xuICB5QXhpcz86IG1pbk1heDtcbiAgekF4aXM/OiBtaW5NYXg7XG59XG5pbnRlcmZhY2UgbWluTWF4IHtcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS0zZC1wb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvbW9kZWwvbGluZS0zZC1wb2ludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBMaW5lM2RQb2ludCB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB6OiBudW1iZXI7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS0zZC1zZXJpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L21vZGVsL2xpbmUtM2Qtc2VyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlM2RTZXJpZXMgfSBmcm9tICcuL2Jhc2UtM2Qtc2VyaWVzJztcbmltcG9ydCB7IFNlcmllczNkVHlwZSB9IGZyb20gJy4vZW51bS9zZXJpZXMtM2QtdHlwZSc7XG5pbXBvcnQgeyBMaW5lM2RQb2ludCB9IGZyb20gJy4vbGluZS0zZC1wb2ludCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGluZTNkU2VyaWVzIGV4dGVuZHMgQmFzZTNkU2VyaWVzPExpbmUzZFBvaW50PiB7XG4gIHR5cGU6IFNlcmllczNkVHlwZS5saW5lO1xufVxuIl19
@@ -0,0 +1,11 @@
1
+ export * from './axes-3d-min-max';
2
+ export * from './axis-3d-point';
3
+ export * from './base-3d-series';
4
+ export * from './base-3d-three-point';
5
+ export * from './block3d-point';
6
+ export * from './enum/public-api';
7
+ export * from './i-3d-chart-config';
8
+ export * from './line-3d-point';
9
+ export * from './line-3d-series';
10
+ export * from './block-3d-series';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGhyZWUvdGhyZWUtY2hhcnQvbW9kZWwvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9heGVzLTNkLW1pbi1tYXgnO1xuZXhwb3J0ICogZnJvbSAnLi9heGlzLTNkLXBvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS0zZC1zZXJpZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlLTNkLXRocmVlLXBvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vYmxvY2szZC1wb2ludCc7XG5leHBvcnQgKiBmcm9tICcuL2VudW0vcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2ktM2QtY2hhcnQtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbGluZS0zZC1wb2ludCc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmUtM2Qtc2VyaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vYmxvY2stM2Qtc2VyaWVzJztcbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, inject, } from '@angular/core';
3
+ import { NgtStore } from 'angular-three';
4
+ import { NgtsOrbitControls } from 'angular-three-soba/controls';
5
+ import { Area3dComponent } from '../area-3d/area-3d.component';
6
+ import { Axes3dComponent } from '../axes-3d/axes-3d.component';
7
+ import { Block3dComponent } from '../block-3d/block-3d.component';
8
+ import { Series3dHost } from '../directive/series-3d-host';
9
+ import { Line3dComponent } from '../line-3d/line-3d.component';
10
+ import { Chart3dService } from '../service/chart-3d.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@angular/common";
13
+ export class SceneComponent {
14
+ constructor() {
15
+ this.store = inject(NgtStore);
16
+ this.Math = Math;
17
+ this.chartService = inject(Chart3dService);
18
+ this._cdr = inject(ChangeDetectorRef);
19
+ this.data = this.chartService.data;
20
+ }
21
+ setRotation() {
22
+ this.rotation = null;
23
+ this._cdr.detectChanges();
24
+ this.rotation = this.store.get('camera').rotation;
25
+ this._cdr.detectChanges();
26
+ }
27
+ ngOnInit() {
28
+ this.rotation = this.store.get('camera').rotation;
29
+ }
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SceneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: SceneComponent, isStandalone: true, selector: "teta-scene", ngImport: i0, template: "<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", dependencies: [{ kind: "component", type: NgtsOrbitControls, selector: "ngts-orbit-controls", inputs: ["controlsRef", "camera", "domElement", "makeDefault", "regress", "target", "enableDamping"], outputs: ["change", "start", "end"] }, { 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: Area3dComponent, selector: "teta-area-3d" }, { kind: "component", type: Axes3dComponent, selector: "teta-axes-3d", inputs: ["rotation"] }, { kind: "component", type: Series3dHost, selector: "[teta-series-3d-host]", inputs: ["series"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SceneComponent, decorators: [{
34
+ type: Component,
35
+ args: [{ standalone: true, selector: 'teta-scene', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
36
+ NgtsOrbitControls,
37
+ CommonModule,
38
+ Area3dComponent,
39
+ Line3dComponent,
40
+ Axes3dComponent,
41
+ Block3dComponent,
42
+ Series3dHost,
43
+ ], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<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" }]
44
+ }], ctorParameters: () => [] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90aHJlZS90aHJlZS1jaGFydC9zY2VuZS9zY2VuZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RocmVlL3RocmVlLWNoYXJ0L3NjZW5lL3NjZW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSWhFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQWtCN0QsTUFBTSxPQUFPLGNBQWM7SUFRekI7UUFMZ0IsVUFBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBR2xELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNwRCxDQUFDOzhHQXJCVSxjQUFjO2tHQUFkLGNBQWMsc0VDdEMzQixta0JBZ0JBLDRDRFlJLGlCQUFpQiwwTUFDakIsWUFBWSxxVEFDWixlQUFlLHlEQUVmLGVBQWUsK0VBRWYsWUFBWTs7MkZBSUgsY0FBYztrQkFoQjFCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixZQUFZO3FCQUNiLFdBQ1EsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcbiAgaW5qZWN0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0U3RvcmUgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndHNPcmJpdENvbnRyb2xzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL2NvbnRyb2xzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV1bGVyIH0gZnJvbSAndGhyZWUnO1xuXG5pbXBvcnQgeyBBcmVhM2RDb21wb25lbnQgfSBmcm9tICcuLi9hcmVhLTNkL2FyZWEtM2QuY29tcG9uZW50JztcbmltcG9ydCB7IEF4ZXMzZENvbXBvbmVudCB9IGZyb20gJy4uL2F4ZXMtM2QvYXhlcy0zZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmxvY2szZENvbXBvbmVudCB9IGZyb20gJy4uL2Jsb2NrLTNkL2Jsb2NrLTNkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXJpZXMzZEhvc3QgfSBmcm9tICcuLi9kaXJlY3RpdmUvc2VyaWVzLTNkLWhvc3QnO1xuaW1wb3J0IHsgTGluZTNkQ29tcG9uZW50IH0gZnJvbSAnLi4vbGluZS0zZC9saW5lLTNkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJM2RDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktM2QtY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IENoYXJ0M2RTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jaGFydC0zZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAndGV0YS1zY2VuZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2VuZS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTmd0c09yYml0Q29udHJvbHMsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFyZWEzZENvbXBvbmVudCxcbiAgICBMaW5lM2RDb21wb25lbnQsXG4gICAgQXhlczNkQ29tcG9uZW50LFxuICAgIEJsb2NrM2RDb21wb25lbnQsXG4gICAgU2VyaWVzM2RIb3N0LFxuICBdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIFNjZW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGRhdGE6IE9ic2VydmFibGU8STNkQ2hhcnRDb25maWc+O1xuICBwdWJsaWMgcm90YXRpb246IEV1bGVyO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoTmd0U3RvcmUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgTWF0aCA9IE1hdGg7XG4gIHByb3RlY3RlZCByZWFkb25seSBjaGFydFNlcnZpY2UgPSBpbmplY3QoQ2hhcnQzZFNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jaGFydFNlcnZpY2UuZGF0YTtcbiAgfVxuXG4gIHNldFJvdGF0aW9uKCkge1xuICAgIHRoaXMucm90YXRpb24gPSBudWxsO1xuICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5yb3RhdGlvbiA9IHRoaXMuc3RvcmUuZ2V0KCdjYW1lcmEnKS5yb3RhdGlvbjtcbiAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3RhdGlvbiA9IHRoaXMuc3RvcmUuZ2V0KCdjYW1lcmEnKS5yb3RhdGlvbjtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj0ne2RhdGE6ZGF0YXxhc3luY30gYXMgY29uZmlnJz5cbiAgPG5ndC1zY2VuZT5cbiAgICA8bmd0cy1vcmJpdC1jb250cm9scyBbbWluQXppbXV0aEFuZ2xlXT0nMCdcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4QXppbXV0aEFuZ2xlXT0nTWF0aC5QSS8yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhab29tXT0nMzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgW21pblpvb21dPScyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPSdzZXRSb3RhdGlvbigpJz48L25ndHMtb3JiaXQtY29udHJvbHM+XG4gIDwvbmd0LXNjZW5lPlxuICA8dGV0YS1hcmVhLTNkPjwvdGV0YS1hcmVhLTNkPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj0nbGV0IHMgb2YgY29uZmlnLmRhdGE/LnNlcmllczsnPlxuICAgIDxkaXYgdGV0YS1zZXJpZXMtM2QtaG9zdCBbc2VyaWVzXT0ncyc+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8dGV0YS1heGVzLTNkIFtyb3RhdGlvbl09J3JvdGF0aW9uJz48L3RldGEtYXhlcy0zZD5cbjwvbmctY29udGFpbmVyPlxuXG5cbiJdfQ==