@tetacom/ng-threejs-chart 1.2.1 → 1.2.3
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.
- package/.eslintrc.json +2 -2
- package/fesm2022/tetacom-ng-threejs-chart.mjs +66 -60
- package/fesm2022/tetacom-ng-threejs-chart.mjs.map +1 -1
- package/package.json +5 -4
- package/types/tetacom-ng-threejs-chart.d.ts +244 -0
- package/common/model/base-3d-point.d.ts +0 -5
- package/component/three/custom-series/custom-series.component.d.ts +0 -18
- package/component/three/public-api.d.ts +0 -11
- package/component/three/three-chart/area-3d/area-3d.component.d.ts +0 -14
- package/component/three/three-chart/axes-3d/axes-3d.component.d.ts +0 -27
- package/component/three/three-chart/base-3d-series/base3d-series.component.d.ts +0 -14
- package/component/three/three-chart/block-3d/block-3d.component.d.ts +0 -26
- package/component/three/three-chart/canvas/canvas.component.d.ts +0 -11
- package/component/three/three-chart/directive/canvas-3d-host.d.ts +0 -19
- package/component/three/three-chart/directive/public-api.d.ts +0 -2
- package/component/three/three-chart/directive/series-3d-host.d.ts +0 -16
- package/component/three/three-chart/line-3d/line-3d.component.d.ts +0 -17
- package/component/three/three-chart/model/axes-3d-min-max.d.ts +0 -5
- package/component/three/three-chart/model/axis-3d-point.d.ts +0 -4
- package/component/three/three-chart/model/base-3d-series.d.ts +0 -11
- package/component/three/three-chart/model/base-3d-three-point.d.ts +0 -8
- package/component/three/three-chart/model/block-3d-series.d.ts +0 -6
- package/component/three/three-chart/model/block3d-point.d.ts +0 -5
- package/component/three/three-chart/model/enum/public-api.d.ts +0 -1
- package/component/three/three-chart/model/enum/series-3d-type.d.ts +0 -4
- package/component/three/three-chart/model/i-3d-chart-config.d.ts +0 -14
- package/component/three/three-chart/model/line-3d-point.d.ts +0 -5
- package/component/three/three-chart/model/line-3d-series.d.ts +0 -6
- package/component/three/three-chart/model/public-api.d.ts +0 -10
- package/component/three/three-chart/scene/scene.component.d.ts +0 -19
- package/component/three/three-chart/service/chart-3d.service.d.ts +0 -21
- package/component/three/three-chart/three-chart.component.d.ts +0 -17
- package/index.d.ts +0 -1
package/.eslintrc.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"error",
|
|
11
11
|
{
|
|
12
12
|
"type": "attribute",
|
|
13
|
-
"prefix": "ngComponents",
|
|
13
|
+
"prefix": ["ngComponents", "teta"],
|
|
14
14
|
"style": "camelCase"
|
|
15
15
|
}
|
|
16
16
|
],
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"error",
|
|
19
19
|
{
|
|
20
20
|
"type": "element",
|
|
21
|
-
"prefix": "ng-components",
|
|
21
|
+
"prefix": ["ng-components", "teta"],
|
|
22
22
|
"style": "kebab-case"
|
|
23
23
|
}
|
|
24
24
|
],
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable,
|
|
3
|
-
import * as
|
|
2
|
+
import { Injectable, inject, Input, Component, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectorRef } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
5
5
|
import * as d3 from 'd3';
|
|
6
6
|
import { ReplaySubject, map, shareReplay, combineLatest, takeWhile } from 'rxjs';
|
|
7
|
-
import { injectStore, extend, NgtArgs
|
|
7
|
+
import { injectStore, extend, NgtArgs } from 'angular-three';
|
|
8
8
|
import * as THREE from 'three';
|
|
9
9
|
import { GridHelper, OrthographicCamera } from 'three';
|
|
10
10
|
import { NgtsText, NgtsLine } from 'angular-three-soba/abstractions';
|
|
11
11
|
import { NgtsOrbitControls } from 'angular-three-soba/controls';
|
|
12
|
+
import * as i1$1 from 'angular-three/dom';
|
|
13
|
+
import { NgtCanvas } from 'angular-three/dom';
|
|
12
14
|
|
|
13
15
|
class Chart3dService {
|
|
14
16
|
constructor() {
|
|
@@ -52,6 +54,13 @@ class Chart3dService {
|
|
|
52
54
|
const ZMinMaxVal = [Math.min(...zArr), Math.max(...zArr)];
|
|
53
55
|
const XMinMaxVal = [Math.min(...xArr), Math.max(...xArr)];
|
|
54
56
|
const YMinMaxVal = [Math.min(...yArr), Math.max(...yArr)];
|
|
57
|
+
const zDelta = ZMinMaxVal[1] - ZMinMaxVal[0];
|
|
58
|
+
const xDelta = XMinMaxVal[1] - XMinMaxVal[0];
|
|
59
|
+
const yDelta = YMinMaxVal[1] - YMinMaxVal[0];
|
|
60
|
+
const maxDelta = Math.max(zDelta, xDelta, yDelta);
|
|
61
|
+
ZMinMaxVal[1] = ZMinMaxVal[0] + maxDelta;
|
|
62
|
+
XMinMaxVal[1] = XMinMaxVal[0] + maxDelta;
|
|
63
|
+
YMinMaxVal[1] = YMinMaxVal[0] + maxDelta;
|
|
55
64
|
return {
|
|
56
65
|
z: this.getMinMaxRange(ZMinMaxVal, data.zAxis?.min, data.zAxis?.max),
|
|
57
66
|
x: this.getMinMaxRange(XMinMaxVal, data.xAxis?.min, data.xAxis?.max),
|
|
@@ -73,10 +82,10 @@ class Chart3dService {
|
|
|
73
82
|
z,
|
|
74
83
|
};
|
|
75
84
|
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
77
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Chart3dService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
86
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Chart3dService, providedIn: 'root' }); }
|
|
78
87
|
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Chart3dService, decorators: [{
|
|
80
89
|
type: Injectable,
|
|
81
90
|
args: [{
|
|
82
91
|
providedIn: 'root',
|
|
@@ -84,46 +93,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
84
93
|
}], ctorParameters: () => [] });
|
|
85
94
|
|
|
86
95
|
class Base3dSeriesComponent {
|
|
96
|
+
constructor() {
|
|
97
|
+
this.svc = inject(Chart3dService);
|
|
98
|
+
this.ngtStore = injectStore();
|
|
99
|
+
}
|
|
87
100
|
set series(series) {
|
|
88
101
|
this._series = series;
|
|
89
102
|
}
|
|
90
103
|
get series() {
|
|
91
104
|
return this._series;
|
|
92
105
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
this.ngtStore = injectStore();
|
|
96
|
-
}
|
|
97
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Base3dSeriesComponent, deps: [{ token: Chart3dService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", 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 }] }); }
|
|
106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Base3dSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
107
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", 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 }] }); }
|
|
99
108
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Base3dSeriesComponent, decorators: [{
|
|
101
110
|
type: Component,
|
|
102
111
|
args: [{ selector: 'teta-base3d-series', imports: [CommonModule], template: "<p>base3d-series works!</p>\n" }]
|
|
103
|
-
}],
|
|
112
|
+
}], propDecorators: { series: [{
|
|
104
113
|
type: Input
|
|
105
114
|
}] } });
|
|
106
115
|
|
|
107
116
|
extend(THREE);
|
|
108
117
|
class CustomSeriesComponent extends Base3dSeriesComponent {
|
|
109
|
-
constructor(
|
|
110
|
-
super(
|
|
111
|
-
this.svc = svc;
|
|
118
|
+
constructor() {
|
|
119
|
+
super();
|
|
112
120
|
this.scales = this.svc.scales;
|
|
113
121
|
}
|
|
114
122
|
ngOnInit() {
|
|
115
123
|
setTimeout(() => {
|
|
116
|
-
this.ngtStore
|
|
117
|
-
this.ngtStore
|
|
124
|
+
this.ngtStore().camera.zoom = 2;
|
|
125
|
+
this.ngtStore().camera.updateProjectionMatrix();
|
|
118
126
|
}, 1000);
|
|
119
127
|
}
|
|
120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
128
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CustomSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
129
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: CustomSeriesComponent, isStandalone: true, selector: "teta-custom-series", usesInheritance: true, ngImport: i0, template: "@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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
122
130
|
}
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CustomSeriesComponent, decorators: [{
|
|
124
132
|
type: Component,
|
|
125
133
|
args: [{ selector: 'teta-custom-series', imports: [CommonModule, NgtArgs], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "@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" }]
|
|
126
|
-
}], ctorParameters: () => [
|
|
134
|
+
}], ctorParameters: () => [] });
|
|
127
135
|
|
|
128
136
|
extend(THREE);
|
|
129
137
|
class Area3dComponent {
|
|
@@ -164,10 +172,10 @@ class Area3dComponent {
|
|
|
164
172
|
ngOnInit() {
|
|
165
173
|
this.area = this.createArea();
|
|
166
174
|
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
168
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
175
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Area3dComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", 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 @for (rect of area; track rect) {\n <ngt-primitive *args=\"[rect]\"></ngt-primitive>\n }\n</ngt-mesh>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
169
177
|
}
|
|
170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Area3dComponent, decorators: [{
|
|
171
179
|
type: Component,
|
|
172
180
|
args: [{ selector: 'teta-area-3d', 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 @for (rect of area; track rect) {\n <ngt-primitive *args=\"[rect]\"></ngt-primitive>\n }\n</ngt-mesh>\n" }]
|
|
173
181
|
}] });
|
|
@@ -202,10 +210,10 @@ class Axes3dComponent {
|
|
|
202
210
|
ngOnDestroy() {
|
|
203
211
|
this._alive = false;
|
|
204
212
|
}
|
|
205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
206
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
213
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Axes3dComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
214
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: Axes3dComponent, isStandalone: true, selector: "teta-axes-3d", inputs: { rotation: "rotation" }, ngImport: i0, template: "@if ({ axes: axes | async }; as data) {\n @for (tick of data.axes?.x; track tick) {\n <ngts-text\n [text]=\"tick.value + '-'\"\n [options]=\"{\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 [options]=\"{\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 [options]=\"{\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", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NgtsText, selector: "ngts-text", inputs: ["text", "options"], outputs: ["synced"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
207
215
|
}
|
|
208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Axes3dComponent, decorators: [{
|
|
209
217
|
type: Component,
|
|
210
218
|
args: [{ selector: 'teta-axes-3d', imports: [CommonModule, NgtsText], schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if ({ axes: axes | async }; as data) {\n @for (tick of data.axes?.x; track tick) {\n <ngts-text\n [text]=\"tick.value + '-'\"\n [options]=\"{\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 [options]=\"{\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 [options]=\"{\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" }]
|
|
211
219
|
}], ctorParameters: () => [], propDecorators: { rotation: [{
|
|
@@ -214,9 +222,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
214
222
|
|
|
215
223
|
extend(THREE);
|
|
216
224
|
class Block3dComponent extends Base3dSeriesComponent {
|
|
217
|
-
constructor(
|
|
218
|
-
super(
|
|
219
|
-
this.svc = svc;
|
|
225
|
+
constructor() {
|
|
226
|
+
super();
|
|
220
227
|
this._alive = true;
|
|
221
228
|
this.Math = Math;
|
|
222
229
|
this.blocks = this.svc.scales.pipe(takeWhile(() => this._alive), map((scales) => {
|
|
@@ -268,19 +275,18 @@ class Block3dComponent extends Base3dSeriesComponent {
|
|
|
268
275
|
ngOnDestroy() {
|
|
269
276
|
this._alive = false;
|
|
270
277
|
}
|
|
271
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
272
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
278
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Block3dComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
279
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: Block3dComponent, isStandalone: true, selector: "teta-block-3d", usesInheritance: true, ngImport: i0, template: "@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", dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }, { kind: "component", type: NgtsText, selector: "ngts-text", inputs: ["text", "options"], outputs: ["synced"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
273
280
|
}
|
|
274
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Block3dComponent, decorators: [{
|
|
275
282
|
type: Component,
|
|
276
283
|
args: [{ selector: 'teta-block-3d', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgtArgs, NgtsText, AsyncPipe], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@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" }]
|
|
277
|
-
}], ctorParameters: () => [
|
|
284
|
+
}], ctorParameters: () => [] });
|
|
278
285
|
|
|
279
286
|
extend(THREE);
|
|
280
287
|
class Line3dComponent extends Base3dSeriesComponent {
|
|
281
|
-
constructor(
|
|
282
|
-
super(
|
|
283
|
-
this.svc = svc;
|
|
288
|
+
constructor() {
|
|
289
|
+
super();
|
|
284
290
|
this._alive = true;
|
|
285
291
|
this.Math = Math;
|
|
286
292
|
this.points = this.svc.scales.pipe(takeWhile(() => this._alive), map((scales) => {
|
|
@@ -297,13 +303,13 @@ class Line3dComponent extends Base3dSeriesComponent {
|
|
|
297
303
|
ngOnDestroy() {
|
|
298
304
|
this._alive = false;
|
|
299
305
|
}
|
|
300
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
301
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
306
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Line3dComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
307
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: Line3dComponent, isStandalone: true, selector: "teta-line-3d", usesInheritance: true, ngImport: i0, template: "@if ({ points: points | async }; as data) {\n @if (data?.points?.length) {\n <ngt-mesh>\n <ngts-line [options]=\"{color: series.color,lineWidth: 2}\"\n [points]=\"data.points\"></ngts-line>\n <ngt-line-basic-material></ngt-line-basic-material>\n </ngt-mesh>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NgtsLine, selector: "ngts-line", inputs: ["points", "options"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
302
308
|
}
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Line3dComponent, decorators: [{
|
|
304
310
|
type: Component,
|
|
305
311
|
args: [{ selector: 'teta-line-3d', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, NgtsLine, NgtArgs], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if ({ points: points | async }; as data) {\n @if (data?.points?.length) {\n <ngt-mesh>\n <ngts-line [options]=\"{color: series.color,lineWidth: 2}\"\n [points]=\"data.points\"></ngts-line>\n <ngt-line-basic-material></ngt-line-basic-material>\n </ngt-mesh>\n }\n}\n" }]
|
|
306
|
-
}], ctorParameters: () => [
|
|
312
|
+
}], ctorParameters: () => [] });
|
|
307
313
|
|
|
308
314
|
var Series3dType;
|
|
309
315
|
(function (Series3dType) {
|
|
@@ -333,10 +339,10 @@ class Series3dHost {
|
|
|
333
339
|
this._componentRef.injector.get(ChangeDetectorRef).detectChanges();
|
|
334
340
|
}
|
|
335
341
|
}
|
|
336
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
337
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
342
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Series3dHost, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
343
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: Series3dHost, isStandalone: true, selector: "[teta-series-3d-host]", inputs: { series: "series" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
338
344
|
}
|
|
339
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
345
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Series3dHost, decorators: [{
|
|
340
346
|
type: Component,
|
|
341
347
|
args: [{
|
|
342
348
|
selector: '[teta-series-3d-host]',
|
|
@@ -359,16 +365,16 @@ class SceneComponent {
|
|
|
359
365
|
setRotation() {
|
|
360
366
|
this.rotation = null;
|
|
361
367
|
this._cdr.detectChanges();
|
|
362
|
-
this.rotation = this.store
|
|
368
|
+
this.rotation = this.store().camera.rotation;
|
|
363
369
|
this._cdr.detectChanges();
|
|
364
370
|
}
|
|
365
371
|
ngOnInit() {
|
|
366
|
-
this.rotation = this.store
|
|
372
|
+
this.rotation = this.store().camera.rotation;
|
|
367
373
|
}
|
|
368
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
369
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
374
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SceneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
375
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SceneComponent, isStandalone: true, selector: "teta-scene", ngImport: i0, template: "@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", dependencies: [{ kind: "component", type: NgtsOrbitControls, selector: "ngts-orbit-controls", inputs: ["options"], outputs: ["changed", "started", "ended"] }, { kind: "ngmodule", type: CommonModule }, { 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"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
370
376
|
}
|
|
371
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SceneComponent, decorators: [{
|
|
372
378
|
type: Component,
|
|
373
379
|
args: [{ selector: 'teta-scene', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
374
380
|
NgtsOrbitControls,
|
|
@@ -382,10 +388,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
382
388
|
}], ctorParameters: () => [] });
|
|
383
389
|
|
|
384
390
|
class CanvasComponent {
|
|
385
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
386
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
391
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CanvasComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
392
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: CanvasComponent, isStandalone: true, selector: "teta-canvas", inputs: { scene: "scene", camera: "camera", data: "data" }, ngImport: i0, template: "@if (data?.series?.length) {\n <ngt-canvas [sceneGraph]=\"scene\" [camera]=\"camera\"> </ngt-canvas>\n} @else {\n <p>{{ data?.noDataText || 'no data' }}</p>\n}\n", styles: [":host{width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1$1.NgtCanvasImpl, selector: "ngt-canvas", inputs: ["gl", "size", "shadows", "legacy", "linear", "flat", "orthographic", "frameloop", "performance", "dpr", "raycaster", "scene", "camera", "events", "eventSource", "eventPrefix", "lookAt"], outputs: ["created", "pointerMissed"] }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
387
393
|
}
|
|
388
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CanvasComponent, decorators: [{
|
|
389
395
|
type: Component,
|
|
390
396
|
args: [{ selector: 'teta-canvas', schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgtCanvas, SceneComponent, CommonModule], template: "@if (data?.series?.length) {\n <ngt-canvas [sceneGraph]=\"scene\" [camera]=\"camera\"> </ngt-canvas>\n} @else {\n <p>{{ data?.noDataText || 'no data' }}</p>\n}\n", styles: [":host{width:100%;height:100%}\n"] }]
|
|
391
397
|
}], propDecorators: { scene: [{
|
|
@@ -418,10 +424,10 @@ class Canvas3dHost {
|
|
|
418
424
|
this._componentRef.instance.camera = this.camera;
|
|
419
425
|
this._componentRef.instance.data = this.data;
|
|
420
426
|
}
|
|
421
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
422
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
427
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Canvas3dHost, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
428
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", 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 }); }
|
|
423
429
|
}
|
|
424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
430
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: Canvas3dHost, decorators: [{
|
|
425
431
|
type: Component,
|
|
426
432
|
args: [{
|
|
427
433
|
selector: '[teta-canvas-3d-host]',
|
|
@@ -455,10 +461,10 @@ class ThreeChartComponent {
|
|
|
455
461
|
this.chartService.setData(this.data);
|
|
456
462
|
}
|
|
457
463
|
}
|
|
458
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
459
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
464
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ThreeChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
465
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: ThreeChartComponent, isStandalone: true, selector: "teta-three-chart", inputs: { data: "data" }, usesOnChanges: true, ngImport: i0, template: "<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", styles: [":host{width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Canvas3dHost, selector: "[teta-canvas-3d-host]", inputs: ["scene", "camera", "data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
460
466
|
}
|
|
461
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
467
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ThreeChartComponent, decorators: [{
|
|
462
468
|
type: Component,
|
|
463
469
|
args: [{ selector: 'teta-three-chart', schemas: [CUSTOM_ELEMENTS_SCHEMA], changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, Canvas3dHost], template: "<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", styles: [":host{width:100%;height:100%}\n"] }]
|
|
464
470
|
}], propDecorators: { data: [{
|
|
@@ -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> = 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 [options]=\"{\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 [options]=\"{\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 [options]=\"{\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 [options]=\"{color: series.color,lineWidth: 2}\"\n [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":"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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 const zDelta = ZMinMaxVal[1] - ZMinMaxVal[0];\n const xDelta = XMinMaxVal[1] - XMinMaxVal[0];\n const yDelta = YMinMaxVal[1] - YMinMaxVal[0];\n const maxDelta = Math.max(zDelta, xDelta, yDelta);\n ZMinMaxVal[1] = ZMinMaxVal[0] + maxDelta;\n XMinMaxVal[1] = XMinMaxVal[0] + maxDelta;\n YMinMaxVal[1] = YMinMaxVal[0] + maxDelta;\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, inject, 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 svc = inject(Chart3dService);\n protected ngtStore = injectStore();\n\n @Input()\n set series(series: Base3dSeries<T>) {\n this._series = series;\n }\n\n get series() {\n return this._series;\n }\n\n protected _series: Base3dSeries<T>;\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 { 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 super();\n this.scales = this.svc.scales;\n }\n\n ngOnInit(): void {\n setTimeout(() => {\n this.ngtStore().camera.zoom = 2;\n this.ngtStore().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 [options]=\"{\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 [options]=\"{\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 [options]=\"{\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 { 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 super();\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 { 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 super();\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 [options]=\"{color: series.color,lineWidth: 2}\"\n [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().camera.rotation;\n this._cdr.detectChanges();\n }\n\n ngOnInit(): void {\n this.rotation = this.store().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 } from 'angular-three';\nimport { SceneComponent } from '../scene/scene.component';\nimport { I3dChartConfig } from '../model/i-3d-chart-config';\nimport { NgtCanvas } from 'angular-three/dom';\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"],"mappings":"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"}
|