@mapsindoors/map-template 1.95.1 → 1.95.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/{GoogleMapsMap-C5n6Bgtp.mjs → GoogleMapsMap-Dkn60-_e.mjs} +2 -2
  2. package/dist/{MapboxMap-UCqzt1AC.mjs → MapboxMap-B1oo7IUm.mjs} +2 -2
  3. package/dist/_commonjsHelpers-B85MJLTf.js +5 -0
  4. package/dist/app-globals-DQuL1Twl.js +3 -0
  5. package/dist/combo-box-item.entry.js +8 -10
  6. package/dist/icon-DT_sDkmK.js +11 -0
  7. package/dist/index-BZQHyS7V.js +1701 -0
  8. package/dist/loader.js +7 -14
  9. package/dist/mapsindoors-react.es.js +1 -1
  10. package/dist/mapsindoors-react.umd.js +175 -175
  11. package/dist/mapsindoors-webcomponent.es.js +2916 -2904
  12. package/dist/mi-card_2.entry.js +23 -18
  13. package/dist/mi-chip.entry.js +25 -16
  14. package/dist/mi-column.entry.js +47 -23
  15. package/dist/mi-combo-box.entry.js +412 -379
  16. package/dist/mi-components.js +15 -12
  17. package/dist/mi-data-table.entry.js +300 -278
  18. package/dist/mi-distance_2.entry.js +58 -56
  19. package/dist/mi-dropdown-item.entry.js +8 -10
  20. package/dist/mi-dropdown.entry.js +527 -481
  21. package/dist/mi-floor-selector.entry.js +187 -180
  22. package/dist/mi-keyboard.entry.js +209 -186
  23. package/dist/mi-list-item-category.entry.js +44 -41
  24. package/dist/mi-list-item-location.entry.js +168 -162
  25. package/dist/mi-list.entry.js +60 -48
  26. package/dist/mi-location-booking.entry.js +320 -295
  27. package/dist/mi-location-info.entry.js +61 -53
  28. package/dist/mi-map-googlemaps.entry.js +369 -324
  29. package/dist/mi-map-mapbox.entry.js +502 -439
  30. package/dist/mi-metric-card.entry.js +50 -37
  31. package/dist/mi-my-position.entry.js +2345 -874
  32. package/dist/mi-notification.entry.js +112 -102
  33. package/dist/mi-route-instructions-heading.entry.js +70 -65
  34. package/dist/mi-route-instructions-maneuver-legacy.entry.js +80 -76
  35. package/dist/mi-route-instructions-maneuver.entry.js +80 -76
  36. package/dist/mi-route-instructions-step-legacy.entry.js +296 -282
  37. package/dist/mi-route-instructions-step.entry.js +313 -292
  38. package/dist/mi-route-instructions.entry.js +169 -150
  39. package/dist/mi-scroll-buttons.entry.js +106 -98
  40. package/dist/mi-search.entry.js +378 -325
  41. package/dist/mi-share-sms.entry.js +84 -70
  42. package/dist/mi-step-switcher.entry.js +34 -25
  43. package/dist/mi-tab-panel.entry.js +18 -18
  44. package/dist/mi-tab.entry.js +5 -7
  45. package/dist/mi-tabs.entry.js +42 -40
  46. package/dist/mi-time.entry.js +49 -49
  47. package/dist/mi-variables-CDNvnTkH.js +5 -0
  48. package/dist/{reactcomponent-DQsjxRIN.mjs → reactcomponent-2Oa1vSiK.mjs} +8996 -8660
  49. package/dist/route-travel-mode.enum-BvqP1fpw.js +9 -0
  50. package/dist/sort-order.enum-jsLAbYWg.js +566 -0
  51. package/dist/{unit-system.enum-eaefb53e.js → unit-system.enum-BwPgAWqL.js} +2 -2
  52. package/dist/utils-DNHzysQ6.js +61 -0
  53. package/package.json +1 -1
  54. package/dist/_commonjsHelpers-ba3f0406.js +0 -21
  55. package/dist/icon-b8d01d6f.js +0 -24
  56. package/dist/index-7e9696f3.js +0 -1678
  57. package/dist/mi-variables-9a6c8d4d.js +0 -6
  58. package/dist/polyfills/core-js.js +0 -11
  59. package/dist/polyfills/css-shim.js +0 -1
  60. package/dist/polyfills/dom.js +0 -79
  61. package/dist/polyfills/es5-html-element.js +0 -1
  62. package/dist/polyfills/index.js +0 -34
  63. package/dist/polyfills/system.js +0 -6
  64. package/dist/route-travel-mode.enum-7f4ce9c7.js +0 -9
  65. package/dist/sort-order.enum-64ce8998.js +0 -552
  66. package/dist/utils-ae714467.js +0 -61
@@ -1,5 +1,5 @@
1
- import { r as registerInstance, c as createEvent, h } from './index-7e9696f3.js';
2
- import { m as miVariables } from './mi-variables-9a6c8d4d.js';
1
+ import { r as registerInstance, c as createEvent, h } from './index-BZQHyS7V.js';
2
+ import { m as miVariables } from './mi-variables-CDNvnTkH.js';
3
3
 
4
4
  /******************************************************************************
5
5
  Copyright (c) Microsoft Corporation.
@@ -24,7 +24,7 @@ function __awaiter(thisArg, _arguments, P, generator) {
24
24
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
25
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
26
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
27
+ step((generator = generator.apply(thisArg, [])).next());
28
28
  });
29
29
  }
30
30
 
@@ -409,342 +409,387 @@ class Loader {
409
409
  }
410
410
  }
411
411
 
412
- const mapGooglemapsCss = ":host{display:block}:host>div{height:100%}.mapsindoors.floor-selector{margin:10px;position:absolute;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{margin:10px;position:absolute}.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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)}";
412
+ const mapGooglemapsCss = () => `:host{display:block}:host>div{height:100%}.mapsindoors.floor-selector{margin:10px;position:absolute;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{margin:10px;position:absolute}.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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)}`;
413
413
 
414
414
  const MapGooglemaps = class {
415
- constructor(hostRef) {
416
- registerInstance(this, hostRef);
417
- this.mapsIndoorsReady = createEvent(this, "mapsIndoorsReady", 7);
418
- // Directions render and service instances
419
- this.directionsRendererInstance = null;
420
- this.gmApiKey = '';
421
- this.miApiKey = '';
422
- this.gmOptions = {
423
- zoom: 17,
424
- maxZoom: 21,
425
- center: { lat: 0, lng: 0 },
426
- mapTypeControl: false,
427
- streetViewControl: false
428
- };
429
- this.disableExternalLinks = false;
430
- this.floorSelectorControlPosition = undefined;
431
- this.floorIndex = undefined;
432
- this.myPositionControlPosition = undefined;
433
- this.polygonHighlightOptions = {
434
- strokeColor: '#EF6CCE',
435
- strokeOpacity: 1,
436
- strokeWeight: 2,
437
- fillColor: '#EF6CCE',
438
- fillOpacity: 0.2
439
- };
440
- this.language = 'en';
441
- this.polylineOptions = {
442
- color: '#3071d9',
443
- opacity: 1,
444
- weight: 4
445
- };
446
- }
447
- apiKeyChange(newApiKey) {
448
- mapsindoors.MapsIndoors.setMapsIndoorsApiKey(newApiKey);
449
- }
450
- gmOptionsChange(newControlOptions) {
451
- this.googleMapsInstance.setOptions(newControlOptions);
452
- }
453
- setExternalLinkBehavior(shouldDisableLinks) {
454
- if (shouldDisableLinks === true) {
455
- this.mapElement.addEventListener('click', this.preventExternalLink);
415
+ constructor(hostRef) {
416
+ registerInstance(this, hostRef);
417
+ this.mapsIndoorsReady = createEvent(this, "mapsIndoorsReady", 7);
418
+ /**
419
+ * The Google Maps API key.
420
+ * @type {string}
421
+ */
422
+ this.gmApiKey = '';
423
+ /**
424
+ * The MapsIndoors API key.
425
+ * @type {string}
426
+ */
427
+ this.miApiKey = '';
428
+ /**
429
+ * Google Maps options. Defaults to zoom: 17, maxZoom: 21, center: { lat: 0, lng: 0 }, mapTypeControl: false, streetViewControl: false.
430
+ * https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions
431
+ * @type {google.maps.MapOptions}
432
+ */
433
+ this.gmOptions = {
434
+ zoom: 17,
435
+ maxZoom: 21,
436
+ center: { lat: 0, lng: 0 },
437
+ mapTypeControl: false,
438
+ streetViewControl: false
439
+ };
440
+ /**
441
+ * Set to true to prevent external links on the map from opening.
442
+ * This can be useful when running the map on a kiosk where you never want the browser to navigate away.
443
+ * @type {boolean}
444
+ */
445
+ this.disableExternalLinks = false;
446
+ /**
447
+ * Styling of polygon highlight when a location is clicked.
448
+ * Set it to null to turn off highlighting.
449
+ * @type {object}
450
+ */
451
+ this.polygonHighlightOptions = {
452
+ strokeColor: '#EF6CCE',
453
+ strokeOpacity: 1,
454
+ strokeWeight: 2,
455
+ fillColor: '#EF6CCE',
456
+ fillOpacity: 0.2
457
+ };
458
+ /**
459
+ * Set the component language. Default set to English (en). Will not react to changes.
460
+ */
461
+ this.language = 'en';
462
+ /**
463
+ * Styling of how the polyline looks when getting a route.
464
+ * Color: The stroke color of direction polyline on the map. Accepts any legal HTML color value. Default: '#307ad9'.
465
+ * Opacity: The stroke opacity of directions polylines on the map. Numerical value between 0.0 and 1.0. Default: 1.
466
+ * Weight: The width of the direction polyline in pixels. Default: 4.
467
+ *
468
+ * @type {{ color: string, weight: number, opacity: number }}
469
+ */
470
+ this.polylineOptions = {
471
+ color: '#3071d9',
472
+ opacity: 1,
473
+ weight: 4
474
+ };
475
+ // Directions render and service instances
476
+ this.directionsRendererInstance = null;
456
477
  }
457
- else {
458
- this.mapElement.removeEventListener('click', this.preventExternalLink);
478
+ apiKeyChange(newApiKey) {
479
+ mapsindoors.MapsIndoors.setMapsIndoorsApiKey(newApiKey);
459
480
  }
460
- }
461
- floorSelectorControlPositionChange(newPosition, oldPosition) {
462
- if (this.floorSelectorInstance) {
463
- this.setFloorSelectorControl(newPosition, oldPosition);
481
+ gmOptionsChange(newControlOptions) {
482
+ this.googleMapsInstance.setOptions(newControlOptions);
464
483
  }
465
- }
466
- floorIndexChange(newFloor, oldFloor) {
467
- if (newFloor === null) {
468
- newFloor = '0'; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
484
+ setExternalLinkBehavior(shouldDisableLinks) {
485
+ if (shouldDisableLinks === true) {
486
+ this.mapElement.addEventListener('click', this.preventExternalLink);
487
+ }
488
+ else {
489
+ this.mapElement.removeEventListener('click', this.preventExternalLink);
490
+ }
469
491
  }
470
- if (newFloor !== oldFloor && newFloor !== this.mapsIndoorsInstance.getFloor()) {
471
- this.mapsIndoorsInstance.setFloor(newFloor);
492
+ floorSelectorControlPositionChange(newPosition, oldPosition) {
493
+ if (this.floorSelectorInstance) {
494
+ this.setFloorSelectorControl(newPosition, oldPosition);
495
+ }
472
496
  }
473
- }
474
- myPositionControlPositionChange(newPosition, oldPosition) {
475
- this.setMyPositionControl(newPosition, oldPosition);
476
- }
477
- polylineOptionsChange(newPolylineOptions) {
478
- if (this.directionsRendererInstance) {
479
- this.directionsRendererInstance.setOptions({
480
- strokeColor: newPolylineOptions.color ? newPolylineOptions.color : '#3071d9',
481
- strokeOpacity: newPolylineOptions.opacity ? newPolylineOptions.opacity : 1,
482
- strokeWeight: newPolylineOptions.weight ? newPolylineOptions.weight : 4
483
- });
497
+ floorIndexChange(newFloor, oldFloor) {
498
+ if (newFloor === null) {
499
+ newFloor = '0'; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
500
+ }
501
+ if (newFloor !== oldFloor && newFloor !== this.mapsIndoorsInstance.getFloor()) {
502
+ this.mapsIndoorsInstance.setFloor(newFloor);
503
+ }
484
504
  }
485
- }
486
- /**
487
- * Get the map instance.
488
- * @returns {Promise<any>}
489
- */
490
- async getMapInstance() {
491
- return Promise.resolve(this.googleMapsInstance);
492
- }
493
- /**
494
- * Get the MapsIndoors instance.
495
- * @returns {Promise<any>}
496
- */
497
- async getMapsIndoorsInstance() {
498
- return Promise.resolve(this.mapsIndoorsInstance);
499
- }
500
- /**
501
- * Get the MapsIndoors Directions Service Instance.
502
- * @returns {Promise<any>}
503
- */
504
- async getDirectionsServiceInstance() {
505
- return Promise.resolve(this.directionsServiceInstance);
506
- }
507
- /**
508
- * Get the MapsIndoors Directions Renderer Instance.
509
- * @returns {Promise<any>}
510
- */
511
- async getDirectionsRendererInstance() {
512
- return Promise.resolve(this.directionsRendererInstance);
513
- }
514
- /**
515
- * Highlight a MapsIndoors location. Only a single location can be highlighted at the time.
516
- * @param {Location} location
517
- * @returns {Promise<void>}
518
- */
519
- async highlightLocation(location) {
520
- // Return if polygonHighlightOptions is undefined
521
- if (!this.polygonHighlightOptions)
522
- return;
523
- // Return if already highlighted
524
- if (this.highlightedLocationId && this.highlightedLocationId === location.id)
525
- return;
526
- // Remove previous highlight
527
- if (this.highlightedLocationId) {
528
- this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
529
- }
530
- this.mapsIndoorsInstance.setDisplayRule(location.id, {
531
- polygonVisible: true,
532
- polygonZoomFrom: '0',
533
- polygonZoomTo: '22',
534
- zIndex: 1000,
535
- polygonFillColor: this.polygonHighlightOptions.fillColor,
536
- polygonFillOpacity: this.polygonHighlightOptions.fillOpacity,
537
- polygonStrokeColor: this.polygonHighlightOptions.strokeColor,
538
- polygonStrokeOpacity: this.polygonHighlightOptions.strokeOpacity,
539
- polygonStrokeWeight: this.polygonHighlightOptions.strokeWeight
540
- });
541
- this.highlightedLocationId = location.id;
542
- }
543
- /**
544
- * Clear existing MapsIndoors location highlight.
545
- * @returns {Promise<void>}
546
- */
547
- async clearHighlightLocation() {
548
- if (this.highlightedLocationId) {
549
- this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
550
- this.highlightedLocationId = null;
505
+ myPositionControlPositionChange(newPosition, oldPosition) {
506
+ this.setMyPositionControl(newPosition, oldPosition);
551
507
  }
552
- }
553
- async componentDidLoad() {
554
- await this.loadGoogleMapsApi();
555
- await this.initializeMapsIndoorsSDK();
556
- await this.setupMap();
557
- this.setExternalLinkBehavior(this.disableExternalLinks);
558
- this.addEventListeners();
559
- if (this.floorSelectorControlPosition) {
560
- this.showFloorSelector();
561
- }
562
- if (this.myPositionControlPosition) {
563
- this.setMyPositionControl(this.myPositionControlPosition);
508
+ polylineOptionsChange(newPolylineOptions) {
509
+ if (this.directionsRendererInstance) {
510
+ this.directionsRendererInstance.setOptions({
511
+ strokeColor: newPolylineOptions.color ? newPolylineOptions.color : '#3071d9',
512
+ strokeOpacity: newPolylineOptions.opacity ? newPolylineOptions.opacity : 1,
513
+ strokeWeight: newPolylineOptions.weight ? newPolylineOptions.weight : 4
514
+ });
515
+ }
564
516
  }
565
- }
566
- disconnectedCallback() {
567
- this.mapsIndoorsInstance.deallocate();
568
- this.mapElement.remove();
569
- this.mapElement = null;
570
- }
571
- /**
572
- * Load the Google Maps API.
573
- *
574
- * @returns {Promise<void>}
575
- */
576
- loadGoogleMapsApi() {
577
- if (typeof (google) === 'undefined') {
578
- const loader = new Loader({
579
- apiKey: this.gmApiKey,
580
- version: 'quarterly',
581
- libraries: ['geometry', 'places']
582
- });
583
- return loader.load();
517
+ /**
518
+ * Get the map instance.
519
+ * @returns {Promise<any>}
520
+ */
521
+ async getMapInstance() {
522
+ return Promise.resolve(this.googleMapsInstance);
584
523
  }
585
- }
586
- /**
587
- * Ensure that MapsIndoors Web SDK is available.
588
- *
589
- * @returns {Promise<void>}
590
- */
591
- initializeMapsIndoorsSDK() {
592
- return new Promise((resolve) => {
593
- if (typeof (mapsindoors) !== 'undefined') {
594
- mapsindoors.MapsIndoors.setMapsIndoorsApiKey(this.miApiKey);
595
- mapsindoors.MapsIndoors.setLanguage(this.language);
596
- return resolve();
597
- }
598
- const miSdkApiTag = document.createElement('script');
599
- miSdkApiTag.setAttribute('type', 'text/javascript');
600
- miSdkApiTag.setAttribute('src', `${miVariables.miSDKUrlV4}?apikey=${this.miApiKey}`);
601
- document.body.appendChild(miSdkApiTag);
602
- miSdkApiTag.onload = () => resolve();
603
- });
604
- }
605
- /**
606
- * Start Google Maps and MapsIndoors.
607
- */
608
- setupMap() {
609
- return new Promise((resolve) => {
610
- const mapViewOptions = Object.assign({ element: this.mapElement }, this.gmOptions);
611
- const mapViewInstance = new mapsindoors.mapView.GoogleMapsView(mapViewOptions);
612
- this.googleMapsInstance = mapViewInstance.getMap();
613
- this.mapsIndoorsInstance = new mapsindoors.MapsIndoors({ mapView: mapViewInstance });
614
- this.mapsIndoorsInstance.on('ready', async () => {
615
- if (this.floorIndex !== undefined) {
616
- // Set the floor if floor attribute was set in the DOM initially
617
- this.mapsIndoorsInstance.setFloor(this.floorIndex);
524
+ /**
525
+ * Get the MapsIndoors instance.
526
+ * @returns {Promise<any>}
527
+ */
528
+ async getMapsIndoorsInstance() {
529
+ return Promise.resolve(this.mapsIndoorsInstance);
530
+ }
531
+ /**
532
+ * Get the MapsIndoors Directions Service Instance.
533
+ * @returns {Promise<any>}
534
+ */
535
+ async getDirectionsServiceInstance() {
536
+ return Promise.resolve(this.directionsServiceInstance);
537
+ }
538
+ /**
539
+ * Get the MapsIndoors Directions Renderer Instance.
540
+ * @returns {Promise<any>}
541
+ */
542
+ async getDirectionsRendererInstance() {
543
+ return Promise.resolve(this.directionsRendererInstance);
544
+ }
545
+ /**
546
+ * Highlight a MapsIndoors location. Only a single location can be highlighted at the time.
547
+ * @param {Location} location
548
+ * @returns {Promise<void>}
549
+ */
550
+ async highlightLocation(location) {
551
+ // Return if polygonHighlightOptions is undefined
552
+ if (!this.polygonHighlightOptions)
553
+ return;
554
+ // Return if already highlighted
555
+ if (this.highlightedLocationId && this.highlightedLocationId === location.id)
556
+ return;
557
+ // Remove previous highlight
558
+ if (this.highlightedLocationId) {
559
+ this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
618
560
  }
619
- else {
620
- this.floorIndex = this.mapsIndoorsInstance.getFloor();
621
- }
622
- this.initializeDirectionsService();
623
- this.initializeDirectionsRenderer();
624
- this.mapsIndoorsReady.emit();
625
- resolve();
626
- });
627
- });
628
- }
629
- /**
630
- * Initialize MapsIndoors Directions Service.
631
- */
632
- initializeDirectionsService() {
633
- const externalDirections = new mapsindoors.directions.GoogleMapsProvider();
634
- this.directionsServiceInstance = new mapsindoors.services.DirectionsService(externalDirections);
635
- }
636
- /**
637
- * Initialize MapsIndoors Directions Renderer with render options set.
638
- */
639
- initializeDirectionsRenderer() {
640
- this.directionsRendererInstance = new mapsindoors.directions.DirectionsRenderer({
641
- mapsIndoors: this.mapsIndoorsInstance,
642
- fitBounds: true,
643
- strokeColor: this.polylineOptions.color,
644
- strokeOpacity: this.polylineOptions.opacity,
645
- strokeWeight: this.polylineOptions.weight,
646
- visible: true
647
- });
648
- }
649
- /**
650
- * Add event listeners and keep properties in sync.
651
- */
652
- addEventListeners() {
653
- this.mapsIndoorsInstance.on('click', (location) => {
654
- this.highlightLocation(location);
655
- });
656
- // Add floor changed event listener
657
- this.mapsIndoorsInstance.on('floor_changed', (floorIndex) => {
658
- this.floorIndex = floorIndex;
659
- });
660
- }
661
- /**
662
- * Prevent external links from opening.
663
- * @param {MouseEvent} event
664
- */
665
- preventExternalLink(event) {
666
- const externalLink = event.target.closest('a[target="_blank"]');
667
- if (externalLink) {
668
- event.preventDefault();
561
+ this.mapsIndoorsInstance.setDisplayRule(location.id, {
562
+ polygonVisible: true,
563
+ polygonZoomFrom: '0',
564
+ polygonZoomTo: '22',
565
+ zIndex: 1000,
566
+ polygonFillColor: this.polygonHighlightOptions.fillColor,
567
+ polygonFillOpacity: this.polygonHighlightOptions.fillOpacity,
568
+ polygonStrokeColor: this.polygonHighlightOptions.strokeColor,
569
+ polygonStrokeOpacity: this.polygonHighlightOptions.strokeOpacity,
570
+ polygonStrokeWeight: this.polygonHighlightOptions.strokeWeight
571
+ });
572
+ this.highlightedLocationId = location.id;
669
573
  }
670
- }
671
- /**
672
- * Show the floor selector.
673
- */
674
- showFloorSelector() {
675
- this.setFloorSelectorControl(this.floorSelectorControlPosition);
676
- }
677
- /**
678
- * Remove a Google Map Control from the map based on class name of the control.
679
- * @param {string} controlPosition - the position from where to remove the control
680
- * @param {string} className - the class name of the control to remove
681
- */
682
- removeGoogleMapControl(controlPosition, className) {
683
- const controls = this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].getArray();
684
- const controlIndex = controls.findIndex(control => control.classList.contains(className));
685
- this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].removeAt(controlIndex);
686
- }
687
- /**
688
- * Set, update or unset floor selector on the map.
689
- * @param {string} controlPosition
690
- * @param {string} [oldControlPosition=undefined]
691
- */
692
- setFloorSelectorControl(controlPosition, oldControlPosition = undefined) {
693
- if (controlPosition === null) {
694
- // If attribute is not set, clear control and unset floor selector.
695
- this.removeGoogleMapControl(oldControlPosition, 'floor-selector');
696
- this.floorSelectorElement = null;
697
- this.floorSelectorInstance = null;
698
- }
699
- else if (!this.floorSelectorInstance) {
700
- // Create new floor selector control
701
- this.floorSelectorElement = document.createElement('div');
702
- this.floorSelectorInstance = new mapsindoors.FloorSelector(this.floorSelectorElement, this.mapsIndoorsInstance);
703
- this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.floorSelectorElement);
704
- }
705
- else {
706
- // Update position of floor selector control
707
- this.removeGoogleMapControl(oldControlPosition, 'floor-selector');
708
- this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.floorSelectorElement);
574
+ /**
575
+ * Clear existing MapsIndoors location highlight.
576
+ * @returns {Promise<void>}
577
+ */
578
+ async clearHighlightLocation() {
579
+ if (this.highlightedLocationId) {
580
+ this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
581
+ this.highlightedLocationId = null;
582
+ }
709
583
  }
710
- }
711
- /**
712
- * Set, update or unset position control on the map.
713
- * @param {string} controlPosition
714
- * @param {string} oldControlPosition
715
- */
716
- setMyPositionControl(controlPosition, oldControlPosition = undefined) {
717
- if (controlPosition === null) {
718
- // If attribute is not set, clear control and unset position control.
719
- this.removeGoogleMapControl(google.maps.ControlPosition[oldControlPosition], 'position-control');
720
- this.positionControlElement = null;
721
- this.positionControlInstance = null;
722
- }
723
- else if (!this.positionControlInstance) {
724
- // Create new my position control
725
- this.positionControlElement = document.createElement('div');
726
- this.positionControlInstance = new mapsindoors.PositionControl(this.positionControlElement, { mapsIndoors: this.mapsIndoorsInstance, positionOptions: { enableHighAccuracy: false, maximumAge: 300000, timeout: 10000 } });
727
- this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.positionControlElement);
728
- }
729
- else {
730
- // Update position of my position control
731
- this.removeGoogleMapControl(oldControlPosition, 'position-control');
732
- this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.positionControlElement);
584
+ async componentDidLoad() {
585
+ await this.loadGoogleMapsApi();
586
+ await this.initializeMapsIndoorsSDK();
587
+ await this.setupMap();
588
+ this.setExternalLinkBehavior(this.disableExternalLinks);
589
+ this.addEventListeners();
590
+ if (this.floorSelectorControlPosition) {
591
+ this.showFloorSelector();
592
+ }
593
+ if (this.myPositionControlPosition) {
594
+ this.setMyPositionControl(this.myPositionControlPosition);
595
+ }
733
596
  }
734
- }
735
- render() {
736
- return (h("div", { ref: (el) => this.mapElement = el }));
737
- }
738
- static get watchers() { return {
739
- "miApiKey": ["apiKeyChange"],
740
- "gmOptions": ["gmOptionsChange"],
741
- "disableExternalLinks": ["setExternalLinkBehavior"],
742
- "floorSelectorControlPosition": ["floorSelectorControlPositionChange"],
743
- "floorIndex": ["floorIndexChange"],
744
- "myPositionControlPosition": ["myPositionControlPositionChange"],
745
- "polylineOptions": ["polylineOptionsChange"]
746
- }; }
597
+ disconnectedCallback() {
598
+ this.mapsIndoorsInstance.deallocate();
599
+ this.mapElement.remove();
600
+ this.mapElement = null;
601
+ }
602
+ /**
603
+ * Load the Google Maps API.
604
+ *
605
+ * @returns {Promise<void>}
606
+ */
607
+ loadGoogleMapsApi() {
608
+ if (typeof (google) === 'undefined') {
609
+ const loader = new Loader({
610
+ apiKey: this.gmApiKey,
611
+ version: 'quarterly',
612
+ libraries: ['geometry', 'places']
613
+ });
614
+ return loader.load();
615
+ }
616
+ }
617
+ /**
618
+ * Ensure that MapsIndoors Web SDK is available.
619
+ *
620
+ * @returns {Promise<void>}
621
+ */
622
+ initializeMapsIndoorsSDK() {
623
+ return new Promise((resolve) => {
624
+ if (typeof (mapsindoors) !== 'undefined') {
625
+ mapsindoors.MapsIndoors.setMapsIndoorsApiKey(this.miApiKey);
626
+ mapsindoors.MapsIndoors.setLanguage(this.language);
627
+ return resolve();
628
+ }
629
+ const miSdkApiTag = document.createElement('script');
630
+ miSdkApiTag.setAttribute('type', 'text/javascript');
631
+ miSdkApiTag.setAttribute('src', `${miVariables.miSDKUrlV4}?apikey=${this.miApiKey}`);
632
+ document.body.appendChild(miSdkApiTag);
633
+ miSdkApiTag.onload = () => resolve();
634
+ });
635
+ }
636
+ /**
637
+ * Start Google Maps and MapsIndoors.
638
+ */
639
+ setupMap() {
640
+ return new Promise((resolve) => {
641
+ const mapViewOptions = Object.assign({ element: this.mapElement }, this.gmOptions);
642
+ const mapViewInstance = new mapsindoors.mapView.GoogleMapsView(mapViewOptions);
643
+ this.googleMapsInstance = mapViewInstance.getMap();
644
+ this.mapsIndoorsInstance = new mapsindoors.MapsIndoors({ mapView: mapViewInstance });
645
+ this.mapsIndoorsInstance.on('ready', async () => {
646
+ if (this.floorIndex !== undefined) {
647
+ // Set the floor if floor attribute was set in the DOM initially
648
+ this.mapsIndoorsInstance.setFloor(this.floorIndex);
649
+ }
650
+ else {
651
+ this.floorIndex = this.mapsIndoorsInstance.getFloor();
652
+ }
653
+ this.initializeDirectionsService();
654
+ this.initializeDirectionsRenderer();
655
+ this.mapsIndoorsReady.emit();
656
+ resolve();
657
+ });
658
+ });
659
+ }
660
+ /**
661
+ * Initialize MapsIndoors Directions Service.
662
+ */
663
+ initializeDirectionsService() {
664
+ const externalDirections = new mapsindoors.directions.GoogleMapsProvider();
665
+ this.directionsServiceInstance = new mapsindoors.services.DirectionsService(externalDirections);
666
+ }
667
+ /**
668
+ * Initialize MapsIndoors Directions Renderer with render options set.
669
+ */
670
+ initializeDirectionsRenderer() {
671
+ this.directionsRendererInstance = new mapsindoors.directions.DirectionsRenderer({
672
+ mapsIndoors: this.mapsIndoorsInstance,
673
+ fitBounds: true,
674
+ strokeColor: this.polylineOptions.color,
675
+ strokeOpacity: this.polylineOptions.opacity,
676
+ strokeWeight: this.polylineOptions.weight,
677
+ visible: true
678
+ });
679
+ }
680
+ /**
681
+ * Add event listeners and keep properties in sync.
682
+ */
683
+ addEventListeners() {
684
+ this.mapsIndoorsInstance.on('click', (location) => {
685
+ this.highlightLocation(location);
686
+ });
687
+ // Add floor changed event listener
688
+ this.mapsIndoorsInstance.on('floor_changed', (floorIndex) => {
689
+ this.floorIndex = floorIndex;
690
+ });
691
+ }
692
+ /**
693
+ * Prevent external links from opening.
694
+ * @param {MouseEvent} event
695
+ */
696
+ preventExternalLink(event) {
697
+ const externalLink = event.target.closest('a[target="_blank"]');
698
+ if (externalLink) {
699
+ event.preventDefault();
700
+ }
701
+ }
702
+ /**
703
+ * Show the floor selector.
704
+ */
705
+ showFloorSelector() {
706
+ this.setFloorSelectorControl(this.floorSelectorControlPosition);
707
+ }
708
+ /**
709
+ * Remove a Google Map Control from the map based on class name of the control.
710
+ * @param {string} controlPosition - the position from where to remove the control
711
+ * @param {string} className - the class name of the control to remove
712
+ */
713
+ removeGoogleMapControl(controlPosition, className) {
714
+ const controls = this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].getArray();
715
+ const controlIndex = controls.findIndex(control => control.classList.contains(className));
716
+ this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].removeAt(controlIndex);
717
+ }
718
+ /**
719
+ * Set, update or unset floor selector on the map.
720
+ * @param {string} controlPosition
721
+ * @param {string} [oldControlPosition=undefined]
722
+ */
723
+ setFloorSelectorControl(controlPosition, oldControlPosition = undefined) {
724
+ if (controlPosition === null) {
725
+ // If attribute is not set, clear control and unset floor selector.
726
+ this.removeGoogleMapControl(oldControlPosition, 'floor-selector');
727
+ this.floorSelectorElement = null;
728
+ this.floorSelectorInstance = null;
729
+ }
730
+ else if (!this.floorSelectorInstance) {
731
+ // Create new floor selector control
732
+ this.floorSelectorElement = document.createElement('div');
733
+ this.floorSelectorInstance = new mapsindoors.FloorSelector(this.floorSelectorElement, this.mapsIndoorsInstance);
734
+ this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.floorSelectorElement);
735
+ }
736
+ else {
737
+ // Update position of floor selector control
738
+ this.removeGoogleMapControl(oldControlPosition, 'floor-selector');
739
+ this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.floorSelectorElement);
740
+ }
741
+ }
742
+ /**
743
+ * Set, update or unset position control on the map.
744
+ * @param {string} controlPosition
745
+ * @param {string} oldControlPosition
746
+ */
747
+ setMyPositionControl(controlPosition, oldControlPosition = undefined) {
748
+ if (controlPosition === null) {
749
+ // If attribute is not set, clear control and unset position control.
750
+ this.removeGoogleMapControl(google.maps.ControlPosition[oldControlPosition], 'position-control');
751
+ this.positionControlElement = null;
752
+ this.positionControlInstance = null;
753
+ }
754
+ else if (!this.positionControlInstance) {
755
+ // Create new my position control
756
+ this.positionControlElement = document.createElement('div');
757
+ this.positionControlInstance = new mapsindoors.PositionControl(this.positionControlElement, { mapsIndoors: this.mapsIndoorsInstance, positionOptions: { enableHighAccuracy: false, maximumAge: 300000, timeout: 10000 } });
758
+ this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.positionControlElement);
759
+ }
760
+ else {
761
+ // Update position of my position control
762
+ this.removeGoogleMapControl(oldControlPosition, 'position-control');
763
+ this.googleMapsInstance.controls[google.maps.ControlPosition[controlPosition]].push(this.positionControlElement);
764
+ }
765
+ }
766
+ render() {
767
+ return (h("div", { key: '4de72ef7235db42765f97ad5e3d92d4080876225', ref: (el) => this.mapElement = el }));
768
+ }
769
+ static get watchers() { return {
770
+ "miApiKey": [{
771
+ "apiKeyChange": 0
772
+ }],
773
+ "gmOptions": [{
774
+ "gmOptionsChange": 0
775
+ }],
776
+ "disableExternalLinks": [{
777
+ "setExternalLinkBehavior": 0
778
+ }],
779
+ "floorSelectorControlPosition": [{
780
+ "floorSelectorControlPositionChange": 0
781
+ }],
782
+ "floorIndex": [{
783
+ "floorIndexChange": 0
784
+ }],
785
+ "myPositionControlPosition": [{
786
+ "myPositionControlPositionChange": 0
787
+ }],
788
+ "polylineOptions": [{
789
+ "polylineOptionsChange": 0
790
+ }]
791
+ }; }
747
792
  };
748
- MapGooglemaps.style = mapGooglemapsCss;
793
+ MapGooglemaps.style = mapGooglemapsCss();
749
794
 
750
795
  export { MapGooglemaps as mi_map_googlemaps };