@mapsindoors/map-template 1.93.2 → 1.94.0

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 (103) hide show
  1. package/dist/{GoogleMapsMap-982405ad.mjs → GoogleMapsMap-BqYRaFgc.mjs} +51 -62
  2. package/dist/MapboxMap-CUYrfLHY.mjs +34732 -0
  3. package/dist/_commonjsHelpers-ba3f0406.js +21 -0
  4. package/dist/combo-box-item.entry.js +15 -0
  5. package/dist/icon-b8d01d6f.js +24 -0
  6. package/dist/index-7e9696f3.js +1678 -0
  7. package/dist/index.js +1 -0
  8. package/dist/loader.js +18 -0
  9. package/dist/mapsindoors-react.es.js +3 -5
  10. package/dist/mapsindoors-react.umd.js +197 -582
  11. package/dist/mapsindoors-webcomponent.es.js +58512 -75790
  12. package/dist/mi-card_2.entry.js +28 -0
  13. package/dist/mi-chip.entry.js +22 -0
  14. package/dist/mi-column.entry.js +28 -0
  15. package/dist/mi-combo-box.entry.js +416 -0
  16. package/dist/mi-components.js +18 -0
  17. package/dist/mi-data-table.entry.js +302 -0
  18. package/dist/mi-distance_2.entry.js +67 -0
  19. package/dist/mi-dropdown-item.entry.js +15 -0
  20. package/dist/mi-dropdown.entry.js +610 -0
  21. package/dist/mi-floor-selector.entry.js +202 -0
  22. package/dist/mi-keyboard.entry.js +238 -0
  23. package/dist/mi-list-item-category.entry.js +48 -0
  24. package/dist/mi-list-item-location.entry.js +171 -0
  25. package/dist/mi-list.entry.js +56 -0
  26. package/dist/mi-location-booking.entry.js +5193 -0
  27. package/dist/mi-location-info.entry.js +63 -0
  28. package/dist/mi-map-googlemaps.entry.js +750 -0
  29. package/dist/mi-map-mapbox.entry.js +467 -0
  30. package/dist/mi-metric-card.entry.js +48 -0
  31. package/dist/mi-my-position.entry.js +986 -0
  32. package/dist/mi-notification.entry.js +127 -0
  33. package/dist/mi-route-instructions-heading.entry.js +73 -0
  34. package/dist/mi-route-instructions-maneuver-legacy.entry.js +82 -0
  35. package/dist/mi-route-instructions-maneuver.entry.js +82 -0
  36. package/dist/mi-route-instructions-step-legacy.entry.js +308 -0
  37. package/dist/mi-route-instructions-step.entry.js +321 -0
  38. package/dist/mi-route-instructions.entry.js +157 -0
  39. package/dist/mi-scroll-buttons.entry.js +112 -0
  40. package/dist/mi-search.entry.js +376 -0
  41. package/dist/mi-share-sms.entry.js +80 -0
  42. package/dist/mi-step-switcher.entry.js +31 -0
  43. package/dist/mi-tab-panel.entry.js +25 -0
  44. package/dist/mi-tab.entry.js +12 -0
  45. package/dist/mi-tabs.entry.js +47 -0
  46. package/dist/mi-time.entry.js +57 -0
  47. package/dist/mi-variables-9a6c8d4d.js +6 -0
  48. package/dist/polyfills/core-js.js +11 -0
  49. package/dist/polyfills/css-shim.js +1 -0
  50. package/dist/polyfills/dom.js +79 -0
  51. package/dist/polyfills/es5-html-element.js +1 -0
  52. package/dist/polyfills/index.js +34 -0
  53. package/dist/polyfills/system.js +6 -0
  54. package/dist/{reactcomponent-7fbbd9b2.mjs → reactcomponent-DTepe7hB.mjs} +14121 -14626
  55. package/dist/route-travel-mode.enum-7f4ce9c7.js +9 -0
  56. package/dist/sort-order.enum-64ce8998.js +552 -0
  57. package/dist/unit-system.enum-eaefb53e.js +7 -0
  58. package/dist/utils-ae714467.js +61 -0
  59. package/package.json +10 -6
  60. package/dist/MapboxMap-06ef82a3.mjs +0 -37815
  61. package/dist/_commonjsHelpers-ba3f0406-b96e6d6a.mjs +0 -22
  62. package/dist/combo-box-item.entry-d35f3d51.mjs +0 -15
  63. package/dist/icon-b8d01d6f-ddfa2c17.mjs +0 -25
  64. package/dist/mapsindoors-webcomponent.umd.js +0 -3245
  65. package/dist/mi-card_2.entry-fc772c35.mjs +0 -26
  66. package/dist/mi-chip.entry-81c742a1.mjs +0 -19
  67. package/dist/mi-column.entry-3a083282.mjs +0 -21
  68. package/dist/mi-combo-box.entry-cae6401a.mjs +0 -263
  69. package/dist/mi-data-table.entry-d4c3f445.mjs +0 -224
  70. package/dist/mi-distance_2.entry-a33ed69a.mjs +0 -339
  71. package/dist/mi-dropdown-item.entry-974d1e4f.mjs +0 -15
  72. package/dist/mi-dropdown.entry-5317db65.mjs +0 -349
  73. package/dist/mi-floor-selector.entry-185fbd8b.mjs +0 -115
  74. package/dist/mi-keyboard.entry-eaf4b9ef.mjs +0 -3103
  75. package/dist/mi-list-item-category.entry-9c95008c.mjs +0 -39
  76. package/dist/mi-list-item-location.entry-8b41e8f0.mjs +0 -137
  77. package/dist/mi-list.entry-1218d29d.mjs +0 -42
  78. package/dist/mi-location-booking.entry-270aaf5a.mjs +0 -4866
  79. package/dist/mi-location-info.entry-e4f7fd04.mjs +0 -32
  80. package/dist/mi-map-googlemaps.entry-81fa28d2.mjs +0 -467
  81. package/dist/mi-map-mapbox.entry-31821da3.mjs +0 -301
  82. package/dist/mi-metric-card.entry-40407f04.mjs +0 -29
  83. package/dist/mi-my-position.entry-bc48fe6e.mjs +0 -703
  84. package/dist/mi-notification.entry-9a2bc53b.mjs +0 -84
  85. package/dist/mi-route-instructions-heading.entry-e5b1ff04.mjs +0 -75
  86. package/dist/mi-route-instructions-maneuver-legacy.entry-2c3d73ab.mjs +0 -76
  87. package/dist/mi-route-instructions-maneuver.entry-c6f01024.mjs +0 -76
  88. package/dist/mi-route-instructions-step-legacy.entry-80bcf097.mjs +0 -202
  89. package/dist/mi-route-instructions-step.entry-db802e13.mjs +0 -231
  90. package/dist/mi-route-instructions.entry-62416e29.mjs +0 -143
  91. package/dist/mi-scroll-buttons.entry-92b62b21.mjs +0 -83
  92. package/dist/mi-search.entry-87f1e64a.mjs +0 -251
  93. package/dist/mi-share-sms.entry-b6725edb.mjs +0 -56
  94. package/dist/mi-step-switcher.entry-f8f6c040.mjs +0 -27
  95. package/dist/mi-tab-panel.entry-a89213c2.mjs +0 -22
  96. package/dist/mi-tab.entry-a2fb3f8c.mjs +0 -14
  97. package/dist/mi-tabs.entry-cd638ea7.mjs +0 -37
  98. package/dist/mi-time.entry-0b02870d.mjs +0 -46
  99. package/dist/mi-variables-9a6c8d4d-e06eec88.mjs +0 -8
  100. package/dist/route-travel-mode.enum-7f4ce9c7-a9c95a83.mjs +0 -8
  101. package/dist/sort-order.enum-64ce8998-b75ac596.mjs +0 -318
  102. package/dist/unit-system.enum-eaefb53e-0f424da4.mjs +0 -8
  103. package/dist/utils-ae714467-b07fc3be.mjs +0 -37
@@ -0,0 +1,467 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host } from './index-7e9696f3.js';
2
+ import { m as miVariables } from './mi-variables-9a6c8d4d.js';
3
+
4
+ /**
5
+ * Create a new instance of the MapsIndoors Floor-selector map control.
6
+ *
7
+ * @export
8
+ * @class FloorSelectorControl
9
+ */
10
+ class FloorSelectorControl {
11
+ constructor(map, mapsIndoorsInstance) {
12
+ this.map = map;
13
+ this.floorSelectorElement = document.createElement('div');
14
+ this.floorSelectorInstance = new mapsindoors.FloorSelector(this.floorSelectorElement, mapsIndoorsInstance);
15
+ }
16
+ /**
17
+ * Triggered by mapbox when added to the map.
18
+ * @returns {HTMLDivElement} The Floor Selector control element.
19
+ */
20
+ onAdd() {
21
+ this.floorSelectorElement.classList.add('mapboxgl-ctrl');
22
+ return this.floorSelectorElement;
23
+ }
24
+ /**
25
+ * Remove element and clean up references
26
+ * Triggered by mapbox when removed from the map.
27
+ */
28
+ onRemove() {
29
+ this.floorSelectorElement.parentNode.removeChild(this.floorSelectorElement);
30
+ this.map = undefined;
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Create a new instance of the MapsIndoors My Position map control.
36
+ *
37
+ * @export
38
+ * @class MyPositionControl
39
+ */
40
+ class MyPositionControl {
41
+ constructor(map, mapsIndoorsInstance) {
42
+ this.map = map;
43
+ this.myPositionControlElement = document.createElement('div');
44
+ this.myPositionControlInstance = new mapsindoors.PositionControl(this.myPositionControlElement, {
45
+ mapsIndoors: mapsIndoorsInstance,
46
+ positionOptions: {
47
+ enableHighAccuracy: false,
48
+ maximumAge: 300000,
49
+ timeout: 10000
50
+ }
51
+ });
52
+ }
53
+ /**
54
+ * Triggered by mapbox when added to the map.
55
+ * @returns {HTMLDivElement} The My Position control element.
56
+ */
57
+ onAdd() {
58
+ this.myPositionControlElement.classList.add('mapboxgl-ctrl');
59
+ return this.myPositionControlElement;
60
+ }
61
+ /**
62
+ * Remove element and clean up references
63
+ * Triggered by mapbox when removed from the map.
64
+ */
65
+ onRemove() {
66
+ this.myPositionControlElement.parentNode.removeChild(this.myPositionControlElement);
67
+ this.map = undefined;
68
+ }
69
+ }
70
+
71
+ const mapMapboxCss = ":host{display:block}:host>div{height:100%}.mapsindoors.floor-selector{border-radius:2px;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.3);width:40px;font-family:Figtree, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:18px}.mapsindoors.floor-selector a{position:relative;display:block;float:none;margin-top:-1px;text-align:center;cursor:pointer;border-radius:2px;background:#fff;z-index:0;height:40px;line-height:40px}.mapsindoors.floor-selector a:hover{background:#ddd;border-color:#999;z-index:2}.mapsindoors.floor-selector a.active{background:#ddd;border-color:#00b1ff;z-index:2}.mapsindoors.floor-selector a:not(:first-child):not(:last-child){border-radius:0}.mapsindoors.floor-selector a:first-child:not(:last-child){border-top-right-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mapsindoors.floor-selector a:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:2px;border-top-left-radius:0}.mapsindoors.position-control__button{border:none;margin:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;width:40px;height:40px;background-color:transparent;background-size:cover;outline:none;box-shadow:0px 4px 4px rgba(0, 0, 0, 0.16), 0px 2px 2px rgba(0, 0, 0, 0.18), 0px 1px 1px rgba(0, 0, 0, 0.2);border-radius:50%}.mapsindoors.position-control__button--unknown{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--requesting{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--known{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--centered{background-image:url(data:image/png;base64,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)}";
72
+
73
+ const MapMapbox = class {
74
+ constructor(hostRef) {
75
+ registerInstance(this, hostRef);
76
+ this.mapsIndoorsReady = createEvent(this, "mapsIndoorsReady", 7);
77
+ // Directions render and service instances
78
+ this.directionsRendererInstance = null;
79
+ this.accessToken = undefined;
80
+ this.miApiKey = '';
81
+ this.disableExternalLinks = false;
82
+ this.floorSelectorControlPosition = undefined;
83
+ this.floorIndex = undefined;
84
+ this.myPositionControlPosition = undefined;
85
+ this.polygonHighlightOptions = {
86
+ strokeColor: '#EF6CCE',
87
+ strokeOpacity: 1,
88
+ strokeWeight: 2,
89
+ fillColor: '#EF6CCE',
90
+ fillOpacity: 0.2
91
+ };
92
+ this.polylineOptions = {
93
+ color: '#3071d9',
94
+ opacity: 1,
95
+ weight: 4
96
+ };
97
+ this.zoom = '17';
98
+ this.maxPitch = 60;
99
+ this.maxZoom = undefined;
100
+ this.bearing = '0';
101
+ this.pitch = '0';
102
+ this.language = 'en';
103
+ }
104
+ apiKeyChange(newApiKey) {
105
+ mapsindoors.MapsIndoors.setMapsIndoorsApiKey(newApiKey);
106
+ }
107
+ setExternalLinkBehavior(shouldDisableLinks) {
108
+ if (shouldDisableLinks === true) {
109
+ this.mapElement.addEventListener('click', this.preventExternalLink);
110
+ }
111
+ else {
112
+ this.mapElement.removeEventListener('click', this.preventExternalLink);
113
+ }
114
+ }
115
+ floorSelectorControlPositionChange(newPosition) {
116
+ if (this.floorSelectorControl) {
117
+ this.setFloorSelectorControl(newPosition);
118
+ }
119
+ }
120
+ floorIndexChange(newFloor, oldFloor) {
121
+ if (newFloor === null) {
122
+ newFloor = '0'; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
123
+ }
124
+ if (newFloor !== oldFloor && newFloor !== this.mapsIndoorsInstance.getFloor()) {
125
+ this.mapsIndoorsInstance.setFloor(newFloor);
126
+ }
127
+ }
128
+ myPositionControlPositionChange(newPosition) {
129
+ this.setMyPositionControl(newPosition);
130
+ }
131
+ polylineOptionsChange(newPolylineOptions) {
132
+ if (this.directionsRendererInstance) {
133
+ this.directionsRendererInstance.setOptions({
134
+ strokeColor: newPolylineOptions.color ? newPolylineOptions.color : '#3071d9',
135
+ strokeOpacity: newPolylineOptions.opacity ? newPolylineOptions.opacity : 1,
136
+ strokeWeight: newPolylineOptions.weight ? newPolylineOptions.weight : 4
137
+ });
138
+ }
139
+ }
140
+ zoomChange(newZoom, oldZoom) {
141
+ if (newZoom !== oldZoom && newZoom !== this.mapboxInstance.getZoom()) {
142
+ if (newZoom === null) {
143
+ newZoom = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
144
+ }
145
+ this.mapboxInstance.setZoom(newZoom);
146
+ }
147
+ }
148
+ maxPitchChange(newPitch, oldPitch) {
149
+ if (newPitch !== oldPitch && newPitch !== this.mapboxInstance.getMaxPitch()) {
150
+ if (newPitch === null) {
151
+ newPitch = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
152
+ }
153
+ this.mapboxInstance.setMaxPitch(newPitch);
154
+ }
155
+ }
156
+ maxZoomChange(newZoom, oldZoom) {
157
+ if (newZoom !== oldZoom && newZoom !== this.mapboxInstance.getMaxZoom()) {
158
+ if (newZoom === null) {
159
+ newZoom = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
160
+ }
161
+ this.mapboxInstance.setMaxZoom(newZoom);
162
+ }
163
+ }
164
+ bearingChange(newBearing, oldBearing) {
165
+ if (newBearing !== oldBearing && newBearing !== this.mapboxInstance.getBearing()) {
166
+ if (newBearing === null) {
167
+ newBearing = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
168
+ }
169
+ this.mapboxInstance.setBearing(newBearing);
170
+ }
171
+ }
172
+ pitchChange(newPitch, oldPitch) {
173
+ if (newPitch !== oldPitch && newPitch !== this.mapboxInstance.getPitch()) {
174
+ if (newPitch === null) {
175
+ newPitch = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
176
+ }
177
+ this.mapboxInstance.setPitch(newPitch);
178
+ }
179
+ }
180
+ /**
181
+ * Get the map instance.
182
+ * @returns {Promise<any>}
183
+ */
184
+ async getMapInstance() {
185
+ return Promise.resolve(this.mapboxInstance);
186
+ }
187
+ /**
188
+ * Get the MapsIndoors instance.
189
+ * @returns {Promise<any>}
190
+ */
191
+ async getMapsIndoorsInstance() {
192
+ return Promise.resolve(this.mapsIndoorsInstance);
193
+ }
194
+ /**
195
+ * Get the MapsIndoors Directions Service Instance.
196
+ * @returns {Promise<any>}
197
+ */
198
+ async getDirectionsServiceInstance() {
199
+ return Promise.resolve(this.directionsServiceInstance);
200
+ }
201
+ /**
202
+ * Get the MapsIndoors Directions Renderer Instance.
203
+ * @returns {Promise<any>}
204
+ */
205
+ async getDirectionsRendererInstance() {
206
+ return Promise.resolve(this.directionsRendererInstance);
207
+ }
208
+ /**
209
+ * Highlight a MapsIndoors location. Only a single location can be highlighted at the time.
210
+ * @param {Location} location
211
+ * @returns {Promise<void>}
212
+ */
213
+ async highlightLocation(location) {
214
+ // Return if polygonHighlightOptions is undefined
215
+ if (!this.polygonHighlightOptions)
216
+ return;
217
+ // Return if already highlighted
218
+ if (this.highlightedLocationId && this.highlightedLocationId === location.id)
219
+ return;
220
+ // Remove previous highlight
221
+ if (this.highlightedLocationId) {
222
+ this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
223
+ }
224
+ this.mapsIndoorsInstance.setDisplayRule(location.id, {
225
+ polygonVisible: true,
226
+ polygonZoomFrom: '0',
227
+ polygonZoomTo: '22',
228
+ zIndex: 1000,
229
+ polygonFillColor: this.polygonHighlightOptions.fillColor,
230
+ polygonFillOpacity: this.polygonHighlightOptions.fillOpacity,
231
+ polygonStrokeColor: this.polygonHighlightOptions.strokeColor,
232
+ polygonStrokeOpacity: this.polygonHighlightOptions.strokeOpacity,
233
+ polygonStrokeWeight: this.polygonHighlightOptions.strokeWeight
234
+ });
235
+ this.highlightedLocationId = location.id;
236
+ }
237
+ /**
238
+ * Clear existing MapsIndoors location highlight.
239
+ * @returns {Promise<void>}
240
+ */
241
+ async clearHighlightLocation() {
242
+ if (this.highlightedLocationId) {
243
+ this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
244
+ this.highlightedLocationId = null;
245
+ }
246
+ }
247
+ async componentDidLoad() {
248
+ await this.insertMapBoxScript();
249
+ await this.initializeMapsIndoorsSDK();
250
+ await this.setupMap();
251
+ this.setExternalLinkBehavior(this.disableExternalLinks);
252
+ this.addEventListeners();
253
+ if (this.floorSelectorControlPosition) {
254
+ this.showFloorSelector();
255
+ }
256
+ if (this.myPositionControlPosition) {
257
+ this.setMyPositionControl(this.myPositionControlPosition);
258
+ }
259
+ }
260
+ disconnectedCallback() {
261
+ this.mapsIndoorsInstance.deallocate();
262
+ this.mapElement.remove();
263
+ this.mapElement = null;
264
+ }
265
+ /**
266
+ * Inject script tag for Mapbox API onto the page.
267
+ *
268
+ * @returns {Promise<void>}
269
+ */
270
+ insertMapBoxScript() {
271
+ if (typeof (mapboxgl) === 'undefined') {
272
+ return new Promise(resolve => {
273
+ const mapboxApiTag = document.createElement('script');
274
+ mapboxApiTag.setAttribute('type', 'text/javascript');
275
+ // When upgrading the version please remember to update url to the MapBox css in the render function.
276
+ mapboxApiTag.setAttribute('src', 'https://api.mapbox.com/mapbox-gl-js/v2.3.0/mapbox-gl.js');
277
+ document.body.appendChild(mapboxApiTag);
278
+ mapboxApiTag.onload = () => resolve();
279
+ });
280
+ }
281
+ }
282
+ /**
283
+ * Ensure that MapsIndoors Web SDK is available.
284
+ *
285
+ * @returns {Promise<void>}
286
+ */
287
+ initializeMapsIndoorsSDK() {
288
+ return new Promise((resolve) => {
289
+ if (typeof mapsindoors !== 'undefined') {
290
+ mapsindoors.MapsIndoors.setMapsIndoorsApiKey(this.miApiKey);
291
+ mapsindoors.MapsIndoors.setLanguage(this.language);
292
+ return resolve();
293
+ }
294
+ const miSdkApiTag = document.createElement('script');
295
+ miSdkApiTag.setAttribute('type', 'text/javascript');
296
+ miSdkApiTag.setAttribute('src', `${miVariables.miSDKUrlV4}?apikey=${this.miApiKey}`);
297
+ document.body.appendChild(miSdkApiTag);
298
+ miSdkApiTag.onload = () => resolve();
299
+ });
300
+ }
301
+ /**
302
+ * Start MapBox and MapsIndoors.
303
+ */
304
+ setupMap() {
305
+ return new Promise((resolve) => {
306
+ const mapViewOptions = {
307
+ accessToken: this.accessToken,
308
+ element: this.mapElement,
309
+ zoom: this.zoom,
310
+ maxZoom: this.maxZoom,
311
+ maxPitch: this.maxPitch,
312
+ bearing: this.bearing,
313
+ pitch: this.pitch
314
+ };
315
+ const mapViewInstance = new mapsindoors.mapView.MapboxView(mapViewOptions);
316
+ this.mapboxInstance = mapViewInstance.getMap();
317
+ this.mapsIndoorsInstance = new mapsindoors.MapsIndoors({
318
+ mapView: mapViewInstance,
319
+ labelOptions: {
320
+ pixelOffset: { width: 0, height: 14 },
321
+ style: {
322
+ fontSize: '11px'
323
+ }
324
+ }
325
+ });
326
+ // Add zoom and rotation controls
327
+ const navigationControl = new mapboxgl.NavigationControl();
328
+ this.mapboxInstance.addControl(navigationControl, 'top-left');
329
+ this.mapsIndoorsInstance.on('ready', async () => {
330
+ if (this.floorIndex !== undefined) {
331
+ // Set the floor if floor attribute was set in the DOM initially
332
+ this.mapsIndoorsInstance.setFloor(this.floorIndex);
333
+ }
334
+ else {
335
+ this.floorIndex = this.mapsIndoorsInstance.getFloor();
336
+ }
337
+ this.initializeDirectionsService();
338
+ this.initializeDirectionsRenderer();
339
+ this.mapsIndoorsReady.emit();
340
+ resolve();
341
+ });
342
+ });
343
+ }
344
+ /**
345
+ * Initialize MapsIndoors Directions Service.
346
+ */
347
+ initializeDirectionsService() {
348
+ const externalDirections = new mapsindoors.directions.MapboxProvider(this.accessToken);
349
+ this.directionsServiceInstance = new mapsindoors.services.DirectionsService(externalDirections);
350
+ }
351
+ /**
352
+ * Initialize MapsIndoors Directions Renderer with render options set.
353
+ */
354
+ initializeDirectionsRenderer() {
355
+ this.directionsRendererInstance = new mapsindoors.directions.DirectionsRenderer({
356
+ mapsIndoors: this.mapsIndoorsInstance,
357
+ fitBounds: true,
358
+ strokeColor: this.polylineOptions.color,
359
+ strokeOpacity: this.polylineOptions.opacity,
360
+ strokeWeight: this.polylineOptions.weight,
361
+ visible: true
362
+ });
363
+ }
364
+ /**
365
+ * Add event listeners and keep properties in sync.
366
+ */
367
+ addEventListeners() {
368
+ // Add click listener to highlight the clicked location
369
+ this.mapsIndoorsInstance.on('click', (location) => {
370
+ this.highlightLocation(location);
371
+ });
372
+ // Add floor changed event listener to update the floorIndex attribute
373
+ this.mapsIndoorsInstance.on('floor_changed', (floorIndex) => {
374
+ this.floorIndex = floorIndex;
375
+ });
376
+ // Add zoom end event listener to update the zoom attribute
377
+ this.mapboxInstance.on('zoomend', () => {
378
+ this.zoom = this.mapboxInstance.getZoom().toString();
379
+ });
380
+ // Add pitch (tilt) end listener to update the pitch attribute
381
+ this.mapboxInstance.on('pitchend', () => {
382
+ this.pitch = this.mapboxInstance.getPitch().toString();
383
+ });
384
+ // Add rotate end listener to update the bearing attribute
385
+ this.mapboxInstance.on('rotateend', () => {
386
+ this.bearing = this.mapboxInstance.getBearing().toString();
387
+ });
388
+ }
389
+ /**
390
+ * Prevent external links from opening.
391
+ * @param {MouseEvent} event
392
+ */
393
+ preventExternalLink(event) {
394
+ const externalLink = event.target.closest('a[target="_blank"]');
395
+ if (externalLink) {
396
+ event.preventDefault();
397
+ }
398
+ }
399
+ /**
400
+ * Show the floor selector after user interacts with map.
401
+ * Sets up event listener what when invoked will set the floor selector on the map.
402
+ */
403
+ showFloorSelector() {
404
+ this.setFloorSelectorControl(this.floorSelectorControlPosition);
405
+ }
406
+ /**
407
+ * Set, update or unset floor selector on the map.
408
+ * @param {('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')} controlPosition
409
+ */
410
+ setFloorSelectorControl(controlPosition) {
411
+ if (controlPosition === null) {
412
+ // If attribute is not set, remove floor selector control
413
+ this.mapboxInstance.removeControl(this.floorSelectorControl);
414
+ this.floorSelectorControl = null;
415
+ }
416
+ else if (!this.floorSelectorControl) {
417
+ // Create new floor selector control
418
+ this.floorSelectorControl = new FloorSelectorControl(this.mapboxInstance, this.mapsIndoorsInstance);
419
+ this.mapboxInstance.addControl(this.floorSelectorControl, this.floorSelectorControlPosition);
420
+ }
421
+ else {
422
+ // Update position of floor selector control
423
+ this.mapboxInstance.removeControl(this.floorSelectorControl);
424
+ this.mapboxInstance.addControl(this.floorSelectorControl, this.floorSelectorControlPosition);
425
+ }
426
+ }
427
+ /**
428
+ * Set, update or unset my position control on the map.
429
+ * @param {('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')} controlPosition
430
+ */
431
+ setMyPositionControl(controlPosition) {
432
+ if (controlPosition === null) {
433
+ // If attribute is not set, remove my position control
434
+ this.mapboxInstance.removeControl(this.myPositionControl);
435
+ this.myPositionControl = null;
436
+ }
437
+ else if (!this.myPositionControl) {
438
+ // Create new my position control
439
+ this.myPositionControl = new MyPositionControl(this.mapboxInstance, this.mapsIndoorsInstance);
440
+ this.mapboxInstance.addControl(this.myPositionControl, this.myPositionControlPosition);
441
+ }
442
+ else {
443
+ // Update position of my position control
444
+ this.mapboxInstance.removeControl(this.myPositionControl);
445
+ this.mapboxInstance.addControl(this.myPositionControl, this.myPositionControlPosition);
446
+ }
447
+ }
448
+ render() {
449
+ return (h(Host, null, h("link", { href: 'https://api.mapbox.com/mapbox-gl-js/v2.3.0/mapbox-gl.css', rel: 'stylesheet' }), h("div", { ref: (el) => this.mapElement = el })));
450
+ }
451
+ static get watchers() { return {
452
+ "miApiKey": ["apiKeyChange"],
453
+ "disableExternalLinks": ["setExternalLinkBehavior"],
454
+ "floorSelectorControlPosition": ["floorSelectorControlPositionChange"],
455
+ "floorIndex": ["floorIndexChange"],
456
+ "myPositionControlPosition": ["myPositionControlPositionChange"],
457
+ "polylineOptions": ["polylineOptionsChange"],
458
+ "zoom": ["zoomChange"],
459
+ "maxPitch": ["maxPitchChange"],
460
+ "maxZoom": ["maxZoomChange"],
461
+ "bearing": ["bearingChange"],
462
+ "pitch": ["pitchChange"]
463
+ }; }
464
+ };
465
+ MapMapbox.style = mapMapboxCss;
466
+
467
+ export { MapMapbox as mi_map_mapbox };
@@ -0,0 +1,48 @@
1
+ import { r as registerInstance, h, H as Host } from './index-7e9696f3.js';
2
+ import { a as isNumber, f as formatNumber } from './utils-ae714467.js';
3
+
4
+ const metricCardCss = ":host{font-family:Figtree, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";flex-shrink:0;flex-grow:1}:host mi-card{position:relative;overflow:hidden;min-width:312px}:host mi-card .content h1{display:inline-flex;cursor:default;align-items:center;text-transform:uppercase;white-space:nowrap;margin:0;font-size:1rem;font-weight:600;color:#6b7280;margin-bottom:8px}:host mi-card .content h1 svg{fill:#9ca3af;width:16px;height:16px;margin-left:8px}:host mi-card .content section{position:relative}:host mi-card .content section p{margin:0;font-size:3rem;line-height:3rem;font-weight:500;color:#1c1917}:host mi-card .content section p.error{font-size:1rem;font-weight:500;color:#6b7280}:host mi-card .content section p.hidden{visibility:hidden}:host mi-card .content section p.tool-tip{box-sizing:border-box;visibility:hidden;overflow:hidden;position:absolute;top:0px;right:0px;bottom:0px;left:0px;opacity:0;transition:all 100ms;z-index:700;background-color:#ffffff;font-size:0.875rem;font-weight:400;line-height:1rem;margin:0}:host mi-card .content section p.tool-tip.visible{opacity:1;visibility:visible}:host mi-card .content section mi-spinner{display:inline-block;vertical-align:middle;width:100%}";
5
+
6
+ const MetricCard = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ this.showToolTip = false;
10
+ this.label = '';
11
+ this.value = '';
12
+ this.tip = undefined;
13
+ this.spinner = false;
14
+ this.error = undefined;
15
+ }
16
+ render() {
17
+ return (h(Host, null, h("mi-card", null, this.renderContent())));
18
+ }
19
+ renderToolTip() {
20
+ if (this.tip > '') {
21
+ return h("p", { class: { 'tool-tip': true, 'visible': this.tip && this.showToolTip } }, this.tip);
22
+ }
23
+ }
24
+ getInfoIcon() {
25
+ if (this.tip > '') {
26
+ return h("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24", viewBox: "0 0 24 24", width: "24" }, h("path", { d: "M0 0h24v24H0V0z", fill: "none" }), h("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92c-.5.51-.86.97-1.04 1.69-.08.32-.13.68-.13 1.14h-2v-.5c0-.46.08-.9.22-1.31.2-.58.53-1.1.95-1.52l1.24-1.26c.46-.44.68-1.1.55-1.8-.13-.72-.69-1.33-1.39-1.53-1.11-.31-2.14.32-2.47 1.27-.12.37-.43.65-.82.65h-.3C8.4 9 8 8.44 8.16 7.88c.43-1.47 1.68-2.59 3.23-2.83 1.52-.24 2.97.55 3.87 1.8 1.18 1.63.83 3.38-.19 4.4z" }));
27
+ }
28
+ }
29
+ renderContent() {
30
+ let value;
31
+ if (this.value) {
32
+ value = isNumber(this.value) ? formatNumber(this.value) : this.value;
33
+ }
34
+ else if (this.error) {
35
+ value = this.error;
36
+ }
37
+ else if (this.spinner) {
38
+ value = h("mi-spinner", null);
39
+ }
40
+ else {
41
+ value = ' ';
42
+ }
43
+ return h("div", { class: "content" }, h("h1", { onMouseOver: () => this.showToolTip = true, onMouseOut: () => this.showToolTip = false }, this.label, " ", this.getInfoIcon()), h("section", null, this.renderToolTip(), h("p", { class: { 'error': !!this.error, 'hidden': this.tip && this.showToolTip } }, value)));
44
+ }
45
+ };
46
+ MetricCard.style = metricCardCss;
47
+
48
+ export { MetricCard as mi_metric_card };