@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":"utils.js","names":["turf","GeoJSONRBush","Graph","DagreGraph","alg","cloneDeep","isEmpty","PortalType","getEdge","debugMode","minSnapDistance","indexOfPointOnLine","feature","point","matchIndex","coordEach","currentCoord","coordIndex","featureIndex","multiFeatureIndex","geometryIndex","lineVertex","dist","distance","units","console","log","addIntersectionToFeature","intersectedPoint","doNearbyCheck","addToLine","line","cleanedFeature","cleanCoords","nearestPoint1","nearestPointOnLine","properties","index","undefined","geometry","coordinates","splice","modified","indexOnLine","snap","a","b","getType","currentPoint","snappedPoint","existingVertexOnLine","distToExistingVertexOnLine","findIntersectionsWithSuperset","i","length","j","id","intersections","lineIntersect","features","intersectedFeature","optimized","tree","load","forEach","line1","bbox1","bbox","possibleMatches","search","title","match","line2","dimension_where","markAsModified","mapBoxDraw","add","getFirstPointFeature","type","getParentDimension","dimension","splitResult","split","lastChildName","parentDimensionValueStrict","replace","concat","DEFAULT_DIMENSION","getPortalEdgeData","portalLinks","allEdgeLines","portalEdgeData","addLink","link","container","cost","direction","wheelchair","description","property_portalLink","edge","property_secondRelatedId","lines","pathFeatures","property_routeData","filter","portalEdge","push","addNode","mapObjectId","links","portal","escalatorGraph","Object","keys","anchorId","escalator","linksForAnchor","lift","linksForNonAnchor","k","nestedLink","hasNode","setNode","where","taxonomy1Path","hasEdge","setEdge","extrapolateLinks","graph","components","component","reachableNodes","node1","node2","edgeData","nodeEdges","isParallelLink","nodeEdge","nodeToUse","v","w","nodeEdgeData","edgeAsObj","isParallel","removeEdge","addLinkUsingGraph","escalatorEdge","start","performance","now","escalatorGraphEdges","edges","hasOwnProperty","filterPortalEdgeDataByWhere","allPortalEdgeData","whereDimension","portalId","includes","filterPortalEdgeDataByList","portalIdList","has"],"sources":["../../../../../src/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.ts"],"sourcesContent":["import { Feature, LineString, GeoJsonProperties, Point } from 'geojson';\nimport * as turf from '@turf/turf';\nimport { Position } from 'geojson';\nimport MapboxDraw from '@mapbox/mapbox-gl-draw';\nimport GeoJSONRBush from 'geojson-rbush';\nimport { Graph as DagreGraph, alg, Edge as GraphEdge } from '@dagrejs/graphlib';\nimport { cloneDeep, isEmpty } from 'lodash';\nimport {\n EdgeLine, Portal, PortalEdge, PortalEdgeData, PortalLinks, PortalType,\n} from './interfaces';\nimport { getEdge } from './mapObjectsHelper';\n\nconst debugMode = false;\n\nexport const minSnapDistance = 1e-3; // meters\ntype turfLineString = Feature<LineString, GeoJsonProperties>;\n\nfunction indexOfPointOnLine(feature: turfLineString, point: Feature<Point, GeoJsonProperties>) {\n let matchIndex = -1;\n turf.coordEach(feature, (currentCoord: number[], coordIndex: number, featureIndex: number, multiFeatureIndex: number, geometryIndex: number) => {\n if (matchIndex === -1) {\n const lineVertex = turf.point(currentCoord);\n const dist = turf.distance(point, lineVertex, {\n units: 'meters',\n });\n if (debugMode) console.log('coordIndex: ', coordIndex, dist);\n if (dist < minSnapDistance) matchIndex = coordIndex;\n }\n });\n\n if (debugMode) console.log('matchIndex: ', matchIndex);\n return matchIndex;\n}\n\nfunction addIntersectionToFeature(\n intersectedPoint: Feature<Point, GeoJsonProperties>,\n feature: turfLineString,\n doNearbyCheck = true,\n) {\n const addToLine = (point: Position, line: turfLineString) => {\n const cleanedFeature = turf.cleanCoords(line);\n const nearestPoint1 = turf.nearestPointOnLine(cleanedFeature, point);\n if (nearestPoint1.properties.index !== undefined) {\n feature.geometry.coordinates.splice(nearestPoint1.properties.index + 1, 0, intersectedPoint.geometry.coordinates);\n if (feature.properties) feature.properties.modified = 1;\n if (debugMode) console.log('added');\n } else if (debugMode) console.log('nearest point on line undefined');\n };\n\n if (doNearbyCheck) {\n const indexOnLine = indexOfPointOnLine(feature, intersectedPoint);\n if (indexOnLine === -1) {\n addToLine(intersectedPoint.geometry.coordinates, feature);\n } else {\n if (debugMode) console.log('should update vertex', indexOnLine);\n feature.geometry.coordinates[indexOnLine] = intersectedPoint.geometry.coordinates;\n if (feature.properties) feature.properties.modified = 1;\n }\n } else {\n addToLine(intersectedPoint.geometry.coordinates, feature);\n }\n}\n\nfunction snap(a: turfLineString, b: turfLineString) {\n if (turf.getType(a) === 'LineString') {\n turf.coordEach(a, (currentCoord: number[], coordIndex: number, featureIndex: number, multiFeatureIndex: number, geometryIndex: number) => {\n const currentPoint = turf.point(currentCoord);\n const cleanedFeature = turf.cleanCoords(b);\n const snappedPoint = turf.nearestPointOnLine(cleanedFeature, currentPoint, { units: 'meters' });\n\n if (snappedPoint\n && snappedPoint.properties.dist !== undefined && snappedPoint.properties.index !== undefined) {\n const existingVertexOnLine = turf.point(b.geometry.coordinates[snappedPoint.properties.index]);\n const distToExistingVertexOnLine = turf.distance(currentPoint, existingVertexOnLine, {\n units: 'meters',\n });\n // If the snappedPoint is close (< minSnapDistance) to a pre-existing vertex then use that vertex instead of adding new\n if (distToExistingVertexOnLine < minSnapDistance) {\n snappedPoint.geometry.coordinates = existingVertexOnLine.geometry.coordinates;\n a.geometry.coordinates[coordIndex] = snappedPoint.geometry.coordinates;\n if (a.properties) a.properties.modified = 1;\n } else\n // Add a new line vertex to b and move vertex of a to the same location\n if (snappedPoint.properties.dist < minSnapDistance) {\n a.geometry.coordinates[coordIndex] = snappedPoint.geometry.coordinates;\n b.geometry.coordinates.splice(snappedPoint.properties.index + 1, 0, snappedPoint.geometry.coordinates);\n if (a.properties) a.properties.modified = 1;\n }\n }\n });\n }\n}\n\n// if required to disable route_edge X route_edge intersection\n//! (a[i].properties.dimension_what === b[i].properties.dimension_what && a[i].properties.dimension_what === RouteDimension.Edge && b[i].properties.dimension_what === RouteDimension.Edge)\n\n// b is a superset which also includes a\nexport function findIntersectionsWithSuperset(a: turfLineString[], b: turfLineString[]) {\n for (let i = 0; i < a.length; i += 1) {\n for (let j = 0; j < b.length; j += 1) {\n if (a[i].id !== b[j].id) {\n // TODO: Optimize for two-way snapping in one call\n snap(a[i], b[j]);\n snap(b[j], a[i]);\n const intersections = turf.lineIntersect(a[i] as any, b[j] as any);\n if (debugMode) console.log('intersections for ', i, j, intersections);\n\n // Add intersection points to the respective LineStrings\n if (intersections.features.length > 0) {\n for (let index = 0; index < intersections.features.length; index += 1) {\n const intersectedFeature = intersections.features[index];\n\n addIntersectionToFeature(intersectedFeature, a[i]);\n addIntersectionToFeature(intersectedFeature, b[j]);\n }\n }\n } else {\n // since b is a super set and is also returned as the final output, so copy latest state in b\n b[j] = a[i];\n }\n }\n }\n\n return b;\n}\n\n// It updates the given feature data inplace, make sure params are passed by reference.\nexport function optimized(a: turfLineString[], b: turfLineString[]) {\n // Step 1: Build spatial index for the second set of LineStrings\n const tree = GeoJSONRBush();\n tree.load(b);\n\n // Step 2: Find potential intersecting pairs using bounding boxes\n a.forEach((line1) => {\n const bbox1 = turf.bbox(line1);\n const possibleMatches = tree.search(bbox1);\n\n if (debugMode) console.log('possible matches for ', line1.properties.title, possibleMatches);\n\n possibleMatches.features.forEach((match) => {\n const line2 = match;\n if (line1.properties && line1.properties.dimension_where\n && line2.properties && line2.properties.dimension_where\n && line1.properties.dimension_where === line2.properties.dimension_where\n ) {\n // Step 3: Perform detailed intersection check\n snap(line1, line2 as any);\n const intersections = turf.lineIntersect(line1 as any, line2 as any);\n if (debugMode) console.log('intersections', intersections);\n\n // Add intersection points to the respective LineStrings\n if (intersections.features.length > 0) {\n for (let j = 0; j < intersections.features.length; j += 1) {\n const intersectedFeature = intersections.features[j];\n\n addIntersectionToFeature(intersectedFeature, line1, false);\n addIntersectionToFeature(intersectedFeature, line2 as any, false);\n }\n }\n }\n });\n });\n}\n\nexport function markAsModified(features: Array<Feature>, mapBoxDraw: MapboxDraw) {\n if (features) {\n for (let index = 0; index < features.length; index += 1) {\n const feature = features[index];\n // modified key is used to mark that a feature was updated by mapboxDraw or custom logic like intersection during the respective editing session\n feature.properties.modified = 1;\n\n mapBoxDraw.add(feature as any);\n }\n }\n}\n\nexport function getFirstPointFeature(features: Feature[]) : Feature | undefined {\n for (let index = 0; index < features.length; index += 1) {\n const feature = features[index];\n const type = turf.getType(feature as any);\n\n if (type === 'Point') {\n return feature;\n }\n }\n\n return undefined;\n}\n\nexport function getParentDimension(dimension: string) {\n const splitResult = dimension.split('.');\n const lastChildName = splitResult[splitResult.length - 1];\n const parentDimensionValueStrict = dimension.replace('.'.concat(lastChildName), '');\n return parentDimensionValueStrict;\n}\n\nexport const DEFAULT_DIMENSION = 'where.singapore';\nexport function getPortalEdgeData(portalLinks: PortalLinks) {\n const allEdgeLines : EdgeLine[] = [];\n const portalEdgeData : { [key: string] : Portal} = {};\n\n const addLink = (link: any, container: PortalEdge[]) => {\n const {\n cost, direction, wheelchair, description,\n } = link.property_portalLink;\n const edge = getEdge(link.property_secondRelatedId);\n if (edge && edge.lines) {\n const pathFeatures = (link.property_routeData && link.property_routeData.features)\n ? (link.property_routeData.features.filter(\n (feature : Feature<LineString, any>) => feature.geometry !== undefined && turf.getType(feature) === 'LineString' && feature.geometry.coordinates.length > 0,\n ))\n : null;\n const portalEdge = {\n ...edge,\n cost,\n direction,\n wheelchair,\n pathFeatures,\n description,\n } as PortalEdge;\n container.push(portalEdge);\n\n allEdgeLines.push(...edge.lines);\n }\n };\n\n const addNode = (mapObjectId: any, links: PortalEdge[]) => {\n const edge = getEdge(mapObjectId);\n if (edge && edge.lines) {\n const portal = {\n ...edge,\n links,\n };\n portalEdgeData[mapObjectId] = portal;\n\n allEdgeLines.push(...edge.lines);\n\n return portal;\n }\n\n return undefined;\n };\n\n console.log('portalData input', portalLinks);\n const escalatorGraph = new DagreGraph();\n if (!isEmpty(portalLinks)) {\n Object.keys(portalLinks).forEach((anchorId) => {\n const { type, links } = portalLinks[anchorId];\n\n if (type !== PortalType.escalator) {\n const linksForAnchor : PortalEdge[] = [];\n for (let j = 0; j < links.length; j += 1) {\n const link = links[j];\n addLink(link, linksForAnchor);\n\n if (type === PortalType.lift) {\n // Extrapolate links for non-anchor lifts\n const linksForNonAnchor : PortalEdge[] = [];\n for (let k = 0; k < links.length; k += 1) {\n const nestedLink = links[k];\n if (nestedLink.property_secondRelatedId !== link.property_secondRelatedId) {\n addLink(nestedLink, linksForNonAnchor);\n }\n }\n if (linksForNonAnchor.length > 0) {\n // Add node for non-anchor lift\n addNode(link.property_secondRelatedId, linksForNonAnchor);\n }\n }\n }\n\n // Add node for anchor\n addNode(anchorId, linksForAnchor);\n } else {\n if (!escalatorGraph.hasNode(anchorId)) {\n const edge = getEdge(anchorId);\n if (edge) {\n escalatorGraph.setNode(anchorId, {\n where: edge.where,\n });\n }\n }\n\n for (let j = 0; j < links.length; j += 1) {\n const link = links[j];\n if (!escalatorGraph.hasNode(link.property_secondRelatedId)) {\n escalatorGraph.setNode(anchorId, {\n where: link.taxonomy1Path,\n });\n }\n\n if (!escalatorGraph.hasEdge(anchorId, link.property_secondRelatedId)) {\n escalatorGraph.setEdge(anchorId, link.property_secondRelatedId, {\n ...link.property_portalLink,\n });\n }\n }\n }\n });\n }\n\n // eslint-disable-next-line no-loop-func\n const extrapolateLinks = (graph: DagreGraph) => {\n const components = alg.components(graph);\n components.forEach((component) => {\n const reachableNodes = component;\n\n // Connect the node directly to each indirectly connected node\n for (let i = 0; i < reachableNodes.length; i += 1) {\n const node1 = reachableNodes[i];\n for (let j = i + 1; j < reachableNodes.length; j += 1) {\n const node2 = reachableNodes[j];\n if (node1 !== node2 && !graph.hasEdge(node1, node2)) {\n let edgeData = {\n cost: 120, direction: 2, wheelchair: true,\n };\n const nodeEdges = graph.nodeEdges(node1);\n let isParallelLink = false;\n if (nodeEdges && nodeEdges.length > 0) {\n for (let k = 0; !isParallelLink && k < nodeEdges.length; k += 1) {\n const nodeEdge = nodeEdges[k];\n\n // check sibling connection with node2\n const nodeToUse = nodeEdge.v === node1 ? nodeEdge.w : nodeEdge.v;\n if (graph.hasEdge(nodeToUse, node2)) {\n const nodeEdgeData = graph.edgeAsObj(nodeToUse, node2);\n if ('isParallel' in nodeEdgeData && nodeEdgeData.isParallel) {\n isParallelLink = true;\n }\n }\n }\n edgeData = graph.edgeAsObj(nodeEdges[0]) as any;\n }\n\n if (!isParallelLink) {\n if (graph.hasEdge(node2, node1)) {\n edgeData = cloneDeep(graph.edgeAsObj(node2, node1) as any);\n if ('direction' in edgeData && edgeData.direction) {\n if (edgeData.direction !== 2) edgeData.direction *= -1;\n }\n }\n graph.setEdge(node1, node2, edgeData);\n }\n }\n }\n }\n\n // Delete all parallel links from graph\n for (let i = 0; i < reachableNodes.length; i += 1) {\n const node1 = reachableNodes[i];\n const nodeEdges = graph.nodeEdges(node1);\n for (let k = 0; nodeEdges && k < nodeEdges.length; k += 1) {\n const nodeEdge = nodeEdges[k];\n const nodeEdgeData = graph.edgeAsObj(nodeEdge);\n if ('isParallel' in nodeEdgeData && nodeEdgeData.isParallel) {\n graph.removeEdge(nodeEdge.v, nodeEdge.w);\n }\n }\n }\n });\n };\n\n const addLinkUsingGraph = (portal: Portal, escalatorEdge: GraphEdge) => {\n const nodeEdgeData = escalatorGraph.edge(escalatorEdge);\n const {\n cost, direction, wheelchair, pathFeatures, description,\n } = nodeEdgeData;\n const edge = getEdge(escalatorEdge.w);\n if (edge && edge.lines) {\n const portalEdge = {\n ...edge,\n cost,\n direction,\n wheelchair,\n pathFeatures,\n description,\n } as PortalEdge;\n portal.links.push(portalEdge);\n allEdgeLines.push(...edge.lines);\n }\n };\n\n const start = performance.now();\n extrapolateLinks(escalatorGraph);\n console.log('time extrapolation: ', (performance.now() - start) / 1000);\n\n // Add escaaltor links to portalEdgeData using the escalator graph\n const escalatorGraphEdges = escalatorGraph.edges();\n for (let i = 0; i < escalatorGraphEdges.length; i += 1) {\n const escalatorEdge = escalatorGraphEdges[i];\n // eslint-disable-next-line no-prototype-builtins\n if (!portalEdgeData.hasOwnProperty(escalatorEdge.v)) {\n // Add node and then add link\n const portal = addNode(escalatorEdge.v, []);\n if (portal) {\n addLinkUsingGraph(portal, escalatorEdge);\n }\n } else {\n const portal = portalEdgeData[escalatorEdge.v];\n addLinkUsingGraph(portal, escalatorEdge);\n }\n }\n\n console.log('portalEdgeData', portalEdgeData);\n return {\n edgeData: portalEdgeData,\n lines: allEdgeLines,\n };\n}\n\nexport function filterPortalEdgeDataByWhere(allPortalEdgeData: PortalEdgeData, whereDimension: string) {\n const allEdgeLines : EdgeLine[] = [];\n const portalEdgeData : { [key: string] : Portal} = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const portalId in allPortalEdgeData) {\n if (allPortalEdgeData[portalId].where.includes(whereDimension)) {\n const portal = allPortalEdgeData[portalId];\n portalEdgeData[portalId] = portal;\n allEdgeLines.push(...portal.lines);\n portal.links.forEach((link) => {\n allEdgeLines.push(...link.lines);\n });\n }\n }\n\n return {\n edgeData: portalEdgeData,\n lines: allEdgeLines,\n };\n}\n\nexport function filterPortalEdgeDataByList(allPortalEdgeData: PortalEdgeData, portalIdList: Set<string>) {\n const allEdgeLines : EdgeLine[] = [];\n const portalEdgeData : { [key: string] : Portal} = {};\n\n portalIdList.forEach((portalId) => {\n if (portalId in allPortalEdgeData && portalIdList.has(allPortalEdgeData[portalId].id)) {\n const portal = allPortalEdgeData[portalId];\n portalEdgeData[portalId] = portal;\n allEdgeLines.push(...portal.lines);\n portal.links.forEach((link) => {\n allEdgeLines.push(...link.lines);\n });\n }\n });\n\n return {\n edgeData: portalEdgeData,\n lines: allEdgeLines,\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["turf","GeoJSONRBush","Graph","DagreGraph","alg","cloneDeep","isEmpty","PortalType","getEdge","debugMode","minSnapDistance","indexOfPointOnLine","feature","point","matchIndex","coordEach","currentCoord","coordIndex","featureIndex","multiFeatureIndex","geometryIndex","lineVertex","dist","distance","units","console","log","addIntersectionToFeature","intersectedPoint","doNearbyCheck","arguments","length","undefined","addToLine","line","cleanedFeature","cleanCoords","nearestPoint1","nearestPointOnLine","properties","index","geometry","coordinates","splice","modified","indexOnLine","snap","a","b","getType","currentPoint","snappedPoint","existingVertexOnLine","distToExistingVertexOnLine","findIntersectionsWithSuperset","i","j","id","intersections","lineIntersect","features","intersectedFeature","optimized","tree","load","forEach","line1","bbox1","bbox","possibleMatches","search","title","match","line2","dimension_where","markAsModified","mapBoxDraw","add","getFirstPointFeature","type","getParentDimension","dimension","splitResult","split","lastChildName","parentDimensionValueStrict","replace","concat","DEFAULT_DIMENSION","getPortalEdgeData","portalLinks","allEdgeLines","portalEdgeData","addLink","link","container","cost","direction","wheelchair","description","property_portalLink","edge","property_secondRelatedId","lines","pathFeatures","property_routeData","filter","portalEdge","_objectSpread","push","addNode","mapObjectId","links","portal","escalatorGraph","Object","keys","anchorId","escalator","linksForAnchor","lift","linksForNonAnchor","k","nestedLink","hasNode","setNode","where","taxonomy1Path","hasEdge","setEdge","extrapolateLinks","graph","components","component","reachableNodes","node1","node2","edgeData","nodeEdges","isParallelLink","nodeEdge","nodeToUse","v","w","nodeEdgeData","edgeAsObj","isParallel","removeEdge","addLinkUsingGraph","escalatorEdge","start","performance","now","escalatorGraphEdges","edges","hasOwnProperty","filterPortalEdgeDataByWhere","allPortalEdgeData","whereDimension","portalId","includes","filterPortalEdgeDataByList","portalIdList","has"],"sources":["../../../../../src/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.ts"],"sourcesContent":["import { Feature, LineString, GeoJsonProperties, Point } from 'geojson';\nimport * as turf from '@turf/turf';\nimport { Position } from 'geojson';\nimport MapboxDraw from '@mapbox/mapbox-gl-draw';\nimport GeoJSONRBush from 'geojson-rbush';\nimport { Graph as DagreGraph, alg, Edge as GraphEdge } from '@dagrejs/graphlib';\nimport { cloneDeep, isEmpty } from 'lodash';\nimport {\n EdgeLine, Portal, PortalEdge, PortalEdgeData, PortalLinks, PortalType,\n} from './interfaces';\nimport { getEdge } from './mapObjectsHelper';\n\nconst debugMode = false;\n\nexport const minSnapDistance = 1e-3; // meters\ntype turfLineString = Feature<LineString, GeoJsonProperties>;\n\nfunction indexOfPointOnLine(feature: turfLineString, point: Feature<Point, GeoJsonProperties>) {\n let matchIndex = -1;\n turf.coordEach(feature, (currentCoord: number[], coordIndex: number, featureIndex: number, multiFeatureIndex: number, geometryIndex: number) => {\n if (matchIndex === -1) {\n const lineVertex = turf.point(currentCoord);\n const dist = turf.distance(point, lineVertex, {\n units: 'meters',\n });\n if (debugMode) console.log('coordIndex: ', coordIndex, dist);\n if (dist < minSnapDistance) matchIndex = coordIndex;\n }\n });\n\n if (debugMode) console.log('matchIndex: ', matchIndex);\n return matchIndex;\n}\n\nfunction addIntersectionToFeature(\n intersectedPoint: Feature<Point, GeoJsonProperties>,\n feature: turfLineString,\n doNearbyCheck = true,\n) {\n const addToLine = (point: Position, line: turfLineString) => {\n const cleanedFeature = turf.cleanCoords(line);\n const nearestPoint1 = turf.nearestPointOnLine(cleanedFeature, point);\n if (nearestPoint1.properties.index !== undefined) {\n feature.geometry.coordinates.splice(nearestPoint1.properties.index + 1, 0, intersectedPoint.geometry.coordinates);\n if (feature.properties) feature.properties.modified = 1;\n if (debugMode) console.log('added');\n } else if (debugMode) console.log('nearest point on line undefined');\n };\n\n if (doNearbyCheck) {\n const indexOnLine = indexOfPointOnLine(feature, intersectedPoint);\n if (indexOnLine === -1) {\n addToLine(intersectedPoint.geometry.coordinates, feature);\n } else {\n if (debugMode) console.log('should update vertex', indexOnLine);\n feature.geometry.coordinates[indexOnLine] = intersectedPoint.geometry.coordinates;\n if (feature.properties) feature.properties.modified = 1;\n }\n } else {\n addToLine(intersectedPoint.geometry.coordinates, feature);\n }\n}\n\nfunction snap(a: turfLineString, b: turfLineString) {\n if (turf.getType(a) === 'LineString') {\n turf.coordEach(a, (currentCoord: number[], coordIndex: number, featureIndex: number, multiFeatureIndex: number, geometryIndex: number) => {\n const currentPoint = turf.point(currentCoord);\n const cleanedFeature = turf.cleanCoords(b);\n const snappedPoint = turf.nearestPointOnLine(cleanedFeature, currentPoint, { units: 'meters' });\n\n if (snappedPoint\n && snappedPoint.properties.dist !== undefined && snappedPoint.properties.index !== undefined) {\n const existingVertexOnLine = turf.point(b.geometry.coordinates[snappedPoint.properties.index]);\n const distToExistingVertexOnLine = turf.distance(currentPoint, existingVertexOnLine, {\n units: 'meters',\n });\n // If the snappedPoint is close (< minSnapDistance) to a pre-existing vertex then use that vertex instead of adding new\n if (distToExistingVertexOnLine < minSnapDistance) {\n snappedPoint.geometry.coordinates = existingVertexOnLine.geometry.coordinates;\n a.geometry.coordinates[coordIndex] = snappedPoint.geometry.coordinates;\n if (a.properties) a.properties.modified = 1;\n } else\n // Add a new line vertex to b and move vertex of a to the same location\n if (snappedPoint.properties.dist < minSnapDistance) {\n a.geometry.coordinates[coordIndex] = snappedPoint.geometry.coordinates;\n b.geometry.coordinates.splice(snappedPoint.properties.index + 1, 0, snappedPoint.geometry.coordinates);\n if (a.properties) a.properties.modified = 1;\n }\n }\n });\n }\n}\n\n// if required to disable route_edge X route_edge intersection\n//! (a[i].properties.dimension_what === b[i].properties.dimension_what && a[i].properties.dimension_what === RouteDimension.Edge && b[i].properties.dimension_what === RouteDimension.Edge)\n\n// b is a superset which also includes a\nexport function findIntersectionsWithSuperset(a: turfLineString[], b: turfLineString[]) {\n for (let i = 0; i < a.length; i += 1) {\n for (let j = 0; j < b.length; j += 1) {\n if (a[i].id !== b[j].id) {\n // TODO: Optimize for two-way snapping in one call\n snap(a[i], b[j]);\n snap(b[j], a[i]);\n const intersections = turf.lineIntersect(a[i] as any, b[j] as any);\n if (debugMode) console.log('intersections for ', i, j, intersections);\n\n // Add intersection points to the respective LineStrings\n if (intersections.features.length > 0) {\n for (let index = 0; index < intersections.features.length; index += 1) {\n const intersectedFeature = intersections.features[index];\n\n addIntersectionToFeature(intersectedFeature, a[i]);\n addIntersectionToFeature(intersectedFeature, b[j]);\n }\n }\n } else {\n // since b is a super set and is also returned as the final output, so copy latest state in b\n b[j] = a[i];\n }\n }\n }\n\n return b;\n}\n\n// It updates the given feature data inplace, make sure params are passed by reference.\nexport function optimized(a: turfLineString[], b: turfLineString[]) {\n // Step 1: Build spatial index for the second set of LineStrings\n const tree = GeoJSONRBush();\n tree.load(b);\n\n // Step 2: Find potential intersecting pairs using bounding boxes\n a.forEach((line1) => {\n const bbox1 = turf.bbox(line1);\n const possibleMatches = tree.search(bbox1);\n\n if (debugMode) console.log('possible matches for ', line1.properties.title, possibleMatches);\n\n possibleMatches.features.forEach((match) => {\n const line2 = match;\n if (line1.properties && line1.properties.dimension_where\n && line2.properties && line2.properties.dimension_where\n && line1.properties.dimension_where === line2.properties.dimension_where\n ) {\n // Step 3: Perform detailed intersection check\n snap(line1, line2 as any);\n const intersections = turf.lineIntersect(line1 as any, line2 as any);\n if (debugMode) console.log('intersections', intersections);\n\n // Add intersection points to the respective LineStrings\n if (intersections.features.length > 0) {\n for (let j = 0; j < intersections.features.length; j += 1) {\n const intersectedFeature = intersections.features[j];\n\n addIntersectionToFeature(intersectedFeature, line1, false);\n addIntersectionToFeature(intersectedFeature, line2 as any, false);\n }\n }\n }\n });\n });\n}\n\nexport function markAsModified(features: Array<Feature>, mapBoxDraw: MapboxDraw) {\n if (features) {\n for (let index = 0; index < features.length; index += 1) {\n const feature = features[index];\n // modified key is used to mark that a feature was updated by mapboxDraw or custom logic like intersection during the respective editing session\n feature.properties.modified = 1;\n\n mapBoxDraw.add(feature as any);\n }\n }\n}\n\nexport function getFirstPointFeature(features: Feature[]) : Feature | undefined {\n for (let index = 0; index < features.length; index += 1) {\n const feature = features[index];\n const type = turf.getType(feature as any);\n\n if (type === 'Point') {\n return feature;\n }\n }\n\n return undefined;\n}\n\nexport function getParentDimension(dimension: string) {\n const splitResult = dimension.split('.');\n const lastChildName = splitResult[splitResult.length - 1];\n const parentDimensionValueStrict = dimension.replace('.'.concat(lastChildName), '');\n return parentDimensionValueStrict;\n}\n\nexport const DEFAULT_DIMENSION = 'where.singapore';\nexport function getPortalEdgeData(portalLinks: PortalLinks) {\n const allEdgeLines : EdgeLine[] = [];\n const portalEdgeData : { [key: string] : Portal} = {};\n\n const addLink = (link: any, container: PortalEdge[]) => {\n const {\n cost, direction, wheelchair, description,\n } = link.property_portalLink;\n const edge = getEdge(link.property_secondRelatedId);\n if (edge && edge.lines) {\n const pathFeatures = (link.property_routeData && link.property_routeData.features)\n ? (link.property_routeData.features.filter(\n (feature : Feature<LineString, any>) => feature.geometry !== undefined && turf.getType(feature) === 'LineString' && feature.geometry.coordinates.length > 0,\n ))\n : null;\n const portalEdge = {\n ...edge,\n cost,\n direction,\n wheelchair,\n pathFeatures,\n description,\n } as PortalEdge;\n container.push(portalEdge);\n\n allEdgeLines.push(...edge.lines);\n }\n };\n\n const addNode = (mapObjectId: any, links: PortalEdge[]) => {\n const edge = getEdge(mapObjectId);\n if (edge && edge.lines) {\n const portal = {\n ...edge,\n links,\n };\n portalEdgeData[mapObjectId] = portal;\n\n allEdgeLines.push(...edge.lines);\n\n return portal;\n }\n\n return undefined;\n };\n\n console.log('portalData input', portalLinks);\n const escalatorGraph = new DagreGraph();\n if (!isEmpty(portalLinks)) {\n Object.keys(portalLinks).forEach((anchorId) => {\n const { type, links } = portalLinks[anchorId];\n\n if (type !== PortalType.escalator) {\n const linksForAnchor : PortalEdge[] = [];\n for (let j = 0; j < links.length; j += 1) {\n const link = links[j];\n addLink(link, linksForAnchor);\n\n if (type === PortalType.lift) {\n // Extrapolate links for non-anchor lifts\n const linksForNonAnchor : PortalEdge[] = [];\n for (let k = 0; k < links.length; k += 1) {\n const nestedLink = links[k];\n if (nestedLink.property_secondRelatedId !== link.property_secondRelatedId) {\n addLink(nestedLink, linksForNonAnchor);\n }\n }\n if (linksForNonAnchor.length > 0) {\n // Add node for non-anchor lift\n addNode(link.property_secondRelatedId, linksForNonAnchor);\n }\n }\n }\n\n // Add node for anchor\n addNode(anchorId, linksForAnchor);\n } else {\n if (!escalatorGraph.hasNode(anchorId)) {\n const edge = getEdge(anchorId);\n if (edge) {\n escalatorGraph.setNode(anchorId, {\n where: edge.where,\n });\n }\n }\n\n for (let j = 0; j < links.length; j += 1) {\n const link = links[j];\n if (!escalatorGraph.hasNode(link.property_secondRelatedId)) {\n escalatorGraph.setNode(anchorId, {\n where: link.taxonomy1Path,\n });\n }\n\n if (!escalatorGraph.hasEdge(anchorId, link.property_secondRelatedId)) {\n escalatorGraph.setEdge(anchorId, link.property_secondRelatedId, {\n ...link.property_portalLink,\n });\n }\n }\n }\n });\n }\n\n // eslint-disable-next-line no-loop-func\n const extrapolateLinks = (graph: DagreGraph) => {\n const components = alg.components(graph);\n components.forEach((component) => {\n const reachableNodes = component;\n\n // Connect the node directly to each indirectly connected node\n for (let i = 0; i < reachableNodes.length; i += 1) {\n const node1 = reachableNodes[i];\n for (let j = i + 1; j < reachableNodes.length; j += 1) {\n const node2 = reachableNodes[j];\n if (node1 !== node2 && !graph.hasEdge(node1, node2)) {\n let edgeData = {\n cost: 120, direction: 2, wheelchair: true,\n };\n const nodeEdges = graph.nodeEdges(node1);\n let isParallelLink = false;\n if (nodeEdges && nodeEdges.length > 0) {\n for (let k = 0; !isParallelLink && k < nodeEdges.length; k += 1) {\n const nodeEdge = nodeEdges[k];\n\n // check sibling connection with node2\n const nodeToUse = nodeEdge.v === node1 ? nodeEdge.w : nodeEdge.v;\n if (graph.hasEdge(nodeToUse, node2)) {\n const nodeEdgeData = graph.edgeAsObj(nodeToUse, node2);\n if ('isParallel' in nodeEdgeData && nodeEdgeData.isParallel) {\n isParallelLink = true;\n }\n }\n }\n edgeData = graph.edgeAsObj(nodeEdges[0]) as any;\n }\n\n if (!isParallelLink) {\n if (graph.hasEdge(node2, node1)) {\n edgeData = cloneDeep(graph.edgeAsObj(node2, node1) as any);\n if ('direction' in edgeData && edgeData.direction) {\n if (edgeData.direction !== 2) edgeData.direction *= -1;\n }\n }\n graph.setEdge(node1, node2, edgeData);\n }\n }\n }\n }\n\n // Delete all parallel links from graph\n for (let i = 0; i < reachableNodes.length; i += 1) {\n const node1 = reachableNodes[i];\n const nodeEdges = graph.nodeEdges(node1);\n for (let k = 0; nodeEdges && k < nodeEdges.length; k += 1) {\n const nodeEdge = nodeEdges[k];\n const nodeEdgeData = graph.edgeAsObj(nodeEdge);\n if ('isParallel' in nodeEdgeData && nodeEdgeData.isParallel) {\n graph.removeEdge(nodeEdge.v, nodeEdge.w);\n }\n }\n }\n });\n };\n\n const addLinkUsingGraph = (portal: Portal, escalatorEdge: GraphEdge) => {\n const nodeEdgeData = escalatorGraph.edge(escalatorEdge);\n const {\n cost, direction, wheelchair, pathFeatures, description,\n } = nodeEdgeData;\n const edge = getEdge(escalatorEdge.w);\n if (edge && edge.lines) {\n const portalEdge = {\n ...edge,\n cost,\n direction,\n wheelchair,\n pathFeatures,\n description,\n } as PortalEdge;\n portal.links.push(portalEdge);\n allEdgeLines.push(...edge.lines);\n }\n };\n\n const start = performance.now();\n extrapolateLinks(escalatorGraph);\n console.log('time extrapolation: ', (performance.now() - start) / 1000);\n\n // Add escaaltor links to portalEdgeData using the escalator graph\n const escalatorGraphEdges = escalatorGraph.edges();\n for (let i = 0; i < escalatorGraphEdges.length; i += 1) {\n const escalatorEdge = escalatorGraphEdges[i];\n // eslint-disable-next-line no-prototype-builtins\n if (!portalEdgeData.hasOwnProperty(escalatorEdge.v)) {\n // Add node and then add link\n const portal = addNode(escalatorEdge.v, []);\n if (portal) {\n addLinkUsingGraph(portal, escalatorEdge);\n }\n } else {\n const portal = portalEdgeData[escalatorEdge.v];\n addLinkUsingGraph(portal, escalatorEdge);\n }\n }\n\n console.log('portalEdgeData', portalEdgeData);\n return {\n edgeData: portalEdgeData,\n lines: allEdgeLines,\n };\n}\n\nexport function filterPortalEdgeDataByWhere(allPortalEdgeData: PortalEdgeData, whereDimension: string) {\n const allEdgeLines : EdgeLine[] = [];\n const portalEdgeData : { [key: string] : Portal} = {};\n\n // eslint-disable-next-line no-restricted-syntax\n for (const portalId in allPortalEdgeData) {\n if (allPortalEdgeData[portalId].where.includes(whereDimension)) {\n const portal = allPortalEdgeData[portalId];\n portalEdgeData[portalId] = portal;\n allEdgeLines.push(...portal.lines);\n portal.links.forEach((link) => {\n allEdgeLines.push(...link.lines);\n });\n }\n }\n\n return {\n edgeData: portalEdgeData,\n lines: allEdgeLines,\n };\n}\n\nexport function filterPortalEdgeDataByList(allPortalEdgeData: PortalEdgeData, portalIdList: Set<string>) {\n const allEdgeLines : EdgeLine[] = [];\n const portalEdgeData : { [key: string] : Portal} = {};\n\n portalIdList.forEach((portalId) => {\n if (portalId in allPortalEdgeData && portalIdList.has(allPortalEdgeData[portalId].id)) {\n const portal = allPortalEdgeData[portalId];\n portalEdgeData[portalId] = portal;\n allEdgeLines.push(...portal.lines);\n portal.links.forEach((link) => {\n allEdgeLines.push(...link.lines);\n });\n }\n });\n\n return {\n edgeData: portalEdgeData,\n lines: allEdgeLines,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -33,7 +33,10 @@ function generateIconSizeExpression(config) {
33
33
  const interpolateExpression = ['interpolate', ['linear'], ['zoom']];
34
34
  zoomLevels.forEach(zoom => {
35
35
  const scale = config.zoomScales[zoom];
36
- const matchExpression = ['match', ['get', 'tier'], ...Object.entries(config.tierSizes).flatMap(([tier, size]) => tier === 'default' ? [] : [tier, size * scale]), config.tierSizes.default * scale // fallback
36
+ const matchExpression = ['match', ['get', 'tier'], ...Object.entries(config.tierSizes).flatMap(_ref => {
37
+ let [tier, size] = _ref;
38
+ return tier === 'default' ? [] : [tier, size * scale];
39
+ }), config.tierSizes.default * scale // fallback
37
40
  ];
38
41
  interpolateExpression.push(zoom, matchExpression);
39
42
  });