@twinmatrix/spatialverse-sdk-web 0.0.3 → 0.0.5
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.
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +2 -2
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.js +293 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.js.map +1 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.js +35 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.js.map +1 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.js +33 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.js.map +1 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.js +307 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.js.map +1 -0
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +4 -3
- package/lib/cjs/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js +202 -198
- package/lib/cjs/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +3 -3
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/focustree.json +121 -0
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +32 -29
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +10 -13
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +55 -68
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +12 -12
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/MetaAtlasCore/whatTaxonomies.json +170 -0
- package/lib/cjs/meta-atlas-sdk/combined_style.json +2313 -0
- package/lib/cjs/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.js +166 -0
- package/lib/cjs/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.js.map +1 -0
- package/lib/cjs/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.js +229 -0
- package/lib/cjs/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.js.map +1 -0
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js +73 -69
- package/lib/cjs/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js +6 -1
- package/lib/cjs/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js +103 -103
- package/lib/cjs/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/cjs/react/MetaAtlasMap.js +4 -4
- package/lib/cjs/react/MetaAtlasMap.js.map +1 -1
- package/lib/cjs/react/hooks/useMapEvents/index.js +6 -3
- package/lib/cjs/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/index.js +7 -5
- package/lib/cjs/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js +1 -1
- package/lib/cjs/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/cjs/react/stores/useMapDataStore.js +17 -21
- package/lib/cjs/react/stores/useMapDataStore.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js +2 -2
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/CustomThreeJsWrapper.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.js +286 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.js.map +1 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.js +27 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.js.map +1 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.js +27 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.js.map +1 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.js +305 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.js.map +1 -0
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js +4 -3
- package/lib/esm/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js +202 -198
- package/lib/esm/meta-atlas-sdk/3DMap/MainMap.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js +3 -3
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/fetch-published-json.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/focustree.json +121 -0
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js +32 -29
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/meta-atlas-sdk-core.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js +10 -8
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/index.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js +55 -68
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/routing-helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js +12 -12
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/routing-core/utils.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/MetaAtlasCore/whatTaxonomies.json +170 -0
- package/lib/esm/meta-atlas-sdk/combined_style.json +2313 -0
- package/lib/esm/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.js +158 -0
- package/lib/esm/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.js.map +1 -0
- package/lib/esm/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.js +221 -0
- package/lib/esm/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.js.map +1 -0
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js +73 -68
- package/lib/esm/meta-atlas-sdk/meta-atlas-sdk.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/helpers.js +1 -1
- package/lib/esm/meta-atlas-sdk/utils/helpers.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js +6 -1
- package/lib/esm/meta-atlas-sdk/utils/local-storage.js.map +1 -1
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js +103 -101
- package/lib/esm/meta-atlas-sdk/utils/routing-visualizer/index.js.map +1 -1
- package/lib/esm/react/MetaAtlasMap.js +4 -4
- package/lib/esm/react/MetaAtlasMap.js.map +1 -1
- package/lib/esm/react/hooks/useMapEvents/index.js +6 -3
- package/lib/esm/react/hooks/useMapEvents/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/index.js +7 -5
- package/lib/esm/react/hooks/useStampRally/index.js.map +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js +1 -1
- package/lib/esm/react/hooks/useStampRally/utils.js.map +1 -1
- package/lib/esm/react/stores/useMapDataStore.js +17 -21
- package/lib/esm/react/stores/useMapDataStore.js.map +1 -1
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts +30 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraSync.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts +5 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/CameraUtils.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts +21 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/constants.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts +27 -0
- package/lib/types/meta-atlas-sdk/3DMap/CustomThreeJsWrapper/utility/suncalc.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts +18 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/draw_marker.d.ts.map +1 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts +37 -0
- package/lib/types/meta-atlas-sdk/mapbox_draw_custom_modes/marker_select.d.ts.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["turf","_interopRequireWildcard","require","_geojsonRbush","_interopRequireDefault","_graphlib","_lodash","_interfaces","_mapObjectsHelper","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","debugMode","minSnapDistance","exports","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","j","id","intersections","lineIntersect","features","intersectedFeature","optimized","tree","GeoJSONRBush","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","getEdge","property_secondRelatedId","lines","pathFeatures","property_routeData","filter","portalEdge","push","addNode","mapObjectId","links","portal","escalatorGraph","DagreGraph","isEmpty","keys","anchorId","PortalType","escalator","linksForAnchor","lift","linksForNonAnchor","k","nestedLink","hasNode","setNode","where","taxonomy1Path","hasEdge","setEdge","extrapolateLinks","graph","components","alg","component","reachableNodes","node1","node2","edgeData","nodeEdges","isParallelLink","nodeEdge","nodeToUse","v","w","nodeEdgeData","edgeAsObj","isParallel","cloneDeep","removeEdge","addLinkUsingGraph","escalatorEdge","start","performance","now","escalatorGraphEdges","edges","filterPortalEdgeDataByWhere","allPortalEdgeData","whereDimension","portalId","includes","filterPortalEdgeDataByList","portalIdList"],"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","_interopRequireWildcard","require","_geojsonRbush","_interopRequireDefault","_graphlib","_lodash","_interfaces","_mapObjectsHelper","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","debugMode","minSnapDistance","exports","indexOfPointOnLine","feature","point","matchIndex","coordEach","currentCoord","coordIndex","featureIndex","multiFeatureIndex","geometryIndex","lineVertex","dist","distance","units","console","log","addIntersectionToFeature","intersectedPoint","doNearbyCheck","undefined","addToLine","line","cleanedFeature","cleanCoords","nearestPoint1","nearestPointOnLine","properties","index","geometry","coordinates","splice","modified","indexOnLine","snap","a","b","getType","currentPoint","snappedPoint","existingVertexOnLine","distToExistingVertexOnLine","findIntersectionsWithSuperset","j","id","intersections","lineIntersect","features","intersectedFeature","optimized","tree","GeoJSONRBush","load","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","getEdge","property_secondRelatedId","lines","pathFeatures","property_routeData","portalEdge","addNode","mapObjectId","links","portal","escalatorGraph","DagreGraph","isEmpty","anchorId","PortalType","escalator","linksForAnchor","lift","linksForNonAnchor","k","nestedLink","hasNode","setNode","where","taxonomy1Path","hasEdge","setEdge","extrapolateLinks","graph","components","alg","component","reachableNodes","node1","node2","edgeData","nodeEdges","isParallelLink","nodeEdge","nodeToUse","v","w","nodeEdgeData","edgeAsObj","isParallel","cloneDeep","removeEdge","addLinkUsingGraph","escalatorEdge","start","performance","now","escalatorGraphEdges","edges","filterPortalEdgeDataByWhere","allPortalEdgeData","whereDimension","portalId","includes","filterPortalEdgeDataByList","portalIdList"],"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":[]}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
{
|
|
2
|
+
"food": [
|
|
3
|
+
"what.shop.food_anchor",
|
|
4
|
+
"what.shop.food"
|
|
5
|
+
],
|
|
6
|
+
"fun": [
|
|
7
|
+
"what.shop.fun"
|
|
8
|
+
],
|
|
9
|
+
"retail": [
|
|
10
|
+
"what.shop.retail_anchor",
|
|
11
|
+
"what.shop.retail"
|
|
12
|
+
],
|
|
13
|
+
"carpark": [
|
|
14
|
+
"what.infra.carpark"
|
|
15
|
+
],
|
|
16
|
+
"entrance": [
|
|
17
|
+
"what.infra.entrance"
|
|
18
|
+
],
|
|
19
|
+
"exit": [
|
|
20
|
+
"what.infra.exit"
|
|
21
|
+
],
|
|
22
|
+
"escalator": [
|
|
23
|
+
"what.infra.escalator"
|
|
24
|
+
],
|
|
25
|
+
"lift": [
|
|
26
|
+
"what.infra.lift"
|
|
27
|
+
],
|
|
28
|
+
"stairs": [
|
|
29
|
+
"what.infra.stairs"
|
|
30
|
+
],
|
|
31
|
+
"bicycle parking": [
|
|
32
|
+
"what.infra.parking_bike"
|
|
33
|
+
],
|
|
34
|
+
"bicycle locker": [
|
|
35
|
+
"what.infra.parking_bike_locked"
|
|
36
|
+
],
|
|
37
|
+
"airport transfer": [
|
|
38
|
+
"what.service.airport_transfer"
|
|
39
|
+
],
|
|
40
|
+
"immigration": [
|
|
41
|
+
"what.service.immigration"
|
|
42
|
+
],
|
|
43
|
+
"ground transport concierge": [
|
|
44
|
+
"what.service.ground_transport_concierge"
|
|
45
|
+
],
|
|
46
|
+
"tax refund": [
|
|
47
|
+
"what.service.tax_refund"
|
|
48
|
+
],
|
|
49
|
+
"information": [
|
|
50
|
+
"what.service.information"
|
|
51
|
+
],
|
|
52
|
+
"baggage claim": [
|
|
53
|
+
"what.service.baggage_claim"
|
|
54
|
+
],
|
|
55
|
+
"baggage storage": [
|
|
56
|
+
"what.service.baggage_storage"
|
|
57
|
+
],
|
|
58
|
+
"checkin": [
|
|
59
|
+
"what.service.checkin"
|
|
60
|
+
],
|
|
61
|
+
"checkin early": [
|
|
62
|
+
"what.service.checkin_early"
|
|
63
|
+
],
|
|
64
|
+
"money exchange": [
|
|
65
|
+
"what.service.money_exchange"
|
|
66
|
+
],
|
|
67
|
+
"movie theatre": [
|
|
68
|
+
"what.service.movie_theatre"
|
|
69
|
+
],
|
|
70
|
+
"changi rewards": [
|
|
71
|
+
"what.service.changi_rewards"
|
|
72
|
+
],
|
|
73
|
+
"connect changi": [
|
|
74
|
+
"what.service.connect_changi"
|
|
75
|
+
],
|
|
76
|
+
"attraction tour": [
|
|
77
|
+
"what.service.attraction_tour"
|
|
78
|
+
],
|
|
79
|
+
"atm": [
|
|
80
|
+
"what.service.atm"
|
|
81
|
+
],
|
|
82
|
+
"charging point": [
|
|
83
|
+
"what.service.device_charging"
|
|
84
|
+
],
|
|
85
|
+
"internet": [
|
|
86
|
+
"what.service.internet"
|
|
87
|
+
],
|
|
88
|
+
"clinic": [
|
|
89
|
+
"what.service.clinic"
|
|
90
|
+
],
|
|
91
|
+
"lost and found": [
|
|
92
|
+
"what.service.lost_and_found"
|
|
93
|
+
],
|
|
94
|
+
"post": [
|
|
95
|
+
"what.service.post"
|
|
96
|
+
],
|
|
97
|
+
"airline lounge": [
|
|
98
|
+
"what.service.airline_lounge"
|
|
99
|
+
],
|
|
100
|
+
"changi lounge": [
|
|
101
|
+
"what.service.lounge_changi"
|
|
102
|
+
],
|
|
103
|
+
"pay per use lounge": [
|
|
104
|
+
"what.service.pay_per_use_lounge"
|
|
105
|
+
],
|
|
106
|
+
"tv lounge": [
|
|
107
|
+
"what.service.tv_lounge"
|
|
108
|
+
],
|
|
109
|
+
"lodging": [
|
|
110
|
+
"what.service.lodging"
|
|
111
|
+
],
|
|
112
|
+
"meditation room": [
|
|
113
|
+
"what.service.meditation_room"
|
|
114
|
+
],
|
|
115
|
+
"prayer room": [
|
|
116
|
+
"what.service.prayer_room"
|
|
117
|
+
],
|
|
118
|
+
"rest area": [
|
|
119
|
+
"what.service.rest_area"
|
|
120
|
+
],
|
|
121
|
+
"smoking area": [
|
|
122
|
+
"what.service.smoking_area"
|
|
123
|
+
],
|
|
124
|
+
"adult diaper change": [
|
|
125
|
+
"what.service.adult_diaper_change"
|
|
126
|
+
],
|
|
127
|
+
"baby care": [
|
|
128
|
+
"what.service.baby_care"
|
|
129
|
+
],
|
|
130
|
+
"shower": [
|
|
131
|
+
"what.service.shower"
|
|
132
|
+
],
|
|
133
|
+
"toilet": [
|
|
134
|
+
"what.service.toilet"
|
|
135
|
+
],
|
|
136
|
+
"toilet accessible": [
|
|
137
|
+
"what.service.toilet_accessible"
|
|
138
|
+
],
|
|
139
|
+
"transit entry": [
|
|
140
|
+
"what.transit.transit_entry"
|
|
141
|
+
],
|
|
142
|
+
"transit exit": [
|
|
143
|
+
"what.transit.transit_exit"
|
|
144
|
+
],
|
|
145
|
+
"bus": [
|
|
146
|
+
"what.transport.bus",
|
|
147
|
+
"what.transport.type_bus"
|
|
148
|
+
],
|
|
149
|
+
"meeting point": [
|
|
150
|
+
"what.transport.meeting_point"
|
|
151
|
+
],
|
|
152
|
+
"pickup": [
|
|
153
|
+
"what.transport.pickup"
|
|
154
|
+
],
|
|
155
|
+
"skytrain": [
|
|
156
|
+
"what.transport.skytrain"
|
|
157
|
+
],
|
|
158
|
+
"taxi queue": [
|
|
159
|
+
"what.transport.taxi_queue"
|
|
160
|
+
],
|
|
161
|
+
"train": [
|
|
162
|
+
"what.transport.train"
|
|
163
|
+
],
|
|
164
|
+
"airplane gate": [
|
|
165
|
+
"what.airplane_gate"
|
|
166
|
+
],
|
|
167
|
+
"security": [
|
|
168
|
+
"what.security"
|
|
169
|
+
]
|
|
170
|
+
}
|