@twinmatrix/spatialverse-sdk-web 0.0.2 → 0.0.4
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/lib/cjs/index.js +9 -9
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +213 -294
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +40 -41
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js +170 -196
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +167 -215
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +28 -30
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +861 -1170
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +166 -159
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js +6 -6
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +6 -6
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js +3 -3
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +523 -610
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +149 -154
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/customStyles.js +2 -2
- package/lib/cjs/meta-atlas-sdk/customStyles.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/customerLayer.js +15 -29
- package/lib/cjs/meta-atlas-sdk/customerLayer.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js +5 -5
- package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js +809 -1033
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js +32 -49
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +21 -34
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js +6 -6
- package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/routing-store.js +6 -6
- package/lib/cjs/meta-atlas-sdk/utils/routing-store.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js +363 -491
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/cjs/react/MetaAtlasMap.js +127 -0
- package/lib/cjs/react/MetaAtlasMap.js.map +1 -0
- package/lib/cjs/react/hooks/useDrawing/index.js +17 -18
- package/lib/cjs/react/hooks/useDrawing/index.js.map +1 -1
- package/lib/cjs/react/hooks/useFocus/index.js +48 -55
- package/lib/cjs/react/hooks/useFocus/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMapEvents/index.js +40 -47
- package/lib/cjs/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMapOverlays/index.js +20 -21
- package/lib/cjs/react/hooks/useMapOverlays/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMetaAtlas/index.js +77 -95
- package/lib/cjs/react/hooks/useMetaAtlas/index.js.map +1 -1
- package/lib/cjs/react/hooks/useMetaAtlas.js +78 -96
- package/lib/cjs/react/hooks/useMetaAtlas.js.map +1 -1
- package/lib/cjs/react/hooks/useRouting/index.js +21 -20
- package/lib/cjs/react/hooks/useRouting/index.js.map +1 -1
- package/lib/cjs/react/hooks/useSearch/index.js +35 -34
- package/lib/cjs/react/hooks/useSearch/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/index.js +26 -23
- package/lib/cjs/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js +2 -2
- package/lib/cjs/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/cjs/react/index.js +31 -31
- package/lib/cjs/react/index.js.map +1 -1
- package/lib/cjs/react/stores/useMapDataStore.js +47 -62
- package/lib/cjs/react/stores/useMapDataStore.js.map +1 -1
- package/lib/cjs/react/stores/useMetaAtlasStore.js +27 -40
- package/lib/cjs/react/stores/useMetaAtlasStore.js.map +1 -1
- package/lib/esm/index.js +3 -7
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +4 -3
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +14 -12
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js +204 -200
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +6 -6
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +4 -3
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +53 -42
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +18 -16
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +3 -3
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +73 -79
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +16 -15
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/customerLayer.js +4 -1
- package/lib/esm/meta-atlas-sdk/customerLayer.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js +148 -124
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/helpers.js +4 -2
- package/lib/esm/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js +6 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js +115 -109
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/esm/react/MetaAtlasMap.js +120 -0
- package/lib/esm/react/MetaAtlasMap.js.map +1 -0
- package/lib/esm/react/hooks/useDrawing/index.js +2 -2
- package/lib/esm/react/hooks/useDrawing/index.js.map +1 -1
- package/lib/esm/react/hooks/useFocus/index.js +4 -3
- package/lib/esm/react/hooks/useFocus/index.js.map +1 -1
- package/lib/esm/react/hooks/useMapEvents/index.js +9 -6
- package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/esm/react/hooks/useMapOverlays/index.js +2 -2
- package/lib/esm/react/hooks/useMapOverlays/index.js.map +1 -1
- package/lib/esm/react/hooks/useMetaAtlas/index.js +162 -60
- package/lib/esm/react/hooks/useMetaAtlas/index.js.map +1 -1
- package/lib/esm/react/hooks/useMetaAtlas.js +162 -60
- package/lib/esm/react/hooks/useMetaAtlas.js.map +1 -1
- package/lib/esm/react/hooks/useRouting/index.js +2 -2
- package/lib/esm/react/hooks/useRouting/index.js.map +1 -1
- package/lib/esm/react/hooks/useSearch/index.js +2 -2
- package/lib/esm/react/hooks/useSearch/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/index.js +15 -12
- package/lib/esm/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/esm/react/index.js +11 -15
- package/lib/esm/react/index.js.map +1 -1
- package/lib/esm/react/stores/useMapDataStore.js +17 -21
- package/lib/esm/react/stores/useMapDataStore.js.map +1 -1
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts +30 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts +5 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts +21 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts +27 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts +18 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts +37 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts.map +1 -0
- package/package.json +10 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-atlas-sdk.js","names":["maplibregl","$","getCoords","point","turfPoint","polygon","turfPolygon","length","area","cloneDeep","MapboxDraw","customStyles","mapBoxDrawDefaultStyles","DrawMarker","MarkerSelect","MetaAtlasCore","MainMap","initializeApp","getAnalytics","logEvent","RoutingVisualizer","CustomerLayer","CustomerLayerVariant","booleanPointInPolygon","FilterType","EventSource","DEFAULT_MAP_STYLE","MetaAtlasSdk","onLoadCallback","undefined","onLoadFailCallback","mapLoaded","onFailCallbackSent","UserLayers","defaultFocusedTaxonomy","currentFocus","apiAuthenticationCallbackReceived","routingVisualizer","tileServer","HOST","empApiURL","mapBoxDrawSourceID","drawGeojsonData","type","features","popups","markers","setupFirebase","firebaseConfig","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","firebaseApp","analytics","console","log","logAnalyticsEvent","eventName","properties","warn","onLoad","setupRouting","map","onLoadFail","message","initMetaAtlasCore","onRoutingStatusUpdate","onSearchStatusUpdate","metaAtlasCore","init","accessToken","secretKey","data","authenticated","setupMapObjectSearch","map3D","constructor","errorMessage","mapBoxDraw","CustomerLayers","CustomerLayersVariant","roleName","verNum","setupMap","role","mapDivOrMap","Map","container","style","center","zoom","pitch","bearing","antialias","attributionControl","setupLayers","addSource","url","token","on","e","setLastClickedFeature","mapObjectId","coordinates","name","whatDimension","whereDimension","geometry","clickEvent","lastClickedDrawing","setDrawing","layersToAdd","layer","addLayer","id","clickedFeature","feature_clicked","title","overRideSelectionOfDrawnPointGeometry","dimension_what","includes","isSearchable","coords","JSON","parse","myMapObjectId","dimension_where","setupMapBoxDraw","loaded","error","displayControlsDefault","userProperties","modes","draw_marker","marker_select","styles","addControl","index","element","getDrawingById","addCustomerLayer","jsonToPass","onLoaded","customerLayerUrl","sourceLayer","getJSON","customerLayers","feature","getMode","getAll","mapBoxDrawFeature","deleteAll","directSelectOptions","featureId","getFocusTree","where","geom","props","getLastClickedFeature","getLastClickedDrawing","clickedDrawing","getMidPointOfFeature","dropPin","mapItemSelected","popupStyle","replaceLast","pinObj","markerElement","document","createElement","innerHTML","popup","Marker","setLngLat","addTo","remove","push","dropMarkerForRouting","destinations","forEach","destination","selectedLocation","marker","color","clearMarker","extractLocation","text","match","hidePin","pinId","targetPinId","lastPin","pinToHide","find","pin","popupElem","getElement","display","hidePins","obj","showPin","showPins","clearPin","targetPinIndex","findIndex","splice","clearPins","removePin","getCurrentFocus","getCurrentFocusBuilding","getCurrentFocusFloor","addUserLayer","filterWhereDimension","dimensionWhere","userLayers","updatedUserLayersData","filterBaseMapWhereDimension","layerID","layerFilter","filter","setFilter","layers","getFilter","updatedLayersData","focusTo","whereTaxonomyPath","moveCamera","isMobile","window","innerWidth","flyToConfig","getFlyToLocation","flyTo","getCenter","getZoom","getBearing","speed","filterLayersByCategories","filterType","filterValues","geomType","dimensionWhat","filterLayersByType","styleLayersByType","property","value","styleJson","getStyle","layerStyle","paint","layerType","setPaintProperty","clearStyleLayersByType","changeTerminalInFocusToUserViewpoint","defaultFloor","wrap","centerArray","lng","lat","checkUserViewport","building","getUserViewportBuilding","isLocationWithinHongKong","location","polygonCoordinates","isInside","getMapObjectsByFilteredLocalRef","args","getMapObjectsByName","getMapObjectById","getMapObjectByLocalRef","getMapObjectMatchingLocalRef","getMapObjectsMatchingLocalRefs","getMapObjectsByWhatTaxonomy","getMapObjectsByWhatTaxonomyAPI","getMapObjectsByWhereTaxonomy","getMapObjectsByWhatAndWhereTaxonomy","getMapObjectsInWhatTaxonomy","getMapObjectsInWhereTaxonomy","computeRoute","computeRoutes","mapObjectIds","wheelChairAccessibleRouteOnly","source","ref","logRouteEvent","getNameByIdAsync","Promise","resolve","mapObj","getNamesFromIds","idList","namePromises","all","names","route_per_object_event_source","route_event_source","setActiveRoute","getActiveRoute","highlightRouteSegment","clearRoute","drawGeometryOnMap","onDrawEnd","onlyVisibleAtCurrentFocus","modeChanged","changeMode","once","drawings","finalDrawing","isInDrawMode","addDrawingsToBaseMap","concat","getSource","setData","drawing","editDrawing","featureCollection","set","saveEditsToBaseMap","updatedFeature","get","featureFoundInBaseMapData","featureToEditSelectedAlready","onSelectionChanged","selectionData","off","removeDrawing","createMarker","options","draggable","setDraggable","querySelectorAll","_color","setAttribute","getCoordinates","getLength","units","getArea","getMap3D"],"sources":["../../../src/meta-atlas-sdk/meta-atlas-sdk.ts"],"sourcesContent":["// const maplibregl = require('maplibre-gl');\nimport * as maplibregl from 'maplibre-gl';\nimport $ from \"jquery\";\n\nimport 'maplibre-gl/dist/maplibre-gl.css';\nimport { getCoords } from '@turf/invariant';\nimport { Units, feature as turfFeature, lineString as turfLine, point as turfPoint, polygon as turfPolygon, multiPolygon as turfMultiPolygon } from '@turf/helpers';\nimport { Position } from 'geojson';\nimport length from '@turf/length';\nimport area from '@turf/area';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport MapboxDraw from '@mapbox/mapbox-gl-draw';\nimport {customStyles, mapBoxDrawDefaultStyles} from './customStyles';\nimport DrawMarker from './mapbox_draw_custom_modes/draw_marker';\nimport MarkerSelect from './mapbox_draw_custom_modes/marker_select';\n\nimport { MetaAtlasCore, metaFeature, clickedMetaFeature } from './MetaAtlasCore/meta-atlas-sdk-core';\n\nimport MainMap from './3DMap/MainMap';\n\nimport { FirebaseApp, initializeApp } from 'firebase/app';\nimport { Analytics, getAnalytics, logEvent } from \"firebase/analytics\";\nimport { StatusUpdateCallbackType } from './MetaAtlasCore/fetch-published-json';\n\nimport { RoutingVisualizer } from './utils/routing-visualizer';\nimport { routeLayers } from './MetaAtlasCore/routing-core/routeLayers';\n\nimport CustomerLayer from './customerLayer';\nimport CustomerLayerVariant from './customerLayerVariant';\nimport combinedStyles from './combined_style.json';\n\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport { getAvatarInitials, stringToHslColor } from './utils/helpers';\nenum FilterType {\n Name = 'title',\n LocalRef = 'localRef',\n WhatTaxonomy = 'dimension_what'\n}\n\nexport enum EventSource {\n UrlLoad = 'url_load',\n MapClick = 'map_click',\n BannerClick = 'banner_click',\n SearchInput = 'search_input',\n ListClick = 'list_click',\n InfoPopupClick = 'info_popup_click',\n Chatbot = 'chatbot',\n RoutingUI = 'routing_ui',\n StampRallyClick = 'stamp_rally_click',\n}\n\nexport const DEFAULT_MAP_STYLE = 'https://api.maptiler.com/maps/01985ac8-56d2-707b-afa8-68abfe8f18be/style.json?key=12H5hrITUbJ1sDrVPqkq';\n\nexport class MetaAtlasSdk {\n accessToken: string;\n secretKey: string;\n onLoadCallback: () => void = undefined;\n onLoadFailCallback: (errorMessage: string) => void = undefined;\n\n map: maplibregl.Map;\n mapBoxDraw: MapboxDraw;\n maplibregl: any;\n mapLoaded = false;\n onFailCallbackSent = false;\n \n CustomerLayers: any;\n CustomerLayersVariant: any;\n\n UserLayers: any = [];\n floorOptions: any;\n buildingRef: string;\n defaultFocusedTaxonomy = 'where.gbtb';\n currentFocus = this.defaultFocusedTaxonomy;\n \n lastClickedDrawing: any;\n map3D: MainMap;\n firebaseApp: FirebaseApp;\n analytics: Analytics;\n\n metaAtlasCore: MetaAtlasCore;\n apiAuthenticationCallbackReceived = false;\n\n routingVisualizer = new RoutingVisualizer(this);\n\n roleName: string;\n verNum: string;\n \n // When token middleware is online that will check the tokens.\n tileServer = 'https://atoms-map-tiles-middleware.sandbox.spatialverse.online';\n // HOST = 'https://atoms-sdk.qa.cag.spatialverse.online/2.0.0/';\n HOST = 'https://atoms-sdk.sandbox.spatialverse.online/';\n //empApiURL = 'https://atoms-api.changiairport.com';\n empApiURL = 'https://atoms-api.sandbox.spatialverse.online';\n // empApiURL = 'https://atoms-api.dev.cag.spatialverse.online';\n\n mapBoxDrawSourceID = 'drawnDataSource';\n drawGeojsonData = {\n type: 'FeatureCollection',\n features: [] as maplibregl.Feature[]\n };\n popups: any[] = [];\n markers: any[] = [];\n\n setupFirebase() {\n const firebaseConfig = {\n apiKey: \"AIzaSyBDWO2wNkotbgjbkyqVrC_OEAJ3mbvlheI\",\n authDomain: \"tmt-lenovo-tech-day-26-id.firebaseapp.com\",\n projectId: \"tmt-lenovo-tech-day-26-id\",\n storageBucket: \"tmt-lenovo-tech-day-26-id.firebasestorage.app\",\n messagingSenderId: \"618619544262\",\n appId: \"1:618619544262:web:cb7a7953a908aeed212dc7\",\n measurementId: \"G-HN2FS1L0P4\"\n };\n this.firebaseApp = initializeApp(firebaseConfig);\n this.analytics = getAnalytics(this.firebaseApp);\n console.log('analytics: ', this.analytics);\n }\n\n logAnalyticsEvent(eventName: string, properties?: any) {\n console.log('logAnalyticsEvent: ', eventName, properties);\n\n if (!this.analytics) {\n console.warn('Analytics is not initialized. Event not logged:', eventName);\n return;\n }\n\n if (properties) logEvent(this.analytics, eventName, properties);\n else logEvent(this.analytics, eventName);\n }\n\n onLoad() {\n if (\n this.mapLoaded === true &&\n this.apiAuthenticationCallbackReceived === true\n ) {\n // Setup routing visualizer\n this.routingVisualizer.setupRouting(this.map);\n\n // this.map3D.init(this.map);\n \n if (this.onLoadCallback) {\n this.onLoadCallback();\n }\n }\n };\n\n onLoadFail(message: string) {\n if (this.onFailCallbackSent === false) {\n this.onFailCallbackSent = true;\n if (this.onLoadFailCallback) {\n this.onLoadFailCallback(message);\n }\n }\n };\n\n initMetaAtlasCore(onRoutingStatusUpdate: StatusUpdateCallbackType, onSearchStatusUpdate: StatusUpdateCallbackType) { \n this.metaAtlasCore.init(\n this.empApiURL,\n this.accessToken,\n this.secretKey,\n (data: any) => {\n this.apiAuthenticationCallbackReceived = true;\n if (data.authenticated) {\n // Load routing data\n this.metaAtlasCore.setupRouting(onRoutingStatusUpdate);\n this.metaAtlasCore.setupMapObjectSearch(onSearchStatusUpdate);\n\n this.map3D = new MainMap(this.metaAtlasCore);\n\n this.onLoad();\n } else {\n this.onLoadFail('Failed to authenticate token');\n }\n },\n );\n }\n\n constructor(accessToken: string, secretKey: string, \n onLoad = () => {}, onLoadFail = (errorMessage: string) => {}, onRoutingStatusUpdate: StatusUpdateCallbackType = () => {}, onSearchStatusUpdate: StatusUpdateCallbackType = () => {}) {\n this.accessToken = accessToken;\n this.secretKey = secretKey;\n this.onLoadCallback = onLoad;\n this.onLoadFailCallback = onLoadFail;\n\n this.map = null;\n this.mapBoxDraw = null;\n this.maplibregl = maplibregl;\n this.CustomerLayers = CustomerLayer;\n this.CustomerLayersVariant = CustomerLayerVariant;\n this.roleName = \"changipublic\";\n this.verNum = \"1\";\n\n this.metaAtlasCore = new MetaAtlasCore();\n this.initMetaAtlasCore(onRoutingStatusUpdate, onSearchStatusUpdate);\n\n this.setupFirebase();\n }\n\n setupMap(role: string, mapDivOrMap: string | maplibregl.Map) {\n this.roleName = role;\n\n // Support both vanilla (string DOM ID) and React (Map instance) modes\n if (typeof mapDivOrMap === 'string') {\n // Vanilla mode: create new map instance\n this.map = new maplibregl.Map({\n container: mapDivOrMap,\n style: DEFAULT_MAP_STYLE,\n center: [110.40560122701005, 1.5626614114987702],\n zoom: 18,\n pitch: 42,\n bearing: 23.4,\n antialias: true,\n attributionControl: false\n });\n } else {\n // React mode: use provided map instance\n this.map = mapDivOrMap;\n }\n\n // Initialize map setup (common for both modes)\n const setupLayers = () => {\n this.map.addSource('custom', {\n type: 'vector',\n url: this.tileServer+'/'+this.roleName+'/'+this.verNum+'/geojson?accessToken='+this.accessToken,\n });\n\n this.logAnalyticsEvent('open_app', { type: 'web', token: this.accessToken })\n\n this.map.on('click', (e) => {\n // Reset last clicks\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: e,\n });\n this.lastClickedDrawing = this.setDrawing();\n });\n\n // Setup map box draw after customerLayers so that draw geomertry shows up on top\n const layersToAdd = this.CustomerLayers;\n for (const layer of layersToAdd) {\n layer[\"source-layer\"] = 'geojson';\n this.map.addLayer(layer);\n \n this.map.on('click', layer.id, (e) => { \n //setup new clicked feature\n var clickedFeature = e.features[0];\n console.log(clickedFeature); \n this.logAnalyticsEvent('feature_clicked', { feature_clicked: clickedFeature.properties.title });\n this.overRideSelectionOfDrawnPointGeometry(clickedFeature as any);\n if (clickedFeature.properties.dimension_what.includes('what.infra.garden') || clickedFeature.properties.isSearchable && clickedFeature.properties.title != 'Transit' && clickedFeature.properties.title != 'Public') {\n const coords = clickedFeature.geometry.type === \"Polygon\" || clickedFeature.geometry.type === \"MultiPolygon\" ?\n JSON.parse(clickedFeature.properties.center) :\n (clickedFeature.geometry as any).coordinates;\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: clickedFeature.properties.myMapObjectId,\n coordinates: coords,\n name: clickedFeature.properties.title,\n whatDimension: clickedFeature.properties.dimension_what,\n whereDimension: clickedFeature.properties.dimension_where,\n geometry: clickedFeature.geometry,\n properties: clickedFeature.properties as any,\n clickEvent: e,\n });\n }\n });\n }\n \n this.mapLoaded = true;\n this.setupMapBoxDraw();\n };\n\n // Check if map is already loaded (React mode with pre-existing map instance)\n if (this.map.loaded()) {\n // Map is already loaded, execute initialization directly\n setupLayers();\n } else {\n // Map not loaded yet, wait for load event (Vanilla mode)\n this.map.on('load', setupLayers);\n }\n\n this.map.on('error', (error: ErrorEvent) => {\n this.onLoadFail(error.message);\n });\n }\n\n setupMapBoxDraw() {\n this.mapBoxDraw = new MapboxDraw({\n displayControlsDefault: false,\n userProperties: true,\n modes: {\n ...MapboxDraw.modes,\n draw_marker: DrawMarker,\n marker_select: MarkerSelect\n },\n styles: mapBoxDrawDefaultStyles,\n });\n\n this.map.addControl(this.mapBoxDraw as any);\n\n this.map.addSource(this.mapBoxDrawSourceID, {\n 'type': 'geojson',\n 'data': this.drawGeojsonData\n });\n\n for (let index = 0; index < customStyles.length; index++) {\n const element = customStyles[index];\n element['source'] = this.mapBoxDrawSourceID\n this.map.addLayer(element as any)\n\n this.map.on('click', element.id, (e) => {\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: e,\n });\n var clickedFeature = e.features[0];\n this.overRideSelectionOfDrawnPointGeometry(clickedFeature as any);\n if (clickedFeature.properties.id) this.lastClickedDrawing = this.getDrawingById(clickedFeature.properties.id);\n else this.lastClickedDrawing = this.setDrawing();\n });\n }\n\n this.mapLoaded = true;\n this.onLoad();\n }\n\n addCustomerLayer = (map: any, jsonToPass: any, onLoaded: Function) => {\n let customerLayerUrl = jsonToPass.customerLayerUrl;\n let sourceLayer = jsonToPass.sourceLayer;\n $.getJSON(customerLayerUrl, (customerLayers) => {\n this.CustomerLayers = customerLayers;\n for (const layer of this.CustomerLayers) {\n layer[\"source-layer\"] = sourceLayer;\n map.addLayer(layer);\n\n this.map.on('click', layer.id, (e) => { \n //setup new clicked feature\n const clickedFeature = e.features[0];\n this.overRideSelectionOfDrawnPointGeometry(clickedFeature as any);\n console.log('clickedFeature: ', clickedFeature)\n this.logAnalyticsEvent('feature_clicked', { feature_clicked: clickedFeature.properties.title })\n if (clickedFeature.properties.isSearchable && clickedFeature.properties.title != 'Transit' && clickedFeature.properties.title != 'Public') {\n const coords = clickedFeature.geometry.type === \"Polygon\" ?\n JSON.parse(clickedFeature.properties.center) :\n (clickedFeature.geometry as any).coordinates;\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: clickedFeature.properties.myMapObjectId,\n coordinates: coords,\n name: clickedFeature.properties.title,\n whatDimension: clickedFeature.properties.dimension_what,\n whereDimension: clickedFeature.properties.dimension_where,\n geometry: clickedFeature.geometry,\n properties: clickedFeature.properties as any,\n clickEvent: e,\n });\n }\n });\n }\n\n onLoaded();\n });\n }\n\n overRideSelectionOfDrawnPointGeometry(feature: maplibregl.Feature) {\n // Check if a drawn point geometry is currently selected, it will be consider selected both in highlighted & non-highlighted state.\n if (this.mapBoxDraw && this.mapBoxDraw.getMode() === 'simple_select' && this.mapBoxDraw.getAll().features.length === 1) {\n const mapBoxDrawFeature = this.mapBoxDraw.getAll().features;\n // If the passed in feature is not a drawn feature, then unselect drawn point type geometry\n if (feature.properties.id === undefined) this.mapBoxDraw.deleteAll();\n // If the passed in feature is a drawn feature, then unselect drawn point type geometry & highlight the passed in drawn geometry\n else if (feature.properties.id !== undefined && mapBoxDrawFeature[0].id !== feature.properties.id) {\n this.mapBoxDraw.deleteAll();\n const directSelectOptions = {\n featureId: feature.properties.id\n };\n // TODO: figure out why this doesn't work\n // this.mapBoxDraw.changeMode('direct_select', directSelectOptions)\n }\n } \n }\n\n getFocusTree() {\n return this.metaAtlasCore.getFocusTree();\n }\n\n setDrawing(id=null, where=null, geom=null, props=null) {\n const clickedFeature = {\n \"id\": id,\n \"where\": where,\n \"geometry\": geom,\n \"properties\": props\n }\n return clickedFeature;\n }\n\n getLastClickedFeature() {\n return this.metaAtlasCore.getLastClickedFeature();\n }\n\n getLastClickedDrawing() {\n let clickedDrawing = this.lastClickedDrawing;\n if (!this.lastClickedDrawing || (this.lastClickedDrawing && (this.lastClickedDrawing.id === null || this.lastClickedDrawing.where === null))) {\n clickedDrawing = this.setDrawing();\n }\n return clickedDrawing;\n }\n\n getMidPointOfFeature(feature: any) {\n return this.metaAtlasCore.getMidPointOfFeature(feature);\n }\n\n dropPin(mapItemSelected: any, popupStyle: string, replaceLast: boolean = true) {\n const pinObj = {\n feature: mapItemSelected,\n popupStyle: popupStyle\n };\n\n const markerElement = document.createElement('div');\n markerElement.innerHTML = pinObj.popupStyle;\n\n const popup = new maplibregl.Marker({ element: markerElement })\n .setLngLat(this.getMidPointOfFeature(pinObj.feature))\n .addTo(this.map);\n\n if (replaceLast) {\n if (this.popups.length > 1) {\n this.popups[this.popups.length - 1].popup.remove();\n this.popups[this.popups.length - 1].popup = popup;\n this.popups[this.popups.length - 1].id = pinObj.feature.mapObjectId;\n } else {\n if (this.popups.length > 0) this.popups[this.popups.length - 1].popup.remove();\n this.popups = [{ popup: popup, id: pinObj.feature.mapObjectId }];\n }\n } else {\n this.popups.push({ popup: popup, id: pinObj.feature.mapObjectId });\n }\n\n return this.popups[this.popups.length - 1].id;\n }\n\n dropMarkerForRouting(destinations: any[]) {\n destinations.forEach(destination => {\n console.log(destination.selectedLocation, 'destination.selectedLocation');\n const coordinates = destination.selectedLocation?.coordinates\n ? destination.selectedLocation.coordinates\n : destination.selectedLocation?.geometry?.coordinates;\n\n console.log(coordinates, 'Coordinates'); // Debugging line\n\n if (coordinates && coordinates.length === 2) {\n const marker = new this.maplibregl.Marker({ color: '#188689' })\n .setLngLat([coordinates[0], coordinates[1]]) // Ensure correct format\n .addTo(this.map as any);\n\n this.markers.push(marker);\n } else {\n console.error('Invalid coordinates:', coordinates);\n }\n });\n }\n\n clearMarker() {\n if (this.markers && this.markers.length > 0) {\n this.markers.forEach((marker: any) => {\n marker.remove();\n });\n }\n this.markers = [];\n }\n\n extractLocation(text: string) {\n const match = text.match(/^(?:[^_]*_){3}([^_]*)/);\n return match ? match[1] : null;\n }\n\n hidePin(pinId: string = '-1'): void {\n let targetPinId: string;\n\n if (pinId === '-1') {\n const lastPin = this.popups[this.popups.length - 1];\n if (!lastPin) {\n console.warn('No pins available to hide.');\n return;\n }\n targetPinId = lastPin.id;\n } else {\n targetPinId = pinId;\n }\n\n const pinToHide = this.popups.find(pin => pin.id === targetPinId);\n\n if (pinToHide) {\n let popupElem = pinToHide.popup.getElement();\n if (popupElem) {\n popupElem.style.display = 'none';\n }\n console.log(`Pin with ID: ${targetPinId} is now hidden.`);\n } else {\n console.warn(`Pin with ID: ${targetPinId} not found.`);\n }\n }\n\n hidePins() {\n if (this.popups.length > 0) {\n this.popups.forEach(obj => {\n let popupElem = obj.popup.getElement();\n if (popupElem) {\n console.log(popupElem.style.display);\n\n popupElem.style.display = 'none';\n }\n });\n }\n }\n\n showPin(pinId: string = '-1'): void {\n let targetPinId: string;\n\n if (pinId === '-1') {\n const lastPin = this.popups[this.popups.length - 1];\n if (!lastPin) {\n console.warn('No pins available to show.');\n return;\n }\n targetPinId = lastPin.id;\n } else {\n targetPinId = pinId;\n }\n\n const pinToHide = this.popups.find(pin => pin.id === targetPinId);\n\n if (pinToHide) {\n let popupElem = pinToHide.popup.getElement();\n if (popupElem) {\n popupElem.style.display = 'flex';\n }\n console.log(`Pin with ID: ${targetPinId} is now visible.`);\n } else {\n console.warn(`Pin with ID: ${targetPinId} not found.`);\n }\n }\n\n showPins() {\n if (this.popups.length > 0) {\n this.popups.forEach(obj => {\n let popupElem = obj.popup.getElement();\n if (popupElem) {\n popupElem.style.display = 'flex';\n }\n });\n }\n }\n\n clearPin(pinId: string = '-1'): void {\n let targetPinIndex: number;\n\n if (pinId === '-1') {\n targetPinIndex = this.popups.length - 1;\n if (targetPinIndex < 0) {\n console.warn('No pins available to clear.');\n return;\n }\n } else {\n targetPinIndex = this.popups.findIndex(pin => pin.id === pinId);\n if (targetPinIndex === -1) {\n console.warn(`Pin with ID: ${pinId} not found.`);\n return;\n }\n }\n\n if (this.popups[targetPinIndex]) {\n this.popups[targetPinIndex].popup.remove();\n this.popups.splice(targetPinIndex, 1);\n }\n }\n\n clearPins() {\n if (this.popups.length > 0) {\n this.popups.forEach(obj => {\n obj.popup.remove();\n });\n this.popups.length = 0;\n }\n }\n\n removePin() {\n $('.mapboxgl-popup').remove();\n }\n\n getCurrentFocus() {\n return this.metaAtlasCore.getCurrentFocus();\n }\n\n getCurrentFocusBuilding(){\n return this.metaAtlasCore.getCurrentFocusBuilding();\n }\n\n getCurrentFocusFloor(){\n return this.metaAtlasCore.getCurrentFocusFloor();\n }\n\n addUserLayer(layer: any) {\n this.UserLayers.push(layer);\n this.map.addLayer(layer);\n\n this.map.on('click', layer.id, (e) => { \n //setup new clicked feature\n var clickedFeature = e.features[0];\n const coords = clickedFeature.geometry.type === \"Polygon\" ?\n JSON.parse(clickedFeature.properties.center) :\n (clickedFeature.geometry as any).coordinates;\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: clickedFeature.properties.id,\n coordinates: coords,\n name: clickedFeature.properties.name,\n whatDimension: clickedFeature.properties.dimension_what,\n whereDimension: clickedFeature.properties.dimension_where,\n geometry: clickedFeature.geometry,\n properties: clickedFeature.properties as any,\n clickEvent: e,\n });\n });\n }\n\n filterWhereDimension(dimensionWhere: string) {\n // filter user layers\n let userLayers = cloneDeep(this.UserLayers);\n if (userLayers.length > 0) {\n let updatedUserLayersData = this.metaAtlasCore.filterBaseMapWhereDimension(userLayers, dimensionWhere);\n for (let index = 0; index < updatedUserLayersData.length; index++) {\n const layerID = updatedUserLayersData[index].id;\n const layerFilter = updatedUserLayersData[index].filter;\n userLayers[index].filter = layerFilter;\n this.map.setFilter(layerID, layerFilter);\n }\n }\n\n // filter basemap layers\n let layers = cloneDeep(this.CustomerLayers);\n for (let index = 0; index < layers.length; index += 1) {\n const layerID = layers[index].id;\n const layerFilter = this.map.getFilter(layerID);\n layers[index].filter = layerFilter;\n }\n let updatedLayersData =\n this.metaAtlasCore.filterBaseMapWhereDimension(\n layers,\n dimensionWhere,\n );\n \n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerFilter = updatedLayersData[index].filter;\n this.map.setFilter(layerID, (layerFilter));\n }\n\n // // filter non-basemap layers\n // layers = cloneDeep(customStyles.concat(routeLayers));\n // for (let index = 0; index < layers.length; index += 1) {\n // const layerID = layers[index].id;\n // const layerFilter = this.map.getFilter(layerID);\n // layers[index].filter = layerFilter;\n // }\n // updatedLayersData =\n // this.metaAtlasCore.filterLayersWhereDimension(\n // layers,\n // dimensionWhere,\n // );\n \n // for (let index = 0; index < updatedLayersData.length; index += 1) {\n // const layerID = updatedLayersData[index].id;\n // const layerFilter = updatedLayersData[index].filter;\n // }\n }\n\n focusTo(whereTaxonomyPath: string, moveCamera: boolean = true){\n const map = this.map;\n let dimensionWhere = whereTaxonomyPath;\n if (!dimensionWhere || !map) return;\n\n console.log(whereTaxonomyPath, 'whereTaxonomyPath');\n \n this.filterWhereDimension(dimensionWhere);\n const isMobile = window.innerWidth < 768;\n if (moveCamera) {\n const flyToConfig = this.metaAtlasCore.getFlyToLocation(dimensionWhere, isMobile);\n this.map.flyTo({\n center: flyToConfig.center ? flyToConfig.center : this.map.getCenter(),\n zoom: flyToConfig.zoom ? flyToConfig.zoom : this.map.getZoom(),\n bearing: flyToConfig.bearing ? flyToConfig.bearing : this.map.getBearing(),\n speed: 0.8,\n });\n\n // track inside so that only user requested focus is tracked\n // logEvent(this.analytics, 'focus_changed', { location: dimensionWhere });\n }\n }\n\n filterLayersByCategories(filterType: FilterType, filterValues: string[], geomType: string, dimensionWhat: string) {\n const map = this.map;\n if (!filterValues || !map) return;\n\n let layers = cloneDeep(this.CustomerLayers);\n for (let index = 0; index < layers.length; index += 1) {\n const layerID = layers[index].id;\n const layerFilter = this.map.getFilter(layerID);\n layers[index].filter = layerFilter;\n }\n let updatedLayersData = this.metaAtlasCore.filterLayersByCategories(layers, filterType, filterValues, geomType, dimensionWhat, this.map);\n\n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerFilter = updatedLayersData[index].filter;\n this.map.setFilter(layerID, layerFilter);\n }\n }\n\n filterLayersByType(filterType: FilterType, filterValues: string[], geomType = '') {\n const map = this.map;\n if (!filterValues || !map) return;\n\n let userLayers = cloneDeep(this.UserLayers);\n if (userLayers.length > 0) {\n let updatedUserLayersData = this.metaAtlasCore.filterLayersByType(userLayers, filterType, filterValues, geomType);\n for (let index = 0; index < updatedUserLayersData.length; index++) {\n const layerID = updatedUserLayersData[index].id;\n const layerFilter = updatedUserLayersData[index].filter;\n userLayers[index].filter = layerFilter;\n this.map.setFilter(layerID, layerFilter);\n }\n }\n }\n\n styleLayersByType(filterType: FilterType, filterValues: string[], property: string, value: string) {\n if (!filterValues || !this.map) return;\n\n let styleJson = this.map.getStyle();\n let layers = styleJson.layers;\n\n let updatedLayersData = this.metaAtlasCore.styleLayersByType(layers, filterType, filterValues, property, value);\n\n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerStyle = updatedLayersData[index].paint;\n const layerType = updatedLayersData[index].type;\n if (layerType && (layerType === 'fill' || layerType === 'line')) {\n if (layerStyle[property]) {\n this.map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n }\n }\n }\n\n clearStyleLayersByType(filterType: FilterType, filterValues: string[], property: string) {\n if (!this.map) return;\n\n let styleJson = this.map.getStyle();\n let layers = styleJson.layers;\n\n let updatedLayersData = this.metaAtlasCore.clearStyleLayersByType(layers, filterType, filterValues, property);\n\n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerStyle = updatedLayersData[index].paint;\n const layerType = updatedLayersData[index].type;\n if (layerType && (layerType === 'fill' || layerType === 'line')) {\n if (layerStyle[property]) {\n this.map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n }\n }\n }\n\n changeTerminalInFocusToUserViewpoint(defaultFloor: object = {}) {\n let center = this.map.getCenter().wrap();\n const centerArray: [number, number] = [center.lng, center.lat];\n // console.log('center: ', center);\n if (this.metaAtlasCore.checkUserViewport(centerArray, this.getCurrentFocusBuilding(), this.getCurrentFocusFloor())) return true;\n //get building to focus to\n let building = this.metaAtlasCore.getUserViewportBuilding(centerArray);\n // console.log(\"focus to:\");\n // console.log(building);\n if (!building) return false;\n //focus to default floor provided\n if (building[\"name\"] in defaultFloor) {\n this.focusTo(defaultFloor[building[\"name\"]], false);\n return true;\n }\n //focus to default floor in focusTree\n // if (!building.hasOwnProperty(\"defaultFloorPath\")) return true;\n // this.focusTo(building[\"defaultFloorPath\"], false);\n\n return true;\n }\n\n isLocationWithinHongKong(location: Position) {\n // Define the polygon coordinates\n const polygonCoordinates = [\n [\n 103.59716039266556,\n 1.2570288388163817\n ],\n [\n 103.5792058079661,\n 1.2001127572538621\n ],\n [\n 103.69481581677104,\n 1.2005505778590049\n ],\n [\n 103.9124604166791,\n 1.2408297702235416\n ],\n [\n 104.07843084598773,\n 1.3003717948835174\n ],\n [\n 104.09332001378709,\n 1.3428384139758691\n ],\n [\n 104.06568408463107,\n 1.4395702492902842\n ],\n [\n 104.01405273250049,\n 1.430831826129534\n ],\n [\n 103.94486100905976,\n 1.4264524124152587\n ],\n [\n 103.88661860370877,\n 1.4347670822090777\n ],\n [\n 103.84020398120549,\n 1.470670314084117\n ],\n [\n 103.79466396668937,\n 1.467591709607774\n ],\n [\n 103.75700361138325,\n 1.4470255906078648\n ],\n [\n 103.72197278477057,\n 1.4605952336399213\n ],\n [\n 103.68041038922672,\n 1.4408697939934143\n ],\n [\n 103.64577440712543,\n 1.379174061413977\n ],\n [\n 103.59716039266556,\n 1.2570288388163817\n ],\n [\n 103.59716039266556,\n 1.2570288388163817\n ] // Close the polygon by repeating the first point\n ];\n\n // Create the polygon using Turf.js\n const polygon = turfPolygon([polygonCoordinates]);\n\n // Define the point to check\n const point = turfPoint(location); // Replace with your point's coordinates\n\n // Check if the point is within the polygon\n const isInside = booleanPointInPolygon(point, polygon);\n\n return isInside;\n }\n\n getMapObjectsByFilteredLocalRef(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByName>) {\n return this.metaAtlasCore.getMapObjectsByFilteredLocalRef(...args);\n }\n\n getMapObjectsByName(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByName>) {\n return this.metaAtlasCore.getMapObjectsByName(...args);\n }\n\n getMapObjectById(...args: Parameters<typeof this.metaAtlasCore.getMapObjectById>) {\n return this.metaAtlasCore.getMapObjectById(...args);\n }\n\n getMapObjectByLocalRef(...args: Parameters<typeof this.metaAtlasCore.getMapObjectByLocalRef>) {\n return this.metaAtlasCore.getMapObjectByLocalRef(...args);\n }\n\n getMapObjectMatchingLocalRef(...args: Parameters<typeof this.metaAtlasCore.getMapObjectMatchingLocalRef>) {\n return this.metaAtlasCore.getMapObjectMatchingLocalRef(...args);\n }\n \n getMapObjectsMatchingLocalRefs(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsMatchingLocalRefs>) {\n return this.metaAtlasCore.getMapObjectsMatchingLocalRefs(...args);\n }\n\n getMapObjectsByWhatTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhatTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsByWhatTaxonomy(...args);\n }\n\n getMapObjectsByWhatTaxonomyAPI(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhatTaxonomyAPI>) {\n return this.metaAtlasCore.getMapObjectsByWhatTaxonomyAPI(...args);\n }\n\n getMapObjectsByWhereTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhereTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsByWhereTaxonomy(...args);\n }\n \n getMapObjectsByWhatAndWhereTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhatAndWhereTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsByWhatAndWhereTaxonomy(...args);\n }\n\n getMapObjectsInWhatTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsInWhatTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsInWhatTaxonomy(...args);\n }\n\n getMapObjectsInWhereTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsInWhereTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsInWhereTaxonomy(...args);\n }\n\n // Routing\n computeRoute(...args: Parameters<typeof this.routingVisualizer.computeRoute>) {\n return this.routingVisualizer.computeRoute(...args);\n }\n \n computeRoutes(mapObjectIds: string[], wheelChairAccessibleRouteOnly = false, source: EventSource) {\n const ref = this;\n const logRouteEvent = async () => {\n const getNameByIdAsync = (id) => {\n return new Promise((resolve) => {\n if (typeof id !== 'string') resolve('User GPS Location');\n ref.getMapObjectById(id, (mapObj: metaFeature[]) => {\n resolve(mapObj[0]?.name);\n });\n });\n }\n\n const getNamesFromIds = async (idList) => {\n const namePromises = idList.map(id => getNameByIdAsync(id));\n return await Promise.all(namePromises);\n }\n\n const names = await getNamesFromIds(mapObjectIds);\n names.forEach(name => {\n this.logAnalyticsEvent('route_per_object', { \n destination: name,\n route_per_object_event_source: source,\n }) \n });\n this.logAnalyticsEvent('route', { \n destinations: names,\n route_event_source: source,\n }) \n };\n\n logRouteEvent();\n return this.routingVisualizer.computeRoutes(mapObjectIds, wheelChairAccessibleRouteOnly);\n }\n\n setActiveRoute(...args: Parameters<typeof this.routingVisualizer.setActiveRoute>) {\n return this.routingVisualizer.setActiveRoute(...args);\n }\n\n getActiveRoute(...args: Parameters<typeof this.routingVisualizer.getActiveRoute>) {\n return this.routingVisualizer.getActiveRoute(...args);\n }\n\n highlightRouteSegment(...args: Parameters<typeof this.routingVisualizer.highlightRouteSegment>) {\n return this.routingVisualizer.highlightRouteSegment(...args);\n } \n\n clearRoute(...args: Parameters<typeof this.routingVisualizer.clearRoute>) {\n return this.routingVisualizer.clearRoute(...args);\n }\n\n // Drawing\n drawGeometryOnMap(type: string, onDrawEnd: (drawnFeature: maplibregl.Feature) => void, onlyVisibleAtCurrentFocus = false) : boolean {\n //if already in edit mode\n if (this.mapBoxDraw.getMode() !== 'simple_select') return false;\n\n let modeChanged = false;\n if (type === 'draw_point') {\n this.mapBoxDraw.changeMode(\"draw_point\");\n modeChanged = true;\n }\n else if (type === 'draw_line_string') {\n this.mapBoxDraw.changeMode(\"draw_line_string\");\n modeChanged = true;\n }\n else if (type === 'draw_polygon') {\n this.mapBoxDraw.changeMode(\"draw_polygon\");\n modeChanged = true;\n }\n else if (type === 'draw_marker') {\n this.mapBoxDraw.changeMode(\"draw_marker\");\n modeChanged = true;\n }\n else console.warn(\"Unsupported mode passed to drawGeometryOnMap\");\n\n if (modeChanged) {\n this.map.once('draw.create', (drawings: Array<Object>) => {\n let finalDrawing = drawings['features'][0];\n finalDrawing.properties.id = finalDrawing.id;\n if (onlyVisibleAtCurrentFocus) finalDrawing.properties.dimension_where = this.getCurrentFocus();\n else finalDrawing.properties.dimension_where = this.defaultFocusedTaxonomy;\n onDrawEnd(finalDrawing);\n })\n\n this.map.once('draw.modechange', () => {\n this.mapBoxDraw.deleteAll();\n // if (this.mapBoxDraw.getMode() === 'simple_select') onDrawEnd();\n // else console.warn(\"Unexpected mode received in mode change callback\");\n })\n }\n\n return modeChanged;\n }\n\n isInDrawMode() {\n return (this.mapBoxDraw && this.mapBoxDraw.getAll().features.length > 0);\n }\n\n addDrawingsToBaseMap(drawings: Array<maplibregl.Feature>) {\n this.drawGeojsonData.features = this.drawGeojsonData.features.concat(drawings);\n (this.map.getSource(this.mapBoxDrawSourceID) as maplibregl.GeoJSONSource).setData(this.drawGeojsonData as any);\n }\n\n getDrawingById(id: string) {\n for (let index = 0; index < this.drawGeojsonData.features.length; index++) {\n const drawing = this.drawGeojsonData.features[index];\n if (drawing.id === id) {\n return drawing;\n }\n }\n return undefined;\n }\n\n editDrawing(id: string) {\n if (id === undefined) {\n console.warn(\"maplibregl.Feature data passed to editDrawing does not contain an id. Edit request cancelled. Make sure the feature data passed in was created using draw\");\n return false;\n }\n let drawing = this.getDrawingById(id);\n if (drawing === undefined) {\n console.warn(\"There is no data against the id passed in to editDrawing, operation cancelled.\");\n return false;\n }\n\n let featureCollection = {\n type: 'FeatureCollection',\n features: [drawing],\n }\n //console.log(featureCollection)\n this.mapBoxDraw.set(featureCollection as any);\n \n const saveEditsToBaseMap = (featureId) => {\n const updatedFeature = this.mapBoxDraw.get(featureId);\n this.mapBoxDraw.deleteAll();\n\n if (updatedFeature) {\n let featureFoundInBaseMapData = false;\n for (let index = 0; index < this.drawGeojsonData.features.length; index++) {\n const feature = this.drawGeojsonData.features[index];\n if (feature.id === updatedFeature.id) {\n this.drawGeojsonData.features[index] = updatedFeature as any;\n featureFoundInBaseMapData = true;\n }\n }\n\n if (featureFoundInBaseMapData) (this.map.getSource(this.mapBoxDrawSourceID) as maplibregl.GeoJSONSource).setData(this.drawGeojsonData as any);\n else console.warn(\"Edited feature data not found in base map. Make sure addFeaturesToBaseMap was called on feature data before editing.\");\n }\n }\n\n if ((drawing.geometry as any).type !== 'Point') {\n if (drawing.properties.marker !== undefined) {\n this.mapBoxDraw.changeMode('marker_select', {\n featureId: drawing.id\n });\n }\n else {\n this.mapBoxDraw.changeMode('direct_select', {\n featureId: drawing.id\n });\n }\n\n this.map.once('draw.modechange', () => {\n if (this.mapBoxDraw.getMode() !== 'simple_select') return\n saveEditsToBaseMap(drawing.id);\n })\n }\n else {\n let featureToEditSelectedAlready = false;\n const onSelectionChanged = (selectionData) => {\n //console.log(selectionData, drawing)\n if (selectionData.features.length > 0 && selectionData.features[0].id === drawing.id) {\n if (!featureToEditSelectedAlready) {\n featureToEditSelectedAlready = true;\n }\n }\n else if (featureToEditSelectedAlready) {\n saveEditsToBaseMap(drawing.id);\n this.map.off('draw.selectionchange', onSelectionChanged);\n }\n }\n this.map.on('draw.selectionchange', onSelectionChanged);\n }\n\n return true;\n }\n\n removeDrawing(id: string) {\n for (let index = 0; index < this.drawGeojsonData.features.length; index++) {\n const drawing = this.drawGeojsonData.features[index];\n if (drawing.id === id) {\n this.drawGeojsonData.features.splice(index, 1);\n (this.map.getSource(this.mapBoxDrawSourceID) as maplibregl.GeoJSONSource).setData(this.drawGeojsonData as any);\n return true;\n }\n }\n return false;\n }\n\n createMarker(options: maplibregl.MarkerOptions) {\n if (options === undefined) options = {};\n\n options.draggable = true;\n options.color = '#FFB52E';\n const marker = new maplibregl.Marker(options)\n .setLngLat(this.map.getCenter())\n .addTo(this.map);\n\n this.map.once('click', () => {\n marker.setDraggable(false);\n\n // update color\n const color = '#3FB1CE'\n let markerElement = marker.getElement();\n markerElement\n .querySelectorAll('svg g[fill=\"' + marker._color + '\"]')[0]\n .setAttribute(\"fill\", color);\n marker._color = color;\n })\n\n return marker;\n }\n\n getCoordinates(feature: maplibregl.Feature) : any[] {\n return getCoords(feature as any);\n }\n\n getLength(feature: maplibregl.Feature, options = { units: 'kilometers' as Units }) : number | undefined {\n if (feature.geometry && (feature.geometry as any).type) {\n const type = (feature.geometry as any).type;\n if (type === 'LineString' || type === 'MultiLineString') {\n return length(feature as any, options as any)\n }\n }\n console.warn(\"Unsupported geometry type provided to getLength\");\n return undefined;\n }\n\n getArea(feature: maplibregl.Feature) : number {\n return area(feature as any);\n }\n\n /**\n * Get the 3D map instance for 3D model operations\n */\n getMap3D() {\n return this.map3D;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"meta-atlas-sdk.js","names":["maplibregl","$","getCoords","point","turfPoint","polygon","turfPolygon","length","area","cloneDeep","MapboxDraw","customStyles","mapBoxDrawDefaultStyles","DrawMarker","MarkerSelect","MetaAtlasCore","MainMap","initializeApp","getAnalytics","logEvent","RoutingVisualizer","CustomerLayer","CustomerLayerVariant","booleanPointInPolygon","FilterType","EventSource","DEFAULT_MAP_STYLE","MetaAtlasSdk","setupFirebase","firebaseConfig","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","firebaseApp","analytics","console","log","logAnalyticsEvent","eventName","properties","warn","onLoad","mapLoaded","apiAuthenticationCallbackReceived","routingVisualizer","setupRouting","map","onLoadCallback","onLoadFail","message","onFailCallbackSent","onLoadFailCallback","initMetaAtlasCore","onRoutingStatusUpdate","onSearchStatusUpdate","metaAtlasCore","init","empApiURL","accessToken","secretKey","data","authenticated","setupMapObjectSearch","map3D","constructor","arguments","undefined","errorMessage","_defineProperty","defaultFocusedTaxonomy","type","features","jsonToPass","onLoaded","customerLayerUrl","sourceLayer","getJSON","customerLayers","CustomerLayers","layer","addLayer","on","id","e","clickedFeature","overRideSelectionOfDrawnPointGeometry","feature_clicked","title","isSearchable","coords","geometry","JSON","parse","center","coordinates","setLastClickedFeature","mapObjectId","myMapObjectId","name","whatDimension","dimension_what","whereDimension","dimension_where","clickEvent","mapBoxDraw","CustomerLayersVariant","roleName","verNum","setupMap","role","mapDivOrMap","Map","container","style","zoom","pitch","bearing","antialias","attributionControl","setupLayers","addSource","url","tileServer","token","lastClickedDrawing","setDrawing","layersToAdd","includes","setupMapBoxDraw","loaded","error","displayControlsDefault","userProperties","modes","_objectSpread","draw_marker","marker_select","styles","addControl","mapBoxDrawSourceID","drawGeojsonData","index","element","getDrawingById","feature","getMode","getAll","mapBoxDrawFeature","deleteAll","directSelectOptions","featureId","getFocusTree","where","geom","props","getLastClickedFeature","getLastClickedDrawing","clickedDrawing","getMidPointOfFeature","dropPin","mapItemSelected","popupStyle","replaceLast","pinObj","markerElement","document","createElement","innerHTML","popup","Marker","setLngLat","addTo","popups","remove","push","dropMarkerForRouting","destinations","forEach","destination","_destination$selected","_destination$selected2","selectedLocation","marker","color","markers","clearMarker","extractLocation","text","match","hidePin","pinId","targetPinId","lastPin","pinToHide","find","pin","popupElem","getElement","display","concat","hidePins","obj","showPin","showPins","clearPin","targetPinIndex","findIndex","splice","clearPins","removePin","getCurrentFocus","getCurrentFocusBuilding","getCurrentFocusFloor","addUserLayer","UserLayers","filterWhereDimension","dimensionWhere","userLayers","updatedUserLayersData","filterBaseMapWhereDimension","layerID","layerFilter","filter","setFilter","layers","getFilter","updatedLayersData","focusTo","whereTaxonomyPath","moveCamera","isMobile","window","innerWidth","flyToConfig","getFlyToLocation","flyTo","getCenter","getZoom","getBearing","speed","filterLayersByCategories","filterType","filterValues","geomType","dimensionWhat","filterLayersByType","styleLayersByType","property","value","styleJson","getStyle","layerStyle","paint","layerType","setPaintProperty","clearStyleLayersByType","changeTerminalInFocusToUserViewpoint","defaultFloor","wrap","centerArray","lng","lat","checkUserViewport","building","getUserViewportBuilding","isLocationWithinHongKong","location","polygonCoordinates","isInside","getMapObjectsByFilteredLocalRef","getMapObjectsByName","getMapObjectById","getMapObjectByLocalRef","getMapObjectMatchingLocalRef","getMapObjectsMatchingLocalRefs","getMapObjectsByWhatTaxonomy","getMapObjectsByWhatTaxonomyAPI","getMapObjectsByWhereTaxonomy","getMapObjectsByWhatAndWhereTaxonomy","getMapObjectsInWhatTaxonomy","getMapObjectsInWhereTaxonomy","computeRoute","computeRoutes","mapObjectIds","wheelChairAccessibleRouteOnly","source","ref","logRouteEvent","getNameByIdAsync","Promise","resolve","mapObj","_mapObj$","getNamesFromIds","idList","namePromises","all","names","route_per_object_event_source","route_event_source","setActiveRoute","getActiveRoute","highlightRouteSegment","clearRoute","drawGeometryOnMap","onDrawEnd","onlyVisibleAtCurrentFocus","modeChanged","changeMode","once","drawings","finalDrawing","isInDrawMode","addDrawingsToBaseMap","getSource","setData","drawing","editDrawing","featureCollection","set","saveEditsToBaseMap","updatedFeature","get","featureFoundInBaseMapData","featureToEditSelectedAlready","onSelectionChanged","selectionData","off","removeDrawing","createMarker","options","draggable","setDraggable","querySelectorAll","_color","setAttribute","getCoordinates","getLength","units","getArea","getMap3D"],"sources":["../../../src/meta-atlas-sdk/meta-atlas-sdk.ts"],"sourcesContent":["// const maplibregl = require('maplibre-gl');\nimport * as maplibregl from 'maplibre-gl';\nimport $ from \"jquery\";\n\nimport 'maplibre-gl/dist/maplibre-gl.css';\nimport { getCoords } from '@turf/invariant';\nimport { Units, feature as turfFeature, lineString as turfLine, point as turfPoint, polygon as turfPolygon, multiPolygon as turfMultiPolygon } from '@turf/helpers';\nimport { Position } from 'geojson';\nimport length from '@turf/length';\nimport area from '@turf/area';\nimport cloneDeep from 'lodash/cloneDeep';\n\nimport MapboxDraw from '@mapbox/mapbox-gl-draw';\nimport {customStyles, mapBoxDrawDefaultStyles} from './customStyles';\nimport DrawMarker from './mapbox_draw_custom_modes/draw_marker';\nimport MarkerSelect from './mapbox_draw_custom_modes/marker_select';\n\nimport { MetaAtlasCore, metaFeature, clickedMetaFeature } from './MetaAtlasCore/meta-atlas-sdk-core';\n\nimport MainMap from './3DMap/MainMap';\n\nimport { FirebaseApp, initializeApp } from 'firebase/app';\nimport { Analytics, getAnalytics, logEvent } from \"firebase/analytics\";\nimport { StatusUpdateCallbackType } from './MetaAtlasCore/fetch-published-json';\n\nimport { RoutingVisualizer } from './utils/routing-visualizer';\nimport { routeLayers } from './MetaAtlasCore/routing-core/routeLayers';\n\nimport CustomerLayer from './customerLayer';\nimport CustomerLayerVariant from './customerLayerVariant';\nimport combinedStyles from './combined_style.json';\n\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\nimport { getAvatarInitials, stringToHslColor } from './utils/helpers';\nenum FilterType {\n Name = 'title',\n LocalRef = 'localRef',\n WhatTaxonomy = 'dimension_what'\n}\n\nexport enum EventSource {\n UrlLoad = 'url_load',\n MapClick = 'map_click',\n BannerClick = 'banner_click',\n SearchInput = 'search_input',\n ListClick = 'list_click',\n InfoPopupClick = 'info_popup_click',\n Chatbot = 'chatbot',\n RoutingUI = 'routing_ui',\n StampRallyClick = 'stamp_rally_click',\n}\n\nexport const DEFAULT_MAP_STYLE = 'https://api.maptiler.com/maps/01985ac8-56d2-707b-afa8-68abfe8f18be/style.json?key=12H5hrITUbJ1sDrVPqkq';\n\nexport class MetaAtlasSdk {\n accessToken: string;\n secretKey: string;\n onLoadCallback: () => void = undefined;\n onLoadFailCallback: (errorMessage: string) => void = undefined;\n\n map: maplibregl.Map;\n mapBoxDraw: MapboxDraw;\n maplibregl: any;\n mapLoaded = false;\n onFailCallbackSent = false;\n \n CustomerLayers: any;\n CustomerLayersVariant: any;\n\n UserLayers: any = [];\n floorOptions: any;\n buildingRef: string;\n defaultFocusedTaxonomy = 'where.gbtb';\n currentFocus = this.defaultFocusedTaxonomy;\n \n lastClickedDrawing: any;\n map3D: MainMap;\n firebaseApp: FirebaseApp;\n analytics: Analytics;\n\n metaAtlasCore: MetaAtlasCore;\n apiAuthenticationCallbackReceived = false;\n\n routingVisualizer = new RoutingVisualizer(this);\n\n roleName: string;\n verNum: string;\n \n // When token middleware is online that will check the tokens.\n tileServer = 'https://atoms-map-tiles-middleware.sandbox.spatialverse.online';\n // HOST = 'https://atoms-sdk.qa.cag.spatialverse.online/2.0.0/';\n HOST = 'https://atoms-sdk.sandbox.spatialverse.online/';\n //empApiURL = 'https://atoms-api.changiairport.com';\n empApiURL = 'https://atoms-api.sandbox.spatialverse.online';\n // empApiURL = 'https://atoms-api.dev.cag.spatialverse.online';\n\n mapBoxDrawSourceID = 'drawnDataSource';\n drawGeojsonData = {\n type: 'FeatureCollection',\n features: [] as maplibregl.Feature[]\n };\n popups: any[] = [];\n markers: any[] = [];\n\n setupFirebase() {\n const firebaseConfig = {\n apiKey: \"AIzaSyBDWO2wNkotbgjbkyqVrC_OEAJ3mbvlheI\",\n authDomain: \"tmt-lenovo-tech-day-26-id.firebaseapp.com\",\n projectId: \"tmt-lenovo-tech-day-26-id\",\n storageBucket: \"tmt-lenovo-tech-day-26-id.firebasestorage.app\",\n messagingSenderId: \"618619544262\",\n appId: \"1:618619544262:web:cb7a7953a908aeed212dc7\",\n measurementId: \"G-HN2FS1L0P4\"\n };\n this.firebaseApp = initializeApp(firebaseConfig);\n this.analytics = getAnalytics(this.firebaseApp);\n console.log('analytics: ', this.analytics);\n }\n\n logAnalyticsEvent(eventName: string, properties?: any) {\n console.log('logAnalyticsEvent: ', eventName, properties);\n\n if (!this.analytics) {\n console.warn('Analytics is not initialized. Event not logged:', eventName);\n return;\n }\n\n if (properties) logEvent(this.analytics, eventName, properties);\n else logEvent(this.analytics, eventName);\n }\n\n onLoad() {\n if (\n this.mapLoaded === true &&\n this.apiAuthenticationCallbackReceived === true\n ) {\n // Setup routing visualizer\n this.routingVisualizer.setupRouting(this.map);\n\n // this.map3D.init(this.map);\n \n if (this.onLoadCallback) {\n this.onLoadCallback();\n }\n }\n };\n\n onLoadFail(message: string) {\n if (this.onFailCallbackSent === false) {\n this.onFailCallbackSent = true;\n if (this.onLoadFailCallback) {\n this.onLoadFailCallback(message);\n }\n }\n };\n\n initMetaAtlasCore(onRoutingStatusUpdate: StatusUpdateCallbackType, onSearchStatusUpdate: StatusUpdateCallbackType) { \n this.metaAtlasCore.init(\n this.empApiURL,\n this.accessToken,\n this.secretKey,\n (data: any) => {\n this.apiAuthenticationCallbackReceived = true;\n if (data.authenticated) {\n // Load routing data\n this.metaAtlasCore.setupRouting(onRoutingStatusUpdate);\n this.metaAtlasCore.setupMapObjectSearch(onSearchStatusUpdate);\n\n this.map3D = new MainMap(this.metaAtlasCore);\n\n this.onLoad();\n } else {\n this.onLoadFail('Failed to authenticate token');\n }\n },\n );\n }\n\n constructor(accessToken: string, secretKey: string, \n onLoad = () => {}, onLoadFail = (errorMessage: string) => {}, onRoutingStatusUpdate: StatusUpdateCallbackType = () => {}, onSearchStatusUpdate: StatusUpdateCallbackType = () => {}) {\n this.accessToken = accessToken;\n this.secretKey = secretKey;\n this.onLoadCallback = onLoad;\n this.onLoadFailCallback = onLoadFail;\n\n this.map = null;\n this.mapBoxDraw = null;\n this.maplibregl = maplibregl;\n this.CustomerLayers = CustomerLayer;\n this.CustomerLayersVariant = CustomerLayerVariant;\n this.roleName = \"changipublic\";\n this.verNum = \"1\";\n\n this.metaAtlasCore = new MetaAtlasCore();\n this.initMetaAtlasCore(onRoutingStatusUpdate, onSearchStatusUpdate);\n\n this.setupFirebase();\n }\n\n setupMap(role: string, mapDivOrMap: string | maplibregl.Map) {\n this.roleName = role;\n\n // Support both vanilla (string DOM ID) and React (Map instance) modes\n if (typeof mapDivOrMap === 'string') {\n // Vanilla mode: create new map instance\n this.map = new maplibregl.Map({\n container: mapDivOrMap,\n style: DEFAULT_MAP_STYLE,\n center: [110.40560122701005, 1.5626614114987702],\n zoom: 18,\n pitch: 42,\n bearing: 23.4,\n antialias: true,\n attributionControl: false\n });\n } else {\n // React mode: use provided map instance\n this.map = mapDivOrMap;\n }\n\n // Initialize map setup (common for both modes)\n const setupLayers = () => {\n this.map.addSource('custom', {\n type: 'vector',\n url: this.tileServer+'/'+this.roleName+'/'+this.verNum+'/geojson?accessToken='+this.accessToken,\n });\n\n this.logAnalyticsEvent('open_app', { type: 'web', token: this.accessToken })\n\n this.map.on('click', (e) => {\n // Reset last clicks\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: e,\n });\n this.lastClickedDrawing = this.setDrawing();\n });\n\n // Setup map box draw after customerLayers so that draw geomertry shows up on top\n const layersToAdd = this.CustomerLayers;\n for (const layer of layersToAdd) {\n layer[\"source-layer\"] = 'geojson';\n this.map.addLayer(layer);\n \n this.map.on('click', layer.id, (e) => { \n //setup new clicked feature\n var clickedFeature = e.features[0];\n console.log(clickedFeature); \n this.logAnalyticsEvent('feature_clicked', { feature_clicked: clickedFeature.properties.title });\n this.overRideSelectionOfDrawnPointGeometry(clickedFeature as any);\n if (clickedFeature.properties.dimension_what.includes('what.infra.garden') || clickedFeature.properties.isSearchable && clickedFeature.properties.title != 'Transit' && clickedFeature.properties.title != 'Public') {\n const coords = clickedFeature.geometry.type === \"Polygon\" || clickedFeature.geometry.type === \"MultiPolygon\" ?\n JSON.parse(clickedFeature.properties.center) :\n (clickedFeature.geometry as any).coordinates;\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: clickedFeature.properties.myMapObjectId,\n coordinates: coords,\n name: clickedFeature.properties.title,\n whatDimension: clickedFeature.properties.dimension_what,\n whereDimension: clickedFeature.properties.dimension_where,\n geometry: clickedFeature.geometry,\n properties: clickedFeature.properties as any,\n clickEvent: e,\n });\n }\n });\n }\n \n this.mapLoaded = true;\n this.setupMapBoxDraw();\n };\n\n // Check if map is already loaded (React mode with pre-existing map instance)\n if (this.map.loaded()) {\n // Map is already loaded, execute initialization directly\n setupLayers();\n } else {\n // Map not loaded yet, wait for load event (Vanilla mode)\n this.map.on('load', setupLayers);\n }\n\n this.map.on('error', (error: ErrorEvent) => {\n this.onLoadFail(error.message);\n });\n }\n\n setupMapBoxDraw() {\n this.mapBoxDraw = new MapboxDraw({\n displayControlsDefault: false,\n userProperties: true,\n modes: {\n ...MapboxDraw.modes,\n draw_marker: DrawMarker,\n marker_select: MarkerSelect\n },\n styles: mapBoxDrawDefaultStyles,\n });\n\n this.map.addControl(this.mapBoxDraw as any);\n\n this.map.addSource(this.mapBoxDrawSourceID, {\n 'type': 'geojson',\n 'data': this.drawGeojsonData\n });\n\n for (let index = 0; index < customStyles.length; index++) {\n const element = customStyles[index];\n element['source'] = this.mapBoxDrawSourceID\n this.map.addLayer(element as any)\n\n this.map.on('click', element.id, (e) => {\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: e,\n });\n var clickedFeature = e.features[0];\n this.overRideSelectionOfDrawnPointGeometry(clickedFeature as any);\n if (clickedFeature.properties.id) this.lastClickedDrawing = this.getDrawingById(clickedFeature.properties.id);\n else this.lastClickedDrawing = this.setDrawing();\n });\n }\n\n this.mapLoaded = true;\n this.onLoad();\n }\n\n addCustomerLayer = (map: any, jsonToPass: any, onLoaded: Function) => {\n let customerLayerUrl = jsonToPass.customerLayerUrl;\n let sourceLayer = jsonToPass.sourceLayer;\n $.getJSON(customerLayerUrl, (customerLayers) => {\n this.CustomerLayers = customerLayers;\n for (const layer of this.CustomerLayers) {\n layer[\"source-layer\"] = sourceLayer;\n map.addLayer(layer);\n\n this.map.on('click', layer.id, (e) => { \n //setup new clicked feature\n const clickedFeature = e.features[0];\n this.overRideSelectionOfDrawnPointGeometry(clickedFeature as any);\n console.log('clickedFeature: ', clickedFeature)\n this.logAnalyticsEvent('feature_clicked', { feature_clicked: clickedFeature.properties.title })\n if (clickedFeature.properties.isSearchable && clickedFeature.properties.title != 'Transit' && clickedFeature.properties.title != 'Public') {\n const coords = clickedFeature.geometry.type === \"Polygon\" ?\n JSON.parse(clickedFeature.properties.center) :\n (clickedFeature.geometry as any).coordinates;\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: clickedFeature.properties.myMapObjectId,\n coordinates: coords,\n name: clickedFeature.properties.title,\n whatDimension: clickedFeature.properties.dimension_what,\n whereDimension: clickedFeature.properties.dimension_where,\n geometry: clickedFeature.geometry,\n properties: clickedFeature.properties as any,\n clickEvent: e,\n });\n }\n });\n }\n\n onLoaded();\n });\n }\n\n overRideSelectionOfDrawnPointGeometry(feature: maplibregl.Feature) {\n // Check if a drawn point geometry is currently selected, it will be consider selected both in highlighted & non-highlighted state.\n if (this.mapBoxDraw && this.mapBoxDraw.getMode() === 'simple_select' && this.mapBoxDraw.getAll().features.length === 1) {\n const mapBoxDrawFeature = this.mapBoxDraw.getAll().features;\n // If the passed in feature is not a drawn feature, then unselect drawn point type geometry\n if (feature.properties.id === undefined) this.mapBoxDraw.deleteAll();\n // If the passed in feature is a drawn feature, then unselect drawn point type geometry & highlight the passed in drawn geometry\n else if (feature.properties.id !== undefined && mapBoxDrawFeature[0].id !== feature.properties.id) {\n this.mapBoxDraw.deleteAll();\n const directSelectOptions = {\n featureId: feature.properties.id\n };\n // TODO: figure out why this doesn't work\n // this.mapBoxDraw.changeMode('direct_select', directSelectOptions)\n }\n } \n }\n\n getFocusTree() {\n return this.metaAtlasCore.getFocusTree();\n }\n\n setDrawing(id=null, where=null, geom=null, props=null) {\n const clickedFeature = {\n \"id\": id,\n \"where\": where,\n \"geometry\": geom,\n \"properties\": props\n }\n return clickedFeature;\n }\n\n getLastClickedFeature() {\n return this.metaAtlasCore.getLastClickedFeature();\n }\n\n getLastClickedDrawing() {\n let clickedDrawing = this.lastClickedDrawing;\n if (!this.lastClickedDrawing || (this.lastClickedDrawing && (this.lastClickedDrawing.id === null || this.lastClickedDrawing.where === null))) {\n clickedDrawing = this.setDrawing();\n }\n return clickedDrawing;\n }\n\n getMidPointOfFeature(feature: any) {\n return this.metaAtlasCore.getMidPointOfFeature(feature);\n }\n\n dropPin(mapItemSelected: any, popupStyle: string, replaceLast: boolean = true) {\n const pinObj = {\n feature: mapItemSelected,\n popupStyle: popupStyle\n };\n\n const markerElement = document.createElement('div');\n markerElement.innerHTML = pinObj.popupStyle;\n\n const popup = new maplibregl.Marker({ element: markerElement })\n .setLngLat(this.getMidPointOfFeature(pinObj.feature))\n .addTo(this.map);\n\n if (replaceLast) {\n if (this.popups.length > 1) {\n this.popups[this.popups.length - 1].popup.remove();\n this.popups[this.popups.length - 1].popup = popup;\n this.popups[this.popups.length - 1].id = pinObj.feature.mapObjectId;\n } else {\n if (this.popups.length > 0) this.popups[this.popups.length - 1].popup.remove();\n this.popups = [{ popup: popup, id: pinObj.feature.mapObjectId }];\n }\n } else {\n this.popups.push({ popup: popup, id: pinObj.feature.mapObjectId });\n }\n\n return this.popups[this.popups.length - 1].id;\n }\n\n dropMarkerForRouting(destinations: any[]) {\n destinations.forEach(destination => {\n console.log(destination.selectedLocation, 'destination.selectedLocation');\n const coordinates = destination.selectedLocation?.coordinates\n ? destination.selectedLocation.coordinates\n : destination.selectedLocation?.geometry?.coordinates;\n\n console.log(coordinates, 'Coordinates'); // Debugging line\n\n if (coordinates && coordinates.length === 2) {\n const marker = new this.maplibregl.Marker({ color: '#188689' })\n .setLngLat([coordinates[0], coordinates[1]]) // Ensure correct format\n .addTo(this.map as any);\n\n this.markers.push(marker);\n } else {\n console.error('Invalid coordinates:', coordinates);\n }\n });\n }\n\n clearMarker() {\n if (this.markers && this.markers.length > 0) {\n this.markers.forEach((marker: any) => {\n marker.remove();\n });\n }\n this.markers = [];\n }\n\n extractLocation(text: string) {\n const match = text.match(/^(?:[^_]*_){3}([^_]*)/);\n return match ? match[1] : null;\n }\n\n hidePin(pinId: string = '-1'): void {\n let targetPinId: string;\n\n if (pinId === '-1') {\n const lastPin = this.popups[this.popups.length - 1];\n if (!lastPin) {\n console.warn('No pins available to hide.');\n return;\n }\n targetPinId = lastPin.id;\n } else {\n targetPinId = pinId;\n }\n\n const pinToHide = this.popups.find(pin => pin.id === targetPinId);\n\n if (pinToHide) {\n let popupElem = pinToHide.popup.getElement();\n if (popupElem) {\n popupElem.style.display = 'none';\n }\n console.log(`Pin with ID: ${targetPinId} is now hidden.`);\n } else {\n console.warn(`Pin with ID: ${targetPinId} not found.`);\n }\n }\n\n hidePins() {\n if (this.popups.length > 0) {\n this.popups.forEach(obj => {\n let popupElem = obj.popup.getElement();\n if (popupElem) {\n console.log(popupElem.style.display);\n\n popupElem.style.display = 'none';\n }\n });\n }\n }\n\n showPin(pinId: string = '-1'): void {\n let targetPinId: string;\n\n if (pinId === '-1') {\n const lastPin = this.popups[this.popups.length - 1];\n if (!lastPin) {\n console.warn('No pins available to show.');\n return;\n }\n targetPinId = lastPin.id;\n } else {\n targetPinId = pinId;\n }\n\n const pinToHide = this.popups.find(pin => pin.id === targetPinId);\n\n if (pinToHide) {\n let popupElem = pinToHide.popup.getElement();\n if (popupElem) {\n popupElem.style.display = 'flex';\n }\n console.log(`Pin with ID: ${targetPinId} is now visible.`);\n } else {\n console.warn(`Pin with ID: ${targetPinId} not found.`);\n }\n }\n\n showPins() {\n if (this.popups.length > 0) {\n this.popups.forEach(obj => {\n let popupElem = obj.popup.getElement();\n if (popupElem) {\n popupElem.style.display = 'flex';\n }\n });\n }\n }\n\n clearPin(pinId: string = '-1'): void {\n let targetPinIndex: number;\n\n if (pinId === '-1') {\n targetPinIndex = this.popups.length - 1;\n if (targetPinIndex < 0) {\n console.warn('No pins available to clear.');\n return;\n }\n } else {\n targetPinIndex = this.popups.findIndex(pin => pin.id === pinId);\n if (targetPinIndex === -1) {\n console.warn(`Pin with ID: ${pinId} not found.`);\n return;\n }\n }\n\n if (this.popups[targetPinIndex]) {\n this.popups[targetPinIndex].popup.remove();\n this.popups.splice(targetPinIndex, 1);\n }\n }\n\n clearPins() {\n if (this.popups.length > 0) {\n this.popups.forEach(obj => {\n obj.popup.remove();\n });\n this.popups.length = 0;\n }\n }\n\n removePin() {\n $('.mapboxgl-popup').remove();\n }\n\n getCurrentFocus() {\n return this.metaAtlasCore.getCurrentFocus();\n }\n\n getCurrentFocusBuilding(){\n return this.metaAtlasCore.getCurrentFocusBuilding();\n }\n\n getCurrentFocusFloor(){\n return this.metaAtlasCore.getCurrentFocusFloor();\n }\n\n addUserLayer(layer: any) {\n this.UserLayers.push(layer);\n this.map.addLayer(layer);\n\n this.map.on('click', layer.id, (e) => { \n //setup new clicked feature\n var clickedFeature = e.features[0];\n const coords = clickedFeature.geometry.type === \"Polygon\" ?\n JSON.parse(clickedFeature.properties.center) :\n (clickedFeature.geometry as any).coordinates;\n this.metaAtlasCore.setLastClickedFeature({\n mapObjectId: clickedFeature.properties.id,\n coordinates: coords,\n name: clickedFeature.properties.name,\n whatDimension: clickedFeature.properties.dimension_what,\n whereDimension: clickedFeature.properties.dimension_where,\n geometry: clickedFeature.geometry,\n properties: clickedFeature.properties as any,\n clickEvent: e,\n });\n });\n }\n\n filterWhereDimension(dimensionWhere: string) {\n // filter user layers\n let userLayers = cloneDeep(this.UserLayers);\n if (userLayers.length > 0) {\n let updatedUserLayersData = this.metaAtlasCore.filterBaseMapWhereDimension(userLayers, dimensionWhere);\n for (let index = 0; index < updatedUserLayersData.length; index++) {\n const layerID = updatedUserLayersData[index].id;\n const layerFilter = updatedUserLayersData[index].filter;\n userLayers[index].filter = layerFilter;\n this.map.setFilter(layerID, layerFilter);\n }\n }\n\n // filter basemap layers\n let layers = cloneDeep(this.CustomerLayers);\n for (let index = 0; index < layers.length; index += 1) {\n const layerID = layers[index].id;\n const layerFilter = this.map.getFilter(layerID);\n layers[index].filter = layerFilter;\n }\n let updatedLayersData =\n this.metaAtlasCore.filterBaseMapWhereDimension(\n layers,\n dimensionWhere,\n );\n \n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerFilter = updatedLayersData[index].filter;\n this.map.setFilter(layerID, (layerFilter));\n }\n\n // // filter non-basemap layers\n // layers = cloneDeep(customStyles.concat(routeLayers));\n // for (let index = 0; index < layers.length; index += 1) {\n // const layerID = layers[index].id;\n // const layerFilter = this.map.getFilter(layerID);\n // layers[index].filter = layerFilter;\n // }\n // updatedLayersData =\n // this.metaAtlasCore.filterLayersWhereDimension(\n // layers,\n // dimensionWhere,\n // );\n \n // for (let index = 0; index < updatedLayersData.length; index += 1) {\n // const layerID = updatedLayersData[index].id;\n // const layerFilter = updatedLayersData[index].filter;\n // }\n }\n\n focusTo(whereTaxonomyPath: string, moveCamera: boolean = true){\n const map = this.map;\n let dimensionWhere = whereTaxonomyPath;\n if (!dimensionWhere || !map) return;\n\n console.log(whereTaxonomyPath, 'whereTaxonomyPath');\n \n this.filterWhereDimension(dimensionWhere);\n const isMobile = window.innerWidth < 768;\n if (moveCamera) {\n const flyToConfig = this.metaAtlasCore.getFlyToLocation(dimensionWhere, isMobile);\n this.map.flyTo({\n center: flyToConfig.center ? flyToConfig.center : this.map.getCenter(),\n zoom: flyToConfig.zoom ? flyToConfig.zoom : this.map.getZoom(),\n bearing: flyToConfig.bearing ? flyToConfig.bearing : this.map.getBearing(),\n speed: 0.8,\n });\n\n // track inside so that only user requested focus is tracked\n // logEvent(this.analytics, 'focus_changed', { location: dimensionWhere });\n }\n }\n\n filterLayersByCategories(filterType: FilterType, filterValues: string[], geomType: string, dimensionWhat: string) {\n const map = this.map;\n if (!filterValues || !map) return;\n\n let layers = cloneDeep(this.CustomerLayers);\n for (let index = 0; index < layers.length; index += 1) {\n const layerID = layers[index].id;\n const layerFilter = this.map.getFilter(layerID);\n layers[index].filter = layerFilter;\n }\n let updatedLayersData = this.metaAtlasCore.filterLayersByCategories(layers, filterType, filterValues, geomType, dimensionWhat, this.map);\n\n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerFilter = updatedLayersData[index].filter;\n this.map.setFilter(layerID, layerFilter);\n }\n }\n\n filterLayersByType(filterType: FilterType, filterValues: string[], geomType = '') {\n const map = this.map;\n if (!filterValues || !map) return;\n\n let userLayers = cloneDeep(this.UserLayers);\n if (userLayers.length > 0) {\n let updatedUserLayersData = this.metaAtlasCore.filterLayersByType(userLayers, filterType, filterValues, geomType);\n for (let index = 0; index < updatedUserLayersData.length; index++) {\n const layerID = updatedUserLayersData[index].id;\n const layerFilter = updatedUserLayersData[index].filter;\n userLayers[index].filter = layerFilter;\n this.map.setFilter(layerID, layerFilter);\n }\n }\n }\n\n styleLayersByType(filterType: FilterType, filterValues: string[], property: string, value: string) {\n if (!filterValues || !this.map) return;\n\n let styleJson = this.map.getStyle();\n let layers = styleJson.layers;\n\n let updatedLayersData = this.metaAtlasCore.styleLayersByType(layers, filterType, filterValues, property, value);\n\n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerStyle = updatedLayersData[index].paint;\n const layerType = updatedLayersData[index].type;\n if (layerType && (layerType === 'fill' || layerType === 'line')) {\n if (layerStyle[property]) {\n this.map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n }\n }\n }\n\n clearStyleLayersByType(filterType: FilterType, filterValues: string[], property: string) {\n if (!this.map) return;\n\n let styleJson = this.map.getStyle();\n let layers = styleJson.layers;\n\n let updatedLayersData = this.metaAtlasCore.clearStyleLayersByType(layers, filterType, filterValues, property);\n\n for (let index = 0; index < updatedLayersData.length; index += 1) {\n const layerID = updatedLayersData[index].id;\n const layerStyle = updatedLayersData[index].paint;\n const layerType = updatedLayersData[index].type;\n if (layerType && (layerType === 'fill' || layerType === 'line')) {\n if (layerStyle[property]) {\n this.map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n }\n }\n }\n\n changeTerminalInFocusToUserViewpoint(defaultFloor: object = {}) {\n let center = this.map.getCenter().wrap();\n const centerArray: [number, number] = [center.lng, center.lat];\n // console.log('center: ', center);\n if (this.metaAtlasCore.checkUserViewport(centerArray, this.getCurrentFocusBuilding(), this.getCurrentFocusFloor())) return true;\n //get building to focus to\n let building = this.metaAtlasCore.getUserViewportBuilding(centerArray);\n // console.log(\"focus to:\");\n // console.log(building);\n if (!building) return false;\n //focus to default floor provided\n if (building[\"name\"] in defaultFloor) {\n this.focusTo(defaultFloor[building[\"name\"]], false);\n return true;\n }\n //focus to default floor in focusTree\n // if (!building.hasOwnProperty(\"defaultFloorPath\")) return true;\n // this.focusTo(building[\"defaultFloorPath\"], false);\n\n return true;\n }\n\n isLocationWithinHongKong(location: Position) {\n // Define the polygon coordinates\n const polygonCoordinates = [\n [\n 103.59716039266556,\n 1.2570288388163817\n ],\n [\n 103.5792058079661,\n 1.2001127572538621\n ],\n [\n 103.69481581677104,\n 1.2005505778590049\n ],\n [\n 103.9124604166791,\n 1.2408297702235416\n ],\n [\n 104.07843084598773,\n 1.3003717948835174\n ],\n [\n 104.09332001378709,\n 1.3428384139758691\n ],\n [\n 104.06568408463107,\n 1.4395702492902842\n ],\n [\n 104.01405273250049,\n 1.430831826129534\n ],\n [\n 103.94486100905976,\n 1.4264524124152587\n ],\n [\n 103.88661860370877,\n 1.4347670822090777\n ],\n [\n 103.84020398120549,\n 1.470670314084117\n ],\n [\n 103.79466396668937,\n 1.467591709607774\n ],\n [\n 103.75700361138325,\n 1.4470255906078648\n ],\n [\n 103.72197278477057,\n 1.4605952336399213\n ],\n [\n 103.68041038922672,\n 1.4408697939934143\n ],\n [\n 103.64577440712543,\n 1.379174061413977\n ],\n [\n 103.59716039266556,\n 1.2570288388163817\n ],\n [\n 103.59716039266556,\n 1.2570288388163817\n ] // Close the polygon by repeating the first point\n ];\n\n // Create the polygon using Turf.js\n const polygon = turfPolygon([polygonCoordinates]);\n\n // Define the point to check\n const point = turfPoint(location); // Replace with your point's coordinates\n\n // Check if the point is within the polygon\n const isInside = booleanPointInPolygon(point, polygon);\n\n return isInside;\n }\n\n getMapObjectsByFilteredLocalRef(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByName>) {\n return this.metaAtlasCore.getMapObjectsByFilteredLocalRef(...args);\n }\n\n getMapObjectsByName(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByName>) {\n return this.metaAtlasCore.getMapObjectsByName(...args);\n }\n\n getMapObjectById(...args: Parameters<typeof this.metaAtlasCore.getMapObjectById>) {\n return this.metaAtlasCore.getMapObjectById(...args);\n }\n\n getMapObjectByLocalRef(...args: Parameters<typeof this.metaAtlasCore.getMapObjectByLocalRef>) {\n return this.metaAtlasCore.getMapObjectByLocalRef(...args);\n }\n\n getMapObjectMatchingLocalRef(...args: Parameters<typeof this.metaAtlasCore.getMapObjectMatchingLocalRef>) {\n return this.metaAtlasCore.getMapObjectMatchingLocalRef(...args);\n }\n \n getMapObjectsMatchingLocalRefs(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsMatchingLocalRefs>) {\n return this.metaAtlasCore.getMapObjectsMatchingLocalRefs(...args);\n }\n\n getMapObjectsByWhatTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhatTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsByWhatTaxonomy(...args);\n }\n\n getMapObjectsByWhatTaxonomyAPI(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhatTaxonomyAPI>) {\n return this.metaAtlasCore.getMapObjectsByWhatTaxonomyAPI(...args);\n }\n\n getMapObjectsByWhereTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhereTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsByWhereTaxonomy(...args);\n }\n \n getMapObjectsByWhatAndWhereTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsByWhatAndWhereTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsByWhatAndWhereTaxonomy(...args);\n }\n\n getMapObjectsInWhatTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsInWhatTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsInWhatTaxonomy(...args);\n }\n\n getMapObjectsInWhereTaxonomy(...args: Parameters<typeof this.metaAtlasCore.getMapObjectsInWhereTaxonomy>) {\n return this.metaAtlasCore.getMapObjectsInWhereTaxonomy(...args);\n }\n\n // Routing\n computeRoute(...args: Parameters<typeof this.routingVisualizer.computeRoute>) {\n return this.routingVisualizer.computeRoute(...args);\n }\n \n computeRoutes(mapObjectIds: string[], wheelChairAccessibleRouteOnly = false, source: EventSource) {\n const ref = this;\n const logRouteEvent = async () => {\n const getNameByIdAsync = (id) => {\n return new Promise((resolve) => {\n if (typeof id !== 'string') resolve('User GPS Location');\n ref.getMapObjectById(id, (mapObj: metaFeature[]) => {\n resolve(mapObj[0]?.name);\n });\n });\n }\n\n const getNamesFromIds = async (idList) => {\n const namePromises = idList.map(id => getNameByIdAsync(id));\n return await Promise.all(namePromises);\n }\n\n const names = await getNamesFromIds(mapObjectIds);\n names.forEach(name => {\n this.logAnalyticsEvent('route_per_object', { \n destination: name,\n route_per_object_event_source: source,\n }) \n });\n this.logAnalyticsEvent('route', { \n destinations: names,\n route_event_source: source,\n }) \n };\n\n logRouteEvent();\n return this.routingVisualizer.computeRoutes(mapObjectIds, wheelChairAccessibleRouteOnly);\n }\n\n setActiveRoute(...args: Parameters<typeof this.routingVisualizer.setActiveRoute>) {\n return this.routingVisualizer.setActiveRoute(...args);\n }\n\n getActiveRoute(...args: Parameters<typeof this.routingVisualizer.getActiveRoute>) {\n return this.routingVisualizer.getActiveRoute(...args);\n }\n\n highlightRouteSegment(...args: Parameters<typeof this.routingVisualizer.highlightRouteSegment>) {\n return this.routingVisualizer.highlightRouteSegment(...args);\n } \n\n clearRoute(...args: Parameters<typeof this.routingVisualizer.clearRoute>) {\n return this.routingVisualizer.clearRoute(...args);\n }\n\n // Drawing\n drawGeometryOnMap(type: string, onDrawEnd: (drawnFeature: maplibregl.Feature) => void, onlyVisibleAtCurrentFocus = false) : boolean {\n //if already in edit mode\n if (this.mapBoxDraw.getMode() !== 'simple_select') return false;\n\n let modeChanged = false;\n if (type === 'draw_point') {\n this.mapBoxDraw.changeMode(\"draw_point\");\n modeChanged = true;\n }\n else if (type === 'draw_line_string') {\n this.mapBoxDraw.changeMode(\"draw_line_string\");\n modeChanged = true;\n }\n else if (type === 'draw_polygon') {\n this.mapBoxDraw.changeMode(\"draw_polygon\");\n modeChanged = true;\n }\n else if (type === 'draw_marker') {\n this.mapBoxDraw.changeMode(\"draw_marker\");\n modeChanged = true;\n }\n else console.warn(\"Unsupported mode passed to drawGeometryOnMap\");\n\n if (modeChanged) {\n this.map.once('draw.create', (drawings: Array<Object>) => {\n let finalDrawing = drawings['features'][0];\n finalDrawing.properties.id = finalDrawing.id;\n if (onlyVisibleAtCurrentFocus) finalDrawing.properties.dimension_where = this.getCurrentFocus();\n else finalDrawing.properties.dimension_where = this.defaultFocusedTaxonomy;\n onDrawEnd(finalDrawing);\n })\n\n this.map.once('draw.modechange', () => {\n this.mapBoxDraw.deleteAll();\n // if (this.mapBoxDraw.getMode() === 'simple_select') onDrawEnd();\n // else console.warn(\"Unexpected mode received in mode change callback\");\n })\n }\n\n return modeChanged;\n }\n\n isInDrawMode() {\n return (this.mapBoxDraw && this.mapBoxDraw.getAll().features.length > 0);\n }\n\n addDrawingsToBaseMap(drawings: Array<maplibregl.Feature>) {\n this.drawGeojsonData.features = this.drawGeojsonData.features.concat(drawings);\n (this.map.getSource(this.mapBoxDrawSourceID) as maplibregl.GeoJSONSource).setData(this.drawGeojsonData as any);\n }\n\n getDrawingById(id: string) {\n for (let index = 0; index < this.drawGeojsonData.features.length; index++) {\n const drawing = this.drawGeojsonData.features[index];\n if (drawing.id === id) {\n return drawing;\n }\n }\n return undefined;\n }\n\n editDrawing(id: string) {\n if (id === undefined) {\n console.warn(\"maplibregl.Feature data passed to editDrawing does not contain an id. Edit request cancelled. Make sure the feature data passed in was created using draw\");\n return false;\n }\n let drawing = this.getDrawingById(id);\n if (drawing === undefined) {\n console.warn(\"There is no data against the id passed in to editDrawing, operation cancelled.\");\n return false;\n }\n\n let featureCollection = {\n type: 'FeatureCollection',\n features: [drawing],\n }\n //console.log(featureCollection)\n this.mapBoxDraw.set(featureCollection as any);\n \n const saveEditsToBaseMap = (featureId) => {\n const updatedFeature = this.mapBoxDraw.get(featureId);\n this.mapBoxDraw.deleteAll();\n\n if (updatedFeature) {\n let featureFoundInBaseMapData = false;\n for (let index = 0; index < this.drawGeojsonData.features.length; index++) {\n const feature = this.drawGeojsonData.features[index];\n if (feature.id === updatedFeature.id) {\n this.drawGeojsonData.features[index] = updatedFeature as any;\n featureFoundInBaseMapData = true;\n }\n }\n\n if (featureFoundInBaseMapData) (this.map.getSource(this.mapBoxDrawSourceID) as maplibregl.GeoJSONSource).setData(this.drawGeojsonData as any);\n else console.warn(\"Edited feature data not found in base map. Make sure addFeaturesToBaseMap was called on feature data before editing.\");\n }\n }\n\n if ((drawing.geometry as any).type !== 'Point') {\n if (drawing.properties.marker !== undefined) {\n this.mapBoxDraw.changeMode('marker_select', {\n featureId: drawing.id\n });\n }\n else {\n this.mapBoxDraw.changeMode('direct_select', {\n featureId: drawing.id\n });\n }\n\n this.map.once('draw.modechange', () => {\n if (this.mapBoxDraw.getMode() !== 'simple_select') return\n saveEditsToBaseMap(drawing.id);\n })\n }\n else {\n let featureToEditSelectedAlready = false;\n const onSelectionChanged = (selectionData) => {\n //console.log(selectionData, drawing)\n if (selectionData.features.length > 0 && selectionData.features[0].id === drawing.id) {\n if (!featureToEditSelectedAlready) {\n featureToEditSelectedAlready = true;\n }\n }\n else if (featureToEditSelectedAlready) {\n saveEditsToBaseMap(drawing.id);\n this.map.off('draw.selectionchange', onSelectionChanged);\n }\n }\n this.map.on('draw.selectionchange', onSelectionChanged);\n }\n\n return true;\n }\n\n removeDrawing(id: string) {\n for (let index = 0; index < this.drawGeojsonData.features.length; index++) {\n const drawing = this.drawGeojsonData.features[index];\n if (drawing.id === id) {\n this.drawGeojsonData.features.splice(index, 1);\n (this.map.getSource(this.mapBoxDrawSourceID) as maplibregl.GeoJSONSource).setData(this.drawGeojsonData as any);\n return true;\n }\n }\n return false;\n }\n\n createMarker(options: maplibregl.MarkerOptions) {\n if (options === undefined) options = {};\n\n options.draggable = true;\n options.color = '#FFB52E';\n const marker = new maplibregl.Marker(options)\n .setLngLat(this.map.getCenter())\n .addTo(this.map);\n\n this.map.once('click', () => {\n marker.setDraggable(false);\n\n // update color\n const color = '#3FB1CE'\n let markerElement = marker.getElement();\n markerElement\n .querySelectorAll('svg g[fill=\"' + marker._color + '\"]')[0]\n .setAttribute(\"fill\", color);\n marker._color = color;\n })\n\n return marker;\n }\n\n getCoordinates(feature: maplibregl.Feature) : any[] {\n return getCoords(feature as any);\n }\n\n getLength(feature: maplibregl.Feature, options = { units: 'kilometers' as Units }) : number | undefined {\n if (feature.geometry && (feature.geometry as any).type) {\n const type = (feature.geometry as any).type;\n if (type === 'LineString' || type === 'MultiLineString') {\n return length(feature as any, options as any)\n }\n }\n console.warn(\"Unsupported geometry type provided to getLength\");\n return undefined;\n }\n\n getArea(feature: maplibregl.Feature) : number {\n return area(feature as any);\n }\n\n /**\n * Get the 3D map instance for 3D model operations\n */\n getMap3D() {\n return this.map3D;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -33,12 +33,14 @@ export const getAvatarInitials = name => {
|
|
|
33
33
|
}
|
|
34
34
|
return (words[0][0] + words[1][0]).toUpperCase();
|
|
35
35
|
};
|
|
36
|
-
export const stringToHslColor = (str
|
|
36
|
+
export const stringToHslColor = function (str) {
|
|
37
|
+
let saturation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 70;
|
|
38
|
+
let lightness = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
|
|
37
39
|
let hash = 0;
|
|
38
40
|
for (let i = 0; i < str.length; i++) {
|
|
39
41
|
hash = str.charCodeAt(i) + ((hash << 5) - hash);
|
|
40
42
|
}
|
|
41
43
|
const hue = hash % 360;
|
|
42
|
-
return
|
|
44
|
+
return "hsl(".concat(hue, ", ").concat(saturation, "%, ").concat(lightness, "%)");
|
|
43
45
|
};
|
|
44
46
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["hexStringToBuffer","hexString","buffer","Uint8Array","length","i","parseInt","substr","decryptFile","data","tag","secretKey","algorithm","originalData","from","atob","c","charCodeAt","importedKey","crypto","subtle","importKey","TextEncoder","encode","name","decryptedBuffer","decrypt","iv","decryptedData","TextDecoder","decode","JSON","parse","console","log","getAvatarInitials","words","trim","split","substring","toUpperCase","stringToHslColor","str","saturation","lightness","hash","hue"],"sources":["../../../../src/meta-atlas-sdk/utils/helpers.ts"],"sourcesContent":["\n\n// Utility function to convert hex string to ArrayBuffer\nfunction hexStringToBuffer(hexString) {\n const buffer = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n buffer[i / 2] = parseInt(hexString.substr(i, 2), 16);\n }\n return buffer;\n}\n\nexport const decryptFile = async (data: any, tag: string, secretKey: string) => {\n const algorithm = 'AES-CBC';\n // Has to convert iv to \n const originalData = Uint8Array.from(atob(tag), c => c.charCodeAt(0));\n // Import the secret key\n const importedKey = await crypto.subtle.importKey(\n 'raw',\n new TextEncoder().encode(secretKey),\n { name: algorithm },\n false,\n ['decrypt']\n );\n // Decrypt the data\n const decryptedBuffer = await crypto.subtle.decrypt(\n { name: algorithm, iv: originalData },\n importedKey,\n hexStringToBuffer(data)\n );\n // Convert the decrypted buffer to a UTF-8 string\n let decryptedData = new TextDecoder().decode(decryptedBuffer);\n decryptedData = JSON.parse(decryptedData);\n\n console.log(decryptedData);\n\n return decryptedData;\n };\n\n\n export const getAvatarInitials = (name: string): string => {\n if (!name) return \"\";\n \n const words = name.trim().split(/\\s+/);\n \n if (words.length === 1) {\n return words[0].substring(0, 2).toUpperCase();\n }\n \n return (words[0][0] + words[1][0]).toUpperCase();\n }\n \n export const stringToHslColor = (str: string, saturation = 70, lightness = 50) => {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n \n const hue = hash % 360;\n return `hsl(${hue}, ${saturation}%, ${lightness}%)`;\n }"],"mappings":"AAEA;AACA,SAASA,iBAAiBA,CAACC,SAAS,EAAE;EAClC,MAAMC,MAAM,GAAG,IAAIC,UAAU,CAACF,SAAS,CAACG,MAAM,GAAG,CAAC,CAAC;EACnD,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,SAAS,CAACG,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;IAC1CH,MAAM,CAACG,CAAC,GAAG,CAAC,CAAC,GAAGC,QAAQ,CAACL,SAAS,CAACM,MAAM,CAACF,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;EACxD;EACA,OAAOH,MAAM;AACjB;AAEA,OAAO,MAAMM,WAAW,GAAG,MAAAA,CAAOC,IAAS,EAAEC,GAAW,EAAEC,SAAiB,KAAK;EAC5E,MAAMC,SAAS,GAAG,SAAS;EAC3B;EACA,MAAMC,YAAY,GAAGV,UAAU,CAACW,IAAI,CAACC,IAAI,CAACL,GAAG,CAAC,EAAEM,CAAC,IAAIA,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,CAAC;EACrE;EACA,MAAMC,WAAW,GAAG,MAAMC,MAAM,CAACC,MAAM,CAACC,SAAS,CAC7C,KAAK,EACL,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACZ,SAAS,CAAC,EACnC;IAAEa,IAAI,EAAEZ;EAAU,CAAC,EACnB,KAAK,EACL,CAAC,SAAS,CACd,CAAC;EACD;EACA,MAAMa,eAAe,GAAG,MAAMN,MAAM,CAACC,MAAM,CAACM,OAAO,CAC/C;IAAEF,IAAI,EAAEZ,SAAS;IAAEe,EAAE,EAAEd;EAAa,CAAC,EACrCK,WAAW,EACXlB,iBAAiB,CAACS,IAAI,CAC1B,CAAC;EACD;EACA,IAAImB,aAAa,GAAG,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACL,eAAe,CAAC;EAC7DG,aAAa,GAAGG,IAAI,CAACC,KAAK,CAACJ,aAAa,CAAC;EAEzCK,OAAO,CAACC,GAAG,CAACN,aAAa,CAAC;EAE1B,OAAOA,aAAa;AACtB,CAAC;AAGD,OAAO,MAAMO,iBAAiB,GAAIX,IAAY,IAAa;EACzD,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EAEpB,MAAMY,KAAK,GAAGZ,IAAI,CAACa,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,KAAK,CAAC;EAEtC,IAAIF,KAAK,CAAChC,MAAM,KAAK,CAAC,EAAE;IACtB,OAAOgC,KAAK,CAAC,CAAC,CAAC,CAACG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC/C;EAEA,OAAO,CAACJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEI,WAAW,CAAC,CAAC;AAClD,CAAC;AAED,OAAO,MAAMC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["hexStringToBuffer","hexString","buffer","Uint8Array","length","i","parseInt","substr","decryptFile","data","tag","secretKey","algorithm","originalData","from","atob","c","charCodeAt","importedKey","crypto","subtle","importKey","TextEncoder","encode","name","decryptedBuffer","decrypt","iv","decryptedData","TextDecoder","decode","JSON","parse","console","log","getAvatarInitials","words","trim","split","substring","toUpperCase","stringToHslColor","str","saturation","arguments","undefined","lightness","hash","hue","concat"],"sources":["../../../../src/meta-atlas-sdk/utils/helpers.ts"],"sourcesContent":["\n\n// Utility function to convert hex string to ArrayBuffer\nfunction hexStringToBuffer(hexString) {\n const buffer = new Uint8Array(hexString.length / 2);\n for (let i = 0; i < hexString.length; i += 2) {\n buffer[i / 2] = parseInt(hexString.substr(i, 2), 16);\n }\n return buffer;\n}\n\nexport const decryptFile = async (data: any, tag: string, secretKey: string) => {\n const algorithm = 'AES-CBC';\n // Has to convert iv to \n const originalData = Uint8Array.from(atob(tag), c => c.charCodeAt(0));\n // Import the secret key\n const importedKey = await crypto.subtle.importKey(\n 'raw',\n new TextEncoder().encode(secretKey),\n { name: algorithm },\n false,\n ['decrypt']\n );\n // Decrypt the data\n const decryptedBuffer = await crypto.subtle.decrypt(\n { name: algorithm, iv: originalData },\n importedKey,\n hexStringToBuffer(data)\n );\n // Convert the decrypted buffer to a UTF-8 string\n let decryptedData = new TextDecoder().decode(decryptedBuffer);\n decryptedData = JSON.parse(decryptedData);\n\n console.log(decryptedData);\n\n return decryptedData;\n };\n\n\n export const getAvatarInitials = (name: string): string => {\n if (!name) return \"\";\n \n const words = name.trim().split(/\\s+/);\n \n if (words.length === 1) {\n return words[0].substring(0, 2).toUpperCase();\n }\n \n return (words[0][0] + words[1][0]).toUpperCase();\n }\n \n export const stringToHslColor = (str: string, saturation = 70, lightness = 50) => {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n \n const hue = hash % 360;\n return `hsl(${hue}, ${saturation}%, ${lightness}%)`;\n }"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
4
|
export class LocalStorage {
|
|
2
|
-
|
|
5
|
+
constructor() {
|
|
6
|
+
_defineProperty(this, "storage", {});
|
|
7
|
+
}
|
|
3
8
|
contains(key) {
|
|
4
9
|
if (key in this.storage) return true;
|
|
5
10
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-storage.js","names":["LocalStorage","
|
|
1
|
+
{"version":3,"file":"local-storage.js","names":["LocalStorage","constructor","_defineProperty","contains","key","storage","getString","set","value","clearAll"],"sources":["../../../../src/meta-atlas-sdk/utils/local-storage.ts"],"sourcesContent":["export class LocalStorage {\n storage = {};\n\n contains(key: string): boolean{\n if (key in this.storage) return true;\n return false;\n }\n\n getString(key: string): string | null {\n if (this.contains(key)) {\n return this.storage[key];\n }\n return null;\n }\n\n set(key: string, value: string) {\n this.storage[key] = value;\n }\n\n clearAll() {\n this.storage = {};\n }\n}\n"],"mappings":";;;AAAA,OAAO,MAAMA,YAAY,CAAC;EAAAC,YAAA;IAAAC,eAAA,kBACZ,CAAC,CAAC;EAAA;EAEZC,QAAQA,CAACC,GAAW,EAAU;IAC1B,IAAIA,GAAG,IAAI,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;IACpC,OAAO,KAAK;EAChB;EAEAC,SAASA,CAACF,GAAW,EAAiB;IAClC,IAAI,IAAI,CAACD,QAAQ,CAACC,GAAG,CAAC,EAAE;MACpB,OAAO,IAAI,CAACC,OAAO,CAACD,GAAG,CAAC;IAC5B;IACA,OAAO,IAAI;EACf;EAEAG,GAAGA,CAACH,GAAW,EAAEI,KAAa,EAAE;IAC5B,IAAI,CAACH,OAAO,CAACD,GAAG,CAAC,GAAGI,KAAK;EAC7B;EAEAC,QAAQA,CAAA,EAAG;IACP,IAAI,CAACJ,OAAO,GAAG,CAAC,CAAC;EACrB;AACJ","ignoreList":[]}
|