@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":"index.js","names":["_lodash","require","_maplibreGl","_interopRequireDefault","_helpers","_length","_nearestPointOnLine","_turf","_interopRequireWildcard","turf","_transformTranslate","_interfaces","_routingHelpers","_routeLayers","_routingStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Symbol","iterator","constructor","prototype","_regeneratorValues","next","isNaN","length","value","done","TypeError","_regenerator","toStringTag","c","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","displayName","w","m","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_createForOfIteratorHelper","Array","isArray","_unsupportedIterableToArray","_n","F","s","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_arrayLikeToArray","toString","slice","name","from","test","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_defineProperty","_toPrimitive","toPrimitive","String","Number","RoutingVisualizer","exports","sdk","_this","type","features","to","routeFeature","cloneDeep","animateRouteSegmentFeatureCollection","currentTime","Date","now","elapsed","animationStartTime","writeToSource","feature","coords","geometry","coordinates","routeSource","map","getSource","animateRouteSourceName","setData","animationDuration","progress","fullRoute","end","currentEnd","customProgress","prevsum","actsum","distance","point","or","actRoute","concat","animationFrameID","requestAnimationFrame","animateHighlightedRouteSegment","resetRouteSegmentAnimation","main","getCurrentFocus","filterWhereDimension","dimension","focusTo","setupRouting","addSource","routeSourceName","data","patchFeatureCollection","_iterator","routeLayers","_step","layer","source","addLayer","err","_iterator2","routeAnimateLayers","_step2","_computeRoute","_callee","startMapObjectId","endMapObjectId","wheelChairAccessibleRouting","shouldAddOverviewSegment","indexOffset","generatedRoute","_args","_context","undefined","currentPatchNumber","createRoute","console","log","generateInstructions","segments","computeRoute","_x","_x2","handleAllRouteUpdate","allSegments","userPosition","segmentIndex","featureLineStringToUpdate","filter","lineStringToUpdate","lineString","subLine","nearestPoint","nearestPointOnLine","sourceCoords","unshift","coordsToUpdate","index","properties","coordsToKeep","featureIndex","_computeRoutes","_callee2","mapObjectIds","_this2","wheelChairAccessibleRouteOnly","mergedRoute","dummySegment","_loop","overviewSegment","_args3","_context3","warn","walkingDistance","transportDistance","walkingTime","transportTime","distanceUnit","DISTANCE_UNIT","speed","WALK_SPEED","push","id","routeData","_point","feats","segmentOverview","j","segment","_context2","useRouteDataStore","getState","project","queryRenderedFeatures","RouteDimension","Edge","mapObjectId","edgeData","lines","maneuverType","ManeuverType","SectionOverview","instructions","startEdge","endEdge","generateOverviewSegment","computeRoutes","_x3","updateRouteSource","updatedFeatureCollection","updateAnimateRouteSource","setActiveRoute","route","getActiveRoute","cancelAnimationFrame","updateFeaturesToAnimate","segmentNumber","whereDimensionForFeatures","routeSegment","lineFeaturesOfSegment","getLineStringFeaturesOfRouteSegment","ls","nearest","toDist","location","highlightRouteSegment","segmentNumberToHighlight","updateFilters","highlightedSegmentNumber","segmentWhereDimension","ExitPortal","Static","whereDimension","routeFeaturesToUse","segmentPatchNumber","patchNumber","featureCollectionToDraw","getFeaturesForPatch","includeOverviewFeatures","isOverviewSegment","patchNumberForOverviewFeatures","updatedFeatures","getStartCoords","canvas","getCanvas","clientWidth","h","clientHeight","fitBoundsConfig","padding","top","bottom","left","right","duration","bearing","getBearing","pitch","getPitch","currentPatchFeatures","getPatch","startCoords","sw","maplibregl","LngLat","ne","llb","LngLatBounds","element","extend","_iterator3","_step3","coord","fitBounds","transformedFeatures","turfPoint","forwardTransformed","transformTranslate","reverseTransformed","bbox","clearRoute"],"sources":["../../../../../src/meta-atlas-sdk/utils/routing-visualizer/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash';\nimport maplibregl, { Feature, Map } from 'maplibre-gl';\nimport {\n Units, point as turfPoint,\n point,\n} from '@turf/helpers';\nimport length from '@turf/length';\nimport { nearestPointOnLine } from \"@turf/nearest-point-on-line\";\n// import { distance } from \"@turf/distance\";\nimport * as turf from '@turf/turf';\nimport { transformTranslate } from \"@turf/transform-translate\";\nimport { FeatureCollection } from 'geojson';\nimport { DISTANCE_UNIT, WALK_SPEED, RouteDimension, UserPosition } from '../../MetaAtlasCore/routing-core/interfaces';\nimport {\n ManeuverType, Route, RouteSegment, createRoute, generateInstructions, generateOverviewSegment, getFeaturesForPatch, getLineStringFeaturesOfRouteSegment, getPatch, highlightRouteSegment,\n isOverviewSegment,\n} from '../../MetaAtlasCore/routing-core/routing-helpers';\nimport { routeAnimateLayers, routeLayers } from '../../MetaAtlasCore/routing-core/routeLayers';\nimport { lineString } from '@turf/turf';\nimport useRouteDataStore from '../routing-store';\n\nexport class RoutingVisualizer {\n map: Map;\n\n // Routing\n routeSourceName = 'routeGeojson';\n\n patchFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection;\n\n route: Route | null;\n\n highlightedSegmentNumber = -1;\n\n currentPatchNumber = -1;\n\n // Routing animation\n animateRouteSourceName = 'routeAnimateGeojson';\n\n animationFrameID = -1;\n\n animateRouteSegmentFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection;\n\n animationStartTime = 0;\n\n end = {\n from: 0,\n to: 0,\n };\n\n main: any;\n\n constructor(sdk: any) {\n this.main = sdk\n }\n\n // MetaAtlasCore To Editor\n // eslint-disable-next-line class-methods-use-this\n getCurrentFocus() {\n return this.main.getCurrentFocus();\n }\n\n // eslint-disable-next-line class-methods-use-this\n filterWhereDimension(dimension: string) {\n this.main.focusTo(dimension, false);\n }\n\n // Routing\n setupRouting(map: Map) {\n this.map = map;\n this.map.addSource(this.routeSourceName, {\n type: 'geojson',\n data: this.patchFeatureCollection,\n });\n\n for (const layer of routeLayers) {\n (layer as any).source = this.routeSourceName;\n this.map.addLayer(layer as any);\n }\n\n // Animation data\n this.map.addSource(this.animateRouteSourceName, {\n type: 'geojson',\n data: this.animateRouteSegmentFeatureCollection,\n });\n\n for (const layer of routeAnimateLayers) {\n (layer as any).source = this.animateRouteSourceName;\n this.map.addLayer(layer as any);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n async computeRoute(\n startMapObjectId: string,\n endMapObjectId: string,\n wheelChairAccessibleRouting = false,\n shouldAddOverviewSegment = true,\n indexOffset = 0, // offset for patch and segment numbers calculation\n ): Promise<Route> {\n this.currentPatchNumber = -1;\n\n const generatedRoute = await createRoute(\n startMapObjectId,\n endMapObjectId,\n wheelChairAccessibleRouting,\n shouldAddOverviewSegment,\n indexOffset,\n );\n\n console.log('internal generated: ', generatedRoute);\n\n // Generate textual instructions\n generateInstructions(generatedRoute);\n console.log(generatedRoute.segments);\n\n return generatedRoute;\n }\n\n handleAllRouteUpdate(allSegments: any, userPosition: UserPosition, segmentIndex) {\n // Get the LineString Feature of the route\n const featureLineStringToUpdate = allSegments[segmentIndex].features.filter(\n f => f.geometry.type === 'LineString'\n )[0];\n\n // Create a LineString with the coordinates of the route that would be updated accordingly\n const lineStringToUpdate = lineString(featureLineStringToUpdate.geometry.coordinates.slice(1));\n\n // Create a subset of LineString that contains the first two coords of the route which actually represent the route edge\n const subLine = lineString([\n featureLineStringToUpdate.geometry.coordinates[0],\n featureLineStringToUpdate.geometry.coordinates[1]\n ]);\n\n // Find the nearest point to the user position on the sub line and update the LineString.\n const nearestPoint = nearestPointOnLine(subLine, userPosition.sourceCoords);\n lineStringToUpdate.geometry.coordinates.unshift(userPosition.sourceCoords, nearestPoint.geometry.coordinates);\n const coordsToUpdate = lineStringToUpdate.geometry.coordinates;\n const index = nearestPoint.properties.index;\n const coordsToKeep = coordsToUpdate.slice(index);\n lineStringToUpdate.geometry.coordinates = coordsToKeep;\n lineStringToUpdate.geometry.coordinates.unshift(userPosition.sourceCoords);\n lineStringToUpdate.properties = featureLineStringToUpdate.properties;\n let featureIndex = -1;\n allSegments[segmentIndex].features.map((f, i) => {\n if (f.geometry.type === 'LineString') {\n featureIndex = i;\n }\n });\n\n // Update the new LineString in the route\n allSegments[segmentIndex].features[featureIndex] = lineStringToUpdate;\n allSegments[segmentIndex].coordinates = lineStringToUpdate.geometry.coordinates;\n }\n\n async computeRoutes(mapObjectIds: string[], wheelChairAccessibleRouteOnly = false): Promise<Route | undefined> {\n if (mapObjectIds.length < 2) {\n console.warn('Invalid array passed to computeRoutes');\n return undefined;\n }\n\n console.log('calling computeRoutes with mapObjectIds: ', mapObjectIds);\n\n const mergedRoute = {\n segments: [] as RouteSegment[],\n walkingDistance: 0,\n transportDistance: 0,\n walkingTime: 0,\n transportTime: 0,\n\n distanceUnit: DISTANCE_UNIT as Units,\n speed: WALK_SPEED,\n } as Route;\n\n // Dummy segment for overview segment\n const dummySegment = {};\n mergedRoute.segments.push(dummySegment as any);\n let indexOffset = 1; // Index set to 1, since overview segment will be added to 0th index\n\n for (let index = 0; index < mapObjectIds.length - 1; index += 1) {\n let startMapObjectId = mapObjectIds[index];\n const endMapObjectId = mapObjectIds[index + 1];\n\n const shouldAddOverviewSegment = true; // include overview segment in first route\n\n const id = mapObjectIds[0] as unknown as UserPosition;\n if (typeof mapObjectIds[0] !== 'string') {\n // Run queryRenderedFeatures.\n const routeData = useRouteDataStore.getState().data;\n const point = this.map.project([id.sourceCoords[0], id.sourceCoords[1]]);\n const feats = this.map.queryRenderedFeatures(point);\n feats.map(f => {\n if (routeData[RouteDimension.Edge].hasOwnProperty(f.properties.mapObjectId)) {\n const edgeData = routeData[RouteDimension.Edge][f.properties.mapObjectId];\n if (edgeData.lines.length > 0) {\n startMapObjectId = f.properties.mapObjectId;\n }\n }\n });\n }\n\n // eslint-disable-next-line no-await-in-loop\n const generatedRoute = await this.computeRoute(startMapObjectId, endMapObjectId, wheelChairAccessibleRouteOnly, shouldAddOverviewSegment, indexOffset);\n const allSegments = generatedRoute.segments;\n // if (typeof mapObjectIds[index] !== 'string' && typeof startMapObjectId === 'string') {\n // //Handle SectionOverview:\n // this.handleAllRouteUpdate(allSegments, id as UserPosition, 0);\n\n // // Handle the second segment.\n // const secondSegmentFeatures = generatedRoute.segments[1].features;\n // if (secondSegmentFeatures.length < 3 && secondSegmentFeatures[0].geometry.type === 'Point') {\n // secondSegmentFeatures[0].geometry.coordinates = id.sourceCoords;\n // allSegments[1].coordinates = id.sourceCoords as any;\n // } else {\n // this.handleAllRouteUpdate(allSegments, id as UserPosition, 1);\n // }\n\n // // Handle third segment\n // const thirdSegmentFeatures = generatedRoute.segments[2].features;\n // if (thirdSegmentFeatures.length < 3 && thirdSegmentFeatures.geometry.type === 'Point') {\n // allSegments[1].features[0].geometry.coordinates = id.sourceCoords;\n // allSegments[1].coordinates = id.sourceCoords as any;\n // } else {\n // this.handleAllRouteUpdate(allSegments, id as UserPosition, 2);\n // }\n // }\n \n if (generatedRoute.segments.length > 0) {\n const segmentOverview = generatedRoute.segments[0];\n segmentOverview.maneuverType = ManeuverType.SectionOverview;\n segmentOverview.instructions = [`${segmentOverview.startEdge.name} to ${segmentOverview.endEdge.name}`];\n }\n for (let j = 0; j < generatedRoute.segments.length; j += 1) {\n const segment = generatedRoute.segments[j];\n mergedRoute.segments.push(segment);\n }\n mergedRoute.walkingDistance += generatedRoute.walkingDistance;\n mergedRoute.transportDistance += generatedRoute.transportDistance;\n mergedRoute.walkingTime += generatedRoute.walkingTime;\n mergedRoute.transportTime += generatedRoute.transportTime;\n\n // Increment by segment count\n indexOffset += generatedRoute.segments.length;\n }\n\n if (mergedRoute.segments.length > 1) { // Use 1 here because 1 dummy segment will always be included\n const overviewSegment = generateOverviewSegment(mergedRoute);\n mergedRoute.segments[0] = overviewSegment;\n } else {\n mergedRoute.segments.length = 0; // Remove dummy segment\n }\n\n console.log('merged route: ', mergedRoute);\n\n return mergedRoute;\n }\n\n updateRouteSource(updatedFeatureCollection: FeatureCollection) {\n if (!this.map) return false;\n this.patchFeatureCollection = updatedFeatureCollection;\n const routeSource = (this.map.getSource(this.routeSourceName) as maplibregl.GeoJSONSource);\n if (routeSource) routeSource.setData(updatedFeatureCollection);\n\n return true;\n }\n\n updateAnimateRouteSource(updatedFeatureCollection: FeatureCollection) {\n if (!this.map) return false;\n this.animateRouteSegmentFeatureCollection = updatedFeatureCollection;\n const routeSource = (this.map.getSource(this.animateRouteSourceName) as maplibregl.GeoJSONSource);\n if (routeSource) routeSource.setData(updatedFeatureCollection);\n\n return true;\n }\n\n setActiveRoute(route: Route) {\n this.route = route;\n }\n\n getActiveRoute(): Route | null {\n return this.route;\n }\n\n resetRouteSegmentAnimation() {\n this.animationStartTime = Date.now();\n cancelAnimationFrame(this.animationFrameID);\n if (this.animateRouteSegmentFeatureCollection.features.length > 0) {\n const routeFeature = this.animateRouteSegmentFeatureCollection.features[0] as unknown as Feature;\n //@ts-ignore\n if (routeFeature.geometry.type === 'LineString') this.animateHighlightedRouteSegment();\n }\n }\n\n animateHighlightedRouteSegment = () => {\n const routeFeature = cloneDeep(this.animateRouteSegmentFeatureCollection.features[0]) as Feature;\n if (routeFeature) {\n const currentTime = Date.now();\n const elapsed = currentTime - this.animationStartTime;\n\n const writeToSource = (feature: Feature, coords: []) => {\n //@ts-ignore\n feature.geometry.coordinates = coords;\n const routeSource = (this.map.getSource(this.animateRouteSourceName) as maplibregl.GeoJSONSource);\n if (routeSource) {\n //@ts-ignore\n routeSource.setData({\n type: 'FeatureCollection',\n features: [feature],\n } as FeatureCollection);\n }\n };\n const animationDuration = 2000;\n if (elapsed < animationDuration) {\n const progress = 1 - elapsed / animationDuration;\n\n //@ts-ignore\n const fullRoute = routeFeature.geometry.coordinates;\n const { end } = this;\n\n let currentEnd;\n if (progress > 0.5) {\n const customProgress = 2 * (progress - 0.5); // map 0.5 - 1 to 0 - 1 range\n currentEnd = end.from * (1.0 - customProgress) + customProgress * end.to;\n } else {\n const customProgress = progress * 2; // map 0 - 0.5 to 0 - 1 range\n currentEnd = end.from * (1.0 - customProgress) + customProgress * end.to;\n }\n\n // calculate distance along the line using current animation percentage\n // percentage travels 1 - 0\n let prevsum = 0;\n let actsum = 0;\n let i = fullRoute.length - 1;\n while (actsum < currentEnd && i > 0) {\n prevsum = actsum;\n actsum += turf.distance(point(fullRoute[i]), point(fullRoute[i - 1]));\n i -= 1;\n }\n if (progress > 0.5) {\n // Reverse animation\n // if (actsum <= currentEnd) {\n // const actRoute = [\n // ...fullRoute.slice(fullRoute.length - 2, fullRoute.length),\n // ];\n // return {fullRoute, end: {...end, current: currentEnd}, actRoute};\n // }\n\n // Return coordinates from line start to current percentage point\n const r = (currentEnd - prevsum) / (actsum - prevsum);\n const or = 1.0 - r;\n\n const actRoute = [\n ...fullRoute.slice(0, i + 1),\n [\n fullRoute[i][0] * r + fullRoute[i + 1][0] * or,\n fullRoute[i][1] * r + fullRoute[i + 1][1] * or,\n ],\n ];\n\n writeToSource(routeFeature, actRoute as any);\n } else {\n // Forward animation\n if (actsum <= currentEnd) {\n // Return last two points of the line as final result\n const actRoute = [\n ...fullRoute.slice(fullRoute.length - 2, fullRoute.length),\n ];\n\n writeToSource(routeFeature, actRoute as any);\n }\n\n // Return coordinates from line end to current percentage point\n const r = (currentEnd - prevsum) / (actsum - prevsum);\n const or = 1.0 - r;\n\n const actRoute = [\n [\n fullRoute[i][0] * r + fullRoute[i + 1][0] * or,\n fullRoute[i][1] * r + fullRoute[i + 1][1] * or,\n ],\n ...fullRoute.slice(i + 1, fullRoute.length),\n ];\n\n writeToSource(routeFeature, actRoute as any);\n }\n\n this.animationFrameID = requestAnimationFrame(\n this.animateHighlightedRouteSegment,\n );\n } else {\n this.resetRouteSegmentAnimation();\n }\n }\n };\n\n updateFeaturesToAnimate(segmentNumber: number, whereDimensionForFeatures: string) {\n if (this.route && this.route.segments.length > segmentNumber) {\n const routeSegment = this.route.segments[segmentNumber];\n // set features for animated segment source\n if (routeSegment.features.length > 0) {\n const lineFeaturesOfSegment =\n // include where dimension here?\n getLineStringFeaturesOfRouteSegment(\n routeSegment,\n whereDimensionForFeatures,\n );\n\n if (lineFeaturesOfSegment.length > 0) {\n this.updateAnimateRouteSource({\n type: 'FeatureCollection',\n features: lineFeaturesOfSegment,\n } as FeatureCollection);\n\n const ls = lineFeaturesOfSegment[0];\n //@ts-ignore\n const nearest = nearestPointOnLine(ls as any, point(lineFeaturesOfSegment[0].geometry.coordinates[0]));\n const toDist = length(ls) - nearest.properties.location;\n this.end = {\n from: 0,\n to: toDist,\n };\n } else {\n this.updateAnimateRouteSource({\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection);\n }\n\n this.resetRouteSegmentAnimation();\n }\n }\n }\n\n highlightRouteSegment(segmentNumberToHighlight: number, updateFilters = true) {\n const { route } = this;\n if (route && route.segments.length > segmentNumberToHighlight) {\n if (\n route.segments[segmentNumberToHighlight].coordinates.length > 0\n ) {\n this.highlightedSegmentNumber = segmentNumberToHighlight;\n const routeSegment = route.segments[segmentNumberToHighlight];\n\n const segmentWhereDimension = routeSegment.maneuverType === ManeuverType.ExitPortal || routeSegment.maneuverType === ManeuverType.Static\n ? routeSegment.endEdge.whereDimension\n : routeSegment.startEdge.whereDimension;\n let routeFeaturesToUse = this.patchFeatureCollection.features;\n\n // update visible route features if required\n const segmentPatchNumber = (\n routeSegment.features[0].properties as any\n ).patchNumber;\n if (this.currentPatchNumber !== segmentPatchNumber) {\n this.currentPatchNumber = segmentPatchNumber;\n const featureCollectionToDraw = {\n type: 'FeatureCollection',\n features: getFeaturesForPatch(route, segmentPatchNumber, {\n includeOverviewFeatures: isOverviewSegment(routeSegment),\n patchNumberForOverviewFeatures: segmentPatchNumber,\n }),\n } as FeatureCollection;\n\n routeFeaturesToUse = featureCollectionToDraw.features;\n }\n\n if (\n segmentWhereDimension\n && segmentWhereDimension !== this.getCurrentFocus()\n && updateFilters\n ) {\n this.filterWhereDimension(segmentWhereDimension);\n }\n\n // update highlighted route segment\n const updatedFeatures = highlightRouteSegment(\n routeFeaturesToUse as any,\n segmentNumberToHighlight,\n );\n\n this.updateRouteSource({\n type: 'FeatureCollection',\n features: updatedFeatures,\n });\n\n if (!isOverviewSegment(routeSegment)) {\n this.updateFeaturesToAnimate(\n segmentNumberToHighlight,\n segmentWhereDimension,\n );\n } else {\n // clear animation source\n this.updateAnimateRouteSource({\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection);\n }\n\n // animate camera to segment\n if (routeSegment) {\n const getStartCoords = (feature: Feature) => {\n //@ts-ignore\n if (feature.geometry.type === 'Point') {\n //@ts-ignore\n return feature.geometry.coordinates;\n }\n\n //@ts-ignore\n return feature.geometry.coordinates[0];\n };\n\n const canvas = this.map.getCanvas();\n const w = canvas.clientWidth;\n const h = canvas.clientHeight;\n const fitBoundsConfig = {\n padding: {\n top: h * 0.2, bottom: h * 0.2, left: w * 0.2, right: w * 0.2,\n },\n duration: 1000,\n bearing: this.map.getBearing(),\n pitch: this.map.getPitch(),\n };\n if (routeSegment.coordinates.length > 1) {\n const currentPatchFeatures = getPatch(route, routeSegment.patchNumber);\n const startCoords = getStartCoords(currentPatchFeatures[0] as any);\n // let index = 0;\n // for (index = 0; index < currentPatchFeatures.length; index++) {\n // const element = currentPatchFeatures[index];\n // if (element.properties.segmentNumber === segmentNumberToHighlight) {\n // startCoords = getStartCoords(element);\n // }\n // }\n const sw = new maplibregl.LngLat(startCoords[0], startCoords[1]);\n const ne = new maplibregl.LngLat(startCoords[0], startCoords[1]);\n const llb = new maplibregl.LngLatBounds(sw, ne);\n for (let index = 0; index < currentPatchFeatures.length; index++) {\n const element = currentPatchFeatures[index];\n if (element.geometry.type === 'Point') {\n llb.extend(element.geometry.coordinates as any);\n } else {\n //@ts-ignore\n for (const coord of element.geometry.coordinates) {\n llb.extend(coord);\n }\n }\n }\n\n this.map.fitBounds(\n llb,\n fitBoundsConfig,\n );\n } else {\n // Translate the point slightly to get another point which can used for the fitBounds function.\n const transformedFeatures = {\n type: 'FeatureCollection',\n features: [turfPoint(routeSegment.coordinates[0])],\n } as FeatureCollection;\n const forwardTransformed = transformTranslate(\n transformedFeatures as any,\n 0.025,\n 3,\n ).features[0].geometry.coordinates;\n\n const reverseTransformed = transformTranslate(\n transformedFeatures as any,\n -0.025,\n -3,\n ).features[0].geometry.coordinates;\n\n const bbox = [reverseTransformed, forwardTransformed];\n this.map.fitBounds(\n bbox as any,\n fitBoundsConfig,\n );\n }\n }\n } else {\n console.log('at vertical portal segment, ignoring!');\n }\n\n console.log(route.segments[segmentNumberToHighlight].instructions);\n } else {\n console.warn(\n 'Invalid segment number passed to highlightRouteSegment',\n );\n }\n }\n\n clearRoute() {\n const featureCollectionToDraw = {\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection;\n\n this.updateRouteSource(featureCollectionToDraw);\n this.updateAnimateRouteSource(featureCollectionToDraw);\n this.route = null;\n cancelAnimationFrame(this.animationFrameID);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_lodash","require","_maplibreGl","_interopRequireDefault","_helpers","_length","_nearestPointOnLine","_turf","_interopRequireWildcard","turf","_transformTranslate","_interfaces","_routingHelpers","_routeLayers","_routingStore","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","RoutingVisualizer","routeSourceName","patchFeatureCollection","type","features","highlightedSegmentNumber","currentPatchNumber","animateRouteSourceName","animationFrameID","animateRouteSegmentFeatureCollection","animationStartTime","end","from","to","constructor","sdk","main","getCurrentFocus","filterWhereDimension","dimension","focusTo","setupRouting","map","addSource","data","layer","routeLayers","source","addLayer","routeAnimateLayers","computeRoute","startMapObjectId","endMapObjectId","wheelChairAccessibleRouting","arguments","length","undefined","shouldAddOverviewSegment","indexOffset","generatedRoute","createRoute","console","log","generateInstructions","segments","handleAllRouteUpdate","allSegments","userPosition","segmentIndex","featureLineStringToUpdate","filter","geometry","lineStringToUpdate","lineString","coordinates","slice","subLine","nearestPoint","nearestPointOnLine","sourceCoords","unshift","coordsToUpdate","index","properties","coordsToKeep","featureIndex","computeRoutes","mapObjectIds","wheelChairAccessibleRouteOnly","warn","mergedRoute","walkingDistance","transportDistance","walkingTime","transportTime","distanceUnit","DISTANCE_UNIT","speed","WALK_SPEED","dummySegment","push","id","routeData","useRouteDataStore","getState","point","project","feats","queryRenderedFeatures","RouteDimension","Edge","mapObjectId","edgeData","lines","segmentOverview","maneuverType","ManeuverType","SectionOverview","instructions","startEdge","name","endEdge","j","segment","overviewSegment","generateOverviewSegment","updateRouteSource","updatedFeatureCollection","routeSource","getSource","setData","updateAnimateRouteSource","setActiveRoute","route","getActiveRoute","resetRouteSegmentAnimation","Date","now","cancelAnimationFrame","routeFeature","animateHighlightedRouteSegment","cloneDeep","currentTime","elapsed","writeToSource","feature","coords","animationDuration","progress","fullRoute","currentEnd","customProgress","prevsum","actsum","distance","or","actRoute","requestAnimationFrame","updateFeaturesToAnimate","segmentNumber","whereDimensionForFeatures","routeSegment","lineFeaturesOfSegment","getLineStringFeaturesOfRouteSegment","ls","nearest","toDist","location","highlightRouteSegment","segmentNumberToHighlight","updateFilters","segmentWhereDimension","ExitPortal","Static","whereDimension","routeFeaturesToUse","segmentPatchNumber","patchNumber","featureCollectionToDraw","getFeaturesForPatch","includeOverviewFeatures","isOverviewSegment","patchNumberForOverviewFeatures","updatedFeatures","getStartCoords","canvas","getCanvas","w","clientWidth","h","clientHeight","fitBoundsConfig","padding","top","bottom","left","right","duration","bearing","getBearing","pitch","getPitch","currentPatchFeatures","getPatch","startCoords","sw","maplibregl","LngLat","ne","llb","LngLatBounds","element","extend","coord","fitBounds","transformedFeatures","turfPoint","forwardTransformed","transformTranslate","reverseTransformed","bbox","clearRoute","exports"],"sources":["../../../../../src/meta-atlas-sdk/utils/routing-visualizer/index.ts"],"sourcesContent":["import { cloneDeep } from 'lodash';\nimport maplibregl, { Feature, Map } from 'maplibre-gl';\nimport {\n Units, point as turfPoint,\n point,\n} from '@turf/helpers';\nimport length from '@turf/length';\nimport { nearestPointOnLine } from \"@turf/nearest-point-on-line\";\n// import { distance } from \"@turf/distance\";\nimport * as turf from '@turf/turf';\nimport { transformTranslate } from \"@turf/transform-translate\";\nimport { FeatureCollection } from 'geojson';\nimport { DISTANCE_UNIT, WALK_SPEED, RouteDimension, UserPosition } from '../../MetaAtlasCore/routing-core/interfaces';\nimport {\n ManeuverType, Route, RouteSegment, createRoute, generateInstructions, generateOverviewSegment, getFeaturesForPatch, getLineStringFeaturesOfRouteSegment, getPatch, highlightRouteSegment,\n isOverviewSegment,\n} from '../../MetaAtlasCore/routing-core/routing-helpers';\nimport { routeAnimateLayers, routeLayers } from '../../MetaAtlasCore/routing-core/routeLayers';\nimport { lineString } from '@turf/turf';\nimport useRouteDataStore from '../routing-store';\n\nexport class RoutingVisualizer {\n map: Map;\n\n // Routing\n routeSourceName = 'routeGeojson';\n\n patchFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection;\n\n route: Route | null;\n\n highlightedSegmentNumber = -1;\n\n currentPatchNumber = -1;\n\n // Routing animation\n animateRouteSourceName = 'routeAnimateGeojson';\n\n animationFrameID = -1;\n\n animateRouteSegmentFeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection;\n\n animationStartTime = 0;\n\n end = {\n from: 0,\n to: 0,\n };\n\n main: any;\n\n constructor(sdk: any) {\n this.main = sdk\n }\n\n // MetaAtlasCore To Editor\n // eslint-disable-next-line class-methods-use-this\n getCurrentFocus() {\n return this.main.getCurrentFocus();\n }\n\n // eslint-disable-next-line class-methods-use-this\n filterWhereDimension(dimension: string) {\n this.main.focusTo(dimension, false);\n }\n\n // Routing\n setupRouting(map: Map) {\n this.map = map;\n this.map.addSource(this.routeSourceName, {\n type: 'geojson',\n data: this.patchFeatureCollection,\n });\n\n for (const layer of routeLayers) {\n (layer as any).source = this.routeSourceName;\n this.map.addLayer(layer as any);\n }\n\n // Animation data\n this.map.addSource(this.animateRouteSourceName, {\n type: 'geojson',\n data: this.animateRouteSegmentFeatureCollection,\n });\n\n for (const layer of routeAnimateLayers) {\n (layer as any).source = this.animateRouteSourceName;\n this.map.addLayer(layer as any);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n async computeRoute(\n startMapObjectId: string,\n endMapObjectId: string,\n wheelChairAccessibleRouting = false,\n shouldAddOverviewSegment = true,\n indexOffset = 0, // offset for patch and segment numbers calculation\n ): Promise<Route> {\n this.currentPatchNumber = -1;\n\n const generatedRoute = await createRoute(\n startMapObjectId,\n endMapObjectId,\n wheelChairAccessibleRouting,\n shouldAddOverviewSegment,\n indexOffset,\n );\n\n console.log('internal generated: ', generatedRoute);\n\n // Generate textual instructions\n generateInstructions(generatedRoute);\n console.log(generatedRoute.segments);\n\n return generatedRoute;\n }\n\n handleAllRouteUpdate(allSegments: any, userPosition: UserPosition, segmentIndex) {\n // Get the LineString Feature of the route\n const featureLineStringToUpdate = allSegments[segmentIndex].features.filter(\n f => f.geometry.type === 'LineString'\n )[0];\n\n // Create a LineString with the coordinates of the route that would be updated accordingly\n const lineStringToUpdate = lineString(featureLineStringToUpdate.geometry.coordinates.slice(1));\n\n // Create a subset of LineString that contains the first two coords of the route which actually represent the route edge\n const subLine = lineString([\n featureLineStringToUpdate.geometry.coordinates[0],\n featureLineStringToUpdate.geometry.coordinates[1]\n ]);\n\n // Find the nearest point to the user position on the sub line and update the LineString.\n const nearestPoint = nearestPointOnLine(subLine, userPosition.sourceCoords);\n lineStringToUpdate.geometry.coordinates.unshift(userPosition.sourceCoords, nearestPoint.geometry.coordinates);\n const coordsToUpdate = lineStringToUpdate.geometry.coordinates;\n const index = nearestPoint.properties.index;\n const coordsToKeep = coordsToUpdate.slice(index);\n lineStringToUpdate.geometry.coordinates = coordsToKeep;\n lineStringToUpdate.geometry.coordinates.unshift(userPosition.sourceCoords);\n lineStringToUpdate.properties = featureLineStringToUpdate.properties;\n let featureIndex = -1;\n allSegments[segmentIndex].features.map((f, i) => {\n if (f.geometry.type === 'LineString') {\n featureIndex = i;\n }\n });\n\n // Update the new LineString in the route\n allSegments[segmentIndex].features[featureIndex] = lineStringToUpdate;\n allSegments[segmentIndex].coordinates = lineStringToUpdate.geometry.coordinates;\n }\n\n async computeRoutes(mapObjectIds: string[], wheelChairAccessibleRouteOnly = false): Promise<Route | undefined> {\n if (mapObjectIds.length < 2) {\n console.warn('Invalid array passed to computeRoutes');\n return undefined;\n }\n\n console.log('calling computeRoutes with mapObjectIds: ', mapObjectIds);\n\n const mergedRoute = {\n segments: [] as RouteSegment[],\n walkingDistance: 0,\n transportDistance: 0,\n walkingTime: 0,\n transportTime: 0,\n\n distanceUnit: DISTANCE_UNIT as Units,\n speed: WALK_SPEED,\n } as Route;\n\n // Dummy segment for overview segment\n const dummySegment = {};\n mergedRoute.segments.push(dummySegment as any);\n let indexOffset = 1; // Index set to 1, since overview segment will be added to 0th index\n\n for (let index = 0; index < mapObjectIds.length - 1; index += 1) {\n let startMapObjectId = mapObjectIds[index];\n const endMapObjectId = mapObjectIds[index + 1];\n\n const shouldAddOverviewSegment = true; // include overview segment in first route\n\n const id = mapObjectIds[0] as unknown as UserPosition;\n if (typeof mapObjectIds[0] !== 'string') {\n // Run queryRenderedFeatures.\n const routeData = useRouteDataStore.getState().data;\n const point = this.map.project([id.sourceCoords[0], id.sourceCoords[1]]);\n const feats = this.map.queryRenderedFeatures(point);\n feats.map(f => {\n if (routeData[RouteDimension.Edge].hasOwnProperty(f.properties.mapObjectId)) {\n const edgeData = routeData[RouteDimension.Edge][f.properties.mapObjectId];\n if (edgeData.lines.length > 0) {\n startMapObjectId = f.properties.mapObjectId;\n }\n }\n });\n }\n\n // eslint-disable-next-line no-await-in-loop\n const generatedRoute = await this.computeRoute(startMapObjectId, endMapObjectId, wheelChairAccessibleRouteOnly, shouldAddOverviewSegment, indexOffset);\n const allSegments = generatedRoute.segments;\n // if (typeof mapObjectIds[index] !== 'string' && typeof startMapObjectId === 'string') {\n // //Handle SectionOverview:\n // this.handleAllRouteUpdate(allSegments, id as UserPosition, 0);\n\n // // Handle the second segment.\n // const secondSegmentFeatures = generatedRoute.segments[1].features;\n // if (secondSegmentFeatures.length < 3 && secondSegmentFeatures[0].geometry.type === 'Point') {\n // secondSegmentFeatures[0].geometry.coordinates = id.sourceCoords;\n // allSegments[1].coordinates = id.sourceCoords as any;\n // } else {\n // this.handleAllRouteUpdate(allSegments, id as UserPosition, 1);\n // }\n\n // // Handle third segment\n // const thirdSegmentFeatures = generatedRoute.segments[2].features;\n // if (thirdSegmentFeatures.length < 3 && thirdSegmentFeatures.geometry.type === 'Point') {\n // allSegments[1].features[0].geometry.coordinates = id.sourceCoords;\n // allSegments[1].coordinates = id.sourceCoords as any;\n // } else {\n // this.handleAllRouteUpdate(allSegments, id as UserPosition, 2);\n // }\n // }\n \n if (generatedRoute.segments.length > 0) {\n const segmentOverview = generatedRoute.segments[0];\n segmentOverview.maneuverType = ManeuverType.SectionOverview;\n segmentOverview.instructions = [`${segmentOverview.startEdge.name} to ${segmentOverview.endEdge.name}`];\n }\n for (let j = 0; j < generatedRoute.segments.length; j += 1) {\n const segment = generatedRoute.segments[j];\n mergedRoute.segments.push(segment);\n }\n mergedRoute.walkingDistance += generatedRoute.walkingDistance;\n mergedRoute.transportDistance += generatedRoute.transportDistance;\n mergedRoute.walkingTime += generatedRoute.walkingTime;\n mergedRoute.transportTime += generatedRoute.transportTime;\n\n // Increment by segment count\n indexOffset += generatedRoute.segments.length;\n }\n\n if (mergedRoute.segments.length > 1) { // Use 1 here because 1 dummy segment will always be included\n const overviewSegment = generateOverviewSegment(mergedRoute);\n mergedRoute.segments[0] = overviewSegment;\n } else {\n mergedRoute.segments.length = 0; // Remove dummy segment\n }\n\n console.log('merged route: ', mergedRoute);\n\n return mergedRoute;\n }\n\n updateRouteSource(updatedFeatureCollection: FeatureCollection) {\n if (!this.map) return false;\n this.patchFeatureCollection = updatedFeatureCollection;\n const routeSource = (this.map.getSource(this.routeSourceName) as maplibregl.GeoJSONSource);\n if (routeSource) routeSource.setData(updatedFeatureCollection);\n\n return true;\n }\n\n updateAnimateRouteSource(updatedFeatureCollection: FeatureCollection) {\n if (!this.map) return false;\n this.animateRouteSegmentFeatureCollection = updatedFeatureCollection;\n const routeSource = (this.map.getSource(this.animateRouteSourceName) as maplibregl.GeoJSONSource);\n if (routeSource) routeSource.setData(updatedFeatureCollection);\n\n return true;\n }\n\n setActiveRoute(route: Route) {\n this.route = route;\n }\n\n getActiveRoute(): Route | null {\n return this.route;\n }\n\n resetRouteSegmentAnimation() {\n this.animationStartTime = Date.now();\n cancelAnimationFrame(this.animationFrameID);\n if (this.animateRouteSegmentFeatureCollection.features.length > 0) {\n const routeFeature = this.animateRouteSegmentFeatureCollection.features[0] as unknown as Feature;\n //@ts-ignore\n if (routeFeature.geometry.type === 'LineString') this.animateHighlightedRouteSegment();\n }\n }\n\n animateHighlightedRouteSegment = () => {\n const routeFeature = cloneDeep(this.animateRouteSegmentFeatureCollection.features[0]) as Feature;\n if (routeFeature) {\n const currentTime = Date.now();\n const elapsed = currentTime - this.animationStartTime;\n\n const writeToSource = (feature: Feature, coords: []) => {\n //@ts-ignore\n feature.geometry.coordinates = coords;\n const routeSource = (this.map.getSource(this.animateRouteSourceName) as maplibregl.GeoJSONSource);\n if (routeSource) {\n //@ts-ignore\n routeSource.setData({\n type: 'FeatureCollection',\n features: [feature],\n } as FeatureCollection);\n }\n };\n const animationDuration = 2000;\n if (elapsed < animationDuration) {\n const progress = 1 - elapsed / animationDuration;\n\n //@ts-ignore\n const fullRoute = routeFeature.geometry.coordinates;\n const { end } = this;\n\n let currentEnd;\n if (progress > 0.5) {\n const customProgress = 2 * (progress - 0.5); // map 0.5 - 1 to 0 - 1 range\n currentEnd = end.from * (1.0 - customProgress) + customProgress * end.to;\n } else {\n const customProgress = progress * 2; // map 0 - 0.5 to 0 - 1 range\n currentEnd = end.from * (1.0 - customProgress) + customProgress * end.to;\n }\n\n // calculate distance along the line using current animation percentage\n // percentage travels 1 - 0\n let prevsum = 0;\n let actsum = 0;\n let i = fullRoute.length - 1;\n while (actsum < currentEnd && i > 0) {\n prevsum = actsum;\n actsum += turf.distance(point(fullRoute[i]), point(fullRoute[i - 1]));\n i -= 1;\n }\n if (progress > 0.5) {\n // Reverse animation\n // if (actsum <= currentEnd) {\n // const actRoute = [\n // ...fullRoute.slice(fullRoute.length - 2, fullRoute.length),\n // ];\n // return {fullRoute, end: {...end, current: currentEnd}, actRoute};\n // }\n\n // Return coordinates from line start to current percentage point\n const r = (currentEnd - prevsum) / (actsum - prevsum);\n const or = 1.0 - r;\n\n const actRoute = [\n ...fullRoute.slice(0, i + 1),\n [\n fullRoute[i][0] * r + fullRoute[i + 1][0] * or,\n fullRoute[i][1] * r + fullRoute[i + 1][1] * or,\n ],\n ];\n\n writeToSource(routeFeature, actRoute as any);\n } else {\n // Forward animation\n if (actsum <= currentEnd) {\n // Return last two points of the line as final result\n const actRoute = [\n ...fullRoute.slice(fullRoute.length - 2, fullRoute.length),\n ];\n\n writeToSource(routeFeature, actRoute as any);\n }\n\n // Return coordinates from line end to current percentage point\n const r = (currentEnd - prevsum) / (actsum - prevsum);\n const or = 1.0 - r;\n\n const actRoute = [\n [\n fullRoute[i][0] * r + fullRoute[i + 1][0] * or,\n fullRoute[i][1] * r + fullRoute[i + 1][1] * or,\n ],\n ...fullRoute.slice(i + 1, fullRoute.length),\n ];\n\n writeToSource(routeFeature, actRoute as any);\n }\n\n this.animationFrameID = requestAnimationFrame(\n this.animateHighlightedRouteSegment,\n );\n } else {\n this.resetRouteSegmentAnimation();\n }\n }\n };\n\n updateFeaturesToAnimate(segmentNumber: number, whereDimensionForFeatures: string) {\n if (this.route && this.route.segments.length > segmentNumber) {\n const routeSegment = this.route.segments[segmentNumber];\n // set features for animated segment source\n if (routeSegment.features.length > 0) {\n const lineFeaturesOfSegment =\n // include where dimension here?\n getLineStringFeaturesOfRouteSegment(\n routeSegment,\n whereDimensionForFeatures,\n );\n\n if (lineFeaturesOfSegment.length > 0) {\n this.updateAnimateRouteSource({\n type: 'FeatureCollection',\n features: lineFeaturesOfSegment,\n } as FeatureCollection);\n\n const ls = lineFeaturesOfSegment[0];\n //@ts-ignore\n const nearest = nearestPointOnLine(ls as any, point(lineFeaturesOfSegment[0].geometry.coordinates[0]));\n const toDist = length(ls) - nearest.properties.location;\n this.end = {\n from: 0,\n to: toDist,\n };\n } else {\n this.updateAnimateRouteSource({\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection);\n }\n\n this.resetRouteSegmentAnimation();\n }\n }\n }\n\n highlightRouteSegment(segmentNumberToHighlight: number, updateFilters = true) {\n const { route } = this;\n if (route && route.segments.length > segmentNumberToHighlight) {\n if (\n route.segments[segmentNumberToHighlight].coordinates.length > 0\n ) {\n this.highlightedSegmentNumber = segmentNumberToHighlight;\n const routeSegment = route.segments[segmentNumberToHighlight];\n\n const segmentWhereDimension = routeSegment.maneuverType === ManeuverType.ExitPortal || routeSegment.maneuverType === ManeuverType.Static\n ? routeSegment.endEdge.whereDimension\n : routeSegment.startEdge.whereDimension;\n let routeFeaturesToUse = this.patchFeatureCollection.features;\n\n // update visible route features if required\n const segmentPatchNumber = (\n routeSegment.features[0].properties as any\n ).patchNumber;\n if (this.currentPatchNumber !== segmentPatchNumber) {\n this.currentPatchNumber = segmentPatchNumber;\n const featureCollectionToDraw = {\n type: 'FeatureCollection',\n features: getFeaturesForPatch(route, segmentPatchNumber, {\n includeOverviewFeatures: isOverviewSegment(routeSegment),\n patchNumberForOverviewFeatures: segmentPatchNumber,\n }),\n } as FeatureCollection;\n\n routeFeaturesToUse = featureCollectionToDraw.features;\n }\n\n if (\n segmentWhereDimension\n && segmentWhereDimension !== this.getCurrentFocus()\n && updateFilters\n ) {\n this.filterWhereDimension(segmentWhereDimension);\n }\n\n // update highlighted route segment\n const updatedFeatures = highlightRouteSegment(\n routeFeaturesToUse as any,\n segmentNumberToHighlight,\n );\n\n this.updateRouteSource({\n type: 'FeatureCollection',\n features: updatedFeatures,\n });\n\n if (!isOverviewSegment(routeSegment)) {\n this.updateFeaturesToAnimate(\n segmentNumberToHighlight,\n segmentWhereDimension,\n );\n } else {\n // clear animation source\n this.updateAnimateRouteSource({\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection);\n }\n\n // animate camera to segment\n if (routeSegment) {\n const getStartCoords = (feature: Feature) => {\n //@ts-ignore\n if (feature.geometry.type === 'Point') {\n //@ts-ignore\n return feature.geometry.coordinates;\n }\n\n //@ts-ignore\n return feature.geometry.coordinates[0];\n };\n\n const canvas = this.map.getCanvas();\n const w = canvas.clientWidth;\n const h = canvas.clientHeight;\n const fitBoundsConfig = {\n padding: {\n top: h * 0.2, bottom: h * 0.2, left: w * 0.2, right: w * 0.2,\n },\n duration: 1000,\n bearing: this.map.getBearing(),\n pitch: this.map.getPitch(),\n };\n if (routeSegment.coordinates.length > 1) {\n const currentPatchFeatures = getPatch(route, routeSegment.patchNumber);\n const startCoords = getStartCoords(currentPatchFeatures[0] as any);\n // let index = 0;\n // for (index = 0; index < currentPatchFeatures.length; index++) {\n // const element = currentPatchFeatures[index];\n // if (element.properties.segmentNumber === segmentNumberToHighlight) {\n // startCoords = getStartCoords(element);\n // }\n // }\n const sw = new maplibregl.LngLat(startCoords[0], startCoords[1]);\n const ne = new maplibregl.LngLat(startCoords[0], startCoords[1]);\n const llb = new maplibregl.LngLatBounds(sw, ne);\n for (let index = 0; index < currentPatchFeatures.length; index++) {\n const element = currentPatchFeatures[index];\n if (element.geometry.type === 'Point') {\n llb.extend(element.geometry.coordinates as any);\n } else {\n //@ts-ignore\n for (const coord of element.geometry.coordinates) {\n llb.extend(coord);\n }\n }\n }\n\n this.map.fitBounds(\n llb,\n fitBoundsConfig,\n );\n } else {\n // Translate the point slightly to get another point which can used for the fitBounds function.\n const transformedFeatures = {\n type: 'FeatureCollection',\n features: [turfPoint(routeSegment.coordinates[0])],\n } as FeatureCollection;\n const forwardTransformed = transformTranslate(\n transformedFeatures as any,\n 0.025,\n 3,\n ).features[0].geometry.coordinates;\n\n const reverseTransformed = transformTranslate(\n transformedFeatures as any,\n -0.025,\n -3,\n ).features[0].geometry.coordinates;\n\n const bbox = [reverseTransformed, forwardTransformed];\n this.map.fitBounds(\n bbox as any,\n fitBoundsConfig,\n );\n }\n }\n } else {\n console.log('at vertical portal segment, ignoring!');\n }\n\n console.log(route.segments[segmentNumberToHighlight].instructions);\n } else {\n console.warn(\n 'Invalid segment number passed to highlightRouteSegment',\n );\n }\n }\n\n clearRoute() {\n const featureCollectionToDraw = {\n type: 'FeatureCollection',\n features: [],\n } as FeatureCollection;\n\n this.updateRouteSource(featureCollectionToDraw);\n this.updateAnimateRouteSource(featureCollectionToDraw);\n this.route = null;\n cancelAnimationFrame(this.animationFrameID);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MetaAtlasMap = MetaAtlasMap;
7
+ var _react = require("react");
8
+ var _maplibre = require("react-map-gl/maplibre");
9
+ var _maplibreGl = _interopRequireDefault(require("maplibre-gl"));
10
+ require("maplibre-gl/dist/maplibre-gl.css");
11
+ var _metaAtlasSdk = require("../meta-atlas-sdk/meta-atlas-sdk.js");
12
+ var _useMetaAtlasStore = require("./stores/useMetaAtlasStore.js");
13
+ var _index = require("./hooks/useFocus/index.js");
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ function MetaAtlasMap(_ref) {
17
+ let {
18
+ accessToken,
19
+ secretKey,
20
+ role = 'changipublic',
21
+ onLoad,
22
+ onLoadFail,
23
+ onRoutingStatusUpdate = _loaded => {},
24
+ onSearchStatusUpdate = _loaded => {},
25
+ initialViewState: initialViewStateProp,
26
+ style,
27
+ children
28
+ } = _ref;
29
+ const mapRef = (0, _react.useRef)(null);
30
+
31
+ // Get store state and actions
32
+ const sdk = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.sdk);
33
+ const mapCoreReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.mapCoreReady);
34
+ const setSdk = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.setSdk);
35
+ const setMapCoreReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.setMapCoreReady);
36
+ const setRoutingReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.setRoutingReady);
37
+ const setSearchReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.setSearchReady);
38
+ const setError = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.setError);
39
+
40
+ // Get camera props from focusTree when not provided as prop
41
+ const {
42
+ getRootSiteCameraProps,
43
+ isReady
44
+ } = (0, _index.useFocus)();
45
+
46
+ // Default fallback view state
47
+ const defaultViewState = null;
48
+
49
+ // Compute initialViewState: use prop if provided, otherwise try to get from focusTree
50
+ const initialViewState = (0, _react.useMemo)(() => {
51
+ // If prop is provided, use it
52
+ if (initialViewStateProp) {
53
+ return initialViewStateProp;
54
+ }
55
+
56
+ // Try to get from focusTree root site camera config
57
+ const cameraProps = getRootSiteCameraProps('web');
58
+ if (cameraProps) {
59
+ return {
60
+ longitude: cameraProps.longitude,
61
+ latitude: cameraProps.latitude,
62
+ zoom: cameraProps.zoom,
63
+ bearing: cameraProps.bearing,
64
+ pitch: cameraProps.pitch
65
+ };
66
+ }
67
+
68
+ // Fallback to default
69
+ return defaultViewState;
70
+ }, [initialViewStateProp, isReady, getRootSiteCameraProps]);
71
+
72
+ // Initialize SDK instance
73
+ (0, _react.useEffect)(() => {
74
+ const handleLoad = () => {
75
+ onLoad?.();
76
+ };
77
+ const handleLoadFail = errorMessage => {
78
+ setError(errorMessage);
79
+ setMapCoreReady(false);
80
+ onLoadFail?.(errorMessage);
81
+ };
82
+ const handleRoutingStatusUpdate = isReady => {
83
+ setRoutingReady(isReady);
84
+ onRoutingStatusUpdate?.(isReady);
85
+ };
86
+ const handleSearchStatusUpdate = isReady => {
87
+ setSearchReady(isReady);
88
+ onSearchStatusUpdate?.(isReady);
89
+ };
90
+ const sdkInstance = new _metaAtlasSdk.MetaAtlasSdk(accessToken, secretKey, handleLoad, handleLoadFail, handleRoutingStatusUpdate, handleSearchStatusUpdate);
91
+ setSdk(sdkInstance);
92
+ return () => {
93
+ // Cleanup if needed
94
+ // Note: SDK cleanup logic can be added here if needed
95
+ };
96
+ }, [accessToken, secretKey]);
97
+
98
+ // Attach SDK to map instance when map is ready
99
+ const handleMapLoad = (0, _react.useCallback)(() => {
100
+ if (mapRef.current && sdk && !mapCoreReady) {
101
+ console.log('map load', mapRef.current);
102
+ const mapInstance = mapRef.current.getMap();
103
+
104
+ // Initialize SDK with the map instance
105
+ sdk.setupMap(role, mapInstance);
106
+ setMapCoreReady(true);
107
+ }
108
+ }, [sdk, setMapCoreReady, mapCoreReady]);
109
+
110
+ // Don't render map until initialViewState is available
111
+ if (!initialViewState) {
112
+ return null;
113
+ }
114
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_maplibre.Map, {
115
+ ref: mapRef,
116
+ mapLib: _maplibreGl.default,
117
+ initialViewState: initialViewState,
118
+ onLoad: handleMapLoad,
119
+ style: style || {
120
+ width: '100%',
121
+ height: '100%'
122
+ },
123
+ mapStyle: _metaAtlasSdk.DEFAULT_MAP_STYLE,
124
+ children: children
125
+ });
126
+ }
127
+ //# sourceMappingURL=MetaAtlasMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaAtlasMap.js","names":["_react","require","_maplibre","_maplibreGl","_interopRequireDefault","_metaAtlasSdk","_useMetaAtlasStore","_index","_jsxRuntime","e","__esModule","default","MetaAtlasMap","_ref","accessToken","secretKey","role","onLoad","onLoadFail","onRoutingStatusUpdate","_loaded","onSearchStatusUpdate","initialViewState","initialViewStateProp","style","children","mapRef","useRef","sdk","useMetaAtlasStore","state","mapCoreReady","setSdk","setMapCoreReady","setRoutingReady","setSearchReady","setError","getRootSiteCameraProps","isReady","useFocus","defaultViewState","useMemo","cameraProps","longitude","latitude","zoom","bearing","pitch","useEffect","handleLoad","handleLoadFail","errorMessage","handleRoutingStatusUpdate","handleSearchStatusUpdate","sdkInstance","MetaAtlasSdk","handleMapLoad","useCallback","current","console","log","mapInstance","getMap","setupMap","jsx","Map","ref","mapLib","maplibregl","width","height","mapStyle","DEFAULT_MAP_STYLE"],"sources":["../../../src/react/MetaAtlasMap.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback, useMemo } from 'react';\nimport { Map, MapRef } from 'react-map-gl/maplibre';\nimport maplibregl from 'maplibre-gl';\nimport 'maplibre-gl/dist/maplibre-gl.css';\nimport { MetaAtlasSdk, DEFAULT_MAP_STYLE } from '../meta-atlas-sdk/meta-atlas-sdk';\nimport { useMetaAtlasStore } from './stores/useMetaAtlasStore';\nimport { MetaAtlasMapProps } from './types';\nimport { useFocus } from './hooks/useFocus';\n\nexport function MetaAtlasMap({\n accessToken,\n secretKey,\n role = 'changipublic',\n onLoad,\n onLoadFail,\n onRoutingStatusUpdate = (_loaded: boolean) => {},\n onSearchStatusUpdate = (_loaded: boolean) => {},\n initialViewState: initialViewStateProp,\n style,\n children,\n}: MetaAtlasMapProps) {\n const mapRef = useRef<MapRef>(null);\n \n // Get store state and actions\n const sdk = useMetaAtlasStore((state) => state.sdk);\n const mapCoreReady = useMetaAtlasStore((state) => state.mapCoreReady);\n const setSdk = useMetaAtlasStore((state) => state.setSdk);\n const setMapCoreReady = useMetaAtlasStore((state) => state.setMapCoreReady);\n const setRoutingReady = useMetaAtlasStore((state) => state.setRoutingReady);\n const setSearchReady = useMetaAtlasStore((state) => state.setSearchReady);\n const setError = useMetaAtlasStore((state) => state.setError);\n\n // Get camera props from focusTree when not provided as prop\n const { getRootSiteCameraProps, isReady } = useFocus();\n \n // Default fallback view state\n const defaultViewState = null;\n\n // Compute initialViewState: use prop if provided, otherwise try to get from focusTree\n const initialViewState = useMemo(() => {\n // If prop is provided, use it\n if (initialViewStateProp) {\n return initialViewStateProp;\n }\n \n // Try to get from focusTree root site camera config\n const cameraProps = getRootSiteCameraProps('web');\n if (cameraProps) {\n return {\n longitude: cameraProps.longitude,\n latitude: cameraProps.latitude,\n zoom: cameraProps.zoom,\n bearing: cameraProps.bearing,\n pitch: cameraProps.pitch,\n };\n }\n \n // Fallback to default\n return defaultViewState;\n }, [initialViewStateProp, isReady, getRootSiteCameraProps]);\n\n // Initialize SDK instance\n useEffect(() => {\n const handleLoad = () => {\n onLoad?.();\n };\n\n const handleLoadFail = (errorMessage: string) => {\n setError(errorMessage);\n setMapCoreReady(false);\n onLoadFail?.(errorMessage);\n };\n\n const handleRoutingStatusUpdate = (isReady: boolean) => {\n setRoutingReady(isReady);\n onRoutingStatusUpdate?.(isReady);\n };\n\n const handleSearchStatusUpdate = (isReady: boolean) => {\n setSearchReady(isReady);\n onSearchStatusUpdate?.(isReady);\n };\n\n const sdkInstance = new MetaAtlasSdk(\n accessToken,\n secretKey,\n handleLoad,\n handleLoadFail,\n handleRoutingStatusUpdate,\n handleSearchStatusUpdate\n );\n\n setSdk(sdkInstance);\n\n return () => {\n // Cleanup if needed\n // Note: SDK cleanup logic can be added here if needed\n };\n }, [accessToken, secretKey]);\n\n // Attach SDK to map instance when map is ready\n const handleMapLoad = useCallback(() => {\n if (mapRef.current && sdk && !mapCoreReady) {\n console.log('map load', mapRef.current);\n const mapInstance = mapRef.current.getMap();\n \n // Initialize SDK with the map instance\n sdk.setupMap(role, mapInstance);\n \n setMapCoreReady(true); \n }\n }, [sdk, setMapCoreReady, mapCoreReady]);\n \n // Don't render map until initialViewState is available\n if (!initialViewState) {\n return null;\n }\n\n return (\n <Map\n ref={mapRef}\n mapLib={maplibregl}\n initialViewState={initialViewState}\n onLoad={handleMapLoad}\n style={style || { width: '100%', height: '100%' }}\n mapStyle={DEFAULT_MAP_STYLE}\n >\n {children}\n </Map>\n );\n}\n\n"],"mappings":"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","ignoreList":[]}
@@ -4,26 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useDrawing = useDrawing;
7
- var _useMetaAtlas2 = require("../useMetaAtlas");
8
- var _useMetaAtlasStore = require("../../stores/useMetaAtlasStore");
7
+ var _index = require("../useMetaAtlas/index.js");
8
+ var _useMetaAtlasStore = require("../../stores/useMetaAtlasStore.js");
9
9
  function useDrawing() {
10
- var _useMetaAtlas = (0, _useMetaAtlas2.useMetaAtlas)(),
11
- drawGeometryOnMap = _useMetaAtlas.drawGeometryOnMap,
12
- addDrawingsToBaseMap = _useMetaAtlas.addDrawingsToBaseMap,
13
- editDrawing = _useMetaAtlas.editDrawing,
14
- removeDrawing = _useMetaAtlas.removeDrawing,
15
- getDrawingById = _useMetaAtlas.getDrawingById,
16
- isInDrawMode = _useMetaAtlas.isInDrawMode;
17
- var mapCoreReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(function (state) {
18
- return state.mapCoreReady;
19
- });
10
+ const {
11
+ drawGeometryOnMap,
12
+ addDrawingsToBaseMap,
13
+ editDrawing,
14
+ removeDrawing,
15
+ getDrawingById,
16
+ isInDrawMode
17
+ } = (0, _index.useMetaAtlas)();
18
+ const mapCoreReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.mapCoreReady);
20
19
  return {
21
- drawGeometryOnMap: drawGeometryOnMap,
22
- addDrawingsToBaseMap: addDrawingsToBaseMap,
23
- editDrawing: editDrawing,
24
- removeDrawing: removeDrawing,
25
- getDrawingById: getDrawingById,
26
- isInDrawMode: isInDrawMode,
20
+ drawGeometryOnMap,
21
+ addDrawingsToBaseMap,
22
+ editDrawing,
23
+ removeDrawing,
24
+ getDrawingById,
25
+ isInDrawMode,
27
26
  isReady: mapCoreReady // Use mapCoreReady flag
28
27
  };
29
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_useMetaAtlas2","require","_useMetaAtlasStore","useDrawing","_useMetaAtlas","useMetaAtlas","drawGeometryOnMap","addDrawingsToBaseMap","editDrawing","removeDrawing","getDrawingById","isInDrawMode","mapCoreReady","useMetaAtlasStore","state","isReady"],"sources":["../../../../../src/react/hooks/useDrawing/index.ts"],"sourcesContent":["import { useMetaAtlas } from '../useMetaAtlas';\nimport { useMetaAtlasStore } from '../../stores/useMetaAtlasStore';\nimport { UseDrawingReturn } from './types';\n\nexport function useDrawing(): UseDrawingReturn {\n const { \n drawGeometryOnMap, \n addDrawingsToBaseMap, \n editDrawing, \n removeDrawing, \n getDrawingById, \n isInDrawMode,\n } = useMetaAtlas();\n \n const mapCoreReady = useMetaAtlasStore((state) => state.mapCoreReady);\n\n return {\n drawGeometryOnMap,\n addDrawingsToBaseMap,\n editDrawing,\n removeDrawing,\n getDrawingById,\n isInDrawMode,\n isReady: mapCoreReady, // Use mapCoreReady flag\n };\n}\n\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAGO,SAASE,UAAUA,CAAA,EAAqB;EAC7C,IAAAC,aAAA,GAOI,IAAAC,2BAAY,EAAC,CAAC;IANhBC,iBAAiB,GAAAF,aAAA,CAAjBE,iBAAiB;IACjBC,oBAAoB,GAAAH,aAAA,CAApBG,oBAAoB;IACpBC,WAAW,GAAAJ,aAAA,CAAXI,WAAW;IACXC,aAAa,GAAAL,aAAA,CAAbK,aAAa;IACbC,cAAc,GAAAN,aAAA,CAAdM,cAAc;IACdC,YAAY,GAAAP,aAAA,CAAZO,YAAY;EAGd,IAAMC,YAAY,GAAG,IAAAC,oCAAiB,EAAC,UAACC,KAAK;IAAA,OAAKA,KAAK,CAACF,YAAY;EAAA,EAAC;EAErE,OAAO;IACLN,iBAAiB,EAAjBA,iBAAiB;IACjBC,oBAAoB,EAApBA,oBAAoB;IACpBC,WAAW,EAAXA,WAAW;IACXC,aAAa,EAAbA,aAAa;IACbC,cAAc,EAAdA,cAAc;IACdC,YAAY,EAAZA,YAAY;IACZI,OAAO,EAAEH,YAAY,CAAE;EACzB,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useDrawing","drawGeometryOnMap","addDrawingsToBaseMap","editDrawing","removeDrawing","getDrawingById","isInDrawMode","useMetaAtlas","mapCoreReady","useMetaAtlasStore","state","isReady"],"sources":["../../../../../src/react/hooks/useDrawing/index.ts"],"sourcesContent":["import { useMetaAtlas } from '../useMetaAtlas';\nimport { useMetaAtlasStore } from '../../stores/useMetaAtlasStore';\nimport { UseDrawingReturn } from './types';\n\nexport function useDrawing(): UseDrawingReturn {\n const { \n drawGeometryOnMap, \n addDrawingsToBaseMap, \n editDrawing, \n removeDrawing, \n getDrawingById, \n isInDrawMode,\n } = useMetaAtlas();\n \n const mapCoreReady = useMetaAtlasStore((state) => state.mapCoreReady);\n\n return {\n drawGeometryOnMap,\n addDrawingsToBaseMap,\n editDrawing,\n removeDrawing,\n getDrawingById,\n isInDrawMode,\n isReady: mapCoreReady, // Use mapCoreReady flag\n };\n}\n\n"],"mappings":";;;;;;;;AAIO,SAASA,UAAUA,CAAA,EAAqB;EAC7C,MAAM;IACJC,iBAAiB;IACjBC,oBAAoB;IACpBC,WAAW;IACXC,aAAa;IACbC,cAAc;IACdC;EACF,CAAC,GAAG,IAAAC,mBAAY,EAAC,CAAC;EAElB,MAAMC,YAAY,GAAG,IAAAC,oCAAiB,EAAEC,KAAK,IAAKA,KAAK,CAACF,YAAY,CAAC;EAErE,OAAO;IACLP,iBAAiB;IACjBC,oBAAoB;IACpBC,WAAW;IACXC,aAAa;IACbC,cAAc;IACdC,YAAY;IACZK,OAAO,EAAEH,YAAY,CAAE;EACzB,CAAC;AACH","ignoreList":[]}
@@ -4,41 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useFocus = useFocus;
7
- var _useMetaAtlas2 = require("../useMetaAtlas");
8
- var _useMetaAtlasStore = require("../../stores/useMetaAtlasStore");
7
+ var _index = require("../useMetaAtlas/index.js");
8
+ var _useMetaAtlasStore = require("../../stores/useMetaAtlasStore.js");
9
9
  function useFocus() {
10
- var _useMetaAtlas = (0, _useMetaAtlas2.useMetaAtlas)(),
11
- focusTo = _useMetaAtlas.focusTo,
12
- getCurrentFocus = _useMetaAtlas.getCurrentFocus,
13
- getCurrentFocusBuilding = _useMetaAtlas.getCurrentFocusBuilding,
14
- getCurrentFocusFloor = _useMetaAtlas.getCurrentFocusFloor,
15
- getFocusTree = _useMetaAtlas.getFocusTree;
16
- var mapCoreReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(function (state) {
17
- return state.mapCoreReady;
18
- });
19
- var getBuildingList = function getBuildingList() {
10
+ const {
11
+ focusTo,
12
+ getCurrentFocus,
13
+ getCurrentFocusBuilding,
14
+ getCurrentFocusFloor,
15
+ getFocusTree
16
+ } = (0, _index.useMetaAtlas)();
17
+ const mapCoreReady = (0, _useMetaAtlasStore.useMetaAtlasStore)(state => state.mapCoreReady);
18
+ const getBuildingList = () => {
20
19
  if (!mapCoreReady) {
21
20
  return [];
22
21
  }
23
- var focusTree = getFocusTree();
22
+ const focusTree = getFocusTree();
24
23
  if (!focusTree || !focusTree.site || !focusTree.site.buildings) {
25
24
  return [];
26
25
  }
27
- var buildings = [];
28
- var buildingsObj = focusTree.site.buildings;
26
+ const buildings = [];
27
+ const buildingsObj = focusTree.site.buildings;
29
28
 
30
29
  // Handle both array and object formats
31
30
  if (Array.isArray(buildingsObj)) {
32
- return buildingsObj.map(function (building) {
33
- return {
34
- name: building.name || '',
35
- whereTaxonomy: building.taxonomyPath || ''
36
- };
37
- });
31
+ return buildingsObj.map(building => ({
32
+ name: building.name || '',
33
+ whereTaxonomy: building.taxonomyPath || ''
34
+ }));
38
35
  } else {
39
36
  // Object format (key-value pairs)
40
- for (var key in buildingsObj) {
41
- var building = buildingsObj[key];
37
+ for (const key in buildingsObj) {
38
+ const building = buildingsObj[key];
42
39
  if (building && building.taxonomyPath) {
43
40
  buildings.push({
44
41
  name: building.name || '',
@@ -49,27 +46,25 @@ function useFocus() {
49
46
  }
50
47
  return buildings;
51
48
  };
52
- var getLevelList = function getLevelList(buildingTaxonomy) {
49
+ const getLevelList = buildingTaxonomy => {
53
50
  if (!mapCoreReady) {
54
51
  return [];
55
52
  }
56
- var focusTree = getFocusTree();
53
+ const focusTree = getFocusTree();
57
54
  if (!focusTree || !focusTree.site || !focusTree.site.buildings) {
58
55
  return [];
59
56
  }
60
- var levels = [];
61
- var buildingsObj = focusTree.site.buildings;
57
+ const levels = [];
58
+ const buildingsObj = focusTree.site.buildings;
62
59
 
63
60
  // Find the building by taxonomy path
64
- var targetBuilding = null;
61
+ let targetBuilding = null;
65
62
  if (Array.isArray(buildingsObj)) {
66
- targetBuilding = buildingsObj.find(function (building) {
67
- return building.taxonomyPath === buildingTaxonomy;
68
- });
63
+ targetBuilding = buildingsObj.find(building => building.taxonomyPath === buildingTaxonomy);
69
64
  } else {
70
65
  // Object format (key-value pairs)
71
- for (var key in buildingsObj) {
72
- var building = buildingsObj[key];
66
+ for (const key in buildingsObj) {
67
+ const building = buildingsObj[key];
73
68
  if (building && building.taxonomyPath === buildingTaxonomy) {
74
69
  targetBuilding = building;
75
70
  break;
@@ -79,20 +74,18 @@ function useFocus() {
79
74
  if (!targetBuilding || !targetBuilding.floors) {
80
75
  return [];
81
76
  }
82
- var floorsObj = targetBuilding.floors;
77
+ const floorsObj = targetBuilding.floors;
83
78
 
84
79
  // Handle both array and object formats for floors
85
80
  if (Array.isArray(floorsObj)) {
86
- return floorsObj.map(function (floor) {
87
- return {
88
- name: floor.name || '',
89
- whereTaxonomy: floor.taxonomyPath || ''
90
- };
91
- });
81
+ return floorsObj.map(floor => ({
82
+ name: floor.name || '',
83
+ whereTaxonomy: floor.taxonomyPath || ''
84
+ }));
92
85
  } else {
93
86
  // Object format (key-value pairs)
94
- for (var _key in floorsObj) {
95
- var floor = floorsObj[_key];
87
+ for (const key in floorsObj) {
88
+ const floor = floorsObj[key];
96
89
  if (floor && floor.taxonomyPath) {
97
90
  levels.push({
98
91
  name: floor.name || '',
@@ -103,14 +96,14 @@ function useFocus() {
103
96
  }
104
97
  return levels;
105
98
  };
106
- var getRootSiteCameraProps = function getRootSiteCameraProps() {
107
- var platform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'web';
108
- var focusTree = getFocusTree();
99
+ const getRootSiteCameraProps = function () {
100
+ let platform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'web';
101
+ const focusTree = getFocusTree();
109
102
  if (!focusTree || !focusTree.site || !focusTree.site.cameraConfigs) {
110
103
  return null;
111
104
  }
112
- var cameraConfigs = focusTree.site.cameraConfigs;
113
- var config = cameraConfigs[platform] || cameraConfigs.web || cameraConfigs.mobile;
105
+ const cameraConfigs = focusTree.site.cameraConfigs;
106
+ const config = cameraConfigs[platform] || cameraConfigs.web || cameraConfigs.mobile;
114
107
  if (!config || !config.center || !Array.isArray(config.center) || config.center.length < 2) {
115
108
  return null;
116
109
  }
@@ -123,14 +116,14 @@ function useFocus() {
123
116
  };
124
117
  };
125
118
  return {
126
- focusTo: focusTo,
127
- getCurrentFocus: getCurrentFocus,
128
- getCurrentFocusBuilding: getCurrentFocusBuilding,
129
- getCurrentFocusFloor: getCurrentFocusFloor,
130
- getFocusTree: getFocusTree,
131
- getBuildingList: getBuildingList,
132
- getLevelList: getLevelList,
133
- getRootSiteCameraProps: getRootSiteCameraProps,
119
+ focusTo,
120
+ getCurrentFocus,
121
+ getCurrentFocusBuilding,
122
+ getCurrentFocusFloor,
123
+ getFocusTree,
124
+ getBuildingList,
125
+ getLevelList,
126
+ getRootSiteCameraProps,
134
127
  isReady: mapCoreReady // Use mapCoreReady flag
135
128
  };
136
129
  }