@lumiscaphe/ng-viewer 14.1.0 → 14.2.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.
- package/README.md +165 -139
- package/esm2020/lib/ng-viewer.component.mjs +8 -14
- package/fesm2015/lumiscaphe-ng-viewer.mjs +7 -13
- package/fesm2015/lumiscaphe-ng-viewer.mjs.map +1 -1
- package/fesm2020/lumiscaphe-ng-viewer.mjs +7 -13
- package/fesm2020/lumiscaphe-ng-viewer.mjs.map +1 -1
- package/lib/ng-viewer.component.d.ts +2 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,203 +7,229 @@ Official Angular component for Lumiscaphe 3D Viewer
|
|
|
7
7
|
```
|
|
8
8
|
$ npm i @lumiscaphe/ng-viewer
|
|
9
9
|
```
|
|
10
|
+
|
|
10
11
|
or
|
|
12
|
+
|
|
11
13
|
```
|
|
12
14
|
$ yarn add @lumiscaphe/ng-viewer
|
|
13
15
|
```
|
|
14
16
|
|
|
15
|
-
##
|
|
17
|
+
## Usage
|
|
16
18
|
|
|
17
|
-
Import
|
|
19
|
+
### Import
|
|
18
20
|
|
|
19
21
|
```javascript
|
|
20
22
|
import { NgViewerModule } from '@lumiscaphe/ng-viewer';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Basic
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
imports: [
|
|
25
|
-
...,
|
|
26
|
-
NgViewerModule
|
|
27
|
-
],
|
|
28
|
-
...
|
|
29
|
-
})
|
|
27
|
+
```html
|
|
28
|
+
<NgViewer [server]="server" [scene]="scene" [view]="view"></NgViewer>
|
|
30
29
|
```
|
|
31
30
|
|
|
32
|
-
Prepare Lumiscaphe Viewer data in your component:
|
|
33
31
|
```javascript
|
|
34
32
|
server = 'https://wr.lumiscaphe.com';
|
|
35
33
|
|
|
36
|
-
scene = [
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
34
|
+
scene = [
|
|
35
|
+
{
|
|
36
|
+
database: 'ee294840-5689-49b0-9edb-527598602df0',
|
|
37
|
+
configuration: 'Bin.Blue/Cabin.Yellow/Style.Design1/Wheels.Red'
|
|
38
|
+
}
|
|
39
|
+
];
|
|
41
40
|
|
|
42
41
|
view = {
|
|
43
42
|
mode: 'image',
|
|
44
|
-
camera: 'EXTER/1'
|
|
45
|
-
background: 'product',
|
|
43
|
+
camera: 'EXTER/1'
|
|
46
44
|
};
|
|
45
|
+
```
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
transition = {
|
|
50
|
-
fromPosition: 0,
|
|
51
|
-
toPosition: 2,
|
|
52
|
-
animation: {
|
|
53
|
-
name: 'Porte Gauche',
|
|
54
|
-
camera: '/Camera_Ext',
|
|
55
|
-
duration: 1,
|
|
56
|
-
reverse: false,
|
|
57
|
-
},
|
|
58
|
-
};
|
|
47
|
+
### Hotspot
|
|
59
48
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
format: 'jpeg',
|
|
63
|
-
quality: 80,
|
|
64
|
-
};
|
|
49
|
+
Hotspots are interactive elements that can be selected to engage in additional content or media.\
|
|
50
|
+
Hotspots are overlaid on top of the viewer to provide additional media for informational purposes.
|
|
65
51
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
52
|
+
```html
|
|
53
|
+
<NgViewer ... [hotspots]="hotspots">
|
|
54
|
+
<ng-template #hotspotTemplate let-hotspot let-index="index">
|
|
55
|
+
<ng-container *ngIf="hotspot.visibility === 'Visible'">
|
|
56
|
+
<button>{{ index + 1 }}</button>
|
|
57
|
+
</ng-container>
|
|
58
|
+
</ng-template>
|
|
59
|
+
</NgViewer>
|
|
60
|
+
```
|
|
71
61
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
62
|
+
```typescript
|
|
63
|
+
hotspots = [{ x: 0, y: 0, z: 0 }];
|
|
64
|
+
```
|
|
75
65
|
|
|
76
|
-
|
|
77
|
-
}
|
|
66
|
+
### Pick
|
|
78
67
|
|
|
79
|
-
|
|
80
|
-
}
|
|
68
|
+
Pick allow to retrieve information of a 3D point from a 2D point.
|
|
81
69
|
|
|
82
|
-
|
|
83
|
-
|
|
70
|
+
```html
|
|
71
|
+
<NgViewer ...></NgViewer>
|
|
84
72
|
|
|
85
|
-
|
|
86
|
-
|
|
73
|
+
<button type="button" (click)="pick()">Pick</button>
|
|
74
|
+
```
|
|
87
75
|
|
|
88
|
-
|
|
89
|
-
}
|
|
76
|
+
```typescript
|
|
77
|
+
import { NgViewerComponent } from '@lumiscaphe/ng-viewer';
|
|
90
78
|
|
|
91
|
-
|
|
79
|
+
...
|
|
92
80
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
81
|
+
@ViewChild(NgViewerComponent) viewer: NgViewerComponent;
|
|
82
|
+
@ViewChild(ngViewerComponent, { read: ElementRef }) viewerElement: ElementRef<HTMLDivElement>;
|
|
83
|
+
|
|
84
|
+
...
|
|
85
|
+
|
|
86
|
+
pick(): void {
|
|
87
|
+
this.viewerElement.nativeElement.addEventListener('click', e => {
|
|
88
|
+
const position = { x: e.clientX, y: e.clientY };
|
|
89
|
+
this.viewer.pick(position).then(pickResult => console.log(pickResult))
|
|
90
|
+
}, { once: true });
|
|
91
|
+
};
|
|
96
92
|
```
|
|
97
93
|
|
|
98
|
-
##
|
|
94
|
+
## API
|
|
99
95
|
|
|
100
|
-
|
|
101
|
-
* `database` : product 3D model guid string
|
|
102
|
-
* `configuration` : product configuration as a string of concatenated values separated by a slash
|
|
103
|
-
* `animations` : product animations as an array of string
|
|
96
|
+
### Properties
|
|
104
97
|
|
|
105
|
-
|
|
98
|
+
| Name | Type | Default | Description |
|
|
99
|
+
| -------------- | ------------ | ------------------------------------------- | -------------------------------- |
|
|
100
|
+
| **server** | `string` | `undefined` | WebRender URL to use. |
|
|
101
|
+
| **scene** | `Scene` | `undefined` | Scene to render. |
|
|
102
|
+
| **view** | `View` | `undefined` | View to render. |
|
|
103
|
+
| **api** | `'v1'\|'v2'` | `'v1'` | API version to use. |
|
|
104
|
+
| **encoder** | `Encoder` | `{ format: 'jpeg', quality: 80 }` | Image encoder to use. |
|
|
105
|
+
| **parameters** | `Parameters` | `{ antialiasing: false, superSampling: 2 }` | Rendering parameters to use. |
|
|
106
|
+
| **hotspots** | `Vector3D[]` | `undefined` | Hotspot array to display. |
|
|
107
|
+
| **vrcube** | `VRCube` | `undefined` | VRCube point of view to display. |
|
|
108
|
+
| **vrobject** | `VRObject` | `undefined` | VRObject position to display. |
|
|
106
109
|
|
|
107
|
-
|
|
110
|
+
### Emitters
|
|
108
111
|
|
|
109
|
-
|
|
112
|
+
| Name | Parameters | Description |
|
|
113
|
+
| ------------------------- | -------------------- | ------------------------------------------------------ |
|
|
114
|
+
| **onLoadStart** | `progress: number` | Callback to invoke when load starts. |
|
|
115
|
+
| **onLoadProgress** | `progress: number` | Callback to invoke when load makes progress. |
|
|
116
|
+
| **onLoadEnd** | `progress: number` | Callback to invoke when load ends. |
|
|
117
|
+
| **onLoadError** | `Error` | Callback to invoke when load failed. |
|
|
118
|
+
| **onInteraction** | `VRCube \| VRObject` | Callback to invoke when interaction happened. |
|
|
119
|
+
| **onVrcubeInteraction** | `VRCube` | Callback to invoke when VRCube interaction happened. |
|
|
120
|
+
| **onVrobjectInteraction** | `VRObject` | Callback to invoke when VRObject interaction happened. |
|
|
110
121
|
|
|
111
|
-
|
|
122
|
+
### Methods
|
|
112
123
|
|
|
113
|
-
|
|
124
|
+
| Name | Parameters | Description | Returns |
|
|
125
|
+
| ------------ | --------------------------------- | ------------------------------------ | -------------------- |
|
|
126
|
+
| **pick** | `position: Position` | Get the 3D point from a 2D position. | `PickResult` |
|
|
127
|
+
| **snapshot** | `type: string`, `quality: number` | Get a snapshot of the viewer. | `string` - Image URL |
|
|
114
128
|
|
|
115
|
-
|
|
116
|
-
const scene = [{
|
|
117
|
-
database: 'ee294840-5689-49b0-9edb-527598602df0',
|
|
118
|
-
configuration: 'Bin.Blue/Cabin.Yellow/Style.Design1/Wheels.Red/ENV.ALPES',
|
|
119
|
-
animations: ['LeftDoor'],
|
|
120
|
-
}];
|
|
121
|
-
```
|
|
129
|
+
### Templates
|
|
122
130
|
|
|
123
|
-
|
|
131
|
+
| Name | Parameters | Description |
|
|
132
|
+
| ------------------- | ------------------------------------------------ | ------------------------ |
|
|
133
|
+
| **hotspotTemplate** | `context: { $implicit: Hotspot, index: number }` | Custom hotspot template. |
|
|
124
134
|
|
|
125
|
-
|
|
135
|
+
### Interfaces
|
|
126
136
|
|
|
127
|
-
|
|
128
|
-
const decorProduct = {
|
|
129
|
-
database: '82c1f7e8-9ae4-4f00-b45c-c857e21a954f',
|
|
130
|
-
translation: { x: 0, y: -0.12, z: 0 },
|
|
131
|
-
};
|
|
137
|
+
#### Scene
|
|
132
138
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
| Name | Type | Description |
|
|
140
|
+
| ----------------- | ---------- | -------------------------------------- |
|
|
141
|
+
| **database** | `string` | Database id of the 3D model. |
|
|
142
|
+
| **configuration** | `string` | Product configuration of the 3D model. |
|
|
143
|
+
| **animations** | `string[]` | Animations of the 3D model |
|
|
138
144
|
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
#### View
|
|
146
|
+
|
|
147
|
+
| Name | Type | Description |
|
|
148
|
+
| ---------- | ------------------------------- | ---------------------------------------- |
|
|
149
|
+
| **mode** | `'image'\|'vrcube'\|'vrobject'` | Mode of the view. |
|
|
150
|
+
| **camera** | `string` | Camera or camera group name of the view. |
|
|
151
|
+
|
|
152
|
+
#### Encoder
|
|
153
|
+
|
|
154
|
+
| Name | Type | Description |
|
|
155
|
+
| ----------- | -------- | --------------------------------- |
|
|
156
|
+
| **format** | `'jpeg'` | Format of the encoder. |
|
|
157
|
+
| **quality** | `number` | Quality of the encoder (0 - 100). |
|
|
158
|
+
|
|
159
|
+
#### Parameters
|
|
160
|
+
|
|
161
|
+
| Name | Type | Description |
|
|
162
|
+
| ----------------- | ------ | ---------------------------------------------- |
|
|
163
|
+
| **superSampling** | number | Super sampling to use for antialiasing (1 -2). |
|
|
141
164
|
|
|
142
|
-
|
|
143
|
-
* `database` : decor product 3D model guid string
|
|
144
|
-
* `translation` : decor product 3D position (e.g. decorDeltaAltitude)
|
|
165
|
+
#### Hotspot
|
|
145
166
|
|
|
146
|
-
|
|
167
|
+
| Name | Type | Description |
|
|
168
|
+
| ------------ | ----------- | --------------------------------------------------------------- |
|
|
169
|
+
| `id` | `string` | Id of the hotspot (when hotspot is provided by the 3D model). |
|
|
170
|
+
| `name` | `string` | Name of the hotspot (when hotspot is provided by the 3D model). |
|
|
171
|
+
| `position2D` | `Vector2D` | 2D position of the hotspot in the viewer. |
|
|
172
|
+
| `position3D` | `Vector3D` | 3D position of the hotspot. |
|
|
173
|
+
| `visibility` | `Visiblity` | Visiblity of the hotspot. |
|
|
147
174
|
|
|
148
|
-
|
|
175
|
+
##### Visibility
|
|
149
176
|
|
|
150
|
-
|
|
177
|
+
| Name | Description |
|
|
178
|
+
| -------------- | ---------------------------------------------- |
|
|
179
|
+
| `Visible` | Hotspot found and visible. |
|
|
180
|
+
| `Occluded` | Hotspot found but occluded by another surface. |
|
|
181
|
+
| `OutOfFrustum` | Hotspot not found. |
|
|
151
182
|
|
|
152
|
-
|
|
153
|
-
* `mode` : `image`
|
|
154
|
-
* `camera` : camera path
|
|
155
|
-
* `background` : view background mode (`product`, `transparent`, `gradient`)
|
|
183
|
+
#### PickResult
|
|
156
184
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
185
|
+
| Name | Type | Description |
|
|
186
|
+
| ----------- | ---------- | --------------------------------------- |
|
|
187
|
+
| **product** | `string` | Product id of the picked point. |
|
|
188
|
+
| **surface** | `Surface` | Surface of the picked point. |
|
|
189
|
+
| **normal** | `Vector3D` | Normal coordinates of the picked point. |
|
|
190
|
+
| **point** | `Vector3D` | Point coordinates of the picked point. |
|
|
191
|
+
| **uvw** | `UVW` | UV coordinates of the picked point. |
|
|
161
192
|
|
|
162
|
-
|
|
163
|
-
* `mode` : `vrobject`
|
|
164
|
-
* `animation` : animation name
|
|
165
|
-
* `camera` : camera path
|
|
166
|
-
* `frames` : number of frames
|
|
167
|
-
* `loop` : whether animation loops or not
|
|
168
|
-
* `background` : view background mode (`product`, `transparent`, `gradient`)
|
|
193
|
+
##### Surface
|
|
169
194
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
195
|
+
| Name | Type | Description |
|
|
196
|
+
| -------- | ---------- | ------------------------ |
|
|
197
|
+
| **id** | `string` | Id of the surface. |
|
|
198
|
+
| **name** | `string` | Name of the surface. |
|
|
199
|
+
| **tags** | `string[]` | Tag list of the surface. |
|
|
200
|
+
|
|
201
|
+
##### UVW
|
|
174
202
|
|
|
175
|
-
|
|
203
|
+
| Name | Type | Description |
|
|
204
|
+
| ----- | -------- | ------------- |
|
|
205
|
+
| **u** | `number` | U coordinate. |
|
|
206
|
+
| **v** | `number` | V coordinate. |
|
|
207
|
+
| **w** | `number` | W coordinate. |
|
|
176
208
|
|
|
177
|
-
|
|
178
|
-
* `fromPosition` : go to specific vrobject image at the beginning - optional
|
|
179
|
-
* `toPosition` : go to specific vrobject image at the end - optional
|
|
180
|
-
* `animation` :
|
|
181
|
-
* `name`: animation name
|
|
182
|
-
* `camera`: camera path to use for animation
|
|
183
|
-
* `duration`: animation duration in seconds
|
|
184
|
-
* `reverse`: whether to reverse animation direction
|
|
209
|
+
#### Vector2D
|
|
185
210
|
|
|
186
|
-
|
|
211
|
+
| Name | Type | Description |
|
|
212
|
+
| ----- | -------- | ------------- |
|
|
213
|
+
| **x** | `number` | X coordinate. |
|
|
214
|
+
| **y** | `number` | Y coordinate. |
|
|
187
215
|
|
|
188
|
-
|
|
189
|
-
* `format` : encoder format (`jpeg`, `png`, `webp`)
|
|
190
|
-
* `quality` : encoder quality (0-100 for `jpeg` and `webp` and 0-9 for `png`)
|
|
216
|
+
#### Vector3D
|
|
191
217
|
|
|
192
|
-
|
|
218
|
+
| Name | Type | Description |
|
|
219
|
+
| ----- | -------- | ------------- |
|
|
220
|
+
| **x** | `number` | X coordinate. |
|
|
221
|
+
| **y** | `number` | Y coordinate. |
|
|
222
|
+
| **z** | `number` | Z coordinate. |
|
|
193
223
|
|
|
194
|
-
|
|
195
|
-
* `antialiasing` : whether software antialiasing is enabled or not
|
|
196
|
-
* `superSampling` : super sampling coefficient 1-4
|
|
224
|
+
#### VRCube
|
|
197
225
|
|
|
198
|
-
|
|
226
|
+
| Name | Type | Description |
|
|
227
|
+
| ---- | ------------- | ---------------------------------------------- |
|
|
228
|
+
| pov | `PointOfView` | Point of view of the VRCube widget. |
|
|
229
|
+
| fov | `number` | Field of view in degrees of the VRCube widget. |
|
|
199
230
|
|
|
200
|
-
|
|
231
|
+
#### VRObject
|
|
201
232
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
* `onLoadEnd` : event sent on load end
|
|
206
|
-
* `onLoadError` : event sent on load error
|
|
207
|
-
* `onInteraction` : event sent on vrcube or vrobject interaction
|
|
208
|
-
* `onVrcubeInteraction` : event sent on vrcube interaction
|
|
209
|
-
* `onVrobjectInteraction` : event sent on vrobject interaction
|
|
233
|
+
| Name | Type | Description |
|
|
234
|
+
| ---------- | -------- | ---------------------------------- |
|
|
235
|
+
| `position` | `number` | Image inde of the VRObject widget. |
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { Viewer } from '@lumiscaphe/viewer';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common";
|
|
5
5
|
export class NgViewerComponent {
|
|
6
6
|
constructor() {
|
|
7
7
|
this.hotspots2D = [];
|
|
8
|
-
this.hotspotTemplateRef = null;
|
|
9
8
|
this.onLoadStart = new EventEmitter();
|
|
10
9
|
this.onLoadProgress = new EventEmitter();
|
|
11
10
|
this.onLoadEnd = new EventEmitter();
|
|
@@ -13,6 +12,7 @@ export class NgViewerComponent {
|
|
|
13
12
|
this.onInteraction = new EventEmitter();
|
|
14
13
|
this.onVrcubeInteraction = new EventEmitter();
|
|
15
14
|
this.onVrobjectInteraction = new EventEmitter();
|
|
15
|
+
this.hotspotTemplateRef = null;
|
|
16
16
|
}
|
|
17
17
|
ngAfterViewInit() {
|
|
18
18
|
this.viewer = new Viewer(this.container.nativeElement, {
|
|
@@ -101,13 +101,6 @@ export class NgViewerComponent {
|
|
|
101
101
|
snapshot(type, quality) {
|
|
102
102
|
return this.viewer?.snapshot(type, quality);
|
|
103
103
|
}
|
|
104
|
-
hotspotStyle(hotspot) {
|
|
105
|
-
return {
|
|
106
|
-
position: 'absolute',
|
|
107
|
-
top: hotspot.position2D.y + 'px',
|
|
108
|
-
left: hotspot.position2D.x + 'px'
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
104
|
onHotspotsChange(hotspots) {
|
|
112
105
|
this.hotspots2D = hotspots;
|
|
113
106
|
if (this.hotspotsFilter !== undefined) {
|
|
@@ -116,10 +109,10 @@ export class NgViewerComponent {
|
|
|
116
109
|
}
|
|
117
110
|
}
|
|
118
111
|
NgViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
119
|
-
NgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: NgViewerComponent, selector: "NgViewer", inputs: { server: "server", api: "api", fit: "fit", scene: "scene", encoder: "encoder", parameters: "parameters", view: "view", vrcube: "vrcube", vrobject: "vrobject", hotspots: "hotspots",
|
|
112
|
+
NgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: NgViewerComponent, selector: "NgViewer", inputs: { server: "server", api: "api", fit: "fit", scene: "scene", encoder: "encoder", parameters: "parameters", view: "view", vrcube: "vrcube", vrobject: "vrobject", hotspots: "hotspots", hotspotsFilter: "hotspotsFilter" }, outputs: { onLoadStart: "onLoadStart", onLoadProgress: "onLoadProgress", onLoadEnd: "onLoadEnd", onLoadError: "onLoadError", onInteraction: "onInteraction", onVrcubeInteraction: "onVrcubeInteraction", onVrobjectInteraction: "onVrobjectInteraction" }, queries: [{ propertyName: "hotspotTemplateRef", first: true, predicate: ["hotspotTemplate"], descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex:1 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
120
113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgViewerComponent, decorators: [{
|
|
121
114
|
type: Component,
|
|
122
|
-
args: [{ selector: 'NgViewer', template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"
|
|
115
|
+
args: [{ selector: 'NgViewer', template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex:1 0 auto}\n"] }]
|
|
123
116
|
}], propDecorators: { server: [{
|
|
124
117
|
type: Input
|
|
125
118
|
}], api: [{
|
|
@@ -140,8 +133,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
140
133
|
type: Input
|
|
141
134
|
}], hotspots: [{
|
|
142
135
|
type: Input
|
|
143
|
-
}], hotspotTemplateRef: [{
|
|
144
|
-
type: Input
|
|
145
136
|
}], hotspotsFilter: [{
|
|
146
137
|
type: Input
|
|
147
138
|
}], onLoadStart: [{
|
|
@@ -158,8 +149,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
158
149
|
type: Output
|
|
159
150
|
}], onVrobjectInteraction: [{
|
|
160
151
|
type: Output
|
|
152
|
+
}], hotspotTemplateRef: [{
|
|
153
|
+
type: ContentChild,
|
|
154
|
+
args: ['hotspotTemplate']
|
|
161
155
|
}], container: [{
|
|
162
156
|
type: ViewChild,
|
|
163
157
|
args: ['container']
|
|
164
158
|
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpZXdlci9zcmMvbGliL25nLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aWV3ZXIvc3JjL2xpYi9uZy12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUE4QixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0osT0FBTyxFQUE2QyxNQUFNLEVBQXlDLE1BQU0sb0JBQW9CLENBQUM7OztBQU85SCxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBUVMsZUFBVSxHQUFjLEVBQUUsQ0FBQztRQVl6Qix1QkFBa0IsR0FBNEIsSUFBSSxDQUFDO1FBR2xELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7S0E2SHREO0lBekhDLGVBQWU7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO1lBQ3JELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO1lBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU87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Q0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQzs7K0dBcEpVLGlCQUFpQjttR0FBakIsaUJBQWlCLG9yQkNSOUIsd1pBU0E7NEZERGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFVBQVU7OEJBU1gsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVuY29kZXIsIEhvdHNwb3QsIFBhcmFtZXRlcnMsIFNjZW5lLCBWaWV3LCBWaWV3ZXIsIFdSQVBJdjIsIFdpZGdldFZSQ3ViZSwgV2lkZ2V0VlJPYmplY3QgfSBmcm9tICdAbHVtaXNjYXBoZS92aWV3ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdOZ1ZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZy12aWV3ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ1ZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHVibGljIHZpZXdlcjogVmlld2VyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBob3RzcG90czJEOiBIb3RzcG90W10gPSBbXTtcblxuICBASW5wdXQoKSBzZXJ2ZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYXBpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZpdDogJ2NvbnRhaW4nIHwgJ2NvdmVyJyB8ICdmaWxsJyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2NlbmU6IFNjZW5lIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBlbmNvZGVyOiBFbmNvZGVyIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSB2aWV3OiBWaWV3IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSB2cmN1YmU6IFBhcnRpYWw8V2lkZ2V0VlJDdWJlPiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgdnJvYmplY3Q6IFBhcnRpYWw8V2lkZ2V0VlJPYmplY3Q+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBob3RzcG90czogQXJyYXk8c3RyaW5nIHwgV1JBUEl2Mi5WZWN0b3IzRD4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGhvdHNwb3RUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBob3RzcG90c0ZpbHRlcjogKChob3RzcG90czogSG90c3BvdFtdKSA9PiBIb3RzcG90W10pIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKSBvbkxvYWRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uTG9hZFByb2dyZXNzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Mb2FkRW5kID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Mb2FkRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkludGVyYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25WcmN1YmVJbnRlcmFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uVnJvYmplY3RJbnRlcmFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnZpZXdlciA9IG5ldyBWaWV3ZXIodGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudCwge1xuICAgICAgc2VydmVyOiB0aGlzLnNlcnZlcixcbiAgICAgIGFwaTogdGhpcy5hcGkgfHwgJ3YxJyxcbiAgICAgIGZpdDogdGhpcy5maXQgfHwgJ2NvdmVyJyxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBvbkxvYWRTdGFydDogKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkxvYWRTdGFydC5lbWl0KC4uLmFyZ3MpO1xuICAgICAgICB9LFxuICAgICAgICBvbkxvYWRQcm9ncmVzczogKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkxvYWRQcm9ncmVzcy5lbWl0KC4uLmFyZ3MpO1xuICAgICAgICB9LFxuICAgICAgICBvbkxvYWRFbmQ6ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIHRoaXMub25Mb2FkRW5kLmVtaXQoLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uTG9hZEVycm9yOiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICB0aGlzLm9uTG9hZEVycm9yLmVtaXQoLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uSG90c3BvdHNDaGFuZ2U6IHRoaXMub25Ib3RzcG90c0NoYW5nZS5iaW5kKHRoaXMpLFxuICAgICAgICBvbkludGVyYWN0aW9uOiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICB0aGlzLm9uSW50ZXJhY3Rpb24uZW1pdCguLi5hcmdzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25WcmN1YmVJbnRlcmFjdGlvbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblZyY3ViZUludGVyYWN0aW9uLmVtaXQoLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uVnJvYmplY3RJbnRlcmFjdGlvbjogKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5vblZyb2JqZWN0SW50ZXJhY3Rpb24uZW1pdCguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc2NlbmUpIHtcbiAgICAgIHRoaXMudmlld2VyLmxvYWQodGhpcy5zY2VuZSkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVuY29kZXIpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldEVuY29kZXIodGhpcy5lbmNvZGVyKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG90c3BvdHMpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldEhvdHNwb3RzKHRoaXMuaG90c3BvdHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldFBhcmFtZXRlcnModGhpcy5wYXJhbWV0ZXJzKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlldykge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0Vmlldyh0aGlzLnZpZXcpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52cmN1YmUpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldFZyY3ViZSh0aGlzLnZyY3ViZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudnJvYmplY3QpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldFZyb2JqZWN0KHRoaXMudnJvYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudmlld2VyPy5kZXN0cm95KCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCF0aGlzLnZpZXdlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydzY2VuZSddICYmIGNoYW5nZXNbJ3NjZW5lJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdlci5sb2FkKGNoYW5nZXNbJ3NjZW5lJ10uY3VycmVudFZhbHVlKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2VuY29kZXInXSAmJiBjaGFuZ2VzWydlbmNvZGVyJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdlci5zZXRFbmNvZGVyKGNoYW5nZXNbJ2VuY29kZXInXS5jdXJyZW50VmFsdWUpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snaG90c3BvdHMnXSAmJiBjaGFuZ2VzWydob3RzcG90cyddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0SG90c3BvdHMoY2hhbmdlc1snaG90c3BvdHMnXS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydwYXJhbWV0ZXJzJ10gJiYgY2hhbmdlc1sncGFyYW1ldGVycyddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0UGFyYW1ldGVycyhjaGFuZ2VzWydwYXJhbWV0ZXJzJ10uY3VycmVudFZhbHVlKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3ZpZXcnXSAmJiBjaGFuZ2VzWyd2aWV3J10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdlci5zZXRWaWV3KGNoYW5nZXNbJ3ZpZXcnXS5jdXJyZW50VmFsdWUpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sndnJjdWJlJ10gJiYgY2hhbmdlc1sndnJjdWJlJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdlci5zZXRWcmN1YmUoY2hhbmdlc1sndnJjdWJlJ10uY3VycmVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sndnJvYmplY3QnXSAmJiBjaGFuZ2VzWyd2cm9iamVjdCddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0VnJvYmplY3QoY2hhbmdlc1sndnJvYmplY3QnXS5jdXJyZW50VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBpY2socG9zaXRpb246IFdSQVBJdjIuVmVjdG9yMkQpOiBQcm9taXNlPFdSQVBJdjIuUGlja1Jlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLnZpZXdlcj8ucGljayhwb3NpdGlvbik7XG4gIH1cblxuICBzbmFwc2hvdCh0eXBlOiBzdHJpbmcsIHF1YWxpdHk6IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmlld2VyPy5zbmFwc2hvdCh0eXBlLCBxdWFsaXR5KTtcbiAgfVxuXG4gIGhvdHNwb3RTdHlsZShob3RzcG90OiBIb3RzcG90KTogeyBsZWZ0OiBzdHJpbmc7IHRvcDogc3RyaW5nOyBwb3NpdGlvbjogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRvcDogaG90c3BvdC5wb3NpdGlvbjJELnkgKyAncHgnLFxuICAgICAgbGVmdDogaG90c3BvdC5wb3NpdGlvbjJELnggKyAncHgnXG4gICAgfTtcbiAgfVxuXG4gIG9uSG90c3BvdHNDaGFuZ2UoaG90c3BvdHM6IEhvdHNwb3RbXSk6IHZvaWQge1xuICAgIHRoaXMuaG90c3BvdHMyRCA9IGhvdHNwb3RzO1xuXG4gICAgaWYgKHRoaXMuaG90c3BvdHNGaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5ob3RzcG90czJEID0gdGhpcy5ob3RzcG90c0ZpbHRlcih0aGlzLmhvdHNwb3RzMkQpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAjY29udGFpbmVyPjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdy0xMDAgaC0xMDBcIiBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lXCIgKm5nSWY9XCJob3RzcG90czJELmxlbmd0aFwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBob3RzcG90IG9mIGhvdHNwb3RzMkQ7IGluZGV4IGFzIGlcIj5cbiAgICA8ZGl2IFtuZ1N0eWxlXT1cImhvdHNwb3RTdHlsZShob3RzcG90KVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhvdHNwb3RUZW1wbGF0ZVJlZjsgY29udGV4dDogeyAkaW1wbGljaXQ6IGhvdHNwb3QsIGluZGV4OiBpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpZXdlci9zcmMvbGliL25nLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aWV3ZXIvc3JjL2xpYi9uZy12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXdCLE1BQU0sRUFBOEIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sRUFBNkMsTUFBTSxFQUF5QyxNQUFNLG9CQUFvQixDQUFDOzs7QUFPOUgsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQVFTLGVBQVUsR0FBYyxFQUFFLENBQUM7UUFjeEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwQix1QkFBa0IsR0FBNEIsSUFBSSxDQUFDO0tBcUhyRjtJQWpIQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRTtZQUNyRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSTtZQUNyQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcs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QUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBRTBCLGtCQUFrQjtzQkFBbEQsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBRVAsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVuY29kZXIsIEhvdHNwb3QsIFBhcmFtZXRlcnMsIFNjZW5lLCBWaWV3LCBWaWV3ZXIsIFdSQVBJdjIsIFdpZGdldFZSQ3ViZSwgV2lkZ2V0VlJPYmplY3QgfSBmcm9tICdAbHVtaXNjYXBoZS92aWV3ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdOZ1ZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZy12aWV3ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ1ZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHVibGljIHZpZXdlcjogVmlld2VyIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBob3RzcG90czJEOiBIb3RzcG90W10gPSBbXTtcblxuICBASW5wdXQoKSBzZXJ2ZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYXBpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGZpdDogJ2NvbnRhaW4nIHwgJ2NvdmVyJyB8ICdmaWxsJyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2NlbmU6IFNjZW5lIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBlbmNvZGVyOiBFbmNvZGVyIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSB2aWV3OiBWaWV3IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSB2cmN1YmU6IFBhcnRpYWw8V2lkZ2V0VlJDdWJlPiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgdnJvYmplY3Q6IFBhcnRpYWw8V2lkZ2V0VlJPYmplY3Q+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBob3RzcG90czogQXJyYXk8c3RyaW5nIHwgV1JBUEl2Mi5WZWN0b3IzRD4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGhvdHNwb3RzRmlsdGVyOiAoKGhvdHNwb3RzOiBIb3RzcG90W10pID0+IEhvdHNwb3RbXSkgfCB1bmRlZmluZWQ7XG5cbiAgQE91dHB1dCgpIG9uTG9hZFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Mb2FkUHJvZ3Jlc3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkxvYWRFbmQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkxvYWRFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uSW50ZXJhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblZyY3ViZUludGVyYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Wcm9iamVjdEludGVyYWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBDb250ZW50Q2hpbGQoJ2hvdHNwb3RUZW1wbGF0ZScpIGhvdHNwb3RUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudmlld2VyID0gbmV3IFZpZXdlcih0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB7XG4gICAgICBzZXJ2ZXI6IHRoaXMuc2VydmVyLFxuICAgICAgYXBpOiB0aGlzLmFwaSB8fCAndjEnLFxuICAgICAgZml0OiB0aGlzLmZpdCB8fCAnY292ZXInLFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIG9uTG9hZFN0YXJ0OiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICB0aGlzLm9uTG9hZFN0YXJ0LmVtaXQoLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uTG9hZFByb2dyZXNzOiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICB0aGlzLm9uTG9hZFByb2dyZXNzLmVtaXQoLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uTG9hZEVuZDogKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5vbkxvYWRFbmQuZW1pdCguLi5hcmdzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Mb2FkRXJyb3I6ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIHRoaXMub25Mb2FkRXJyb3IuZW1pdCguLi5hcmdzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Ib3RzcG90c0NoYW5nZTogdGhpcy5vbkhvdHNwb3RzQ2hhbmdlLmJpbmQodGhpcyksXG4gICAgICAgIG9uSW50ZXJhY3Rpb246ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgIHRoaXMub25JbnRlcmFjdGlvbi5lbWl0KC4uLmFyZ3MpO1xuICAgICAgICB9LFxuICAgICAgICBvblZyY3ViZUludGVyYWN0aW9uOiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICB0aGlzLm9uVnJjdWJlSW50ZXJhY3Rpb24uZW1pdCguLi5hcmdzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Wcm9iamVjdEludGVyYWN0aW9uOiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgICB0aGlzLm9uVnJvYmplY3RJbnRlcmFjdGlvbi5lbWl0KC4uLmFyZ3MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zY2VuZSkge1xuICAgICAgdGhpcy52aWV3ZXIubG9hZCh0aGlzLnNjZW5lKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5jb2Rlcikge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0RW5jb2Rlcih0aGlzLmVuY29kZXIpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ob3RzcG90cykge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0SG90c3BvdHModGhpcy5ob3RzcG90cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyYW1ldGVycykge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0UGFyYW1ldGVycyh0aGlzLnBhcmFtZXRlcnMpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52aWV3KSB7XG4gICAgICB0aGlzLnZpZXdlci5zZXRWaWV3KHRoaXMudmlldykuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZyY3ViZSkge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0VnJjdWJlKHRoaXMudnJjdWJlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy52cm9iamVjdCkge1xuICAgICAgdGhpcy52aWV3ZXIuc2V0VnJvYmplY3QodGhpcy52cm9iamVjdCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52aWV3ZXI/LmRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoIXRoaXMudmlld2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3NjZW5lJ10gJiYgY2hhbmdlc1snc2NlbmUnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudmlld2VyLmxvYWQoY2hhbmdlc1snc2NlbmUnXS5jdXJyZW50VmFsdWUpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snZW5jb2RlciddICYmIGNoYW5nZXNbJ2VuY29kZXInXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldEVuY29kZXIoY2hhbmdlc1snZW5jb2RlciddLmN1cnJlbnRWYWx1ZSkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydob3RzcG90cyddICYmIGNoYW5nZXNbJ2hvdHNwb3RzJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdlci5zZXRIb3RzcG90cyhjaGFuZ2VzWydob3RzcG90cyddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3BhcmFtZXRlcnMnXSAmJiBjaGFuZ2VzWydwYXJhbWV0ZXJzJ10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdlci5zZXRQYXJhbWV0ZXJzKGNoYW5nZXNbJ3BhcmFtZXRlcnMnXS5jdXJyZW50VmFsdWUpLmNhdGNoKCgpID0+IHt9KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sndmlldyddICYmIGNoYW5nZXNbJ3ZpZXcnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldFZpZXcoY2hhbmdlc1sndmlldyddLmN1cnJlbnRWYWx1ZSkuY2F0Y2goKCkgPT4ge30pO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWyd2cmN1YmUnXSAmJiBjaGFuZ2VzWyd2cmN1YmUnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudmlld2VyLnNldFZyY3ViZShjaGFuZ2VzWyd2cmN1YmUnXS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWyd2cm9iamVjdCddICYmIGNoYW5nZXNbJ3Zyb2JqZWN0J10uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdlci5zZXRWcm9iamVjdChjaGFuZ2VzWyd2cm9iamVjdCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGljayhwb3NpdGlvbjogV1JBUEl2Mi5WZWN0b3IyRCk6IFByb21pc2U8V1JBUEl2Mi5QaWNrUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudmlld2VyPy5waWNrKHBvc2l0aW9uKTtcbiAgfVxuXG4gIHNuYXBzaG90KHR5cGU6IHN0cmluZywgcXVhbGl0eTogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy52aWV3ZXI/LnNuYXBzaG90KHR5cGUsIHF1YWxpdHkpO1xuICB9XG5cbiAgb25Ib3RzcG90c0NoYW5nZShob3RzcG90czogSG90c3BvdFtdKTogdm9pZCB7XG4gICAgdGhpcy5ob3RzcG90czJEID0gaG90c3BvdHM7XG5cbiAgICBpZiAodGhpcy5ob3RzcG90c0ZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmhvdHNwb3RzMkQgPSB0aGlzLmhvdHNwb3RzRmlsdGVyKHRoaXMuaG90c3BvdHMyRCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNjb250YWluZXI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMFwiIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmVcIiAqbmdJZj1cImhvdHNwb3RzMkQubGVuZ3RoXCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGhvdHNwb3Qgb2YgaG90c3BvdHMyRDsgaW5kZXggYXMgaVwiPlxuICAgIDxkaXYgW25nU3R5bGVdPVwieyBwb3NpdGlvbjogJ2Fic29sdXRlJywgdG9wOiBob3RzcG90LnBvc2l0aW9uMkQueSArICdweCcsIGxlZnQ6IGhvdHNwb3QucG9zaXRpb24yRC54ICsgJ3B4JyB9XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaG90c3BvdFRlbXBsYXRlUmVmOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaG90c3BvdCwgaW5kZXg6IGkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { EventEmitter, Component, Input, Output, ViewChild, NgModule } from '@angular/core';
|
|
3
|
+
import { EventEmitter, Component, Input, Output, ContentChild, ViewChild, NgModule } from '@angular/core';
|
|
4
4
|
import { Viewer } from '@lumiscaphe/viewer';
|
|
5
5
|
import * as i1 from '@angular/common';
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
@@ -8,7 +8,6 @@ import { CommonModule } from '@angular/common';
|
|
|
8
8
|
class NgViewerComponent {
|
|
9
9
|
constructor() {
|
|
10
10
|
this.hotspots2D = [];
|
|
11
|
-
this.hotspotTemplateRef = null;
|
|
12
11
|
this.onLoadStart = new EventEmitter();
|
|
13
12
|
this.onLoadProgress = new EventEmitter();
|
|
14
13
|
this.onLoadEnd = new EventEmitter();
|
|
@@ -16,6 +15,7 @@ class NgViewerComponent {
|
|
|
16
15
|
this.onInteraction = new EventEmitter();
|
|
17
16
|
this.onVrcubeInteraction = new EventEmitter();
|
|
18
17
|
this.onVrobjectInteraction = new EventEmitter();
|
|
18
|
+
this.hotspotTemplateRef = null;
|
|
19
19
|
}
|
|
20
20
|
ngAfterViewInit() {
|
|
21
21
|
this.viewer = new Viewer(this.container.nativeElement, {
|
|
@@ -109,13 +109,6 @@ class NgViewerComponent {
|
|
|
109
109
|
var _a;
|
|
110
110
|
return (_a = this.viewer) === null || _a === void 0 ? void 0 : _a.snapshot(type, quality);
|
|
111
111
|
}
|
|
112
|
-
hotspotStyle(hotspot) {
|
|
113
|
-
return {
|
|
114
|
-
position: 'absolute',
|
|
115
|
-
top: hotspot.position2D.y + 'px',
|
|
116
|
-
left: hotspot.position2D.x + 'px'
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
112
|
onHotspotsChange(hotspots) {
|
|
120
113
|
this.hotspots2D = hotspots;
|
|
121
114
|
if (this.hotspotsFilter !== undefined) {
|
|
@@ -124,10 +117,10 @@ class NgViewerComponent {
|
|
|
124
117
|
}
|
|
125
118
|
}
|
|
126
119
|
NgViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
127
|
-
NgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: NgViewerComponent, selector: "NgViewer", inputs: { server: "server", api: "api", fit: "fit", scene: "scene", encoder: "encoder", parameters: "parameters", view: "view", vrcube: "vrcube", vrobject: "vrobject", hotspots: "hotspots",
|
|
120
|
+
NgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: NgViewerComponent, selector: "NgViewer", inputs: { server: "server", api: "api", fit: "fit", scene: "scene", encoder: "encoder", parameters: "parameters", view: "view", vrcube: "vrcube", vrobject: "vrobject", hotspots: "hotspots", hotspotsFilter: "hotspotsFilter" }, outputs: { onLoadStart: "onLoadStart", onLoadProgress: "onLoadProgress", onLoadEnd: "onLoadEnd", onLoadError: "onLoadError", onInteraction: "onInteraction", onVrcubeInteraction: "onVrcubeInteraction", onVrobjectInteraction: "onVrobjectInteraction" }, queries: [{ propertyName: "hotspotTemplateRef", first: true, predicate: ["hotspotTemplate"], descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex:1 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
128
121
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgViewerComponent, decorators: [{
|
|
129
122
|
type: Component,
|
|
130
|
-
args: [{ selector: 'NgViewer', template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"
|
|
123
|
+
args: [{ selector: 'NgViewer', template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex:1 0 auto}\n"] }]
|
|
131
124
|
}], propDecorators: { server: [{
|
|
132
125
|
type: Input
|
|
133
126
|
}], api: [{
|
|
@@ -148,8 +141,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
148
141
|
type: Input
|
|
149
142
|
}], hotspots: [{
|
|
150
143
|
type: Input
|
|
151
|
-
}], hotspotTemplateRef: [{
|
|
152
|
-
type: Input
|
|
153
144
|
}], hotspotsFilter: [{
|
|
154
145
|
type: Input
|
|
155
146
|
}], onLoadStart: [{
|
|
@@ -166,6 +157,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
166
157
|
type: Output
|
|
167
158
|
}], onVrobjectInteraction: [{
|
|
168
159
|
type: Output
|
|
160
|
+
}], hotspotTemplateRef: [{
|
|
161
|
+
type: ContentChild,
|
|
162
|
+
args: ['hotspotTemplate']
|
|
169
163
|
}], container: [{
|
|
170
164
|
type: ViewChild,
|
|
171
165
|
args: ['container']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lumiscaphe-ng-viewer.mjs","sources":["../../../projects/ng-viewer/src/lib/ng-viewer.component.ts","../../../projects/ng-viewer/src/lib/ng-viewer.component.html","../../../projects/ng-viewer/src/lib/ng-viewer.module.ts","../../../projects/ng-viewer/src/public-api.ts","../../../projects/ng-viewer/src/lumiscaphe-ng-viewer.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { Encoder, Hotspot, Parameters, Scene, View, Viewer, WRAPIv2, WidgetVRCube, WidgetVRObject } from '@lumiscaphe/viewer';\n\n@Component({\n selector: 'NgViewer',\n templateUrl: './ng-viewer.component.html',\n styleUrls: ['./ng-viewer.component.scss']\n})\nexport class NgViewerComponent implements AfterViewInit, OnChanges, OnDestroy {\n public viewer: Viewer | undefined;\n\n public hotspots2D: Hotspot[] = [];\n\n @Input() server: string | undefined;\n @Input() api: string | undefined;\n @Input() fit: 'contain' | 'cover' | 'fill' | undefined;\n @Input() scene: Scene | undefined;\n @Input() encoder: Encoder | undefined;\n @Input() parameters: Parameters | undefined;\n @Input() view: View | undefined;\n @Input() vrcube: Partial<WidgetVRCube> | undefined;\n @Input() vrobject: Partial<WidgetVRObject> | undefined;\n @Input() hotspots: Array<string | WRAPIv2.Vector3D> | undefined;\n @Input() hotspotTemplateRef: TemplateRef<any> | null = null;\n @Input() hotspotsFilter: ((hotspots: Hotspot[]) => Hotspot[]) | undefined;\n\n @Output() onLoadStart = new EventEmitter();\n @Output() onLoadProgress = new EventEmitter();\n @Output() onLoadEnd = new EventEmitter();\n @Output() onLoadError = new EventEmitter();\n @Output() onInteraction = new EventEmitter();\n @Output() onVrcubeInteraction = new EventEmitter();\n @Output() onVrobjectInteraction = new EventEmitter();\n\n @ViewChild('container') container!: ElementRef;\n\n ngAfterViewInit() {\n this.viewer = new Viewer(this.container.nativeElement, {\n server: this.server,\n api: this.api || 'v1',\n fit: this.fit || 'cover',\n events: {\n onLoadStart: (...args: any[]) => {\n this.onLoadStart.emit(...args);\n },\n onLoadProgress: (...args: any[]) => {\n this.onLoadProgress.emit(...args);\n },\n onLoadEnd: (...args: any[]) => {\n this.onLoadEnd.emit(...args);\n },\n onLoadError: (...args: any[]) => {\n this.onLoadError.emit(...args);\n },\n onHotspotsChange: this.onHotspotsChange.bind(this),\n onInteraction: (...args: any[]) => {\n this.onInteraction.emit(...args);\n },\n onVrcubeInteraction: (...args: any[]) => {\n this.onVrcubeInteraction.emit(...args);\n },\n onVrobjectInteraction: (...args: any[]) => {\n this.onVrobjectInteraction.emit(...args);\n }\n }\n });\n\n if (this.scene) {\n this.viewer.load(this.scene).catch(() => {});\n }\n\n if (this.encoder) {\n this.viewer.setEncoder(this.encoder).catch(() => {});\n }\n\n if (this.hotspots) {\n this.viewer.setHotspots(this.hotspots);\n }\n\n if (this.parameters) {\n this.viewer.setParameters(this.parameters).catch(() => {});\n }\n\n if (this.view) {\n this.viewer.setView(this.view).catch(() => {});\n }\n\n if (this.vrcube) {\n this.viewer.setVrcube(this.vrcube);\n }\n\n if (this.vrobject) {\n this.viewer.setVrobject(this.vrobject);\n }\n }\n\n ngOnDestroy(): void {\n this.viewer?.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.viewer) {\n return;\n }\n\n if (changes['scene'] && changes['scene'].currentValue) {\n this.viewer.load(changes['scene'].currentValue).catch(() => {});\n }\n\n if (changes['encoder'] && changes['encoder'].currentValue) {\n this.viewer.setEncoder(changes['encoder'].currentValue).catch(() => {});\n }\n\n if (changes['hotspots'] && changes['hotspots'].currentValue) {\n this.viewer.setHotspots(changes['hotspots'].currentValue);\n }\n\n if (changes['parameters'] && changes['parameters'].currentValue) {\n this.viewer.setParameters(changes['parameters'].currentValue).catch(() => {});\n }\n\n if (changes['view'] && changes['view'].currentValue) {\n this.viewer.setView(changes['view'].currentValue).catch(() => {});\n }\n\n if (changes['vrcube'] && changes['vrcube'].currentValue) {\n this.viewer.setVrcube(changes['vrcube'].currentValue);\n }\n\n if (changes['vrobject'] && changes['vrobject'].currentValue) {\n this.viewer.setVrobject(changes['vrobject'].currentValue);\n }\n }\n\n async pick(position: WRAPIv2.Vector2D): Promise<WRAPIv2.PickResult | undefined> {\n return this.viewer?.pick(position);\n }\n\n snapshot(type: string, quality: number): string | undefined {\n return this.viewer?.snapshot(type, quality);\n }\n\n hotspotStyle(hotspot: Hotspot): { left: string; top: string; position: string } {\n return {\n position: 'absolute',\n top: hotspot.position2D.y + 'px',\n left: hotspot.position2D.x + 'px'\n };\n }\n\n onHotspotsChange(hotspots: Hotspot[]): void {\n this.hotspots2D = hotspots;\n\n if (this.hotspotsFilter !== undefined) {\n this.hotspots2D = this.hotspotsFilter(this.hotspots2D);\n }\n }\n}\n","<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"hotspotStyle(hotspot)\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgViewerComponent } from './ng-viewer.component';\n\n@NgModule({\n declarations: [\n NgViewerComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgViewerComponent\n ]\n})\n\nexport class NgViewerModule { }\n","/*\n * Public API Surface of ng-viewer\n */\n\nexport * from './lib/ng-viewer.component';\nexport * from './lib/ng-viewer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lumiscaphe-ng-viewer.mjs","sources":["../../../projects/ng-viewer/src/lib/ng-viewer.component.ts","../../../projects/ng-viewer/src/lib/ng-viewer.component.html","../../../projects/ng-viewer/src/lib/ng-viewer.module.ts","../../../projects/ng-viewer/src/public-api.ts","../../../projects/ng-viewer/src/lumiscaphe-ng-viewer.ts"],"sourcesContent":["import { AfterViewInit, Component, ContentChild, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { Encoder, Hotspot, Parameters, Scene, View, Viewer, WRAPIv2, WidgetVRCube, WidgetVRObject } from '@lumiscaphe/viewer';\n\n@Component({\n selector: 'NgViewer',\n templateUrl: './ng-viewer.component.html',\n styleUrls: ['./ng-viewer.component.scss']\n})\nexport class NgViewerComponent implements AfterViewInit, OnChanges, OnDestroy {\n public viewer: Viewer | undefined;\n\n public hotspots2D: Hotspot[] = [];\n\n @Input() server: string | undefined;\n @Input() api: string | undefined;\n @Input() fit: 'contain' | 'cover' | 'fill' | undefined;\n @Input() scene: Scene | undefined;\n @Input() encoder: Encoder | undefined;\n @Input() parameters: Parameters | undefined;\n @Input() view: View | undefined;\n @Input() vrcube: Partial<WidgetVRCube> | undefined;\n @Input() vrobject: Partial<WidgetVRObject> | undefined;\n @Input() hotspots: Array<string | WRAPIv2.Vector3D> | undefined;\n @Input() hotspotsFilter: ((hotspots: Hotspot[]) => Hotspot[]) | undefined;\n\n @Output() onLoadStart = new EventEmitter();\n @Output() onLoadProgress = new EventEmitter();\n @Output() onLoadEnd = new EventEmitter();\n @Output() onLoadError = new EventEmitter();\n @Output() onInteraction = new EventEmitter();\n @Output() onVrcubeInteraction = new EventEmitter();\n @Output() onVrobjectInteraction = new EventEmitter();\n\n @ContentChild('hotspotTemplate') hotspotTemplateRef: TemplateRef<any> | null = null;\n\n @ViewChild('container') container!: ElementRef;\n\n ngAfterViewInit() {\n this.viewer = new Viewer(this.container.nativeElement, {\n server: this.server,\n api: this.api || 'v1',\n fit: this.fit || 'cover',\n events: {\n onLoadStart: (...args: any[]) => {\n this.onLoadStart.emit(...args);\n },\n onLoadProgress: (...args: any[]) => {\n this.onLoadProgress.emit(...args);\n },\n onLoadEnd: (...args: any[]) => {\n this.onLoadEnd.emit(...args);\n },\n onLoadError: (...args: any[]) => {\n this.onLoadError.emit(...args);\n },\n onHotspotsChange: this.onHotspotsChange.bind(this),\n onInteraction: (...args: any[]) => {\n this.onInteraction.emit(...args);\n },\n onVrcubeInteraction: (...args: any[]) => {\n this.onVrcubeInteraction.emit(...args);\n },\n onVrobjectInteraction: (...args: any[]) => {\n this.onVrobjectInteraction.emit(...args);\n }\n }\n });\n\n if (this.scene) {\n this.viewer.load(this.scene).catch(() => {});\n }\n\n if (this.encoder) {\n this.viewer.setEncoder(this.encoder).catch(() => {});\n }\n\n if (this.hotspots) {\n this.viewer.setHotspots(this.hotspots);\n }\n\n if (this.parameters) {\n this.viewer.setParameters(this.parameters).catch(() => {});\n }\n\n if (this.view) {\n this.viewer.setView(this.view).catch(() => {});\n }\n\n if (this.vrcube) {\n this.viewer.setVrcube(this.vrcube);\n }\n\n if (this.vrobject) {\n this.viewer.setVrobject(this.vrobject);\n }\n }\n\n ngOnDestroy(): void {\n this.viewer?.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.viewer) {\n return;\n }\n\n if (changes['scene'] && changes['scene'].currentValue) {\n this.viewer.load(changes['scene'].currentValue).catch(() => {});\n }\n\n if (changes['encoder'] && changes['encoder'].currentValue) {\n this.viewer.setEncoder(changes['encoder'].currentValue).catch(() => {});\n }\n\n if (changes['hotspots'] && changes['hotspots'].currentValue) {\n this.viewer.setHotspots(changes['hotspots'].currentValue);\n }\n\n if (changes['parameters'] && changes['parameters'].currentValue) {\n this.viewer.setParameters(changes['parameters'].currentValue).catch(() => {});\n }\n\n if (changes['view'] && changes['view'].currentValue) {\n this.viewer.setView(changes['view'].currentValue).catch(() => {});\n }\n\n if (changes['vrcube'] && changes['vrcube'].currentValue) {\n this.viewer.setVrcube(changes['vrcube'].currentValue);\n }\n\n if (changes['vrobject'] && changes['vrobject'].currentValue) {\n this.viewer.setVrobject(changes['vrobject'].currentValue);\n }\n }\n\n async pick(position: WRAPIv2.Vector2D): Promise<WRAPIv2.PickResult | undefined> {\n return this.viewer?.pick(position);\n }\n\n snapshot(type: string, quality: number): string | undefined {\n return this.viewer?.snapshot(type, quality);\n }\n\n onHotspotsChange(hotspots: Hotspot[]): void {\n this.hotspots2D = hotspots;\n\n if (this.hotspotsFilter !== undefined) {\n this.hotspots2D = this.hotspotsFilter(this.hotspots2D);\n }\n }\n}\n","<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgViewerComponent } from './ng-viewer.component';\n\n@NgModule({\n declarations: [\n NgViewerComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgViewerComponent\n ]\n})\n\nexport class NgViewerModule { }\n","/*\n * Public API Surface of ng-viewer\n */\n\nexport * from './lib/ng-viewer.component';\nexport * from './lib/ng-viewer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Component, Input, Output, ViewChild, NgModule } from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Input, Output, ContentChild, ViewChild, NgModule } from '@angular/core';
|
|
3
3
|
import { Viewer } from '@lumiscaphe/viewer';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule } from '@angular/common';
|
|
@@ -7,7 +7,6 @@ import { CommonModule } from '@angular/common';
|
|
|
7
7
|
class NgViewerComponent {
|
|
8
8
|
constructor() {
|
|
9
9
|
this.hotspots2D = [];
|
|
10
|
-
this.hotspotTemplateRef = null;
|
|
11
10
|
this.onLoadStart = new EventEmitter();
|
|
12
11
|
this.onLoadProgress = new EventEmitter();
|
|
13
12
|
this.onLoadEnd = new EventEmitter();
|
|
@@ -15,6 +14,7 @@ class NgViewerComponent {
|
|
|
15
14
|
this.onInteraction = new EventEmitter();
|
|
16
15
|
this.onVrcubeInteraction = new EventEmitter();
|
|
17
16
|
this.onVrobjectInteraction = new EventEmitter();
|
|
17
|
+
this.hotspotTemplateRef = null;
|
|
18
18
|
}
|
|
19
19
|
ngAfterViewInit() {
|
|
20
20
|
this.viewer = new Viewer(this.container.nativeElement, {
|
|
@@ -103,13 +103,6 @@ class NgViewerComponent {
|
|
|
103
103
|
snapshot(type, quality) {
|
|
104
104
|
return this.viewer?.snapshot(type, quality);
|
|
105
105
|
}
|
|
106
|
-
hotspotStyle(hotspot) {
|
|
107
|
-
return {
|
|
108
|
-
position: 'absolute',
|
|
109
|
-
top: hotspot.position2D.y + 'px',
|
|
110
|
-
left: hotspot.position2D.x + 'px'
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
106
|
onHotspotsChange(hotspots) {
|
|
114
107
|
this.hotspots2D = hotspots;
|
|
115
108
|
if (this.hotspotsFilter !== undefined) {
|
|
@@ -118,10 +111,10 @@ class NgViewerComponent {
|
|
|
118
111
|
}
|
|
119
112
|
}
|
|
120
113
|
NgViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
121
|
-
NgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: NgViewerComponent, selector: "NgViewer", inputs: { server: "server", api: "api", fit: "fit", scene: "scene", encoder: "encoder", parameters: "parameters", view: "view", vrcube: "vrcube", vrobject: "vrobject", hotspots: "hotspots",
|
|
114
|
+
NgViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: NgViewerComponent, selector: "NgViewer", inputs: { server: "server", api: "api", fit: "fit", scene: "scene", encoder: "encoder", parameters: "parameters", view: "view", vrcube: "vrcube", vrobject: "vrobject", hotspots: "hotspots", hotspotsFilter: "hotspotsFilter" }, outputs: { onLoadStart: "onLoadStart", onLoadProgress: "onLoadProgress", onLoadEnd: "onLoadEnd", onLoadError: "onLoadError", onInteraction: "onInteraction", onVrcubeInteraction: "onVrcubeInteraction", onVrobjectInteraction: "onVrobjectInteraction" }, queries: [{ propertyName: "hotspotTemplateRef", first: true, predicate: ["hotspotTemplate"], descendants: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex:1 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
122
115
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: NgViewerComponent, decorators: [{
|
|
123
116
|
type: Component,
|
|
124
|
-
args: [{ selector: 'NgViewer', template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"
|
|
117
|
+
args: [{ selector: 'NgViewer', template: "<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:flex;flex:1 0 auto}\n"] }]
|
|
125
118
|
}], propDecorators: { server: [{
|
|
126
119
|
type: Input
|
|
127
120
|
}], api: [{
|
|
@@ -142,8 +135,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
142
135
|
type: Input
|
|
143
136
|
}], hotspots: [{
|
|
144
137
|
type: Input
|
|
145
|
-
}], hotspotTemplateRef: [{
|
|
146
|
-
type: Input
|
|
147
138
|
}], hotspotsFilter: [{
|
|
148
139
|
type: Input
|
|
149
140
|
}], onLoadStart: [{
|
|
@@ -160,6 +151,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
160
151
|
type: Output
|
|
161
152
|
}], onVrobjectInteraction: [{
|
|
162
153
|
type: Output
|
|
154
|
+
}], hotspotTemplateRef: [{
|
|
155
|
+
type: ContentChild,
|
|
156
|
+
args: ['hotspotTemplate']
|
|
163
157
|
}], container: [{
|
|
164
158
|
type: ViewChild,
|
|
165
159
|
args: ['container']
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lumiscaphe-ng-viewer.mjs","sources":["../../../projects/ng-viewer/src/lib/ng-viewer.component.ts","../../../projects/ng-viewer/src/lib/ng-viewer.component.html","../../../projects/ng-viewer/src/lib/ng-viewer.module.ts","../../../projects/ng-viewer/src/public-api.ts","../../../projects/ng-viewer/src/lumiscaphe-ng-viewer.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { Encoder, Hotspot, Parameters, Scene, View, Viewer, WRAPIv2, WidgetVRCube, WidgetVRObject } from '@lumiscaphe/viewer';\n\n@Component({\n selector: 'NgViewer',\n templateUrl: './ng-viewer.component.html',\n styleUrls: ['./ng-viewer.component.scss']\n})\nexport class NgViewerComponent implements AfterViewInit, OnChanges, OnDestroy {\n public viewer: Viewer | undefined;\n\n public hotspots2D: Hotspot[] = [];\n\n @Input() server: string | undefined;\n @Input() api: string | undefined;\n @Input() fit: 'contain' | 'cover' | 'fill' | undefined;\n @Input() scene: Scene | undefined;\n @Input() encoder: Encoder | undefined;\n @Input() parameters: Parameters | undefined;\n @Input() view: View | undefined;\n @Input() vrcube: Partial<WidgetVRCube> | undefined;\n @Input() vrobject: Partial<WidgetVRObject> | undefined;\n @Input() hotspots: Array<string | WRAPIv2.Vector3D> | undefined;\n @Input() hotspotTemplateRef: TemplateRef<any> | null = null;\n @Input() hotspotsFilter: ((hotspots: Hotspot[]) => Hotspot[]) | undefined;\n\n @Output() onLoadStart = new EventEmitter();\n @Output() onLoadProgress = new EventEmitter();\n @Output() onLoadEnd = new EventEmitter();\n @Output() onLoadError = new EventEmitter();\n @Output() onInteraction = new EventEmitter();\n @Output() onVrcubeInteraction = new EventEmitter();\n @Output() onVrobjectInteraction = new EventEmitter();\n\n @ViewChild('container') container!: ElementRef;\n\n ngAfterViewInit() {\n this.viewer = new Viewer(this.container.nativeElement, {\n server: this.server,\n api: this.api || 'v1',\n fit: this.fit || 'cover',\n events: {\n onLoadStart: (...args: any[]) => {\n this.onLoadStart.emit(...args);\n },\n onLoadProgress: (...args: any[]) => {\n this.onLoadProgress.emit(...args);\n },\n onLoadEnd: (...args: any[]) => {\n this.onLoadEnd.emit(...args);\n },\n onLoadError: (...args: any[]) => {\n this.onLoadError.emit(...args);\n },\n onHotspotsChange: this.onHotspotsChange.bind(this),\n onInteraction: (...args: any[]) => {\n this.onInteraction.emit(...args);\n },\n onVrcubeInteraction: (...args: any[]) => {\n this.onVrcubeInteraction.emit(...args);\n },\n onVrobjectInteraction: (...args: any[]) => {\n this.onVrobjectInteraction.emit(...args);\n }\n }\n });\n\n if (this.scene) {\n this.viewer.load(this.scene).catch(() => {});\n }\n\n if (this.encoder) {\n this.viewer.setEncoder(this.encoder).catch(() => {});\n }\n\n if (this.hotspots) {\n this.viewer.setHotspots(this.hotspots);\n }\n\n if (this.parameters) {\n this.viewer.setParameters(this.parameters).catch(() => {});\n }\n\n if (this.view) {\n this.viewer.setView(this.view).catch(() => {});\n }\n\n if (this.vrcube) {\n this.viewer.setVrcube(this.vrcube);\n }\n\n if (this.vrobject) {\n this.viewer.setVrobject(this.vrobject);\n }\n }\n\n ngOnDestroy(): void {\n this.viewer?.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.viewer) {\n return;\n }\n\n if (changes['scene'] && changes['scene'].currentValue) {\n this.viewer.load(changes['scene'].currentValue).catch(() => {});\n }\n\n if (changes['encoder'] && changes['encoder'].currentValue) {\n this.viewer.setEncoder(changes['encoder'].currentValue).catch(() => {});\n }\n\n if (changes['hotspots'] && changes['hotspots'].currentValue) {\n this.viewer.setHotspots(changes['hotspots'].currentValue);\n }\n\n if (changes['parameters'] && changes['parameters'].currentValue) {\n this.viewer.setParameters(changes['parameters'].currentValue).catch(() => {});\n }\n\n if (changes['view'] && changes['view'].currentValue) {\n this.viewer.setView(changes['view'].currentValue).catch(() => {});\n }\n\n if (changes['vrcube'] && changes['vrcube'].currentValue) {\n this.viewer.setVrcube(changes['vrcube'].currentValue);\n }\n\n if (changes['vrobject'] && changes['vrobject'].currentValue) {\n this.viewer.setVrobject(changes['vrobject'].currentValue);\n }\n }\n\n async pick(position: WRAPIv2.Vector2D): Promise<WRAPIv2.PickResult | undefined> {\n return this.viewer?.pick(position);\n }\n\n snapshot(type: string, quality: number): string | undefined {\n return this.viewer?.snapshot(type, quality);\n }\n\n hotspotStyle(hotspot: Hotspot): { left: string; top: string; position: string } {\n return {\n position: 'absolute',\n top: hotspot.position2D.y + 'px',\n left: hotspot.position2D.x + 'px'\n };\n }\n\n onHotspotsChange(hotspots: Hotspot[]): void {\n this.hotspots2D = hotspots;\n\n if (this.hotspotsFilter !== undefined) {\n this.hotspots2D = this.hotspotsFilter(this.hotspots2D);\n }\n }\n}\n","<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"hotspotStyle(hotspot)\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgViewerComponent } from './ng-viewer.component';\n\n@NgModule({\n declarations: [\n NgViewerComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgViewerComponent\n ]\n})\n\nexport class NgViewerModule { }\n","/*\n * Public API Surface of ng-viewer\n */\n\nexport * from './lib/ng-viewer.component';\nexport * from './lib/ng-viewer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lumiscaphe-ng-viewer.mjs","sources":["../../../projects/ng-viewer/src/lib/ng-viewer.component.ts","../../../projects/ng-viewer/src/lib/ng-viewer.component.html","../../../projects/ng-viewer/src/lib/ng-viewer.module.ts","../../../projects/ng-viewer/src/public-api.ts","../../../projects/ng-viewer/src/lumiscaphe-ng-viewer.ts"],"sourcesContent":["import { AfterViewInit, Component, ContentChild, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { Encoder, Hotspot, Parameters, Scene, View, Viewer, WRAPIv2, WidgetVRCube, WidgetVRObject } from '@lumiscaphe/viewer';\n\n@Component({\n selector: 'NgViewer',\n templateUrl: './ng-viewer.component.html',\n styleUrls: ['./ng-viewer.component.scss']\n})\nexport class NgViewerComponent implements AfterViewInit, OnChanges, OnDestroy {\n public viewer: Viewer | undefined;\n\n public hotspots2D: Hotspot[] = [];\n\n @Input() server: string | undefined;\n @Input() api: string | undefined;\n @Input() fit: 'contain' | 'cover' | 'fill' | undefined;\n @Input() scene: Scene | undefined;\n @Input() encoder: Encoder | undefined;\n @Input() parameters: Parameters | undefined;\n @Input() view: View | undefined;\n @Input() vrcube: Partial<WidgetVRCube> | undefined;\n @Input() vrobject: Partial<WidgetVRObject> | undefined;\n @Input() hotspots: Array<string | WRAPIv2.Vector3D> | undefined;\n @Input() hotspotsFilter: ((hotspots: Hotspot[]) => Hotspot[]) | undefined;\n\n @Output() onLoadStart = new EventEmitter();\n @Output() onLoadProgress = new EventEmitter();\n @Output() onLoadEnd = new EventEmitter();\n @Output() onLoadError = new EventEmitter();\n @Output() onInteraction = new EventEmitter();\n @Output() onVrcubeInteraction = new EventEmitter();\n @Output() onVrobjectInteraction = new EventEmitter();\n\n @ContentChild('hotspotTemplate') hotspotTemplateRef: TemplateRef<any> | null = null;\n\n @ViewChild('container') container!: ElementRef;\n\n ngAfterViewInit() {\n this.viewer = new Viewer(this.container.nativeElement, {\n server: this.server,\n api: this.api || 'v1',\n fit: this.fit || 'cover',\n events: {\n onLoadStart: (...args: any[]) => {\n this.onLoadStart.emit(...args);\n },\n onLoadProgress: (...args: any[]) => {\n this.onLoadProgress.emit(...args);\n },\n onLoadEnd: (...args: any[]) => {\n this.onLoadEnd.emit(...args);\n },\n onLoadError: (...args: any[]) => {\n this.onLoadError.emit(...args);\n },\n onHotspotsChange: this.onHotspotsChange.bind(this),\n onInteraction: (...args: any[]) => {\n this.onInteraction.emit(...args);\n },\n onVrcubeInteraction: (...args: any[]) => {\n this.onVrcubeInteraction.emit(...args);\n },\n onVrobjectInteraction: (...args: any[]) => {\n this.onVrobjectInteraction.emit(...args);\n }\n }\n });\n\n if (this.scene) {\n this.viewer.load(this.scene).catch(() => {});\n }\n\n if (this.encoder) {\n this.viewer.setEncoder(this.encoder).catch(() => {});\n }\n\n if (this.hotspots) {\n this.viewer.setHotspots(this.hotspots);\n }\n\n if (this.parameters) {\n this.viewer.setParameters(this.parameters).catch(() => {});\n }\n\n if (this.view) {\n this.viewer.setView(this.view).catch(() => {});\n }\n\n if (this.vrcube) {\n this.viewer.setVrcube(this.vrcube);\n }\n\n if (this.vrobject) {\n this.viewer.setVrobject(this.vrobject);\n }\n }\n\n ngOnDestroy(): void {\n this.viewer?.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.viewer) {\n return;\n }\n\n if (changes['scene'] && changes['scene'].currentValue) {\n this.viewer.load(changes['scene'].currentValue).catch(() => {});\n }\n\n if (changes['encoder'] && changes['encoder'].currentValue) {\n this.viewer.setEncoder(changes['encoder'].currentValue).catch(() => {});\n }\n\n if (changes['hotspots'] && changes['hotspots'].currentValue) {\n this.viewer.setHotspots(changes['hotspots'].currentValue);\n }\n\n if (changes['parameters'] && changes['parameters'].currentValue) {\n this.viewer.setParameters(changes['parameters'].currentValue).catch(() => {});\n }\n\n if (changes['view'] && changes['view'].currentValue) {\n this.viewer.setView(changes['view'].currentValue).catch(() => {});\n }\n\n if (changes['vrcube'] && changes['vrcube'].currentValue) {\n this.viewer.setVrcube(changes['vrcube'].currentValue);\n }\n\n if (changes['vrobject'] && changes['vrobject'].currentValue) {\n this.viewer.setVrobject(changes['vrobject'].currentValue);\n }\n }\n\n async pick(position: WRAPIv2.Vector2D): Promise<WRAPIv2.PickResult | undefined> {\n return this.viewer?.pick(position);\n }\n\n snapshot(type: string, quality: number): string | undefined {\n return this.viewer?.snapshot(type, quality);\n }\n\n onHotspotsChange(hotspots: Hotspot[]): void {\n this.hotspots2D = hotspots;\n\n if (this.hotspotsFilter !== undefined) {\n this.hotspots2D = this.hotspotsFilter(this.hotspots2D);\n }\n }\n}\n","<div #container></div>\n\n<div class=\"position-absolute w-100 h-100\" style=\"pointer-events: none\" *ngIf=\"hotspots2D.length\">\n <ng-container *ngFor=\"let hotspot of hotspots2D; index as i\">\n <div [ngStyle]=\"{ position: 'absolute', top: hotspot.position2D.y + 'px', left: hotspot.position2D.x + 'px' }\">\n <ng-container *ngTemplateOutlet=\"hotspotTemplateRef; context: { $implicit: hotspot, index: i }\"></ng-container>\n </div>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { NgViewerComponent } from './ng-viewer.component';\n\n@NgModule({\n declarations: [\n NgViewerComponent\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgViewerComponent\n ]\n})\n\nexport class NgViewerModule { }\n","/*\n * Public API Surface of ng-viewer\n */\n\nexport * from './lib/ng-viewer.component';\nexport * from './lib/ng-viewer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,6 @@ export declare class NgViewerComponent implements AfterViewInit, OnChanges, OnDe
|
|
|
14
14
|
vrcube: Partial<WidgetVRCube> | undefined;
|
|
15
15
|
vrobject: Partial<WidgetVRObject> | undefined;
|
|
16
16
|
hotspots: Array<string | WRAPIv2.Vector3D> | undefined;
|
|
17
|
-
hotspotTemplateRef: TemplateRef<any> | null;
|
|
18
17
|
hotspotsFilter: ((hotspots: Hotspot[]) => Hotspot[]) | undefined;
|
|
19
18
|
onLoadStart: EventEmitter<any>;
|
|
20
19
|
onLoadProgress: EventEmitter<any>;
|
|
@@ -23,18 +22,14 @@ export declare class NgViewerComponent implements AfterViewInit, OnChanges, OnDe
|
|
|
23
22
|
onInteraction: EventEmitter<any>;
|
|
24
23
|
onVrcubeInteraction: EventEmitter<any>;
|
|
25
24
|
onVrobjectInteraction: EventEmitter<any>;
|
|
25
|
+
hotspotTemplateRef: TemplateRef<any> | null;
|
|
26
26
|
container: ElementRef;
|
|
27
27
|
ngAfterViewInit(): void;
|
|
28
28
|
ngOnDestroy(): void;
|
|
29
29
|
ngOnChanges(changes: SimpleChanges): void;
|
|
30
30
|
pick(position: WRAPIv2.Vector2D): Promise<WRAPIv2.PickResult | undefined>;
|
|
31
31
|
snapshot(type: string, quality: number): string | undefined;
|
|
32
|
-
hotspotStyle(hotspot: Hotspot): {
|
|
33
|
-
left: string;
|
|
34
|
-
top: string;
|
|
35
|
-
position: string;
|
|
36
|
-
};
|
|
37
32
|
onHotspotsChange(hotspots: Hotspot[]): void;
|
|
38
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgViewerComponent, never>;
|
|
39
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgViewerComponent, "NgViewer", never, { "server": "server"; "api": "api"; "fit": "fit"; "scene": "scene"; "encoder": "encoder"; "parameters": "parameters"; "view": "view"; "vrcube": "vrcube"; "vrobject": "vrobject"; "hotspots": "hotspots"; "
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgViewerComponent, "NgViewer", never, { "server": "server"; "api": "api"; "fit": "fit"; "scene": "scene"; "encoder": "encoder"; "parameters": "parameters"; "view": "view"; "vrcube": "vrcube"; "vrobject": "vrobject"; "hotspots": "hotspots"; "hotspotsFilter": "hotspotsFilter"; }, { "onLoadStart": "onLoadStart"; "onLoadProgress": "onLoadProgress"; "onLoadEnd": "onLoadEnd"; "onLoadError": "onLoadError"; "onInteraction": "onInteraction"; "onVrcubeInteraction": "onVrcubeInteraction"; "onVrobjectInteraction": "onVrobjectInteraction"; }, ["hotspotTemplateRef"], never, false>;
|
|
40
35
|
}
|