@twinmatrix/spatialverse-sdk-web 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/lib/cjs/index.js +9 -9
  2. package/lib/cjs/index.js.map +1 -1
  3. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +213 -294
  4. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
  5. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +43 -45
  6. package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
  7. package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js +241 -271
  8. package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
  9. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +167 -215
  10. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
  11. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +28 -30
  12. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
  13. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +876 -1188
  14. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
  15. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +173 -163
  16. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
  17. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js +6 -6
  18. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/interfaces.js.map +1 -1
  19. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +6 -6
  20. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
  21. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js +3 -3
  22. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routeLayers.js.map +1 -1
  23. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +546 -620
  24. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
  25. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +155 -160
  26. package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
  27. package/lib/cjs/meta-atlas-sdk/customStyles.js +2 -2
  28. package/lib/cjs/meta-atlas-sdk/customStyles.js.map +1 -1
  29. package/lib/cjs/meta-atlas-sdk/customerLayer.js +15 -29
  30. package/lib/cjs/meta-atlas-sdk/customerLayer.js.map +1 -1
  31. package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js +5 -5
  32. package/lib/cjs/meta-atlas-sdk/customerLayerVariant.js.map +1 -1
  33. package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js +832 -1060
  34. package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
  35. package/lib/cjs/meta-atlas-sdk/utils/helpers.js +33 -50
  36. package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
  37. package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +18 -36
  38. package/lib/cjs/meta-atlas-sdk/utils/local-storage.js.map +1 -1
  39. package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js +6 -6
  40. package/lib/cjs/meta-atlas-sdk/utils/mapobjects-store.js.map +1 -1
  41. package/lib/cjs/meta-atlas-sdk/utils/routing-store.js +6 -6
  42. package/lib/cjs/meta-atlas-sdk/utils/routing-store.js.map +1 -1
  43. package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js +428 -556
  44. package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
  45. package/lib/cjs/react/MetaAtlasMap.js +127 -0
  46. package/lib/cjs/react/MetaAtlasMap.js.map +1 -0
  47. package/lib/cjs/react/hooks/useDrawing/index.js +17 -18
  48. package/lib/cjs/react/hooks/useDrawing/index.js.map +1 -1
  49. package/lib/cjs/react/hooks/useFocus/index.js +48 -55
  50. package/lib/cjs/react/hooks/useFocus/index.js.map +1 -1
  51. package/lib/cjs/react/hooks/useMapEvents/index.js +40 -50
  52. package/lib/cjs/react/hooks/useMapEvents/index.js.map +1 -1
  53. package/lib/cjs/react/hooks/useMapOverlays/index.js +20 -21
  54. package/lib/cjs/react/hooks/useMapOverlays/index.js.map +1 -1
  55. package/lib/cjs/react/hooks/useMetaAtlas/index.js +77 -95
  56. package/lib/cjs/react/hooks/useMetaAtlas/index.js.map +1 -1
  57. package/lib/cjs/react/hooks/useMetaAtlas.js +78 -96
  58. package/lib/cjs/react/hooks/useMetaAtlas.js.map +1 -1
  59. package/lib/cjs/react/hooks/useRouting/index.js +21 -20
  60. package/lib/cjs/react/hooks/useRouting/index.js.map +1 -1
  61. package/lib/cjs/react/hooks/useSearch/index.js +35 -34
  62. package/lib/cjs/react/hooks/useSearch/index.js.map +1 -1
  63. package/lib/cjs/react/hooks/useStampRally/index.js +30 -29
  64. package/lib/cjs/react/hooks/useStampRally/index.js.map +1 -1
  65. package/lib/cjs/react/hooks/useStampRally/utils.js +2 -2
  66. package/lib/cjs/react/hooks/useStampRally/utils.js.map +1 -1
  67. package/lib/cjs/react/index.js +31 -31
  68. package/lib/cjs/react/index.js.map +1 -1
  69. package/lib/cjs/react/stores/useMapDataStore.js +53 -64
  70. package/lib/cjs/react/stores/useMapDataStore.js.map +1 -1
  71. package/lib/cjs/react/stores/useMetaAtlasStore.js +27 -40
  72. package/lib/cjs/react/stores/useMetaAtlasStore.js.map +1 -1
  73. package/lib/esm/index.js +3 -7
  74. package/lib/esm/index.js.map +1 -1
  75. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +2 -1
  76. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
  77. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +10 -9
  78. package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
  79. package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js +2 -2
  80. package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
  81. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +3 -3
  82. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
  83. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js +4 -3
  84. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.js.map +1 -1
  85. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +22 -14
  86. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
  87. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +8 -8
  88. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
  89. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js +3 -3
  90. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.js.map +1 -1
  91. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +18 -11
  92. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
  93. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +4 -3
  94. package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
  95. package/lib/esm/meta-atlas-sdk/customerLayer.js +4 -1
  96. package/lib/esm/meta-atlas-sdk/customerLayer.js.map +1 -1
  97. package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js +80 -61
  98. package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
  99. package/lib/esm/meta-atlas-sdk/utils/helpers.js +3 -1
  100. package/lib/esm/meta-atlas-sdk/utils/helpers.js.map +1 -1
  101. package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js +19 -15
  102. package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
  103. package/lib/esm/react/MetaAtlasMap.js +120 -0
  104. package/lib/esm/react/MetaAtlasMap.js.map +1 -0
  105. package/lib/esm/react/hooks/useDrawing/index.js +2 -2
  106. package/lib/esm/react/hooks/useDrawing/index.js.map +1 -1
  107. package/lib/esm/react/hooks/useFocus/index.js +4 -3
  108. package/lib/esm/react/hooks/useFocus/index.js.map +1 -1
  109. package/lib/esm/react/hooks/useMapEvents/index.js +3 -3
  110. package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
  111. package/lib/esm/react/hooks/useMapOverlays/index.js +2 -2
  112. package/lib/esm/react/hooks/useMapOverlays/index.js.map +1 -1
  113. package/lib/esm/react/hooks/useMetaAtlas/index.js +162 -60
  114. package/lib/esm/react/hooks/useMetaAtlas/index.js.map +1 -1
  115. package/lib/esm/react/hooks/useMetaAtlas.js +162 -60
  116. package/lib/esm/react/hooks/useMetaAtlas.js.map +1 -1
  117. package/lib/esm/react/hooks/useRouting/index.js +2 -2
  118. package/lib/esm/react/hooks/useRouting/index.js.map +1 -1
  119. package/lib/esm/react/hooks/useSearch/index.js +2 -2
  120. package/lib/esm/react/hooks/useSearch/index.js.map +1 -1
  121. package/lib/esm/react/hooks/useStampRally/index.js +8 -7
  122. package/lib/esm/react/hooks/useStampRally/index.js.map +1 -1
  123. package/lib/esm/react/index.js +11 -15
  124. package/lib/esm/react/index.js.map +1 -1
  125. package/package.json +9 -6
@@ -1 +1 @@
1
- {"version":3,"file":"meta-atlas-sdk-core.js","names":["_focustree","_interopRequireDefault","require","_whatTaxonomies","_length","_helpers","_center","_lineSliceAlong","_booleanPointInPolygon","_axios","_localStorage","_fetchPublishedJson","_mapobjectsStore","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_toConsumableArray","r","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","Array","from","isArray","_arrayLikeToArray","_createForOfIteratorHelper","t","length","_n","F","s","n","done","value","f","a","u","call","next","toString","slice","name","test","ownKeys","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_regenerator","toStringTag","i","c","Generator","create","_regeneratorDefine2","p","y","G","v","d","bind","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","m","_regeneratorDefine","_invoke","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","_next","_throw","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_toPrimitive","toPrimitive","String","Number","SortType","FilterType","exports","MetaAtlasCore","defaultFocusedTaxonomy","Status","Awaiting","LocalStorage","lastClicked","mapObjectId","coordinates","whatDimension","whereDimension","geometry","properties","clickEvent","init","apiServerURL","token","secretKey","onAuthenticationResponse","empApi","secretKeyForDecryption","getAtomsAPIAccessToken","_this","data","JSON","stringify","strategy","atomsSdkToken","clientEngine","clientOS","config","method","url","concat","headers","axios","_ref","_callee","response","_response$data","_context","accessToken","atomsAPIAccessToken","authenticated","_x","error","_setupRouting","_callee2","onRoutingStatusUpdateCallback","status","_context2","getPublishedData","URL","publishedDataType","PublishedDataType","Routing","storage","routingStatus","console","log","Ready","setupRouting","_x2","getRoutingStatus","setLastClickedFeature","featureData","_this2","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","floors","getUserViewportBuilding","currentCenter","centerPoint","turfPoint","bIndex","b","hasOwnProperty","bounds","turfPolygon","booleanPointInPolygon","checkUserViewport","building","floor","undefined","bBounds","isViewingBuilding","fBounds","isViewingFloor","filterBaseMapWhereDimension","layersData","whereTaxonomyPath","dimensionWhere","whereFilters","_iterator","_step","_iterator2","_step2","err","_iterator3","_step3","_iterator4","_step4","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","_loop","indexOf","clearStyleLayersByType","normalize","string","trim","toLowerCase","relevanceSort","metaFeatures","query","isStrict","score","metaFeature","noMatch","lowerStr","lowerQuery","startsWith","some","word","sort","scoreA","scoreB","localeCompare","sortType","compare","Name","WhereDimension","whereComparison","Relevance","RelevanceStrict","_setupMapObjectSearch","_callee3","onSearchStatusUpdateCallback","mapObjects","mapObject","coords","moJSON","_context3","MapObjects","searchStatus","useMapObjectsDataStore","getState","mID","what","where","myMapObjectId","localRef","dimension_what","dimension_where","overview","images","videos","files","products","logos","metadata","parse","searchableGeoJsonFeatures","setupMapObjectSearch","_x3","getMapObjectsByFilteredLocalRef","boothId","searchSubString","onResponseCallback","uniqueIds","Set","boothIdToSearch","_iterator5","_step5","has","add","objFeature","sortedFeatures","getMapObjectsByName","nameToSearch","_iterator6","_step6","idToSearch","_iterator7","_step7","getMapObjectByLocalRef","localRefToSearch","_iterator8","_step8","getMapObjectMatchingLocalRef","_iterator9","_step9","getMapObjectsMatchingLocalRefs","localRefsToSearch","localRefsArray","_iterator0","_step0","_loop2","ref","getMapObjectsByWhatTaxonomy","whatTaxonomyPath","_iterator1","_step1","whatTaxonomy","getMapObjectsByWhereTaxonomy","_iterator10","_step10","whereTaxonomy","getMapObjectsByWhatAndWhereTaxonomy","_iterator11","_step11","getMapObjectsInWhatTaxonomy","whatTaxonomyPaths","_iterator12","_step12","getMapObjectsInWhereTaxonomy","whereTaxonomyPaths","_iterator13","_step13","getMapObjectsInWhatAndWhereTaxonomy","_iterator14","_step14","getMapObjectsApi","_this3","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":[]}
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":[]}