@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.
Files changed (170) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
  3. package/esm2020/lib/components/loader/loader.component.mjs +23 -23
  4. package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
  5. package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
  6. package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
  7. package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
  8. package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
  9. package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
  10. package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
  11. package/esm2020/lib/config.mjs +4 -4
  12. package/esm2020/lib/helpers.service.mjs +470 -470
  13. package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
  14. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
  15. package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
  16. package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
  17. package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
  18. package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
  19. package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
  20. package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
  21. package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
  22. package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
  23. package/esm2020/lib/mattertagData.mjs +165 -165
  24. package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
  25. package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
  26. package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
  27. package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
  28. package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
  29. package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
  30. package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
  31. package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
  32. package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
  33. package/esm2020/lib/services/base-tab.service.mjs +24 -24
  34. package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
  35. package/esm2020/lib/services/content.service.mjs +135 -135
  36. package/esm2020/lib/services/filter.service.mjs +599 -599
  37. package/esm2020/lib/services/intervention.service.mjs +236 -236
  38. package/esm2020/lib/services/locale.service.mjs +45 -45
  39. package/esm2020/lib/services/matterport-import.service.mjs +340 -340
  40. package/esm2020/lib/services/matterport.service.mjs +1587 -1587
  41. package/esm2020/lib/services/models/affectation.service.mjs +60 -60
  42. package/esm2020/lib/services/models/base-object.service.mjs +70 -70
  43. package/esm2020/lib/services/models/capture.service.mjs +34 -34
  44. package/esm2020/lib/services/models/comment.service.mjs +98 -98
  45. package/esm2020/lib/services/models/domain.service.mjs +78 -78
  46. package/esm2020/lib/services/models/equipment.service.mjs +683 -683
  47. package/esm2020/lib/services/models/event.service.mjs +128 -128
  48. package/esm2020/lib/services/models/feature.service.mjs +380 -364
  49. package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
  50. package/esm2020/lib/services/models/layer.service.mjs +33 -33
  51. package/esm2020/lib/services/models/measurement.service.mjs +199 -199
  52. package/esm2020/lib/services/models/mission.service.mjs +206 -206
  53. package/esm2020/lib/services/models/navigation.service.mjs +92 -92
  54. package/esm2020/lib/services/models/node.service.mjs +31 -31
  55. package/esm2020/lib/services/models/object3D.service.mjs +364 -364
  56. package/esm2020/lib/services/models/operation.service.mjs +59 -59
  57. package/esm2020/lib/services/models/organisation.service.mjs +73 -73
  58. package/esm2020/lib/services/models/plan.service.mjs +799 -799
  59. package/esm2020/lib/services/models/poi.service.mjs +103 -103
  60. package/esm2020/lib/services/models/profile.service.mjs +58 -58
  61. package/esm2020/lib/services/models/property.service.mjs +44 -44
  62. package/esm2020/lib/services/models/space.service.mjs +204 -204
  63. package/esm2020/lib/services/models/template.service.mjs +41 -41
  64. package/esm2020/lib/services/models/ticket.service.mjs +526 -526
  65. package/esm2020/lib/services/models/visit.service.mjs +130 -130
  66. package/esm2020/lib/services/models/zone.service.mjs +225 -225
  67. package/esm2020/lib/services/navigator.service.mjs +212 -212
  68. package/esm2020/lib/services/s3.service.mjs +137 -137
  69. package/esm2020/lib/services/search.service.mjs +124 -124
  70. package/esm2020/lib/services/support.service.mjs +42 -42
  71. package/esm2020/lib/services/tag.service.mjs +111 -111
  72. package/esm2020/lib/services/user.service.mjs +501 -501
  73. package/esm2020/lib/services/validators.service.mjs +50 -50
  74. package/esm2020/lib/services/viewer.service.mjs +389 -389
  75. package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
  76. package/esm2020/lib/services/zoneChange.service.mjs +30 -30
  77. package/esm2020/lib/types.service.mjs +311 -310
  78. package/esm2020/lib/validators/email.directive.mjs +7 -7
  79. package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
  80. package/esm2020/lib/validators/number.directive.mjs +12 -12
  81. package/esm2020/lib/validators/text.directive.mjs +12 -12
  82. package/esm2020/public-api.mjs +72 -72
  83. package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
  84. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13009 -12992
  85. package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  86. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12258 -12241
  87. package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  88. package/lib/components/csv-export/csv-export.component.d.ts +18 -18
  89. package/lib/components/loader/loader.component.d.ts +10 -10
  90. package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
  91. package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
  92. package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
  93. package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
  94. package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
  95. package/lib/components/search-bar/search-bar.component.d.ts +16 -16
  96. package/lib/components/support-modal/support-modal.component.d.ts +26 -26
  97. package/lib/config.d.ts +22 -22
  98. package/lib/helpers.service.d.ts +79 -79
  99. package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
  100. package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
  101. package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
  102. package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
  103. package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
  104. package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
  105. package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
  106. package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
  107. package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
  108. package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
  109. package/lib/mattertagData.d.ts +70 -70
  110. package/lib/ngx-smarterplan-core.module.d.ts +29 -29
  111. package/lib/ngx-smarterplan-core.service.d.ts +6 -6
  112. package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
  113. package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
  114. package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
  115. package/lib/pipes/safe-url.pipe.d.ts +10 -10
  116. package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
  117. package/lib/pipes/username-from-id.pipe.d.ts +11 -11
  118. package/lib/services/amplify-cache.service.d.ts +37 -37
  119. package/lib/services/base-tab.service.d.ts +10 -10
  120. package/lib/services/baseVisibility.service.d.ts +9 -9
  121. package/lib/services/content.service.d.ts +28 -28
  122. package/lib/services/filter.service.d.ts +60 -60
  123. package/lib/services/intervention.service.d.ts +25 -25
  124. package/lib/services/locale.service.d.ts +23 -23
  125. package/lib/services/matterport-import.service.d.ts +53 -53
  126. package/lib/services/matterport.service.d.ts +336 -336
  127. package/lib/services/models/affectation.service.d.ts +14 -14
  128. package/lib/services/models/base-object.service.d.ts +20 -20
  129. package/lib/services/models/capture.service.d.ts +13 -13
  130. package/lib/services/models/comment.service.d.ts +26 -26
  131. package/lib/services/models/domain.service.d.ts +19 -19
  132. package/lib/services/models/equipment.service.d.ts +93 -93
  133. package/lib/services/models/event.service.d.ts +43 -43
  134. package/lib/services/models/feature.service.d.ts +75 -74
  135. package/lib/services/models/hashtag.service.d.ts +13 -13
  136. package/lib/services/models/layer.service.d.ts +11 -11
  137. package/lib/services/models/measurement.service.d.ts +51 -51
  138. package/lib/services/models/mission.service.d.ts +39 -39
  139. package/lib/services/models/navigation.service.d.ts +29 -29
  140. package/lib/services/models/node.service.d.ts +12 -12
  141. package/lib/services/models/object3D.service.d.ts +57 -57
  142. package/lib/services/models/operation.service.d.ts +15 -15
  143. package/lib/services/models/organisation.service.d.ts +19 -19
  144. package/lib/services/models/plan.service.d.ts +133 -133
  145. package/lib/services/models/poi.service.d.ts +25 -25
  146. package/lib/services/models/profile.service.d.ts +16 -16
  147. package/lib/services/models/property.service.d.ts +13 -13
  148. package/lib/services/models/space.service.d.ts +46 -46
  149. package/lib/services/models/template.service.d.ts +15 -15
  150. package/lib/services/models/ticket.service.d.ts +93 -93
  151. package/lib/services/models/visit.service.d.ts +24 -24
  152. package/lib/services/models/zone.service.d.ts +50 -50
  153. package/lib/services/navigator.service.d.ts +61 -61
  154. package/lib/services/s3.service.d.ts +14 -14
  155. package/lib/services/search.service.d.ts +20 -20
  156. package/lib/services/support.service.d.ts +17 -17
  157. package/lib/services/tag.service.d.ts +29 -29
  158. package/lib/services/user.service.d.ts +118 -118
  159. package/lib/services/validators.service.d.ts +18 -18
  160. package/lib/services/viewer.service.d.ts +110 -110
  161. package/lib/services/zone-drawer.service.d.ts +7 -7
  162. package/lib/services/zoneChange.service.d.ts +17 -17
  163. package/lib/types.service.d.ts +842 -840
  164. package/lib/validators/email.directive.d.ts +2 -2
  165. package/lib/validators/no-empty.directive.d.ts +2 -2
  166. package/lib/validators/number.directive.d.ts +2 -2
  167. package/lib/validators/text.directive.d.ts +2 -2
  168. package/package.json +1 -1
  169. package/public-api.d.ts +64 -64
  170. 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