@twinmatrix/spatialverse-sdk-web 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) 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 +40 -41
  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 +170 -196
  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 +861 -1170
  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 +166 -159
  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 +523 -610
  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 +149 -154
  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 +809 -1033
  34. package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
  35. package/lib/cjs/meta-atlas-sdk/utils/helpers.js +32 -49
  36. package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
  37. package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +21 -34
  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 +363 -491
  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 -47
  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 +26 -23
  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 +47 -62
  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 +4 -3
  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 +14 -12
  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 +204 -200
  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 +6 -6
  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 +53 -42
  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 +18 -16
  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 +73 -79
  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 +16 -15
  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 +148 -124
  98. package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
  99. package/lib/esm/meta-atlas-sdk/utils/helpers.js +4 -2
  100. package/lib/esm/meta-atlas-sdk/utils/helpers.js.map +1 -1
  101. package/lib/esm/meta-atlas-sdk/utils/local-storage.js +6 -1
  102. package/lib/esm/meta-atlas-sdk/utils/local-storage.js.map +1 -1
  103. package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js +115 -109
  104. package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
  105. package/lib/esm/react/MetaAtlasMap.js +120 -0
  106. package/lib/esm/react/MetaAtlasMap.js.map +1 -0
  107. package/lib/esm/react/hooks/useDrawing/index.js +2 -2
  108. package/lib/esm/react/hooks/useDrawing/index.js.map +1 -1
  109. package/lib/esm/react/hooks/useFocus/index.js +4 -3
  110. package/lib/esm/react/hooks/useFocus/index.js.map +1 -1
  111. package/lib/esm/react/hooks/useMapEvents/index.js +9 -6
  112. package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
  113. package/lib/esm/react/hooks/useMapOverlays/index.js +2 -2
  114. package/lib/esm/react/hooks/useMapOverlays/index.js.map +1 -1
  115. package/lib/esm/react/hooks/useMetaAtlas/index.js +162 -60
  116. package/lib/esm/react/hooks/useMetaAtlas/index.js.map +1 -1
  117. package/lib/esm/react/hooks/useMetaAtlas.js +162 -60
  118. package/lib/esm/react/hooks/useMetaAtlas.js.map +1 -1
  119. package/lib/esm/react/hooks/useRouting/index.js +2 -2
  120. package/lib/esm/react/hooks/useRouting/index.js.map +1 -1
  121. package/lib/esm/react/hooks/useSearch/index.js +2 -2
  122. package/lib/esm/react/hooks/useSearch/index.js.map +1 -1
  123. package/lib/esm/react/hooks/useStampRally/index.js +15 -12
  124. package/lib/esm/react/hooks/useStampRally/index.js.map +1 -1
  125. package/lib/esm/react/hooks/useStampRally/utils.js +1 -1
  126. package/lib/esm/react/hooks/useStampRally/utils.js.map +1 -1
  127. package/lib/esm/react/index.js +11 -15
  128. package/lib/esm/react/index.js.map +1 -1
  129. package/lib/esm/react/stores/useMapDataStore.js +17 -21
  130. package/lib/esm/react/stores/useMapDataStore.js.map +1 -1
  131. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts +30 -0
  132. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts.map +1 -0
  133. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts +5 -0
  134. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts.map +1 -0
  135. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts +21 -0
  136. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts.map +1 -0
  137. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts +27 -0
  138. package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts.map +1 -0
  139. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts +18 -0
  140. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts.map +1 -0
  141. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts +37 -0
  142. package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts.map +1 -0
  143. package/package.json +10 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["aStar","createGraph","point","multiPoint","turf","cloneDeep","isEmpty","toInteger","LineDirection","RouteDimension","WALK_SPEED","getNetworkFeatures","getEdge","getPortalDataForDimension","isMovingPortalTaxonomy","isPortalTaxonomy","DEFAULT_DIMENSION","filterPortalEdgeDataByList","filterPortalEdgeDataByWhere","getParentDimension","optimized","RoutingCore","wheelChairAccessibleRouteOnly","startNode","endNode","changeZoneCheckEnabled","runIntersection","portalData","edgeData","lines","addVertex","graph","coords","mapObjectId","where","what","zone","updateMapObjectId","vertexName","toString","vertex","getNode","undefined","data","zoneUnionVertex","addNode","addLink","vertex1","vertex2","cost","description","timeInSeconds","isPortal","wheelChairAccesible","id","weight","getDistance","coords1","coords2","point1","point2","distance","units","addEdgeToGraph","edge","node","index","length","line","getCoords","i","Edge","properties","direction","Forward","TwoWay","wheelchair","Backward","addNetworkToGraph","networkFeatures","feature","geometry","type","lineCoords","dimension_where","Network","addVertexByEdge","addPortalLinksToGraph","portalEdgeData","mapObjectId1","portal","links","portalLink","portal1","portal2","initLineString","coordinates","pathToFeatures","source","destination","vertices","segments","segmentStartVertexData","geojsonPaths","curVertex","prevVertex","segment","console","warn","portalPath","getPortalPath","invertStart","prevVertexMapObjId","set","Set","add","portalDataForSet","prevVertexPortalData","j","link","pathFeatures","start","end","distanceToStart","distanceToEnd","coordsToUse","slice","reverse","lineString","getLink","geojson","edges","startFloor","endFloor","push","nextVertex","log","pop","copyOfCurrentVertex","result","routes","findPath","pathFinder","oriented","fromNode","toNode","blocked","isZoneCrossing","parentWhereDimensionOfFromNode","parentWhereDimensionOfStartNode","parentWhereDimensionOfToNode","path","find","setupGraphAndFindPath","networkData","geojsonPath","getRouteWithAllPortals","performance","now","concatenatedEdgeFeatures","concat","concatenatedNetworkFeatures","getRouteWithSpecificPortals","routeWithAllAvailablePortals","portalsToUse","portalDataForList","getDirectRoute","networkFeaturesSourceNode","networkFeaturesDestinationNode","portalDataSourceNode","portalDataDestinationNode","getRoute","mapObjectId2","wheelChairAccessibleRouteOnlyParam","node1","node2","runRouteIteration","directRoute","routeWithAllPortals","finalRoute","route"],"sources":["../../../../../src/meta-atlas-sdk/MetaAtlasCore/routing-core/index.ts"],"sourcesContent":["/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\nimport { aStar } from 'ngraph.path';\nimport createGraph, { Graph, Node } from 'ngraph.graph';\nimport {\n point,\n multiPoint,\n} from '@turf/helpers';\nimport { Feature, LineString, MultiPoint } from 'geojson';\n// import turfDistance from '@turf/distance';\nimport * as turf from '@turf/turf';\nimport { cloneDeep, isEmpty, toInteger } from 'lodash';\nimport {\n CalculationResult, Edge, LineDirection, RouteDimension, RouteResult, WALK_SPEED, EdgeLine, Portal, PortalEdgeData, UserPosition\n} from './interfaces';\nimport {\n getNetworkFeatures, getEdge,\n getPortalDataForDimension,\n} from './mapObjectsHelper';\nimport { isMovingPortalTaxonomy, isPortalTaxonomy } from './routing-helpers';\nimport {\n DEFAULT_DIMENSION, filterPortalEdgeDataByList, filterPortalEdgeDataByWhere, getParentDimension, getPortalEdgeData, optimized,\n} from './utils';\n\n/* eslint-disable @typescript-eslint/no-shadow */\n\nconst RoutingCore = (function () {\n let wheelChairAccessibleRouteOnly = true;\n let startNode: Edge | undefined;\n let endNode: Edge | undefined;\n let changeZoneCheckEnabled = true;\n let runIntersection = false;\n\n let portalData: {\n edgeData: PortalEdgeData,\n lines: EdgeLine[],\n } = { edgeData: {}, lines: [] };\n\n function addVertex(\n graph: Graph,\n coords: number[],\n mapObjectId: string,\n where: string,\n what: string,\n zone: string,\n updateMapObjectId = false,\n ) {\n const vertexName = `${(coords).toString()},${where}`;\n let vertex = graph.getNode(vertexName);\n if (vertex === undefined) {\n const data = {\n mapObjectId,\n coords,\n where,\n what,\n zone,\n zoneUnionVertex: false,\n };\n vertex = graph.addNode(vertexName, data);\n } else if (updateMapObjectId) {\n vertex.data.mapObjectId = mapObjectId;\n\n // Mark the vertex as common vertex between zones\n if (vertex.data.zone !== zone) vertex.data.zoneUnionVertex = true;\n vertex.data.zone = zone;\n }\n return vertex;\n }\n\n function addLink(graph: Graph<any, any>, vertex1 : Node<any>, vertex2 : Node<any>, data :{\n wheelChairAccesible: number,\n cost: number,\n isPortal: boolean,\n description: string | null,\n }) {\n const { cost, description } = data;\n const timeInSeconds = data.isPortal ? cost / WALK_SPEED : cost;\n if (!wheelChairAccessibleRouteOnly || (wheelChairAccessibleRouteOnly && data.wheelChairAccesible)) { graph.addLink(vertex1.id, vertex2.id, { weight: timeInSeconds, cost, description }); }\n }\n\n function getDistance(coords1: number[], coords2: number[]) {\n const point1 = point(coords1);\n const point2 = point(coords2);\n const distance = turf.distance(point1, point2, { units: 'meters' });\n return distance;\n }\n\n function addEdgeToGraph(graph: Graph, edge: Edge) {\n const node = edge;\n if (node) {\n const vertex = addVertex(\n graph,\n node.coords,\n node.id,\n node.where,\n node.what,\n node.zone,\n true,\n );\n for (let index = 0; index < node.lines.length; index += 1) {\n const line = node.lines[index];\n // add edges for coord pairs\n const coords = turf.getCoords(line);\n for (let i = 0; i < coords.length - 1; i += 1) {\n const vertex1 = addVertex(\n graph,\n coords[i],\n 'vertex',\n node.where,\n RouteDimension.Edge,\n line.properties.zone,\n );\n const vertex2 = addVertex(\n graph,\n coords[i + 1],\n 'vertex',\n node.where,\n RouteDimension.Edge,\n line.properties.zone,\n );\n if (vertex1.id !== vertex2.id) {\n const distance = getDistance(coords[i], coords[i + 1]);\n if (line.properties.direction === LineDirection.Forward || line.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex1, vertex2, {\n wheelChairAccesible: line.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n if (line.properties.direction === LineDirection.Backward || line.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex2, vertex1, {\n wheelChairAccesible: line.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n }\n }\n }\n return vertex;\n }\n\n return undefined;\n }\n\n function addNetworkToGraph(graph: Graph, networkFeatures: Feature[]) {\n for (let index = 0; index < networkFeatures.length; index += 1) {\n const feature = networkFeatures[index];\n if (feature.geometry.type === 'LineString') {\n // get line\n const lineCoords = turf.getCoords(feature as any);\n if (feature.properties) {\n const where = feature.properties.dimension_where;\n const what = RouteDimension.Network; // feature.properties.dimension_what;\n const { zone } = feature.properties;\n // add edges for coord pairs\n for (let i = 0; i < lineCoords.length - 1; i += 1) {\n const vertex1 = addVertex(graph, lineCoords[i], 'vertex', where, what, zone, true);\n const vertex2 = addVertex(\n graph,\n lineCoords[i + 1],\n 'vertex',\n where,\n what,\n zone,\n true,\n );\n if (vertex1.id !== vertex2.id) {\n const distance = getDistance(lineCoords[i], lineCoords[i + 1]);\n if (feature.properties.direction === LineDirection.Forward || feature.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex1, vertex2, {\n wheelChairAccesible: feature.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n if (feature.properties.direction === LineDirection.Backward || feature.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex2, vertex1, {\n wheelChairAccesible: feature.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n }\n }\n }\n }\n }\n }\n\n function addVertexByEdge(graph: Graph, edge: Edge) {\n const node = edge;\n if (node === undefined) {\n return undefined;\n }\n return addVertex(\n graph,\n node.coords,\n node.id,\n node.where,\n node.what,\n node.zone,\n true,\n );\n }\n\n function addPortalLinksToGraph(graph: Graph, portalEdgeData: PortalEdgeData) {\n for (const mapObjectId1 in portalEdgeData) {\n const portal = portalEdgeData[mapObjectId1];\n\n for (let index = 0; index < portal.links.length; index += 1) {\n const portalLink = portal.links[index];\n let { cost } = portalLink;\n cost = toInteger(cost);\n // if (cost <= 1) {\n // cost = portalWeight;\n // }\n const { direction, wheelchair, description } = portalLink;\n const portal1 = addVertexByEdge(graph, portal);\n const portal2 = addVertexByEdge(graph, portalLink);\n if (portal1 !== undefined && portal2 !== undefined && portal1.id !== portal2.id) {\n if (direction === LineDirection.Forward || direction === LineDirection.TwoWay) {\n addLink(graph, portal1, portal2, {\n wheelChairAccesible: wheelchair,\n cost,\n description,\n isPortal: true,\n });\n }\n if (direction === LineDirection.Backward || direction === LineDirection.TwoWay) {\n addLink(graph, portal2, portal1, {\n wheelChairAccesible: wheelchair,\n cost,\n description,\n isPortal: true,\n });\n }\n\n addEdgeToGraph(graph, portalLink);\n }\n }\n\n addEdgeToGraph(graph, portal);\n }\n }\n\n function initLineString(vertex: any) {\n return {\n type: 'Feature',\n geometry: { type: 'LineString', coordinates: [vertex.data.coords] },\n properties: {\n dimension_where: vertex.data.where,\n zone: vertex.data.zone,\n cost: 0,\n },\n } as Feature<LineString | MultiPoint, any>;\n }\n\n function pathToFeatures(source: Edge, destination : Edge, vertices: Node<any>[], graph: Graph) {\n if (vertices.length <= 1) {\n return {} as CalculationResult;\n } // if no path found\n\n const startNode = source;\n const endNode = destination;\n\n const segments: RouteResult[] = [];\n let segmentStartVertexData = vertices[0].data;\n const geojsonPaths = [initLineString(vertices[0])];\n\n for (let i = 1; i < vertices.length; i += 1) {\n const curVertex = vertices[i];\n const prevVertex = vertices[i - 1];\n const line = geojsonPaths[geojsonPaths.length - 1];\n\n // if vertex is map object\n if (curVertex.data.mapObjectId !== 'vertex' || curVertex.data.zoneUnionVertex) {\n let segment;\n if (isPortalTaxonomy(prevVertex.data.what) && isPortalTaxonomy(curVertex.data.what)) {\n if (prevVertex.data.zone !== curVertex.data.zone) {\n console.warn('A portal is triggering a change in zone');\n }\n\n // check if portal path is available to visualize\n let portalPath;\n if (isMovingPortalTaxonomy(prevVertex.data.what)) {\n const getPortalPath = (portalEdgeData: PortalEdgeData, curVertex: Node<any>, prevVertex: Node<any>, invertStart = false) => {\n const prevVertexMapObjId = prevVertex.data.mapObjectId;\n const set = new Set<string>().add(prevVertexMapObjId);\n const portalDataForSet = filterPortalEdgeDataByList(portalEdgeData, set);\n if (portalDataForSet && portalDataForSet.edgeData[prevVertexMapObjId]) {\n const prevVertexPortalData = portalDataForSet.edgeData[prevVertexMapObjId];\n for (let j = 0; j < prevVertexPortalData.links.length; j += 1) {\n const link = prevVertexPortalData.links[j];\n if (link.id === curVertex.data.mapObjectId) {\n if (link.pathFeatures && link.pathFeatures.length > 0) {\n const line = link.pathFeatures[0];\n const start = invertStart === false ? prevVertex.data.coords : curVertex.data.coords;\n const end = invertStart === false ? curVertex.data.coords : prevVertex.data.coords;\n\n const distanceToStart = turf.distance(start, line.geometry.coordinates[0]);\n const distanceToEnd = turf.distance(end, line.geometry.coordinates[0]);\n const coordsToUse = distanceToStart < distanceToEnd ? line.geometry.coordinates : line.geometry.coordinates.slice().reverse();\n return turf.lineString(coordsToUse);\n }\n }\n }\n }\n\n return null;\n };\n\n portalPath = getPortalPath(portalData.edgeData, curVertex, prevVertex, false);\n if (!portalPath) portalPath = getPortalPath(portalData.edgeData, prevVertex, curVertex, true);\n }\n\n // TODO: read description here\n const link = graph.getLink(prevVertex.id, curVertex.id);\n const cost = link ? link.data.cost ? link.data.cost : undefined : undefined;\n const description = link ? link.data.description ? link.data.description : undefined : undefined;\n segment = {\n geojson: multiPoint([\n prevVertex.data.coords,\n curVertex.data.coords,\n ], {\n zone: curVertex.data.zone,\n }),\n edges: [prevVertex.data.mapObjectId, curVertex.data.mapObjectId],\n startFloor: prevVertex.data.where,\n endFloor: curVertex.data.where,\n isPortal: true,\n portalPath,\n cost,\n description,\n } as RouteResult;\n\n segments.push(segment);\n segmentStartVertexData = curVertex.data;\n } else {\n const nextVertex = (i + 1 < vertices.length) ? vertices[i + 1] : undefined;\n if (curVertex.data.zoneUnionVertex\n && (prevVertex && nextVertex && prevVertex?.data.zone === nextVertex?.data.zone)) {\n console.log('ignore zoneUnionVertex in segment');\n } else {\n segment = {\n geojson: line,\n edges: [segmentStartVertexData.mapObjectId, curVertex.data.mapObjectId],\n startFloor: segmentStartVertexData.where,\n endFloor: segmentStartVertexData.where,\n isPortal: false,\n portalPath: undefined,\n cost: line.properties.cost,\n };\n\n segments.push(segment);\n segmentStartVertexData = curVertex.data;\n }\n }\n }\n\n // same line\n if (!(isPortalTaxonomy(prevVertex.data.what) && isPortalTaxonomy(curVertex.data.what))) {\n const link = graph.getLink(prevVertex.id, curVertex.id); // returns a link from 'hello' to 'world'\n const cost = link ? link.data.cost ? link.data.cost : undefined : undefined;\n\n line.geometry.coordinates.push(curVertex.data.coords);\n line.properties.cost += cost;\n } else {\n // new line\n if (line.geometry.coordinates.length < 2) {\n geojsonPaths.pop();\n }\n geojsonPaths.push(initLineString(curVertex));\n }\n\n // new line due to change in zone\n if (curVertex.data.zoneUnionVertex) {\n const prevVertex = (i > 0) ? vertices[i - 1] : undefined;\n const nextVertex = (i + 1 < vertices.length) ? vertices[i + 1] : undefined;\n if (prevVertex && nextVertex && prevVertex?.data.zone === nextVertex?.data.zone) {\n console.log('ignore zoneUnionVertex');\n } else\n // Use zone value of next vertex (when available) as current vertex is a common vertex and can have either of the zone values\n if (nextVertex) {\n const copyOfCurrentVertex = cloneDeep(curVertex);\n copyOfCurrentVertex.data.zone = nextVertex.data.zone;\n geojsonPaths.push(initLineString(copyOfCurrentVertex));\n } else {\n geojsonPaths.push(initLineString(curVertex));\n }\n }\n }\n\n const result: CalculationResult = {\n startNode,\n endNode,\n routes: segments,\n distance: 0,\n };\n\n return result;\n }\n\n function findPath(vertex1: Node<any>, vertex2: Node<any>, graph: Graph) {\n // setup ngraph pathfinder\n const pathFinder = aStar(graph, {\n oriented: true,\n distance(fromNode, toNode, link) {\n return link.data.weight;\n },\n blocked(fromNode, toNode, link) {\n if (changeZoneCheckEnabled) {\n const isZoneCrossing = fromNode?.data.zone !== toNode?.data.zone;\n if (isZoneCrossing) {\n const parentWhereDimensionOfFromNode = getParentDimension(fromNode.data.where);\n const parentWhereDimensionOfStartNode = getParentDimension((startNode as Edge).where);\n const parentWhereDimensionOfToNode = getParentDimension(toNode.data.where);\n if (parentWhereDimensionOfFromNode !== parentWhereDimensionOfStartNode && parentWhereDimensionOfToNode !== parentWhereDimensionOfStartNode) {\n return true;\n }\n }\n }\n return false;\n },\n });\n\n // get shortest path\n const path = pathFinder.find(vertex1.id, vertex2.id).reverse();\n return path;\n }\n\n function setupGraphAndFindPath(source: Edge, destination: Edge, portalEdgeData: PortalEdgeData, networkData: Feature[]) {\n // create ngraph graph\n const graph = createGraph();\n\n // add node & node lines to graph\n const vertex1 = addEdgeToGraph(graph, source);\n const vertex2 = addEdgeToGraph(graph, destination);\n\n if (vertex1 && vertex2) {\n // Add portal links\n addPortalLinksToGraph(graph, portalEdgeData);\n\n // add networks to graph\n addNetworkToGraph(graph, networkData);\n\n const path = findPath(vertex1, vertex2, graph);\n // reconstruct path into geojson features\n const geojsonPath = pathToFeatures(source, destination, path, graph);\n return geojsonPath;\n }\n\n return {} as CalculationResult;\n }\n\n function getRouteWithAllPortals(source: Edge, destination: Edge) {\n let start = performance.now();\n\n // Load network data\n const networkFeatures = getNetworkFeatures(DEFAULT_DIMENSION);\n console.log('time load: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n const concatenatedEdgeFeatures = source.lines.concat(destination.lines, portalData.lines);\n const concatenatedNetworkFeatures = networkFeatures;\n\n if (runIntersection) optimized(concatenatedEdgeFeatures, concatenatedNetworkFeatures);\n console.log('time network: ', (performance.now() - start) / 1000, networkFeatures.length);\n\n return setupGraphAndFindPath(source, destination, portalData.edgeData, concatenatedNetworkFeatures);\n }\n\n function getRouteWithSpecificPortals(source: Edge, destination: Edge, routeWithAllAvailablePortals: CalculationResult) {\n const portalsToUse = new Set<string>();\n for (let index = 0; routeWithAllAvailablePortals.routes && index < routeWithAllAvailablePortals.routes.length; index += 1) {\n const segment = routeWithAllAvailablePortals.routes[index];\n if (segment.isPortal) {\n portalsToUse.add(segment.edges[0]);\n portalsToUse.add(segment.edges[1]);\n }\n }\n\n let start = performance.now();\n // Load data\n // Load network data\n const networkFeatures = getNetworkFeatures(DEFAULT_DIMENSION);\n // Load portal data\n const portalDataForList = filterPortalEdgeDataByList(portalData.edgeData, portalsToUse);\n console.log('time load: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n const concatenatedEdgeFeatures = source.lines.concat(destination.lines, portalDataForList.lines);\n const concatenatedNetworkFeatures = networkFeatures;\n\n if (runIntersection) optimized(concatenatedEdgeFeatures, concatenatedNetworkFeatures);\n console.log('time network: ', (performance.now() - start) / 1000, networkFeatures.length);\n\n return setupGraphAndFindPath(source, destination, portalDataForList.edgeData, concatenatedNetworkFeatures);\n }\n\n function getDirectRoute(source: Edge, destination: Edge) {\n let start = performance.now();\n // Load data\n // Load network data\n const networkFeaturesSourceNode = getNetworkFeatures(getParentDimension(source.where));\n const networkFeaturesDestinationNode = getNetworkFeatures(getParentDimension(destination.where));\n // Load portal data\n const portalDataSourceNode = filterPortalEdgeDataByWhere(portalData.edgeData, getParentDimension(source.where));\n const portalDataDestinationNode = filterPortalEdgeDataByWhere(portalData.edgeData, getParentDimension(destination.where));\n\n console.log('time load: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n const concatenatedEdgeFeatures = source.lines.concat(destination.lines, portalDataSourceNode.lines, portalDataDestinationNode.lines);\n const concatenatedNetworkFeatures = networkFeaturesSourceNode.concat(networkFeaturesDestinationNode);\n\n if (runIntersection) optimized(concatenatedEdgeFeatures, concatenatedNetworkFeatures);\n console.log('time network: ', (performance.now() - start) / 1000, networkFeaturesSourceNode.length);\n\n const portalEdgeData = {\n ...portalDataSourceNode.edgeData,\n ...portalDataDestinationNode.edgeData,\n };\n return setupGraphAndFindPath(source, destination, portalEdgeData, concatenatedNetworkFeatures);\n }\n\n // function to get shortest route\n function getRoute(\n mapObjectId1: string | UserPosition,\n mapObjectId2: string,\n wheelChairAccessibleRouteOnlyParam: boolean\n ) {\n wheelChairAccessibleRouteOnly = wheelChairAccessibleRouteOnlyParam;\n // if same start & end\n if (mapObjectId1 === mapObjectId2) {\n return {} as CalculationResult;\n }\n\n if(typeof(mapObjectId1) !== 'string'\n || typeof(mapObjectId2) !== 'string'\n ) runIntersection = true;\n\n const node1 = getEdge(mapObjectId1);\n const node2 = getEdge(mapObjectId2);\n\n startNode = node1;\n endNode = node2;\n\n let start = performance.now();\n portalData = getPortalDataForDimension(DEFAULT_DIMENSION);\n console.log('time portal load with extrapolation: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n if (startNode && endNode) {\n changeZoneCheckEnabled = true;\n const runRouteIteration = () => {\n const directRoute = getDirectRoute(startNode as Edge, endNode as Edge);\n console.log('Direct route', directRoute);\n if (isEmpty(directRoute)) {\n const routeWithAllPortals = getRouteWithAllPortals(startNode as Edge, endNode as Edge);\n const finalRoute = getRouteWithSpecificPortals(startNode as Edge, endNode as Edge, routeWithAllPortals);\n return finalRoute;\n }\n\n const finalRoute = getRouteWithSpecificPortals(startNode as Edge, endNode as Edge, directRoute);\n return finalRoute;\n };\n\n let route = runRouteIteration();\n if (isEmpty(route)) {\n changeZoneCheckEnabled = false;\n route = runRouteIteration();\n }\n\n console.log('time total: ', (performance.now() - start) / 1000);\n return route;\n }\n\n return {} as CalculationResult;\n }\n\n return { getRoute };\n}());\n\nexport default RoutingCore;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["aStar","createGraph","point","multiPoint","turf","cloneDeep","isEmpty","toInteger","LineDirection","RouteDimension","WALK_SPEED","getNetworkFeatures","getEdge","getPortalDataForDimension","isMovingPortalTaxonomy","isPortalTaxonomy","DEFAULT_DIMENSION","filterPortalEdgeDataByList","filterPortalEdgeDataByWhere","getParentDimension","optimized","RoutingCore","wheelChairAccessibleRouteOnly","startNode","endNode","changeZoneCheckEnabled","runIntersection","portalData","edgeData","lines","addVertex","graph","coords","mapObjectId","where","what","zone","updateMapObjectId","arguments","length","undefined","vertexName","concat","toString","vertex","getNode","data","zoneUnionVertex","addNode","addLink","vertex1","vertex2","cost","description","timeInSeconds","isPortal","wheelChairAccesible","id","weight","getDistance","coords1","coords2","point1","point2","distance","units","addEdgeToGraph","edge","node","index","line","getCoords","i","Edge","properties","direction","Forward","TwoWay","wheelchair","Backward","addNetworkToGraph","networkFeatures","feature","geometry","type","lineCoords","dimension_where","Network","addVertexByEdge","addPortalLinksToGraph","portalEdgeData","mapObjectId1","portal","links","portalLink","portal1","portal2","initLineString","coordinates","pathToFeatures","source","destination","vertices","segments","segmentStartVertexData","geojsonPaths","curVertex","prevVertex","segment","console","warn","portalPath","getPortalPath","invertStart","prevVertexMapObjId","set","Set","add","portalDataForSet","prevVertexPortalData","j","link","pathFeatures","start","end","distanceToStart","distanceToEnd","coordsToUse","slice","reverse","lineString","getLink","geojson","edges","startFloor","endFloor","push","nextVertex","log","pop","copyOfCurrentVertex","result","routes","findPath","pathFinder","oriented","fromNode","toNode","blocked","isZoneCrossing","parentWhereDimensionOfFromNode","parentWhereDimensionOfStartNode","parentWhereDimensionOfToNode","path","find","setupGraphAndFindPath","networkData","geojsonPath","getRouteWithAllPortals","performance","now","concatenatedEdgeFeatures","concatenatedNetworkFeatures","getRouteWithSpecificPortals","routeWithAllAvailablePortals","portalsToUse","portalDataForList","getDirectRoute","networkFeaturesSourceNode","networkFeaturesDestinationNode","portalDataSourceNode","portalDataDestinationNode","_objectSpread","getRoute","mapObjectId2","wheelChairAccessibleRouteOnlyParam","node1","node2","runRouteIteration","directRoute","routeWithAllPortals","finalRoute","route"],"sources":["../../../../../src/meta-atlas-sdk/MetaAtlasCore/routing-core/index.ts"],"sourcesContent":["/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\nimport { aStar } from 'ngraph.path';\nimport createGraph, { Graph, Node } from 'ngraph.graph';\nimport {\n point,\n multiPoint,\n} from '@turf/helpers';\nimport { Feature, LineString, MultiPoint } from 'geojson';\n// import turfDistance from '@turf/distance';\nimport * as turf from '@turf/turf';\nimport { cloneDeep, isEmpty, toInteger } from 'lodash';\nimport {\n CalculationResult, Edge, LineDirection, RouteDimension, RouteResult, WALK_SPEED, EdgeLine, Portal, PortalEdgeData, UserPosition\n} from './interfaces';\nimport {\n getNetworkFeatures, getEdge,\n getPortalDataForDimension,\n} from './mapObjectsHelper';\nimport { isMovingPortalTaxonomy, isPortalTaxonomy } from './routing-helpers';\nimport {\n DEFAULT_DIMENSION, filterPortalEdgeDataByList, filterPortalEdgeDataByWhere, getParentDimension, getPortalEdgeData, optimized,\n} from './utils';\n\n/* eslint-disable @typescript-eslint/no-shadow */\n\nconst RoutingCore = (function () {\n let wheelChairAccessibleRouteOnly = true;\n let startNode: Edge | undefined;\n let endNode: Edge | undefined;\n let changeZoneCheckEnabled = true;\n let runIntersection = false;\n\n let portalData: {\n edgeData: PortalEdgeData,\n lines: EdgeLine[],\n } = { edgeData: {}, lines: [] };\n\n function addVertex(\n graph: Graph,\n coords: number[],\n mapObjectId: string,\n where: string,\n what: string,\n zone: string,\n updateMapObjectId = false,\n ) {\n const vertexName = `${(coords).toString()},${where}`;\n let vertex = graph.getNode(vertexName);\n if (vertex === undefined) {\n const data = {\n mapObjectId,\n coords,\n where,\n what,\n zone,\n zoneUnionVertex: false,\n };\n vertex = graph.addNode(vertexName, data);\n } else if (updateMapObjectId) {\n vertex.data.mapObjectId = mapObjectId;\n\n // Mark the vertex as common vertex between zones\n if (vertex.data.zone !== zone) vertex.data.zoneUnionVertex = true;\n vertex.data.zone = zone;\n }\n return vertex;\n }\n\n function addLink(graph: Graph<any, any>, vertex1 : Node<any>, vertex2 : Node<any>, data :{\n wheelChairAccesible: number,\n cost: number,\n isPortal: boolean,\n description: string | null,\n }) {\n const { cost, description } = data;\n const timeInSeconds = data.isPortal ? cost / WALK_SPEED : cost;\n if (!wheelChairAccessibleRouteOnly || (wheelChairAccessibleRouteOnly && data.wheelChairAccesible)) { graph.addLink(vertex1.id, vertex2.id, { weight: timeInSeconds, cost, description }); }\n }\n\n function getDistance(coords1: number[], coords2: number[]) {\n const point1 = point(coords1);\n const point2 = point(coords2);\n const distance = turf.distance(point1, point2, { units: 'meters' });\n return distance;\n }\n\n function addEdgeToGraph(graph: Graph, edge: Edge) {\n const node = edge;\n if (node) {\n const vertex = addVertex(\n graph,\n node.coords,\n node.id,\n node.where,\n node.what,\n node.zone,\n true,\n );\n for (let index = 0; index < node.lines.length; index += 1) {\n const line = node.lines[index];\n // add edges for coord pairs\n const coords = turf.getCoords(line);\n for (let i = 0; i < coords.length - 1; i += 1) {\n const vertex1 = addVertex(\n graph,\n coords[i],\n 'vertex',\n node.where,\n RouteDimension.Edge,\n line.properties.zone,\n );\n const vertex2 = addVertex(\n graph,\n coords[i + 1],\n 'vertex',\n node.where,\n RouteDimension.Edge,\n line.properties.zone,\n );\n if (vertex1.id !== vertex2.id) {\n const distance = getDistance(coords[i], coords[i + 1]);\n if (line.properties.direction === LineDirection.Forward || line.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex1, vertex2, {\n wheelChairAccesible: line.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n if (line.properties.direction === LineDirection.Backward || line.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex2, vertex1, {\n wheelChairAccesible: line.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n }\n }\n }\n return vertex;\n }\n\n return undefined;\n }\n\n function addNetworkToGraph(graph: Graph, networkFeatures: Feature[]) {\n for (let index = 0; index < networkFeatures.length; index += 1) {\n const feature = networkFeatures[index];\n if (feature.geometry.type === 'LineString') {\n // get line\n const lineCoords = turf.getCoords(feature as any);\n if (feature.properties) {\n const where = feature.properties.dimension_where;\n const what = RouteDimension.Network; // feature.properties.dimension_what;\n const { zone } = feature.properties;\n // add edges for coord pairs\n for (let i = 0; i < lineCoords.length - 1; i += 1) {\n const vertex1 = addVertex(graph, lineCoords[i], 'vertex', where, what, zone, true);\n const vertex2 = addVertex(\n graph,\n lineCoords[i + 1],\n 'vertex',\n where,\n what,\n zone,\n true,\n );\n if (vertex1.id !== vertex2.id) {\n const distance = getDistance(lineCoords[i], lineCoords[i + 1]);\n if (feature.properties.direction === LineDirection.Forward || feature.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex1, vertex2, {\n wheelChairAccesible: feature.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n if (feature.properties.direction === LineDirection.Backward || feature.properties.direction === LineDirection.TwoWay) {\n addLink(graph, vertex2, vertex1, {\n wheelChairAccesible: feature.properties.wheelchair,\n cost: distance,\n isPortal: false,\n description: null,\n });\n }\n }\n }\n }\n }\n }\n }\n\n function addVertexByEdge(graph: Graph, edge: Edge) {\n const node = edge;\n if (node === undefined) {\n return undefined;\n }\n return addVertex(\n graph,\n node.coords,\n node.id,\n node.where,\n node.what,\n node.zone,\n true,\n );\n }\n\n function addPortalLinksToGraph(graph: Graph, portalEdgeData: PortalEdgeData) {\n for (const mapObjectId1 in portalEdgeData) {\n const portal = portalEdgeData[mapObjectId1];\n\n for (let index = 0; index < portal.links.length; index += 1) {\n const portalLink = portal.links[index];\n let { cost } = portalLink;\n cost = toInteger(cost);\n // if (cost <= 1) {\n // cost = portalWeight;\n // }\n const { direction, wheelchair, description } = portalLink;\n const portal1 = addVertexByEdge(graph, portal);\n const portal2 = addVertexByEdge(graph, portalLink);\n if (portal1 !== undefined && portal2 !== undefined && portal1.id !== portal2.id) {\n if (direction === LineDirection.Forward || direction === LineDirection.TwoWay) {\n addLink(graph, portal1, portal2, {\n wheelChairAccesible: wheelchair,\n cost,\n description,\n isPortal: true,\n });\n }\n if (direction === LineDirection.Backward || direction === LineDirection.TwoWay) {\n addLink(graph, portal2, portal1, {\n wheelChairAccesible: wheelchair,\n cost,\n description,\n isPortal: true,\n });\n }\n\n addEdgeToGraph(graph, portalLink);\n }\n }\n\n addEdgeToGraph(graph, portal);\n }\n }\n\n function initLineString(vertex: any) {\n return {\n type: 'Feature',\n geometry: { type: 'LineString', coordinates: [vertex.data.coords] },\n properties: {\n dimension_where: vertex.data.where,\n zone: vertex.data.zone,\n cost: 0,\n },\n } as Feature<LineString | MultiPoint, any>;\n }\n\n function pathToFeatures(source: Edge, destination : Edge, vertices: Node<any>[], graph: Graph) {\n if (vertices.length <= 1) {\n return {} as CalculationResult;\n } // if no path found\n\n const startNode = source;\n const endNode = destination;\n\n const segments: RouteResult[] = [];\n let segmentStartVertexData = vertices[0].data;\n const geojsonPaths = [initLineString(vertices[0])];\n\n for (let i = 1; i < vertices.length; i += 1) {\n const curVertex = vertices[i];\n const prevVertex = vertices[i - 1];\n const line = geojsonPaths[geojsonPaths.length - 1];\n\n // if vertex is map object\n if (curVertex.data.mapObjectId !== 'vertex' || curVertex.data.zoneUnionVertex) {\n let segment;\n if (isPortalTaxonomy(prevVertex.data.what) && isPortalTaxonomy(curVertex.data.what)) {\n if (prevVertex.data.zone !== curVertex.data.zone) {\n console.warn('A portal is triggering a change in zone');\n }\n\n // check if portal path is available to visualize\n let portalPath;\n if (isMovingPortalTaxonomy(prevVertex.data.what)) {\n const getPortalPath = (portalEdgeData: PortalEdgeData, curVertex: Node<any>, prevVertex: Node<any>, invertStart = false) => {\n const prevVertexMapObjId = prevVertex.data.mapObjectId;\n const set = new Set<string>().add(prevVertexMapObjId);\n const portalDataForSet = filterPortalEdgeDataByList(portalEdgeData, set);\n if (portalDataForSet && portalDataForSet.edgeData[prevVertexMapObjId]) {\n const prevVertexPortalData = portalDataForSet.edgeData[prevVertexMapObjId];\n for (let j = 0; j < prevVertexPortalData.links.length; j += 1) {\n const link = prevVertexPortalData.links[j];\n if (link.id === curVertex.data.mapObjectId) {\n if (link.pathFeatures && link.pathFeatures.length > 0) {\n const line = link.pathFeatures[0];\n const start = invertStart === false ? prevVertex.data.coords : curVertex.data.coords;\n const end = invertStart === false ? curVertex.data.coords : prevVertex.data.coords;\n\n const distanceToStart = turf.distance(start, line.geometry.coordinates[0]);\n const distanceToEnd = turf.distance(end, line.geometry.coordinates[0]);\n const coordsToUse = distanceToStart < distanceToEnd ? line.geometry.coordinates : line.geometry.coordinates.slice().reverse();\n return turf.lineString(coordsToUse);\n }\n }\n }\n }\n\n return null;\n };\n\n portalPath = getPortalPath(portalData.edgeData, curVertex, prevVertex, false);\n if (!portalPath) portalPath = getPortalPath(portalData.edgeData, prevVertex, curVertex, true);\n }\n\n // TODO: read description here\n const link = graph.getLink(prevVertex.id, curVertex.id);\n const cost = link ? link.data.cost ? link.data.cost : undefined : undefined;\n const description = link ? link.data.description ? link.data.description : undefined : undefined;\n segment = {\n geojson: multiPoint([\n prevVertex.data.coords,\n curVertex.data.coords,\n ], {\n zone: curVertex.data.zone,\n }),\n edges: [prevVertex.data.mapObjectId, curVertex.data.mapObjectId],\n startFloor: prevVertex.data.where,\n endFloor: curVertex.data.where,\n isPortal: true,\n portalPath,\n cost,\n description,\n } as RouteResult;\n\n segments.push(segment);\n segmentStartVertexData = curVertex.data;\n } else {\n const nextVertex = (i + 1 < vertices.length) ? vertices[i + 1] : undefined;\n if (curVertex.data.zoneUnionVertex\n && (prevVertex && nextVertex && prevVertex?.data.zone === nextVertex?.data.zone)) {\n console.log('ignore zoneUnionVertex in segment');\n } else {\n segment = {\n geojson: line,\n edges: [segmentStartVertexData.mapObjectId, curVertex.data.mapObjectId],\n startFloor: segmentStartVertexData.where,\n endFloor: segmentStartVertexData.where,\n isPortal: false,\n portalPath: undefined,\n cost: line.properties.cost,\n };\n\n segments.push(segment);\n segmentStartVertexData = curVertex.data;\n }\n }\n }\n\n // same line\n if (!(isPortalTaxonomy(prevVertex.data.what) && isPortalTaxonomy(curVertex.data.what))) {\n const link = graph.getLink(prevVertex.id, curVertex.id); // returns a link from 'hello' to 'world'\n const cost = link ? link.data.cost ? link.data.cost : undefined : undefined;\n\n line.geometry.coordinates.push(curVertex.data.coords);\n line.properties.cost += cost;\n } else {\n // new line\n if (line.geometry.coordinates.length < 2) {\n geojsonPaths.pop();\n }\n geojsonPaths.push(initLineString(curVertex));\n }\n\n // new line due to change in zone\n if (curVertex.data.zoneUnionVertex) {\n const prevVertex = (i > 0) ? vertices[i - 1] : undefined;\n const nextVertex = (i + 1 < vertices.length) ? vertices[i + 1] : undefined;\n if (prevVertex && nextVertex && prevVertex?.data.zone === nextVertex?.data.zone) {\n console.log('ignore zoneUnionVertex');\n } else\n // Use zone value of next vertex (when available) as current vertex is a common vertex and can have either of the zone values\n if (nextVertex) {\n const copyOfCurrentVertex = cloneDeep(curVertex);\n copyOfCurrentVertex.data.zone = nextVertex.data.zone;\n geojsonPaths.push(initLineString(copyOfCurrentVertex));\n } else {\n geojsonPaths.push(initLineString(curVertex));\n }\n }\n }\n\n const result: CalculationResult = {\n startNode,\n endNode,\n routes: segments,\n distance: 0,\n };\n\n return result;\n }\n\n function findPath(vertex1: Node<any>, vertex2: Node<any>, graph: Graph) {\n // setup ngraph pathfinder\n const pathFinder = aStar(graph, {\n oriented: true,\n distance(fromNode, toNode, link) {\n return link.data.weight;\n },\n blocked(fromNode, toNode, link) {\n if (changeZoneCheckEnabled) {\n const isZoneCrossing = fromNode?.data.zone !== toNode?.data.zone;\n if (isZoneCrossing) {\n const parentWhereDimensionOfFromNode = getParentDimension(fromNode.data.where);\n const parentWhereDimensionOfStartNode = getParentDimension((startNode as Edge).where);\n const parentWhereDimensionOfToNode = getParentDimension(toNode.data.where);\n if (parentWhereDimensionOfFromNode !== parentWhereDimensionOfStartNode && parentWhereDimensionOfToNode !== parentWhereDimensionOfStartNode) {\n return true;\n }\n }\n }\n return false;\n },\n });\n\n // get shortest path\n const path = pathFinder.find(vertex1.id, vertex2.id).reverse();\n return path;\n }\n\n function setupGraphAndFindPath(source: Edge, destination: Edge, portalEdgeData: PortalEdgeData, networkData: Feature[]) {\n // create ngraph graph\n const graph = createGraph();\n\n // add node & node lines to graph\n const vertex1 = addEdgeToGraph(graph, source);\n const vertex2 = addEdgeToGraph(graph, destination);\n\n if (vertex1 && vertex2) {\n // Add portal links\n addPortalLinksToGraph(graph, portalEdgeData);\n\n // add networks to graph\n addNetworkToGraph(graph, networkData);\n\n const path = findPath(vertex1, vertex2, graph);\n // reconstruct path into geojson features\n const geojsonPath = pathToFeatures(source, destination, path, graph);\n return geojsonPath;\n }\n\n return {} as CalculationResult;\n }\n\n function getRouteWithAllPortals(source: Edge, destination: Edge) {\n let start = performance.now();\n\n // Load network data\n const networkFeatures = getNetworkFeatures(DEFAULT_DIMENSION);\n console.log('time load: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n const concatenatedEdgeFeatures = source.lines.concat(destination.lines, portalData.lines);\n const concatenatedNetworkFeatures = networkFeatures;\n\n if (runIntersection) optimized(concatenatedEdgeFeatures, concatenatedNetworkFeatures);\n console.log('time network: ', (performance.now() - start) / 1000, networkFeatures.length);\n\n return setupGraphAndFindPath(source, destination, portalData.edgeData, concatenatedNetworkFeatures);\n }\n\n function getRouteWithSpecificPortals(source: Edge, destination: Edge, routeWithAllAvailablePortals: CalculationResult) {\n const portalsToUse = new Set<string>();\n for (let index = 0; routeWithAllAvailablePortals.routes && index < routeWithAllAvailablePortals.routes.length; index += 1) {\n const segment = routeWithAllAvailablePortals.routes[index];\n if (segment.isPortal) {\n portalsToUse.add(segment.edges[0]);\n portalsToUse.add(segment.edges[1]);\n }\n }\n\n let start = performance.now();\n // Load data\n // Load network data\n const networkFeatures = getNetworkFeatures(DEFAULT_DIMENSION);\n // Load portal data\n const portalDataForList = filterPortalEdgeDataByList(portalData.edgeData, portalsToUse);\n console.log('time load: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n const concatenatedEdgeFeatures = source.lines.concat(destination.lines, portalDataForList.lines);\n const concatenatedNetworkFeatures = networkFeatures;\n\n if (runIntersection) optimized(concatenatedEdgeFeatures, concatenatedNetworkFeatures);\n console.log('time network: ', (performance.now() - start) / 1000, networkFeatures.length);\n\n return setupGraphAndFindPath(source, destination, portalDataForList.edgeData, concatenatedNetworkFeatures);\n }\n\n function getDirectRoute(source: Edge, destination: Edge) {\n let start = performance.now();\n // Load data\n // Load network data\n const networkFeaturesSourceNode = getNetworkFeatures(getParentDimension(source.where));\n const networkFeaturesDestinationNode = getNetworkFeatures(getParentDimension(destination.where));\n // Load portal data\n const portalDataSourceNode = filterPortalEdgeDataByWhere(portalData.edgeData, getParentDimension(source.where));\n const portalDataDestinationNode = filterPortalEdgeDataByWhere(portalData.edgeData, getParentDimension(destination.where));\n\n console.log('time load: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n const concatenatedEdgeFeatures = source.lines.concat(destination.lines, portalDataSourceNode.lines, portalDataDestinationNode.lines);\n const concatenatedNetworkFeatures = networkFeaturesSourceNode.concat(networkFeaturesDestinationNode);\n\n if (runIntersection) optimized(concatenatedEdgeFeatures, concatenatedNetworkFeatures);\n console.log('time network: ', (performance.now() - start) / 1000, networkFeaturesSourceNode.length);\n\n const portalEdgeData = {\n ...portalDataSourceNode.edgeData,\n ...portalDataDestinationNode.edgeData,\n };\n return setupGraphAndFindPath(source, destination, portalEdgeData, concatenatedNetworkFeatures);\n }\n\n // function to get shortest route\n function getRoute(\n mapObjectId1: string | UserPosition,\n mapObjectId2: string,\n wheelChairAccessibleRouteOnlyParam: boolean\n ) {\n wheelChairAccessibleRouteOnly = wheelChairAccessibleRouteOnlyParam;\n // if same start & end\n if (mapObjectId1 === mapObjectId2) {\n return {} as CalculationResult;\n }\n\n if(typeof(mapObjectId1) !== 'string'\n || typeof(mapObjectId2) !== 'string'\n ) runIntersection = true;\n\n const node1 = getEdge(mapObjectId1);\n const node2 = getEdge(mapObjectId2);\n\n startNode = node1;\n endNode = node2;\n\n let start = performance.now();\n portalData = getPortalDataForDimension(DEFAULT_DIMENSION);\n console.log('time portal load with extrapolation: ', (performance.now() - start) / 1000);\n\n start = performance.now();\n if (startNode && endNode) {\n changeZoneCheckEnabled = true;\n const runRouteIteration = () => {\n const directRoute = getDirectRoute(startNode as Edge, endNode as Edge);\n console.log('Direct route', directRoute);\n if (isEmpty(directRoute)) {\n const routeWithAllPortals = getRouteWithAllPortals(startNode as Edge, endNode as Edge);\n const finalRoute = getRouteWithSpecificPortals(startNode as Edge, endNode as Edge, routeWithAllPortals);\n return finalRoute;\n }\n\n const finalRoute = getRouteWithSpecificPortals(startNode as Edge, endNode as Edge, directRoute);\n return finalRoute;\n };\n\n let route = runRouteIteration();\n if (isEmpty(route)) {\n changeZoneCheckEnabled = false;\n route = runRouteIteration();\n }\n\n console.log('time total: ', (performance.now() - start) / 1000);\n return route;\n }\n\n return {} as CalculationResult;\n }\n\n return { getRoute };\n}());\n\nexport default RoutingCore;\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable camelcase */
2
-
3
- import { getEdgeData, getPortalDataForIds, getImmigrationDataForTaxonomy1, getPortalLinks, getRouteNetworkData } from '../fetchMapObjectsData';
4
- export function getNetworkFeatures(whereDimension, includeChildren = true) {
2
+ import { getEdgeData, getPortalDataForIds, getImmigrationDataForTaxonomy1, getPortalLinks, getRouteNetworkData } from "../fetchMapObjectsData.js";
3
+ export function getNetworkFeatures(whereDimension) {
4
+ let includeChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
5
5
  return getRouteNetworkData(whereDimension, includeChildren);
6
6
  }
7
7
  export function getEdge(mapObjectId) {
@@ -1 +1 @@
1
- {"version":3,"file":"mapObjectsHelper.js","names":["getEdgeData","getPortalDataForIds","getImmigrationDataForTaxonomy1","getPortalLinks","getRouteNetworkData","getNetworkFeatures","whereDimension","includeChildren","getEdge","mapObjectId","edge","getPortalDataForDimension","portalData","getPortalDataForMapObjects","mapObjectIds","Array","from","getImmigrationPolygonFeaturesForWhereTaxonomy","taxonomy1Path"],"sources":["../../../../../src/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {\n Edge,\n UserPosition,\n} from './interfaces';\nimport {\n getEdgeData, getPortalDataForIds, getImmigrationDataForTaxonomy1, getPortalLinks, getRouteNetworkData,\n} from '../fetchMapObjectsData';\n\nexport function getNetworkFeatures(whereDimension: string, includeChildren = true) {\n return getRouteNetworkData(whereDimension, includeChildren);\n}\n\nexport function getEdge(mapObjectId: string | UserPosition) : Edge | undefined {\n const edge = getEdgeData(mapObjectId);\n return edge;\n}\n\nexport function getPortalDataForDimension(whereDimension: string) {\n const portalData = getPortalLinks(whereDimension);\n return portalData;\n}\n\nexport function getPortalDataForMapObjects(mapObjectIds: Set<string>) {\n const portalData = getPortalDataForIds(Array.from(mapObjectIds));\n return portalData;\n}\n\nexport function getImmigrationPolygonFeaturesForWhereTaxonomy(whereDimension: string) {\n const taxonomy1Path = whereDimension;\n return getImmigrationDataForTaxonomy1(taxonomy1Path);\n}\n"],"mappings":"AAAA;;AAKA,SACEA,WAAW,EAAEC,mBAAmB,EAAEC,8BAA8B,EAAEC,cAAc,EAAEC,mBAAmB,QAChG,wBAAwB;AAE/B,OAAO,SAASC,kBAAkBA,CAACC,cAAsB,EAAEC,eAAe,GAAG,IAAI,EAAE;EACjF,OAAOH,mBAAmB,CAACE,cAAc,EAAEC,eAAe,CAAC;AAC7D;AAEA,OAAO,SAASC,OAAOA,CAACC,WAAkC,EAAqB;EAC7E,MAAMC,IAAI,GAAGV,WAAW,CAACS,WAAW,CAAC;EACrC,OAAOC,IAAI;AACb;AAEA,OAAO,SAASC,yBAAyBA,CAACL,cAAsB,EAAE;EAChE,MAAMM,UAAU,GAAGT,cAAc,CAACG,cAAc,CAAC;EACjD,OAAOM,UAAU;AACnB;AAEA,OAAO,SAASC,0BAA0BA,CAACC,YAAyB,EAAE;EACpE,MAAMF,UAAU,GAAGX,mBAAmB,CAACc,KAAK,CAACC,IAAI,CAACF,YAAY,CAAC,CAAC;EAChE,OAAOF,UAAU;AACnB;AAEA,OAAO,SAASK,6CAA6CA,CAACX,cAAsB,EAAE;EACpF,MAAMY,aAAa,GAAGZ,cAAc;EACpC,OAAOJ,8BAA8B,CAACgB,aAAa,CAAC;AACtD","ignoreList":[]}
1
+ {"version":3,"file":"mapObjectsHelper.js","names":["getEdgeData","getPortalDataForIds","getImmigrationDataForTaxonomy1","getPortalLinks","getRouteNetworkData","getNetworkFeatures","whereDimension","includeChildren","arguments","length","undefined","getEdge","mapObjectId","edge","getPortalDataForDimension","portalData","getPortalDataForMapObjects","mapObjectIds","Array","from","getImmigrationPolygonFeaturesForWhereTaxonomy","taxonomy1Path"],"sources":["../../../../../src/meta-atlas-sdk/MetaAtlasCore/routing-core/mapObjectsHelper.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport {\n Edge,\n UserPosition,\n} from './interfaces';\nimport {\n getEdgeData, getPortalDataForIds, getImmigrationDataForTaxonomy1, getPortalLinks, getRouteNetworkData,\n} from '../fetchMapObjectsData';\n\nexport function getNetworkFeatures(whereDimension: string, includeChildren = true) {\n return getRouteNetworkData(whereDimension, includeChildren);\n}\n\nexport function getEdge(mapObjectId: string | UserPosition) : Edge | undefined {\n const edge = getEdgeData(mapObjectId);\n return edge;\n}\n\nexport function getPortalDataForDimension(whereDimension: string) {\n const portalData = getPortalLinks(whereDimension);\n return portalData;\n}\n\nexport function getPortalDataForMapObjects(mapObjectIds: Set<string>) {\n const portalData = getPortalDataForIds(Array.from(mapObjectIds));\n return portalData;\n}\n\nexport function getImmigrationPolygonFeaturesForWhereTaxonomy(whereDimension: string) {\n const taxonomy1Path = whereDimension;\n return getImmigrationDataForTaxonomy1(taxonomy1Path);\n}\n"],"mappings":"AAAA;AAAA,SAMEA,WAAW,EAAEC,mBAAmB,EAAEC,8BAA8B,EAAEC,cAAc,EAAEC,mBAAmB;AAGvG,OAAO,SAASC,kBAAkBA,CAACC,cAAsB,EAA0B;EAAA,IAAxBC,eAAe,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAC/E,OAAOJ,mBAAmB,CAACE,cAAc,EAAEC,eAAe,CAAC;AAC7D;AAEA,OAAO,SAASI,OAAOA,CAACC,WAAkC,EAAqB;EAC7E,MAAMC,IAAI,GAAGb,WAAW,CAACY,WAAW,CAAC;EACrC,OAAOC,IAAI;AACb;AAEA,OAAO,SAASC,yBAAyBA,CAACR,cAAsB,EAAE;EAChE,MAAMS,UAAU,GAAGZ,cAAc,CAACG,cAAc,CAAC;EACjD,OAAOS,UAAU;AACnB;AAEA,OAAO,SAASC,0BAA0BA,CAACC,YAAyB,EAAE;EACpE,MAAMF,UAAU,GAAGd,mBAAmB,CAACiB,KAAK,CAACC,IAAI,CAACF,YAAY,CAAC,CAAC;EAChE,OAAOF,UAAU;AACnB;AAEA,OAAO,SAASK,6CAA6CA,CAACd,cAAsB,EAAE;EACpF,MAAMe,aAAa,GAAGf,cAAc;EACpC,OAAOJ,8BAA8B,CAACmB,aAAa,CAAC;AACtD","ignoreList":[]}