@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":"CustomThreeJsWrapper.js","names":["ACESFilmicToneMapping","AmbientLight","DirectionalLight","HemisphereLight","Mesh","Object3D","PerspectiveCamera","Scene","WebGLRenderer","Vector2","Vector3","Shape","Path","ExtrudeGeometry","Box3","SRGBColorSpace","constants","CameraSync","projectToWorld","toDecimal","CustomThreeJSWrapper","constructor","map","scene","c","getCanvas","gl","getContext","isWebglSupported","console","error","renderer","alpha","antialias","preserveDrawingBuffer","canvas","context","setPixelRatio","window","devicePixelRatio","setSize","clientWidth","clientHeight","autoClear","toneMapping","outputColorSpace","fov","FOV_DEGREES","h","w","camera","cameraSync","resize","aspect","updateProjectionMatrix","WebGLRenderingContext","document","createElement","getParameter","e","repaint","clear","layerId","Promise","resolve","reject","objects","children","forEach","object","push","i","length","obj","layers","remove","clearMeshes","type","log","filter3DObjects","whatTaxonomies","Array","isArray","visible","includes","userData","whatDimension","add","setEnvironment","dirLight","position","set","castShadow","hemiLight","ambientLight","buildPoints","coords","initCoords","points","init","pos","x","y","buildGeometry","shape","settings","geometry","computeBoundingBox","buildShape","holes","extrusion","opt","coordinates","geometryOptions","mesh","materials","centerMesh","bbox","copy","boundingBox","applyMatrix4","matrixWorld","center","getCenter","dummy","localToWorld","diff","clone","sub","translate","dispose","target","material","_isDisposed","removeFromParent","disposeObject","traverse","child","disposeMaterial","disposeGeometry","disposeTexture","requestAnimationFrame","parent","texture","update","updateMatrixWorld","resetState","render"],"sources":["../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.ts"],"sourcesContent":["import { Map } from 'maplibre-gl';\nimport {\n ACESFilmicToneMapping,\n AmbientLight,\n DataTexture,\n DirectionalLight,\n HemisphereLight,\n Mesh,\n Object3D,\n PerspectiveCamera,\n Scene,\n WebGLRenderer,\n Vector2,\n Vector3,\n Shape,\n Path,\n ExtrudeGeometry,\n Box3,\n BoxGeometry,\n MeshBasicMaterial,\n SRGBColorSpace\n} from 'three';\nimport constants from './utility/constants.js';\nimport CameraSync from './utility/CameraSync.js';\nimport { projectToWorld, toDecimal } from './utility/utils.js';\n\nclass CustomThreeJSWrapper {\n map;\n scene;\n camera;\n renderer;\n cameraSync;\n fov;\n\n constructor(map) {\n this.scene = new Scene();\n this.map = map;\n\n const c = map?.getCanvas() as HTMLCanvasElement;\n const gl = c?.getContext('webgl') || c?.getContext('webgl2');\n\n if (!gl && !this.isWebglSupported()) {\n console.error(map.getCanvas(), 'WebGL 2 is not supported in this environment');\n return;\n }\n\n // Initialize the WebGLRenderer without explicitly passing the WebGL 1 context\n this.renderer = new WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: false,\n canvas: map.getCanvas(),\n context: gl\n });\n\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setSize(this.map.getCanvas().clientWidth, this.map.getCanvas().clientHeight);\n this.renderer.autoClear = false;\n this.renderer.toneMapping = ACESFilmicToneMapping;\n this.renderer.outputColorSpace = SRGBColorSpace;\n this.fov = constants.FOV_DEGREES;\n\n const h = this.map.getCanvas().clientHeight;\n const w = this.map.getCanvas().clientWidth;\n\n this.camera = new PerspectiveCamera(this.fov, w / h, 0.1, 1000);\n\n this.cameraSync = new CameraSync(map, this.camera, this.scene);\n }\n\n resize() {\n const w = this.map.getCanvas().clientWidth;\n const h = this.map.getCanvas().clientHeight;\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n }\n\n isWebglSupported() {\n if (window.WebGLRenderingContext) {\n const canvas = document.createElement('canvas');\n try {\n // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument\n // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n // for more details.\n const context = canvas.getContext('webgl2') || canvas.getContext('webgl');\n if (context && typeof context.getParameter == 'function') {\n return true;\n }\n } catch (e) {\n // WebGL is supported, but disabled\n }\n return false;\n }\n // WebGL not supported\n return false;\n }\n\n repaint() {\n this.map.repaint = true;\n }\n\n async clear(layerId = null) {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n objects.push(object);\n });\n for (let i = 0; i < objects.length; i++) {\n const obj = objects[i];\n //if layerId, check the layer to remove, otherwise always remove\n if (obj.layers === layerId || !layerId) {\n this.remove(obj);\n }\n }\n\n resolve('clear');\n });\n }\n\n async clearMeshes() {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') objects.push(object);\n });\n console.log('Mesh Objects:', objects);\n for (let i = 0; i < objects.length; i++) {\n this.remove(objects[i]);\n }\n\n resolve('clear');\n });\n }\n\n filter3DObjects(whatTaxonomies: string[]) {\n if (!Array.isArray(whatTaxonomies)) return;\n if (whatTaxonomies.length === 0) {\n this.scene.children.forEach(function (object) {\n object.visible = true;\n });\n } else {\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') {\n if (whatTaxonomies.includes(object.userData.whatDimension)) {\n object.visible = false;\n } else {\n object.visible = true;\n }\n }\n });\n }\n }\n\n add(object) {\n this.scene.add(object);\n }\n\n setEnvironment() {\n const dirLight = new DirectionalLight(0xffffff, 2);\n dirLight.position.set(10, 10, 10);\n dirLight.castShadow = true;\n const hemiLight = new HemisphereLight('white', 'white', 1.5);\n const ambientLight = new AmbientLight('white', 1);\n this.scene.add(dirLight);\n this.scene.add(hemiLight);\n this.scene.add(ambientLight);\n }\n\n buildPoints(coords, initCoords) {\n const points = [];\n const init = projectToWorld([initCoords[0][0], initCoords[0][1], 0]);\n for (let i = 0; i < coords.length; i++) {\n const pos = projectToWorld([coords[i][0], coords[i][1], 0]);\n points.push(new Vector2(toDecimal(pos.x - init.x, 9), toDecimal(pos.y - init.y, 9)));\n }\n return points;\n }\n\n buildGeometry(shape, settings) {\n const geometry = new ExtrudeGeometry(shape, settings);\n geometry.computeBoundingBox();\n return geometry;\n }\n\n buildShape(coords: any) {\n if (coords[0] instanceof (Vector2 || Vector3)) return new Shape(coords);\n let shape = new Shape();\n for (let i = 0; i < coords.length; i++) {\n if (i === 0) {\n shape = new Shape(this.buildPoints(coords[0], coords[0]));\n } else {\n shape.holes.push(new Path(this.buildPoints(coords[i], coords[0])));\n }\n }\n return shape;\n }\n\n extrusion(opt: any) {\n const shape = this.buildShape(opt.coordinates);\n const geometry = this.buildGeometry(shape, opt.geometryOptions);\n const mesh = new Mesh(geometry, opt.materials);\n\n if (!opt.visible) mesh.visible = false;\n\n return mesh;\n }\n\n centerMesh(mesh) {\n // Compute the bounding box\n const bbox = new Box3();\n mesh.geometry.computeBoundingBox();\n bbox.copy(mesh.geometry.boundingBox).applyMatrix4(mesh.matrixWorld);\n\n // Get the center of the bounding box\n let center = new Vector3();\n bbox.getCenter(center);\n\n // Create a dummy object\n const dummy = new Object3D();\n\n // Attach mesh to dummy\n dummy.add(mesh);\n\n center = mesh.localToWorld(center);\n // const geometry = new BoxGeometry( 0.25, 0.25, 0.25 );\n // const material = new MeshBasicMaterial( {color: 0xff0000} );\n // const cube = new Mesh( geometry, material );\n // cube.position.set(center.x, center.y, center.z);\n // this.add( cube );\n // // Move the mesh within the dummy\n const diff = mesh.position.clone().sub(center);\n mesh.geometry.translate(diff.x, diff.y, 0);\n\n return dummy; // Return the new parent object\n }\n\n dispose(target) {\n if (target instanceof Mesh) {\n // If the target is a Mesh\n // Dispose materials and geometry of the mesh\n if (target.material) {\n if (typeof target.material.dispose === 'function' && !target.material._isDisposed) {\n target.material.dispose();\n target.material._isDisposed = true;\n }\n target.material = null;\n }\n if (target.geometry) {\n if (typeof target.geometry.dispose === 'function' && !target.geometry._isDisposed) {\n target.geometry.dispose();\n target.geometry._isDisposed = true;\n }\n target.geometry = null;\n }\n } else if (target instanceof Object3D) {\n // If the target is an Object3D\n target.removeFromParent();\n this.disposeObject(target);\n }\n }\n\n disposeObject(object) {\n object.traverse(child => {\n if (child instanceof Mesh && child.material) {\n if (Array.isArray(child.material)) {\n child.material.forEach(material => {\n this.disposeMaterial(material);\n });\n } else {\n this.disposeMaterial(child.material);\n }\n }\n if (child instanceof Mesh && child.geometry) {\n this.disposeGeometry(child.geometry);\n }\n if (child instanceof Mesh && child.material && child.material.map) {\n this.disposeTexture(child.material.map);\n }\n requestAnimationFrame(() => (child.children.length = 0));\n });\n\n if (object.parent) {\n object.parent.remove(object);\n }\n }\n\n disposeMaterial(material) {\n if (material.dispose) {\n material.dispose();\n }\n }\n\n // to dispose of a texture\n disposeTexture(texture) {\n if (texture.dispose) {\n texture.dispose();\n }\n }\n\n // to dispose of a geometry\n disposeGeometry(geometry) {\n if (geometry.dispose) {\n geometry.dispose();\n }\n }\n\n remove(object) {\n this.scene.remove(object);\n object = null;\n }\n\n update() {\n if (this.map.repaint) this.map.repaint = false;\n this.scene.updateMatrixWorld(true);\n\n // Render the scene and repaint the map\n this.renderer.resetState(); //update threejs r126\n this.renderer.render(this.scene, this.camera);\n }\n}\n\nexport default CustomThreeJSWrapper;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CustomThreeJsWrapper.js","names":["ACESFilmicToneMapping","AmbientLight","DirectionalLight","HemisphereLight","Mesh","Object3D","PerspectiveCamera","Scene","WebGLRenderer","Vector2","Vector3","Shape","Path","ExtrudeGeometry","Box3","SRGBColorSpace","constants","CameraSync","projectToWorld","toDecimal","CustomThreeJSWrapper","constructor","map","scene","c","getCanvas","gl","getContext","isWebglSupported","console","error","renderer","alpha","antialias","preserveDrawingBuffer","canvas","context","setPixelRatio","window","devicePixelRatio","setSize","clientWidth","clientHeight","autoClear","toneMapping","outputColorSpace","fov","FOV_DEGREES","h","w","camera","cameraSync","resize","aspect","updateProjectionMatrix","WebGLRenderingContext","document","createElement","getParameter","e","repaint","clear","layerId","arguments","length","undefined","Promise","resolve","reject","objects","children","forEach","object","push","i","obj","layers","remove","clearMeshes","type","log","filter3DObjects","whatTaxonomies","Array","isArray","visible","includes","userData","whatDimension","add","setEnvironment","dirLight","position","set","castShadow","hemiLight","ambientLight","buildPoints","coords","initCoords","points","init","pos","x","y","buildGeometry","shape","settings","geometry","computeBoundingBox","buildShape","holes","extrusion","opt","coordinates","geometryOptions","mesh","materials","centerMesh","bbox","copy","boundingBox","applyMatrix4","matrixWorld","center","getCenter","dummy","localToWorld","diff","clone","sub","translate","dispose","target","material","_isDisposed","removeFromParent","disposeObject","traverse","child","disposeMaterial","disposeGeometry","disposeTexture","requestAnimationFrame","parent","texture","update","updateMatrixWorld","resetState","render"],"sources":["../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.ts"],"sourcesContent":["import { Map } from 'maplibre-gl';\nimport {\n ACESFilmicToneMapping,\n AmbientLight,\n DataTexture,\n DirectionalLight,\n HemisphereLight,\n Mesh,\n Object3D,\n PerspectiveCamera,\n Scene,\n WebGLRenderer,\n Vector2,\n Vector3,\n Shape,\n Path,\n ExtrudeGeometry,\n Box3,\n BoxGeometry,\n MeshBasicMaterial,\n SRGBColorSpace\n} from 'three';\nimport constants from './utility/constants.js';\nimport CameraSync from './utility/CameraSync.js';\nimport { projectToWorld, toDecimal } from './utility/utils.js';\n\nclass CustomThreeJSWrapper {\n map;\n scene;\n camera;\n renderer;\n cameraSync;\n fov;\n\n constructor(map) {\n this.scene = new Scene();\n this.map = map;\n\n const c = map?.getCanvas() as HTMLCanvasElement;\n const gl = c?.getContext('webgl') || c?.getContext('webgl2');\n\n if (!gl && !this.isWebglSupported()) {\n console.error(map.getCanvas(), 'WebGL 2 is not supported in this environment');\n return;\n }\n\n // Initialize the WebGLRenderer without explicitly passing the WebGL 1 context\n this.renderer = new WebGLRenderer({\n alpha: true,\n antialias: true,\n preserveDrawingBuffer: false,\n canvas: map.getCanvas(),\n context: gl\n });\n\n this.renderer.setPixelRatio(window.devicePixelRatio);\n this.renderer.setSize(this.map.getCanvas().clientWidth, this.map.getCanvas().clientHeight);\n this.renderer.autoClear = false;\n this.renderer.toneMapping = ACESFilmicToneMapping;\n this.renderer.outputColorSpace = SRGBColorSpace;\n this.fov = constants.FOV_DEGREES;\n\n const h = this.map.getCanvas().clientHeight;\n const w = this.map.getCanvas().clientWidth;\n\n this.camera = new PerspectiveCamera(this.fov, w / h, 0.1, 1000);\n\n this.cameraSync = new CameraSync(map, this.camera, this.scene);\n }\n\n resize() {\n const w = this.map.getCanvas().clientWidth;\n const h = this.map.getCanvas().clientHeight;\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n this.renderer.setSize(w, h);\n }\n\n isWebglSupported() {\n if (window.WebGLRenderingContext) {\n const canvas = document.createElement('canvas');\n try {\n // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument\n // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext\n // for more details.\n const context = canvas.getContext('webgl2') || canvas.getContext('webgl');\n if (context && typeof context.getParameter == 'function') {\n return true;\n }\n } catch (e) {\n // WebGL is supported, but disabled\n }\n return false;\n }\n // WebGL not supported\n return false;\n }\n\n repaint() {\n this.map.repaint = true;\n }\n\n async clear(layerId = null) {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n objects.push(object);\n });\n for (let i = 0; i < objects.length; i++) {\n const obj = objects[i];\n //if layerId, check the layer to remove, otherwise always remove\n if (obj.layers === layerId || !layerId) {\n this.remove(obj);\n }\n }\n\n resolve('clear');\n });\n }\n\n async clearMeshes() {\n return new Promise((resolve, reject) => {\n const objects = [];\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') objects.push(object);\n });\n console.log('Mesh Objects:', objects);\n for (let i = 0; i < objects.length; i++) {\n this.remove(objects[i]);\n }\n\n resolve('clear');\n });\n }\n\n filter3DObjects(whatTaxonomies: string[]) {\n if (!Array.isArray(whatTaxonomies)) return;\n if (whatTaxonomies.length === 0) {\n this.scene.children.forEach(function (object) {\n object.visible = true;\n });\n } else {\n this.scene.children.forEach(function (object) {\n if (object.type === 'Mesh') {\n if (whatTaxonomies.includes(object.userData.whatDimension)) {\n object.visible = false;\n } else {\n object.visible = true;\n }\n }\n });\n }\n }\n\n add(object) {\n this.scene.add(object);\n }\n\n setEnvironment() {\n const dirLight = new DirectionalLight(0xffffff, 2);\n dirLight.position.set(10, 10, 10);\n dirLight.castShadow = true;\n const hemiLight = new HemisphereLight('white', 'white', 1.5);\n const ambientLight = new AmbientLight('white', 1);\n this.scene.add(dirLight);\n this.scene.add(hemiLight);\n this.scene.add(ambientLight);\n }\n\n buildPoints(coords, initCoords) {\n const points = [];\n const init = projectToWorld([initCoords[0][0], initCoords[0][1], 0]);\n for (let i = 0; i < coords.length; i++) {\n const pos = projectToWorld([coords[i][0], coords[i][1], 0]);\n points.push(new Vector2(toDecimal(pos.x - init.x, 9), toDecimal(pos.y - init.y, 9)));\n }\n return points;\n }\n\n buildGeometry(shape, settings) {\n const geometry = new ExtrudeGeometry(shape, settings);\n geometry.computeBoundingBox();\n return geometry;\n }\n\n buildShape(coords: any) {\n if (coords[0] instanceof (Vector2 || Vector3)) return new Shape(coords);\n let shape = new Shape();\n for (let i = 0; i < coords.length; i++) {\n if (i === 0) {\n shape = new Shape(this.buildPoints(coords[0], coords[0]));\n } else {\n shape.holes.push(new Path(this.buildPoints(coords[i], coords[0])));\n }\n }\n return shape;\n }\n\n extrusion(opt: any) {\n const shape = this.buildShape(opt.coordinates);\n const geometry = this.buildGeometry(shape, opt.geometryOptions);\n const mesh = new Mesh(geometry, opt.materials);\n\n if (!opt.visible) mesh.visible = false;\n\n return mesh;\n }\n\n centerMesh(mesh) {\n // Compute the bounding box\n const bbox = new Box3();\n mesh.geometry.computeBoundingBox();\n bbox.copy(mesh.geometry.boundingBox).applyMatrix4(mesh.matrixWorld);\n\n // Get the center of the bounding box\n let center = new Vector3();\n bbox.getCenter(center);\n\n // Create a dummy object\n const dummy = new Object3D();\n\n // Attach mesh to dummy\n dummy.add(mesh);\n\n center = mesh.localToWorld(center);\n // const geometry = new BoxGeometry( 0.25, 0.25, 0.25 );\n // const material = new MeshBasicMaterial( {color: 0xff0000} );\n // const cube = new Mesh( geometry, material );\n // cube.position.set(center.x, center.y, center.z);\n // this.add( cube );\n // // Move the mesh within the dummy\n const diff = mesh.position.clone().sub(center);\n mesh.geometry.translate(diff.x, diff.y, 0);\n\n return dummy; // Return the new parent object\n }\n\n dispose(target) {\n if (target instanceof Mesh) {\n // If the target is a Mesh\n // Dispose materials and geometry of the mesh\n if (target.material) {\n if (typeof target.material.dispose === 'function' && !target.material._isDisposed) {\n target.material.dispose();\n target.material._isDisposed = true;\n }\n target.material = null;\n }\n if (target.geometry) {\n if (typeof target.geometry.dispose === 'function' && !target.geometry._isDisposed) {\n target.geometry.dispose();\n target.geometry._isDisposed = true;\n }\n target.geometry = null;\n }\n } else if (target instanceof Object3D) {\n // If the target is an Object3D\n target.removeFromParent();\n this.disposeObject(target);\n }\n }\n\n disposeObject(object) {\n object.traverse(child => {\n if (child instanceof Mesh && child.material) {\n if (Array.isArray(child.material)) {\n child.material.forEach(material => {\n this.disposeMaterial(material);\n });\n } else {\n this.disposeMaterial(child.material);\n }\n }\n if (child instanceof Mesh && child.geometry) {\n this.disposeGeometry(child.geometry);\n }\n if (child instanceof Mesh && child.material && child.material.map) {\n this.disposeTexture(child.material.map);\n }\n requestAnimationFrame(() => (child.children.length = 0));\n });\n\n if (object.parent) {\n object.parent.remove(object);\n }\n }\n\n disposeMaterial(material) {\n if (material.dispose) {\n material.dispose();\n }\n }\n\n // to dispose of a texture\n disposeTexture(texture) {\n if (texture.dispose) {\n texture.dispose();\n }\n }\n\n // to dispose of a geometry\n disposeGeometry(geometry) {\n if (geometry.dispose) {\n geometry.dispose();\n }\n }\n\n remove(object) {\n this.scene.remove(object);\n object = null;\n }\n\n update() {\n if (this.map.repaint) this.map.repaint = false;\n this.scene.updateMatrixWorld(true);\n\n // Render the scene and repaint the map\n this.renderer.resetState(); //update threejs r126\n this.renderer.render(this.scene, this.camera);\n }\n}\n\nexport default CustomThreeJSWrapper;\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import * as THREE from 'three';
2
2
  import { Euler, Vector3 } from 'three';
3
- import constants from './constants';
3
+ import constants from "./constants.js";
4
4
  import gsap from 'gsap';
5
5
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';
6
6
  export function projectToWorld(coords) {
@@ -32,14 +32,15 @@ export function toDecimal(n, d) {
32
32
  export function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {
33
33
  return new Promise((resolve, reject) => {
34
34
  try {
35
- const modelLoadPromises = models.map(({
36
- id,
37
- modelUrl,
38
- coords,
39
- rotation,
40
- scale,
41
- instanced
42
- }) => {
35
+ const modelLoadPromises = models.map(_ref => {
36
+ let {
37
+ id,
38
+ modelUrl,
39
+ coords,
40
+ rotation,
41
+ scale,
42
+ instanced
43
+ } = _ref;
43
44
  return new Promise((modelResolve, modelReject) => {
44
45
  const loader = new GLTFLoader();
45
46
  loader.load(modelUrl, gltf => {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["THREE","Euler","Vector3","constants","gsap","GLTFLoader","projectToWorld","coords","projected","MERCATOR_A","DEG2RAD","PROJECTION_WORLD_SIZE","Math","log","tan","PI","push","pixelsPerMeter","projectedUnitsPerMeter","result","latitude","abs","WORLD_SIZE","cos","EARTH_CIRCUMFERENCE","unprojectFromWorld","worldUnits","unprojected","x","atan","exp","y","height","z","toDecimal","n","d","Number","toFixed","addModelsToMap","wrapper","map","models","modelMap","onModelsLoaded","Promise","resolve","reject","modelLoadPromises","id","modelUrl","rotation","scale","instanced","modelResolve","modelReject","loader","load","gltf","model","scene","traverse","child","Mesh","Array","isArray","material","forEach","mat","side","DoubleSide","needsUpdate","worldPosition","position","set","up","visible","get","add","undefined","error","console","addLayer","type","renderingMode","onAdd","all","then","res","catch","render","toggleModelVisibility","modelId","isVisible","isAnimating","isMesh","transparent","to","opacity","duration","ease","onComplete","bearingToRotation","bearing","threeRotation","rotationToBearing","quaternion","euler","setFromQuaternion","objectDirectionToBearing","object","forward","getWorldDirection","atan2"],"sources":["../../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.ts"],"sourcesContent":["import * as THREE from 'three';\nimport {Quaternion, Euler, Vector3, InstancedMesh, Object3D} from 'three';\nimport constants from './constants';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\nimport { LngLatLike } from 'maplibre-gl';\nimport { Position } from 'geojson';\nimport gsap from 'gsap';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { AmbientLight, DirectionalLight } from 'three';\nimport CustomThreeJSWrapper from '../CustomThreeJsWrapper.js';\n\nexport function projectToWorld(coords: Position) {\n var projected = [\n -constants.MERCATOR_A *\n constants.DEG2RAD *\n coords[0] *\n constants.PROJECTION_WORLD_SIZE,\n -constants.MERCATOR_A *\n Math.log(Math.tan(Math.PI * 0.25 + 0.5 * constants.DEG2RAD * coords[1])) *\n constants.PROJECTION_WORLD_SIZE,\n ];\n\n if (!coords[2]) projected.push(0);\n else {\n var pixelsPerMeter = projectedUnitsPerMeter(coords[1]);\n projected.push(coords[2] * pixelsPerMeter);\n }\n\n var result = new Vector3(projected[0], projected[1], projected[2]);\n\n return result;\n}\n\nfunction projectedUnitsPerMeter(latitude: number) {\n return Math.abs(\n constants.WORLD_SIZE /\n Math.cos(constants.DEG2RAD * latitude) /\n constants.EARTH_CIRCUMFERENCE\n );\n}\n\nexport function unprojectFromWorld(worldUnits: Vector3) {\n var unprojected = [\n -worldUnits.x /\n (constants.MERCATOR_A *\n constants.DEG2RAD *\n constants.PROJECTION_WORLD_SIZE),\n (2 *\n (Math.atan(\n Math.exp(\n worldUnits.y /\n (constants.PROJECTION_WORLD_SIZE * -constants.MERCATOR_A)\n )\n ) -\n Math.PI / 4)) /\n constants.DEG2RAD,\n ];\n\n var pixelsPerMeter = projectedUnitsPerMeter(unprojected[1]);\n\n // z dimension\n var height = worldUnits.z || 0;\n unprojected.push(height / pixelsPerMeter);\n\n return unprojected as LngLatLike;\n}\n\nexport function toDecimal (n, d) {\n return Number(n.toFixed(d));\n}\n\n// RF: TO BE REMOVED. ModelLoader component can be used to load 3D models.\nexport function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {\n return new Promise((resolve, reject) => {\n try {\n const modelLoadPromises = models.map(({ id, modelUrl, coords, rotation, scale, instanced }) => {\n return new Promise((modelResolve, modelReject) => {\n const loader = new GLTFLoader();\n loader.load(\n modelUrl,\n (gltf) => {\n const model = gltf.scene;\n model.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n if (Array.isArray(child.material)) {\n child.material.forEach((mat) => {\n mat.side = THREE.DoubleSide;\n mat.needsUpdate = true;\n });\n } else {\n child.material.side = THREE.DoubleSide;\n child.material.needsUpdate = true;\n }\n }\n });\n \n const worldPosition = projectToWorld(coords);\n model.position.set(worldPosition.x, worldPosition.y, 0);\n model.up.set(0, 0, 1);\n model.rotation.set(rotation[0], rotation[1], rotation[2]);\n model.scale.set(scale[0], scale[1], scale[2]);\n model.visible = modelMap.get(id)?.visible ?? true;\n wrapper.add(model);\n modelMap.set(id, model);\n modelResolve(modelMap);\n },\n undefined,\n (error) => {\n console.error(`Error loading model ${id}:`, error);\n modelReject(error);\n }\n );\n });\n });\n\n map.addLayer({\n id: '3d-model-layer2',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => Promise.all(modelLoadPromises).then((res)=>{\n resolve(res);\n onModelsLoaded(true);\n }).catch(reject),\n render: () => {},\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function toggleModelVisibility(modelMap, modelId, isVisible) {\n const model = modelMap.get(modelId);\n if (!model) return;\n console.log('toggleModelVisibility_model', model);\n const isAnimating = {}; // Object to track animations\n model.traverse((child) => {\n if (child.isMesh) {\n const id = child.id; // Use unique child.id as the key\n child.material.transparent = true;\n if (!isAnimating[id]) {\n isAnimating[id] = true; // Set animation flag\n gsap.to(child.material, {\n opacity: isVisible ? 1 : 0,\n duration: 0.5, // Smooth fade animation\n ease: 'power2.inOut',\n onComplete: () => {\n isAnimating[id] = false; // Reset animation flag\n model.visible = isVisible;\n },\n });\n } else if (child.isMesh) {\n console.error(`GSAP Animation already running for child id ${id}!`);\n }\n }\n });\n if (isVisible) {\n model.visible = true;\n }\n}\n\nexport function bearingToRotation(bearing: number) {\n // Mapbox bearing is clockwise from north, Three.js rotation is counterclockwise from east\n const threeRotation = -((bearing - 90) * Math.PI / 180);\n return threeRotation;\n}\n\nexport function rotationToBearing(quaternion: Quaternion) {\n const euler = new Euler().setFromQuaternion(quaternion);\n // Convert from radians to degrees and adjust coordinate systems\n const bearing = (360 - (euler.y * 180 / Math.PI - 90)) % 360;\n return bearing;\n}\n\nexport function objectDirectionToBearing(object) {\n const forward = new Vector3();\n object.getWorldDirection(forward);\n\n // Project onto the map's X-Z plane (ignore Y)\n const bearing = Math.atan2(forward.x, forward.z) * (180 / Math.PI);\n \n return bearing;\n}"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["THREE","Euler","Vector3","constants","gsap","GLTFLoader","projectToWorld","coords","projected","MERCATOR_A","DEG2RAD","PROJECTION_WORLD_SIZE","Math","log","tan","PI","push","pixelsPerMeter","projectedUnitsPerMeter","result","latitude","abs","WORLD_SIZE","cos","EARTH_CIRCUMFERENCE","unprojectFromWorld","worldUnits","unprojected","x","atan","exp","y","height","z","toDecimal","n","d","Number","toFixed","addModelsToMap","wrapper","map","models","modelMap","onModelsLoaded","Promise","resolve","reject","modelLoadPromises","_ref","id","modelUrl","rotation","scale","instanced","modelResolve","modelReject","loader","load","gltf","model","scene","traverse","child","Mesh","Array","isArray","material","forEach","mat","side","DoubleSide","needsUpdate","worldPosition","position","set","up","visible","get","add","undefined","error","console","addLayer","type","renderingMode","onAdd","all","then","res","catch","render","toggleModelVisibility","modelId","isVisible","isAnimating","isMesh","transparent","to","opacity","duration","ease","onComplete","bearingToRotation","bearing","threeRotation","rotationToBearing","quaternion","euler","setFromQuaternion","objectDirectionToBearing","object","forward","getWorldDirection","atan2"],"sources":["../../../../../../src/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.ts"],"sourcesContent":["import * as THREE from 'three';\nimport {Quaternion, Euler, Vector3, InstancedMesh, Object3D} from 'three';\nimport constants from './constants';\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';\nimport { LngLatLike } from 'maplibre-gl';\nimport { Position } from 'geojson';\nimport gsap from 'gsap';\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { AmbientLight, DirectionalLight } from 'three';\nimport CustomThreeJSWrapper from '../CustomThreeJsWrapper.js';\n\nexport function projectToWorld(coords: Position) {\n var projected = [\n -constants.MERCATOR_A *\n constants.DEG2RAD *\n coords[0] *\n constants.PROJECTION_WORLD_SIZE,\n -constants.MERCATOR_A *\n Math.log(Math.tan(Math.PI * 0.25 + 0.5 * constants.DEG2RAD * coords[1])) *\n constants.PROJECTION_WORLD_SIZE,\n ];\n\n if (!coords[2]) projected.push(0);\n else {\n var pixelsPerMeter = projectedUnitsPerMeter(coords[1]);\n projected.push(coords[2] * pixelsPerMeter);\n }\n\n var result = new Vector3(projected[0], projected[1], projected[2]);\n\n return result;\n}\n\nfunction projectedUnitsPerMeter(latitude: number) {\n return Math.abs(\n constants.WORLD_SIZE /\n Math.cos(constants.DEG2RAD * latitude) /\n constants.EARTH_CIRCUMFERENCE\n );\n}\n\nexport function unprojectFromWorld(worldUnits: Vector3) {\n var unprojected = [\n -worldUnits.x /\n (constants.MERCATOR_A *\n constants.DEG2RAD *\n constants.PROJECTION_WORLD_SIZE),\n (2 *\n (Math.atan(\n Math.exp(\n worldUnits.y /\n (constants.PROJECTION_WORLD_SIZE * -constants.MERCATOR_A)\n )\n ) -\n Math.PI / 4)) /\n constants.DEG2RAD,\n ];\n\n var pixelsPerMeter = projectedUnitsPerMeter(unprojected[1]);\n\n // z dimension\n var height = worldUnits.z || 0;\n unprojected.push(height / pixelsPerMeter);\n\n return unprojected as LngLatLike;\n}\n\nexport function toDecimal (n, d) {\n return Number(n.toFixed(d));\n}\n\n// RF: TO BE REMOVED. ModelLoader component can be used to load 3D models.\nexport function addModelsToMap(wrapper, map, models, modelMap, onModelsLoaded) {\n return new Promise((resolve, reject) => {\n try {\n const modelLoadPromises = models.map(({ id, modelUrl, coords, rotation, scale, instanced }) => {\n return new Promise((modelResolve, modelReject) => {\n const loader = new GLTFLoader();\n loader.load(\n modelUrl,\n (gltf) => {\n const model = gltf.scene;\n model.traverse((child) => {\n if (child instanceof THREE.Mesh) {\n if (Array.isArray(child.material)) {\n child.material.forEach((mat) => {\n mat.side = THREE.DoubleSide;\n mat.needsUpdate = true;\n });\n } else {\n child.material.side = THREE.DoubleSide;\n child.material.needsUpdate = true;\n }\n }\n });\n \n const worldPosition = projectToWorld(coords);\n model.position.set(worldPosition.x, worldPosition.y, 0);\n model.up.set(0, 0, 1);\n model.rotation.set(rotation[0], rotation[1], rotation[2]);\n model.scale.set(scale[0], scale[1], scale[2]);\n model.visible = modelMap.get(id)?.visible ?? true;\n wrapper.add(model);\n modelMap.set(id, model);\n modelResolve(modelMap);\n },\n undefined,\n (error) => {\n console.error(`Error loading model ${id}:`, error);\n modelReject(error);\n }\n );\n });\n });\n\n map.addLayer({\n id: '3d-model-layer2',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => Promise.all(modelLoadPromises).then((res)=>{\n resolve(res);\n onModelsLoaded(true);\n }).catch(reject),\n render: () => {},\n });\n } catch (error) {\n reject(error);\n }\n });\n}\n\nexport function toggleModelVisibility(modelMap, modelId, isVisible) {\n const model = modelMap.get(modelId);\n if (!model) return;\n console.log('toggleModelVisibility_model', model);\n const isAnimating = {}; // Object to track animations\n model.traverse((child) => {\n if (child.isMesh) {\n const id = child.id; // Use unique child.id as the key\n child.material.transparent = true;\n if (!isAnimating[id]) {\n isAnimating[id] = true; // Set animation flag\n gsap.to(child.material, {\n opacity: isVisible ? 1 : 0,\n duration: 0.5, // Smooth fade animation\n ease: 'power2.inOut',\n onComplete: () => {\n isAnimating[id] = false; // Reset animation flag\n model.visible = isVisible;\n },\n });\n } else if (child.isMesh) {\n console.error(`GSAP Animation already running for child id ${id}!`);\n }\n }\n });\n if (isVisible) {\n model.visible = true;\n }\n}\n\nexport function bearingToRotation(bearing: number) {\n // Mapbox bearing is clockwise from north, Three.js rotation is counterclockwise from east\n const threeRotation = -((bearing - 90) * Math.PI / 180);\n return threeRotation;\n}\n\nexport function rotationToBearing(quaternion: Quaternion) {\n const euler = new Euler().setFromQuaternion(quaternion);\n // Convert from radians to degrees and adjust coordinate systems\n const bearing = (360 - (euler.y * 180 / Math.PI - 90)) % 360;\n return bearing;\n}\n\nexport function objectDirectionToBearing(object) {\n const forward = new Vector3();\n object.getWorldDirection(forward);\n\n // Project onto the map's X-Z plane (ignore Y)\n const bearing = Math.atan2(forward.x, forward.z) * (180 / Math.PI);\n \n return bearing;\n}"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
- import CustomThreeJSWrapper from './CustomThreeJsWrapper/CustomThreeJsWrapper';
1
+ import CustomThreeJSWrapper from "./CustomThreeJsWrapper/CustomThreeJsWrapper.js";
2
2
  import { Text } from 'troika-three-text';
3
3
  import * as turf from '@turf/turf';
4
4
  import * as THREE from 'three';
5
- import { projectToWorld } from './CustomThreeJsWrapper/utility/utils';
5
+ import { projectToWorld } from "./CustomThreeJsWrapper/utility/utils.js";
6
6
  import SpriteText from 'three-spritetext';
7
7
  export default class MainMap {
8
8
  static mainInstance = null;
@@ -1 +1 @@
1
- {"version":3,"file":"MainMap.js","names":["CustomThreeJSWrapper","Text","turf","THREE","projectToWorld","SpriteText","MainMap","mainInstance","constructor","metaAtlasCore","init","map2D","map","initThreebox","wrapper","setEnvironment","addLayer","id","type","renderingMode","onAdd","console","log","render","update","threebox","getThreebox","getAllPolygonCoordinates","polygonFeatures","source","getSource","features","querySourceFeatures","sourceLayer","filter","length","forEach","feature","geometry","properties","dimension_what","push","mapObjectId","name","title","coordinates","hasImage","Math","round","random","addNewLine","input","replace","updatePolygons","polygon","centroid","dimension_where","myText","color","text","textHeight","textPosition","rotation","x","PI","y","scale","set","position","add","addLogo","logo","textureLoader","TextureLoader","texture","load","width","height","depth","BoxGeometry","sideMaterial","MeshBasicMaterial","Color","topMaterial","MeshStandardMaterial","side","DoubleSide","transparent","materials","logoMesh","Mesh","z","addTitle","textMesh","fontSize","anchorX","anchorY","fontWeight","textAlign","sync"],"sources":["../../../../src/meta-atlas-sdk/3DMap/MainMap.ts"],"sourcesContent":["import { Map as MaplibreMap } from 'maplibre-gl';\n\nimport CustomThreeJSWrapper from './CustomThreeJsWrapper/CustomThreeJsWrapper';\nimport { Text } from 'troika-three-text';\n\nimport { EquirectangularReflectionMapping } from 'three';\nimport { MetaAtlasCore } from '../MetaAtlasCore/meta-atlas-sdk-core';\nimport * as turf from '@turf/turf';\nimport * as THREE from 'three';\nimport { projectToWorld } from './CustomThreeJsWrapper/utility/utils';\nimport SpriteText from 'three-spritetext';\nimport { HDRLoader } from 'three/examples/jsm/loaders/HDRLoader';\n\nexport default class MainMap {\n public static mainInstance: MainMap | null = null;\n public map!: MaplibreMap;\n public threebox!: CustomThreeJSWrapper;\n public metaAtlasCore!: MetaAtlasCore;\n\n constructor(metaAtlasCore: MetaAtlasCore) {\n if (MainMap.mainInstance) {\n return MainMap.mainInstance;\n }\n\n MainMap.mainInstance = this;\n\n this.metaAtlasCore = metaAtlasCore;\n }\n\n public init(map2D: MaplibreMap) {\n this.map = map2D;\n this.initThreebox();\n }\n\n /**\n * Creates a Threebox instance of the class.\n * @param map Maplibre instance to initialize threebox\n * @returns Threebox class instance created\n */\n private initThreebox() {\n const map = this.map;\n const wrapper = new CustomThreeJSWrapper(map);\n wrapper.setEnvironment();\n // const hdrLoader = new HDRLoader();\n // hdrLoader.load('./golden_gate_hills_1k.hdr', texture => {\n // texture.mapping = EquirectangularReflectionMapping;\n // wrapper.scene.environment = texture;\n // });\n\n map.addLayer({\n id: '3d-model-layer',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => {\n console.log('onAdd _initThreebox');\n },\n render: () => {\n wrapper.update();\n }\n });\n\n this.threebox = wrapper;\n return wrapper;\n }\n\n /**\n * Get the threebox instance for 3D model operations\n */\n getThreebox() {\n return this.threebox;\n }\n\n getAllPolygonCoordinates = () => {\n const map = this.map;\n\n if (!map) return [];\n\n const polygonFeatures: any[] = [];\n const source = map.getSource('custom');\n if (source) {\n const features = map.querySourceFeatures('custom', {\n sourceLayer: 'geojson',\n filter: ['==', ['geometry-type'], 'Polygon']\n });\n\n if (features && features.length > 0) {\n features.forEach(feature => {\n if (\n (feature.geometry.type === 'Polygon' || feature.geometry.type === 'MultiPolygon') &&\n feature.properties.dimension_what === 'what.booth'\n ) {\n polygonFeatures.push({\n id: feature.properties.mapObjectId,\n name: feature.properties?.title || 'Unnamed Polygon',\n coordinates: feature.geometry.coordinates,\n properties: {\n ...feature.properties,\n hasImage: !!Math.round(Math.random())\n }\n });\n }\n });\n }\n }\n\n return polygonFeatures;\n };\n\n addNewLine(input: string): string {\n return input.replace(/ /g, '\\r\\n');\n }\n\n updatePolygons = (features: any[]) => {\n features.map(async (feature: any) => {\n const coordinates = feature.geometry.coordinates;\n // const centroid = feature.properties.center;\n const polygon = turf.polygon(coordinates);\n const centroid = turf.centroid(polygon).geometry.coordinates;\n // const modelPosition = projectToWorld(centroid);\n\n // const vertex1 = projectToWorld(coordinates[0][0]);\n // const vertex2 = projectToWorld(coordinates[0][1]);\n // const angle = vertex1.angleTo(vertex2);\n // console.log(angle);\n\n // await modelLoader.loadModel({\n // modelPath: feature.properties.modelPath,\n // feature,\n // wrapper: wrapper.current!,\n // onProgress: (progress) => {\n // setLoadingProgress((prev) => ({\n // ...prev,\n // [feature.properties.id]: progress,\n // }));\n // },\n // onError: (error) => {\n // console.error(\n // `Failed to load model ${feature.properties.id}:`,\n // error\n // );\n // },\n // });\n\n if (\n !feature.properties.hasImage &&\n feature.properties.dimension_where &&\n feature.properties.dimension_where === 'where.lima.mahsuri_center.exhibition_floor'\n ) {\n const myText = new SpriteText();\n myText.color = 'black';\n let text = feature.properties.title;\n text = this.addNewLine(text);\n\n // Set properties to configure:\n myText.text = text;\n myText.textHeight = 100;\n // myText.textHeight = 1;\n // myText.backgroundColor = '';\n const textPosition = projectToWorld(centroid);\n myText.rotation.x = Math.PI;\n myText.rotation.y = Math.PI;\n myText.scale.set(0.1, 0.1, 0.01);\n\n myText.position.set(\n textPosition.x,\n textPosition.y,\n // feature.properties.height > 0 ? 0.4 : 0.25\n 0.1\n );\n this.threebox.add(myText);\n } else {\n // Load Texture\n // const textureLoader = new THREE.TextureLoader();\n // textureLoader.load('/sk.png', (texture: THREE.Texture) => {\n // // Create a plane geometry and material with the loaded texture\n // const geometry = new THREE.PlaneGeometry(\n // texture.image.width,\n // texture.image.height\n // );\n // geometry.computeBoundingBox();\n // const material = new THREE.MeshStandardMaterial({\n // map: texture,\n // transparent: true, // Enable transparency\n // opacity: 1,\n // });\n // const plane = new THREE.Mesh(geometry, material);\n // const group = new THREE.Group();\n // const childContainer = new THREE.Group();\n // childContainer.add(plane);\n // childContainer.rotateZ(Math.PI / 2);\n // childContainer.rotateZ(1);\n // childContainer.updateMatrixWorld();\n // group.add(childContainer);\n // const geojsonbbox = turf.bbox(polygon);\n // const bbox1 = new THREE.Box3(\n // projectToWorld([geojsonbbox[2], geojsonbbox[3]]),\n // projectToWorld([geojsonbbox[0], geojsonbbox[1]])\n // );\n // const bbox2 = new THREE.Box3().setFromObject(plane);\n // const size1 = new THREE.Vector3();\n // bbox1.getSize(size1);\n // size1.setZ(1);\n // const size2 = new THREE.Vector3();\n // bbox2.getSize(size2);\n // size2.setZ(1);\n // const ratio = size1.divide(size2);\n // const ratioCopy = ratio.clone().multiplyScalar(0.85);\n // plane.scale.set(\n // plane.scale.x * ratioCopy.x,\n // plane.scale.y * ratioCopy.y,\n // plane.scale.z * ratioCopy.z\n // );\n // // // Set the position of the plane to the centroid\n // group.position.set(modelPosition.x, modelPosition.y, 0.11);\n // this.threebox.add(group);\n // });\n }\n });\n };\n\n addLogo = (logo: string, position: THREE.Vector3) => {\n const textureLoader = new THREE.TextureLoader();\n const texture = textureLoader.load(logo);\n\n // Define rectangle dimensions\n const width = 4;\n const height = 0;\n const depth = 2;\n\n // Create a box geometry instead of cylinder\n const geometry = new THREE.BoxGeometry(width, height, depth);\n\n // Create materials: [right, left, top, bottom, front, back]\n const sideMaterial = new THREE.MeshBasicMaterial({ color: new THREE.Color(0xffffff) });\n const topMaterial = new THREE.MeshStandardMaterial({\n map: texture,\n side: THREE.DoubleSide,\n transparent: true\n });\n\n // Create an array of materials for each face of the box\n const materials = [\n sideMaterial, // right\n sideMaterial, // left\n topMaterial, // top (with logo texture)\n sideMaterial, // bottom\n sideMaterial, // front\n sideMaterial // back\n ];\n\n // Create the mesh with geometry and materials\n const logoMesh = new THREE.Mesh(geometry, materials);\n\n // Adjust rotation to match your previous orientation\n logoMesh.rotation.x = Math.PI / 2;\n logoMesh.rotation.y = -Math.PI / 1.45;\n logoMesh.position.set(position.x + 0.5, position.y - 0.3, position.z);\n\n this.threebox.add(logoMesh);\n\n return logoMesh;\n };\n\n // Function to add text using Troika Text library at a specified position\n addTitle = (title: string, position: THREE.Vector3) => {\n // Create a new Text instance\n const textMesh = new Text();\n\n // Configure text properties\n textMesh.text = title;\n textMesh.fontSize = 0.2;\n textMesh.color = 0x000000;\n textMesh.anchorX = '50%';\n textMesh.anchorY = 'bottom-baseline';\n textMesh.fontWeight = 'bold';\n textMesh.textAlign = 'center';\n\n textMesh.position.set(position.x, position.y, position.z);\n textMesh.rotation.z = -Math.PI / 1.45;\n\n // Add text to the scene\n this.threebox.add(textMesh);\n\n // Update the text rendering\n textMesh.sync();\n\n return textMesh;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MainMap.js","names":["CustomThreeJSWrapper","Text","turf","THREE","projectToWorld","SpriteText","MainMap","mainInstance","constructor","metaAtlasCore","init","map2D","map","initThreebox","wrapper","setEnvironment","addLayer","id","type","renderingMode","onAdd","console","log","render","update","threebox","getThreebox","getAllPolygonCoordinates","polygonFeatures","source","getSource","features","querySourceFeatures","sourceLayer","filter","length","forEach","feature","geometry","properties","dimension_what","push","mapObjectId","name","title","coordinates","hasImage","Math","round","random","addNewLine","input","replace","updatePolygons","polygon","centroid","dimension_where","myText","color","text","textHeight","textPosition","rotation","x","PI","y","scale","set","position","add","addLogo","logo","textureLoader","TextureLoader","texture","load","width","height","depth","BoxGeometry","sideMaterial","MeshBasicMaterial","Color","topMaterial","MeshStandardMaterial","side","DoubleSide","transparent","materials","logoMesh","Mesh","z","addTitle","textMesh","fontSize","anchorX","anchorY","fontWeight","textAlign","sync"],"sources":["../../../../src/meta-atlas-sdk/3DMap/MainMap.ts"],"sourcesContent":["import { Map as MaplibreMap } from 'maplibre-gl';\n\nimport CustomThreeJSWrapper from './CustomThreeJsWrapper/CustomThreeJsWrapper';\nimport { Text } from 'troika-three-text';\n\nimport { EquirectangularReflectionMapping } from 'three';\nimport { MetaAtlasCore } from '../MetaAtlasCore/meta-atlas-sdk-core';\nimport * as turf from '@turf/turf';\nimport * as THREE from 'three';\nimport { projectToWorld } from './CustomThreeJsWrapper/utility/utils';\nimport SpriteText from 'three-spritetext';\nimport { HDRLoader } from 'three/examples/jsm/loaders/HDRLoader';\n\nexport default class MainMap {\n public static mainInstance: MainMap | null = null;\n public map!: MaplibreMap;\n public threebox!: CustomThreeJSWrapper;\n public metaAtlasCore!: MetaAtlasCore;\n\n constructor(metaAtlasCore: MetaAtlasCore) {\n if (MainMap.mainInstance) {\n return MainMap.mainInstance;\n }\n\n MainMap.mainInstance = this;\n\n this.metaAtlasCore = metaAtlasCore;\n }\n\n public init(map2D: MaplibreMap) {\n this.map = map2D;\n this.initThreebox();\n }\n\n /**\n * Creates a Threebox instance of the class.\n * @param map Maplibre instance to initialize threebox\n * @returns Threebox class instance created\n */\n private initThreebox() {\n const map = this.map;\n const wrapper = new CustomThreeJSWrapper(map);\n wrapper.setEnvironment();\n // const hdrLoader = new HDRLoader();\n // hdrLoader.load('./golden_gate_hills_1k.hdr', texture => {\n // texture.mapping = EquirectangularReflectionMapping;\n // wrapper.scene.environment = texture;\n // });\n\n map.addLayer({\n id: '3d-model-layer',\n type: 'custom',\n renderingMode: '3d',\n onAdd: () => {\n console.log('onAdd _initThreebox');\n },\n render: () => {\n wrapper.update();\n }\n });\n\n this.threebox = wrapper;\n return wrapper;\n }\n\n /**\n * Get the threebox instance for 3D model operations\n */\n getThreebox() {\n return this.threebox;\n }\n\n getAllPolygonCoordinates = () => {\n const map = this.map;\n\n if (!map) return [];\n\n const polygonFeatures: any[] = [];\n const source = map.getSource('custom');\n if (source) {\n const features = map.querySourceFeatures('custom', {\n sourceLayer: 'geojson',\n filter: ['==', ['geometry-type'], 'Polygon']\n });\n\n if (features && features.length > 0) {\n features.forEach(feature => {\n if (\n (feature.geometry.type === 'Polygon' || feature.geometry.type === 'MultiPolygon') &&\n feature.properties.dimension_what === 'what.booth'\n ) {\n polygonFeatures.push({\n id: feature.properties.mapObjectId,\n name: feature.properties?.title || 'Unnamed Polygon',\n coordinates: feature.geometry.coordinates,\n properties: {\n ...feature.properties,\n hasImage: !!Math.round(Math.random())\n }\n });\n }\n });\n }\n }\n\n return polygonFeatures;\n };\n\n addNewLine(input: string): string {\n return input.replace(/ /g, '\\r\\n');\n }\n\n updatePolygons = (features: any[]) => {\n features.map(async (feature: any) => {\n const coordinates = feature.geometry.coordinates;\n // const centroid = feature.properties.center;\n const polygon = turf.polygon(coordinates);\n const centroid = turf.centroid(polygon).geometry.coordinates;\n // const modelPosition = projectToWorld(centroid);\n\n // const vertex1 = projectToWorld(coordinates[0][0]);\n // const vertex2 = projectToWorld(coordinates[0][1]);\n // const angle = vertex1.angleTo(vertex2);\n // console.log(angle);\n\n // await modelLoader.loadModel({\n // modelPath: feature.properties.modelPath,\n // feature,\n // wrapper: wrapper.current!,\n // onProgress: (progress) => {\n // setLoadingProgress((prev) => ({\n // ...prev,\n // [feature.properties.id]: progress,\n // }));\n // },\n // onError: (error) => {\n // console.error(\n // `Failed to load model ${feature.properties.id}:`,\n // error\n // );\n // },\n // });\n\n if (\n !feature.properties.hasImage &&\n feature.properties.dimension_where &&\n feature.properties.dimension_where === 'where.lima.mahsuri_center.exhibition_floor'\n ) {\n const myText = new SpriteText();\n myText.color = 'black';\n let text = feature.properties.title;\n text = this.addNewLine(text);\n\n // Set properties to configure:\n myText.text = text;\n myText.textHeight = 100;\n // myText.textHeight = 1;\n // myText.backgroundColor = '';\n const textPosition = projectToWorld(centroid);\n myText.rotation.x = Math.PI;\n myText.rotation.y = Math.PI;\n myText.scale.set(0.1, 0.1, 0.01);\n\n myText.position.set(\n textPosition.x,\n textPosition.y,\n // feature.properties.height > 0 ? 0.4 : 0.25\n 0.1\n );\n this.threebox.add(myText);\n } else {\n // Load Texture\n // const textureLoader = new THREE.TextureLoader();\n // textureLoader.load('/sk.png', (texture: THREE.Texture) => {\n // // Create a plane geometry and material with the loaded texture\n // const geometry = new THREE.PlaneGeometry(\n // texture.image.width,\n // texture.image.height\n // );\n // geometry.computeBoundingBox();\n // const material = new THREE.MeshStandardMaterial({\n // map: texture,\n // transparent: true, // Enable transparency\n // opacity: 1,\n // });\n // const plane = new THREE.Mesh(geometry, material);\n // const group = new THREE.Group();\n // const childContainer = new THREE.Group();\n // childContainer.add(plane);\n // childContainer.rotateZ(Math.PI / 2);\n // childContainer.rotateZ(1);\n // childContainer.updateMatrixWorld();\n // group.add(childContainer);\n // const geojsonbbox = turf.bbox(polygon);\n // const bbox1 = new THREE.Box3(\n // projectToWorld([geojsonbbox[2], geojsonbbox[3]]),\n // projectToWorld([geojsonbbox[0], geojsonbbox[1]])\n // );\n // const bbox2 = new THREE.Box3().setFromObject(plane);\n // const size1 = new THREE.Vector3();\n // bbox1.getSize(size1);\n // size1.setZ(1);\n // const size2 = new THREE.Vector3();\n // bbox2.getSize(size2);\n // size2.setZ(1);\n // const ratio = size1.divide(size2);\n // const ratioCopy = ratio.clone().multiplyScalar(0.85);\n // plane.scale.set(\n // plane.scale.x * ratioCopy.x,\n // plane.scale.y * ratioCopy.y,\n // plane.scale.z * ratioCopy.z\n // );\n // // // Set the position of the plane to the centroid\n // group.position.set(modelPosition.x, modelPosition.y, 0.11);\n // this.threebox.add(group);\n // });\n }\n });\n };\n\n addLogo = (logo: string, position: THREE.Vector3) => {\n const textureLoader = new THREE.TextureLoader();\n const texture = textureLoader.load(logo);\n\n // Define rectangle dimensions\n const width = 4;\n const height = 0;\n const depth = 2;\n\n // Create a box geometry instead of cylinder\n const geometry = new THREE.BoxGeometry(width, height, depth);\n\n // Create materials: [right, left, top, bottom, front, back]\n const sideMaterial = new THREE.MeshBasicMaterial({ color: new THREE.Color(0xffffff) });\n const topMaterial = new THREE.MeshStandardMaterial({\n map: texture,\n side: THREE.DoubleSide,\n transparent: true\n });\n\n // Create an array of materials for each face of the box\n const materials = [\n sideMaterial, // right\n sideMaterial, // left\n topMaterial, // top (with logo texture)\n sideMaterial, // bottom\n sideMaterial, // front\n sideMaterial // back\n ];\n\n // Create the mesh with geometry and materials\n const logoMesh = new THREE.Mesh(geometry, materials);\n\n // Adjust rotation to match your previous orientation\n logoMesh.rotation.x = Math.PI / 2;\n logoMesh.rotation.y = -Math.PI / 1.45;\n logoMesh.position.set(position.x + 0.5, position.y - 0.3, position.z);\n\n this.threebox.add(logoMesh);\n\n return logoMesh;\n };\n\n // Function to add text using Troika Text library at a specified position\n addTitle = (title: string, position: THREE.Vector3) => {\n // Create a new Text instance\n const textMesh = new Text();\n\n // Configure text properties\n textMesh.text = title;\n textMesh.fontSize = 0.2;\n textMesh.color = 0x000000;\n textMesh.anchorX = '50%';\n textMesh.anchorY = 'bottom-baseline';\n textMesh.fontWeight = 'bold';\n textMesh.textAlign = 'center';\n\n textMesh.position.set(position.x, position.y, position.z);\n textMesh.rotation.z = -Math.PI / 1.45;\n\n // Add text to the scene\n this.threebox.add(textMesh);\n\n // Update the text rendering\n textMesh.sync();\n\n return textMesh;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
- import { decryptFile } from '../utils/helpers';
3
- import useRouteDataStore from '../utils/routing-store';
4
- import useMapObjectsDataStore from '../utils/mapobjects-store';
2
+ import { decryptFile } from "../utils/helpers.js";
3
+ import useRouteDataStore from "../utils/routing-store.js";
4
+ import useMapObjectsDataStore from "../utils/mapobjects-store.js";
5
5
  export let PublishedDataType = /*#__PURE__*/function (PublishedDataType) {
6
6
  PublishedDataType["Routing"] = "routing";
7
7
  PublishedDataType["MapObjects"] = "mapObjects";
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-published-json.js","names":["axios","decryptFile","useRouteDataStore","useMapObjectsDataStore","PublishedDataType","Status","getDataType","publishedDataType","Routing","MapObjects","getLocalStorageKey","param","valueOf","setRouteData","setState","setMapObjectsData","getRunTimeStore","getPublishedData","serverAPIInfo","localStorage","localStorageVersionKey","status","Awaiting","setRunTimeStoreData","fetchInfo","currentVersion","contains","getString","Promise","resolve","reject","url","URL","headers","Authorization","accessToken","method","data","JSON","stringify","version","dataType","then","response","remoteData","publishedDataInfo","undefined","remoteVersion","localVersion","hasOwnProperty","currentData","tag","downloadUrl","DownloadingResources","console","log","catch","error","request","message","config","storeFileToLocalStorage","set","e","loadFileFromStore","decryptedJson","secretKey","Ready","onError","loaded","Unavailable","clearAll","info","fetch","ok","Error","responseData","json","storedSuccessfully"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.ts"],"sourcesContent":["import axios from 'axios';\n\nimport { LocalStorage } from '../utils/local-storage';\nimport { decryptFile } from '../utils/helpers';\nimport useRouteDataStore from '../utils/routing-store';\nimport useMapObjectsDataStore from '../utils/mapobjects-store';\n\nexport enum PublishedDataType {\n Routing = 'routing',\n MapObjects = 'mapObjects',\n}\n\nexport enum Status {\n Ready = 'Ready',\n Awaiting = 'Awaiting',\n DownloadingResources = 'DownloadingResources',\n Unavailable = 'Unavailable',\n}\n\nexport type StatusUpdateCallbackType = (loaded: boolean) => void;\n\nexport interface ServerAPIInfo {\n URL: string;\n accessToken: string;\n secretKey: string;\n publishedDataType: PublishedDataType;\n}\n\nexport interface PublishedDataInfo {\n currentVersion: string | undefined;\n remoteVersion: string | undefined;\n URL: string | undefined;\n data: string | undefined;\n}\n\nfunction getDataType(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return 'generate-route-json-per-role';\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return 'generate-map-objects-per-role';\n }\n}\n\nfunction getLocalStorageKey(\n param: string,\n publishedDataType: PublishedDataType,\n): string {\n return publishedDataType.valueOf() + param;\n}\n\nconst setRouteData = useRouteDataStore.setState;\nconst setMapObjectsData = useMapObjectsDataStore.setState;\n\nfunction getRunTimeStore(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return setRouteData;\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return setMapObjectsData;\n }\n}\n\nexport async function getPublishedData(\n serverAPIInfo: ServerAPIInfo,\n localStorage: LocalStorage,\n) {\n const publishedDataType = serverAPIInfo.publishedDataType;\n const localStorageVersionKey = getLocalStorageKey(\n 'version',\n publishedDataType,\n );\n let status: Status = Status.Awaiting;\n let setRunTimeStoreData = getRunTimeStore(publishedDataType);\n\n const fetchInfo = async () => {\n const currentVersion = localStorage.contains(localStorageVersionKey)\n ? localStorage.getString(localStorageVersionKey)\n : '0.0.0';\n return new Promise(\n (resolve: (routingInfo: PublishedDataInfo) => void, reject) => {\n axios({\n url: `${serverAPIInfo.URL}/check-published-versions`,\n headers: {\n Authorization: `Bearer ${serverAPIInfo.accessToken}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n data: JSON.stringify({\n version: currentVersion,\n dataType: getDataType(serverAPIInfo.publishedDataType),\n }),\n })\n .then(response => {\n const remoteData = response.data;\n\n const publishedDataInfo = {\n currentVersion: undefined,\n remoteVersion: undefined,\n URL: undefined,\n data: undefined,\n } as PublishedDataInfo;\n const localVersion = localStorage.getString(localStorageVersionKey);\n let remoteVersion = localVersion;\n if (remoteData.hasOwnProperty('version')) {\n remoteVersion = remoteData.version;\n }\n\n publishedDataInfo.currentVersion = localVersion;\n publishedDataInfo.remoteVersion = remoteVersion;\n if (localVersion) {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n\n // Check both because data is useless without tag\n if (tag && currentData) {\n publishedDataInfo.data = currentData;\n }\n }\n if (remoteVersion) {\n if (remoteData.hasOwnProperty('downloadUrl')) {\n publishedDataInfo.URL = remoteData.downloadUrl;\n }\n if (\n (localVersion && remoteVersion > localVersion) ||\n !localVersion ||\n !publishedDataInfo.data\n ) {\n status = publishedDataInfo.URL\n ? Status.DownloadingResources\n : status;\n }\n }\n\n console.log(\n 'final: ',\n publishedDataInfo.URL,\n publishedDataInfo.currentVersion,\n publishedDataInfo.remoteVersion,\n );\n resolve(publishedDataInfo);\n })\n .catch(function (error) {\n console.log('error while fetching published version: ');\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(error.response.data);\n console.log(error.response.status);\n console.log(error.response.headers);\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(error.request);\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log('Error', error.message);\n }\n console.log(error.config);\n reject(error);\n });\n },\n );\n };\n\n const storeFileToLocalStorage = (data: any, version: any, tag: any) => {\n try {\n localStorage.set(getLocalStorageKey('data', publishedDataType), data);\n localStorage.set(localStorageVersionKey, version);\n localStorage.set(\n getLocalStorageKey('encryptionTag', publishedDataType),\n tag,\n );\n return true;\n } catch (e) {\n console.log('error storing routing file from local storage', e);\n return false;\n }\n };\n\n const loadFileFromStore = () => {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n if (currentData && tag) {\n const decryptedJson = decryptFile(currentData, tag, serverAPIInfo.secretKey);\n // JSON.parse(storage.getString('routeData')\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n return true;\n } else {\n return false;\n }\n };\n\n const onError = () => {\n try {\n const loaded = loadFileFromStore();\n if (!loaded) {\n console.log('failed to load data');\n status = Status.Unavailable;\n }\n } catch (error) {\n console.log('erro while loading data');\n status = Status.Unavailable;\n localStorage.clearAll();\n }\n };\n\n try {\n const info = await fetchInfo();\n // @ts-ignore\n if (status === Status.DownloadingResources && info.URL) {\n // download\n console.log('downloading from server');\n try {\n // Fetch encrypted data from the server\n // This is the API call for getting map-objects.json\n const response = await fetch(info.URL);\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const responseData = await response.json();\n // const responseData = JSON.parse(fileContent);\n const {data, tag} = responseData;\n\n const decryptedJson = await decryptFile(data, tag, serverAPIInfo.secretKey);\n const storedSuccessfully = storeFileToLocalStorage(\n data,\n info.remoteVersion,\n tag,\n );\n if (storedSuccessfully) {\n console.log('loaded file');\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n }\n } catch (error) {\n console.error('Error fetching and decrypting data:', error);\n onError();\n }\n } else {\n const tag = localStorage.getString('encryptionTag');\n // set to store\n if (info.data && tag) {\n console.log('loaded local file');\n const decryptedJson = decryptFile(info.data, tag, serverAPIInfo.secretKey);\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n } else {\n onError();\n }\n }\n } catch (error) {\n onError();\n }\n\n return status;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fetch-published-json.js","names":["axios","decryptFile","useRouteDataStore","useMapObjectsDataStore","PublishedDataType","Status","getDataType","publishedDataType","Routing","MapObjects","getLocalStorageKey","param","valueOf","setRouteData","setState","setMapObjectsData","getRunTimeStore","getPublishedData","serverAPIInfo","localStorage","localStorageVersionKey","status","Awaiting","setRunTimeStoreData","fetchInfo","currentVersion","contains","getString","Promise","resolve","reject","url","URL","headers","Authorization","accessToken","method","data","JSON","stringify","version","dataType","then","response","remoteData","publishedDataInfo","undefined","remoteVersion","localVersion","hasOwnProperty","currentData","tag","downloadUrl","DownloadingResources","console","log","catch","error","request","message","config","storeFileToLocalStorage","set","e","loadFileFromStore","decryptedJson","secretKey","Ready","onError","loaded","Unavailable","clearAll","info","fetch","ok","Error","responseData","json","storedSuccessfully"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.ts"],"sourcesContent":["import axios from 'axios';\n\nimport { LocalStorage } from '../utils/local-storage';\nimport { decryptFile } from '../utils/helpers';\nimport useRouteDataStore from '../utils/routing-store';\nimport useMapObjectsDataStore from '../utils/mapobjects-store';\n\nexport enum PublishedDataType {\n Routing = 'routing',\n MapObjects = 'mapObjects',\n}\n\nexport enum Status {\n Ready = 'Ready',\n Awaiting = 'Awaiting',\n DownloadingResources = 'DownloadingResources',\n Unavailable = 'Unavailable',\n}\n\nexport type StatusUpdateCallbackType = (loaded: boolean) => void;\n\nexport interface ServerAPIInfo {\n URL: string;\n accessToken: string;\n secretKey: string;\n publishedDataType: PublishedDataType;\n}\n\nexport interface PublishedDataInfo {\n currentVersion: string | undefined;\n remoteVersion: string | undefined;\n URL: string | undefined;\n data: string | undefined;\n}\n\nfunction getDataType(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return 'generate-route-json-per-role';\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return 'generate-map-objects-per-role';\n }\n}\n\nfunction getLocalStorageKey(\n param: string,\n publishedDataType: PublishedDataType,\n): string {\n return publishedDataType.valueOf() + param;\n}\n\nconst setRouteData = useRouteDataStore.setState;\nconst setMapObjectsData = useMapObjectsDataStore.setState;\n\nfunction getRunTimeStore(publishedDataType: PublishedDataType) {\n if (publishedDataType === PublishedDataType.Routing) {\n return setRouteData;\n }\n if (publishedDataType === PublishedDataType.MapObjects) {\n return setMapObjectsData;\n }\n}\n\nexport async function getPublishedData(\n serverAPIInfo: ServerAPIInfo,\n localStorage: LocalStorage,\n) {\n const publishedDataType = serverAPIInfo.publishedDataType;\n const localStorageVersionKey = getLocalStorageKey(\n 'version',\n publishedDataType,\n );\n let status: Status = Status.Awaiting;\n let setRunTimeStoreData = getRunTimeStore(publishedDataType);\n\n const fetchInfo = async () => {\n const currentVersion = localStorage.contains(localStorageVersionKey)\n ? localStorage.getString(localStorageVersionKey)\n : '0.0.0';\n return new Promise(\n (resolve: (routingInfo: PublishedDataInfo) => void, reject) => {\n axios({\n url: `${serverAPIInfo.URL}/check-published-versions`,\n headers: {\n Authorization: `Bearer ${serverAPIInfo.accessToken}`,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n data: JSON.stringify({\n version: currentVersion,\n dataType: getDataType(serverAPIInfo.publishedDataType),\n }),\n })\n .then(response => {\n const remoteData = response.data;\n\n const publishedDataInfo = {\n currentVersion: undefined,\n remoteVersion: undefined,\n URL: undefined,\n data: undefined,\n } as PublishedDataInfo;\n const localVersion = localStorage.getString(localStorageVersionKey);\n let remoteVersion = localVersion;\n if (remoteData.hasOwnProperty('version')) {\n remoteVersion = remoteData.version;\n }\n\n publishedDataInfo.currentVersion = localVersion;\n publishedDataInfo.remoteVersion = remoteVersion;\n if (localVersion) {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n\n // Check both because data is useless without tag\n if (tag && currentData) {\n publishedDataInfo.data = currentData;\n }\n }\n if (remoteVersion) {\n if (remoteData.hasOwnProperty('downloadUrl')) {\n publishedDataInfo.URL = remoteData.downloadUrl;\n }\n if (\n (localVersion && remoteVersion > localVersion) ||\n !localVersion ||\n !publishedDataInfo.data\n ) {\n status = publishedDataInfo.URL\n ? Status.DownloadingResources\n : status;\n }\n }\n\n console.log(\n 'final: ',\n publishedDataInfo.URL,\n publishedDataInfo.currentVersion,\n publishedDataInfo.remoteVersion,\n );\n resolve(publishedDataInfo);\n })\n .catch(function (error) {\n console.log('error while fetching published version: ');\n if (error.response) {\n // The request was made and the server responded with a status code\n // that falls out of the range of 2xx\n console.log(error.response.data);\n console.log(error.response.status);\n console.log(error.response.headers);\n } else if (error.request) {\n // The request was made but no response was received\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\n // http.ClientRequest in node.js\n console.log(error.request);\n } else {\n // Something happened in setting up the request that triggered an Error\n console.log('Error', error.message);\n }\n console.log(error.config);\n reject(error);\n });\n },\n );\n };\n\n const storeFileToLocalStorage = (data: any, version: any, tag: any) => {\n try {\n localStorage.set(getLocalStorageKey('data', publishedDataType), data);\n localStorage.set(localStorageVersionKey, version);\n localStorage.set(\n getLocalStorageKey('encryptionTag', publishedDataType),\n tag,\n );\n return true;\n } catch (e) {\n console.log('error storing routing file from local storage', e);\n return false;\n }\n };\n\n const loadFileFromStore = () => {\n const currentData = localStorage.getString(\n getLocalStorageKey('data', publishedDataType),\n );\n const tag = localStorage.getString(\n getLocalStorageKey('encryptionTag', publishedDataType),\n );\n if (currentData && tag) {\n const decryptedJson = decryptFile(currentData, tag, serverAPIInfo.secretKey);\n // JSON.parse(storage.getString('routeData')\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n return true;\n } else {\n return false;\n }\n };\n\n const onError = () => {\n try {\n const loaded = loadFileFromStore();\n if (!loaded) {\n console.log('failed to load data');\n status = Status.Unavailable;\n }\n } catch (error) {\n console.log('erro while loading data');\n status = Status.Unavailable;\n localStorage.clearAll();\n }\n };\n\n try {\n const info = await fetchInfo();\n // @ts-ignore\n if (status === Status.DownloadingResources && info.URL) {\n // download\n console.log('downloading from server');\n try {\n // Fetch encrypted data from the server\n // This is the API call for getting map-objects.json\n const response = await fetch(info.URL);\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const responseData = await response.json();\n // const responseData = JSON.parse(fileContent);\n const {data, tag} = responseData;\n\n const decryptedJson = await decryptFile(data, tag, serverAPIInfo.secretKey);\n const storedSuccessfully = storeFileToLocalStorage(\n data,\n info.remoteVersion,\n tag,\n );\n if (storedSuccessfully) {\n console.log('loaded file');\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n }\n } catch (error) {\n console.error('Error fetching and decrypting data:', error);\n onError();\n }\n } else {\n const tag = localStorage.getString('encryptionTag');\n // set to store\n if (info.data && tag) {\n console.log('loaded local file');\n const decryptedJson = decryptFile(info.data, tag, serverAPIInfo.secretKey);\n setRunTimeStoreData({data: decryptedJson});\n status = Status.Ready;\n } else {\n onError();\n }\n }\n } catch (error) {\n onError();\n }\n\n return status;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { cloneDeep } from 'lodash';
2
- import { LineDirection, RouteDimension } from './routing-core/interfaces';
3
- import useRouteDataStore from '../utils/routing-store';
2
+ import { LineDirection, RouteDimension } from "./routing-core/interfaces.js";
3
+ import useRouteDataStore from "../utils/routing-store.js";
4
4
  import nearestPointOnLine from '@turf/nearest-point-on-line';
5
5
  import distance from '@turf/distance';
6
6
  import { lineString, cleanCoords } from '@turf/turf';
@@ -52,7 +52,8 @@ export function getEdgeData(mapObjectId) {
52
52
  return edge;
53
53
  }
54
54
  }
55
- export function getRouteNetworkData(whereDimension, includeChildren = true) {
55
+ export function getRouteNetworkData(whereDimension) {
56
+ let includeChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
56
57
  const routeData = useRouteDataStore.getState().data;
57
58
  if (!routeData.hasOwnProperty(RouteDimension.Network)) {
58
59
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"fetchMapObjectsData.js","names":["cloneDeep","LineDirection","RouteDimension","useRouteDataStore","nearestPointOnLine","distance","lineString","cleanCoords","getEdgeData","mapObjectId","routeData","getState","data","hasOwnProperty","Edge","edges","undefined","routeNetworkData","getRouteNetworkData","whereDimension","length","console","error","minDistance","Infinity","closestPoint","closestLine","map","lineFeature","cleanedFeature","nearestPoint","sourceCoords","dist","geometry","coordinates","linesCoords","lineProps","title","zone","properties","wheelchair","direction","TwoWay","dimension_where","lines","edge","id","name","coords","where","what","includeChildren","Network","completeRouteNetworkData","whereDimensionRouteNetworkData","index","feature","includes","push","getPortalLinks","edgeData","portalEdgeData","portal","getPortalDataForIds","mapObjectIds","filteredEdgeData","Object","keys","filter","key","reduce","obj","getImmigrationDataForTaxonomy1","taxonomy1Path"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.ts"],"sourcesContent":["import { cloneDeep } from 'lodash';\nimport {Edge, LineDirection, RouteDimension, UserPosition} from './routing-core/interfaces';\nimport useRouteDataStore from '../utils/routing-store';\nimport nearestPointOnLine from '@turf/nearest-point-on-line';\nimport distance from '@turf/distance';\nimport { lineString, cleanCoords } from '@turf/turf';\n\nexport function getEdgeData(mapObjectId: string | UserPosition) {\n const routeData = useRouteDataStore.getState().data;\n\n if(typeof(mapObjectId) === 'string'){\n if (\n !mapObjectId ||\n !routeData.hasOwnProperty(RouteDimension.Edge) ||\n !routeData[RouteDimension.Edge].edges.hasOwnProperty(mapObjectId)\n ) {\n return undefined;\n }\n \n return cloneDeep(routeData[RouteDimension.Edge].edges[mapObjectId]);\n }\n else {\n const routeNetworkData = getRouteNetworkData(mapObjectId.whereDimension);\n if(routeNetworkData.length < 1){\n console.error('RouteNetworkData is empty');\n return null;\n }\n let minDistance = Infinity;\n let closestPoint;\n let closestLine;\n routeNetworkData.map((lineFeature)=>{\n const cleanedFeature = cleanCoords(lineFeature);\n const nearestPoint = nearestPointOnLine(cleanedFeature, mapObjectId.sourceCoords);\n const dist = distance(nearestPoint.geometry.coordinates, mapObjectId.sourceCoords);\n if(dist < minDistance){\n minDistance = dist;\n closestPoint = nearestPoint;\n closestLine = lineFeature;\n }\n })\n const linesCoords = [mapObjectId.sourceCoords, closestPoint.geometry.coordinates];\n const lineProps = {\n title: 'user_edgeLine',\n zone: closestLine.properties.zone,\n wheelchair: 1,\n direction: LineDirection.TwoWay,\n dimension_where: mapObjectId.whereDimension\n };\n const lines = [lineString(linesCoords, lineProps)];\n const edge: Edge = {\n id: 'user_position',\n name: 'Custom Position',\n coords: mapObjectId.sourceCoords,\n lines: lines,\n where: mapObjectId.whereDimension,\n what: '',\n zone: closestLine.properties.zone\n };\n routeData[RouteDimension.Edge][edge.id] = edge;\n return edge;\n }\n}\n\n\nexport function getRouteNetworkData(whereDimension: string, includeChildren = true) {\n const routeData = useRouteDataStore.getState().data;\n if (!routeData.hasOwnProperty(RouteDimension.Network)) {\n return [];\n }\n\n const completeRouteNetworkData = routeData[RouteDimension.Network];\n const whereDimensionRouteNetworkData = [];\n for (let index = 0; index < completeRouteNetworkData.length; index++) {\n const feature = completeRouteNetworkData[index];\n if (feature && feature.properties && feature.properties.dimension_where) {\n if (includeChildren) {\n if (feature.properties.dimension_where.includes(whereDimension)) {\n whereDimensionRouteNetworkData.push(feature);\n }\n }\n else {\n if (feature.properties.dimension_where === (whereDimension)) {\n whereDimensionRouteNetworkData.push(feature);\n }\n }\n }\n }\n\n return cloneDeep(whereDimensionRouteNetworkData);\n}\n\n// NOTE: whereDimension is unused at the moment, as we are fetching the whole portal data at once on the algorithm side now.\nexport function getPortalLinks(whereDimension: string) {\n const routeData = useRouteDataStore.getState().data;\n if (!routeData.hasOwnProperty('portal')) {\n return {\n edgeData: {},\n lines: []\n };\n }\n\n const portalEdgeData = routeData.portal;\n return portalEdgeData;\n}\n\nexport function getPortalDataForIds(mapObjectIds: string[]) {\n const routeData = useRouteDataStore.getState().data;\n if (!routeData.hasOwnProperty('portal')) {\n return {};\n }\n\n const portalEdgeData = routeData.portal;\n\n // PortalEdgeData will include information for both anchor and non-anchor lifts, so filter to keep only required data\n const filteredEdgeData = Object.keys(portalEdgeData.edgeData)\n .filter((key) => mapObjectIds.includes(key))\n .reduce((obj: any, key) => {\n obj[key] = portalEdgeData.edgeData[key];\n return obj;\n }, {});\n\n return {\n edgeData: filteredEdgeData,\n lines: portalEdgeData.lines,\n };\n}\n\nexport function getImmigrationDataForTaxonomy1(taxonomy1Path: string) {\n const routeData = useRouteDataStore.getState().data;\n if (\n !taxonomy1Path ||\n !routeData.hasOwnProperty('what.service.immigration') ||\n !routeData['what.service.immigration'].hasOwnProperty(taxonomy1Path)\n ) {\n return [];\n }\n return routeData['what.service.immigration'][taxonomy1Path];\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fetchMapObjectsData.js","names":["cloneDeep","LineDirection","RouteDimension","useRouteDataStore","nearestPointOnLine","distance","lineString","cleanCoords","getEdgeData","mapObjectId","routeData","getState","data","hasOwnProperty","Edge","edges","undefined","routeNetworkData","getRouteNetworkData","whereDimension","length","console","error","minDistance","Infinity","closestPoint","closestLine","map","lineFeature","cleanedFeature","nearestPoint","sourceCoords","dist","geometry","coordinates","linesCoords","lineProps","title","zone","properties","wheelchair","direction","TwoWay","dimension_where","lines","edge","id","name","coords","where","what","includeChildren","arguments","Network","completeRouteNetworkData","whereDimensionRouteNetworkData","index","feature","includes","push","getPortalLinks","edgeData","portalEdgeData","portal","getPortalDataForIds","mapObjectIds","filteredEdgeData","Object","keys","filter","key","reduce","obj","getImmigrationDataForTaxonomy1","taxonomy1Path"],"sources":["../../../../src/meta-atlas-sdk/MetaAtlasCore/fetchMapObjectsData.ts"],"sourcesContent":["import { cloneDeep } from 'lodash';\nimport {Edge, LineDirection, RouteDimension, UserPosition} from './routing-core/interfaces';\nimport useRouteDataStore from '../utils/routing-store';\nimport nearestPointOnLine from '@turf/nearest-point-on-line';\nimport distance from '@turf/distance';\nimport { lineString, cleanCoords } from '@turf/turf';\n\nexport function getEdgeData(mapObjectId: string | UserPosition) {\n const routeData = useRouteDataStore.getState().data;\n\n if(typeof(mapObjectId) === 'string'){\n if (\n !mapObjectId ||\n !routeData.hasOwnProperty(RouteDimension.Edge) ||\n !routeData[RouteDimension.Edge].edges.hasOwnProperty(mapObjectId)\n ) {\n return undefined;\n }\n \n return cloneDeep(routeData[RouteDimension.Edge].edges[mapObjectId]);\n }\n else {\n const routeNetworkData = getRouteNetworkData(mapObjectId.whereDimension);\n if(routeNetworkData.length < 1){\n console.error('RouteNetworkData is empty');\n return null;\n }\n let minDistance = Infinity;\n let closestPoint;\n let closestLine;\n routeNetworkData.map((lineFeature)=>{\n const cleanedFeature = cleanCoords(lineFeature);\n const nearestPoint = nearestPointOnLine(cleanedFeature, mapObjectId.sourceCoords);\n const dist = distance(nearestPoint.geometry.coordinates, mapObjectId.sourceCoords);\n if(dist < minDistance){\n minDistance = dist;\n closestPoint = nearestPoint;\n closestLine = lineFeature;\n }\n })\n const linesCoords = [mapObjectId.sourceCoords, closestPoint.geometry.coordinates];\n const lineProps = {\n title: 'user_edgeLine',\n zone: closestLine.properties.zone,\n wheelchair: 1,\n direction: LineDirection.TwoWay,\n dimension_where: mapObjectId.whereDimension\n };\n const lines = [lineString(linesCoords, lineProps)];\n const edge: Edge = {\n id: 'user_position',\n name: 'Custom Position',\n coords: mapObjectId.sourceCoords,\n lines: lines,\n where: mapObjectId.whereDimension,\n what: '',\n zone: closestLine.properties.zone\n };\n routeData[RouteDimension.Edge][edge.id] = edge;\n return edge;\n }\n}\n\n\nexport function getRouteNetworkData(whereDimension: string, includeChildren = true) {\n const routeData = useRouteDataStore.getState().data;\n if (!routeData.hasOwnProperty(RouteDimension.Network)) {\n return [];\n }\n\n const completeRouteNetworkData = routeData[RouteDimension.Network];\n const whereDimensionRouteNetworkData = [];\n for (let index = 0; index < completeRouteNetworkData.length; index++) {\n const feature = completeRouteNetworkData[index];\n if (feature && feature.properties && feature.properties.dimension_where) {\n if (includeChildren) {\n if (feature.properties.dimension_where.includes(whereDimension)) {\n whereDimensionRouteNetworkData.push(feature);\n }\n }\n else {\n if (feature.properties.dimension_where === (whereDimension)) {\n whereDimensionRouteNetworkData.push(feature);\n }\n }\n }\n }\n\n return cloneDeep(whereDimensionRouteNetworkData);\n}\n\n// NOTE: whereDimension is unused at the moment, as we are fetching the whole portal data at once on the algorithm side now.\nexport function getPortalLinks(whereDimension: string) {\n const routeData = useRouteDataStore.getState().data;\n if (!routeData.hasOwnProperty('portal')) {\n return {\n edgeData: {},\n lines: []\n };\n }\n\n const portalEdgeData = routeData.portal;\n return portalEdgeData;\n}\n\nexport function getPortalDataForIds(mapObjectIds: string[]) {\n const routeData = useRouteDataStore.getState().data;\n if (!routeData.hasOwnProperty('portal')) {\n return {};\n }\n\n const portalEdgeData = routeData.portal;\n\n // PortalEdgeData will include information for both anchor and non-anchor lifts, so filter to keep only required data\n const filteredEdgeData = Object.keys(portalEdgeData.edgeData)\n .filter((key) => mapObjectIds.includes(key))\n .reduce((obj: any, key) => {\n obj[key] = portalEdgeData.edgeData[key];\n return obj;\n }, {});\n\n return {\n edgeData: filteredEdgeData,\n lines: portalEdgeData.lines,\n };\n}\n\nexport function getImmigrationDataForTaxonomy1(taxonomy1Path: string) {\n const routeData = useRouteDataStore.getState().data;\n if (\n !taxonomy1Path ||\n !routeData.hasOwnProperty('what.service.immigration') ||\n !routeData['what.service.immigration'].hasOwnProperty(taxonomy1Path)\n ) {\n return [];\n }\n return routeData['what.service.immigration'][taxonomy1Path];\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,11 +6,9 @@ import center from '@turf/center';
6
6
  import lineSliceAlong from '@turf/line-slice-along';
7
7
  import booleanPointInPolygon from '@turf/boolean-point-in-polygon';
8
8
  import axios from 'axios';
9
- import { LocalStorage } from '../utils/local-storage';
10
- import { PublishedDataType, Status, getPublishedData } from './fetch-published-json';
11
- import useMapObjectsDataStore from '../utils/mapobjects-store';
12
-
13
- // Type for clicked features that includes both metaFeature data and raw click event
9
+ import { LocalStorage } from "../utils/local-storage.js";
10
+ import { PublishedDataType, Status, getPublishedData } from "./fetch-published-json.js";
11
+ import useMapObjectsDataStore from "../utils/mapobjects-store.js"; // Type for clicked features that includes both metaFeature data and raw click event
14
12
  var SortType = /*#__PURE__*/function (SortType) {
15
13
  SortType["Name"] = "Name";
16
14
  SortType["WhereDimension"] = "WhereDimension";
@@ -36,9 +34,9 @@ export class MetaAtlasCore {
36
34
 
37
35
  // For Routing & Search
38
36
  secretKeyForDecryption = '';
39
- routingStatus = Status.Awaiting;
40
- searchStatus = Status.Awaiting;
41
- storage = new LocalStorage();
37
+ routingStatus = (() => Status.Awaiting)();
38
+ searchStatus = (() => Status.Awaiting)();
39
+ storage = (() => new LocalStorage())();
42
40
  constructor() {
43
41
  this.lastClicked = {
44
42
  mapObjectId: null,
@@ -342,7 +340,8 @@ export class MetaAtlasCore {
342
340
  return splitstr[splitstr.length - 1];
343
341
  }
344
342
  }
345
- getFlyToLocation(whereTaxonomyPath, isMobile = true) {
343
+ getFlyToLocation(whereTaxonomyPath) {
344
+ let isMobile = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
346
345
  let location = this.getLocationNameFromWhereTaxonomyPath(whereTaxonomyPath);
347
346
  const getConfigForNode = node => {
348
347
  const cameraConfigs = isMobile ? node.mobile : node.web;
@@ -621,7 +620,8 @@ export class MetaAtlasCore {
621
620
  normalize(string) {
622
621
  return string.trim().toLowerCase();
623
622
  }
624
- relevanceSort(metaFeatures, query, isStrict = false) {
623
+ relevanceSort(metaFeatures, query) {
624
+ let isStrict = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
625
625
  function score(metaFeature) {
626
626
  const noMatch = [-1, 0, metaFeature.name];
627
627
  if (metaFeature.name) {
@@ -660,7 +660,8 @@ export class MetaAtlasCore {
660
660
  return scoreB[0] - scoreA[0] || scoreB[1] - scoreA[1] || scoreA[2].localeCompare(scoreB[2]);
661
661
  }).filter(s => score(s)[0] >= 0);
662
662
  }
663
- sort(metaFeatures, sortType, query = '') {
663
+ sort(metaFeatures, sortType) {
664
+ let query = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
664
665
  const compare = (a, b) => {
665
666
  if (!a || !b) {
666
667
  return 0;
@@ -743,7 +744,10 @@ export class MetaAtlasCore {
743
744
  onSearchStatusUpdateCallback(status === Status.Ready ? true : false);
744
745
  }
745
746
  }
746
- getMapObjectsByFilteredLocalRef(boothId, searchSubString = false, sortType, onResponseCallback) {
747
+ getMapObjectsByFilteredLocalRef(boothId) {
748
+ let searchSubString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
749
+ let sortType = arguments.length > 2 ? arguments[2] : undefined;
750
+ let onResponseCallback = arguments.length > 3 ? arguments[3] : undefined;
747
751
  const uniqueIds = new Set();
748
752
  const metaFeatures = [];
749
753
  const boothIdToSearch = this.normalize(String(boothId));
@@ -774,7 +778,10 @@ export class MetaAtlasCore {
774
778
  const sortedFeatures = this.sort(metaFeatures, sortType, boothId);
775
779
  onResponseCallback(sortedFeatures);
776
780
  }
777
- getMapObjectsByName(name, searchSubString = false, sortType, onResponseCallback) {
781
+ getMapObjectsByName(name) {
782
+ let searchSubString = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
783
+ let sortType = arguments.length > 2 ? arguments[2] : undefined;
784
+ let onResponseCallback = arguments.length > 3 ? arguments[3] : undefined;
778
785
  const uniqueIds = new Set();
779
786
  const metaFeatures = [];
780
787
  const nameToSearch = this.normalize(String(name));
@@ -998,7 +1005,8 @@ export class MetaAtlasCore {
998
1005
  }
999
1006
  onResponseCallback(metaFeatures);
1000
1007
  }
1001
- getMapObjectsApi(query = '') {
1008
+ getMapObjectsApi() {
1009
+ let query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
1002
1010
  return new Promise((resolve, reject) => {
1003
1011
  axios({
1004
1012
  url: `${this.empApi}/map-objects${query}`,