@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
|
@@ -1,86 +1,38 @@
|
|
|
1
1
|
import * as THREE from "three";
|
|
2
2
|
import {
|
|
3
3
|
createFileMarker,
|
|
4
|
-
updateMarkerPosition,
|
|
5
4
|
createGenericFileMarker
|
|
6
5
|
} from "./FileMarkerUtils";
|
|
7
|
-
const
|
|
8
|
-
if (!
|
|
9
|
-
return;
|
|
10
|
-
const controller = gizmoController;
|
|
11
|
-
const eventKeys = ["onTransformEnd", "onAfterTransform", "onChange", "onUpdated"];
|
|
12
|
-
for (const key of eventKeys) {
|
|
13
|
-
const eventCandidate = controller[key];
|
|
14
|
-
if (eventCandidate && typeof eventCandidate.add === "function") {
|
|
15
|
-
eventCandidate.add(callback);
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
const addFileToScene = async (addedFile, fileScale, fileRotation, world, modelManager, addDxf, toolsDispatch, setCurrent3DFileId, onMarkerContextMenu) => {
|
|
21
|
-
if (!world || !modelManager || !addDxf) return;
|
|
6
|
+
const addFileToScene = async (addedFile, fileScale, fileRotation, world, modelManager, addDxf, setCurrent3DFileId, onAction) => {
|
|
7
|
+
if (!world || !modelManager || !addDxf) return null;
|
|
22
8
|
const fileName = addedFile.file.name.toLowerCase();
|
|
23
9
|
if (fileName.endsWith(".glb") || fileName.endsWith(".gltf")) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
);
|
|
37
|
-
if (modelInfo) {
|
|
38
|
-
setCurrent3DFileId(addedFile.id);
|
|
39
|
-
const markerObj = createFileMarker(addedFile, modelInfo.model, () => {
|
|
40
|
-
}, world, onMarkerContextMenu);
|
|
41
|
-
subscribeToGizmoTransformEnd(modelInfo.gizmoController, () => {
|
|
42
|
-
updateMarkerPosition(markerObj, modelInfo.model);
|
|
43
|
-
});
|
|
44
|
-
setTimeout(() => {
|
|
45
|
-
updateMarkerPosition(markerObj, modelInfo.model);
|
|
46
|
-
}, 100);
|
|
47
|
-
}
|
|
48
|
-
} catch (error) {
|
|
49
|
-
console.error("Error loading 3D model:", error);
|
|
50
|
-
}
|
|
51
|
-
return;
|
|
10
|
+
const modelInfo = await modelManager.load(addedFile.file, addedFile.id, addedFile.file.name, {
|
|
11
|
+
position: addedFile.position,
|
|
12
|
+
scale: fileScale,
|
|
13
|
+
rotation: new THREE.Euler(0, THREE.MathUtils.degToRad(fileRotation), 0),
|
|
14
|
+
enableGizmo: true,
|
|
15
|
+
enableAnimations: true
|
|
16
|
+
});
|
|
17
|
+
if (!modelInfo) return null;
|
|
18
|
+
setCurrent3DFileId(addedFile.id);
|
|
19
|
+
const marker2 = createFileMarker(addedFile, modelInfo.model, world, onAction);
|
|
20
|
+
return { kind: "model", marker: marker2, object3D: modelInfo.model };
|
|
52
21
|
}
|
|
53
22
|
if (fileName.endsWith(".dxf")) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
);
|
|
65
|
-
if (dxfInfo) {
|
|
66
|
-
setCurrent3DFileId(addedFile.id);
|
|
67
|
-
const markerObj = createFileMarker(addedFile, dxfInfo.group, () => {
|
|
68
|
-
}, world, onMarkerContextMenu);
|
|
69
|
-
addDxf.onDxfTransformed.add((transformedDxfInfo) => {
|
|
70
|
-
if (transformedDxfInfo.id === addedFile.id) {
|
|
71
|
-
updateMarkerPosition(markerObj, dxfInfo.group);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
setTimeout(() => {
|
|
75
|
-
updateMarkerPosition(markerObj, dxfInfo.group);
|
|
76
|
-
}, 100);
|
|
77
|
-
}
|
|
78
|
-
} catch (error) {
|
|
79
|
-
console.error("Error loading DXF file:", error);
|
|
80
|
-
}
|
|
81
|
-
return;
|
|
23
|
+
const dxfInfo = await addDxf.loadDxf(addedFile.file, addedFile.id, {
|
|
24
|
+
position: addedFile.position,
|
|
25
|
+
scale: fileScale,
|
|
26
|
+
rotation: fileRotation,
|
|
27
|
+
enableGizmo: true
|
|
28
|
+
});
|
|
29
|
+
if (!dxfInfo) return null;
|
|
30
|
+
setCurrent3DFileId(addedFile.id);
|
|
31
|
+
const marker2 = createFileMarker(addedFile, dxfInfo.group, world, onAction);
|
|
32
|
+
return { kind: "dxf", marker: marker2, object3D: dxfInfo.group };
|
|
82
33
|
}
|
|
83
|
-
createGenericFileMarker(addedFile, world,
|
|
34
|
+
const { marker, object3D } = createGenericFileMarker(addedFile, world, onAction);
|
|
35
|
+
return { kind: "generic", marker, object3D };
|
|
84
36
|
};
|
|
85
37
|
export {
|
|
86
38
|
addFileToScene
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.ts"],"sourcesContent":["import * as THREE from 'three'\r\nimport * as OBC from '@thatopen/components'\r\nimport { ModelManager } from '../../../ModelManager'\r\nimport { AddDxf } from './AddDxf'\r\nimport {\r\n AddedFile,\r\n createFileMarker,\r\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.ts"],"sourcesContent":["import * as THREE from 'three'\r\nimport * as OBC from '@thatopen/components'\r\nimport { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js'\r\nimport { ModelManager } from '../../../ModelManager'\r\nimport { AddDxf } from './AddDxf'\r\nimport {\r\n AddedFile,\r\n createFileMarker,\r\n createGenericFileMarker,\r\n} from './FileMarkerUtils'\r\nimport type { FileMarkerAction } from '../../../../../../ui/FilesManager/src/FileMarker'\r\n\r\nexport type PlacedKind = 'dxf' | 'model' | 'generic'\r\n\r\nexport interface PlacedResult {\r\n kind: PlacedKind\r\n marker: CSS2DObject | null\r\n object3D: THREE.Object3D\r\n}\r\n\r\nexport const addFileToScene = async (\r\n addedFile: AddedFile,\r\n fileScale: number,\r\n fileRotation: number,\r\n world: OBC.World | null,\r\n modelManager: ModelManager | null,\r\n addDxf: AddDxf | null,\r\n setCurrent3DFileId: (id: string | null) => void,\r\n onAction?: (action: FileMarkerAction) => void,\r\n): Promise<PlacedResult | null> => {\r\n if (!world || !modelManager || !addDxf) return null\r\n\r\n const fileName = addedFile.file.name.toLowerCase()\r\n\r\n if (fileName.endsWith('.glb') || fileName.endsWith('.gltf')) {\r\n const modelInfo = await modelManager.load(addedFile.file, addedFile.id, addedFile.file.name, {\r\n position: addedFile.position,\r\n scale: fileScale,\r\n rotation: new THREE.Euler(0, THREE.MathUtils.degToRad(fileRotation), 0),\r\n enableGizmo: true,\r\n enableAnimations: true,\r\n })\r\n if (!modelInfo) return null\r\n\r\n setCurrent3DFileId(addedFile.id)\r\n const marker = createFileMarker(addedFile, modelInfo.model, world, onAction)\r\n return { kind: 'model', marker, object3D: modelInfo.model }\r\n }\r\n\r\n if (fileName.endsWith('.dxf')) {\r\n const dxfInfo = await addDxf.loadDxf(addedFile.file, addedFile.id, {\r\n position: addedFile.position,\r\n scale: fileScale,\r\n rotation: fileRotation,\r\n enableGizmo: true,\r\n })\r\n if (!dxfInfo) return null\r\n\r\n setCurrent3DFileId(addedFile.id)\r\n const marker = createFileMarker(addedFile, dxfInfo.group, world, onAction)\r\n return { kind: 'dxf', marker, object3D: dxfInfo.group }\r\n }\r\n\r\n const { marker, object3D } = createGenericFileMarker(addedFile, world, onAction)\r\n return { kind: 'generic', marker, object3D }\r\n}\r\n"],"mappings":"AAAA,YAAY,WAAW;AAKvB;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AAWA,MAAM,iBAAiB,OAC5B,WACA,WACA,cACA,OACA,cACA,QACA,oBACA,aACiC;AACjC,MAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAQ,QAAO;AAE/C,QAAM,WAAW,UAAU,KAAK,KAAK,YAAY;AAEjD,MAAI,SAAS,SAAS,MAAM,KAAK,SAAS,SAAS,OAAO,GAAG;AAC3D,UAAM,YAAY,MAAM,aAAa,KAAK,UAAU,MAAM,UAAU,IAAI,UAAU,KAAK,MAAM;AAAA,MAC3F,UAAU,UAAU;AAAA,MACpB,OAAO;AAAA,MACP,UAAU,IAAI,MAAM,MAAM,GAAG,MAAM,UAAU,SAAS,YAAY,GAAG,CAAC;AAAA,MACtE,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AACD,QAAI,CAAC,UAAW,QAAO;AAEvB,uBAAmB,UAAU,EAAE;AAC/B,UAAMA,UAAS,iBAAiB,WAAW,UAAU,OAAO,OAAO,QAAQ;AAC3E,WAAO,EAAE,MAAM,SAAS,QAAAA,SAAQ,UAAU,UAAU,MAAM;AAAA,EAC5D;AAEA,MAAI,SAAS,SAAS,MAAM,GAAG;AAC7B,UAAM,UAAU,MAAM,OAAO,QAAQ,UAAU,MAAM,UAAU,IAAI;AAAA,MACjE,UAAU,UAAU;AAAA,MACpB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,aAAa;AAAA,IACf,CAAC;AACD,QAAI,CAAC,QAAS,QAAO;AAErB,uBAAmB,UAAU,EAAE;AAC/B,UAAMA,UAAS,iBAAiB,WAAW,QAAQ,OAAO,OAAO,QAAQ;AACzE,WAAO,EAAE,MAAM,OAAO,QAAAA,SAAQ,UAAU,QAAQ,MAAM;AAAA,EACxD;AAEA,QAAM,EAAE,QAAQ,SAAS,IAAI,wBAAwB,WAAW,OAAO,QAAQ;AAC/E,SAAO,EAAE,MAAM,WAAW,QAAQ,SAAS;AAC7C;","names":["marker"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import { CSS2DObject } from 'three/addons/renderers/CSS2DRenderer.js';
|
|
3
|
+
import { type FileMarkerAction } from '../../../../../../ui/FilesManager/src/FileMarker';
|
|
3
4
|
export interface AddedFile {
|
|
4
5
|
id: string;
|
|
5
6
|
file: File;
|
|
@@ -7,7 +8,10 @@ export interface AddedFile {
|
|
|
7
8
|
imageUrl?: string;
|
|
8
9
|
}
|
|
9
10
|
export declare const initializeCSS2DRenderer: (world: any) => any;
|
|
10
|
-
export declare const createFileMarker: (addedFile: AddedFile, object3D: THREE.Object3D,
|
|
11
|
-
export declare const
|
|
12
|
-
|
|
11
|
+
export declare const createFileMarker: (addedFile: AddedFile, object3D: THREE.Object3D, world: any, onAction?: (action: FileMarkerAction) => void) => CSS2DObject | null;
|
|
12
|
+
export declare const createGenericFileMarker: (addedFile: AddedFile, world: any, onAction?: (action: FileMarkerAction) => void) => {
|
|
13
|
+
marker: CSS2DObject | null;
|
|
14
|
+
object3D: THREE.Object3D;
|
|
15
|
+
};
|
|
16
|
+
export declare const removeMarker: (marker: CSS2DObject | null, world?: any) => void;
|
|
13
17
|
//# sourceMappingURL=FileMarkerUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileMarkerUtils.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAEL,WAAW,EACZ,MAAM,yCAAyC,CAAA;
|
|
1
|
+
{"version":3,"file":"FileMarkerUtils.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAEL,WAAW,EACZ,MAAM,yCAAyC,CAAA;AAEhD,OAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,kDAAkD,CAAA;AAGpG,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,uBAAuB,GAAI,OAAO,GAAG,QA4BjD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,WAAW,SAAS,EACpB,UAAU,KAAK,CAAC,QAAQ,EACxB,OAAO,GAAG,EACV,WAAW,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,KAC5C,WAAW,GAAG,IA8BhB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,WAAW,SAAS,EACpB,OAAO,GAAG,EACV,WAAW,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,KAC5C;IAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAA;CAWxD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW,GAAG,IAAI,EAAE,QAAQ,GAAG,SAKnE,CAAA"}
|
|
@@ -8,113 +8,77 @@ import { createRoot } from "react-dom/client";
|
|
|
8
8
|
import FileMarker from "../../../../../../ui/FilesManager/src/FileMarker";
|
|
9
9
|
const initializeCSS2DRenderer = (world) => {
|
|
10
10
|
if (!world) return null;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
originalRender.call(this, scene, camera);
|
|
32
|
-
css2dRenderer.render(scene, camera);
|
|
33
|
-
};
|
|
34
|
-
}
|
|
11
|
+
if (world.css2dRenderer) return world.css2dRenderer;
|
|
12
|
+
const css2dRenderer = new CSS2DRenderer();
|
|
13
|
+
css2dRenderer.setSize(
|
|
14
|
+
world.renderer.three.domElement.clientWidth,
|
|
15
|
+
world.renderer.three.domElement.clientHeight
|
|
16
|
+
);
|
|
17
|
+
css2dRenderer.domElement.style.position = "absolute";
|
|
18
|
+
css2dRenderer.domElement.style.top = "0";
|
|
19
|
+
css2dRenderer.domElement.style.left = "0";
|
|
20
|
+
css2dRenderer.domElement.style.pointerEvents = "none";
|
|
21
|
+
css2dRenderer.domElement.style.zIndex = "1000";
|
|
22
|
+
css2dRenderer.domElement.classList.add("css2d-renderer");
|
|
23
|
+
const container = world.renderer.three.domElement.parentElement;
|
|
24
|
+
container.append(css2dRenderer.domElement);
|
|
25
|
+
world.css2dRenderer = css2dRenderer;
|
|
26
|
+
const originalRender = world.renderer.three.render;
|
|
27
|
+
world.renderer.three.render = function(scene, camera) {
|
|
28
|
+
originalRender.call(this, scene, camera);
|
|
29
|
+
css2dRenderer.render(scene, camera);
|
|
30
|
+
};
|
|
35
31
|
return css2dRenderer;
|
|
36
32
|
};
|
|
37
|
-
const createFileMarker = (addedFile, object3D,
|
|
33
|
+
const createFileMarker = (addedFile, object3D, world, onAction) => {
|
|
38
34
|
var _a;
|
|
39
35
|
if (!world) return null;
|
|
40
|
-
console.log("Creating FileMarker for:", addedFile.file.name, "at position:", addedFile.position);
|
|
41
36
|
const markerFile = {
|
|
42
37
|
id: Number.parseInt(addedFile.id, 10) || 0,
|
|
43
38
|
name: addedFile.file.name,
|
|
44
39
|
type: addedFile.file.type || "application/octet-stream",
|
|
45
|
-
url: (_a = addedFile.imageUrl) != null ? _a :
|
|
40
|
+
url: (_a = addedFile.imageUrl) != null ? _a : "",
|
|
46
41
|
assetId: addedFile.id,
|
|
47
42
|
uploadedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
48
43
|
fileOrganizationId: 0
|
|
49
44
|
};
|
|
50
45
|
const labelDiv = document.createElement("div");
|
|
51
|
-
labelDiv.style.display = "block";
|
|
52
|
-
labelDiv.style.visibility = "visible";
|
|
53
46
|
labelDiv.style.pointerEvents = "auto";
|
|
54
47
|
labelDiv.style.zIndex = "1001";
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
e.stopPropagation();
|
|
59
|
-
onContextMenu(e);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
const root = createRoot(labelDiv);
|
|
63
|
-
root.render(
|
|
64
|
-
React.createElement(FileMarker, {
|
|
65
|
-
file: markerFile,
|
|
66
|
-
onClick
|
|
67
|
-
})
|
|
48
|
+
labelDiv.addEventListener("contextmenu", (e) => e.preventDefault());
|
|
49
|
+
createRoot(labelDiv).render(
|
|
50
|
+
React.createElement(FileMarker, { file: markerFile, onAction })
|
|
68
51
|
);
|
|
69
52
|
const css2dObject = new CSS2DObject(labelDiv);
|
|
70
53
|
css2dObject.position.copy(addedFile.position);
|
|
71
54
|
css2dObject.position.y += 0.2;
|
|
72
|
-
css2dObject.visible = true;
|
|
73
|
-
css2dObject.layers.set(0);
|
|
74
|
-
world.scene.three.add(css2dObject);
|
|
75
55
|
css2dObject.fileId = addedFile.id;
|
|
76
56
|
css2dObject.object3D = object3D;
|
|
77
|
-
|
|
78
|
-
if (world.css2dRenderer) {
|
|
79
|
-
world.css2dRenderer.render(world.scene.three, world.camera.three);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
forceRender();
|
|
83
|
-
setTimeout(forceRender, 0);
|
|
84
|
-
setTimeout(forceRender, 100);
|
|
85
|
-
setTimeout(forceRender, 500);
|
|
86
|
-
console.log("FileMarker created and added to scene", {
|
|
87
|
-
position: css2dObject.position,
|
|
88
|
-
fileId: addedFile.id,
|
|
89
|
-
objectPosition: object3D.position,
|
|
90
|
-
visible: css2dObject.visible,
|
|
91
|
-
element: labelDiv,
|
|
92
|
-
renderer: world.css2dRenderer
|
|
93
|
-
});
|
|
57
|
+
world.scene.three.add(css2dObject);
|
|
94
58
|
return css2dObject;
|
|
95
59
|
};
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
marker.position.y += 0.2;
|
|
102
|
-
};
|
|
103
|
-
const createGenericFileMarker = (addedFile, world, toolsDispatch, onContextMenu) => {
|
|
104
|
-
if (!world) return;
|
|
105
|
-
const sphereGeometry = new THREE.SphereGeometry(0.025, 10, 10);
|
|
106
|
-
const sphereMaterial = new THREE.MeshBasicMaterial({ color: 16777215 });
|
|
107
|
-
const sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
|
|
60
|
+
const createGenericFileMarker = (addedFile, world, onAction) => {
|
|
61
|
+
const sphere = new THREE.Mesh(
|
|
62
|
+
new THREE.SphereGeometry(0.025, 10, 10),
|
|
63
|
+
new THREE.MeshBasicMaterial({ color: 16777215 })
|
|
64
|
+
);
|
|
108
65
|
sphere.position.copy(addedFile.position);
|
|
109
|
-
world.scene.three.add(sphere);
|
|
110
|
-
createFileMarker(addedFile, sphere, () => {
|
|
111
|
-
}, world, onContextMenu);
|
|
112
66
|
sphere.fileId = addedFile.id;
|
|
67
|
+
if (world) world.scene.three.add(sphere);
|
|
68
|
+
const marker = createFileMarker(addedFile, sphere, world, onAction);
|
|
69
|
+
return { marker, object3D: sphere };
|
|
70
|
+
};
|
|
71
|
+
const removeMarker = (marker, world) => {
|
|
72
|
+
var _a;
|
|
73
|
+
if (!marker) return;
|
|
74
|
+
if (world) world.scene.three.remove(marker);
|
|
75
|
+
const el = marker.element;
|
|
76
|
+
(_a = el == null ? void 0 : el.parentElement) == null ? void 0 : _a.removeChild(el);
|
|
113
77
|
};
|
|
114
78
|
export {
|
|
115
79
|
createFileMarker,
|
|
116
80
|
createGenericFileMarker,
|
|
117
81
|
initializeCSS2DRenderer,
|
|
118
|
-
|
|
82
|
+
removeMarker
|
|
119
83
|
};
|
|
120
84
|
//# sourceMappingURL=FileMarkerUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.ts"],"sourcesContent":["import * as THREE from 'three'\r\nimport * as React from 'react'\r\nimport {\r\n CSS2DRenderer,\r\n CSS2DObject,\r\n} from 'three/addons/renderers/CSS2DRenderer.js'\r\nimport { createRoot } from 'react-dom/client'\r\nimport FileMarker from '../../../../../../ui/FilesManager/src/FileMarker'\r\nimport type { DbFile } from '../../../../../../../types/dbTypes'\r\n\r\nexport interface AddedFile {\r\n id: string\r\n file: File\r\n position: THREE.Vector3\r\n imageUrl?: string\r\n}\r\n\r\nexport const initializeCSS2DRenderer = (world: any) => {\r\n if (!world) return null\r\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.ts"],"sourcesContent":["import * as THREE from 'three'\r\nimport * as React from 'react'\r\nimport {\r\n CSS2DRenderer,\r\n CSS2DObject,\r\n} from 'three/addons/renderers/CSS2DRenderer.js'\r\nimport { createRoot } from 'react-dom/client'\r\nimport FileMarker, { type FileMarkerAction } from '../../../../../../ui/FilesManager/src/FileMarker'\r\nimport type { DbFile } from '../../../../../../../types/dbTypes'\r\n\r\nexport interface AddedFile {\r\n id: string\r\n file: File\r\n position: THREE.Vector3\r\n imageUrl?: string\r\n}\r\n\r\nexport const initializeCSS2DRenderer = (world: any) => {\r\n if (!world) return null\r\n if ((world as any).css2dRenderer) return (world as any).css2dRenderer\r\n\r\n const css2dRenderer = new CSS2DRenderer()\r\n css2dRenderer.setSize(\r\n world.renderer!.three.domElement!.clientWidth,\r\n world.renderer!.three.domElement!.clientHeight,\r\n )\r\n css2dRenderer.domElement.style.position = 'absolute'\r\n css2dRenderer.domElement.style.top = '0'\r\n css2dRenderer.domElement.style.left = '0'\r\n css2dRenderer.domElement.style.pointerEvents = 'none'\r\n css2dRenderer.domElement.style.zIndex = '1000'\r\n css2dRenderer.domElement.classList.add('css2d-renderer')\r\n\r\n const container = world.renderer!.three.domElement!.parentElement!\r\n container.append(css2dRenderer.domElement)\r\n ;(world as any).css2dRenderer = css2dRenderer\r\n\r\n // Render the CSS2D layer on top of every world render.\r\n const originalRender = world.renderer!.three.render\r\n world.renderer!.three.render = function (scene: THREE.Scene, camera: THREE.Camera) {\r\n originalRender.call(this, scene, camera)\r\n css2dRenderer.render(scene, camera)\r\n }\r\n\r\n return css2dRenderer\r\n}\r\n\r\nexport const createFileMarker = (\r\n addedFile: AddedFile,\r\n object3D: THREE.Object3D,\r\n world: any,\r\n onAction?: (action: FileMarkerAction) => void,\r\n): CSS2DObject | null => {\r\n if (!world) return null\r\n\r\n const markerFile = {\r\n id: Number.parseInt(addedFile.id, 10) || 0,\r\n name: addedFile.file.name,\r\n type: addedFile.file.type || 'application/octet-stream',\r\n url: addedFile.imageUrl ?? '',\r\n assetId: addedFile.id,\r\n uploadedAt: new Date().toISOString(),\r\n fileOrganizationId: 0,\r\n } as DbFile\r\n\r\n const labelDiv = document.createElement('div')\r\n labelDiv.style.pointerEvents = 'auto'\r\n labelDiv.style.zIndex = '1001'\r\n labelDiv.addEventListener('contextmenu', e => e.preventDefault())\r\n\r\n createRoot(labelDiv).render(\r\n React.createElement(FileMarker, { file: markerFile, onAction }),\r\n )\r\n\r\n const css2dObject = new CSS2DObject(labelDiv)\r\n css2dObject.position.copy(addedFile.position)\r\n css2dObject.position.y += 0.2\r\n ;(css2dObject as any).fileId = addedFile.id\r\n ;(css2dObject as any).object3D = object3D\r\n world.scene.three.add(css2dObject)\r\n\r\n return css2dObject\r\n}\r\n\r\nexport const createGenericFileMarker = (\r\n addedFile: AddedFile,\r\n world: any,\r\n onAction?: (action: FileMarkerAction) => void,\r\n): { marker: CSS2DObject | null, object3D: THREE.Object3D } => {\r\n const sphere = new THREE.Mesh(\r\n new THREE.SphereGeometry(0.025, 10, 10),\r\n new THREE.MeshBasicMaterial({ color: 0xFFFFFF }),\r\n )\r\n sphere.position.copy(addedFile.position)\r\n ;(sphere as any).fileId = addedFile.id\r\n if (world) world.scene.three.add(sphere)\r\n\r\n const marker = createFileMarker(addedFile, sphere, world, onAction)\r\n return { marker, object3D: sphere }\r\n}\r\n\r\nexport const removeMarker = (marker: CSS2DObject | null, world?: any) => {\r\n if (!marker) return\r\n if (world) world.scene.three.remove(marker)\r\n const el = marker.element as HTMLElement | undefined\r\n el?.parentElement?.removeChild(el)\r\n}\r\n"],"mappings":"AAAA,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,OAAO,gBAA2C;AAU3C,MAAM,0BAA0B,CAAC,UAAe;AACrD,MAAI,CAAC,MAAO,QAAO;AACnB,MAAK,MAAc,cAAe,QAAQ,MAAc;AAExD,QAAM,gBAAgB,IAAI,cAAc;AACxC,gBAAc;AAAA,IACZ,MAAM,SAAU,MAAM,WAAY;AAAA,IAClC,MAAM,SAAU,MAAM,WAAY;AAAA,EACpC;AACA,gBAAc,WAAW,MAAM,WAAW;AAC1C,gBAAc,WAAW,MAAM,MAAM;AACrC,gBAAc,WAAW,MAAM,OAAO;AACtC,gBAAc,WAAW,MAAM,gBAAgB;AAC/C,gBAAc,WAAW,MAAM,SAAS;AACxC,gBAAc,WAAW,UAAU,IAAI,gBAAgB;AAEvD,QAAM,YAAY,MAAM,SAAU,MAAM,WAAY;AACpD,YAAU,OAAO,cAAc,UAAU;AACxC,EAAC,MAAc,gBAAgB;AAGhC,QAAM,iBAAiB,MAAM,SAAU,MAAM;AAC7C,QAAM,SAAU,MAAM,SAAS,SAAU,OAAoB,QAAsB;AACjF,mBAAe,KAAK,MAAM,OAAO,MAAM;AACvC,kBAAc,OAAO,OAAO,MAAM;AAAA,EACpC;AAEA,SAAO;AACT;AAEO,MAAM,mBAAmB,CAC9B,WACA,UACA,OACA,aACuB;AApDzB;AAqDE,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,aAAa;AAAA,IACjB,IAAI,OAAO,SAAS,UAAU,IAAI,EAAE,KAAK;AAAA,IACzC,MAAM,UAAU,KAAK;AAAA,IACrB,MAAM,UAAU,KAAK,QAAQ;AAAA,IAC7B,MAAK,eAAU,aAAV,YAAsB;AAAA,IAC3B,SAAS,UAAU;AAAA,IACnB,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,IACnC,oBAAoB;AAAA,EACtB;AAEA,QAAM,WAAW,SAAS,cAAc,KAAK;AAC7C,WAAS,MAAM,gBAAgB;AAC/B,WAAS,MAAM,SAAS;AACxB,WAAS,iBAAiB,eAAe,OAAK,EAAE,eAAe,CAAC;AAEhE,aAAW,QAAQ,EAAE;AAAA,IACnB,MAAM,cAAc,YAAY,EAAE,MAAM,YAAY,SAAS,CAAC;AAAA,EAChE;AAEA,QAAM,cAAc,IAAI,YAAY,QAAQ;AAC5C,cAAY,SAAS,KAAK,UAAU,QAAQ;AAC5C,cAAY,SAAS,KAAK;AACzB,EAAC,YAAoB,SAAS,UAAU;AACxC,EAAC,YAAoB,WAAW;AACjC,QAAM,MAAM,MAAM,IAAI,WAAW;AAEjC,SAAO;AACT;AAEO,MAAM,0BAA0B,CACrC,WACA,OACA,aAC6D;AAC7D,QAAM,SAAS,IAAI,MAAM;AAAA,IACvB,IAAI,MAAM,eAAe,OAAO,IAAI,EAAE;AAAA,IACtC,IAAI,MAAM,kBAAkB,EAAE,OAAO,SAAS,CAAC;AAAA,EACjD;AACA,SAAO,SAAS,KAAK,UAAU,QAAQ;AACtC,EAAC,OAAe,SAAS,UAAU;AACpC,MAAI,MAAO,OAAM,MAAM,MAAM,IAAI,MAAM;AAEvC,QAAM,SAAS,iBAAiB,WAAW,QAAQ,OAAO,QAAQ;AAClE,SAAO,EAAE,QAAQ,UAAU,OAAO;AACpC;AAEO,MAAM,eAAe,CAAC,QAA4B,UAAgB;AArGzE;AAsGE,MAAI,CAAC,OAAQ;AACb,MAAI,MAAO,OAAM,MAAM,MAAM,OAAO,MAAM;AAC1C,QAAM,KAAK,OAAO;AAClB,iCAAI,kBAAJ,mBAAmB,YAAY;AACjC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Position3DCard.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Position3DCard.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,GAAG,OAAO,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAQD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,QAAQ,GACT,EAAE,mBAAmB,qBA6ErB"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import * as LR from "lucide-react";
|
|
3
|
+
import { Card, CardContent, CardHeader } from "../../../../../../ui/Card";
|
|
3
4
|
import { Button } from "../../../../../../ui/Button";
|
|
4
5
|
import { Input } from "../../../../../../ui/Input";
|
|
5
6
|
import { Label } from "../../../../../../ui/Label";
|
|
6
7
|
import { Separator } from "../../../../../../ui/Separator";
|
|
7
|
-
import
|
|
8
|
+
import { SliderWithInput } from "../../../../../../ui/Slider";
|
|
9
|
+
const SCALE_PRESETS = [
|
|
10
|
+
{ label: "mm", value: 1e-3, title: "Millimetres \u2192 metres" },
|
|
11
|
+
{ label: "cm", value: 0.01, title: "Centimetres \u2192 metres" },
|
|
12
|
+
{ label: "in", value: 0.0254, title: "Inches \u2192 metres" }
|
|
13
|
+
];
|
|
8
14
|
function Position3DCard({
|
|
9
15
|
fileType,
|
|
10
16
|
fileName,
|
|
@@ -15,99 +21,70 @@ function Position3DCard({
|
|
|
15
21
|
onConfirm,
|
|
16
22
|
onCancel
|
|
17
23
|
}) {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
const isDxf = fileType === "dxf";
|
|
25
|
+
const defaultScale = isDxf ? 1e-3 : 1;
|
|
26
|
+
return /* @__PURE__ */ jsx("div", { className: "absolute bottom-10 right-4 z-50 w-64 pointer-events-auto", children: /* @__PURE__ */ jsxs(Card, { className: "shadow-lg border bg-background/95 backdrop-blur-sm", children: [
|
|
27
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "p-3 pb-2 space-y-1.5", children: [
|
|
21
28
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
22
|
-
/* @__PURE__ */ jsxs(
|
|
23
|
-
/* @__PURE__ */ jsx(LR.
|
|
24
|
-
/* @__PURE__ */ jsxs("span", { className: "truncate", children: [
|
|
29
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 min-w-0", children: [
|
|
30
|
+
isDxf ? /* @__PURE__ */ jsx(LR.DraftingCompass, { size: 15, className: "text-muted-foreground shrink-0" }) : /* @__PURE__ */ jsx(LR.Box, { size: 15, className: "text-muted-foreground shrink-0" }),
|
|
31
|
+
/* @__PURE__ */ jsxs("span", { className: "text-sm font-medium truncate", children: [
|
|
25
32
|
fileType.toUpperCase(),
|
|
26
|
-
"
|
|
33
|
+
" placement"
|
|
27
34
|
] })
|
|
28
35
|
] }),
|
|
29
|
-
/* @__PURE__ */ jsx(
|
|
30
|
-
Button,
|
|
31
|
-
{
|
|
32
|
-
variant: "ghost",
|
|
33
|
-
size: "icon",
|
|
34
|
-
className: "h-6 w-6 shrink-0",
|
|
35
|
-
onClick: onCancel,
|
|
36
|
-
children: /* @__PURE__ */ jsx(LR.X, { size: 13 })
|
|
37
|
-
}
|
|
38
|
-
)
|
|
36
|
+
/* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", className: "h-6 w-6 shrink-0", onClick: onCancel, children: /* @__PURE__ */ jsx(LR.X, { size: 13 }) })
|
|
39
37
|
] }),
|
|
40
38
|
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground truncate", title: fileName, children: fileName }),
|
|
41
|
-
/* @__PURE__ */ jsx("p", { className: "text-
|
|
39
|
+
/* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground/70 leading-tight", children: "Double-click in the scene to place. Drag the gizmo or press G / R / S to move, rotate or scale." })
|
|
42
40
|
] }),
|
|
43
41
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
44
|
-
/* @__PURE__ */ jsxs(CardContent, { className: "
|
|
45
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
46
|
-
/* @__PURE__ */
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
{
|
|
50
|
-
type: "number",
|
|
51
|
-
value: scale,
|
|
52
|
-
onChange: (e) => onScaleChange(Number.parseFloat(e.target.value) || defaultScale),
|
|
53
|
-
step: fileType === "dxf" ? "0.001" : "0.1",
|
|
54
|
-
min: fileType === "dxf" ? "0.001" : "0.1",
|
|
55
|
-
max: "10",
|
|
56
|
-
className: "h-7 text-xs w-28"
|
|
57
|
-
}
|
|
58
|
-
),
|
|
59
|
-
fileType === "dxf" && /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
|
|
60
|
-
/* @__PURE__ */ jsx(
|
|
61
|
-
Button,
|
|
62
|
-
{
|
|
63
|
-
variant: "outline",
|
|
64
|
-
size: "sm",
|
|
65
|
-
onClick: () => onScaleChange(1e-3),
|
|
66
|
-
className: "text-xs px-2 h-7",
|
|
67
|
-
title: "Millimetres to metres",
|
|
68
|
-
children: "mm"
|
|
69
|
-
}
|
|
70
|
-
),
|
|
71
|
-
/* @__PURE__ */ jsx(
|
|
42
|
+
/* @__PURE__ */ jsxs(CardContent, { className: "p-3 space-y-3", children: [
|
|
43
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
44
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
45
|
+
/* @__PURE__ */ jsx(Label, { className: "text-xs text-muted-foreground", children: "Scale" }),
|
|
46
|
+
isDxf && /* @__PURE__ */ jsx("div", { className: "flex gap-1", children: SCALE_PRESETS.map((preset) => /* @__PURE__ */ jsx(
|
|
72
47
|
Button,
|
|
73
48
|
{
|
|
74
|
-
variant: "outline",
|
|
49
|
+
variant: Math.abs(scale - preset.value) < 1e-6 ? "default" : "outline",
|
|
75
50
|
size: "sm",
|
|
76
|
-
onClick: () => onScaleChange(
|
|
77
|
-
className: "text-xs px-2 h-
|
|
78
|
-
title:
|
|
79
|
-
children:
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
|
|
85
|
-
/* @__PURE__ */ jsx(Label, { className: "text-xs w-12 shrink-0 text-muted-foreground", children: "Rotate" }),
|
|
51
|
+
onClick: () => onScaleChange(preset.value),
|
|
52
|
+
className: "text-xs px-2 h-6",
|
|
53
|
+
title: preset.title,
|
|
54
|
+
children: preset.label
|
|
55
|
+
},
|
|
56
|
+
preset.label
|
|
57
|
+
)) })
|
|
58
|
+
] }),
|
|
86
59
|
/* @__PURE__ */ jsx(
|
|
87
60
|
Input,
|
|
88
61
|
{
|
|
89
62
|
type: "number",
|
|
90
|
-
value:
|
|
91
|
-
onChange: (e) =>
|
|
92
|
-
step:
|
|
93
|
-
min:
|
|
94
|
-
max:
|
|
95
|
-
className: "h-7 text-xs
|
|
63
|
+
value: scale,
|
|
64
|
+
onChange: (e) => onScaleChange(Number.parseFloat(e.target.value) || defaultScale),
|
|
65
|
+
step: isDxf ? 1e-3 : 0.1,
|
|
66
|
+
min: isDxf ? 1e-3 : 0.1,
|
|
67
|
+
max: 10,
|
|
68
|
+
className: "h-7 text-xs"
|
|
96
69
|
}
|
|
97
70
|
)
|
|
98
71
|
] }),
|
|
99
|
-
/* @__PURE__ */
|
|
100
|
-
|
|
72
|
+
/* @__PURE__ */ jsx(
|
|
73
|
+
SliderWithInput,
|
|
101
74
|
{
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
75
|
+
label: "Rotation",
|
|
76
|
+
unit: "\xB0",
|
|
77
|
+
value: [rotation],
|
|
78
|
+
onValueChange: (value) => onRotationChange(value[0]),
|
|
79
|
+
min: 0,
|
|
80
|
+
max: 360,
|
|
81
|
+
step: 1
|
|
109
82
|
}
|
|
110
|
-
)
|
|
83
|
+
),
|
|
84
|
+
/* @__PURE__ */ jsxs(Button, { onClick: onConfirm, size: "sm", className: "w-full h-8 text-xs", children: [
|
|
85
|
+
/* @__PURE__ */ jsx(LR.Check, { size: 13, className: "mr-1" }),
|
|
86
|
+
"Confirm placement"
|
|
87
|
+
] })
|
|
111
88
|
] })
|
|
112
89
|
] }) });
|
|
113
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.tsx"],"sourcesContent":["import React from 'react'\r\nimport { Card, CardContent, CardHeader
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.tsx"],"sourcesContent":["import React from 'react'\r\nimport * as LR from 'lucide-react'\r\nimport { Card, CardContent, CardHeader } from '../../../../../../ui/Card'\r\nimport { Button } from '../../../../../../ui/Button'\r\nimport { Input } from '../../../../../../ui/Input'\r\nimport { Label } from '../../../../../../ui/Label'\r\nimport { Separator } from '../../../../../../ui/Separator'\r\nimport { SliderWithInput } from '../../../../../../ui/Slider'\r\n\r\ninterface Position3DCardProps {\r\n fileType: 'dxf' | 'model'\r\n fileName: string\r\n scale: number\r\n rotation: number\r\n onScaleChange: (scale: number) => void\r\n onRotationChange: (rotation: number) => void\r\n onConfirm: () => void\r\n onCancel: () => void\r\n}\r\n\r\nconst SCALE_PRESETS: { label: string, value: number, title: string }[] = [\r\n { label: 'mm', value: 0.001, title: 'Millimetres → metres' },\r\n { label: 'cm', value: 0.01, title: 'Centimetres → metres' },\r\n { label: 'in', value: 0.0254, title: 'Inches → metres' },\r\n]\r\n\r\nexport default function Position3DCard({\r\n fileType,\r\n fileName,\r\n scale,\r\n rotation,\r\n onScaleChange,\r\n onRotationChange,\r\n onConfirm,\r\n onCancel,\r\n}: Position3DCardProps) {\r\n const isDxf = fileType === 'dxf'\r\n const defaultScale = isDxf ? 0.001 : 1\r\n\r\n return (\r\n <div className=\"absolute bottom-10 right-4 z-50 w-64 pointer-events-auto\">\r\n <Card className=\"shadow-lg border bg-background/95 backdrop-blur-sm\">\r\n <CardHeader className=\"p-3 pb-2 space-y-1.5\">\r\n <div className=\"flex items-center justify-between gap-2\">\r\n <div className=\"flex items-center gap-1.5 min-w-0\">\r\n {isDxf\r\n ? <LR.DraftingCompass size={15} className=\"text-muted-foreground shrink-0\" />\r\n : <LR.Box size={15} className=\"text-muted-foreground shrink-0\" />}\r\n <span className=\"text-sm font-medium truncate\">{fileType.toUpperCase()} placement</span>\r\n </div>\r\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6 shrink-0\" onClick={onCancel}>\r\n <LR.X size={13} />\r\n </Button>\r\n </div>\r\n <p className=\"text-xs text-muted-foreground truncate\" title={fileName}>{fileName}</p>\r\n <p className=\"text-[11px] text-muted-foreground/70 leading-tight\">\r\n Double-click in the scene to place. Drag the gizmo or press G / R / S to move, rotate or scale.\r\n </p>\r\n </CardHeader>\r\n\r\n <Separator />\r\n\r\n <CardContent className=\"p-3 space-y-3\">\r\n <div className=\"space-y-1.5\">\r\n <div className=\"flex items-center justify-between gap-2\">\r\n <Label className=\"text-xs text-muted-foreground\">Scale</Label>\r\n {isDxf && (\r\n <div className=\"flex gap-1\">\r\n {SCALE_PRESETS.map(preset => (\r\n <Button\r\n key={preset.label}\r\n variant={Math.abs(scale - preset.value) < 1e-6 ? 'default' : 'outline'}\r\n size=\"sm\"\r\n onClick={() => onScaleChange(preset.value)}\r\n className=\"text-xs px-2 h-6\"\r\n title={preset.title}\r\n >\r\n {preset.label}\r\n </Button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n <Input\r\n type=\"number\"\r\n value={scale}\r\n onChange={e => onScaleChange(Number.parseFloat(e.target.value) || defaultScale)}\r\n step={isDxf ? 0.001 : 0.1}\r\n min={isDxf ? 0.001 : 0.1}\r\n max={10}\r\n className=\"h-7 text-xs\"\r\n />\r\n </div>\r\n\r\n <SliderWithInput\r\n label=\"Rotation\"\r\n unit=\"°\"\r\n value={[rotation]}\r\n onValueChange={value => onRotationChange(value[0])}\r\n min={0}\r\n max={360}\r\n step={1}\r\n />\r\n\r\n <Button onClick={onConfirm} size=\"sm\" className=\"w-full h-8 text-xs\">\r\n <LR.Check size={13} className=\"mr-1\" />\r\n Confirm placement\r\n </Button>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n )\r\n}\r\n"],"mappings":"AA8CkB,cAEJ,YAFI;AA7ClB,YAAY,QAAQ;AACpB,SAAS,MAAM,aAAa,kBAAkB;AAC9C,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,aAAa;AACtB,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAahC,MAAM,gBAAmE;AAAA,EACvE,EAAE,OAAO,MAAM,OAAO,MAAO,OAAO,4BAAuB;AAAA,EAC3D,EAAE,OAAO,MAAM,OAAO,MAAM,OAAO,4BAAuB;AAAA,EAC1D,EAAE,OAAO,MAAM,OAAO,QAAQ,OAAO,uBAAkB;AACzD;AAEe,SAAR,eAAgC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,QAAQ,aAAa;AAC3B,QAAM,eAAe,QAAQ,OAAQ;AAErC,SACE,oBAAC,SAAI,WAAU,4DACb,+BAAC,QAAK,WAAU,sDACd;AAAA,yBAAC,cAAW,WAAU,wBACpB;AAAA,2BAAC,SAAI,WAAU,2CACb;AAAA,6BAAC,SAAI,WAAU,qCACZ;AAAA,kBACG,oBAAC,GAAG,iBAAH,EAAmB,MAAM,IAAI,WAAU,kCAAiC,IACzE,oBAAC,GAAG,KAAH,EAAO,MAAM,IAAI,WAAU,kCAAiC;AAAA,UACjE,qBAAC,UAAK,WAAU,gCAAgC;AAAA,qBAAS,YAAY;AAAA,YAAE;AAAA,aAAU;AAAA,WACnF;AAAA,QACA,oBAAC,UAAO,SAAQ,SAAQ,MAAK,QAAO,WAAU,oBAAmB,SAAS,UACxE,8BAAC,GAAG,GAAH,EAAK,MAAM,IAAI,GAClB;AAAA,SACF;AAAA,MACA,oBAAC,OAAE,WAAU,0CAAyC,OAAO,UAAW,oBAAS;AAAA,MACjF,oBAAC,OAAE,WAAU,sDAAqD,6GAElE;AAAA,OACF;AAAA,IAEA,oBAAC,aAAU;AAAA,IAEX,qBAAC,eAAY,WAAU,iBACrB;AAAA,2BAAC,SAAI,WAAU,eACb;AAAA,6BAAC,SAAI,WAAU,2CACb;AAAA,8BAAC,SAAM,WAAU,iCAAgC,mBAAK;AAAA,UACrD,SACC,oBAAC,SAAI,WAAU,cACZ,wBAAc,IAAI,YACjB;AAAA,YAAC;AAAA;AAAA,cAEC,SAAS,KAAK,IAAI,QAAQ,OAAO,KAAK,IAAI,OAAO,YAAY;AAAA,cAC7D,MAAK;AAAA,cACL,SAAS,MAAM,cAAc,OAAO,KAAK;AAAA,cACzC,WAAU;AAAA,cACV,OAAO,OAAO;AAAA,cAEb,iBAAO;AAAA;AAAA,YAPH,OAAO;AAAA,UAQd,CACD,GACH;AAAA,WAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAO;AAAA,YACP,UAAU,OAAK,cAAc,OAAO,WAAW,EAAE,OAAO,KAAK,KAAK,YAAY;AAAA,YAC9E,MAAM,QAAQ,OAAQ;AAAA,YACtB,KAAK,QAAQ,OAAQ;AAAA,YACrB,KAAK;AAAA,YACL,WAAU;AAAA;AAAA,QACZ;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,MAAK;AAAA,UACL,OAAO,CAAC,QAAQ;AAAA,UAChB,eAAe,WAAS,iBAAiB,MAAM,CAAC,CAAC;AAAA,UACjD,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA;AAAA,MACR;AAAA,MAEA,qBAAC,UAAO,SAAS,WAAW,MAAK,MAAK,WAAU,sBAC9C;AAAA,4BAAC,GAAG,OAAH,EAAS,MAAM,IAAI,WAAU,QAAO;AAAA,QAAE;AAAA,SAEzC;AAAA,OACF;AAAA,KACF,GACF;AAEJ;","names":[]}
|