@smarterplan/ngx-smarterplan-core 1.2.39 → 1.2.45
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 +24 -24
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
- package/esm2020/lib/components/loader/loader.component.mjs +23 -23
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
- package/esm2020/lib/config.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +470 -470
- package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
- package/esm2020/lib/mattertagData.mjs +165 -165
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
- package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
- package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
- package/esm2020/lib/services/base-tab.service.mjs +24 -24
- package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
- package/esm2020/lib/services/content.service.mjs +135 -135
- package/esm2020/lib/services/filter.service.mjs +599 -599
- package/esm2020/lib/services/intervention.service.mjs +236 -236
- package/esm2020/lib/services/locale.service.mjs +45 -45
- package/esm2020/lib/services/matterport-import.service.mjs +340 -340
- package/esm2020/lib/services/matterport.service.mjs +1587 -1587
- package/esm2020/lib/services/models/affectation.service.mjs +60 -60
- package/esm2020/lib/services/models/base-object.service.mjs +70 -70
- package/esm2020/lib/services/models/capture.service.mjs +34 -34
- package/esm2020/lib/services/models/comment.service.mjs +98 -98
- package/esm2020/lib/services/models/domain.service.mjs +78 -78
- package/esm2020/lib/services/models/equipment.service.mjs +683 -683
- package/esm2020/lib/services/models/event.service.mjs +128 -128
- package/esm2020/lib/services/models/feature.service.mjs +380 -364
- package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
- package/esm2020/lib/services/models/layer.service.mjs +33 -33
- package/esm2020/lib/services/models/measurement.service.mjs +199 -199
- package/esm2020/lib/services/models/mission.service.mjs +206 -206
- package/esm2020/lib/services/models/navigation.service.mjs +92 -92
- package/esm2020/lib/services/models/node.service.mjs +31 -31
- package/esm2020/lib/services/models/object3D.service.mjs +364 -364
- package/esm2020/lib/services/models/operation.service.mjs +59 -59
- package/esm2020/lib/services/models/organisation.service.mjs +73 -73
- package/esm2020/lib/services/models/plan.service.mjs +799 -799
- package/esm2020/lib/services/models/poi.service.mjs +103 -103
- package/esm2020/lib/services/models/profile.service.mjs +58 -58
- package/esm2020/lib/services/models/property.service.mjs +44 -44
- package/esm2020/lib/services/models/space.service.mjs +204 -204
- package/esm2020/lib/services/models/template.service.mjs +41 -41
- package/esm2020/lib/services/models/ticket.service.mjs +526 -526
- package/esm2020/lib/services/models/visit.service.mjs +130 -130
- package/esm2020/lib/services/models/zone.service.mjs +225 -225
- package/esm2020/lib/services/navigator.service.mjs +212 -212
- package/esm2020/lib/services/s3.service.mjs +137 -137
- package/esm2020/lib/services/search.service.mjs +124 -124
- package/esm2020/lib/services/support.service.mjs +42 -42
- package/esm2020/lib/services/tag.service.mjs +111 -111
- package/esm2020/lib/services/user.service.mjs +501 -501
- package/esm2020/lib/services/validators.service.mjs +50 -50
- package/esm2020/lib/services/viewer.service.mjs +389 -389
- package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
- package/esm2020/lib/services/zoneChange.service.mjs +30 -30
- package/esm2020/lib/types.service.mjs +311 -310
- package/esm2020/lib/validators/email.directive.mjs +7 -7
- package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
- package/esm2020/lib/validators/number.directive.mjs +12 -12
- package/esm2020/lib/validators/text.directive.mjs +12 -12
- package/esm2020/public-api.mjs +72 -72
- package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13009 -12992
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12258 -12241
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +18 -18
- package/lib/components/loader/loader.component.d.ts +10 -10
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
- package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
- package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
- package/lib/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/components/support-modal/support-modal.component.d.ts +26 -26
- package/lib/config.d.ts +22 -22
- package/lib/helpers.service.d.ts +79 -79
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
- package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
- package/lib/mattertagData.d.ts +70 -70
- package/lib/ngx-smarterplan-core.module.d.ts +29 -29
- package/lib/ngx-smarterplan-core.service.d.ts +6 -6
- package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
- package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
- package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
- package/lib/pipes/safe-url.pipe.d.ts +10 -10
- package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
- package/lib/pipes/username-from-id.pipe.d.ts +11 -11
- package/lib/services/amplify-cache.service.d.ts +37 -37
- package/lib/services/base-tab.service.d.ts +10 -10
- package/lib/services/baseVisibility.service.d.ts +9 -9
- package/lib/services/content.service.d.ts +28 -28
- package/lib/services/filter.service.d.ts +60 -60
- package/lib/services/intervention.service.d.ts +25 -25
- package/lib/services/locale.service.d.ts +23 -23
- package/lib/services/matterport-import.service.d.ts +53 -53
- package/lib/services/matterport.service.d.ts +336 -336
- package/lib/services/models/affectation.service.d.ts +14 -14
- package/lib/services/models/base-object.service.d.ts +20 -20
- package/lib/services/models/capture.service.d.ts +13 -13
- package/lib/services/models/comment.service.d.ts +26 -26
- package/lib/services/models/domain.service.d.ts +19 -19
- package/lib/services/models/equipment.service.d.ts +93 -93
- package/lib/services/models/event.service.d.ts +43 -43
- package/lib/services/models/feature.service.d.ts +75 -74
- package/lib/services/models/hashtag.service.d.ts +13 -13
- package/lib/services/models/layer.service.d.ts +11 -11
- package/lib/services/models/measurement.service.d.ts +51 -51
- package/lib/services/models/mission.service.d.ts +39 -39
- package/lib/services/models/navigation.service.d.ts +29 -29
- package/lib/services/models/node.service.d.ts +12 -12
- package/lib/services/models/object3D.service.d.ts +57 -57
- package/lib/services/models/operation.service.d.ts +15 -15
- package/lib/services/models/organisation.service.d.ts +19 -19
- package/lib/services/models/plan.service.d.ts +133 -133
- package/lib/services/models/poi.service.d.ts +25 -25
- package/lib/services/models/profile.service.d.ts +16 -16
- package/lib/services/models/property.service.d.ts +13 -13
- package/lib/services/models/space.service.d.ts +46 -46
- package/lib/services/models/template.service.d.ts +15 -15
- package/lib/services/models/ticket.service.d.ts +93 -93
- package/lib/services/models/visit.service.d.ts +24 -24
- package/lib/services/models/zone.service.d.ts +50 -50
- package/lib/services/navigator.service.d.ts +61 -61
- package/lib/services/s3.service.d.ts +14 -14
- package/lib/services/search.service.d.ts +20 -20
- package/lib/services/support.service.d.ts +17 -17
- package/lib/services/tag.service.d.ts +29 -29
- package/lib/services/user.service.d.ts +118 -118
- package/lib/services/validators.service.d.ts +18 -18
- package/lib/services/viewer.service.d.ts +110 -110
- package/lib/services/zone-drawer.service.d.ts +7 -7
- package/lib/services/zoneChange.service.d.ts +17 -17
- package/lib/types.service.d.ts +842 -840
- package/lib/validators/email.directive.d.ts +2 -2
- package/lib/validators/no-empty.directive.d.ts +2 -2
- package/lib/validators/number.directive.d.ts +2 -2
- package/lib/validators/text.directive.d.ts +2 -2
- package/package.json +1 -1
- package/public-api.d.ts +64 -64
- package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
|
@@ -1,165 +1,165 @@
|
|
|
1
|
-
/* eslint-disable unicorn/filename-case */
|
|
2
|
-
import { MattertagActionMode, PoiType } from "./types.service";
|
|
3
|
-
export class MattertagData {
|
|
4
|
-
constructor(type) {
|
|
5
|
-
this.type = PoiType.TICKET;
|
|
6
|
-
this.position = { x: 0, y: 0, z: 0 };
|
|
7
|
-
this.normal = { x: 0, y: 1, z: 0 };
|
|
8
|
-
this.customIconIndex = 0;
|
|
9
|
-
this.setType(type);
|
|
10
|
-
}
|
|
11
|
-
/*-----------------------------------------------------------------------------
|
|
12
|
-
Setters
|
|
13
|
-
------------------------------------------------------------------------------*/
|
|
14
|
-
setType(type) {
|
|
15
|
-
this.type = type;
|
|
16
|
-
}
|
|
17
|
-
setObject(object, tagType) {
|
|
18
|
-
this.object = object;
|
|
19
|
-
this.setElementID(object.id);
|
|
20
|
-
this.setType(tagType);
|
|
21
|
-
}
|
|
22
|
-
setElementID(ticketID) {
|
|
23
|
-
this.elementID = ticketID;
|
|
24
|
-
}
|
|
25
|
-
setPosition(position) {
|
|
26
|
-
this.position = position;
|
|
27
|
-
}
|
|
28
|
-
setNormal(normal) {
|
|
29
|
-
this.normal = normal;
|
|
30
|
-
}
|
|
31
|
-
setMediaSource(source) {
|
|
32
|
-
this.mediaSrc = source;
|
|
33
|
-
}
|
|
34
|
-
setSweepID(sweepID) {
|
|
35
|
-
this.sweepID = sweepID;
|
|
36
|
-
}
|
|
37
|
-
setRotation(rotation) {
|
|
38
|
-
this.rotation = rotation;
|
|
39
|
-
}
|
|
40
|
-
setPoi(poi) {
|
|
41
|
-
this.poi = poi;
|
|
42
|
-
}
|
|
43
|
-
/*-----------------------------------------------------------------------------
|
|
44
|
-
Getters
|
|
45
|
-
------------------------------------------------------------------------------*/
|
|
46
|
-
// MattertagData
|
|
47
|
-
getData() {
|
|
48
|
-
let label = "New Tag";
|
|
49
|
-
switch (this.type) {
|
|
50
|
-
case PoiType.TICKET:
|
|
51
|
-
label = this.object ? "" : "New Tag"; // if the object exists we inject title in html
|
|
52
|
-
break;
|
|
53
|
-
case PoiType.EQUIPMENT:
|
|
54
|
-
label = this.object ? "" : "New Tag";
|
|
55
|
-
break;
|
|
56
|
-
case PoiType.MEASURE:
|
|
57
|
-
label = this.object ? "" : "New Tag";
|
|
58
|
-
break;
|
|
59
|
-
case PoiType.DATA:
|
|
60
|
-
label = this.object ? "" : "New Tag";
|
|
61
|
-
break;
|
|
62
|
-
case PoiType.DESK:
|
|
63
|
-
label = this.object ? "" : "New Tag";
|
|
64
|
-
break;
|
|
65
|
-
case PoiType.OBJECT3D:
|
|
66
|
-
label = this.object ? "" : "Click on blinking icon to load a 3D object here";
|
|
67
|
-
break;
|
|
68
|
-
case PoiType.ROOM:
|
|
69
|
-
label = "";
|
|
70
|
-
break;
|
|
71
|
-
default:
|
|
72
|
-
label = "New Tag";
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
const data = {
|
|
76
|
-
label,
|
|
77
|
-
description: "",
|
|
78
|
-
anchorPosition: {
|
|
79
|
-
x: this.position.x * 1,
|
|
80
|
-
y: this.position.y * 1,
|
|
81
|
-
z: this.position.z * 1,
|
|
82
|
-
},
|
|
83
|
-
stemVector: {
|
|
84
|
-
x: this.normal.x * 0.3,
|
|
85
|
-
y: this.normal.y * 0.3,
|
|
86
|
-
z: this.normal.z * 0.3,
|
|
87
|
-
},
|
|
88
|
-
color: {
|
|
89
|
-
// blue disc
|
|
90
|
-
r: 0,
|
|
91
|
-
g: 0,
|
|
92
|
-
b: 1,
|
|
93
|
-
},
|
|
94
|
-
media: {
|
|
95
|
-
type: "mattertag.media.none",
|
|
96
|
-
src: ""
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
return data;
|
|
100
|
-
}
|
|
101
|
-
getType() {
|
|
102
|
-
return this.type;
|
|
103
|
-
}
|
|
104
|
-
getNormal() {
|
|
105
|
-
return this.normal;
|
|
106
|
-
}
|
|
107
|
-
getCallbackActionMode() {
|
|
108
|
-
switch (this.type) {
|
|
109
|
-
case PoiType.TICKET:
|
|
110
|
-
return this.object ? MattertagActionMode.POSITION_TICKET : MattertagActionMode.ADD_TICKET;
|
|
111
|
-
case PoiType.OBJECT3D:
|
|
112
|
-
return MattertagActionMode.POSITION_OBJECT3D;
|
|
113
|
-
// return this.object ? MattertagActionMode.POSITION_OBJECT3D : MattertagActionMode.ADD_OBJECT3D;
|
|
114
|
-
case PoiType.EQUIPMENT:
|
|
115
|
-
return this.object ? MattertagActionMode.POSITION_EQUIPMENT : MattertagActionMode.ADD_EQUIPMENT;
|
|
116
|
-
case PoiType.DATA:
|
|
117
|
-
return this.object ? MattertagActionMode.POSITION_DATA : MattertagActionMode.ADD_DATA;
|
|
118
|
-
case PoiType.DESK:
|
|
119
|
-
return this.object ? MattertagActionMode.POSITION_DATA : MattertagActionMode.ADD_DESK;
|
|
120
|
-
case PoiType.ROOM:
|
|
121
|
-
return this.object ? MattertagActionMode.POSITION_ROOM : MattertagActionMode.ADD_ROOM;
|
|
122
|
-
default:
|
|
123
|
-
return MattertagActionMode.ADD_TICKET;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
getIcon() {
|
|
127
|
-
switch (this.type) {
|
|
128
|
-
case PoiType.TICKET:
|
|
129
|
-
return "icon_ticket.png";
|
|
130
|
-
case PoiType.EQUIPMENT:
|
|
131
|
-
return "icon_equipment.png";
|
|
132
|
-
case PoiType.OBJECT3D:
|
|
133
|
-
return "icon_object3d.png";
|
|
134
|
-
}
|
|
135
|
-
return "";
|
|
136
|
-
}
|
|
137
|
-
getCoordinateString() {
|
|
138
|
-
return JSON.stringify({
|
|
139
|
-
x: this.position.x,
|
|
140
|
-
y: this.position.y,
|
|
141
|
-
z: this.position.z,
|
|
142
|
-
xRotation: this.rotation ? this.rotation.x : null,
|
|
143
|
-
yRotation: this.rotation ? this.rotation.y : null,
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
getMetadataString() {
|
|
147
|
-
return JSON.stringify({
|
|
148
|
-
icon: this.getIcon(),
|
|
149
|
-
normal: this.getNormal(),
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
getSweepID() {
|
|
153
|
-
return this.sweepID;
|
|
154
|
-
}
|
|
155
|
-
getObject() {
|
|
156
|
-
return this.object;
|
|
157
|
-
}
|
|
158
|
-
getRotation() {
|
|
159
|
-
return this.rotation;
|
|
160
|
-
}
|
|
161
|
-
getPoi() {
|
|
162
|
-
return this.poi;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVydGFnRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvbWF0dGVydGFnRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsT0FBTyxFQUFnQixtQkFBbUIsRUFBTyxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRixNQUFNLE9BQU8sYUFBYTtJQXNCdEIsWUFBWSxJQUFhO1FBbEJqQixTQUFJLEdBQVksT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUkvQixhQUFRLEdBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRXJDLFdBQU0sR0FBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFNcEMsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFPdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O29GQUVnRjtJQUVoRixPQUFPLENBQUMsSUFBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQW9CLEVBQUUsT0FBZ0I7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBNEM7UUFDcEQs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QUM7SUFHRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHVuaWNvcm4vZmlsZW5hbWUtY2FzZSAqL1xyXG5pbXBvcnQgeyBEYk9iamVjdFR5cGUsIE1hdHRlcnRhZ0FjdGlvbk1vZGUsIFBPSSwgUG9pVHlwZSB9IGZyb20gXCIuL3R5cGVzLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXR0ZXJ0YWdEYXRhIHtcclxuXHJcbiAgICBwcml2YXRlIG9iamVjdDogRGJPYmplY3RUeXBlO1xyXG5cclxuICAgIHByaXZhdGUgdHlwZTogUG9pVHlwZSA9IFBvaVR5cGUuVElDS0VUO1xyXG5cclxuICAgIHB1YmxpYyBlbGVtZW50SUQ6IHN0cmluZztcclxuXHJcbiAgICBwcml2YXRlIHBvc2l0aW9uOiBhbnkgPSB7IHg6IDAsIHk6IDAsIHo6IDAgfTtcclxuXHJcbiAgICBwcml2YXRlIG5vcm1hbDogYW55ID0geyB4OiAwLCB5OiAxLCB6OiAwIH07XHJcblxyXG4gICAgcHJpdmF0ZSBtZWRpYVNyYzogc3RyaW5nO1xyXG5cclxuICAgIHByaXZhdGUgc3dlZXBJRDogc3RyaW5nO1xyXG5cclxuICAgIHB1YmxpYyBjdXN0b21JY29uSW5kZXggPSAwO1xyXG5cclxuICAgIHByaXZhdGUgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH07XHJcblxyXG4gICAgcHJpdmF0ZSBwb2k6IFBPSTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih0eXBlOiBQb2lUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRUeXBlKHR5cGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICBTZXR0ZXJzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICAgIHNldFR5cGUodHlwZTogUG9pVHlwZSkge1xyXG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0T2JqZWN0KG9iamVjdDogRGJPYmplY3RUeXBlLCB0YWdUeXBlOiBQb2lUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5vYmplY3QgPSBvYmplY3Q7XHJcbiAgICAgICAgdGhpcy5zZXRFbGVtZW50SUQob2JqZWN0LmlkKTtcclxuICAgICAgICB0aGlzLnNldFR5cGUodGFnVHlwZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RWxlbWVudElEKHRpY2tldElEOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnRJRCA9IHRpY2tldElEO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBvc2l0aW9uKHBvc2l0aW9uOiB7IHg6IG51bWJlcjsgeTpudW1iZXI7IHo6bnVtYmVyOyB9KSB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE5vcm1hbChub3JtYWw6IHsgeDogbnVtYmVyOyB5Om51bWJlcjsgejpudW1iZXI7IH0pIHtcclxuICAgICAgICB0aGlzLm5vcm1hbCA9IG5vcm1hbDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRNZWRpYVNvdXJjZShzb3VyY2U6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMubWVkaWFTcmMgPSBzb3VyY2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0U3dlZXBJRChzd2VlcElEOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnN3ZWVwSUQgPSBzd2VlcElEO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFJvdGF0aW9uKHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9KSB7XHJcbiAgICAgICAgdGhpcy5yb3RhdGlvbiA9IHJvdGF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBvaShwb2k6IFBPSSkge1xyXG4gICAgICAgIHRoaXMucG9pID0gcG9pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICBHZXR0ZXJzXHJcbiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuICAgIC8vIE1hdHRlcnRhZ0RhdGFcclxuICAgIGdldERhdGEoKSB7XHJcbiAgICAgICAgbGV0IGxhYmVsID0gXCJOZXcgVGFnXCI7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gdGhpcy5vYmplY3QgPyBcIlwiIDogXCJOZXcgVGFnXCI7IC8vIGlmIHRoZSBvYmplY3QgZXhpc3RzIHdlIGluamVjdCB0aXRsZSBpbiBodG1sXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkVRVUlQTUVOVDpcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gdGhpcy5vYmplY3QgPyBcIlwiIDogXCJOZXcgVGFnXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLk1FQVNVUkU6XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IHRoaXMub2JqZWN0ID8gXCJcIiA6IFwiTmV3IFRhZ1wiO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOlxyXG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLm9iamVjdCA/IFwiXCIgOiBcIk5ldyBUYWdcIjtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuREVTSzpcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gdGhpcy5vYmplY3QgPyBcIlwiIDogXCJOZXcgVGFnXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLk9CSkVDVDNEOlxyXG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLm9iamVjdCA/IFwiXCIgOiBcIkNsaWNrIG9uIGJsaW5raW5nIGljb24gdG8gbG9hZCBhIDNEIG9iamVjdCBoZXJlXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLlJPT006XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gXCJOZXcgVGFnXCI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgbGFiZWwsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlwiLFxyXG4gICAgICAgICAgICBhbmNob3JQb3NpdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgeDogdGhpcy5wb3NpdGlvbi54ICogMSxcclxuICAgICAgICAgICAgICAgIHk6IHRoaXMucG9zaXRpb24ueSAqIDEsXHJcbiAgICAgICAgICAgICAgICB6OiB0aGlzLnBvc2l0aW9uLnogKiAxLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdGVtVmVjdG9yOiB7XHJcbiAgICAgICAgICAgICAgICB4OiB0aGlzLm5vcm1hbC54ICogMC4zLFxyXG4gICAgICAgICAgICAgICAgeTogdGhpcy5ub3JtYWwueSAqIDAuMyxcclxuICAgICAgICAgICAgICAgIHo6IHRoaXMubm9ybWFsLnogKiAwLjMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgICAgICAgICAvLyBibHVlIGRpc2NcclxuICAgICAgICAgICAgICAgIHI6IDAsXHJcbiAgICAgICAgICAgICAgICBnOiAwLFxyXG4gICAgICAgICAgICAgICAgYjogMSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWVkaWE6IHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwibWF0dGVydGFnLm1lZGlhLm5vbmVcIixcclxuICAgICAgICAgICAgICAgIHNyYzogXCJcIlxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VHlwZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE5vcm1hbCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2FsbGJhY2tBY3Rpb25Nb2RlKCk6IE1hdHRlcnRhZ0FjdGlvbk1vZGUge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3QgPyBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLlBPU0lUSU9OX1RJQ0tFVCA6IE1hdHRlcnRhZ0FjdGlvbk1vZGUuQUREX1RJQ0tFVDtcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLk9CSkVDVDNEOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdHRlcnRhZ0FjdGlvbk1vZGUuUE9TSVRJT05fT0JKRUNUM0Q7XHJcbiAgICAgICAgICAgICAgICAvLyByZXR1cm4gdGhpcy5vYmplY3QgPyBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLlBPU0lUSU9OX09CSkVDVDNEIDogTWF0dGVydGFnQWN0aW9uTW9kZS5BRERfT0JKRUNUM0Q7XHJcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3QgPyBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLlBPU0lUSU9OX0VRVUlQTUVOVCA6IE1hdHRlcnRhZ0FjdGlvbk1vZGUuQUREX0VRVUlQTUVOVDtcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkRBVEE6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3QgPyBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLlBPU0lUSU9OX0RBVEEgOiBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLkFERF9EQVRBO1xyXG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuREVTSzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdCA/IE1hdHRlcnRhZ0FjdGlvbk1vZGUuUE9TSVRJT05fREFUQSA6IE1hdHRlcnRhZ0FjdGlvbk1vZGUuQUREX0RFU0s7XHJcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5ST09NOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0ID8gTWF0dGVydGFnQWN0aW9uTW9kZS5QT1NJVElPTl9ST09NIDogTWF0dGVydGFnQWN0aW9uTW9kZS5BRERfUk9PTTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLkFERF9USUNLRVQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEljb24oKSB7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImljb25fdGlja2V0LnBuZ1wiO1xyXG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuRVFVSVBNRU5UOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaWNvbl9lcXVpcG1lbnQucG5nXCI7XHJcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5PQkpFQ1QzRDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcImljb25fb2JqZWN0M2QucG5nXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENvb3JkaW5hdGVTdHJpbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgeDogdGhpcy5wb3NpdGlvbi54LFxyXG4gICAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnksXHJcbiAgICAgICAgICAgIHo6IHRoaXMucG9zaXRpb24ueixcclxuICAgICAgICAgICAgeFJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uID8gdGhpcy5yb3RhdGlvbi54IDogbnVsbCxcclxuICAgICAgICAgICAgeVJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uID8gdGhpcy5yb3RhdGlvbi55IDogbnVsbCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNZXRhZGF0YVN0cmluZygpIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICBpY29uOiB0aGlzLmdldEljb24oKSxcclxuICAgICAgICAgICAgbm9ybWFsOiB0aGlzLmdldE5vcm1hbCgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFN3ZWVwSUQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3dlZXBJRDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPYmplY3QoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vYmplY3Q7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldFJvdGF0aW9uKCk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdGF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBvaSgpOiBQT0kge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBvaTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
1
|
+
/* eslint-disable unicorn/filename-case */
|
|
2
|
+
import { MattertagActionMode, PoiType } from "./types.service";
|
|
3
|
+
export class MattertagData {
|
|
4
|
+
constructor(type) {
|
|
5
|
+
this.type = PoiType.TICKET;
|
|
6
|
+
this.position = { x: 0, y: 0, z: 0 };
|
|
7
|
+
this.normal = { x: 0, y: 1, z: 0 };
|
|
8
|
+
this.customIconIndex = 0;
|
|
9
|
+
this.setType(type);
|
|
10
|
+
}
|
|
11
|
+
/*-----------------------------------------------------------------------------
|
|
12
|
+
Setters
|
|
13
|
+
------------------------------------------------------------------------------*/
|
|
14
|
+
setType(type) {
|
|
15
|
+
this.type = type;
|
|
16
|
+
}
|
|
17
|
+
setObject(object, tagType) {
|
|
18
|
+
this.object = object;
|
|
19
|
+
this.setElementID(object.id);
|
|
20
|
+
this.setType(tagType);
|
|
21
|
+
}
|
|
22
|
+
setElementID(ticketID) {
|
|
23
|
+
this.elementID = ticketID;
|
|
24
|
+
}
|
|
25
|
+
setPosition(position) {
|
|
26
|
+
this.position = position;
|
|
27
|
+
}
|
|
28
|
+
setNormal(normal) {
|
|
29
|
+
this.normal = normal;
|
|
30
|
+
}
|
|
31
|
+
setMediaSource(source) {
|
|
32
|
+
this.mediaSrc = source;
|
|
33
|
+
}
|
|
34
|
+
setSweepID(sweepID) {
|
|
35
|
+
this.sweepID = sweepID;
|
|
36
|
+
}
|
|
37
|
+
setRotation(rotation) {
|
|
38
|
+
this.rotation = rotation;
|
|
39
|
+
}
|
|
40
|
+
setPoi(poi) {
|
|
41
|
+
this.poi = poi;
|
|
42
|
+
}
|
|
43
|
+
/*-----------------------------------------------------------------------------
|
|
44
|
+
Getters
|
|
45
|
+
------------------------------------------------------------------------------*/
|
|
46
|
+
// MattertagData
|
|
47
|
+
getData() {
|
|
48
|
+
let label = "New Tag";
|
|
49
|
+
switch (this.type) {
|
|
50
|
+
case PoiType.TICKET:
|
|
51
|
+
label = this.object ? "" : "New Tag"; // if the object exists we inject title in html
|
|
52
|
+
break;
|
|
53
|
+
case PoiType.EQUIPMENT:
|
|
54
|
+
label = this.object ? "" : "New Tag";
|
|
55
|
+
break;
|
|
56
|
+
case PoiType.MEASURE:
|
|
57
|
+
label = this.object ? "" : "New Tag";
|
|
58
|
+
break;
|
|
59
|
+
case PoiType.DATA:
|
|
60
|
+
label = this.object ? "" : "New Tag";
|
|
61
|
+
break;
|
|
62
|
+
case PoiType.DESK:
|
|
63
|
+
label = this.object ? "" : "New Tag";
|
|
64
|
+
break;
|
|
65
|
+
case PoiType.OBJECT3D:
|
|
66
|
+
label = this.object ? "" : "Click on blinking icon to load a 3D object here";
|
|
67
|
+
break;
|
|
68
|
+
case PoiType.ROOM:
|
|
69
|
+
label = "";
|
|
70
|
+
break;
|
|
71
|
+
default:
|
|
72
|
+
label = "New Tag";
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
const data = {
|
|
76
|
+
label,
|
|
77
|
+
description: "",
|
|
78
|
+
anchorPosition: {
|
|
79
|
+
x: this.position.x * 1,
|
|
80
|
+
y: this.position.y * 1,
|
|
81
|
+
z: this.position.z * 1,
|
|
82
|
+
},
|
|
83
|
+
stemVector: {
|
|
84
|
+
x: this.normal.x * 0.3,
|
|
85
|
+
y: this.normal.y * 0.3,
|
|
86
|
+
z: this.normal.z * 0.3,
|
|
87
|
+
},
|
|
88
|
+
color: {
|
|
89
|
+
// blue disc
|
|
90
|
+
r: 0,
|
|
91
|
+
g: 0,
|
|
92
|
+
b: 1,
|
|
93
|
+
},
|
|
94
|
+
media: {
|
|
95
|
+
type: "mattertag.media.none",
|
|
96
|
+
src: ""
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
return data;
|
|
100
|
+
}
|
|
101
|
+
getType() {
|
|
102
|
+
return this.type;
|
|
103
|
+
}
|
|
104
|
+
getNormal() {
|
|
105
|
+
return this.normal;
|
|
106
|
+
}
|
|
107
|
+
getCallbackActionMode() {
|
|
108
|
+
switch (this.type) {
|
|
109
|
+
case PoiType.TICKET:
|
|
110
|
+
return this.object ? MattertagActionMode.POSITION_TICKET : MattertagActionMode.ADD_TICKET;
|
|
111
|
+
case PoiType.OBJECT3D:
|
|
112
|
+
return MattertagActionMode.POSITION_OBJECT3D;
|
|
113
|
+
// return this.object ? MattertagActionMode.POSITION_OBJECT3D : MattertagActionMode.ADD_OBJECT3D;
|
|
114
|
+
case PoiType.EQUIPMENT:
|
|
115
|
+
return this.object ? MattertagActionMode.POSITION_EQUIPMENT : MattertagActionMode.ADD_EQUIPMENT;
|
|
116
|
+
case PoiType.DATA:
|
|
117
|
+
return this.object ? MattertagActionMode.POSITION_DATA : MattertagActionMode.ADD_DATA;
|
|
118
|
+
case PoiType.DESK:
|
|
119
|
+
return this.object ? MattertagActionMode.POSITION_DATA : MattertagActionMode.ADD_DESK;
|
|
120
|
+
case PoiType.ROOM:
|
|
121
|
+
return this.object ? MattertagActionMode.POSITION_ROOM : MattertagActionMode.ADD_ROOM;
|
|
122
|
+
default:
|
|
123
|
+
return MattertagActionMode.ADD_TICKET;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
getIcon() {
|
|
127
|
+
switch (this.type) {
|
|
128
|
+
case PoiType.TICKET:
|
|
129
|
+
return "icon_ticket.png";
|
|
130
|
+
case PoiType.EQUIPMENT:
|
|
131
|
+
return "icon_equipment.png";
|
|
132
|
+
case PoiType.OBJECT3D:
|
|
133
|
+
return "icon_object3d.png";
|
|
134
|
+
}
|
|
135
|
+
return "";
|
|
136
|
+
}
|
|
137
|
+
getCoordinateString() {
|
|
138
|
+
return JSON.stringify({
|
|
139
|
+
x: this.position.x,
|
|
140
|
+
y: this.position.y,
|
|
141
|
+
z: this.position.z,
|
|
142
|
+
xRotation: this.rotation ? this.rotation.x : null,
|
|
143
|
+
yRotation: this.rotation ? this.rotation.y : null,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
getMetadataString() {
|
|
147
|
+
return JSON.stringify({
|
|
148
|
+
icon: this.getIcon(),
|
|
149
|
+
normal: this.getNormal(),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
getSweepID() {
|
|
153
|
+
return this.sweepID;
|
|
154
|
+
}
|
|
155
|
+
getObject() {
|
|
156
|
+
return this.object;
|
|
157
|
+
}
|
|
158
|
+
getRotation() {
|
|
159
|
+
return this.rotation;
|
|
160
|
+
}
|
|
161
|
+
getPoi() {
|
|
162
|
+
return this.poi;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVydGFnRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvbWF0dGVydGFnRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsT0FBTyxFQUFnQixtQkFBbUIsRUFBTyxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRixNQUFNLE9BQU8sYUFBYTtJQXNCdEIsWUFBWSxJQUFhO1FBbEJqQixTQUFJLEdBQVksT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUkvQixhQUFRLEdBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRXJDLFdBQU0sR0FBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFNcEMsb0JBQWUsR0FBRyxDQUFDLENBQUM7UUFPdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O29GQUVnRjtJQUVoRixPQUFPLENBQUMsSUFBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQW9CLEVBQUUsT0FBZ0I7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQWdCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBNEM7UUFDcEQs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QUM7SUFHRCxXQUFXO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNO1FBQ0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHVuaWNvcm4vZmlsZW5hbWUtY2FzZSAqL1xuaW1wb3J0IHsgRGJPYmplY3RUeXBlLCBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLCBQT0ksIFBvaVR5cGUgfSBmcm9tIFwiLi90eXBlcy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBNYXR0ZXJ0YWdEYXRhIHtcblxuICAgIHByaXZhdGUgb2JqZWN0OiBEYk9iamVjdFR5cGU7XG5cbiAgICBwcml2YXRlIHR5cGU6IFBvaVR5cGUgPSBQb2lUeXBlLlRJQ0tFVDtcblxuICAgIHB1YmxpYyBlbGVtZW50SUQ6IHN0cmluZztcblxuICAgIHByaXZhdGUgcG9zaXRpb246IGFueSA9IHsgeDogMCwgeTogMCwgejogMCB9O1xuXG4gICAgcHJpdmF0ZSBub3JtYWw6IGFueSA9IHsgeDogMCwgeTogMSwgejogMCB9O1xuXG4gICAgcHJpdmF0ZSBtZWRpYVNyYzogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBzd2VlcElEOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY3VzdG9tSWNvbkluZGV4ID0gMDtcblxuICAgIHByaXZhdGUgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IH07XG5cbiAgICBwcml2YXRlIHBvaTogUE9JO1xuXG4gICAgY29uc3RydWN0b3IodHlwZTogUG9pVHlwZSkge1xuICAgICAgICB0aGlzLnNldFR5cGUodHlwZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICBTZXR0ZXJzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIHNldFR5cGUodHlwZTogUG9pVHlwZSkge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIH1cblxuICAgIHNldE9iamVjdChvYmplY3Q6IERiT2JqZWN0VHlwZSwgdGFnVHlwZTogUG9pVHlwZSkge1xuICAgICAgICB0aGlzLm9iamVjdCA9IG9iamVjdDtcbiAgICAgICAgdGhpcy5zZXRFbGVtZW50SUQob2JqZWN0LmlkKTtcbiAgICAgICAgdGhpcy5zZXRUeXBlKHRhZ1R5cGUpO1xuICAgIH1cblxuICAgIHNldEVsZW1lbnRJRCh0aWNrZXRJRDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudElEID0gdGlja2V0SUQ7XG4gICAgfVxuXG4gICAgc2V0UG9zaXRpb24ocG9zaXRpb246IHsgeDogbnVtYmVyOyB5Om51bWJlcjsgejpudW1iZXI7IH0pIHtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIH1cblxuICAgIHNldE5vcm1hbChub3JtYWw6IHsgeDogbnVtYmVyOyB5Om51bWJlcjsgejpudW1iZXI7IH0pIHtcbiAgICAgICAgdGhpcy5ub3JtYWwgPSBub3JtYWw7XG4gICAgfVxuXG4gICAgc2V0TWVkaWFTb3VyY2Uoc291cmNlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tZWRpYVNyYyA9IHNvdXJjZTtcbiAgICB9XG5cbiAgICBzZXRTd2VlcElEKHN3ZWVwSUQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnN3ZWVwSUQgPSBzd2VlcElEO1xuICAgIH1cblxuICAgIHNldFJvdGF0aW9uKHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB9KSB7XG4gICAgICAgIHRoaXMucm90YXRpb24gPSByb3RhdGlvbjtcbiAgICB9XG5cbiAgICBzZXRQb2kocG9pOiBQT0kpIHtcbiAgICAgICAgdGhpcy5wb2kgPSBwb2k7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICBHZXR0ZXJzXG4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIE1hdHRlcnRhZ0RhdGFcbiAgICBnZXREYXRhKCkge1xuICAgICAgICBsZXQgbGFiZWwgPSBcIk5ldyBUYWdcIjtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6XG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLm9iamVjdCA/IFwiXCIgOiBcIk5ldyBUYWdcIjsgLy8gaWYgdGhlIG9iamVjdCBleGlzdHMgd2UgaW5qZWN0IHRpdGxlIGluIGh0bWxcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5FUVVJUE1FTlQ6XG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLm9iamVjdCA/IFwiXCIgOiBcIk5ldyBUYWdcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5NRUFTVVJFOlxuICAgICAgICAgICAgICAgIGxhYmVsID0gdGhpcy5vYmplY3QgPyBcIlwiIDogXCJOZXcgVGFnXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuREFUQTpcbiAgICAgICAgICAgICAgICBsYWJlbCA9IHRoaXMub2JqZWN0ID8gXCJcIiA6IFwiTmV3IFRhZ1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkRFU0s6XG4gICAgICAgICAgICAgICAgbGFiZWwgPSB0aGlzLm9iamVjdCA/IFwiXCIgOiBcIk5ldyBUYWdcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5PQkpFQ1QzRDpcbiAgICAgICAgICAgICAgICBsYWJlbCA9IHRoaXMub2JqZWN0ID8gXCJcIiA6IFwiQ2xpY2sgb24gYmxpbmtpbmcgaWNvbiB0byBsb2FkIGEgM0Qgb2JqZWN0IGhlcmVcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5ST09NOlxuICAgICAgICAgICAgICAgIGxhYmVsID0gXCJcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbGFiZWwgPSBcIk5ldyBUYWdcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJcIixcbiAgICAgICAgICAgIGFuY2hvclBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgeDogdGhpcy5wb3NpdGlvbi54ICogMSxcbiAgICAgICAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnkgKiAxLFxuICAgICAgICAgICAgICAgIHo6IHRoaXMucG9zaXRpb24ueiAqIDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RlbVZlY3Rvcjoge1xuICAgICAgICAgICAgICAgIHg6IHRoaXMubm9ybWFsLnggKiAwLjMsXG4gICAgICAgICAgICAgICAgeTogdGhpcy5ub3JtYWwueSAqIDAuMyxcbiAgICAgICAgICAgICAgICB6OiB0aGlzLm5vcm1hbC56ICogMC4zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgICAgICAgLy8gYmx1ZSBkaXNjXG4gICAgICAgICAgICAgICAgcjogMCxcbiAgICAgICAgICAgICAgICBnOiAwLFxuICAgICAgICAgICAgICAgIGI6IDEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVkaWE6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm1hdHRlcnRhZy5tZWRpYS5ub25lXCIsXG4gICAgICAgICAgICAgICAgc3JjOiBcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBnZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlO1xuICAgIH1cblxuICAgIGdldE5vcm1hbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsO1xuICAgIH1cblxuICAgIGdldENhbGxiYWNrQWN0aW9uTW9kZSgpOiBNYXR0ZXJ0YWdBY3Rpb25Nb2RlIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5USUNLRVQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0ID8gTWF0dGVydGFnQWN0aW9uTW9kZS5QT1NJVElPTl9USUNLRVQgOiBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLkFERF9USUNLRVQ7XG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuT0JKRUNUM0Q6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdHRlcnRhZ0FjdGlvbk1vZGUuUE9TSVRJT05fT0JKRUNUM0Q7XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMub2JqZWN0ID8gTWF0dGVydGFnQWN0aW9uTW9kZS5QT1NJVElPTl9PQkpFQ1QzRCA6IE1hdHRlcnRhZ0FjdGlvbk1vZGUuQUREX09CSkVDVDNEO1xuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkVRVUlQTUVOVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3QgPyBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLlBPU0lUSU9OX0VRVUlQTUVOVCA6IE1hdHRlcnRhZ0FjdGlvbk1vZGUuQUREX0VRVUlQTUVOVDtcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5EQVRBOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdCA/IE1hdHRlcnRhZ0FjdGlvbk1vZGUuUE9TSVRJT05fREFUQSA6IE1hdHRlcnRhZ0FjdGlvbk1vZGUuQUREX0RBVEE7XG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuREVTSzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3QgPyBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLlBPU0lUSU9OX0RBVEEgOiBNYXR0ZXJ0YWdBY3Rpb25Nb2RlLkFERF9ERVNLO1xuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLlJPT006XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0ID8gTWF0dGVydGFnQWN0aW9uTW9kZS5QT1NJVElPTl9ST09NIDogTWF0dGVydGFnQWN0aW9uTW9kZS5BRERfUk9PTTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdHRlcnRhZ0FjdGlvbk1vZGUuQUREX1RJQ0tFVDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEljb24oKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFBvaVR5cGUuVElDS0VUOlxuICAgICAgICAgICAgICAgIHJldHVybiBcImljb25fdGlja2V0LnBuZ1wiO1xuICAgICAgICAgICAgY2FzZSBQb2lUeXBlLkVRVUlQTUVOVDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpY29uX2VxdWlwbWVudC5wbmdcIjtcbiAgICAgICAgICAgIGNhc2UgUG9pVHlwZS5PQkpFQ1QzRDpcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpY29uX29iamVjdDNkLnBuZ1wiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIGdldENvb3JkaW5hdGVTdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB4OiB0aGlzLnBvc2l0aW9uLngsXG4gICAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnksXG4gICAgICAgICAgICB6OiB0aGlzLnBvc2l0aW9uLnosXG4gICAgICAgICAgICB4Um90YXRpb246IHRoaXMucm90YXRpb24gPyB0aGlzLnJvdGF0aW9uLnggOiBudWxsLFxuICAgICAgICAgICAgeVJvdGF0aW9uOiB0aGlzLnJvdGF0aW9uID8gdGhpcy5yb3RhdGlvbi55IDogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TWV0YWRhdGFTdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBpY29uOiB0aGlzLmdldEljb24oKSxcbiAgICAgICAgICAgIG5vcm1hbDogdGhpcy5nZXROb3JtYWwoKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0U3dlZXBJRCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3dlZXBJRDtcbiAgICB9XG5cbiAgICBnZXRPYmplY3QoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0O1xuICAgIH1cblxuXG4gICAgZ2V0Um90YXRpb24oKTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdGF0aW9uO1xuICAgIH1cblxuICAgIGdldFBvaSgpOiBQT0kge1xuICAgICAgICByZXR1cm4gdGhpcy5wb2k7XG4gICAgfVxufVxuIl19
|