proximiio-js-library 1.6.2 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -119,6 +119,7 @@ const map = new Proximiio.Map({
119
119
  initPolygons: false, // optional, default: false, if enabled and yours geojson includes required data the map will show defined features as polygons with hover/click effect
120
120
  considerVisibilityParam: false, // optional, default: true, if enabled all pois with visibility property defined as 'hidden' will not be visible as default, will be possible to toggle them with toggleHiddenPois() method
121
121
  fitBoundsPadding: 200, // optional, default 250, number | PaddingOptions, the amount of padding in pixels to add to the given bounds for found route, https://docs.mapbox.com/mapbox-gl-js/api/properties/#paddingoptions
122
+ minFitBoundsDistance: 50, // optional, default 15, number, the minimum route length in meters to zoom into it's bounds, if length is smaller regular center change will be used
122
123
  showLevelDirectionIcon: false // optional, default: false, if enabled arrow icon will be shown at the levelchanger indicating direction of level change along the found route,
123
124
  showRasterFloorplans: false // optional, default: false, if enabled raster floorplans will be visible,
124
125
  animatedRoute: false // optional, default: false, EXPERIMENTAL, if enabled animated dot will be displayed along the route,
@@ -486,7 +487,41 @@ map.getMapReadyListener().subscribe(ready => {
486
487
 
487
488
  ##### Map Features Filtering
488
489
 
489
- ###### Setting new filter
490
+ ###### Setting new feature filter
491
+ With this method you set only defined poi feature to be visible, calling this method multiple times will set another feature to be visible without hiding the previous one.
492
+ ```
493
+ // param query {string} id or title of the feature
494
+
495
+ const map = new Proximiio.Map();
496
+ map.getMapReadyListener().subscribe(ready => {
497
+ console.log('map ready', ready);
498
+ map.setFeatureFilter('myfeature');
499
+ });
500
+ ```
501
+
502
+ ###### Removing created feature filter
503
+ Method for removing previously created feature filters.
504
+ ```
505
+ // param query {string} id or title of the feature
506
+
507
+ const map = new Proximiio.Map();
508
+ map.getMapReadyListener().subscribe(ready => {
509
+ console.log('map ready', ready);
510
+ map.removeFeatureFilter('myfeature');
511
+ });
512
+ ```
513
+
514
+ ###### Resetting all feature filters
515
+ Method for removing all active feature filters.
516
+ ```
517
+ const map = new Proximiio.Map();
518
+ map.getMapReadyListener().subscribe(ready => {
519
+ console.log('map ready', ready);
520
+ map.resetFeatureFilters();
521
+ });
522
+ ```
523
+
524
+ ###### Setting new amenity filter
490
525
  You'll be able to show features only for defined amenity id on map with this method, also with defining the category _(NOTE: you have to create them before with [setAmenitiesCategory()](#setting-new-amenities-category) method)_, filtering will be set only for defined array of amenities in the category. With category set, only one amenity filter can be active at the time, while without the category they stack so multiple amenities can be active.
491
526
 
492
527
  ```
@@ -500,7 +535,7 @@ map.getMapReadyListener().subscribe(ready => {
500
535
  });
501
536
  ```
502
537
 
503
- ###### Removing created filter
538
+ ###### Removing created amenity filter
504
539
  Method for removing previously created amenity filters. In case amenity filter has been set with the category parameter, you have to use same param for removing the filter.
505
540
 
506
541
  ```
@@ -514,8 +549,8 @@ map.getMapReadyListener().subscribe(ready => {
514
549
  });
515
550
  ```
516
551
 
517
- ###### Resetting all filters
518
- Method for removing all active filters.
552
+ ###### Resetting all amenity filters
553
+ Method for removing all active amenity filters.
519
554
 
520
555
  ```
521
556
  const map = new Proximiio.Map();
@@ -466,38 +466,42 @@ export class Wayfinding {
466
466
  }
467
467
 
468
468
  levelChanger.properties.fixedPointMap = new Map();
469
- levelChanger.properties.levels.forEach(level => {
470
- let point = this._copyPoint(levelChanger);
471
- point.properties.level = level;
472
- let fixedPoint = this._getFixPointInArea(point);
473
- fixedPoint.id = levelChanger.id;
474
- fixedPoint.properties.amenity = levelChanger.properties.amenity;
475
- fixedPoint.properties.direction = levelChanger.properties.direction;
476
- fixedPoint.properties.id = levelChanger.properties.id;
477
- fixedPoint.properties.level = level;
478
- fixedPoint.properties.type = levelChanger.properties.type;
479
- if (fixedPoint.properties.neighbours === undefined) fixedPoint.properties.neighbours = [];
480
-
481
- // Do not fix level changers that are further than 5 meters from any path or area
482
- if (this._distance(point, fixedPoint) > 5) {
483
- return;
484
- }
485
-
486
- // Store fixed point into the level changer
487
- levelChanger.properties.fixedPointMap.set(level, fixedPoint);
488
-
489
- // Add neighbourhood for corridor
490
- if (fixedPoint.properties.onCorridor) {
491
- // fixedPoint.properties.neighbours = [...this.corridorLinePointPairs[fixedPoint.properties.corridorIndex], ...segmentIntersectionPointMap.get(fixedPoint.properties.corridorIndex)];
492
- if (fixedPoint.properties.neighboursLeadingTo !== undefined) {
493
- fixedPoint.properties.neighboursLeadingTo.forEach(neighbour => {
494
- if (neighbour.properties.neighbours === undefined) neighbour.properties.neighbours = [];
495
- neighbour.properties.neighbours.push(fixedPoint);
496
- });
497
- this.corridorLineFeatures[fixedPoint.properties.corridorIndex].properties.intersectionPointList.push(fixedPoint);
469
+ if (levelChanger.properties.levels) {
470
+ levelChanger.properties.levels.forEach(level => {
471
+ let point = this._copyPoint(levelChanger);
472
+ point.properties.level = level;
473
+ let fixedPoint = this._getFixPointInArea(point);
474
+ if (fixedPoint) {
475
+ fixedPoint.id = levelChanger.id;
476
+ fixedPoint.properties.amenity = levelChanger.properties.amenity;
477
+ fixedPoint.properties.direction = levelChanger.properties.direction;
478
+ fixedPoint.properties.id = levelChanger.properties.id;
479
+ fixedPoint.properties.level = level;
480
+ fixedPoint.properties.type = levelChanger.properties.type;
481
+ if (fixedPoint.properties.neighbours === undefined) fixedPoint.properties.neighbours = [];
482
+
483
+ // Do not fix level changers that are further than 5 meters from any path or area
484
+ if (this._distance(point, fixedPoint) > 5) {
485
+ return;
486
+ }
487
+
488
+ // Store fixed point into the level changer
489
+ levelChanger.properties.fixedPointMap.set(level, fixedPoint);
490
+
491
+ // Add neighbourhood for corridor
492
+ if (fixedPoint.properties.onCorridor) {
493
+ // fixedPoint.properties.neighbours = [...this.corridorLinePointPairs[fixedPoint.properties.corridorIndex], ...segmentIntersectionPointMap.get(fixedPoint.properties.corridorIndex)];
494
+ if (fixedPoint.properties.neighboursLeadingTo !== undefined) {
495
+ fixedPoint.properties.neighboursLeadingTo.forEach(neighbour => {
496
+ if (neighbour.properties.neighbours === undefined) neighbour.properties.neighbours = [];
497
+ neighbour.properties.neighbours.push(fixedPoint);
498
+ });
499
+ this.corridorLineFeatures[fixedPoint.properties.corridorIndex].properties.intersectionPointList.push(fixedPoint);
500
+ }
501
+ }
498
502
  }
499
- }
500
- });
503
+ });
504
+ }
501
505
  });
502
506
 
503
507
  levelChangerGroupMap.forEach( (lcList, groupId) => {
@@ -1447,100 +1451,101 @@ export class Wayfinding {
1447
1451
 
1448
1452
  _getFixPointInArea(point) {
1449
1453
  let floorData = this.floorData.get(point.properties.level);
1450
-
1451
- // If point is located without accessible area, do nothing
1452
- let areaList = floorData.areas;
1453
- for (let index in areaList) {
1454
- let polygon = areaList[index];
1455
- if (turf.booleanContains(polygon, point)) {
1456
- return point;
1454
+ if (floorData) {
1455
+ // If point is located without accessible area, do nothing
1456
+ let areaList = floorData.areas;
1457
+ for (let index in areaList) {
1458
+ let polygon = areaList[index];
1459
+ if (turf.booleanContains(polygon, point)) {
1460
+ return point;
1461
+ }
1457
1462
  }
1458
- }
1459
1463
 
1460
- // Find nearest wall to stick to
1461
- let bestWall = null;
1462
- let bestWallDistance = Infinity;
1463
- floorData.wallFeatures.forEach(wall => {
1464
- let distance = turf.pointToLineDistance(point.geometry.coordinates, wall, {units: 'meters'});
1465
- if (distance < bestWallDistance) {
1466
- bestWall = wall;
1467
- bestWallDistance = distance;
1468
- }
1469
- });
1464
+ // Find nearest wall to stick to
1465
+ let bestWall = null;
1466
+ let bestWallDistance = Infinity;
1467
+ floorData.wallFeatures.forEach(wall => {
1468
+ let distance = turf.pointToLineDistance(point.geometry.coordinates, wall, {units: 'meters'});
1469
+ if (distance < bestWallDistance) {
1470
+ bestWall = wall;
1471
+ bestWallDistance = distance;
1472
+ }
1473
+ });
1470
1474
 
1471
- let levelCorridorFeatures = this.corridorLineFeatures.filter(corridorLine => corridorLine.properties.level === point.properties.level);
1472
- let bestCorridorIndex = null;
1473
- let bestCorridorDistance = Infinity;
1474
- levelCorridorFeatures.forEach(corridor => {
1475
- let corridorIndex = this.corridorLineFeatures.indexOf(corridor);
1476
- let corridorDistance = turf.pointToLineDistance(point.geometry.coordinates, corridor, {units: 'meters'});
1477
- if (corridorDistance < bestCorridorDistance) {
1478
- bestCorridorIndex = corridorIndex;
1479
- bestCorridorDistance = corridorDistance;
1480
- }
1481
- });
1475
+ let levelCorridorFeatures = this.corridorLineFeatures.filter(corridorLine => corridorLine.properties.level === point.properties.level);
1476
+ let bestCorridorIndex = null;
1477
+ let bestCorridorDistance = Infinity;
1478
+ levelCorridorFeatures.forEach(corridor => {
1479
+ let corridorIndex = this.corridorLineFeatures.indexOf(corridor);
1480
+ let corridorDistance = turf.pointToLineDistance(point.geometry.coordinates, corridor, {units: 'meters'});
1481
+ if (corridorDistance < bestCorridorDistance) {
1482
+ bestCorridorIndex = corridorIndex;
1483
+ bestCorridorDistance = corridorDistance;
1484
+ }
1485
+ });
1482
1486
 
1483
- // Test if area or corridor is closer, create appropriate fixed point
1484
- if (bestWall === null && bestCorridorIndex === null) {
1485
- // could not find neither close area or corridor
1486
- return point;
1487
- } else {
1488
- let fixedPoint;
1487
+ // Test if area or corridor is closer, create appropriate fixed point
1488
+ if (bestWall === null && bestCorridorIndex === null) {
1489
+ // could not find neither close area or corridor
1490
+ return point;
1491
+ } else {
1492
+ let fixedPoint;
1489
1493
 
1490
- // Corridor is closer
1491
- if (bestCorridorIndex !== undefined && bestCorridorDistance < bestWallDistance) {
1494
+ // Corridor is closer
1495
+ if (bestCorridorIndex !== undefined && bestCorridorDistance < bestWallDistance) {
1492
1496
 
1493
- // Create fixed point on line itself
1494
- let line = this.corridorLineFeatures[bestCorridorIndex];
1495
- fixedPoint = turf.nearestPointOnLine(line, point);
1497
+ // Create fixed point on line itself
1498
+ let line = this.corridorLineFeatures[bestCorridorIndex];
1499
+ fixedPoint = turf.nearestPointOnLine(line, point);
1496
1500
 
1497
- // Mark this fixed point is on corridor, preset neighbours
1498
- fixedPoint.properties.onCorridor = true;
1499
- fixedPoint.properties.corridorIndex = bestCorridorIndex;
1500
- if (!fixedPoint.properties.neighbours) {
1501
- fixedPoint.properties.neighbours = [];
1502
- }
1503
- if (this.corridorLineFeatures[bestCorridorIndex].properties.bidirectional != false) {
1504
- fixedPoint.properties.neighbours.push(this.corridorLinePointPairs[bestCorridorIndex][0], this.corridorLinePointPairs[bestCorridorIndex][1]);
1505
- fixedPoint.properties.neighbours.push(...line.properties.intersectionPointList);
1506
- fixedPoint.properties.neighboursLeadingTo = [
1507
- this.corridorLinePointPairs[bestCorridorIndex][0],
1508
- this.corridorLinePointPairs[bestCorridorIndex][1],
1509
- ...line.properties.intersectionPointList
1510
- ];
1511
- } else if (this.corridorLineFeatures[bestCorridorIndex].properties.swapDirection != true) {
1512
- fixedPoint.properties.neighbours.push(this.corridorLinePointPairs[bestCorridorIndex][0]);
1513
- // include only intersection points after this point
1514
- let distance = this._distance(fixedPoint, this.corridorLinePointPairs[bestCorridorIndex][0]);
1515
- let pointsBefore = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) < distance);
1516
- let pointsAfter = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) >= distance);
1517
- fixedPoint.properties.neighbours.push(...pointsAfter);
1518
- fixedPoint.properties.neighboursLeadingTo = pointsBefore;
1519
- } else {
1520
- fixedPoint.properties.neighbours.push(this.corridorLinePointPairs[bestCorridorIndex][1]);
1521
- // include only intersection points before this point
1522
- let distance = this._distance(fixedPoint, this.corridorLinePointPairs[bestCorridorIndex][0]);
1523
- let pointsBefore = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) <= distance);
1524
- let pointsAfter = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) > distance);
1525
- fixedPoint.properties.neighbours.push(...pointsBefore);
1526
- fixedPoint.properties.neighboursLeadingTo = pointsAfter;
1527
- }
1501
+ // Mark this fixed point is on corridor, preset neighbours
1502
+ fixedPoint.properties.onCorridor = true;
1503
+ fixedPoint.properties.corridorIndex = bestCorridorIndex;
1504
+ if (!fixedPoint.properties.neighbours) {
1505
+ fixedPoint.properties.neighbours = [];
1506
+ }
1507
+ if (this.corridorLineFeatures[bestCorridorIndex].properties.bidirectional != false) {
1508
+ fixedPoint.properties.neighbours.push(this.corridorLinePointPairs[bestCorridorIndex][0], this.corridorLinePointPairs[bestCorridorIndex][1]);
1509
+ fixedPoint.properties.neighbours.push(...line.properties.intersectionPointList);
1510
+ fixedPoint.properties.neighboursLeadingTo = [
1511
+ this.corridorLinePointPairs[bestCorridorIndex][0],
1512
+ this.corridorLinePointPairs[bestCorridorIndex][1],
1513
+ ...line.properties.intersectionPointList
1514
+ ];
1515
+ } else if (this.corridorLineFeatures[bestCorridorIndex].properties.swapDirection != true) {
1516
+ fixedPoint.properties.neighbours.push(this.corridorLinePointPairs[bestCorridorIndex][0]);
1517
+ // include only intersection points after this point
1518
+ let distance = this._distance(fixedPoint, this.corridorLinePointPairs[bestCorridorIndex][0]);
1519
+ let pointsBefore = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) < distance);
1520
+ let pointsAfter = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) >= distance);
1521
+ fixedPoint.properties.neighbours.push(...pointsAfter);
1522
+ fixedPoint.properties.neighboursLeadingTo = pointsBefore;
1523
+ } else {
1524
+ fixedPoint.properties.neighbours.push(this.corridorLinePointPairs[bestCorridorIndex][1]);
1525
+ // include only intersection points before this point
1526
+ let distance = this._distance(fixedPoint, this.corridorLinePointPairs[bestCorridorIndex][0]);
1527
+ let pointsBefore = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) <= distance);
1528
+ let pointsAfter = line.properties.intersectionPointList.filter(point => this._distance(point, this.corridorLinePointPairs[bestCorridorIndex][0]) > distance);
1529
+ fixedPoint.properties.neighbours.push(...pointsBefore);
1530
+ fixedPoint.properties.neighboursLeadingTo = pointsAfter;
1531
+ }
1528
1532
 
1529
- // Wall is closer
1530
- } else if (bestWall !== null) {
1533
+ // Wall is closer
1534
+ } else if (bestWall !== null) {
1531
1535
 
1532
- // Create fixed point inside area
1533
- let nearestPoint = turf.nearestPointOnLine(bestWall, point);
1534
- let bearing = turf.bearing(point, nearestPoint);
1535
- fixedPoint = turf.destination(point.geometry.coordinates, bestWallDistance + 0.05, bearing, {units: 'meters'});
1536
- }
1536
+ // Create fixed point inside area
1537
+ let nearestPoint = turf.nearestPointOnLine(bestWall, point);
1538
+ let bearing = turf.bearing(point, nearestPoint);
1539
+ fixedPoint = turf.destination(point.geometry.coordinates, bestWallDistance + 0.05, bearing, {units: 'meters'});
1540
+ }
1537
1541
 
1538
- // Mark level of fixed point
1539
- fixedPoint.properties.level = point.properties.level;
1542
+ // Mark level of fixed point
1543
+ fixedPoint.properties.level = point.properties.level;
1540
1544
 
1541
- // Return created point
1542
- return fixedPoint;
1545
+ // Return created point
1546
+ return fixedPoint;
1543
1547
 
1548
+ }
1544
1549
  }
1545
1550
  }
1546
1551
 
@@ -0,0 +1,8 @@
1
+ export default class BaseLogger {
2
+ id: string;
3
+ organization_id: string;
4
+ organization_name?: string;
5
+ visitor_id: string;
6
+ createdAt: Date;
7
+ constructor(data: any);
8
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var uuid_1 = require("uuid");
4
+ var BaseLogger = /** @class */ (function () {
5
+ function BaseLogger(data) {
6
+ this.id = data.id ? data.id : uuid_1.v4() + ":" + uuid_1.v4();
7
+ this.organization_id = data.organization_id;
8
+ this.organization_name = data.organization_name;
9
+ this.visitor_id = data.visitor_id ? data.visitor_id : uuid_1.v4();
10
+ this.createdAt = data.createdAt ? data.createdAt : new Date();
11
+ }
12
+ return BaseLogger;
13
+ }());
14
+ exports.default = BaseLogger;
@@ -0,0 +1,8 @@
1
+ export default class BaseLogger {
2
+ id: string;
3
+ organization_id: string;
4
+ organization_name?: string;
5
+ visitor_id: string;
6
+ createdAt: Date;
7
+ constructor(data: any);
8
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var common_1 = require("../../common");
4
+ var BaseLogger = /** @class */ (function () {
5
+ function BaseLogger(data) {
6
+ this.id = data.id ? data.id : common_1.uuidv4 + ":" + common_1.uuidv4;
7
+ this.organization_id = data.organization_id;
8
+ this.organization_name = data.organization_name;
9
+ this.visitor_id = data.visitor_id ? data.visitor_id : "" + common_1.uuidv4;
10
+ this.createdAt = data.createdAt ? data.createdAt : new Date();
11
+ }
12
+ return BaseLogger;
13
+ }());
14
+ exports.default = BaseLogger;
@@ -0,0 +1,25 @@
1
+ import BaseLogger from './base';
2
+ export default class WayfindingLogger extends BaseLogger {
3
+ startLngLat: [number, number];
4
+ startLevel: number;
5
+ startSegmentId?: string;
6
+ startSegmentName?: string;
7
+ startGeofenceId?: string;
8
+ startGeofenceName?: string;
9
+ destinationFeatureId?: string;
10
+ destinationName?: string;
11
+ destinationLngLat: [number, number];
12
+ destinationLevel: number;
13
+ foundPath: boolean;
14
+ optionAvoidBarrier: boolean;
15
+ optionAvoidElevators: boolean;
16
+ optionAvoidEscalators: boolean;
17
+ optionAvoidNarrowPaths: boolean;
18
+ optionAvoidRamps: boolean;
19
+ optionAvoidStaircases: boolean;
20
+ optionAvoidTicketGates: boolean;
21
+ route: [number, number, number][];
22
+ rerouted?: boolean;
23
+ constructor(data: any);
24
+ save(): Promise<void>;
25
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ var common_1 = require("../../common");
55
+ var base_1 = require("./base");
56
+ var WayfindingLogger = /** @class */ (function (_super) {
57
+ __extends(WayfindingLogger, _super);
58
+ function WayfindingLogger(data) {
59
+ var _this = _super.call(this, data) || this;
60
+ _this.startLngLat = data.startLngLat;
61
+ _this.startLevel = data.startLevel;
62
+ _this.startSegmentId = data.startSegmentId;
63
+ _this.startSegmentName = data.startSegmentName;
64
+ _this.startGeofenceId = data.startGeofenceId;
65
+ _this.startGeofenceName = data.startGeofenceName;
66
+ _this.destinationFeatureId = data.destinationFeatureId;
67
+ _this.destinationName = data.destinationName;
68
+ _this.destinationLngLat = data.destinationLngLat;
69
+ _this.destinationLevel = data.destinationLevel;
70
+ _this.foundPath = data.foundPath;
71
+ _this.optionAvoidBarrier = data.optionAvoidBarrier;
72
+ _this.optionAvoidElevators = data.optionAvoidElevators;
73
+ _this.optionAvoidEscalators = data.optionAvoidEscalators;
74
+ _this.optionAvoidNarrowPaths = data.optionAvoidNarrowPaths;
75
+ _this.optionAvoidRamps = data.optionAvoidRamps;
76
+ _this.optionAvoidStaircases = data.optionAvoidStaircases;
77
+ _this.optionAvoidTicketGates = data.optionAvoidTicketGates;
78
+ _this.route = data.route;
79
+ _this.rerouted = data.rerouted;
80
+ return _this;
81
+ }
82
+ WayfindingLogger.prototype.save = function () {
83
+ return __awaiter(this, void 0, void 0, function () {
84
+ var e_1;
85
+ return __generator(this, function (_a) {
86
+ switch (_a.label) {
87
+ case 0:
88
+ _a.trys.push([0, 2, , 3]);
89
+ return [4 /*yield*/, common_1.axios.post("v6/geo/wayfinding_logs", [this])];
90
+ case 1:
91
+ _a.sent();
92
+ return [3 /*break*/, 3];
93
+ case 2:
94
+ e_1 = _a.sent();
95
+ console.log("Log saving failed, " + e_1.message);
96
+ return [3 /*break*/, 3];
97
+ case 3: return [2 /*return*/];
98
+ }
99
+ });
100
+ });
101
+ };
102
+ return WayfindingLogger;
103
+ }(base_1.default));
104
+ exports.default = WayfindingLogger;
@@ -13,7 +13,7 @@ export declare const routeB = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADI
13
13
  export declare const marker = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABmJLR0QA/wD/AP+gvaeTAAABfklEQVRIie3WMU/CQBQH8NfaD+RgIuJEWP0c7C4aBpyMTIY4aVxNnB3UCLakTgxOJiY0aSElkVDUNoECLeVdz+kMKYYo7cEg/+nSXvq7XK7vHcCKIkQf5PIlysaXxf2Z99zgWjb7DW9I0guZTAqpavVWAKDRuYnDm3t7AADQ63aho2mDwPdtgng0RrzOqCpyh1mGjgOdet31XNenhBRHiOcZVfW5w9MLsHR9OHAcApSeSZSebslyjzvM4vX7YBnG0LUsAUTxAhBPthXF5g6zBKMRvDcantNuU6D0igbBcUpV37jDLDgew4dpBp/NJqGieEfCsJCuVDTuMAtBBNs0savrKAhCLUA83FWUZ+4wS0gI2K0WtQzDp2GohYQc7MiyPD1HjCXEiJTkx6JbPZmz1YnAM4cLoJAul+cerlhwnN9pITiJAvIn+MeSWS4vVDJ/BUebhJdAk5gLL70tsjHPi8BMcvkSvXl6pdNXIB5ZWeVaw2v4n8D3D4/LXsfy8gV9n0oC7aAw4wAAAABJRU5ErkJggg==";
14
14
  export declare const defaultIcon = "data:image/png;base64,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";
15
15
  export declare const chevron = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAABvElEQVRoge3YWUsCURiA4TPdVdBGli1E20XLr+gHB923WFdt0k6aQZlB+guCIHi7mCXBwY7fOJ5Pm/faYc7D6DnjZ0xWls6AEWAXeAE2XK9HVIDY57cGsOV6XR0VIA5orQFsul6fVQHiMAYRVlePCRBHbRBh78C66/XGBoxaIpoxa67X3RKw1wEi7A1YSXttQx1+/ktwjyVjTAFYFlybTsAw8TuVmidjHX/vWP8GU0XZ18x2G+4bTEGIeQYWXBui8M+WYyGmohFzkgAz79oQlRDzpA0zBpwJMWVgzrUhChgfNMy5EFMC8q4NUQHmYlAwEwkwt8C0a0MUMAVcCzFFwLO5T6ev8ZK+jTGfwmtnTW/W2D7838mp8Gk0gG3XhqSIOhrGSiQ7S3RMYPB3KukZomPykhBR04SQnhk1NIyNgEngUoh4GxTEqmuDAXL4rxKSqmiYqASIu35HzCRAvKJhghIg7oWICrDo2tANhI6JCfLX8TIpDxd6MY0vG2N2PM/7EFybTvhnRlHTkxCH/bZbQtNEJC4LjH5EWICJ28Ee0TQBsQl/O35oQtwAOdfrEgXkgSv8v7V6xjdZWd3pB9JxAjY9tg5oAAAAAElFTkSuQmCC";
16
- export declare const person = "data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhZCIgZGF0YS1pY29uPSJ3YWxraW5nIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtd2Fsa2luZyBmYS13LTEwIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyMCA1MTIiPjxnIGNsYXNzPSJmYS1ncm91cCI+PHBhdGggY2xhc3M9ImZhLXNlY29uZGFyeSIgZmlsbD0iY3VycmVudENvbG9yIiBkPSJNMjA4IDBhNDggNDggMCAxIDEtNDggNDggNDggNDggMCAwIDEgNDgtNDh6IiBvcGFjaXR5PSIwLjQiPjwvcGF0aD48cGF0aCBjbGFzcz0iZmEtcHJpbWFyeSIgZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNzMuNTggMzg1LjhhNjIuMDUgNjIuMDUgMCAwIDEtMTQuMiAyMS41bC01MCA1MC4xYTMyIDMyIDAgMCAwIDQ1LjIgNDUuM0wxMTQgNDQzLjNhNjQuODIgNjQuODIgMCAwIDAgMTQuMTktMjEuNWwxMy41LTMzLjhjLTU1LjI5LTYwLjMtMzguNjktNDEuOC00Ny40LTUzLjd6bTIyOC45LTE0MC43bC0yMy4zMS0xMS44LTkuNjktMjkuNGMtMTQuNzEtNDQuNi01NS43MS03NS44LTEwMi4yMS03NS45LTM2LS4xLTU1Ljg5IDEwLjEtOTMuMjkgMjUuMmE5NS40MSA5NS40MSAwIDAgMC00OS43MSA0Ni4yTDE3LjU4IDIxM2EzMi4xIDMyLjEgMCAwIDAgMTQuMTkgNDIuOSAzMS41NiAzMS41NiAwIDAgMCA0Mi41LTE0LjNMODEgMjI4YTMxLjc1IDMxLjc1IDAgMCAxIDE2LjUtMTUuNGwyNi43OS0xMC44LTE1LjE5IDYwLjdhNjQuMjIgNjQuMjIgMCAwIDAgMTQuOSA1OC44bDU5LjkgNjUuNGE2NC41MiA2NC41MiAwIDAgMSAxNC44OSAyNy43bDE4LjMxIDczLjNhMzIgMzIgMCAxIDAgNjIuMDktMTUuNWwtMjIuMTktODlhNjQuMDcgNjQuMDcgMCAwIDAtMTQuOS0yNy43bC00NS41LTQ5LjcgMTcuMTktNjguNyA1LjUgMTYuNWE2My44MyA2My44MyAwIDAgMCAzMS43MSAzN2wyMy4yOSAxMS44YTMxLjU2IDMxLjU2IDAgMCAwIDQyLjUtMTQuMyAzMi4zNyAzMi4zNyAwIDAgMC0xNC4zMS00M3oiPjwvcGF0aD48L2c+PC9zdmc+";
16
+ export declare const person = "data:image/png;base64,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";
17
17
  export declare const floorchangeDownImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0Y2MDk5Q0IyM0EyMTFFOEExQkQ5MDk1RDU5RTBCQ0UiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0Y2MDk5Q0MyM0EyMTFFOEExQkQ5MDk1RDU5RTBCQ0UiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjYwOTlDOTIzQTIxMUU4QTFCRDkwOTVENTlFMEJDRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjYwOTlDQTIzQTIxMUU4QTFCRDkwOTVENTlFMEJDRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsNnVNkAAAJISURBVHja7NxNSsNAGAbgxD+KUnWhUCi9hrtewWO51RMUFAaXQg/QhYuCV9CtpQtxZXelxG9kAjZN0kky881k8r7wUkpKJn0ozQ+ZREmSRNkyZEx9pa6piYGu1frGtjd8x8oB4C11Ywgu241af7CAx9SlJby0SzUOC+BBxJsb6sDyGAM1Dku4Aa8DG4cdMLgAEIAABCAAEQACEIAARAAIQAACEAEgAAEIQASAAAQgABEAAhCAAEQACEAAAhABIAABCEAkkyPNz/WphwbGO2P6XnKcSwPrkXf9/5R+ouQu/RH1mbqK7N5V73tXymGU51UEOKR+dhwuW+kx1AV8BFhun7JWcd7EmjiOv+jlCruInXyT15ZLEWACq8J9RqxzGPMBqty86x4H3sMqNw+6hzHyZzrBTmOrk/QvT3e2pjxwFoD7q0hPJKpOdwXiP7w6gF1HFNlT2LoTrruIKPLO/5vMWO8Soii6eNJ0yn8XEEXZlScTz0wIGVHsu2xn6qETISLuxTMJGBqiFp5pwBTxpeV4L1Wuttt4bswJddpSvKna/sglYFsRK+PZBGwbYi0824BtQayNxwHoO2IjPC5AXxEb43EC+oZoBI8b0BdEY3guAF0jGsVzBZgizpjxZqbxXALKnDIiztR4UUiAXIjW8HwAtI1oFc8XQFuI1vF8AjSNyILnG6ApRDY8HwGbIrLi+QpYF5Edz2fAqohO8HwHlDmnvu3Bk8v7rjbQd0CZC+q8AG+ulkcALE+PekddKLiFet9zvWFZq18BBgDKKe48BY2GvQAAAABJRU5ErkJggg==";
18
18
  export declare const floorchangeUpImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Mzc3ODM3OTQyM0EyMTFFODk5MzVCRjg5RkE3NDIwNEMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Mzc3ODM3OTUyM0EyMTFFODk5MzVCRjg5RkE3NDIwNEMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozNzc4Mzc5MjIzQTIxMUU4OTkzNUJGODlGQTc0MjA0QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozNzc4Mzc5MzIzQTIxMUU4OTkzNUJGODlGQTc0MjA0QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv4uuuEAAAJCSURBVHja7NxPasJAGAXwxP6hFGwP4L53cOEJeoXuixfxGF1V6E4Q6tJFF0KPULptcdEWCuJKavpNOwEdJzpJZr6ZJO/BI5CECfk5MirEVpIk0WYDyBl1QH2nJnI7kPu9RrX68woM8JI6k3BqZ/I4ADPSpj5n4KUVxy8AuJtz6vQAXtqpPB+ABfC8IoYIWATPG2JogGXwvCCGBGgDjx0xFECbeKyIIQC6wGND9A3oEo8F0ScgB55zRF+Ap4x4m4indQAUNzFmxks7to3IDegTzwkiJ2AIeNYRuQBDwrOKyAEYIp41RNeAIeNZQXQJWAW80oiuAKuEVwrRBWAV8Qoj2gY8oo4qipd2JO+DHVBcdFhxvLRDU0RbgHXCy4VoA7COeMaIZQHrjGeEWAawCXgHEYsCNglvL2IRwCbiZSLmBWwynhYxDyDwNIimgDH1DnBbFR6xKWAfYNr2dYCxunDEcfxCm6sIUfNKVjsuOsAEVpkfpGN1X0tz3heotPnU7dQBTmClzcTo+x2lQ33DorFV4dHRLSK6GSgeK+hSH6jLhs+6pXToSpfIZBFRz2nn+dV2T66p9ww3fUN9tDDOD3WhvlvVHBsMtLD4anLNmm+uKdrC2gBAAAIQgAgAAQhAACIABCAAAYgAEIAABCACQAACEIAIAAEIQAAiAAQgAAGIABCAAAQgAsDKAn7U7Dr/YfwL0BPqPHL7OMJcXofFKusxB1dZUW+pa0fjr+X4q7rOwDQ96pO8URuzbiXH63Fbif4KMAA5SHWvsbuuvQAAAABJRU5ErkJggg==";
19
19
  export declare const pulsingDot: {
@@ -18,7 +18,7 @@ exports.routeB = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAe
18
18
  exports.marker = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABmJLR0QA/wD/AP+gvaeTAAABfklEQVRIie3WMU/CQBQH8NfaD+RgIuJEWP0c7C4aBpyMTIY4aVxNnB3UCLakTgxOJiY0aSElkVDUNoECLeVdz+kMKYYo7cEg/+nSXvq7XK7vHcCKIkQf5PIlysaXxf2Z99zgWjb7DW9I0guZTAqpavVWAKDRuYnDm3t7AADQ63aho2mDwPdtgng0RrzOqCpyh1mGjgOdet31XNenhBRHiOcZVfW5w9MLsHR9OHAcApSeSZSebslyjzvM4vX7YBnG0LUsAUTxAhBPthXF5g6zBKMRvDcantNuU6D0igbBcUpV37jDLDgew4dpBp/NJqGieEfCsJCuVDTuMAtBBNs0savrKAhCLUA83FWUZ+4wS0gI2K0WtQzDp2GohYQc7MiyPD1HjCXEiJTkx6JbPZmz1YnAM4cLoJAul+cerlhwnN9pITiJAvIn+MeSWS4vVDJ/BUebhJdAk5gLL70tsjHPi8BMcvkSvXl6pdNXIB5ZWeVaw2v4n8D3D4/LXsfy8gV9n0oC7aAw4wAAAABJRU5ErkJggg==';
19
19
  exports.defaultIcon = exports.poi;
20
20
  exports.chevron = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAABvElEQVRoge3YWUsCURiA4TPdVdBGli1E20XLr+gHB923WFdt0k6aQZlB+guCIHi7mCXBwY7fOJ5Pm/faYc7D6DnjZ0xWls6AEWAXeAE2XK9HVIDY57cGsOV6XR0VIA5orQFsul6fVQHiMAYRVlePCRBHbRBh78C66/XGBoxaIpoxa67X3RKw1wEi7A1YSXttQx1+/ktwjyVjTAFYFlybTsAw8TuVmidjHX/vWP8GU0XZ18x2G+4bTEGIeQYWXBui8M+WYyGmohFzkgAz79oQlRDzpA0zBpwJMWVgzrUhChgfNMy5EFMC8q4NUQHmYlAwEwkwt8C0a0MUMAVcCzFFwLO5T6ev8ZK+jTGfwmtnTW/W2D7838mp8Gk0gG3XhqSIOhrGSiQ7S3RMYPB3KukZomPykhBR04SQnhk1NIyNgEngUoh4GxTEqmuDAXL4rxKSqmiYqASIu35HzCRAvKJhghIg7oWICrDo2tANhI6JCfLX8TIpDxd6MY0vG2N2PM/7EFybTvhnRlHTkxCH/bZbQtNEJC4LjH5EWICJ28Ee0TQBsQl/O35oQtwAOdfrEgXkgSv8v7V6xjdZWd3pB9JxAjY9tg5oAAAAAElFTkSuQmCC';
21
- exports.person = 'data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhZCIgZGF0YS1pY29uPSJ3YWxraW5nIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtd2Fsa2luZyBmYS13LTEwIiByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyMCA1MTIiPjxnIGNsYXNzPSJmYS1ncm91cCI+PHBhdGggY2xhc3M9ImZhLXNlY29uZGFyeSIgZmlsbD0iY3VycmVudENvbG9yIiBkPSJNMjA4IDBhNDggNDggMCAxIDEtNDggNDggNDggNDggMCAwIDEgNDgtNDh6IiBvcGFjaXR5PSIwLjQiPjwvcGF0aD48cGF0aCBjbGFzcz0iZmEtcHJpbWFyeSIgZmlsbD0iY3VycmVudENvbG9yIiBkPSJNNzMuNTggMzg1LjhhNjIuMDUgNjIuMDUgMCAwIDEtMTQuMiAyMS41bC01MCA1MC4xYTMyIDMyIDAgMCAwIDQ1LjIgNDUuM0wxMTQgNDQzLjNhNjQuODIgNjQuODIgMCAwIDAgMTQuMTktMjEuNWwxMy41LTMzLjhjLTU1LjI5LTYwLjMtMzguNjktNDEuOC00Ny40LTUzLjd6bTIyOC45LTE0MC43bC0yMy4zMS0xMS44LTkuNjktMjkuNGMtMTQuNzEtNDQuNi01NS43MS03NS44LTEwMi4yMS03NS45LTM2LS4xLTU1Ljg5IDEwLjEtOTMuMjkgMjUuMmE5NS40MSA5NS40MSAwIDAgMC00OS43MSA0Ni4yTDE3LjU4IDIxM2EzMi4xIDMyLjEgMCAwIDAgMTQuMTkgNDIuOSAzMS41NiAzMS41NiAwIDAgMCA0Mi41LTE0LjNMODEgMjI4YTMxLjc1IDMxLjc1IDAgMCAxIDE2LjUtMTUuNGwyNi43OS0xMC44LTE1LjE5IDYwLjdhNjQuMjIgNjQuMjIgMCAwIDAgMTQuOSA1OC44bDU5LjkgNjUuNGE2NC41MiA2NC41MiAwIDAgMSAxNC44OSAyNy43bDE4LjMxIDczLjNhMzIgMzIgMCAxIDAgNjIuMDktMTUuNWwtMjIuMTktODlhNjQuMDcgNjQuMDcgMCAwIDAtMTQuOS0yNy43bC00NS41LTQ5LjcgMTcuMTktNjguNyA1LjUgMTYuNWE2My44MyA2My44MyAwIDAgMCAzMS43MSAzN2wyMy4yOSAxMS44YTMxLjU2IDMxLjU2IDAgMCAwIDQyLjUtMTQuMyAzMi4zNyAzMi4zNyAwIDAgMC0xNC4zMS00M3oiPjwvcGF0aD48L2c+PC9zdmc+';
21
+ exports.person = 'data:image/png;base64,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';
22
22
  exports.floorchangeDownImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0Y2MDk5Q0IyM0EyMTFFOEExQkQ5MDk1RDU5RTBCQ0UiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0Y2MDk5Q0MyM0EyMTFFOEExQkQ5MDk1RDU5RTBCQ0UiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozRjYwOTlDOTIzQTIxMUU4QTFCRDkwOTVENTlFMEJDRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozRjYwOTlDQTIzQTIxMUU4QTFCRDkwOTVENTlFMEJDRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsNnVNkAAAJISURBVHja7NxNSsNAGAbgxD+KUnWhUCi9hrtewWO51RMUFAaXQg/QhYuCV9CtpQtxZXelxG9kAjZN0kky881k8r7wUkpKJn0ozQ+ZREmSRNkyZEx9pa6piYGu1frGtjd8x8oB4C11Ywgu241af7CAx9SlJby0SzUOC+BBxJsb6sDyGAM1Dku4Aa8DG4cdMLgAEIAABCAAEQACEIAARAAIQAACEAEgAAEIQASAAAQgABEAAhCAAEQACEAAAhABIAABCEAkkyPNz/WphwbGO2P6XnKcSwPrkXf9/5R+ouQu/RH1mbqK7N5V73tXymGU51UEOKR+dhwuW+kx1AV8BFhun7JWcd7EmjiOv+jlCruInXyT15ZLEWACq8J9RqxzGPMBqty86x4H3sMqNw+6hzHyZzrBTmOrk/QvT3e2pjxwFoD7q0hPJKpOdwXiP7w6gF1HFNlT2LoTrruIKPLO/5vMWO8Soii6eNJ0yn8XEEXZlScTz0wIGVHsu2xn6qETISLuxTMJGBqiFp5pwBTxpeV4L1Wuttt4bswJddpSvKna/sglYFsRK+PZBGwbYi0824BtQayNxwHoO2IjPC5AXxEb43EC+oZoBI8b0BdEY3guAF0jGsVzBZgizpjxZqbxXALKnDIiztR4UUiAXIjW8HwAtI1oFc8XQFuI1vF8AjSNyILnG6ApRDY8HwGbIrLi+QpYF5Edz2fAqohO8HwHlDmnvu3Bk8v7rjbQd0CZC+q8AG+ulkcALE+PekddKLiFet9zvWFZq18BBgDKKe48BY2GvQAAAABJRU5ErkJggg==';
23
23
  exports.floorchangeUpImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Mzc3ODM3OTQyM0EyMTFFODk5MzVCRjg5RkE3NDIwNEMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Mzc3ODM3OTUyM0EyMTFFODk5MzVCRjg5RkE3NDIwNEMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozNzc4Mzc5MjIzQTIxMUU4OTkzNUJGODlGQTc0MjA0QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozNzc4Mzc5MzIzQTIxMUU4OTkzNUJGODlGQTc0MjA0QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv4uuuEAAAJCSURBVHja7NxPasJAGAXwxP6hFGwP4L53cOEJeoXuixfxGF1V6E4Q6tJFF0KPULptcdEWCuJKavpNOwEdJzpJZr6ZJO/BI5CECfk5MirEVpIk0WYDyBl1QH2nJnI7kPu9RrX68woM8JI6k3BqZ/I4ADPSpj5n4KUVxy8AuJtz6vQAXtqpPB+ABfC8IoYIWATPG2JogGXwvCCGBGgDjx0xFECbeKyIIQC6wGND9A3oEo8F0ScgB55zRF+Ap4x4m4indQAUNzFmxks7to3IDegTzwkiJ2AIeNYRuQBDwrOKyAEYIp41RNeAIeNZQXQJWAW80oiuAKuEVwrRBWAV8Qoj2gY8oo4qipd2JO+DHVBcdFhxvLRDU0RbgHXCy4VoA7COeMaIZQHrjGeEWAawCXgHEYsCNglvL2IRwCbiZSLmBWwynhYxDyDwNIimgDH1DnBbFR6xKWAfYNr2dYCxunDEcfxCm6sIUfNKVjsuOsAEVpkfpGN1X0tz3heotPnU7dQBTmClzcTo+x2lQ33DorFV4dHRLSK6GSgeK+hSH6jLhs+6pXToSpfIZBFRz2nn+dV2T66p9ww3fUN9tDDOD3WhvlvVHBsMtLD4anLNmm+uKdrC2gBAAAIQgAgAAQhAACIABCAAAYgAEIAABCACQAACEIAIAAEIQAAiAAQgAAGIABCAAAQgAsDKAn7U7Dr/YfwL0BPqPHL7OMJcXofFKusxB1dZUW+pa0fjr+X4q7rOwDQ96pO8URuzbiXH63Fbif4KMAA5SHWvsbuuvQAAAABJRU5ErkJggg==';
24
24
  var size = 120;