@twinmatrix/spatialverse-sdk-web 0.0.3 → 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/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +2 -2
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +4 -3
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js +202 -198
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +3 -3
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +32 -29
- 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 +10 -13
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +55 -68
- 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 +12 -12
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js +73 -69
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +6 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js +103 -103
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/cjs/react/MetaAtlasMap.js +4 -4
- package/lib/cjs/react/MetaAtlasMap.js.map +1 -1
- package/lib/cjs/react/hooks/useMapEvents/index.js +6 -3
- package/lib/cjs/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/index.js +7 -5
- package/lib/cjs/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/cjs/react/stores/useMapDataStore.js +17 -21
- package/lib/cjs/react/stores/useMapDataStore.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +2 -2
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +4 -3
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js +202 -198
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +3 -3
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +34 -31
- 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 +10 -8
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +55 -68
- 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 +12 -12
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js +73 -68
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/helpers.js +1 -1
- 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 +103 -101
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/esm/react/MetaAtlasMap.js +4 -4
- package/lib/esm/react/MetaAtlasMap.js.map +1 -1
- package/lib/esm/react/hooks/useMapEvents/index.js +6 -3
- package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/index.js +7 -5
- 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/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 +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-atlas-sdk-core.js","names":["_length","_interopRequireDefault","require","_helpers","_center","_lineSliceAlong","_booleanPointInPolygon","_axios","_localStorage","_fetchPublishedJson","_mapobjectsStore","e","__esModule","default","SortType","FilterType","exports","MetaAtlasCore","defaultFocusedTaxonomy","searchableGeoJsonFeatures","currentFocus","token","empApi","atomsAPIAccessToken","apiRequestLimit","secretKeyForDecryption","routingStatus","Status","Awaiting","searchStatus","storage","LocalStorage","constructor","lastClicked","mapObjectId","coordinates","name","whatDimension","whereDimension","geometry","properties","clickEvent","init","apiServerURL","secretKey","onAuthenticationResponse","getAtomsAPIAccessToken","data","JSON","stringify","strategy","atomsSdkToken","clientEngine","clientOS","config","method","url","headers","axios","then","response","accessToken","authenticated","catch","error","setupRouting","onRoutingStatusUpdateCallback","status","getPublishedData","URL","publishedDataType","PublishedDataType","Routing","console","log","Ready","getRoutingStatus","setLastClickedFeature","featureData","getMapObjectById","res","mo","booth_info","getLastClickedFeature","clickedFeature","feature","isClickableFeature","isSearchable","title","getMidPointOfFeature","lngLat","type","gjson","turfFeature","length","turfLine","gjsonLength","splicedLine","lineSliceAlong","center","getFocusTree","focusTree","getWhatTaxonomies","whatTaxonomies","getCurrentFocus","getCurrentFocusBuilding","bld","site","buildings","includes","taxonomyPath","getCurrentFocusFloor","currentBuilding","f","floors","getUserViewportBuilding","currentCenter","centerPoint","turfPoint","bIndex","b","hasOwnProperty","bounds","turfPolygon","booleanPointInPolygon","checkUserViewport","building","floor","undefined","bBounds","isViewingBuilding","fBounds","isViewingFloor","ignoredLayers","nonFloorLayers","filterBaseMapWhereDimension","layersData","whereTaxonomyPath","dimensionWhere","whereFilters","Array","isArray","push","index","layerID","id","filterLayer","filterLayersWhereDimension","layer","layerFilter","filter","filterFound","fieldIndex","field","getLocationNameFromWhereTaxonomyPath","splitstr","split","getFlyToLocation","isMobile","arguments","location","getConfigForNode","node","cameraConfigs","mobile","web","warn","zoom","bearing","filterLayersByCategories","filterType","filterValues","geomType","dimensionWhat","map","filterValue","splice","subField","layerStyle","paint","styleFilter","property","setPaintProperty","filterLayersByType","createFilterForStyle","defValue","value","setRowForField","defCopy","defClone","setRowForValue","i","newFilterValues","pushArray","originalArray","newArray","filteredArray","item","styleLayersByType","layerType","createFilterForClearStyle","forEach","indexOf","clearStyleLayersByType","normalize","string","trim","toLowerCase","relevanceSort","metaFeatures","query","isStrict","score","metaFeature","noMatch","lowerStr","lowerQuery","startsWith","some","word","sort","a","scoreA","scoreB","localeCompare","s","sortType","compare","Name","WhereDimension","whereComparison","Relevance","RelevanceStrict","setupMapObjectSearch","onSearchStatusUpdateCallback","MapObjects","mapObjects","useMapObjectsDataStore","getState","mapObject","coords","moJSON","mID","what","where","myMapObjectId","localRef","dimension_what","dimension_where","overview","images","videos","files","products","logos","metadata","parse","getMapObjectsByFilteredLocalRef","boothId","searchSubString","onResponseCallback","uniqueIds","Set","boothIdToSearch","String","has","add","objFeature","sortedFeatures","getMapObjectsByName","nameToSearch","idToSearch","getMapObjectByLocalRef","localRefToSearch","getMapObjectMatchingLocalRef","getMapObjectsMatchingLocalRefs","localRefsToSearch","localRefsArray","ref","getMapObjectsByWhatTaxonomy","whatTaxonomyPath","whatTaxonomy","getMapObjectsByWhereTaxonomy","whereTaxonomy","getMapObjectsByWhatAndWhereTaxonomy","getMapObjectsInWhatTaxonomy","whatTaxonomyPaths","getMapObjectsInWhereTaxonomy","whereTaxonomyPaths","getMapObjectsInWhatAndWhereTaxonomy","getMapObjectsApi","Promise","resolve","reject","Authorization","uniqueFeatures","getMapObjectsByWhatTaxonomyAPI"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.ts"],"sourcesContent":["import focusTree from './focustree.json';\nimport whatTaxonomies from './whatTaxonomies.json';\n\nimport length from '@turf/length';\nimport {\n feature as turfFeature,\n lineString as turfLine,\n point as turfPoint,\n polygon as turfPolygon,\n} from '@turf/helpers';\nimport center from '@turf/center';\nimport lineSliceAlong from '@turf/line-slice-along';\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\n\nimport axios from 'axios';\nimport {Feature, Position} from 'geojson';\n\nimport {LocalStorage} from '../utils/local-storage';\n\nimport {\n PublishedDataType,\n Status,\n StatusUpdateCallbackType,\n getPublishedData,\n} from './fetch-published-json';\nimport useMapObjectsDataStore from '../utils/mapobjects-store';\n\nexport type MetaFeatureProperties = {\n myMapObjectId: string | number;\n title: string;\n localRef: string | number;\n dimension_what: string;\n dimension_where: string;\n booth_info?: {\n overview: string[] | null;\n images: string[] | null;\n videos: string[] | null;\n files: string[] | null;\n products: string[] | null;\n logos: [{\n assetId: string;\n fileName: string;\n presignedUrl: string;\n }] | null;\n } | null;\n metadata?: any | null;\n};\n\nexport type metaFeature = {\n mapObjectId: string | null;\n coordinates: number[] | null;\n name: string | null;\n whatDimension: string | null;\n whereDimension: string | null;\n geometry: any;\n properties: MetaFeatureProperties | null;\n};\n\n// Type for clicked features that includes both metaFeature data and raw click event\nexport type clickedMetaFeature = metaFeature & {\n clickEvent: any | null; // MapMouseEvent from maplibre-gl (using any to avoid direct dependency)\n};\n\nenum SortType {\n Name = 'Name',\n WhereDimension = 'WhereDimension',\n Relevance = 'Relevance',\n RelevanceStrict = 'RelevanceStrict',\n}\n\nexport enum FilterType {\n Name = 'title',\n LocalRef = 'localRef',\n WhatTaxonomy = 'dimension_what',\n}\n\nexport class MetaAtlasCore {\n defaultFocusedTaxonomy = 'where.changi';\n searchableGeoJsonFeatures: metaFeature[] = [];\n currentFocus = this.defaultFocusedTaxonomy;\n lastClicked: clickedMetaFeature;\n\n // For ATOMS API\n token: string = '';\n empApi: string = '';\n atomsAPIAccessToken = '';\n apiRequestLimit = 5000;\n\n // For Routing & Search\n secretKeyForDecryption = '';\n routingStatus = Status.Awaiting;\n searchStatus = Status.Awaiting;\n storage = new LocalStorage();\n\n constructor() {\n this.lastClicked = {\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: null,\n };\n }\n\n init(\n apiServerURL: string,\n token: string,\n secretKey: string,\n onAuthenticationResponse: (data: any) => void,\n ) {\n this.empApi = apiServerURL;\n this.token = token;\n this.secretKeyForDecryption = secretKey;\n this.getAtomsAPIAccessToken(onAuthenticationResponse);\n }\n\n getAtomsAPIAccessToken(onAuthenticationResponse: (data: any) => void) {\n const data = JSON.stringify({\n strategy: 'atomstoken',\n atomsSdkToken: this.token,\n clientEngine: 'API',\n clientOS: 'Linux',\n });\n\n const config = {\n method: 'post',\n url: `${this.empApi}/authentication`,\n headers: {'Content-Type': 'application/json'},\n data: data,\n };\n axios(config)\n .then(async response => {\n if (response?.data?.accessToken) {\n this.atomsAPIAccessToken = response.data.accessToken;\n onAuthenticationResponse({\n authenticated: true,\n });\n }\n })\n .catch(function (error) {\n onAuthenticationResponse({\n authenticated: false,\n error: error,\n });\n });\n }\n\n async setupRouting(onRoutingStatusUpdateCallback: StatusUpdateCallbackType) {\n const status = await getPublishedData(\n {\n URL: this.empApi,\n accessToken: this.atomsAPIAccessToken,\n secretKey: this.secretKeyForDecryption,\n publishedDataType: PublishedDataType.Routing,\n },\n this.storage,\n );\n\n this.routingStatus = status;\n console.log('routing status: ', status);\n if (onRoutingStatusUpdateCallback) {\n onRoutingStatusUpdateCallback(status === Status.Ready ? true : false);\n }\n }\n\n getRoutingStatus() {\n return this.routingStatus;\n }\n\n // last clicked related functionality\n setLastClickedFeature(featureData: clickedMetaFeature) {\n if (featureData.mapObjectId) {\n this.getMapObjectById(featureData.mapObjectId, (res) => { \n const mo = res?.[0];\n if (mo) {\n this.lastClicked = {\n ...featureData,\n properties: {\n ...featureData.properties,\n booth_info: mo.properties.booth_info\n }\n };\n }\n })\n } else {\n this.lastClicked = featureData;\n }\n }\n\n getLastClickedFeature(): clickedMetaFeature {\n let clickedFeature = this.lastClicked;\n if (\n !this.lastClicked ||\n (this.lastClicked &&\n (this.lastClicked.name === null ||\n this.lastClicked.whereDimension === null))\n ) {\n const feature: clickedMetaFeature = {\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: null,\n };\n this.setLastClickedFeature(feature);\n clickedFeature = feature;\n }\n return clickedFeature;\n }\n\n isClickableFeature(feature: any) {\n if (\n feature.properties.isSearchable &&\n feature.properties.title !== 'Transit' &&\n feature.properties.title !== 'Public'\n ) {\n return true;\n }\n\n return false;\n }\n\n getMidPointOfFeature(feature: Feature) {\n if (!feature) {\n return null;\n }\n\n if ((feature as any).lngLat) {\n return (feature as any).lngLat;\n }\n if (!feature.geometry) {\n return null;\n }\n if (feature.geometry.type === 'Point') {\n return feature.geometry.coordinates;\n }\n let gjson = turfFeature(feature.geometry);\n if (\n gjson.geometry.type === 'LineString' ||\n (gjson.geometry.type === 'MultiLineString' &&\n gjson.geometry.coordinates.length == 1)\n ) {\n gjson = turfLine((feature.geometry as any).coordinates);\n let gjsonLength = length(gjson);\n let splicedLine = lineSliceAlong(\n gjson as any,\n gjsonLength / 2,\n gjsonLength,\n );\n return splicedLine.geometry.coordinates[0];\n }\n return center(gjson as any).geometry.coordinates;\n }\n\n // focus control related methods\n getFocusTree() {\n return focusTree;\n }\n\n getWhatTaxonomies() {\n return whatTaxonomies;\n }\n\n getCurrentFocus() {\n return this.currentFocus;\n }\n\n getCurrentFocusBuilding() {\n for (let bld in focusTree.site.buildings) {\n if (\n this.currentFocus.includes(focusTree.site.buildings[bld].taxonomyPath)\n ) {\n return focusTree.site.buildings[bld];\n }\n }\n return null;\n }\n\n getCurrentFocusFloor() {\n let currentBuilding = this.getCurrentFocusBuilding();\n if (!currentBuilding) {\n return;\n }\n for (let f in currentBuilding.floors) {\n if (this.currentFocus === currentBuilding.floors[f].taxonomyPath) {\n return currentBuilding.floors[f];\n }\n }\n return null;\n }\n\n getUserViewportBuilding(currentCenter: Position) {\n let centerPoint = turfPoint(currentCenter);\n //get building bounds\n for (let bIndex in focusTree.site.buildings) {\n //check if center in building bounds\n let b = focusTree.site.buildings[bIndex];\n if (!b.hasOwnProperty('bounds')) {\n continue;\n }\n let bounds = turfPolygon(b.bounds as any);\n if (booleanPointInPolygon(centerPoint, bounds)) {\n return b;\n }\n }\n return null;\n }\n\n checkUserViewport(currentCenter: Position, building: any, floor?: any) {\n //get user center\n let centerPoint = turfPoint(currentCenter);\n //check building\n if (building === null || building === undefined ) {\n return false;\n }\n //check if user is viewing building\n if (!building.hasOwnProperty('bounds')) {\n return false;\n }\n let bBounds = turfPolygon(building.bounds);\n let isViewingBuilding = booleanPointInPolygon(centerPoint, bBounds);\n //check floor\n if (floor === null || floor === undefined) {\n return isViewingBuilding;\n }\n //check if user is viewing floor\n if (!floor.hasOwnProperty('bounds')) {\n return isViewingBuilding;\n }\n let fBounds = turfPolygon(floor.bounds);\n let isViewingFloor = booleanPointInPolygon(centerPoint, fBounds);\n return isViewingBuilding || isViewingFloor;\n }\n\n ignoredLayers = [\n 'Aerodrome',\n 'Aerodrome names',\n 'Aerobridge',\n 'Aerobridge gates',\n 'Airplanes',\n 'Airplanes outline',\n 'Building Extrusion',\n 'Building icon',\n 'Building overlay',\n 'Building overlay outline',\n 'Building underlay',\n 'Building underlay icon',\n 'Building underlay selected outline',\n 'building_outline',\n 'Changi Airport Connector',\n 'Changi Airport Connector Text',\n 'Changi Walkway Text',\n 'T2 overlay outline copy',\n 'Building overlay base',\n 'Skytrain track outdoor',\n ];\n\n nonFloorLayers = [\n 'where.changi',\n 'where.changi.tarmac',\n 'where.changi.tarmac.public',\n 'where.changi.tarmac.private',\n 'where.changi.terminals',\n 'where.changi.terminals.jewel',\n 'where.changi.terminals.t1',\n 'where.changi.terminals.t2',\n 'where.changi.terminals.t3',\n 'where.changi.terminals.t4',\n 'where.hkcec.main_bldg',\n 'where.gbtb.flower_dome',\n 'where.lima',\n 'where.lima.mahsuri_center',\n 'where.lima.maritime',\n 'where.malaysia',\n 'where.malaysia.bcck',\n 'where.malaysia.rmh',\n 'where.malaysia.pm',\n 'where.indonesia.fairmont_jakarta'\n ];\n\n filterBaseMapWhereDimension(layersData: any, whereTaxonomyPath: string) {\n let dimensionWhere = whereTaxonomyPath;\n if (!dimensionWhere) {\n return;\n }\n\n this.currentFocus = dimensionWhere;\n let whereFilters: string[] = [dimensionWhere];\n \n // Check if dimensionWhere matches the site taxonomyPath\n if (dimensionWhere === focusTree.site.taxonomyPath) {\n // If it equals site, add all floors of all buildings\n whereFilters = [];\n if (focusTree.site.buildings && Array.isArray(focusTree.site.buildings)) {\n for (const building of focusTree.site.buildings) {\n if (building.floors && Array.isArray(building.floors)) {\n for (const floor of building.floors) {\n if (floor.taxonomyPath) {\n whereFilters.push(floor.taxonomyPath);\n }\n }\n }\n }\n }\n else {\n // If it equals a site and has no buildings, add the site itself\n whereFilters = [focusTree.site.taxonomyPath];\n }\n } else {\n // Check if dimensionWhere matches any building's taxonomyPath\n for (const building of focusTree.site.buildings) {\n if (dimensionWhere === building.taxonomyPath) {\n // If it equals a building, add all floors of that building\n whereFilters = [];\n if (building.floors && Array.isArray(building.floors)) {\n for (const floor of building.floors) {\n if (floor.taxonomyPath) {\n whereFilters.push(floor.taxonomyPath);\n }\n }\n }\n // If it equals a building, but has no floors, add the building itself\n else {\n whereFilters = [building.taxonomyPath];\n }\n break;\n }\n }\n }\n\n console.log('whereFilters: ', whereFilters);\n if (layersData.length > 0) {\n for (let index = 0; index < layersData.length; index += 1) {\n const layerID = layersData[index].id;\n if (!this.ignoredLayers.includes(layerID)) {\n this.filterLayer(layersData[index], whereFilters);\n }\n }\n }\n\n return layersData;\n }\n\n filterLayersWhereDimension(layersData: any, whereTaxonomyPath: string) {\n let dimensionWhere = whereTaxonomyPath;\n if (!dimensionWhere) {\n return;\n }\n\n let whereFilters: string[] = [];\n whereFilters = [dimensionWhere];\n\n for (let index = 0; index < layersData.length; index += 1) {\n this.filterLayer(layersData[index], whereFilters);\n }\n\n return layersData;\n }\n\n filterLayer(layer: any, whereFilters: string[]) {\n const layerFilter = layer.filter;\n\n if (layerFilter) {\n let filterFound = false;\n for (\n let fieldIndex = 0;\n fieldIndex < layerFilter.length;\n fieldIndex += 1\n ) {\n const field = layerFilter[fieldIndex];\n if (Array.isArray(field[1]) && field[1][1] === 'dimension_where') {\n //update already added where filter value\n field[0] = 'in';\n field[2] = ['literal', whereFilters];\n filterFound = true;\n break;\n }\n }\n if (!filterFound) {\n layerFilter.push([\n 'in',\n ['get', 'dimension_where'],\n ['literal', whereFilters],\n ]);\n }\n }\n }\n\n getLocationNameFromWhereTaxonomyPath(whereTaxonomyPath: string) {\n if (whereTaxonomyPath.includes('where.')) {\n const splitstr = whereTaxonomyPath.split('.');\n\n //if floor\n if (!this.nonFloorLayers.includes(whereTaxonomyPath)) {\n return splitstr[splitstr.length - 1];\n }\n\n return splitstr[splitstr.length - 1];\n }\n }\n\n getFlyToLocation(\n whereTaxonomyPath: string,\n isMobile = true,\n ): {\n center: [number, number];\n zoom: number;\n bearing: number;\n } {\n let location = this.getLocationNameFromWhereTaxonomyPath(whereTaxonomyPath);\n const getConfigForNode = (node: any) => {\n const cameraConfigs = isMobile ? node.mobile : node.web;\n return cameraConfigs;\n };\n if (\n this.getLocationNameFromWhereTaxonomyPath(focusTree.site.taxonomyPath) ===\n location\n ) {\n return getConfigForNode(focusTree.site.cameraConfigs);\n } else {\n for (let index = 0; index < focusTree.site.buildings.length; index++) {\n const building = focusTree.site.buildings[index];\n if (this.getLocationNameFromWhereTaxonomyPath(building.taxonomyPath) !== location) {\n for (let index = 0; index < building.floors.length; index++) {\n const floor = building.floors[index];\n if (this.getLocationNameFromWhereTaxonomyPath(floor.taxonomyPath) === location) {\n if (floor.cameraConfigs) {\n return getConfigForNode(floor.cameraConfigs);\n } else {\n return getConfigForNode(building.cameraConfigs);\n }\n }\n }\n } else {\n return getConfigForNode(building.cameraConfigs);\n }\n }\n }\n\n console.warn('Invalid whereTaxonomy passed to getFlyToLocation');\n return {\n center: undefined as any,\n zoom: undefined as any,\n bearing: undefined as any,\n };\n }\n\n filterLayersByCategories(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n geomType: string,\n dimensionWhat: string,\n map: maplibregl.Map,\n ) {\n if (!filterValues) {\n return;\n }\n\n for (let index = 0; index < layersData.length; index += 1) {\n const layerID = layersData[index].id;\n const layer = layersData[index];\n let filter;\n const layerFilter = layer.filter;\n\n if (geomType) {\n filter = ['any', \n ['!', \n ['all', \n\n ['==', ['geometry-type'], geomType],\n ['==', ['get', 'dimension_what'], dimensionWhat]\n ]\n ]\n ];\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n filter[1][1].splice(1, 0, ['!', ['in', filterValue, ['get', filterType]]]);\n }\n } else {\n filter = ['all'];\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n filter.push(['all', ['in', filterValue, ['get', filterType]]]);\n }\n }\n\n if (layerFilter) {\n let filterFound = false;\n\n for (\n let fieldIndex = 0;\n fieldIndex < layerFilter.length;\n fieldIndex += 1\n ) {\n let field = layerFilter[fieldIndex];\n\n if (geomType) {\n if (\n field[0] === 'any' &&\n Array.isArray(field[1]) &&\n Array.isArray(field[1][1]) &&\n // Array.isArray(field[3][1]) &&\n // Array.isArray(field[3][1]) &&\n // Array.isArray(field[3][1][1]) &&\n // Array.isArray(field[3][1][2]) &&\n // Array.isArray(field[3][2]) &&\n field[1][0] === '!' &&\n field[1][1][0] === 'all'\n ) {\n //update already added where filter value\n const subField = field[1][1];\n if (subField.length > 3) {\n // purge all previous entries\n subField.splice(1, subField.length - 3);\n }\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n field[1][1].splice(1, 0, ['!', ['in', filterValue, ['get', filterType]]]);\n }\n filterFound = true;\n break;\n }\n } else {\n if (\n Array.isArray(field[1]) &&\n Array.isArray(field[1][1]) &&\n field[0] === '!' &&\n field[1][1][1] === filterType\n ) {\n //update already added where filter value\n field[0] = '!';\n field[1][2] = ['literal', filterValues];\n filterFound = true;\n break;\n }\n }\n }\n if (!filterFound) {\n layerFilter.push(filter);\n }\n }\n \n if (layerID.includes('Retail')) {\n const layerStyle = layer.paint;\n const styleFilter : any = ['case'];\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n styleFilter.push([\"boolean\", ['in', filterValue, ['get', filterType]], true]); // the category is enabled?\n styleFilter.push(0.99) // when enabled\n }\n styleFilter.push(0.25) // when disabled\n\n if (layer.type === 'fill') {\n const property = 'fill-opacity';\n layerStyle['fill-opacity'] = styleFilter;\n\n map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n if (layer.type === 'line') {\n const property = 'line-opacity';\n layerStyle['line-opacity'] = styleFilter;\n\n map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n }\n }\n\n return layersData;\n }\n \n filterLayersByType(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n geomType: string,\n ) {\n if (!filterValues) {\n return;\n }\n\n for (let index = 0; index < layersData.length; index += 1) {\n const layer = layersData[index];\n let filter;\n const layerFilter = layer.filter;\n\n if (geomType) {\n filter = [\n 'case',\n ['!', ['in', ['get', filterType], ['literal', filterValues]]],\n true,\n [\n 'all',\n ['in', ['get', filterType], ['literal', filterValues]],\n ['!=', ['geometry-type'], geomType],\n ],\n true,\n false,\n ];\n } else {\n filter = ['in', ['get', filterType], ['literal', filterValues]];\n }\n\n if (layerFilter) {\n let filterFound = false;\n\n console.log('layerFilter: ', layerFilter);\n\n for (\n let fieldIndex = 0;\n fieldIndex < layerFilter.length;\n fieldIndex += 1\n ) {\n let field = layerFilter[fieldIndex];\n\n if (geomType) {\n if (\n field[0] === 'case' &&\n Array.isArray(field[1]) &&\n Array.isArray(field[3]) &&\n Array.isArray(field[3][1]) &&\n Array.isArray(field[3][1]) &&\n Array.isArray(field[3][1][1]) &&\n Array.isArray(field[3][1][2]) &&\n Array.isArray(field[3][2]) &&\n field[3][1][1][1] === filterType &&\n field[3][2][2] === geomType\n ) {\n //update already added where filter value\n field[1][1][2] = ['literal', filterValues];\n field[1][1][1] = ['get', filterType];\n field[3][1][2] = ['literal', filterValues];\n field[3][1][1] = ['get', filterType];\n field[3][2][2] = geomType;\n filterFound = true;\n break;\n }\n } else {\n if (\n Array.isArray(field[1]) &&\n field[0] === '!' &&\n field[1][1] === filterType\n ) {\n //update already added where filter value\n field[2] = ['literal', filterValues];\n filterFound = true;\n break;\n }\n }\n }\n if (!filterFound) {\n console.log('pushing: ', filterValues, filterType);\n layerFilter.push(filter);\n }\n }\n }\n\n return layersData;\n }\n\n\n createFilterForStyle(\n defValue: any,\n filterType: FilterType,\n filterValues: string[],\n value: string,\n ) {\n function setRowForField(defCopy: any) {\n if (Array.isArray(defCopy) && defCopy[0] === 'match') {\n let defClone = [...defCopy];\n if (Array.isArray(defClone[1]) && defClone[1][1] === filterType) {\n setRowForValue(defClone, defCopy);\n } else {\n defClone[defClone.length - 1] = setRowForField(\n defClone[defClone.length - 1],\n );\n }\n return defClone;\n } else {\n return ['match', ['get', filterType], filterValues, value, defCopy];\n }\n }\n\n function setRowForValue(defClone: any, defCopy: any) {\n for (let i = 3; i < defCopy.length; i += 2) {\n if (defClone[i] === value) {\n const newFilterValues = pushArray(defClone[i - 1], filterValues);\n defClone[i - 1] = newFilterValues;\n return;\n } else if (i + 2 === defCopy.length) {\n defClone.splice(i + 1, 0, filterValues, value);\n }\n }\n }\n\n function pushArray(originalArray: any[], newArray: any[]) {\n const filteredArray = newArray.filter(\n item => !originalArray.includes(item),\n );\n originalArray.push(...filteredArray);\n return originalArray;\n }\n\n return setRowForField(defValue);\n }\n\n styleLayersByType(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n property: string,\n value: string,\n ) {\n if (!filterValues) {\n return;\n }\n\n for (let index = 0; index < layersData.length; index += 1) {\n // if (layersData[index].isFireAlarmLayer) {\n const layer = layersData[index];\n const layerStyle = layer.paint;\n const layerType = layer.type;\n\n // TODO: add support for other layers later\n if ((layerType && layerType === 'fill') || layerType === 'line') {\n if (layerStyle[property]) {\n let defValue = layerStyle[property];\n\n if (defValue) {\n const filter = this.createFilterForStyle(\n defValue,\n filterType,\n filterValues,\n value,\n );\n\n layerStyle[property] = filter;\n }\n }\n }\n // }\n }\n\n return layersData;\n }\n\n createFilterForClearStyle(\n defValue: any,\n filterType: FilterType,\n filterValues: string[],\n ) {\n function setRowForField(defCopy: any) {\n if (Array.isArray(defCopy) && defCopy[0] === 'match') {\n let defClone = [...defCopy];\n if (Array.isArray(defClone[1]) && defClone[1][1] === filterType) {\n if (filterValues.length > 0) {\n setRowForValue(defClone, defCopy);\n } else {\n defClone = defClone[defClone.length - 1];\n }\n } else {\n defClone[defClone.length - 1] = setRowForField(\n defClone[defClone.length - 1],\n );\n }\n return defClone;\n }\n }\n\n function setRowForValue(defClone: any, defCopy: any) {\n for (let i = 2; i < defCopy.length; i += 2) {\n if (Array.isArray(defClone[i])) {\n filterValues.forEach(filterValue => {\n const index = defClone[i].indexOf(filterValue);\n if (index > -1) {\n if (defClone[i].length > 1) {\n defClone[i].splice(index, 1);\n } else {\n defClone[i] = [''];\n }\n }\n });\n }\n }\n }\n\n return setRowForField(defValue);\n }\n\n clearStyleLayersByType(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n property: string,\n ) {\n for (let index = 0; index < layersData.length; index += 1) {\n // if (layersData[index].isFireAlarmLayer) {\n const layer = layersData[index];\n const layerStyle = layer.paint;\n const layerType = layer.type;\n\n // TODO: add support for other layers later\n if ((layerType && layerType === 'fill') || layerType === 'line') {\n if (layerStyle[property]) {\n let defValue = layerStyle[property];\n\n if (defValue) {\n const filter = this.createFilterForClearStyle(\n defValue,\n filterType,\n filterValues,\n );\n\n layerStyle[property] = filter;\n }\n }\n }\n // }\n }\n\n return layersData;\n }\n\n normalize(string: string) {\n return string.trim().toLowerCase();\n }\n\n relevanceSort(metaFeatures: metaFeature[], query: string, isStrict = false) {\n function score(metaFeature: metaFeature): any {\n const noMatch = [-1, 0, metaFeature.name];\n if (metaFeature.name) {\n const lowerStr = metaFeature.name.toLowerCase();\n const lowerQuery = query.toLowerCase();\n\n // 1. If the string is the same as the query\n if (lowerStr === lowerQuery) {\n return [1000, -metaFeature.name.length, lowerStr];\n }\n // 2. If the string starts with the query\n else if (lowerStr.startsWith(lowerQuery)) {\n return [500, -metaFeature.name.length, lowerStr];\n }\n // 3. If one of the words in the string starts with the query\n else if (\n lowerStr.split(' ').some(word => word.startsWith(lowerQuery))\n ) {\n return [200, -metaFeature.name.length, lowerStr];\n }\n // 4. The string contains the query\n else if (!isStrict) {\n if (lowerStr.includes(lowerQuery)) {\n return [0, -metaFeature.name.length, lowerStr];\n } else {\n return noMatch;\n }\n } else {\n return noMatch;\n }\n } else {\n return noMatch;\n }\n }\n return metaFeatures\n .sort((a, b) => {\n const scoreA = score(a);\n const scoreB = score(b);\n return (\n scoreB[0] - scoreA[0] ||\n scoreB[1] - scoreA[1] ||\n scoreA[2].localeCompare(scoreB[2])\n );\n })\n .filter(s => score(s)[0] >= 0);\n }\n\n sort(metaFeatures: metaFeature[], sortType: SortType, query = '') {\n const compare = (a: string, b: string) => {\n if (!a || !b) {\n return 0;\n }\n\n return a.localeCompare(b);\n };\n\n if (sortType === SortType.Name) {\n return metaFeatures.sort((a: metaFeature, b: metaFeature) => {\n return compare(a.name!, b.name!);\n });\n } else if (sortType === SortType.WhereDimension) {\n return metaFeatures.sort((a: metaFeature, b: metaFeature) => {\n const whereComparison = compare(a.whereDimension!, b.whereDimension!);\n if (whereComparison === 0) {\n return compare(a.name!, b.name!);\n } else {\n return whereComparison;\n }\n });\n } else if (sortType === SortType.Relevance) {\n return this.relevanceSort(metaFeatures as any, query);\n } else if (sortType === SortType.RelevanceStrict) {\n return this.relevanceSort(metaFeatures as any, query, true);\n }\n }\n\n async setupMapObjectSearch(\n onSearchStatusUpdateCallback: StatusUpdateCallbackType,\n ) {\n const status = await getPublishedData(\n {\n URL: this.empApi,\n accessToken: this.atomsAPIAccessToken,\n secretKey: this.secretKeyForDecryption,\n publishedDataType: PublishedDataType.MapObjects,\n },\n this.storage,\n );\n\n this.searchStatus = status;\n console.log('search status: ', status);\n\n const mapObjects = useMapObjectsDataStore.getState().data;\n for (let index = 0; index < mapObjects.length; index++) {\n const mapObject = mapObjects[index];\n if (mapObject) {\n // Decide geometry type based on coordinates format:\n // - Point: [lng, lat]\n // - LineString: [[lng, lat], [lng, lat], ...]\n const coords = mapObject.lngLat;\n const geometry =\n Array.isArray(coords) && Array.isArray(coords[0])\n ? {type: 'LineString', coordinates: coords}\n : {type: 'Point', coordinates: coords};\n\n // Re-create geojson\n const moJSON: metaFeature = {\n mapObjectId: mapObject.mID,\n coordinates: mapObject.lngLat,\n name: mapObject.name,\n whatDimension: mapObject.what,\n whereDimension: mapObject.where,\n geometry,\n properties: {\n myMapObjectId: mapObject.mID,\n title: mapObject.name,\n localRef: mapObject.localRef,\n dimension_what: mapObject.what,\n dimension_where: mapObject.where,\n booth_info: {\n overview: mapObject.overview,\n images: mapObject.images,\n videos: mapObject.videos,\n files: mapObject.files,\n products: mapObject.products,\n logos: mapObject.logos,\n } as MetaFeatureProperties['booth_info'],\n metadata: mapObject.metadata ? JSON.parse(mapObject.metadata) : null,\n },\n };\n this.searchableGeoJsonFeatures.push(moJSON);\n }\n }\n\n if (onSearchStatusUpdateCallback) {\n onSearchStatusUpdateCallback(status === Status.Ready ? true : false);\n }\n }\n\n getMapObjectsByFilteredLocalRef(\n boothId: string,\n searchSubString = false,\n sortType: SortType,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n const uniqueIds = new Set<string | number>();\n const metaFeatures = [];\n const boothIdToSearch = this.normalize(String(boothId));\n for (const feature of this.searchableGeoJsonFeatures) {\n const id = feature.properties.myMapObjectId;\n const localRef = this.normalize(String(feature.properties.localRef));\n \n if (searchSubString && !localRef.includes(boothIdToSearch)) {\n continue;\n }\n if (!searchSubString && localRef !== boothIdToSearch) {\n continue;\n }\n if (uniqueIds.has(id)) {\n continue;\n }\n uniqueIds.add(id);\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: null,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n\n const sortedFeatures = this.sort(\n metaFeatures,\n sortType,\n boothId,\n ) as metaFeature[];\n onResponseCallback(sortedFeatures);\n }\n\n getMapObjectsByName(\n name: string,\n searchSubString = false,\n sortType: SortType,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n const uniqueIds = new Set<string | number>();\n const metaFeatures = [];\n const nameToSearch = this.normalize(String(name));\n for (const feature of this.searchableGeoJsonFeatures) {\n const id = feature.properties.myMapObjectId;\n const title = this.normalize(String(feature.properties.title));\n if (searchSubString && !title.includes(nameToSearch)) {\n continue;\n }\n if (!searchSubString && title !== nameToSearch) {\n continue;\n }\n if (uniqueIds.has(id)) {\n continue;\n }\n uniqueIds.add(id);\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: null,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n\n const sortedFeatures = this.sort(\n metaFeatures,\n sortType,\n name,\n ) as metaFeature[];\n onResponseCallback(sortedFeatures);\n }\n\n getMapObjectById(\n idToSearch: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const id = String(feature.properties.myMapObjectId);\n if (id === String(idToSearch)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectByLocalRef(\n localRefToSearch: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const localRef = String(feature.properties.localRef);\n if (localRef === String(localRefToSearch)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectMatchingLocalRef(\n localRefToSearch: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const localRef = String(feature.properties.localRef);\n if (localRef.includes(String(localRefToSearch))) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsMatchingLocalRefs(\n localRefsToSearch: string | string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n \n const localRefsArray = Array.isArray(localRefsToSearch) ? localRefsToSearch : [localRefsToSearch];\n \n for (const feature of this.searchableGeoJsonFeatures) {\n const localRef = String(feature.properties.localRef);\n \n if (localRefsArray.some((ref) => localRef.includes(String(ref)))) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n \n onResponseCallback(metaFeatures);\n }\n \n\n getMapObjectsByWhatTaxonomy(\n whatTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (!whatTaxonomyPath || whatTaxonomy === String(whatTaxonomyPath)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsByWhereTaxonomy(\n whereTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n if (whereTaxonomy === String(whereTaxonomyPath)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsByWhatAndWhereTaxonomy(\n whatTaxonomyPath: string,\n whereTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (\n whereTaxonomy === String(whereTaxonomyPath) &&\n whatTaxonomy === String(whatTaxonomyPath)\n ) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsInWhatTaxonomy(\n whatTaxonomyPaths: string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (whatTaxonomyPaths.includes(whatTaxonomy)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsInWhereTaxonomy(\n whereTaxonomyPaths: string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n if (whereTaxonomyPaths.includes(whereTaxonomy)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsInWhatAndWhereTaxonomy(\n whatTaxonomyPaths: string[],\n whereTaxonomyPaths: string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (\n whereTaxonomyPaths.includes(whereTaxonomy) &&\n whatTaxonomyPaths.includes(whatTaxonomy)\n ) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsApi(query = '') {\n return new Promise(\n (resolve: (metaFeatures: metaFeature[]) => void, reject) => {\n axios({\n url: `${this.empApi}/map-objects${query}`,\n headers: {Authorization: `Bearer ${this.atomsAPIAccessToken}`},\n method: 'get',\n })\n .then(response => {\n const data = response.data.data;\n let uniqueFeatures = data as metaFeature[];\n resolve(uniqueFeatures);\n })\n .catch(function (error) {\n reject(error);\n });\n },\n );\n }\n\n getMapObjectsByWhatTaxonomyAPI(\n whatTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let query = `?$limit=${this.apiRequestLimit}`;\n if(whatTaxonomyPath) query += `&taxonomy2Path=${whatTaxonomyPath}`;\n \n this.getMapObjectsApi(query)\n .then(onResponseCallback)\n .catch(onResponseCallback);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"meta-atlas-sdk-core.js","names":["_length","_interopRequireDefault","require","_helpers","_center","_lineSliceAlong","_booleanPointInPolygon","_axios","_localStorage","_fetchPublishedJson","_mapobjectsStore","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SortType","FilterType","exports","MetaAtlasCore","constructor","defaultFocusedTaxonomy","Status","Awaiting","LocalStorage","lastClicked","mapObjectId","coordinates","name","whatDimension","whereDimension","geometry","properties","clickEvent","init","apiServerURL","token","secretKey","onAuthenticationResponse","empApi","secretKeyForDecryption","getAtomsAPIAccessToken","data","JSON","stringify","strategy","atomsSdkToken","clientEngine","clientOS","config","method","url","concat","headers","axios","then","response","_response$data","accessToken","atomsAPIAccessToken","authenticated","catch","error","setupRouting","onRoutingStatusUpdateCallback","status","getPublishedData","URL","publishedDataType","PublishedDataType","Routing","storage","routingStatus","console","log","Ready","getRoutingStatus","setLastClickedFeature","featureData","getMapObjectById","res","mo","booth_info","getLastClickedFeature","clickedFeature","feature","isClickableFeature","isSearchable","title","getMidPointOfFeature","lngLat","type","gjson","turfFeature","turfLine","gjsonLength","splicedLine","lineSliceAlong","center","getFocusTree","focusTree","getWhatTaxonomies","whatTaxonomies","getCurrentFocus","currentFocus","getCurrentFocusBuilding","bld","site","buildings","includes","taxonomyPath","getCurrentFocusFloor","currentBuilding","f","floors","getUserViewportBuilding","currentCenter","centerPoint","turfPoint","bIndex","b","hasOwnProperty","bounds","turfPolygon","booleanPointInPolygon","checkUserViewport","building","floor","undefined","bBounds","isViewingBuilding","fBounds","isViewingFloor","filterBaseMapWhereDimension","layersData","whereTaxonomyPath","dimensionWhere","whereFilters","Array","isArray","index","layerID","id","ignoredLayers","filterLayer","filterLayersWhereDimension","layer","layerFilter","filterFound","fieldIndex","field","getLocationNameFromWhereTaxonomyPath","splitstr","split","nonFloorLayers","getFlyToLocation","isMobile","location","getConfigForNode","node","cameraConfigs","mobile","web","warn","zoom","bearing","filterLayersByCategories","filterType","filterValues","geomType","dimensionWhat","map","filterValue","splice","subField","layerStyle","paint","styleFilter","property","setPaintProperty","filterLayersByType","createFilterForStyle","defValue","setRowForField","defCopy","defClone","setRowForValue","newFilterValues","pushArray","originalArray","newArray","filteredArray","item","styleLayersByType","layerType","createFilterForClearStyle","indexOf","clearStyleLayersByType","normalize","string","trim","toLowerCase","relevanceSort","metaFeatures","query","isStrict","score","metaFeature","noMatch","lowerStr","lowerQuery","startsWith","some","word","sort","a","scoreA","scoreB","localeCompare","s","sortType","compare","Name","WhereDimension","whereComparison","Relevance","RelevanceStrict","setupMapObjectSearch","onSearchStatusUpdateCallback","MapObjects","searchStatus","mapObjects","useMapObjectsDataStore","getState","mapObject","coords","moJSON","mID","what","where","myMapObjectId","localRef","dimension_what","dimension_where","overview","images","videos","files","products","logos","metadata","parse","searchableGeoJsonFeatures","getMapObjectsByFilteredLocalRef","boothId","searchSubString","onResponseCallback","uniqueIds","Set","boothIdToSearch","has","add","objFeature","sortedFeatures","getMapObjectsByName","nameToSearch","idToSearch","getMapObjectByLocalRef","localRefToSearch","getMapObjectMatchingLocalRef","getMapObjectsMatchingLocalRefs","localRefsToSearch","localRefsArray","ref","getMapObjectsByWhatTaxonomy","whatTaxonomyPath","whatTaxonomy","getMapObjectsByWhereTaxonomy","whereTaxonomy","getMapObjectsByWhatAndWhereTaxonomy","getMapObjectsInWhatTaxonomy","whatTaxonomyPaths","getMapObjectsInWhereTaxonomy","whereTaxonomyPaths","getMapObjectsInWhatAndWhereTaxonomy","getMapObjectsApi","Promise","resolve","reject","Authorization","uniqueFeatures","getMapObjectsByWhatTaxonomyAPI","apiRequestLimit"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.ts"],"sourcesContent":["import focusTree from './focustree.json';\nimport whatTaxonomies from './whatTaxonomies.json';\n\nimport length from '@turf/length';\nimport {\n feature as turfFeature,\n lineString as turfLine,\n point as turfPoint,\n polygon as turfPolygon,\n} from '@turf/helpers';\nimport center from '@turf/center';\nimport lineSliceAlong from '@turf/line-slice-along';\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon';\n\nimport axios from 'axios';\nimport {Feature, Position} from 'geojson';\n\nimport {LocalStorage} from '../utils/local-storage';\n\nimport {\n PublishedDataType,\n Status,\n StatusUpdateCallbackType,\n getPublishedData,\n} from './fetch-published-json';\nimport useMapObjectsDataStore from '../utils/mapobjects-store';\n\nexport type MetaFeatureProperties = {\n myMapObjectId: string | number;\n title: string;\n localRef: string | number;\n dimension_what: string;\n dimension_where: string;\n booth_info?: {\n overview: string[] | null;\n images: string[] | null;\n videos: string[] | null;\n files: string[] | null;\n products: string[] | null;\n logos: [{\n assetId: string;\n fileName: string;\n presignedUrl: string;\n }] | null;\n } | null;\n metadata?: any | null;\n};\n\nexport type metaFeature = {\n mapObjectId: string | null;\n coordinates: number[] | null;\n name: string | null;\n whatDimension: string | null;\n whereDimension: string | null;\n geometry: any;\n properties: MetaFeatureProperties | null;\n};\n\n// Type for clicked features that includes both metaFeature data and raw click event\nexport type clickedMetaFeature = metaFeature & {\n clickEvent: any | null; // MapMouseEvent from maplibre-gl (using any to avoid direct dependency)\n};\n\nenum SortType {\n Name = 'Name',\n WhereDimension = 'WhereDimension',\n Relevance = 'Relevance',\n RelevanceStrict = 'RelevanceStrict',\n}\n\nexport enum FilterType {\n Name = 'title',\n LocalRef = 'localRef',\n WhatTaxonomy = 'dimension_what',\n}\n\nexport class MetaAtlasCore {\n defaultFocusedTaxonomy = 'where.changi';\n searchableGeoJsonFeatures: metaFeature[] = [];\n currentFocus = this.defaultFocusedTaxonomy;\n lastClicked: clickedMetaFeature;\n\n // For ATOMS API\n token: string = '';\n empApi: string = '';\n atomsAPIAccessToken = '';\n apiRequestLimit = 5000;\n\n // For Routing & Search\n secretKeyForDecryption = '';\n routingStatus = Status.Awaiting;\n searchStatus = Status.Awaiting;\n storage = new LocalStorage();\n\n constructor() {\n this.lastClicked = {\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: null,\n };\n }\n\n init(\n apiServerURL: string,\n token: string,\n secretKey: string,\n onAuthenticationResponse: (data: any) => void,\n ) {\n this.empApi = apiServerURL;\n this.token = token;\n this.secretKeyForDecryption = secretKey;\n this.getAtomsAPIAccessToken(onAuthenticationResponse);\n }\n\n getAtomsAPIAccessToken(onAuthenticationResponse: (data: any) => void) {\n const data = JSON.stringify({\n strategy: 'atomstoken',\n atomsSdkToken: this.token,\n clientEngine: 'API',\n clientOS: 'Linux',\n });\n\n const config = {\n method: 'post',\n url: `${this.empApi}/authentication`,\n headers: {'Content-Type': 'application/json'},\n data: data,\n };\n axios(config)\n .then(async response => {\n if (response?.data?.accessToken) {\n this.atomsAPIAccessToken = response.data.accessToken;\n onAuthenticationResponse({\n authenticated: true,\n });\n }\n })\n .catch(function (error) {\n onAuthenticationResponse({\n authenticated: false,\n error: error,\n });\n });\n }\n\n async setupRouting(onRoutingStatusUpdateCallback: StatusUpdateCallbackType) {\n const status = await getPublishedData(\n {\n URL: this.empApi,\n accessToken: this.atomsAPIAccessToken,\n secretKey: this.secretKeyForDecryption,\n publishedDataType: PublishedDataType.Routing,\n },\n this.storage,\n );\n\n this.routingStatus = status;\n console.log('routing status: ', status);\n if (onRoutingStatusUpdateCallback) {\n onRoutingStatusUpdateCallback(status === Status.Ready ? true : false);\n }\n }\n\n getRoutingStatus() {\n return this.routingStatus;\n }\n\n // last clicked related functionality\n setLastClickedFeature(featureData: clickedMetaFeature) {\n if (featureData.mapObjectId) {\n this.getMapObjectById(featureData.mapObjectId, (res) => { \n const mo = res?.[0];\n if (mo) {\n this.lastClicked = {\n ...featureData,\n properties: {\n ...featureData.properties,\n booth_info: mo.properties.booth_info\n }\n };\n }\n })\n } else {\n this.lastClicked = featureData;\n }\n }\n\n getLastClickedFeature(): clickedMetaFeature {\n let clickedFeature = this.lastClicked;\n if (\n !this.lastClicked ||\n (this.lastClicked &&\n (this.lastClicked.name === null ||\n this.lastClicked.whereDimension === null))\n ) {\n const feature: clickedMetaFeature = {\n mapObjectId: null,\n coordinates: null,\n name: null,\n whatDimension: null,\n whereDimension: null,\n geometry: null,\n properties: null,\n clickEvent: null,\n };\n this.setLastClickedFeature(feature);\n clickedFeature = feature;\n }\n return clickedFeature;\n }\n\n isClickableFeature(feature: any) {\n if (\n feature.properties.isSearchable &&\n feature.properties.title !== 'Transit' &&\n feature.properties.title !== 'Public'\n ) {\n return true;\n }\n\n return false;\n }\n\n getMidPointOfFeature(feature: Feature) {\n if (!feature) {\n return null;\n }\n\n if ((feature as any).lngLat) {\n return (feature as any).lngLat;\n }\n if (!feature.geometry) {\n return null;\n }\n if (feature.geometry.type === 'Point') {\n return feature.geometry.coordinates;\n }\n let gjson = turfFeature(feature.geometry);\n if (\n gjson.geometry.type === 'LineString' ||\n (gjson.geometry.type === 'MultiLineString' &&\n gjson.geometry.coordinates.length == 1)\n ) {\n gjson = turfLine((feature.geometry as any).coordinates);\n let gjsonLength = length(gjson);\n let splicedLine = lineSliceAlong(\n gjson as any,\n gjsonLength / 2,\n gjsonLength,\n );\n return splicedLine.geometry.coordinates[0];\n }\n return center(gjson as any).geometry.coordinates;\n }\n\n // focus control related methods\n getFocusTree() {\n return focusTree;\n }\n\n getWhatTaxonomies() {\n return whatTaxonomies;\n }\n\n getCurrentFocus() {\n return this.currentFocus;\n }\n\n getCurrentFocusBuilding() {\n for (let bld in focusTree.site.buildings) {\n if (\n this.currentFocus.includes(focusTree.site.buildings[bld].taxonomyPath)\n ) {\n return focusTree.site.buildings[bld];\n }\n }\n return null;\n }\n\n getCurrentFocusFloor() {\n let currentBuilding = this.getCurrentFocusBuilding();\n if (!currentBuilding) {\n return;\n }\n for (let f in currentBuilding.floors) {\n if (this.currentFocus === currentBuilding.floors[f].taxonomyPath) {\n return currentBuilding.floors[f];\n }\n }\n return null;\n }\n\n getUserViewportBuilding(currentCenter: Position) {\n let centerPoint = turfPoint(currentCenter);\n //get building bounds\n for (let bIndex in focusTree.site.buildings) {\n //check if center in building bounds\n let b = focusTree.site.buildings[bIndex];\n if (!b.hasOwnProperty('bounds')) {\n continue;\n }\n let bounds = turfPolygon(b.bounds as any);\n if (booleanPointInPolygon(centerPoint, bounds)) {\n return b;\n }\n }\n return null;\n }\n\n checkUserViewport(currentCenter: Position, building: any, floor?: any) {\n //get user center\n let centerPoint = turfPoint(currentCenter);\n //check building\n if (building === null || building === undefined ) {\n return false;\n }\n //check if user is viewing building\n if (!building.hasOwnProperty('bounds')) {\n return false;\n }\n let bBounds = turfPolygon(building.bounds);\n let isViewingBuilding = booleanPointInPolygon(centerPoint, bBounds);\n //check floor\n if (floor === null || floor === undefined) {\n return isViewingBuilding;\n }\n //check if user is viewing floor\n if (!floor.hasOwnProperty('bounds')) {\n return isViewingBuilding;\n }\n let fBounds = turfPolygon(floor.bounds);\n let isViewingFloor = booleanPointInPolygon(centerPoint, fBounds);\n return isViewingBuilding || isViewingFloor;\n }\n\n ignoredLayers = [\n 'Aerodrome',\n 'Aerodrome names',\n 'Aerobridge',\n 'Aerobridge gates',\n 'Airplanes',\n 'Airplanes outline',\n 'Building Extrusion',\n 'Building icon',\n 'Building overlay',\n 'Building overlay outline',\n 'Building underlay',\n 'Building underlay icon',\n 'Building underlay selected outline',\n 'building_outline',\n 'Changi Airport Connector',\n 'Changi Airport Connector Text',\n 'Changi Walkway Text',\n 'T2 overlay outline copy',\n 'Building overlay base',\n 'Skytrain track outdoor',\n ];\n\n nonFloorLayers = [\n 'where.changi',\n 'where.changi.tarmac',\n 'where.changi.tarmac.public',\n 'where.changi.tarmac.private',\n 'where.changi.terminals',\n 'where.changi.terminals.jewel',\n 'where.changi.terminals.t1',\n 'where.changi.terminals.t2',\n 'where.changi.terminals.t3',\n 'where.changi.terminals.t4',\n 'where.hkcec.main_bldg',\n 'where.gbtb.flower_dome',\n 'where.lima',\n 'where.lima.mahsuri_center',\n 'where.lima.maritime',\n 'where.malaysia',\n 'where.malaysia.bcck',\n 'where.malaysia.rmh',\n 'where.malaysia.pm',\n 'where.indonesia.fairmont_jakarta'\n ];\n\n filterBaseMapWhereDimension(layersData: any, whereTaxonomyPath: string) {\n let dimensionWhere = whereTaxonomyPath;\n if (!dimensionWhere) {\n return;\n }\n\n this.currentFocus = dimensionWhere;\n let whereFilters: string[] = [dimensionWhere];\n \n // Check if dimensionWhere matches the site taxonomyPath\n if (dimensionWhere === focusTree.site.taxonomyPath) {\n // If it equals site, add all floors of all buildings\n whereFilters = [];\n if (focusTree.site.buildings && Array.isArray(focusTree.site.buildings)) {\n for (const building of focusTree.site.buildings) {\n if (building.floors && Array.isArray(building.floors)) {\n for (const floor of building.floors) {\n if (floor.taxonomyPath) {\n whereFilters.push(floor.taxonomyPath);\n }\n }\n }\n }\n }\n else {\n // If it equals a site and has no buildings, add the site itself\n whereFilters = [focusTree.site.taxonomyPath];\n }\n } else {\n // Check if dimensionWhere matches any building's taxonomyPath\n for (const building of focusTree.site.buildings) {\n if (dimensionWhere === building.taxonomyPath) {\n // If it equals a building, add all floors of that building\n whereFilters = [];\n if (building.floors && Array.isArray(building.floors)) {\n for (const floor of building.floors) {\n if (floor.taxonomyPath) {\n whereFilters.push(floor.taxonomyPath);\n }\n }\n }\n // If it equals a building, but has no floors, add the building itself\n else {\n whereFilters = [building.taxonomyPath];\n }\n break;\n }\n }\n }\n\n console.log('whereFilters: ', whereFilters);\n if (layersData.length > 0) {\n for (let index = 0; index < layersData.length; index += 1) {\n const layerID = layersData[index].id;\n if (!this.ignoredLayers.includes(layerID)) {\n this.filterLayer(layersData[index], whereFilters);\n }\n }\n }\n\n return layersData;\n }\n\n filterLayersWhereDimension(layersData: any, whereTaxonomyPath: string) {\n let dimensionWhere = whereTaxonomyPath;\n if (!dimensionWhere) {\n return;\n }\n\n let whereFilters: string[] = [];\n whereFilters = [dimensionWhere];\n\n for (let index = 0; index < layersData.length; index += 1) {\n this.filterLayer(layersData[index], whereFilters);\n }\n\n return layersData;\n }\n\n filterLayer(layer: any, whereFilters: string[]) {\n const layerFilter = layer.filter;\n\n if (layerFilter) {\n let filterFound = false;\n for (\n let fieldIndex = 0;\n fieldIndex < layerFilter.length;\n fieldIndex += 1\n ) {\n const field = layerFilter[fieldIndex];\n if (Array.isArray(field[1]) && field[1][1] === 'dimension_where') {\n //update already added where filter value\n field[0] = 'in';\n field[2] = ['literal', whereFilters];\n filterFound = true;\n break;\n }\n }\n if (!filterFound) {\n layerFilter.push([\n 'in',\n ['get', 'dimension_where'],\n ['literal', whereFilters],\n ]);\n }\n }\n }\n\n getLocationNameFromWhereTaxonomyPath(whereTaxonomyPath: string) {\n if (whereTaxonomyPath.includes('where.')) {\n const splitstr = whereTaxonomyPath.split('.');\n\n //if floor\n if (!this.nonFloorLayers.includes(whereTaxonomyPath)) {\n return splitstr[splitstr.length - 1];\n }\n\n return splitstr[splitstr.length - 1];\n }\n }\n\n getFlyToLocation(\n whereTaxonomyPath: string,\n isMobile = true,\n ): {\n center: [number, number];\n zoom: number;\n bearing: number;\n } {\n let location = this.getLocationNameFromWhereTaxonomyPath(whereTaxonomyPath);\n const getConfigForNode = (node: any) => {\n const cameraConfigs = isMobile ? node.mobile : node.web;\n return cameraConfigs;\n };\n if (\n this.getLocationNameFromWhereTaxonomyPath(focusTree.site.taxonomyPath) ===\n location\n ) {\n return getConfigForNode(focusTree.site.cameraConfigs);\n } else {\n for (let index = 0; index < focusTree.site.buildings.length; index++) {\n const building = focusTree.site.buildings[index];\n if (this.getLocationNameFromWhereTaxonomyPath(building.taxonomyPath) !== location) {\n for (let index = 0; index < building.floors.length; index++) {\n const floor = building.floors[index];\n if (this.getLocationNameFromWhereTaxonomyPath(floor.taxonomyPath) === location) {\n if (floor.cameraConfigs) {\n return getConfigForNode(floor.cameraConfigs);\n } else {\n return getConfigForNode(building.cameraConfigs);\n }\n }\n }\n } else {\n return getConfigForNode(building.cameraConfigs);\n }\n }\n }\n\n console.warn('Invalid whereTaxonomy passed to getFlyToLocation');\n return {\n center: undefined as any,\n zoom: undefined as any,\n bearing: undefined as any,\n };\n }\n\n filterLayersByCategories(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n geomType: string,\n dimensionWhat: string,\n map: maplibregl.Map,\n ) {\n if (!filterValues) {\n return;\n }\n\n for (let index = 0; index < layersData.length; index += 1) {\n const layerID = layersData[index].id;\n const layer = layersData[index];\n let filter;\n const layerFilter = layer.filter;\n\n if (geomType) {\n filter = ['any', \n ['!', \n ['all', \n\n ['==', ['geometry-type'], geomType],\n ['==', ['get', 'dimension_what'], dimensionWhat]\n ]\n ]\n ];\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n filter[1][1].splice(1, 0, ['!', ['in', filterValue, ['get', filterType]]]);\n }\n } else {\n filter = ['all'];\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n filter.push(['all', ['in', filterValue, ['get', filterType]]]);\n }\n }\n\n if (layerFilter) {\n let filterFound = false;\n\n for (\n let fieldIndex = 0;\n fieldIndex < layerFilter.length;\n fieldIndex += 1\n ) {\n let field = layerFilter[fieldIndex];\n\n if (geomType) {\n if (\n field[0] === 'any' &&\n Array.isArray(field[1]) &&\n Array.isArray(field[1][1]) &&\n // Array.isArray(field[3][1]) &&\n // Array.isArray(field[3][1]) &&\n // Array.isArray(field[3][1][1]) &&\n // Array.isArray(field[3][1][2]) &&\n // Array.isArray(field[3][2]) &&\n field[1][0] === '!' &&\n field[1][1][0] === 'all'\n ) {\n //update already added where filter value\n const subField = field[1][1];\n if (subField.length > 3) {\n // purge all previous entries\n subField.splice(1, subField.length - 3);\n }\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n field[1][1].splice(1, 0, ['!', ['in', filterValue, ['get', filterType]]]);\n }\n filterFound = true;\n break;\n }\n } else {\n if (\n Array.isArray(field[1]) &&\n Array.isArray(field[1][1]) &&\n field[0] === '!' &&\n field[1][1][1] === filterType\n ) {\n //update already added where filter value\n field[0] = '!';\n field[1][2] = ['literal', filterValues];\n filterFound = true;\n break;\n }\n }\n }\n if (!filterFound) {\n layerFilter.push(filter);\n }\n }\n \n if (layerID.includes('Retail')) {\n const layerStyle = layer.paint;\n const styleFilter : any = ['case'];\n for (let index = 0; index < filterValues.length; index++) {\n const filterValue = filterValues[index];\n styleFilter.push([\"boolean\", ['in', filterValue, ['get', filterType]], true]); // the category is enabled?\n styleFilter.push(0.99) // when enabled\n }\n styleFilter.push(0.25) // when disabled\n\n if (layer.type === 'fill') {\n const property = 'fill-opacity';\n layerStyle['fill-opacity'] = styleFilter;\n\n map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n if (layer.type === 'line') {\n const property = 'line-opacity';\n layerStyle['line-opacity'] = styleFilter;\n\n map.setPaintProperty(layerID, property, layerStyle[property]);\n }\n }\n }\n\n return layersData;\n }\n \n filterLayersByType(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n geomType: string,\n ) {\n if (!filterValues) {\n return;\n }\n\n for (let index = 0; index < layersData.length; index += 1) {\n const layer = layersData[index];\n let filter;\n const layerFilter = layer.filter;\n\n if (geomType) {\n filter = [\n 'case',\n ['!', ['in', ['get', filterType], ['literal', filterValues]]],\n true,\n [\n 'all',\n ['in', ['get', filterType], ['literal', filterValues]],\n ['!=', ['geometry-type'], geomType],\n ],\n true,\n false,\n ];\n } else {\n filter = ['in', ['get', filterType], ['literal', filterValues]];\n }\n\n if (layerFilter) {\n let filterFound = false;\n\n console.log('layerFilter: ', layerFilter);\n\n for (\n let fieldIndex = 0;\n fieldIndex < layerFilter.length;\n fieldIndex += 1\n ) {\n let field = layerFilter[fieldIndex];\n\n if (geomType) {\n if (\n field[0] === 'case' &&\n Array.isArray(field[1]) &&\n Array.isArray(field[3]) &&\n Array.isArray(field[3][1]) &&\n Array.isArray(field[3][1]) &&\n Array.isArray(field[3][1][1]) &&\n Array.isArray(field[3][1][2]) &&\n Array.isArray(field[3][2]) &&\n field[3][1][1][1] === filterType &&\n field[3][2][2] === geomType\n ) {\n //update already added where filter value\n field[1][1][2] = ['literal', filterValues];\n field[1][1][1] = ['get', filterType];\n field[3][1][2] = ['literal', filterValues];\n field[3][1][1] = ['get', filterType];\n field[3][2][2] = geomType;\n filterFound = true;\n break;\n }\n } else {\n if (\n Array.isArray(field[1]) &&\n field[0] === '!' &&\n field[1][1] === filterType\n ) {\n //update already added where filter value\n field[2] = ['literal', filterValues];\n filterFound = true;\n break;\n }\n }\n }\n if (!filterFound) {\n console.log('pushing: ', filterValues, filterType);\n layerFilter.push(filter);\n }\n }\n }\n\n return layersData;\n }\n\n\n createFilterForStyle(\n defValue: any,\n filterType: FilterType,\n filterValues: string[],\n value: string,\n ) {\n function setRowForField(defCopy: any) {\n if (Array.isArray(defCopy) && defCopy[0] === 'match') {\n let defClone = [...defCopy];\n if (Array.isArray(defClone[1]) && defClone[1][1] === filterType) {\n setRowForValue(defClone, defCopy);\n } else {\n defClone[defClone.length - 1] = setRowForField(\n defClone[defClone.length - 1],\n );\n }\n return defClone;\n } else {\n return ['match', ['get', filterType], filterValues, value, defCopy];\n }\n }\n\n function setRowForValue(defClone: any, defCopy: any) {\n for (let i = 3; i < defCopy.length; i += 2) {\n if (defClone[i] === value) {\n const newFilterValues = pushArray(defClone[i - 1], filterValues);\n defClone[i - 1] = newFilterValues;\n return;\n } else if (i + 2 === defCopy.length) {\n defClone.splice(i + 1, 0, filterValues, value);\n }\n }\n }\n\n function pushArray(originalArray: any[], newArray: any[]) {\n const filteredArray = newArray.filter(\n item => !originalArray.includes(item),\n );\n originalArray.push(...filteredArray);\n return originalArray;\n }\n\n return setRowForField(defValue);\n }\n\n styleLayersByType(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n property: string,\n value: string,\n ) {\n if (!filterValues) {\n return;\n }\n\n for (let index = 0; index < layersData.length; index += 1) {\n // if (layersData[index].isFireAlarmLayer) {\n const layer = layersData[index];\n const layerStyle = layer.paint;\n const layerType = layer.type;\n\n // TODO: add support for other layers later\n if ((layerType && layerType === 'fill') || layerType === 'line') {\n if (layerStyle[property]) {\n let defValue = layerStyle[property];\n\n if (defValue) {\n const filter = this.createFilterForStyle(\n defValue,\n filterType,\n filterValues,\n value,\n );\n\n layerStyle[property] = filter;\n }\n }\n }\n // }\n }\n\n return layersData;\n }\n\n createFilterForClearStyle(\n defValue: any,\n filterType: FilterType,\n filterValues: string[],\n ) {\n function setRowForField(defCopy: any) {\n if (Array.isArray(defCopy) && defCopy[0] === 'match') {\n let defClone = [...defCopy];\n if (Array.isArray(defClone[1]) && defClone[1][1] === filterType) {\n if (filterValues.length > 0) {\n setRowForValue(defClone, defCopy);\n } else {\n defClone = defClone[defClone.length - 1];\n }\n } else {\n defClone[defClone.length - 1] = setRowForField(\n defClone[defClone.length - 1],\n );\n }\n return defClone;\n }\n }\n\n function setRowForValue(defClone: any, defCopy: any) {\n for (let i = 2; i < defCopy.length; i += 2) {\n if (Array.isArray(defClone[i])) {\n filterValues.forEach(filterValue => {\n const index = defClone[i].indexOf(filterValue);\n if (index > -1) {\n if (defClone[i].length > 1) {\n defClone[i].splice(index, 1);\n } else {\n defClone[i] = [''];\n }\n }\n });\n }\n }\n }\n\n return setRowForField(defValue);\n }\n\n clearStyleLayersByType(\n layersData: any,\n filterType: FilterType,\n filterValues: string[],\n property: string,\n ) {\n for (let index = 0; index < layersData.length; index += 1) {\n // if (layersData[index].isFireAlarmLayer) {\n const layer = layersData[index];\n const layerStyle = layer.paint;\n const layerType = layer.type;\n\n // TODO: add support for other layers later\n if ((layerType && layerType === 'fill') || layerType === 'line') {\n if (layerStyle[property]) {\n let defValue = layerStyle[property];\n\n if (defValue) {\n const filter = this.createFilterForClearStyle(\n defValue,\n filterType,\n filterValues,\n );\n\n layerStyle[property] = filter;\n }\n }\n }\n // }\n }\n\n return layersData;\n }\n\n normalize(string: string) {\n return string.trim().toLowerCase();\n }\n\n relevanceSort(metaFeatures: metaFeature[], query: string, isStrict = false) {\n function score(metaFeature: metaFeature): any {\n const noMatch = [-1, 0, metaFeature.name];\n if (metaFeature.name) {\n const lowerStr = metaFeature.name.toLowerCase();\n const lowerQuery = query.toLowerCase();\n\n // 1. If the string is the same as the query\n if (lowerStr === lowerQuery) {\n return [1000, -metaFeature.name.length, lowerStr];\n }\n // 2. If the string starts with the query\n else if (lowerStr.startsWith(lowerQuery)) {\n return [500, -metaFeature.name.length, lowerStr];\n }\n // 3. If one of the words in the string starts with the query\n else if (\n lowerStr.split(' ').some(word => word.startsWith(lowerQuery))\n ) {\n return [200, -metaFeature.name.length, lowerStr];\n }\n // 4. The string contains the query\n else if (!isStrict) {\n if (lowerStr.includes(lowerQuery)) {\n return [0, -metaFeature.name.length, lowerStr];\n } else {\n return noMatch;\n }\n } else {\n return noMatch;\n }\n } else {\n return noMatch;\n }\n }\n return metaFeatures\n .sort((a, b) => {\n const scoreA = score(a);\n const scoreB = score(b);\n return (\n scoreB[0] - scoreA[0] ||\n scoreB[1] - scoreA[1] ||\n scoreA[2].localeCompare(scoreB[2])\n );\n })\n .filter(s => score(s)[0] >= 0);\n }\n\n sort(metaFeatures: metaFeature[], sortType: SortType, query = '') {\n const compare = (a: string, b: string) => {\n if (!a || !b) {\n return 0;\n }\n\n return a.localeCompare(b);\n };\n\n if (sortType === SortType.Name) {\n return metaFeatures.sort((a: metaFeature, b: metaFeature) => {\n return compare(a.name!, b.name!);\n });\n } else if (sortType === SortType.WhereDimension) {\n return metaFeatures.sort((a: metaFeature, b: metaFeature) => {\n const whereComparison = compare(a.whereDimension!, b.whereDimension!);\n if (whereComparison === 0) {\n return compare(a.name!, b.name!);\n } else {\n return whereComparison;\n }\n });\n } else if (sortType === SortType.Relevance) {\n return this.relevanceSort(metaFeatures as any, query);\n } else if (sortType === SortType.RelevanceStrict) {\n return this.relevanceSort(metaFeatures as any, query, true);\n }\n }\n\n async setupMapObjectSearch(\n onSearchStatusUpdateCallback: StatusUpdateCallbackType,\n ) {\n const status = await getPublishedData(\n {\n URL: this.empApi,\n accessToken: this.atomsAPIAccessToken,\n secretKey: this.secretKeyForDecryption,\n publishedDataType: PublishedDataType.MapObjects,\n },\n this.storage,\n );\n\n this.searchStatus = status;\n console.log('search status: ', status);\n\n const mapObjects = useMapObjectsDataStore.getState().data;\n for (let index = 0; index < mapObjects.length; index++) {\n const mapObject = mapObjects[index];\n if (mapObject) {\n // Decide geometry type based on coordinates format:\n // - Point: [lng, lat]\n // - LineString: [[lng, lat], [lng, lat], ...]\n const coords = mapObject.lngLat;\n const geometry =\n Array.isArray(coords) && Array.isArray(coords[0])\n ? {type: 'LineString', coordinates: coords}\n : {type: 'Point', coordinates: coords};\n\n // Re-create geojson\n const moJSON: metaFeature = {\n mapObjectId: mapObject.mID,\n coordinates: mapObject.lngLat,\n name: mapObject.name,\n whatDimension: mapObject.what,\n whereDimension: mapObject.where,\n geometry,\n properties: {\n myMapObjectId: mapObject.mID,\n title: mapObject.name,\n localRef: mapObject.localRef,\n dimension_what: mapObject.what,\n dimension_where: mapObject.where,\n booth_info: {\n overview: mapObject.overview,\n images: mapObject.images,\n videos: mapObject.videos,\n files: mapObject.files,\n products: mapObject.products,\n logos: mapObject.logos,\n } as MetaFeatureProperties['booth_info'],\n metadata: mapObject.metadata ? JSON.parse(mapObject.metadata) : null,\n },\n };\n this.searchableGeoJsonFeatures.push(moJSON);\n }\n }\n\n if (onSearchStatusUpdateCallback) {\n onSearchStatusUpdateCallback(status === Status.Ready ? true : false);\n }\n }\n\n getMapObjectsByFilteredLocalRef(\n boothId: string,\n searchSubString = false,\n sortType: SortType,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n const uniqueIds = new Set<string | number>();\n const metaFeatures = [];\n const boothIdToSearch = this.normalize(String(boothId));\n for (const feature of this.searchableGeoJsonFeatures) {\n const id = feature.properties.myMapObjectId;\n const localRef = this.normalize(String(feature.properties.localRef));\n \n if (searchSubString && !localRef.includes(boothIdToSearch)) {\n continue;\n }\n if (!searchSubString && localRef !== boothIdToSearch) {\n continue;\n }\n if (uniqueIds.has(id)) {\n continue;\n }\n uniqueIds.add(id);\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: null,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n\n const sortedFeatures = this.sort(\n metaFeatures,\n sortType,\n boothId,\n ) as metaFeature[];\n onResponseCallback(sortedFeatures);\n }\n\n getMapObjectsByName(\n name: string,\n searchSubString = false,\n sortType: SortType,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n const uniqueIds = new Set<string | number>();\n const metaFeatures = [];\n const nameToSearch = this.normalize(String(name));\n for (const feature of this.searchableGeoJsonFeatures) {\n const id = feature.properties.myMapObjectId;\n const title = this.normalize(String(feature.properties.title));\n if (searchSubString && !title.includes(nameToSearch)) {\n continue;\n }\n if (!searchSubString && title !== nameToSearch) {\n continue;\n }\n if (uniqueIds.has(id)) {\n continue;\n }\n uniqueIds.add(id);\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: null,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n\n const sortedFeatures = this.sort(\n metaFeatures,\n sortType,\n name,\n ) as metaFeature[];\n onResponseCallback(sortedFeatures);\n }\n\n getMapObjectById(\n idToSearch: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const id = String(feature.properties.myMapObjectId);\n if (id === String(idToSearch)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectByLocalRef(\n localRefToSearch: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const localRef = String(feature.properties.localRef);\n if (localRef === String(localRefToSearch)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectMatchingLocalRef(\n localRefToSearch: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const localRef = String(feature.properties.localRef);\n if (localRef.includes(String(localRefToSearch))) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsMatchingLocalRefs(\n localRefsToSearch: string | string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n \n const localRefsArray = Array.isArray(localRefsToSearch) ? localRefsToSearch : [localRefsToSearch];\n \n for (const feature of this.searchableGeoJsonFeatures) {\n const localRef = String(feature.properties.localRef);\n \n if (localRefsArray.some((ref) => localRef.includes(String(ref)))) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n \n onResponseCallback(metaFeatures);\n }\n \n\n getMapObjectsByWhatTaxonomy(\n whatTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (!whatTaxonomyPath || whatTaxonomy === String(whatTaxonomyPath)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsByWhereTaxonomy(\n whereTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n if (whereTaxonomy === String(whereTaxonomyPath)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsByWhatAndWhereTaxonomy(\n whatTaxonomyPath: string,\n whereTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (\n whereTaxonomy === String(whereTaxonomyPath) &&\n whatTaxonomy === String(whatTaxonomyPath)\n ) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsInWhatTaxonomy(\n whatTaxonomyPaths: string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (whatTaxonomyPaths.includes(whatTaxonomy)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsInWhereTaxonomy(\n whereTaxonomyPaths: string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n if (whereTaxonomyPaths.includes(whereTaxonomy)) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsInWhatAndWhereTaxonomy(\n whatTaxonomyPaths: string[],\n whereTaxonomyPaths: string[],\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let metaFeatures = [];\n for (const feature of this.searchableGeoJsonFeatures) {\n const whereTaxonomy = String(feature.properties.dimension_where);\n const whatTaxonomy = String(feature.properties.dimension_what);\n if (\n whereTaxonomyPaths.includes(whereTaxonomy) &&\n whatTaxonomyPaths.includes(whatTaxonomy)\n ) {\n const objFeature: metaFeature = {\n mapObjectId: String(feature.properties.myMapObjectId),\n coordinates: feature.coordinates,\n name: feature.properties.title,\n whatDimension: feature.properties.dimension_what,\n whereDimension: feature.properties.dimension_where,\n geometry: feature.geometry,\n properties: feature.properties,\n };\n metaFeatures.push(objFeature);\n }\n }\n onResponseCallback(metaFeatures);\n }\n\n getMapObjectsApi(query = '') {\n return new Promise(\n (resolve: (metaFeatures: metaFeature[]) => void, reject) => {\n axios({\n url: `${this.empApi}/map-objects${query}`,\n headers: {Authorization: `Bearer ${this.atomsAPIAccessToken}`},\n method: 'get',\n })\n .then(response => {\n const data = response.data.data;\n let uniqueFeatures = data as metaFeature[];\n resolve(uniqueFeatures);\n })\n .catch(function (error) {\n reject(error);\n });\n },\n );\n }\n\n getMapObjectsByWhatTaxonomyAPI(\n whatTaxonomyPath: string,\n onResponseCallback: (metaFeatures: metaFeature[]) => void,\n ) {\n let query = `?$limit=${this.apiRequestLimit}`;\n if(whatTaxonomyPath) query += `&taxonomy2Path=${whatTaxonomyPath}`;\n \n this.getMapObjectsApi(query)\n .then(onResponseCallback)\n .catch(onResponseCallback);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,11 +15,11 @@ var _routingHelpers = require("./routing-helpers.js");
|
|
|
15
15
|
var _utils = require("./utils.js");
|
|
16
16
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
19
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
20
|
+
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; }
|
|
21
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
22
|
+
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); } /* eslint-disable guard-for-in */ /* eslint-disable no-restricted-syntax */ // import turfDistance from '@turf/distance';
|
|
23
23
|
/* eslint-disable @typescript-eslint/no-shadow */
|
|
24
24
|
|
|
25
25
|
const RoutingCore = function () {
|
|
@@ -34,7 +34,7 @@ const RoutingCore = function () {
|
|
|
34
34
|
};
|
|
35
35
|
function addVertex(graph, coords, mapObjectId, where, what, zone) {
|
|
36
36
|
let updateMapObjectId = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
37
|
-
const vertexName =
|
|
37
|
+
const vertexName = "".concat(coords.toString(), ",").concat(where);
|
|
38
38
|
let vertex = graph.getNode(vertexName);
|
|
39
39
|
if (vertex === undefined) {
|
|
40
40
|
const data = {
|
|
@@ -290,7 +290,7 @@ const RoutingCore = function () {
|
|
|
290
290
|
segmentStartVertexData = curVertex.data;
|
|
291
291
|
} else {
|
|
292
292
|
const nextVertex = i + 1 < vertices.length ? vertices[i + 1] : undefined;
|
|
293
|
-
if (curVertex.data.zoneUnionVertex && prevVertex && nextVertex && prevVertex
|
|
293
|
+
if (curVertex.data.zoneUnionVertex && prevVertex && nextVertex && (prevVertex === null || prevVertex === void 0 ? void 0 : prevVertex.data.zone) === (nextVertex === null || nextVertex === void 0 ? void 0 : nextVertex.data.zone)) {
|
|
294
294
|
console.log('ignore zoneUnionVertex in segment');
|
|
295
295
|
} else {
|
|
296
296
|
segment = {
|
|
@@ -326,7 +326,7 @@ const RoutingCore = function () {
|
|
|
326
326
|
if (curVertex.data.zoneUnionVertex) {
|
|
327
327
|
const prevVertex = i > 0 ? vertices[i - 1] : undefined;
|
|
328
328
|
const nextVertex = i + 1 < vertices.length ? vertices[i + 1] : undefined;
|
|
329
|
-
if (prevVertex && nextVertex && prevVertex
|
|
329
|
+
if (prevVertex && nextVertex && (prevVertex === null || prevVertex === void 0 ? void 0 : prevVertex.data.zone) === (nextVertex === null || nextVertex === void 0 ? void 0 : nextVertex.data.zone)) {
|
|
330
330
|
console.log('ignore zoneUnionVertex');
|
|
331
331
|
} else
|
|
332
332
|
// Use zone value of next vertex (when available) as current vertex is a common vertex and can have either of the zone values
|
|
@@ -356,7 +356,7 @@ const RoutingCore = function () {
|
|
|
356
356
|
},
|
|
357
357
|
blocked(fromNode, toNode, link) {
|
|
358
358
|
if (changeZoneCheckEnabled) {
|
|
359
|
-
const isZoneCrossing = fromNode
|
|
359
|
+
const isZoneCrossing = (fromNode === null || fromNode === void 0 ? void 0 : fromNode.data.zone) !== (toNode === null || toNode === void 0 ? void 0 : toNode.data.zone);
|
|
360
360
|
if (isZoneCrossing) {
|
|
361
361
|
const parentWhereDimensionOfFromNode = (0, _utils.getParentDimension)(fromNode.data.where);
|
|
362
362
|
const parentWhereDimensionOfStartNode = (0, _utils.getParentDimension)(startNode.where);
|
|
@@ -445,10 +445,7 @@ const RoutingCore = function () {
|
|
|
445
445
|
const concatenatedNetworkFeatures = networkFeaturesSourceNode.concat(networkFeaturesDestinationNode);
|
|
446
446
|
if (runIntersection) (0, _utils.optimized)(concatenatedEdgeFeatures, concatenatedNetworkFeatures);
|
|
447
447
|
console.log('time network: ', (performance.now() - start) / 1000, networkFeaturesSourceNode.length);
|
|
448
|
-
const portalEdgeData = {
|
|
449
|
-
...portalDataSourceNode.edgeData,
|
|
450
|
-
...portalDataDestinationNode.edgeData
|
|
451
|
-
};
|
|
448
|
+
const portalEdgeData = _objectSpread(_objectSpread({}, portalDataSourceNode.edgeData), portalDataDestinationNode.edgeData);
|
|
452
449
|
return setupGraphAndFindPath(source, destination, portalEdgeData, concatenatedNetworkFeatures);
|
|
453
450
|
}
|
|
454
451
|
|