@collabdt/core 0.0.42 → 0.0.44
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/dist/core/components/Toolbar.d.ts.map +1 -1
- package/dist/core/components/Toolbar.js.map +1 -1
- package/dist/core/components/ToolbarBody.js.map +1 -1
- package/dist/core/components/TopNavigationBar.js.map +1 -1
- package/dist/core/components/authentication/ForgotPassword.js.map +1 -1
- package/dist/core/components/authentication/Signin.js.map +1 -1
- package/dist/core/components/authentication/Signup.js.map +1 -1
- package/dist/core/components/settings/src/OrganizationSkeleton.js.map +1 -1
- package/dist/core/components/settings/src/SettingsSkeleton.js.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
- package/dist/core/components/ui/Comments/CommentsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CommentsSection.js.map +1 -1
- package/dist/core/components/ui/DataTable.d.ts.map +1 -1
- package/dist/core/components/ui/DataTable.js +7 -0
- package/dist/core/components/ui/DataTable.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileItemComponent.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileItemComponent.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileMarker.d.ts +5 -2
- package/dist/core/components/ui/FilesManager/src/FileMarker.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileMarker.js +84 -21
- package/dist/core/components/ui/FilesManager/src/FileMarker.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js.map +1 -1
- package/dist/core/components/ui/Icons/IfcIcon.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/IfcIcon.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/index.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/index.js.map +1 -1
- package/dist/core/components/ui/Navbar.d.ts.map +1 -1
- package/dist/core/components/ui/Navbar.js.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts.map +1 -1
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.js +2 -2
- package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.js.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js +2 -2
- package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js.map +1 -1
- package/dist/core/components/viewers/Viewer.d.ts.map +1 -1
- package/dist/core/components/viewers/Viewer.js +5 -1
- package/dist/core/components/viewers/Viewer.js.map +1 -1
- package/dist/core/components/viewers/bim/BimToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/BimToolbar.js.map +1 -1
- package/dist/core/components/viewers/bim/BimViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/BimViewer.js +14 -5
- package/dist/core/components/viewers/bim/BimViewer.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimLoadingState/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimLoadingState/index.js +6 -0
- package/dist/core/components/viewers/bim/src/BimLoadingState/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js +168 -39
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/ClippingPlane.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/ClippingPlane.js.map +1 -1
- package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts +14 -37
- package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/DXFLoader/index.js +31 -318
- package/dist/core/components/viewers/bim/src/DXFLoader/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts +66 -7
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.js +253 -21
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/ModelManager/index.js +9 -0
- package/dist/core/components/viewers/bim/src/ModelManager/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.d.ts +3 -2
- package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js +3 -4
- package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js +40 -18
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts +2 -5
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js +45 -59
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.js +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts +10 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.js +25 -73
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.d.ts +7 -3
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js +42 -78
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js +52 -75
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts +15 -3
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js +165 -105
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js.map +1 -1
- package/dist/core/components/viewers/index.d.ts.map +1 -1
- package/dist/core/components/viewers/index.js.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.js +32 -8
- package/dist/core/components/viewers/map/MapViewer.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetManager/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetManager/index.js +4 -3
- package/dist/core/components/viewers/map/datasets/DatasetManager/index.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/RowActions.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/RowActions.js +148 -0
- package/dist/core/components/viewers/map/datasets/RowActions.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/index.js +32 -15
- package/dist/core/components/viewers/map/datasets/index.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.d.ts +4 -0
- package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.d.ts.map +1 -0
- package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.js +43 -0
- package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.js.map +1 -0
- package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/localDatasets.js +39 -3
- package/dist/core/components/viewers/map/datasets/src/localDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/minioDatasets.d.ts +1 -1
- package/dist/core/components/viewers/map/datasets/src/minioDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/minioDatasets.js +2 -1
- package/dist/core/components/viewers/map/datasets/src/minioDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts +47 -0
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts.map +1 -0
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.js +114 -0
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.js.map +1 -0
- package/dist/core/components/viewers/map/datasets/src/wmsTime.d.ts +49 -0
- package/dist/core/components/viewers/map/datasets/src/wmsTime.d.ts.map +1 -0
- package/dist/core/components/viewers/map/datasets/src/wmsTime.js +100 -0
- package/dist/core/components/viewers/map/datasets/src/wmsTime.js.map +1 -0
- package/dist/core/components/viewers/map/src/Geocoder.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/Geocoder.js +9 -9
- package/dist/core/components/viewers/map/src/Geocoder.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js +25 -43
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js +19 -2
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/countryLayerUtils.d.ts +9 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/countryLayerUtils.d.ts.map +1 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/countryLayerUtils.js +28 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/countryLayerUtils.js.map +1 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js +1 -16
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.js +31 -2
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.d.ts +21 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.d.ts.map +1 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.js +111 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.js.map +1 -0
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js +77 -2
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js +19 -9
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js +10 -3
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoder.d.ts +6 -2
- package/dist/core/components/viewers/map/utils/geocoder.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoder.js +10 -62
- package/dist/core/components/viewers/map/utils/geocoder.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts +5 -0
- package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/adapters.js +192 -0
- package/dist/core/components/viewers/map/utils/geocoding/adapters.js.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/config.d.ts +6 -0
- package/dist/core/components/viewers/map/utils/geocoding/config.d.ts.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/config.js +14 -0
- package/dist/core/components/viewers/map/utils/geocoding/config.js.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/index.d.ts +8 -0
- package/dist/core/components/viewers/map/utils/geocoding/index.d.ts.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/index.js +44 -0
- package/dist/core/components/viewers/map/utils/geocoding/index.js.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts +6 -0
- package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/osm.js +39 -0
- package/dist/core/components/viewers/map/utils/geocoding/osm.js.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts +8 -0
- package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts.map +1 -0
- package/dist/core/components/viewers/map/utils/geocoding/pelias.js +35 -0
- package/dist/core/components/viewers/map/utils/geocoding/pelias.js.map +1 -0
- package/dist/core/components/viewers/pointcloud/PointCloudToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudViewer.js +1 -3
- package/dist/core/components/viewers/pointcloud/PointCloudViewer.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js +2 -3
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js +8 -2
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js +9 -9
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js.map +1 -1
- package/dist/core/hooks/provider.js.map +1 -1
- package/dist/core/plugins/host/provider.d.ts.map +1 -1
- package/dist/core/plugins/host/provider.js.map +1 -1
- package/dist/core/store/AppConfig/context.d.ts.map +1 -1
- package/dist/core/store/AppConfig/context.js.map +1 -1
- package/dist/core/store/BIM/context.d.ts.map +1 -1
- package/dist/core/store/BIM/context.js.map +1 -1
- package/dist/core/store/BIM/reducer.d.ts +0 -1
- package/dist/core/store/BIM/reducer.d.ts.map +1 -1
- package/dist/core/store/BIM/reducer.js +0 -4
- package/dist/core/store/BIM/reducer.js.map +1 -1
- package/dist/core/store/Buildings/context.d.ts.map +1 -1
- package/dist/core/store/Buildings/context.js.map +1 -1
- package/dist/core/store/Content/context.d.ts.map +1 -1
- package/dist/core/store/Content/context.js.map +1 -1
- package/dist/core/store/Datasets/context.d.ts.map +1 -1
- package/dist/core/store/Datasets/context.js +2 -1
- package/dist/core/store/Datasets/context.js.map +1 -1
- package/dist/core/store/Datasets/reducer.d.ts +2 -0
- package/dist/core/store/Datasets/reducer.d.ts.map +1 -1
- package/dist/core/store/Datasets/reducer.js +9 -4
- package/dist/core/store/Datasets/reducer.js.map +1 -1
- package/dist/core/store/Files/context.d.ts.map +1 -1
- package/dist/core/store/Files/context.js.map +1 -1
- package/dist/core/store/Map/context.d.ts.map +1 -1
- package/dist/core/store/Map/context.js.map +1 -1
- package/dist/core/store/Menus/context.d.ts.map +1 -1
- package/dist/core/store/Menus/context.js.map +1 -1
- package/dist/core/store/Permissions/context.d.ts.map +1 -1
- package/dist/core/store/Permissions/context.js.map +1 -1
- package/dist/core/store/PointCloud/context.d.ts.map +1 -1
- package/dist/core/store/PointCloud/context.js.map +1 -1
- package/dist/core/store/Tools/context.d.ts.map +1 -1
- package/dist/core/store/Tools/context.js.map +1 -1
- package/dist/core/types/datasetTypes.d.ts +8 -1
- package/dist/core/types/datasetTypes.d.ts.map +1 -1
- package/dist/core/types/dbTypes.d.ts +13 -13
- package/dist/core/types/dbTypes.d.ts.map +1 -1
- package/dist/core/types/dbTypes.js +13 -13
- package/dist/core/types/dbTypes.js.map +1 -1
- package/dist/core/types/index.d.ts +1 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/utils/imageUtils.js +1 -1
- package/dist/core/utils/imageUtils.js.map +1 -1
- package/package.json +4 -3
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudViewer-old.d.ts +0 -3
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudViewer-old.d.ts.map +0 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudViewer-old.js +0 -173
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudViewer-old.js.map +0 -1
|
@@ -5,6 +5,7 @@ import { useTranslations } from "next-intl";
|
|
|
5
5
|
import * as LR from "lucide-react";
|
|
6
6
|
import { Tabs, TabsList, TabsTrigger } from "../../../../../../../ui/Tabs";
|
|
7
7
|
import { AppConfigContext, MapContext } from "../../../../../../../../store";
|
|
8
|
+
const MAPTILER_KEY = process.env.NEXT_PUBLIC_MAPTILER_KEY;
|
|
8
9
|
function TerrainLevel() {
|
|
9
10
|
var _a;
|
|
10
11
|
const tMap = useTranslations("MapCustomization");
|
|
@@ -18,17 +19,22 @@ function TerrainLevel() {
|
|
|
18
19
|
mapDispatch({ type: "UPDATE_TERRAIN_LEVEL", payload: { terrainLevel: "medium" } });
|
|
19
20
|
}
|
|
20
21
|
}, [isCanadaOrg, terrainLevel, mapDispatch]);
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
if (!MAPTILER_KEY && terrainLevel === "medium") {
|
|
24
|
+
mapDispatch({ type: "UPDATE_TERRAIN_LEVEL", payload: { terrainLevel: "disabled" } });
|
|
25
|
+
}
|
|
26
|
+
}, [terrainLevel, mapDispatch]);
|
|
21
27
|
React.useEffect(() => {
|
|
22
28
|
if (!map) return;
|
|
23
29
|
const updateTerrain = () => {
|
|
24
30
|
if (terrainLevel === "disabled") {
|
|
25
31
|
map.setTerrain(null);
|
|
26
|
-
} else if (terrainLevel === "medium") {
|
|
32
|
+
} else if (terrainLevel === "medium" && MAPTILER_KEY) {
|
|
27
33
|
const terrainSourceExists = map.getSource("terrain-source");
|
|
28
34
|
if (!terrainSourceExists) {
|
|
29
35
|
map.addSource("terrain-source", {
|
|
30
36
|
type: "raster-dem",
|
|
31
|
-
url:
|
|
37
|
+
url: `https://api.maptiler.com/tiles/terrain-rgb-v2/tiles.json?key=${MAPTILER_KEY}`,
|
|
32
38
|
tileSize: 256
|
|
33
39
|
});
|
|
34
40
|
}
|
|
@@ -85,6 +91,7 @@ function TerrainLevel() {
|
|
|
85
91
|
}, [map, terrainLevel, isCanadaOrg]);
|
|
86
92
|
const handleTerrainLevel = (value) => {
|
|
87
93
|
if (!isCanadaOrg && value === "high") return;
|
|
94
|
+
if (!MAPTILER_KEY && value === "medium") return;
|
|
88
95
|
mapDispatch({ type: "UPDATE_TERRAIN_LEVEL", payload: { terrainLevel: value } });
|
|
89
96
|
};
|
|
90
97
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
@@ -94,7 +101,7 @@ function TerrainLevel() {
|
|
|
94
101
|
/* @__PURE__ */ jsx(LR.ArrowDownToLine, { className: "w-4 h-4 mr-2" }),
|
|
95
102
|
tMap("disabled")
|
|
96
103
|
] }),
|
|
97
|
-
/* @__PURE__ */ jsxs(TabsTrigger, { value: "medium", children: [
|
|
104
|
+
/* @__PURE__ */ jsxs(TabsTrigger, { value: "medium", disabled: !MAPTILER_KEY, children: [
|
|
98
105
|
/* @__PURE__ */ jsx(LR.Mountain, { className: "w-4 h-4 mr-2" }),
|
|
99
106
|
tMap("medium")
|
|
100
107
|
] }),
|
package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as LR from 'lucide-react'\r\nimport { Tabs, TabsList, TabsTrigger } from '../../../../../../../ui/Tabs'\r\nimport { AppConfigContext, MapContext } from '../../../../../../../../store'\r\nimport { TerrainLevel as TerrainLevelType } from '../../../../../../../../types/map'\r\n\r\nexport function TerrainLevel() {\r\n const tMap = useTranslations('MapCustomization')\r\n const { state: appConfigState } = React.useContext(AppConfigContext)\r\n const { dispatch: mapDispatch, state: mapState } = React.useContext(MapContext)\r\n const { map, terrainLevel } = mapState.map\r\n const organizationCountry = (appConfigState.appConfig.organization?.country || '').toUpperCase()\r\n const isCanadaOrg = organizationCountry === 'CA'\r\n\r\n React.useEffect(() => {\r\n if (!isCanadaOrg && terrainLevel === 'high') {\r\n mapDispatch({ type: 'UPDATE_TERRAIN_LEVEL', payload: { terrainLevel: 'medium' } })\r\n }\r\n }, [isCanadaOrg, terrainLevel, mapDispatch])\r\n\r\n // Terrain control effect\r\n React.useEffect(() => {\r\n if (!map) return\r\n\r\n const updateTerrain = () => {\r\n if (terrainLevel === 'disabled') {\r\n // Disable terrain\r\n map.setTerrain(null)\r\n } else if (terrainLevel === 'medium') {\r\n // Check if terrain source already exists\r\n const terrainSourceExists = map.getSource('terrain-source')\r\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as LR from 'lucide-react'\r\nimport { Tabs, TabsList, TabsTrigger } from '../../../../../../../ui/Tabs'\r\nimport { AppConfigContext, MapContext } from '../../../../../../../../store'\r\nimport { TerrainLevel as TerrainLevelType } from '../../../../../../../../types/map'\r\n\r\n// Key is supplied by the consuming app via NEXT_PUBLIC_MAPTILER_KEY (Next inlines\r\n// it at build time). Kept out of source so @collabdt/core carries no secret.\r\nconst MAPTILER_KEY = process.env.NEXT_PUBLIC_MAPTILER_KEY\r\n\r\nexport function TerrainLevel() {\r\n const tMap = useTranslations('MapCustomization')\r\n const { state: appConfigState } = React.useContext(AppConfigContext)\r\n const { dispatch: mapDispatch, state: mapState } = React.useContext(MapContext)\r\n const { map, terrainLevel } = mapState.map\r\n const organizationCountry = (appConfigState.appConfig.organization?.country || '').toUpperCase()\r\n const isCanadaOrg = organizationCountry === 'CA'\r\n\r\n React.useEffect(() => {\r\n if (!isCanadaOrg && terrainLevel === 'high') {\r\n mapDispatch({ type: 'UPDATE_TERRAIN_LEVEL', payload: { terrainLevel: 'medium' } })\r\n }\r\n }, [isCanadaOrg, terrainLevel, mapDispatch])\r\n\r\n // Medium terrain relies on MapTiler; without a key, fall back to disabled.\r\n React.useEffect(() => {\r\n if (!MAPTILER_KEY && terrainLevel === 'medium') {\r\n mapDispatch({ type: 'UPDATE_TERRAIN_LEVEL', payload: { terrainLevel: 'disabled' } })\r\n }\r\n }, [terrainLevel, mapDispatch])\r\n\r\n // Terrain control effect\r\n React.useEffect(() => {\r\n if (!map) return\r\n\r\n const updateTerrain = () => {\r\n if (terrainLevel === 'disabled') {\r\n // Disable terrain\r\n map.setTerrain(null)\r\n } else if (terrainLevel === 'medium' && MAPTILER_KEY) {\r\n // Check if terrain source already exists\r\n const terrainSourceExists = map.getSource('terrain-source')\r\n\r\n // Add terrain source if it doesn't exist\r\n if (!terrainSourceExists) {\r\n map.addSource('terrain-source', {\r\n type: 'raster-dem',\r\n url: `https://api.maptiler.com/tiles/terrain-rgb-v2/tiles.json?key=${MAPTILER_KEY}`,\r\n tileSize: 256,\r\n })\r\n }\r\n // Enable terrain with medium exaggeration\r\n map.setTerrain({\r\n source: 'terrain-source',\r\n exaggeration: 1,\r\n })\r\n } else if (terrainLevel === 'high' && isCanadaOrg) {\r\n // Check if NRCan terrain sources already exist\r\n const nrcanTerrainExists = map.getSource('hrdem-terrain')\r\n const nrcanHillshadeExists = map.getSource('hrdem-hillshade')\r\n \r\n // Add NRCan terrain source if it doesn't exist\r\n if (!nrcanTerrainExists) {\r\n map.addSource('hrdem-terrain', {\r\n type: 'raster-dem',\r\n tiles: [\r\n '/api/nrcan-hr-dem?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&TRANSPARENT=false&LAYERS=dtm&CRS=EPSG:3857&STYLES=&WIDTH=256&HEIGHT=256&BBOX={bbox-epsg-3857}'\r\n ],\r\n tileSize: 256,\r\n maxzoom: 15,\r\n attribution: 'Contains information licensed under the Open Government Licence – Canada',\r\n })\r\n }\r\n \r\n // Add NRCan hillshade source and layer if they don't exist\r\n if (!nrcanHillshadeExists) {\r\n map.addSource('hrdem-hillshade', {\r\n type: 'raster',\r\n tiles: [\r\n '/api/nrcan-hr-hillshade?request=GetCapabilities&service=WMS&version=1.3.0&layers=dsm-hillshade&legend_format=image&png&feature_info_type=text&xml'\r\n ],\r\n tileSize: 256,\r\n maxzoom: 15,\r\n attribution: 'Contains information licensed under the Open Government Licence – Canada',\r\n })\r\n \r\n // Add hillshade layer if it doesn't exist\r\n if (!map.getLayer('nrcan-hillshade')) {\r\n map.addLayer({\r\n id: 'nrcan-hillshade',\r\n type: 'raster',\r\n source: 'hrdem-hillshade',\r\n paint: {\r\n 'raster-opacity': 0.15,\r\n },\r\n })\r\n }\r\n }\r\n \r\n // Enable high-resolution terrain with lower exaggeration\r\n map.setTerrain({\r\n source: 'hrdem-terrain',\r\n exaggeration: 0.0002,\r\n })\r\n }\r\n }\r\n\r\n // Wait for map to be loaded before updating terrain\r\n if (map.loaded()) {\r\n updateTerrain()\r\n } else {\r\n map.once('load', updateTerrain)\r\n }\r\n }, [map, terrainLevel, isCanadaOrg])\r\n\r\n const handleTerrainLevel = (value: TerrainLevelType) => {\r\n if (!isCanadaOrg && value === 'high') return\r\n if (!MAPTILER_KEY && value === 'medium') return\r\n\r\n mapDispatch({ type: 'UPDATE_TERRAIN_LEVEL', payload: { terrainLevel: value } })\r\n }\r\n\r\n return (\r\n <div className=\"space-y-2\">\r\n <label className=\"text-sm font-medium\">{tMap('terrain')}</label>\r\n <Tabs value={terrainLevel} onValueChange={handleTerrainLevel} variant=\"switch\">\r\n <TabsList className=\"grid w-full grid-cols-3\">\r\n <TabsTrigger value=\"disabled\">\r\n <LR.ArrowDownToLine className=\"w-4 h-4 mr-2\" />\r\n {tMap('disabled')}\r\n </TabsTrigger>\r\n <TabsTrigger value=\"medium\" disabled={!MAPTILER_KEY}>\r\n <LR.Mountain className=\"w-4 h-4 mr-2\" />\r\n {tMap('medium')}\r\n </TabsTrigger>\r\n <TabsTrigger value=\"high\" disabled={!isCanadaOrg}>\r\n <LR.MountainSnow className=\"w-4 h-4 mr-2\" />\r\n {tMap('high')}\r\n </TabsTrigger>\r\n </TabsList>\r\n </Tabs>\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,9 @@ export declare const getMunicipalityAndProvince: (latitude: string, longitude: s
|
|
|
4
4
|
municipality: any;
|
|
5
5
|
countrySubdivision: any;
|
|
6
6
|
}>;
|
|
7
|
-
export declare const fetchSuggestions: (input: string, countryCode?: string) => Promise<
|
|
7
|
+
export declare const fetchSuggestions: (input: string, countryCode?: string) => Promise<Feature<import("geojson").Geometry, {
|
|
8
|
+
[name: string]: any;
|
|
9
|
+
}>[]>;
|
|
8
10
|
export declare const parseLocation: (feature: Feature) => {
|
|
9
11
|
name: any;
|
|
10
12
|
region: string;
|
|
@@ -44,7 +46,9 @@ export declare const handleLocationSelect: (feature: Feature, map: any, type: st
|
|
|
44
46
|
confidence: any;
|
|
45
47
|
match_type: any;
|
|
46
48
|
};
|
|
47
|
-
export declare const getDetailedAddress: (coordinates: [number, number], countryCode?: string) => Promise<
|
|
49
|
+
export declare const getDetailedAddress: (coordinates: [number, number], countryCode?: string) => Promise<Feature<import("geojson").Geometry, {
|
|
50
|
+
[name: string]: any;
|
|
51
|
+
}>>;
|
|
48
52
|
export declare const buildingToFeature: (building: any) => {
|
|
49
53
|
properties: {
|
|
50
54
|
name: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geocoder.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/utils/geocoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"geocoder.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/utils/geocoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAe/C,eAAO,MAAM,0BAA0B,GAAU,UAAU,MAAM,EAAE,WAAW,MAAM,EAAE,cAAc,MAAM;;;EAmBzG,CAAA;AAGD,eAAO,MAAM,gBAAgB,GAAU,OAAO,MAAM,EAAE,cAAc,MAAM;;KAYzE,CAAA;AAGD,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO;;;;CAoC7C,CAAA;AAGD,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,EAAE,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqF7G,CAAA;AAGD,eAAO,MAAM,kBAAkB,GAAU,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,MAAM;;GAc3F,CAAA;AAGD,eAAO,MAAM,iBAAiB,GAAI,aAAQ;;;;;;;;;;;;;;;CAgCzC,CAAA;AAGD,eAAO,MAAM,oBAAoB,GAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,kBAK5G,CAAA;AAGD,eAAO,MAAM,oBAAoB,QAAO,IAGvC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MarkerManager } from "./MarkerManager";
|
|
2
|
-
|
|
2
|
+
import { autocompleteGeocode, reverseGeocode } from "./geocoding";
|
|
3
3
|
let geocoderMarkerManager = null;
|
|
4
4
|
const getGeocoderMarkerManager = () => {
|
|
5
5
|
if (!geocoderMarkerManager) {
|
|
@@ -7,31 +7,11 @@ const getGeocoderMarkerManager = () => {
|
|
|
7
7
|
}
|
|
8
8
|
return geocoderMarkerManager;
|
|
9
9
|
};
|
|
10
|
-
const getMunicipalityAndProvince = async (latitude, longitude, countryCode
|
|
11
|
-
const params = new URLSearchParams({
|
|
12
|
-
"api_key": GEOCODE_EARTH_API_KEY,
|
|
13
|
-
"point.lat": latitude,
|
|
14
|
-
"point.lon": longitude,
|
|
15
|
-
"boundary.country": countryCode.toUpperCase(),
|
|
16
|
-
"layers": "coarse",
|
|
17
|
-
"size": "1"
|
|
18
|
-
// Limit to 1 result
|
|
19
|
-
});
|
|
20
|
-
const reverseGeocoderUrl = `https://api.geocode.earth/v1/reverse?${params}`;
|
|
10
|
+
const getMunicipalityAndProvince = async (latitude, longitude, countryCode) => {
|
|
21
11
|
try {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
if (!response.ok) {
|
|
28
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
29
|
-
}
|
|
30
|
-
const data = await response.json();
|
|
31
|
-
console.log("Reverse geocoding response:", data);
|
|
32
|
-
if (data.features && data.features.length > 0) {
|
|
33
|
-
const feature = data.features[0];
|
|
34
|
-
const properties = feature.properties;
|
|
12
|
+
const features = await reverseGeocode(latitude, longitude, countryCode, { size: 1, coarse: true });
|
|
13
|
+
if (features.length > 0) {
|
|
14
|
+
const properties = features[0].properties;
|
|
35
15
|
const municipality = properties.locality || properties.neighbourhood || properties.county || "";
|
|
36
16
|
const countrySubdivision = properties.region_a || properties.region || "";
|
|
37
17
|
return { municipality, countrySubdivision };
|
|
@@ -42,29 +22,12 @@ const getMunicipalityAndProvince = async (latitude, longitude, countryCode = "CA
|
|
|
42
22
|
return { municipality: "", countrySubdivision: "" };
|
|
43
23
|
}
|
|
44
24
|
};
|
|
45
|
-
const fetchSuggestions = async (input, countryCode
|
|
25
|
+
const fetchSuggestions = async (input, countryCode) => {
|
|
46
26
|
if (!input || input.length < 3) {
|
|
47
27
|
return [];
|
|
48
28
|
}
|
|
49
29
|
try {
|
|
50
|
-
|
|
51
|
-
"api_key": GEOCODE_EARTH_API_KEY,
|
|
52
|
-
"text": input,
|
|
53
|
-
"boundary.country": countryCode.toUpperCase(),
|
|
54
|
-
"size": "5"
|
|
55
|
-
// Limit results
|
|
56
|
-
});
|
|
57
|
-
const request = `https://api.geocode.earth/v1/autocomplete?${params}`;
|
|
58
|
-
const response = await fetch(request, {
|
|
59
|
-
headers: {
|
|
60
|
-
"User-Agent": "GIS-App/1.0"
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
if (!response.ok) {
|
|
64
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
65
|
-
}
|
|
66
|
-
const geojson = await response.json();
|
|
67
|
-
return geojson.features && geojson.features.length > 0 ? geojson.features : [];
|
|
30
|
+
return await autocompleteGeocode(input, countryCode, 5);
|
|
68
31
|
} catch (error) {
|
|
69
32
|
console.error("Error fetching address suggestions:", error);
|
|
70
33
|
return [];
|
|
@@ -173,26 +136,11 @@ const handleLocationSelect = (feature, map, type, options) => {
|
|
|
173
136
|
}
|
|
174
137
|
return addressData;
|
|
175
138
|
};
|
|
176
|
-
const getDetailedAddress = async (coordinates, countryCode
|
|
139
|
+
const getDetailedAddress = async (coordinates, countryCode) => {
|
|
177
140
|
const [longitude, latitude] = coordinates;
|
|
178
|
-
const params = new URLSearchParams({
|
|
179
|
-
"api_key": GEOCODE_EARTH_API_KEY,
|
|
180
|
-
"point.lat": latitude.toString(),
|
|
181
|
-
"point.lon": longitude.toString(),
|
|
182
|
-
"boundary.country": countryCode.toUpperCase(),
|
|
183
|
-
"size": "1"
|
|
184
|
-
});
|
|
185
|
-
const reverseGeocoderUrl = `https://api.geocode.earth/v1/reverse?${params}`;
|
|
186
141
|
try {
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
190
|
-
}
|
|
191
|
-
const data = await response.json();
|
|
192
|
-
if (data.features && data.features.length > 0) {
|
|
193
|
-
return data.features[0];
|
|
194
|
-
}
|
|
195
|
-
return null;
|
|
142
|
+
const features = await reverseGeocode(latitude.toString(), longitude.toString(), countryCode, { size: 1, layers: "address" });
|
|
143
|
+
return features.length > 0 ? features[0] : null;
|
|
196
144
|
} catch (error) {
|
|
197
145
|
console.error("Error fetching detailed address:", error);
|
|
198
146
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/utils/geocoder.ts"],"sourcesContent":["import { Feature, Point, Polygon, MultiPolygon, LineString, MultiLineString } from 'geojson'\r\nimport { MarkerManager } from './MarkerManager'\r\n\r\nconst GEOCODE_EARTH_API_KEY = process.env.NEXT_PUBLIC_GEOCODE_EARTH_API_KEY\r\n\r\n// Global marker manager instance for geocoder\r\nlet geocoderMarkerManager: MarkerManager | null = null\r\n\r\n// Helper function to get or create the marker manager\r\nconst getGeocoderMarkerManager = (): MarkerManager => {\r\n if (!geocoderMarkerManager) {\r\n geocoderMarkerManager = new MarkerManager()\r\n }\r\n return geocoderMarkerManager\r\n}\r\n\r\n// Convert longitude and latitude into Municipality and Country Subdivision\r\nexport const getMunicipalityAndProvince = async (latitude: string, longitude: string, countryCode = 'CA') => {\r\n const params = new URLSearchParams({\r\n 'api_key': GEOCODE_EARTH_API_KEY,\r\n 'point.lat': latitude,\r\n 'point.lon': longitude,\r\n 'boundary.country': countryCode.toUpperCase(),\r\n 'layers': 'coarse',\r\n 'size': '1', // Limit to 1 result\r\n })\r\n\r\n const reverseGeocoderUrl = `https://api.geocode.earth/v1/reverse?${params}`\r\n\r\n try {\r\n const response = await fetch(reverseGeocoderUrl, {\r\n headers: {\r\n 'User-Agent': 'CDT/1.0 (cdt@email.com)',\r\n },\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data = await response.json()\r\n console.log('Reverse geocoding response:', data)\r\n\r\n if (data.features && data.features.length > 0) {\r\n const feature = data.features[0]\r\n const properties = feature.properties\r\n\r\n const municipality = properties.locality || properties.neighbourhood || properties.county || ''\r\n const countrySubdivision = properties.region_a || properties.region || '' // region_a gives abbreviation like \"ON\", \"BC\"\r\n\r\n return { municipality, countrySubdivision }\r\n }\r\n\r\n return { municipality: '', countrySubdivision: '' }\r\n }\r\n catch (error) {\r\n console.error('Error fetching municipality and country subdivision:', error)\r\n return { municipality: '', countrySubdivision: '' }\r\n }\r\n}\r\n\r\n// Fetch address suggestions from Geocode Earth Autocomplete API\r\nexport const fetchSuggestions = async (input: string, countryCode = 'CA') => {\r\n if (!input || input.length < 3) {\r\n return []\r\n }\r\n\r\n try {\r\n const params = new URLSearchParams({\r\n 'api_key': GEOCODE_EARTH_API_KEY,\r\n 'text': input,\r\n 'boundary.country': countryCode.toUpperCase(),\r\n 'size': '5', // Limit results\r\n })\r\n\r\n const request = `https://api.geocode.earth/v1/autocomplete?${params}`\r\n\r\n const response = await fetch(request, {\r\n headers: {\r\n 'User-Agent': 'GIS-App/1.0',\r\n },\r\n })\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const geojson = await response.json()\r\n\r\n return geojson.features && geojson.features.length > 0 ? geojson.features : []\r\n }\r\n catch (error) {\r\n console.error('Error fetching address suggestions:', error)\r\n return []\r\n }\r\n}\r\n\r\n// Parse location details for better display\r\nexport const parseLocation = (feature: Feature) => {\r\n const locationName = feature.properties?.name || ''\r\n const fullLabel = feature.properties?.label || ''\r\n\r\n // Try to extract location details from properties\r\n const properties = feature.properties\r\n let regionDetails = ''\r\n\r\n if (properties) {\r\n const locality = properties.locality\r\n const region = properties.region // Full countrySubdivision name\r\n const region_a = properties.region_a // CountrySubdivision abbreviation (ON, BC, etc.)\r\n const country = properties.country\r\n const country_a = properties.country_a // Country abbreviation (CA)\r\n\r\n // Build region details similar to your original format\r\n if (locality && region_a && country_a) {\r\n regionDetails = `${locality}, ${region_a}, ${country_a}`\r\n }\r\n else if (locality && region && country) {\r\n regionDetails = `${locality}, ${region}, ${country}`\r\n }\r\n else {\r\n // Fallback: try to extract from the full label\r\n const parts = fullLabel.split(', ')\r\n if (parts.length > 1) {\r\n regionDetails = parts.slice(1, 3).join(', ')\r\n }\r\n }\r\n }\r\n\r\n return {\r\n name: locationName,\r\n region: regionDetails,\r\n fullLabel: fullLabel,\r\n }\r\n}\r\n\r\n// Handle suggestion selection and map movement\r\nexport const handleLocationSelect = (feature: Feature, map: any, type: string, options?: { editing?: boolean }) => {\r\n const editing = options?.editing || false\r\n const markerManager = getGeocoderMarkerManager()\r\n\r\n // Handle feature with is_database_building flag\r\n if (type === 'dbBuilding') {\r\n const geometry = feature.geometry as Point\r\n const center = geometry.coordinates\r\n const addressData = {\r\n formatted_address: feature.properties?.label || '',\r\n coordinates: center,\r\n properties: feature.properties,\r\n building_id: feature.properties.gid?.replace('building-', ''),\r\n is_database_building: true,\r\n }\r\n\r\n if (map && center) {\r\n // Add marker to the center with editing capability\r\n markerManager.create(center as [number, number], map)\r\n\r\n map.flyTo({\r\n center: addressData.coordinates,\r\n zoom: 18,\r\n speed: 1.5,\r\n })\r\n }\r\n\r\n return addressData\r\n }\r\n\r\n // Calculate center coordinates\r\n let center\r\n\r\n // Use bbox if available (more precise for areas)\r\n if (feature.bbox) {\r\n center = [\r\n feature.bbox[0] + (feature.bbox[2] - feature.bbox[0]) / 2,\r\n feature.bbox[1] + (feature.bbox[3] - feature.bbox[1]) / 2,\r\n ]\r\n }\r\n // Otherwise extract coordinates based on geometry type\r\n else if (feature.geometry?.type === 'Point') {\r\n center = (feature.geometry as any).coordinates\r\n }\r\n\r\n const addressData = {\r\n formatted_address: feature.properties?.label || feature.properties?.name || '',\r\n coordinates: center,\r\n properties: feature.properties,\r\n address_details: {\r\n name: feature.properties?.name,\r\n label: feature.properties?.label,\r\n locality: feature.properties?.locality,\r\n neighbourhood: feature.properties?.neighbourhood,\r\n region: feature.properties?.region,\r\n region_a: feature.properties?.region_a,\r\n country: feature.properties?.country,\r\n country_a: feature.properties?.country_a,\r\n postalcode: feature.properties?.postalcode,\r\n housenumber: feature.properties?.housenumber,\r\n street: feature.properties?.street,\r\n },\r\n geocode_earth_id: feature.properties?.gid, // Geocode Earth's unique id\r\n layer: feature.properties?.layer, // Type of place (address, venue, locality, etc.)\r\n confidence: feature.properties?.confidence, // Geocode Earth's confidence score\r\n match_type: feature.properties?.match_type, // How well the result matches the query\r\n }\r\n\r\n if (map && center) {\r\n // Add marker to the center with editing capability\r\n markerManager.create(center as [number, number], map, { editing })\r\n\r\n if (feature.bbox) {\r\n map.fitBounds(feature.bbox, { speed: 2 })\r\n }\r\n else {\r\n map.flyTo({\r\n center: addressData.coordinates,\r\n zoom: 14, // Might be good idea to set zoom level depending on layer / type of place\r\n speed: 2,\r\n })\r\n }\r\n }\r\n\r\n return addressData\r\n}\r\n\r\n// Util function to get detailed address information\r\nexport const getDetailedAddress = async (coordinates: [number, number], countryCode = 'CA') => {\r\n const [longitude, latitude] = coordinates\r\n\r\n const params = new URLSearchParams({\r\n 'api_key': GEOCODE_EARTH_API_KEY,\r\n 'point.lat': latitude.toString(),\r\n 'point.lon': longitude.toString(),\r\n 'boundary.country': countryCode.toUpperCase(),\r\n 'size': '1',\r\n })\r\n\r\n const reverseGeocoderUrl = `https://api.geocode.earth/v1/reverse?${params}`\r\n\r\n try {\r\n const response = await fetch(reverseGeocoderUrl)\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data = await response.json()\r\n\r\n if (data.features && data.features.length > 0) {\r\n return data.features[0]\r\n }\r\n\r\n return null\r\n }\r\n catch (error) {\r\n console.error('Error fetching detailed address:', error)\r\n return null\r\n }\r\n}\r\n\r\n// Convert a building object to a GeoJSON feature format compatible with handleLocationSelect\r\nexport const buildingToFeature = (building) => {\r\n const name = building.buildingName || ''\r\n\r\n // Validate coordinates - use the correct property names\r\n const longitude = Number.parseFloat(building.buildingLongitude)\r\n const latitude = Number.parseFloat(building.buildingLatitude)\r\n\r\n if (isNaN(longitude) || isNaN(latitude)) {\r\n console.error('Invalid building coordinates:', {\r\n longitude: building.buildingLongitude,\r\n latitude: building.buildingLatitude,\r\n buildingId: building.id,\r\n })\r\n return null\r\n }\r\n\r\n return {\r\n properties: {\r\n name: name,\r\n label: `${name}, ${[building.buildingAddress, building.buildingMunicipality, building.buildingCountrySubdivision].filter(Boolean).join(', ')}`,\r\n address: building.buildingAddress,\r\n municipality: building.buildingMunicipality,\r\n countrySubdivision: building.buildingCountrySubdivision,\r\n postalCode: building.buildingPostalCode,\r\n gid: `building-${building.id}`,\r\n },\r\n geometry: {\r\n type: 'Point',\r\n coordinates: [longitude, latitude],\r\n },\r\n is_database_building: true,\r\n }\r\n}\r\n\r\n// Enhanced marker creation with editing capabilities\r\nexport const createGeocoderMarker = (coordinates: [number, number], map: any, options?: { editing?: boolean }) => {\r\n const editing = options?.editing || false\r\n const markerManager = getGeocoderMarkerManager()\r\n markerManager.create(coordinates, map, { editing })\r\n return markerManager\r\n}\r\n\r\n// Helper function to remove the current marker\r\nexport const removeGeocoderMarker = (): void => {\r\n const markerManager = getGeocoderMarkerManager()\r\n markerManager.remove()\r\n}\r\n"],"mappings":"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","names":["center","addressData"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/utils/geocoder.ts"],"sourcesContent":["import { Feature, Point } from 'geojson'\r\nimport { MarkerManager } from './MarkerManager'\r\nimport { autocompleteGeocode, reverseGeocode } from './geocoding'\r\n\r\n// Global marker manager instance for geocoder\r\nlet geocoderMarkerManager: MarkerManager | null = null\r\n\r\n// Helper function to get or create the marker manager\r\nconst getGeocoderMarkerManager = (): MarkerManager => {\r\n if (!geocoderMarkerManager) {\r\n geocoderMarkerManager = new MarkerManager()\r\n }\r\n return geocoderMarkerManager\r\n}\r\n\r\n// Convert longitude and latitude into Municipality and Country Subdivision\r\nexport const getMunicipalityAndProvince = async (latitude: string, longitude: string, countryCode?: string) => {\r\n try {\r\n const features = await reverseGeocode(latitude, longitude, countryCode, { size: 1, coarse: true })\r\n\r\n if (features.length > 0) {\r\n const properties = features[0].properties as any\r\n\r\n const municipality = properties.locality || properties.neighbourhood || properties.county || ''\r\n const countrySubdivision = properties.region_a || properties.region || '' // region_a gives abbreviation like \"ON\", \"BC\"\r\n\r\n return { municipality, countrySubdivision }\r\n }\r\n\r\n return { municipality: '', countrySubdivision: '' }\r\n }\r\n catch (error) {\r\n console.error('Error fetching municipality and country subdivision:', error)\r\n return { municipality: '', countrySubdivision: '' }\r\n }\r\n}\r\n\r\n// Fetch address suggestions from the active autocomplete provider\r\nexport const fetchSuggestions = async (input: string, countryCode?: string) => {\r\n if (!input || input.length < 3) {\r\n return []\r\n }\r\n\r\n try {\r\n return await autocompleteGeocode(input, countryCode, 5)\r\n }\r\n catch (error) {\r\n console.error('Error fetching address suggestions:', error)\r\n return []\r\n }\r\n}\r\n\r\n// Parse location details for better display\r\nexport const parseLocation = (feature: Feature) => {\r\n const locationName = feature.properties?.name || ''\r\n const fullLabel = feature.properties?.label || ''\r\n\r\n // Try to extract location details from properties\r\n const properties = feature.properties\r\n let regionDetails = ''\r\n\r\n if (properties) {\r\n const locality = properties.locality\r\n const region = properties.region // Full countrySubdivision name\r\n const region_a = properties.region_a // CountrySubdivision abbreviation (ON, BC, etc.)\r\n const country = properties.country\r\n const country_a = properties.country_a // Country abbreviation (CA)\r\n\r\n // Build region details similar to your original format\r\n if (locality && region_a && country_a) {\r\n regionDetails = `${locality}, ${region_a}, ${country_a}`\r\n }\r\n else if (locality && region && country) {\r\n regionDetails = `${locality}, ${region}, ${country}`\r\n }\r\n else {\r\n // Fallback: try to extract from the full label\r\n const parts = fullLabel.split(', ')\r\n if (parts.length > 1) {\r\n regionDetails = parts.slice(1, 3).join(', ')\r\n }\r\n }\r\n }\r\n\r\n return {\r\n name: locationName,\r\n region: regionDetails,\r\n fullLabel: fullLabel,\r\n }\r\n}\r\n\r\n// Handle suggestion selection and map movement\r\nexport const handleLocationSelect = (feature: Feature, map: any, type: string, options?: { editing?: boolean }) => {\r\n const editing = options?.editing || false\r\n const markerManager = getGeocoderMarkerManager()\r\n\r\n // Handle feature with is_database_building flag\r\n if (type === 'dbBuilding') {\r\n const geometry = feature.geometry as Point\r\n const center = geometry.coordinates\r\n const addressData = {\r\n formatted_address: feature.properties?.label || '',\r\n coordinates: center,\r\n properties: feature.properties,\r\n building_id: feature.properties.gid?.replace('building-', ''),\r\n is_database_building: true,\r\n }\r\n\r\n if (map && center) {\r\n // Add marker to the center with editing capability\r\n markerManager.create(center as [number, number], map)\r\n\r\n map.flyTo({\r\n center: addressData.coordinates,\r\n zoom: 18,\r\n speed: 1.5,\r\n })\r\n }\r\n\r\n return addressData\r\n }\r\n\r\n // Calculate center coordinates\r\n let center\r\n\r\n // Use bbox if available (more precise for areas)\r\n if (feature.bbox) {\r\n center = [\r\n feature.bbox[0] + (feature.bbox[2] - feature.bbox[0]) / 2,\r\n feature.bbox[1] + (feature.bbox[3] - feature.bbox[1]) / 2,\r\n ]\r\n }\r\n // Otherwise extract coordinates based on geometry type\r\n else if (feature.geometry?.type === 'Point') {\r\n center = (feature.geometry as any).coordinates\r\n }\r\n\r\n const addressData = {\r\n formatted_address: feature.properties?.label || feature.properties?.name || '',\r\n coordinates: center,\r\n properties: feature.properties,\r\n address_details: {\r\n name: feature.properties?.name,\r\n label: feature.properties?.label,\r\n locality: feature.properties?.locality,\r\n neighbourhood: feature.properties?.neighbourhood,\r\n region: feature.properties?.region,\r\n region_a: feature.properties?.region_a,\r\n country: feature.properties?.country,\r\n country_a: feature.properties?.country_a,\r\n postalcode: feature.properties?.postalcode,\r\n housenumber: feature.properties?.housenumber,\r\n street: feature.properties?.street,\r\n },\r\n geocode_earth_id: feature.properties?.gid, // Geocode Earth's unique id\r\n layer: feature.properties?.layer, // Type of place (address, venue, locality, etc.)\r\n confidence: feature.properties?.confidence, // Geocode Earth's confidence score\r\n match_type: feature.properties?.match_type, // How well the result matches the query\r\n }\r\n\r\n if (map && center) {\r\n // Add marker to the center with editing capability\r\n markerManager.create(center as [number, number], map, { editing })\r\n\r\n if (feature.bbox) {\r\n map.fitBounds(feature.bbox, { speed: 2 })\r\n }\r\n else {\r\n map.flyTo({\r\n center: addressData.coordinates,\r\n zoom: 14, // Might be good idea to set zoom level depending on layer / type of place\r\n speed: 2,\r\n })\r\n }\r\n }\r\n\r\n return addressData\r\n}\r\n\r\n// Util function to get detailed address information\r\nexport const getDetailedAddress = async (coordinates: [number, number], countryCode?: string) => {\r\n const [longitude, latitude] = coordinates\r\n\r\n try {\r\n // Restrict to address-layer results (the original popover used layers=address) so\r\n // callers get a street address rather than the nearest venue/POI. Nominatim's zoom-18\r\n // reverse is already building-level, so this only refines the Pelias path.\r\n const features = await reverseGeocode(latitude.toString(), longitude.toString(), countryCode, { size: 1, layers: 'address' })\r\n return features.length > 0 ? features[0] : null\r\n }\r\n catch (error) {\r\n console.error('Error fetching detailed address:', error)\r\n return null\r\n }\r\n}\r\n\r\n// Convert a building object to a GeoJSON feature format compatible with handleLocationSelect\r\nexport const buildingToFeature = (building) => {\r\n const name = building.buildingName || ''\r\n\r\n // Validate coordinates - use the correct property names\r\n const longitude = Number.parseFloat(building.buildingLongitude)\r\n const latitude = Number.parseFloat(building.buildingLatitude)\r\n\r\n if (isNaN(longitude) || isNaN(latitude)) {\r\n console.error('Invalid building coordinates:', {\r\n longitude: building.buildingLongitude,\r\n latitude: building.buildingLatitude,\r\n buildingId: building.id,\r\n })\r\n return null\r\n }\r\n\r\n return {\r\n properties: {\r\n name: name,\r\n label: `${name}, ${[building.buildingAddress, building.buildingMunicipality, building.buildingCountrySubdivision].filter(Boolean).join(', ')}`,\r\n address: building.buildingAddress,\r\n municipality: building.buildingMunicipality,\r\n countrySubdivision: building.buildingCountrySubdivision,\r\n postalCode: building.buildingPostalCode,\r\n gid: `building-${building.id}`,\r\n },\r\n geometry: {\r\n type: 'Point',\r\n coordinates: [longitude, latitude],\r\n },\r\n is_database_building: true,\r\n }\r\n}\r\n\r\n// Enhanced marker creation with editing capabilities\r\nexport const createGeocoderMarker = (coordinates: [number, number], map: any, options?: { editing?: boolean }) => {\r\n const editing = options?.editing || false\r\n const markerManager = getGeocoderMarkerManager()\r\n markerManager.create(coordinates, map, { editing })\r\n return markerManager\r\n}\r\n\r\n// Helper function to remove the current marker\r\nexport const removeGeocoderMarker = (): void => {\r\n const markerManager = getGeocoderMarkerManager()\r\n markerManager.remove()\r\n}\r\n"],"mappings":"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","names":["center","addressData"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Feature } from 'geojson';
|
|
2
|
+
export declare const osmCategoryToLayer: (category?: string) => string;
|
|
3
|
+
export declare const normalizePhotonFeature: (feature: any) => Feature;
|
|
4
|
+
export declare const normalizeNominatimResult: (data: any) => Feature;
|
|
5
|
+
//# sourceMappingURL=adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,KAAG,MAoBtD,CAAA;AAkCD,eAAO,MAAM,sBAAsB,GAAI,SAAS,GAAG,KAAG,OAuCrD,CAAA;AAGD,eAAO,MAAM,wBAAwB,GAAI,MAAM,GAAG,KAAG,OAkCpD,CAAA"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
const osmCategoryToLayer = (category) => {
|
|
21
|
+
switch (category) {
|
|
22
|
+
case "house":
|
|
23
|
+
case "building":
|
|
24
|
+
return "address";
|
|
25
|
+
case "street":
|
|
26
|
+
case "road":
|
|
27
|
+
return "street";
|
|
28
|
+
case "city":
|
|
29
|
+
case "town":
|
|
30
|
+
case "village":
|
|
31
|
+
case "hamlet":
|
|
32
|
+
case "locality":
|
|
33
|
+
return "locality";
|
|
34
|
+
case "district":
|
|
35
|
+
case "suburb":
|
|
36
|
+
case "neighbourhood":
|
|
37
|
+
return "neighbourhood";
|
|
38
|
+
case "county":
|
|
39
|
+
return "county";
|
|
40
|
+
case "state":
|
|
41
|
+
case "region":
|
|
42
|
+
return "region";
|
|
43
|
+
case "country":
|
|
44
|
+
return "country";
|
|
45
|
+
default:
|
|
46
|
+
return category || "venue";
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const SUBDIVISION_ABBREVIATIONS = {
|
|
50
|
+
CA: {
|
|
51
|
+
"alberta": "AB",
|
|
52
|
+
"british columbia": "BC",
|
|
53
|
+
"manitoba": "MB",
|
|
54
|
+
"new brunswick": "NB",
|
|
55
|
+
"newfoundland and labrador": "NL",
|
|
56
|
+
"northwest territories": "NT",
|
|
57
|
+
"nova scotia": "NS",
|
|
58
|
+
"nunavut": "NU",
|
|
59
|
+
"ontario": "ON",
|
|
60
|
+
"prince edward island": "PE",
|
|
61
|
+
"quebec": "QC",
|
|
62
|
+
"qu\xE9bec": "QC",
|
|
63
|
+
"saskatchewan": "SK",
|
|
64
|
+
"yukon": "YT"
|
|
65
|
+
},
|
|
66
|
+
US: {
|
|
67
|
+
"alabama": "AL",
|
|
68
|
+
"alaska": "AK",
|
|
69
|
+
"arizona": "AZ",
|
|
70
|
+
"arkansas": "AR",
|
|
71
|
+
"california": "CA",
|
|
72
|
+
"colorado": "CO",
|
|
73
|
+
"connecticut": "CT",
|
|
74
|
+
"delaware": "DE",
|
|
75
|
+
"district of columbia": "DC",
|
|
76
|
+
"florida": "FL",
|
|
77
|
+
"georgia": "GA",
|
|
78
|
+
"hawaii": "HI",
|
|
79
|
+
"idaho": "ID",
|
|
80
|
+
"illinois": "IL",
|
|
81
|
+
"indiana": "IN",
|
|
82
|
+
"iowa": "IA",
|
|
83
|
+
"kansas": "KS",
|
|
84
|
+
"kentucky": "KY",
|
|
85
|
+
"louisiana": "LA",
|
|
86
|
+
"maine": "ME",
|
|
87
|
+
"maryland": "MD",
|
|
88
|
+
"massachusetts": "MA",
|
|
89
|
+
"michigan": "MI",
|
|
90
|
+
"minnesota": "MN",
|
|
91
|
+
"mississippi": "MS",
|
|
92
|
+
"missouri": "MO",
|
|
93
|
+
"montana": "MT",
|
|
94
|
+
"nebraska": "NE",
|
|
95
|
+
"nevada": "NV",
|
|
96
|
+
"new hampshire": "NH",
|
|
97
|
+
"new jersey": "NJ",
|
|
98
|
+
"new mexico": "NM",
|
|
99
|
+
"new york": "NY",
|
|
100
|
+
"north carolina": "NC",
|
|
101
|
+
"north dakota": "ND",
|
|
102
|
+
"ohio": "OH",
|
|
103
|
+
"oklahoma": "OK",
|
|
104
|
+
"oregon": "OR",
|
|
105
|
+
"pennsylvania": "PA",
|
|
106
|
+
"rhode island": "RI",
|
|
107
|
+
"south carolina": "SC",
|
|
108
|
+
"south dakota": "SD",
|
|
109
|
+
"tennessee": "TN",
|
|
110
|
+
"texas": "TX",
|
|
111
|
+
"utah": "UT",
|
|
112
|
+
"vermont": "VT",
|
|
113
|
+
"virginia": "VA",
|
|
114
|
+
"washington": "WA",
|
|
115
|
+
"west virginia": "WV",
|
|
116
|
+
"wisconsin": "WI",
|
|
117
|
+
"wyoming": "WY"
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
const subdivisionAbbreviation = (countryCode, state) => {
|
|
121
|
+
if (!state) return "";
|
|
122
|
+
const table = SUBDIVISION_ABBREVIATIONS[(countryCode || "").toUpperCase()];
|
|
123
|
+
return table && table[state.trim().toLowerCase()] || "";
|
|
124
|
+
};
|
|
125
|
+
const normalizePhotonFeature = (feature) => {
|
|
126
|
+
const p = feature.properties || {};
|
|
127
|
+
const region = p.state || "";
|
|
128
|
+
const country = p.country || "";
|
|
129
|
+
const country_a = (p.countrycode || "").toUpperCase();
|
|
130
|
+
const region_a = subdivisionAbbreviation(country_a, region);
|
|
131
|
+
const locality = p.city || p.town || p.village || p.district || "";
|
|
132
|
+
const name = p.name || [p.housenumber, p.street].filter(Boolean).join(" ") || locality;
|
|
133
|
+
const label = [name, locality && locality !== name ? locality : null, region_a || region, country].filter(Boolean).join(", ");
|
|
134
|
+
const bbox = Array.isArray(p.extent) && p.extent.length === 4 ? [p.extent[0], p.extent[3], p.extent[2], p.extent[1]] : void 0;
|
|
135
|
+
return __spreadProps(__spreadValues({
|
|
136
|
+
type: "Feature",
|
|
137
|
+
geometry: feature.geometry
|
|
138
|
+
}, bbox ? { bbox } : {}), {
|
|
139
|
+
properties: {
|
|
140
|
+
name,
|
|
141
|
+
label,
|
|
142
|
+
housenumber: p.housenumber,
|
|
143
|
+
street: p.street,
|
|
144
|
+
locality,
|
|
145
|
+
neighbourhood: p.district,
|
|
146
|
+
county: p.county,
|
|
147
|
+
region,
|
|
148
|
+
region_a,
|
|
149
|
+
// mapped from the full subdivision name where known (SUBDIVISION_ABBREVIATIONS)
|
|
150
|
+
country,
|
|
151
|
+
country_a,
|
|
152
|
+
postalcode: p.postcode,
|
|
153
|
+
gid: p.osm_id != null ? `osm:${p.osm_type}:${p.osm_id}` : void 0,
|
|
154
|
+
layer: osmCategoryToLayer(p.type)
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
const normalizeNominatimResult = (data) => {
|
|
159
|
+
const a = data.address || {};
|
|
160
|
+
const region_a = (a["ISO3166-2-lvl4"] || "").split("-")[1] || "";
|
|
161
|
+
const locality = a.city || a.town || a.village || a.municipality || a.suburb || a.neighbourhood || a.county || "";
|
|
162
|
+
const name = a.road ? [a.house_number, a.road].filter(Boolean).join(" ") : locality || (data.display_name || "").split(",")[0];
|
|
163
|
+
const bb = data.boundingbox;
|
|
164
|
+
const bbox = Array.isArray(bb) && bb.length === 4 ? [Number(bb[2]), Number(bb[0]), Number(bb[3]), Number(bb[1])] : void 0;
|
|
165
|
+
return __spreadProps(__spreadValues({
|
|
166
|
+
type: "Feature",
|
|
167
|
+
geometry: { type: "Point", coordinates: [Number(data.lon), Number(data.lat)] }
|
|
168
|
+
}, bbox ? { bbox } : {}), {
|
|
169
|
+
properties: {
|
|
170
|
+
name,
|
|
171
|
+
label: data.display_name || "",
|
|
172
|
+
housenumber: a.house_number,
|
|
173
|
+
street: a.road,
|
|
174
|
+
locality,
|
|
175
|
+
neighbourhood: a.neighbourhood || a.suburb,
|
|
176
|
+
county: a.county,
|
|
177
|
+
region: a.state,
|
|
178
|
+
region_a,
|
|
179
|
+
country: a.country,
|
|
180
|
+
country_a: (a.country_code || "").toUpperCase(),
|
|
181
|
+
postalcode: a.postcode,
|
|
182
|
+
gid: data.osm_id != null ? `osm:${data.osm_type}:${data.osm_id}` : void 0,
|
|
183
|
+
layer: osmCategoryToLayer(data.addresstype || data.type)
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
};
|
|
187
|
+
export {
|
|
188
|
+
normalizeNominatimResult,
|
|
189
|
+
normalizePhotonFeature,
|
|
190
|
+
osmCategoryToLayer
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/adapters.ts"],"sourcesContent":["import { Feature } from 'geojson'\r\n\r\n// Map OSM place categories onto Pelias-style layer names (best effort, display-only).\r\nexport const osmCategoryToLayer = (category?: string): string => {\r\n switch (category) {\r\n case 'house':\r\n case 'building': return 'address'\r\n case 'street':\r\n case 'road': return 'street'\r\n case 'city':\r\n case 'town':\r\n case 'village':\r\n case 'hamlet':\r\n case 'locality': return 'locality'\r\n case 'district':\r\n case 'suburb':\r\n case 'neighbourhood': return 'neighbourhood'\r\n case 'county': return 'county'\r\n case 'state':\r\n case 'region': return 'region'\r\n case 'country': return 'country'\r\n default: return category || 'venue'\r\n }\r\n}\r\n\r\n// Photon (OSM) returns full subdivision names (\"Ontario\"); the rest of the app expects\r\n// Pelias-style abbreviations (\"ON\"). Map common North American ones so the public\r\n// fallback populates region_a the way Geocode Earth / Pelias do.\r\nconst SUBDIVISION_ABBREVIATIONS: Record<string, Record<string, string>> = {\r\n CA: {\r\n 'alberta': 'AB', 'british columbia': 'BC', 'manitoba': 'MB', 'new brunswick': 'NB',\r\n 'newfoundland and labrador': 'NL', 'northwest territories': 'NT', 'nova scotia': 'NS',\r\n 'nunavut': 'NU', 'ontario': 'ON', 'prince edward island': 'PE', 'quebec': 'QC',\r\n 'québec': 'QC', 'saskatchewan': 'SK', 'yukon': 'YT',\r\n },\r\n US: {\r\n 'alabama': 'AL', 'alaska': 'AK', 'arizona': 'AZ', 'arkansas': 'AR', 'california': 'CA',\r\n 'colorado': 'CO', 'connecticut': 'CT', 'delaware': 'DE', 'district of columbia': 'DC',\r\n 'florida': 'FL', 'georgia': 'GA', 'hawaii': 'HI', 'idaho': 'ID', 'illinois': 'IL',\r\n 'indiana': 'IN', 'iowa': 'IA', 'kansas': 'KS', 'kentucky': 'KY', 'louisiana': 'LA',\r\n 'maine': 'ME', 'maryland': 'MD', 'massachusetts': 'MA', 'michigan': 'MI', 'minnesota': 'MN',\r\n 'mississippi': 'MS', 'missouri': 'MO', 'montana': 'MT', 'nebraska': 'NE', 'nevada': 'NV',\r\n 'new hampshire': 'NH', 'new jersey': 'NJ', 'new mexico': 'NM', 'new york': 'NY',\r\n 'north carolina': 'NC', 'north dakota': 'ND', 'ohio': 'OH', 'oklahoma': 'OK', 'oregon': 'OR',\r\n 'pennsylvania': 'PA', 'rhode island': 'RI', 'south carolina': 'SC', 'south dakota': 'SD',\r\n 'tennessee': 'TN', 'texas': 'TX', 'utah': 'UT', 'vermont': 'VT', 'virginia': 'VA',\r\n 'washington': 'WA', 'west virginia': 'WV', 'wisconsin': 'WI', 'wyoming': 'WY',\r\n },\r\n}\r\n\r\nconst subdivisionAbbreviation = (countryCode: string, state?: string): string => {\r\n if (!state) return ''\r\n const table = SUBDIVISION_ABBREVIATIONS[(countryCode || '').toUpperCase()]\r\n return (table && table[state.trim().toLowerCase()]) || ''\r\n}\r\n\r\n// Normalize a Photon autocomplete feature into the Pelias feature shape.\r\nexport const normalizePhotonFeature = (feature: any): Feature => {\r\n const p = feature.properties || {}\r\n const region = p.state || ''\r\n const country = p.country || ''\r\n const country_a = (p.countrycode || '').toUpperCase()\r\n const region_a = subdivisionAbbreviation(country_a, region)\r\n const locality = p.city || p.town || p.village || p.district || ''\r\n const name = p.name || [p.housenumber, p.street].filter(Boolean).join(' ') || locality\r\n // Match the Pelias label shape (\"Name, City, ON, Country\") so label-parsing consumers work.\r\n const label = [name, locality && locality !== name ? locality : null, region_a || region, country]\r\n .filter(Boolean)\r\n .join(', ')\r\n\r\n // Photon `extent` is [west, north, east, south]; Pelias bbox is [west, south, east, north].\r\n const bbox: [number, number, number, number] | undefined = Array.isArray(p.extent) && p.extent.length === 4\r\n ? [p.extent[0], p.extent[3], p.extent[2], p.extent[1]]\r\n : undefined\r\n\r\n return {\r\n type: 'Feature',\r\n geometry: feature.geometry,\r\n ...(bbox ? { bbox } : {}),\r\n properties: {\r\n name,\r\n label,\r\n housenumber: p.housenumber,\r\n street: p.street,\r\n locality,\r\n neighbourhood: p.district,\r\n county: p.county,\r\n region,\r\n region_a, // mapped from the full subdivision name where known (SUBDIVISION_ABBREVIATIONS)\r\n country,\r\n country_a,\r\n postalcode: p.postcode,\r\n gid: p.osm_id != null ? `osm:${p.osm_type}:${p.osm_id}` : undefined,\r\n layer: osmCategoryToLayer(p.type),\r\n },\r\n } as Feature\r\n}\r\n\r\n// Normalize a Nominatim reverse result into the Pelias feature shape.\r\nexport const normalizeNominatimResult = (data: any): Feature => {\r\n const a = data.address || {}\r\n // ISO3166-2-lvl4 looks like \"CA-ON\"; the suffix is the Pelias region_a abbreviation.\r\n const region_a = (a['ISO3166-2-lvl4'] || '').split('-')[1] || ''\r\n const locality = a.city || a.town || a.village || a.municipality || a.suburb || a.neighbourhood || a.county || ''\r\n const name = a.road ? [a.house_number, a.road].filter(Boolean).join(' ') : (locality || (data.display_name || '').split(',')[0])\r\n\r\n // Nominatim boundingbox is [minlat, maxlat, minlon, maxlon]; Pelias bbox is [west, south, east, north].\r\n const bb = data.boundingbox\r\n const bbox: [number, number, number, number] | undefined = Array.isArray(bb) && bb.length === 4\r\n ? [Number(bb[2]), Number(bb[0]), Number(bb[3]), Number(bb[1])]\r\n : undefined\r\n\r\n return {\r\n type: 'Feature',\r\n geometry: { type: 'Point', coordinates: [Number(data.lon), Number(data.lat)] },\r\n ...(bbox ? { bbox } : {}),\r\n properties: {\r\n name,\r\n label: data.display_name || '',\r\n housenumber: a.house_number,\r\n street: a.road,\r\n locality,\r\n neighbourhood: a.neighbourhood || a.suburb,\r\n county: a.county,\r\n region: a.state,\r\n region_a,\r\n country: a.country,\r\n country_a: (a.country_code || '').toUpperCase(),\r\n postalcode: a.postcode,\r\n gid: data.osm_id != null ? `osm:${data.osm_type}:${data.osm_id}` : undefined,\r\n layer: osmCategoryToLayer(data.addresstype || data.type),\r\n },\r\n } as Feature\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAGO,MAAM,qBAAqB,CAAC,aAA8B;AAC/D,UAAQ,UAAU;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAY,aAAO;AAAA,IACxB,KAAK;AAAA,IACL,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAY,aAAO;AAAA,IACxB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAiB,aAAO;AAAA,IAC7B,KAAK;AAAU,aAAO;AAAA,IACtB,KAAK;AAAA,IACL,KAAK;AAAU,aAAO;AAAA,IACtB,KAAK;AAAW,aAAO;AAAA,IACvB;AAAS,aAAO,YAAY;AAAA,EAC9B;AACF;AAKA,MAAM,4BAAoE;AAAA,EACxE,IAAI;AAAA,IACF,WAAW;AAAA,IAAM,oBAAoB;AAAA,IAAM,YAAY;AAAA,IAAM,iBAAiB;AAAA,IAC9E,6BAA6B;AAAA,IAAM,yBAAyB;AAAA,IAAM,eAAe;AAAA,IACjF,WAAW;AAAA,IAAM,WAAW;AAAA,IAAM,wBAAwB;AAAA,IAAM,UAAU;AAAA,IAC1E,aAAU;AAAA,IAAM,gBAAgB;AAAA,IAAM,SAAS;AAAA,EACjD;AAAA,EACA,IAAI;AAAA,IACF,WAAW;AAAA,IAAM,UAAU;AAAA,IAAM,WAAW;AAAA,IAAM,YAAY;AAAA,IAAM,cAAc;AAAA,IAClF,YAAY;AAAA,IAAM,eAAe;AAAA,IAAM,YAAY;AAAA,IAAM,wBAAwB;AAAA,IACjF,WAAW;AAAA,IAAM,WAAW;AAAA,IAAM,UAAU;AAAA,IAAM,SAAS;AAAA,IAAM,YAAY;AAAA,IAC7E,WAAW;AAAA,IAAM,QAAQ;AAAA,IAAM,UAAU;AAAA,IAAM,YAAY;AAAA,IAAM,aAAa;AAAA,IAC9E,SAAS;AAAA,IAAM,YAAY;AAAA,IAAM,iBAAiB;AAAA,IAAM,YAAY;AAAA,IAAM,aAAa;AAAA,IACvF,eAAe;AAAA,IAAM,YAAY;AAAA,IAAM,WAAW;AAAA,IAAM,YAAY;AAAA,IAAM,UAAU;AAAA,IACpF,iBAAiB;AAAA,IAAM,cAAc;AAAA,IAAM,cAAc;AAAA,IAAM,YAAY;AAAA,IAC3E,kBAAkB;AAAA,IAAM,gBAAgB;AAAA,IAAM,QAAQ;AAAA,IAAM,YAAY;AAAA,IAAM,UAAU;AAAA,IACxF,gBAAgB;AAAA,IAAM,gBAAgB;AAAA,IAAM,kBAAkB;AAAA,IAAM,gBAAgB;AAAA,IACpF,aAAa;AAAA,IAAM,SAAS;AAAA,IAAM,QAAQ;AAAA,IAAM,WAAW;AAAA,IAAM,YAAY;AAAA,IAC7E,cAAc;AAAA,IAAM,iBAAiB;AAAA,IAAM,aAAa;AAAA,IAAM,WAAW;AAAA,EAC3E;AACF;AAEA,MAAM,0BAA0B,CAAC,aAAqB,UAA2B;AAC/E,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,QAAQ,2BAA2B,eAAe,IAAI,YAAY,CAAC;AACzE,SAAQ,SAAS,MAAM,MAAM,KAAK,EAAE,YAAY,CAAC,KAAM;AACzD;AAGO,MAAM,yBAAyB,CAAC,YAA0B;AAC/D,QAAM,IAAI,QAAQ,cAAc,CAAC;AACjC,QAAM,SAAS,EAAE,SAAS;AAC1B,QAAM,UAAU,EAAE,WAAW;AAC7B,QAAM,aAAa,EAAE,eAAe,IAAI,YAAY;AACpD,QAAM,WAAW,wBAAwB,WAAW,MAAM;AAC1D,QAAM,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY;AAChE,QAAM,OAAO,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAAK;AAE9E,QAAM,QAAQ,CAAC,MAAM,YAAY,aAAa,OAAO,WAAW,MAAM,YAAY,QAAQ,OAAO,EAC9F,OAAO,OAAO,EACd,KAAK,IAAI;AAGZ,QAAM,OAAqD,MAAM,QAAQ,EAAE,MAAM,KAAK,EAAE,OAAO,WAAW,IACtG,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IACnD;AAEJ,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU,QAAQ;AAAA,KACd,OAAO,EAAE,KAAK,IAAI,CAAC,IAHlB;AAAA,IAIL,YAAY;AAAA,MACV;AAAA,MACA;AAAA,MACA,aAAa,EAAE;AAAA,MACf,QAAQ,EAAE;AAAA,MACV;AAAA,MACA,eAAe,EAAE;AAAA,MACjB,QAAQ,EAAE;AAAA,MACV;AAAA,MACA;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,EAAE;AAAA,MACd,KAAK,EAAE,UAAU,OAAO,OAAO,EAAE,QAAQ,IAAI,EAAE,MAAM,KAAK;AAAA,MAC1D,OAAO,mBAAmB,EAAE,IAAI;AAAA,IAClC;AAAA,EACF;AACF;AAGO,MAAM,2BAA2B,CAAC,SAAuB;AAC9D,QAAM,IAAI,KAAK,WAAW,CAAC;AAE3B,QAAM,YAAY,EAAE,gBAAgB,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC,KAAK;AAC9D,QAAM,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU;AAC/G,QAAM,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAAK,aAAa,KAAK,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;AAG9H,QAAM,KAAK,KAAK;AAChB,QAAM,OAAqD,MAAM,QAAQ,EAAE,KAAK,GAAG,WAAW,IAC1F,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,IAC3D;AAEJ,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU,EAAE,MAAM,SAAS,aAAa,CAAC,OAAO,KAAK,GAAG,GAAG,OAAO,KAAK,GAAG,CAAC,EAAE;AAAA,KACzE,OAAO,EAAE,KAAK,IAAI,CAAC,IAHlB;AAAA,IAIL,YAAY;AAAA,MACV;AAAA,MACA,OAAO,KAAK,gBAAgB;AAAA,MAC5B,aAAa,EAAE;AAAA,MACf,QAAQ,EAAE;AAAA,MACV;AAAA,MACA,eAAe,EAAE,iBAAiB,EAAE;AAAA,MACpC,QAAQ,EAAE;AAAA,MACV,QAAQ,EAAE;AAAA,MACV;AAAA,MACA,SAAS,EAAE;AAAA,MACX,YAAY,EAAE,gBAAgB,IAAI,YAAY;AAAA,MAC9C,YAAY,EAAE;AAAA,MACd,KAAK,KAAK,UAAU,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK;AAAA,MACnE,OAAO,mBAAmB,KAAK,eAAe,KAAK,IAAI;AAAA,IACzD;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/config.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,qBAAqB,QAAgD,CAAA;AAKlF,eAAO,MAAM,UAAU,QAAmE,CAAA;AAC1F,eAAO,MAAM,aAAa,QAAiF,CAAA;AAG3G,eAAO,MAAM,WAAW,QAA2E,CAAA;AACnG,eAAO,MAAM,UAAU,SAAuB,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const GEOCODE_EARTH_API_KEY = process.env.NEXT_PUBLIC_GEOCODE_EARTH_API_KEY;
|
|
2
|
+
const PELIAS_URL = process.env.NEXT_PUBLIC_GEOCODER_URL;
|
|
3
|
+
const PHOTON_URL = process.env.NEXT_PUBLIC_PHOTON_URL || "https://photon.komoot.io";
|
|
4
|
+
const NOMINATIM_URL = process.env.NEXT_PUBLIC_NOMINATIM_URL || "https://nominatim.openstreetmap.org";
|
|
5
|
+
const PELIAS_BASE = GEOCODE_EARTH_API_KEY ? "https://api.geocode.earth" : PELIAS_URL || null;
|
|
6
|
+
const USE_PELIAS = Boolean(PELIAS_BASE);
|
|
7
|
+
export {
|
|
8
|
+
GEOCODE_EARTH_API_KEY,
|
|
9
|
+
NOMINATIM_URL,
|
|
10
|
+
PELIAS_BASE,
|
|
11
|
+
PHOTON_URL,
|
|
12
|
+
USE_PELIAS
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/config.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\r\n// Geocoding provider resolution\r\n//\r\n// Geocode Earth is hosted Pelias, so it and a self-hosted Pelias instance share\r\n// one code path (`/v1/autocomplete`, `/v1/reverse`, and the same response shape).\r\n// When neither a key nor a self-hosted URL is configured we fall back to free,\r\n// no-key public OSM services so self-hosters get working geocoding out of the box:\r\n// - autocomplete -> Photon (komoot), which is built for per-keystroke search.\r\n// - reverse -> Nominatim, fine for occasional point lookups.\r\n// (Nominatim's usage policy forbids autocomplete-style traffic, which is why\r\n// Photon handles suggestions.) Both responses are normalized by ./adapters into\r\n// the Pelias property shape (`locality`, `region_a`, `country_a`, `label`, ...)\r\n// that parseLocation / handleLocationSelect already expect.\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const GEOCODE_EARTH_API_KEY = process.env.NEXT_PUBLIC_GEOCODE_EARTH_API_KEY\r\n// Self-hosted Pelias-compatible endpoint (no key). e.g. https://pelias.example.com\r\nconst PELIAS_URL = process.env.NEXT_PUBLIC_GEOCODER_URL\r\n// Public OSM fallbacks. Default to the community instances; self-hosters can point at\r\n// their own Photon/Nominatim via env to avoid the public instances' rate limits.\r\nexport const PHOTON_URL = process.env.NEXT_PUBLIC_PHOTON_URL || 'https://photon.komoot.io'\r\nexport const NOMINATIM_URL = process.env.NEXT_PUBLIC_NOMINATIM_URL || 'https://nominatim.openstreetmap.org'\r\n\r\n// Key wins (best quality), then self-hosted Pelias, otherwise public OSM.\r\nexport const PELIAS_BASE = GEOCODE_EARTH_API_KEY ? 'https://api.geocode.earth' : PELIAS_URL || null\r\nexport const USE_PELIAS = Boolean(PELIAS_BASE)\r\n"],"mappings":"AAeO,MAAM,wBAAwB,QAAQ,IAAI;AAEjD,MAAM,aAAa,QAAQ,IAAI;AAGxB,MAAM,aAAa,QAAQ,IAAI,0BAA0B;AACzD,MAAM,gBAAgB,QAAQ,IAAI,6BAA6B;AAG/D,MAAM,cAAc,wBAAwB,8BAA8B,cAAc;AACxF,MAAM,aAAa,QAAQ,WAAW;","names":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Feature } from 'geojson';
|
|
2
|
+
export declare const autocompleteGeocode: (text: string, countryCode: string, size: number) => Promise<Feature[]>;
|
|
3
|
+
export declare const reverseGeocode: (latitude: string, longitude: string, countryCode: string, { size, coarse, layers }?: {
|
|
4
|
+
size?: number;
|
|
5
|
+
coarse?: boolean;
|
|
6
|
+
layers?: string;
|
|
7
|
+
}) => Promise<Feature[]>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAiCjC,eAAO,MAAM,mBAAmB,GAAU,MAAM,MAAM,EAAE,aAAa,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAU5G,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,2BAAsC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,KAC9F,OAAO,CAAC,OAAO,EAAE,CAUnB,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { USE_PELIAS } from "./config";
|
|
2
|
+
import { peliasAutocomplete, peliasReverse } from "./pelias";
|
|
3
|
+
import { photonAutocomplete, nominatimReverse } from "./osm";
|
|
4
|
+
let peliasAuthFailed = false;
|
|
5
|
+
const peliasActive = () => USE_PELIAS && !peliasAuthFailed;
|
|
6
|
+
const isAuthError = (error) => {
|
|
7
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
8
|
+
return message.includes("401") || message.includes("403");
|
|
9
|
+
};
|
|
10
|
+
const handlePeliasFailure = (error, fallbackName) => {
|
|
11
|
+
if (isAuthError(error)) {
|
|
12
|
+
peliasAuthFailed = true;
|
|
13
|
+
console.warn(
|
|
14
|
+
`Geocoder: the configured provider rejected the API key (auth error). Falling back to public OSM services (Photon/Nominatim) for the rest of this session.`
|
|
15
|
+
);
|
|
16
|
+
} else {
|
|
17
|
+
console.warn(`Geocoder: provider request failed; falling back to ${fallbackName}.`, error);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const autocompleteGeocode = async (text, countryCode, size) => {
|
|
21
|
+
if (peliasActive()) {
|
|
22
|
+
try {
|
|
23
|
+
return await peliasAutocomplete(text, countryCode, size);
|
|
24
|
+
} catch (error) {
|
|
25
|
+
handlePeliasFailure(error, "Photon");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return photonAutocomplete(text, countryCode, size);
|
|
29
|
+
};
|
|
30
|
+
const reverseGeocode = async (latitude, longitude, countryCode, { size = 1, coarse = false, layers } = {}) => {
|
|
31
|
+
if (peliasActive()) {
|
|
32
|
+
try {
|
|
33
|
+
return await peliasReverse(latitude, longitude, countryCode, { size, coarse, layers });
|
|
34
|
+
} catch (error) {
|
|
35
|
+
handlePeliasFailure(error, "Nominatim");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return nominatimReverse(latitude, longitude, { coarse });
|
|
39
|
+
};
|
|
40
|
+
export {
|
|
41
|
+
autocompleteGeocode,
|
|
42
|
+
reverseGeocode
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=index.js.map
|