@collabdt/core 0.3.1 → 0.3.3
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/authentication/ForgotPassword.d.ts.map +1 -1
- package/dist/core/components/authentication/ForgotPassword.js +0 -1
- package/dist/core/components/authentication/ForgotPassword.js.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts +12 -2
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js +137 -139
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
- package/dist/core/components/ui/Comments/Comment.d.ts +18 -1
- package/dist/core/components/ui/Comments/Comment.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/Comment.js +94 -23
- package/dist/core/components/ui/Comments/Comment.js.map +1 -1
- package/dist/core/components/ui/Comments/CommentActionButtons.d.ts +38 -0
- package/dist/core/components/ui/Comments/CommentActionButtons.d.ts.map +1 -0
- package/dist/core/components/ui/Comments/CommentActionButtons.js +134 -0
- package/dist/core/components/ui/Comments/CommentActionButtons.js.map +1 -0
- package/dist/core/components/ui/Comments/CommentInput.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CommentInput.js +5 -2
- package/dist/core/components/ui/Comments/CommentInput.js.map +1 -1
- package/dist/core/components/ui/Comments/CommentsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CommentsSection.js +86 -42
- package/dist/core/components/ui/Comments/CommentsSection.js.map +1 -1
- package/dist/core/components/ui/Comments/commentUtils.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/commentUtils.js +2 -1
- package/dist/core/components/ui/Comments/commentUtils.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js +0 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Container.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Container.js +16 -12
- package/dist/core/components/ui/InfoSidebar/Container.js.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts +1 -2
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js +66 -94
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
- package/dist/core/components/ui/Sensors/Sensor.d.ts +16 -3
- package/dist/core/components/ui/Sensors/Sensor.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/Sensor.js +76 -37
- package/dist/core/components/ui/Sensors/Sensor.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorChart.d.ts +12 -2
- package/dist/core/components/ui/Sensors/SensorChart.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorChart.js +49 -12
- package/dist/core/components/ui/Sensors/SensorChart.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorDetailDialog.d.ts +9 -0
- package/dist/core/components/ui/Sensors/SensorDetailDialog.d.ts.map +1 -0
- package/dist/core/components/ui/Sensors/SensorDetailDialog.js +128 -0
- package/dist/core/components/ui/Sensors/SensorDetailDialog.js.map +1 -0
- package/dist/core/components/ui/Sensors/SensorInput.d.ts +6 -1
- package/dist/core/components/ui/Sensors/SensorInput.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorInput.js +94 -9
- package/dist/core/components/ui/Sensors/SensorInput.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts +3 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.js +4 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.d.ts +1 -3
- package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.js +33 -10
- package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
- package/dist/core/components/ui/Sensors/TimeZoneSelect.d.ts +7 -0
- package/dist/core/components/ui/Sensors/TimeZoneSelect.d.ts.map +1 -0
- package/dist/core/components/ui/Sensors/TimeZoneSelect.js +56 -0
- package/dist/core/components/ui/Sensors/TimeZoneSelect.js.map +1 -0
- package/dist/core/components/ui/Sensors/sensorData.d.ts +42 -0
- package/dist/core/components/ui/Sensors/sensorData.d.ts.map +1 -0
- package/dist/core/components/ui/Sensors/sensorData.js +118 -0
- package/dist/core/components/ui/Sensors/sensorData.js.map +1 -0
- package/dist/core/components/ui/Sensors/sensorRange.d.ts +24 -0
- package/dist/core/components/ui/Sensors/sensorRange.d.ts.map +1 -0
- package/dist/core/components/ui/Sensors/sensorRange.js +34 -0
- package/dist/core/components/ui/Sensors/sensorRange.js.map +1 -0
- package/dist/core/components/ui/Sensors/useSensorSeries.d.ts +15 -0
- package/dist/core/components/ui/Sensors/useSensorSeries.d.ts.map +1 -0
- package/dist/core/components/ui/Sensors/useSensorSeries.js +63 -0
- package/dist/core/components/ui/Sensors/useSensorSeries.js.map +1 -0
- package/dist/core/components/ui/Sidebar.d.ts.map +1 -1
- package/dist/core/components/ui/Sidebar.js +27 -4
- package/dist/core/components/ui/Sidebar.js.map +1 -1
- package/dist/core/components/ui/ToolbarButton.d.ts.map +1 -1
- package/dist/core/components/ui/ToolbarButton.js +0 -1
- package/dist/core/components/ui/ToolbarButton.js.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js +0 -2
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js.map +1 -1
- package/dist/core/components/viewers/Data/details/EnergySourcesGrid.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js +0 -10
- package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js.map +1 -1
- package/dist/core/components/viewers/Data/files/DatatableFileAdder.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/files/DatatableFileAdder.js +0 -1
- package/dist/core/components/viewers/Data/files/DatatableFileAdder.js.map +1 -1
- package/dist/core/components/viewers/Data/files/utils/fuzzySearch.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js +0 -1
- package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js.map +1 -1
- package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js +0 -1
- package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/filterHelper.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/utils/filterHelper.js +0 -2
- package/dist/core/components/viewers/Data/utils/filterHelper.js.map +1 -1
- package/dist/core/components/viewers/Viewer.js +1 -1
- package/dist/core/components/viewers/Viewer.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js +0 -3
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.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 +1 -7
- 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 +1 -9
- 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/SensorsTab/index.d.ts +1 -3
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.js +2 -2
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js +4 -3
- package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/index.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 +0 -1
- package/dist/core/components/viewers/bim/src/ClippingPlane.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.d.ts +1 -2
- 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 +25 -2
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts +16 -10
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js +26 -6
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts +2 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js +5 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts +8 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.js +15 -3
- 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/clusterMarkersByScreenSpace.d.ts +44 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.d.ts.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js +77 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts +3 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js +5 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentMarkerConfig.d.ts +33 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentMarkerConfig.d.ts.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentMarkerConfig.js +90 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentMarkerConfig.js.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js +2 -2
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.d.ts +7 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js +50 -73
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.d.ts +7 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js +39 -11
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js +1 -5
- package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js +0 -1
- package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/measureBimTool.js +1 -2
- package/dist/core/components/viewers/bim/src/tools/measureBimTool.js.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.d.ts +1 -2
- package/dist/core/components/viewers/map/MapViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.js +2 -2
- package/dist/core/components/viewers/map/MapViewer.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js +11 -14
- package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js +2 -5
- package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/localDatasets.js +0 -3
- package/dist/core/components/viewers/map/datasets/src/localDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js +0 -11
- package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js +0 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.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 +0 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js +0 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.d.ts +1 -2
- package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.js +2 -2
- package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js +174 -53
- package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js +2 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.d.ts +1 -3
- package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js +74 -42
- package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js +4 -3
- package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.js +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 +0 -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 +1 -5
- 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/SensorsTab/index.d.ts +1 -3
- package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.js +2 -2
- package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js +1 -3
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js.map +1 -1
- package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js +0 -1
- package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js.map +1 -1
- package/dist/core/components/viewers/map/utils/flyToEach.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/flyToEach.js +0 -1
- package/dist/core/components/viewers/map/utils/flyToEach.js.map +1 -1
- package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js +0 -2
- package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js.map +1 -1
- package/dist/core/components/viewers/shared/markers/BimMarkerCluster.d.ts +19 -0
- package/dist/core/components/viewers/shared/markers/BimMarkerCluster.d.ts.map +1 -0
- package/dist/core/components/viewers/shared/markers/BimMarkerCluster.js +108 -0
- package/dist/core/components/viewers/shared/markers/BimMarkerCluster.js.map +1 -0
- package/dist/core/components/viewers/shared/markers/computeMarkerLookAt.d.ts +24 -0
- package/dist/core/components/viewers/shared/markers/computeMarkerLookAt.d.ts.map +1 -0
- package/dist/core/components/viewers/shared/markers/computeMarkerLookAt.js +27 -0
- package/dist/core/components/viewers/shared/markers/computeMarkerLookAt.js.map +1 -0
- package/dist/core/components/viewers/shared/markers/types.d.ts +66 -0
- package/dist/core/components/viewers/shared/markers/types.d.ts.map +1 -0
- package/dist/core/components/viewers/shared/markers/types.js +1 -0
- package/dist/core/components/viewers/shared/markers/types.js.map +1 -0
- package/dist/core/components/viewers/shared/markers/useMarkerLayerBim.d.ts +22 -0
- package/dist/core/components/viewers/shared/markers/useMarkerLayerBim.d.ts.map +1 -0
- package/dist/core/components/viewers/shared/markers/useMarkerLayerBim.js +233 -0
- package/dist/core/components/viewers/shared/markers/useMarkerLayerBim.js.map +1 -0
- package/dist/core/hooks/comments/comments.d.ts +11 -0
- package/dist/core/hooks/comments/comments.d.ts.map +1 -1
- package/dist/core/hooks/comments/comments.js +3 -1
- package/dist/core/hooks/comments/comments.js.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.d.ts +11 -0
- package/dist/core/hooks/comments/createCommentHooks.d.ts.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.js +30 -1
- package/dist/core/hooks/comments/createCommentHooks.js.map +1 -1
- package/dist/core/hooks/files/files.d.ts.map +1 -1
- package/dist/core/hooks/files/files.js +0 -1
- package/dist/core/hooks/files/files.js.map +1 -1
- package/dist/core/hooks/ui/useResizableSidebarWidth.d.ts +30 -0
- package/dist/core/hooks/ui/useResizableSidebarWidth.d.ts.map +1 -0
- package/dist/core/hooks/ui/useResizableSidebarWidth.js +75 -0
- package/dist/core/hooks/ui/useResizableSidebarWidth.js.map +1 -0
- package/dist/core/i18n/messages/en.json +10 -1
- package/dist/core/i18n/messages/es.json +11 -2
- package/dist/core/i18n/messages/fr.json +11 -2
- package/dist/core/store/AppConfig/context.d.ts.map +1 -1
- package/dist/core/store/AppConfig/context.js +4 -1
- package/dist/core/store/AppConfig/context.js.map +1 -1
- package/dist/core/store/AppConfig/reducer.d.ts +10 -0
- package/dist/core/store/AppConfig/reducer.d.ts.map +1 -1
- package/dist/core/store/AppConfig/reducer.js +10 -0
- package/dist/core/store/AppConfig/reducer.js.map +1 -1
- package/dist/core/store/Datasets/reducer.d.ts.map +1 -1
- package/dist/core/store/Datasets/reducer.js +0 -2
- package/dist/core/store/Datasets/reducer.js.map +1 -1
- package/dist/core/store/Files/reducer.js +0 -1
- package/dist/core/store/Files/reducer.js.map +1 -1
- package/dist/core/store/Menus/context.d.ts.map +1 -1
- package/dist/core/store/Menus/context.js +8 -2
- package/dist/core/store/Menus/context.js.map +1 -1
- package/dist/core/store/Menus/reducer.d.ts +65 -1
- package/dist/core/store/Menus/reducer.d.ts.map +1 -1
- package/dist/core/store/Menus/reducer.js +39 -3
- package/dist/core/store/Menus/reducer.js.map +1 -1
- package/dist/core/utils/markerUtils.d.ts +10 -0
- package/dist/core/utils/markerUtils.d.ts.map +1 -1
- package/dist/core/utils/markerUtils.js +9 -1
- package/dist/core/utils/markerUtils.js.map +1 -1
- package/dist/core/utils/memcache.d.ts.map +1 -1
- package/dist/core/utils/memcache.js +0 -7
- package/dist/core/utils/memcache.js.map +1 -1
- package/dist/core/utils/timeUtils.d.ts +24 -1
- package/dist/core/utils/timeUtils.d.ts.map +1 -1
- package/dist/core/utils/timeUtils.js +52 -3
- package/dist/core/utils/timeUtils.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useIsMobile } from "./use-mobile";
|
|
4
|
+
const MIN_SIDEBAR_WIDTH = 410;
|
|
5
|
+
const MAX_SIDEBAR_WIDTH = 720;
|
|
6
|
+
const DEFAULT_SIDEBAR_WIDTH = MIN_SIDEBAR_WIDTH;
|
|
7
|
+
const SIDEBAR_WIDTH_STORAGE_KEY = "cdt:sidebar-width";
|
|
8
|
+
function clampSidebarWidth(width) {
|
|
9
|
+
if (Number.isNaN(width)) return DEFAULT_SIDEBAR_WIDTH;
|
|
10
|
+
return Math.min(MAX_SIDEBAR_WIDTH, Math.max(MIN_SIDEBAR_WIDTH, width));
|
|
11
|
+
}
|
|
12
|
+
function readStoredSidebarWidth() {
|
|
13
|
+
if (typeof window === "undefined") return DEFAULT_SIDEBAR_WIDTH;
|
|
14
|
+
try {
|
|
15
|
+
const raw = window.localStorage.getItem(SIDEBAR_WIDTH_STORAGE_KEY);
|
|
16
|
+
if (raw === null) return DEFAULT_SIDEBAR_WIDTH;
|
|
17
|
+
const parsed = Number.parseFloat(raw);
|
|
18
|
+
if (!Number.isFinite(parsed)) return DEFAULT_SIDEBAR_WIDTH;
|
|
19
|
+
return clampSidebarWidth(parsed);
|
|
20
|
+
} catch (e) {
|
|
21
|
+
return DEFAULT_SIDEBAR_WIDTH;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function writeStoredSidebarWidth(width) {
|
|
25
|
+
if (typeof window === "undefined") return;
|
|
26
|
+
try {
|
|
27
|
+
window.localStorage.setItem(SIDEBAR_WIDTH_STORAGE_KEY, String(clampSidebarWidth(width)));
|
|
28
|
+
} catch (e) {
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function useResizableSidebarWidth() {
|
|
32
|
+
const isMobile = useIsMobile();
|
|
33
|
+
const canResize = !isMobile;
|
|
34
|
+
const [width, setWidth] = React.useState(DEFAULT_SIDEBAR_WIDTH);
|
|
35
|
+
const [isResizing, setIsResizing] = React.useState(false);
|
|
36
|
+
React.useEffect(() => {
|
|
37
|
+
setWidth(readStoredSidebarWidth());
|
|
38
|
+
}, []);
|
|
39
|
+
const startResize = React.useCallback(
|
|
40
|
+
(e) => {
|
|
41
|
+
if (!canResize) return;
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
setIsResizing(true);
|
|
44
|
+
const startX = e.clientX;
|
|
45
|
+
const startWidth = width;
|
|
46
|
+
const onMove = (ev) => {
|
|
47
|
+
setWidth(clampSidebarWidth(startWidth + (ev.clientX - startX)));
|
|
48
|
+
};
|
|
49
|
+
const onUp = () => {
|
|
50
|
+
setIsResizing(false);
|
|
51
|
+
window.removeEventListener("pointermove", onMove);
|
|
52
|
+
window.removeEventListener("pointerup", onUp);
|
|
53
|
+
setWidth((current) => {
|
|
54
|
+
writeStoredSidebarWidth(current);
|
|
55
|
+
return current;
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
window.addEventListener("pointermove", onMove);
|
|
59
|
+
window.addEventListener("pointerup", onUp);
|
|
60
|
+
},
|
|
61
|
+
[canResize, width]
|
|
62
|
+
);
|
|
63
|
+
return { width, isResizing, canResize, startResize };
|
|
64
|
+
}
|
|
65
|
+
export {
|
|
66
|
+
DEFAULT_SIDEBAR_WIDTH,
|
|
67
|
+
MAX_SIDEBAR_WIDTH,
|
|
68
|
+
MIN_SIDEBAR_WIDTH,
|
|
69
|
+
SIDEBAR_WIDTH_STORAGE_KEY,
|
|
70
|
+
clampSidebarWidth,
|
|
71
|
+
readStoredSidebarWidth,
|
|
72
|
+
useResizableSidebarWidth,
|
|
73
|
+
writeStoredSidebarWidth
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=useResizableSidebarWidth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/hooks/ui/useResizableSidebarWidth.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\n\r\nimport { useIsMobile } from './use-mobile'\r\n\r\n/** Minimum sidebar width. Equal to the previous fixed width, so it never shrinks below the old default. */\r\nexport const MIN_SIDEBAR_WIDTH = 410\r\n/** Maximum sidebar width, roughly half a laptop viewport. */\r\nexport const MAX_SIDEBAR_WIDTH = 720\r\nexport const DEFAULT_SIDEBAR_WIDTH = MIN_SIDEBAR_WIDTH\r\nexport const SIDEBAR_WIDTH_STORAGE_KEY = 'cdt:sidebar-width'\r\n\r\n/** Clamp to [MIN, MAX]. NaN falls back to the default; ±Infinity clamps to the bounds. */\r\nexport function clampSidebarWidth(width: number): number {\r\n if (Number.isNaN(width)) return DEFAULT_SIDEBAR_WIDTH\r\n return Math.min(MAX_SIDEBAR_WIDTH, Math.max(MIN_SIDEBAR_WIDTH, width))\r\n}\r\n\r\n/** SSR-safe read of the persisted width, clamped; falls back to the default on missing/corrupt values. */\r\nexport function readStoredSidebarWidth(): number {\r\n if (typeof window === 'undefined') return DEFAULT_SIDEBAR_WIDTH\r\n try {\r\n const raw = window.localStorage.getItem(SIDEBAR_WIDTH_STORAGE_KEY)\r\n if (raw === null) return DEFAULT_SIDEBAR_WIDTH\r\n const parsed = Number.parseFloat(raw)\r\n if (!Number.isFinite(parsed)) return DEFAULT_SIDEBAR_WIDTH\r\n return clampSidebarWidth(parsed)\r\n } catch {\r\n return DEFAULT_SIDEBAR_WIDTH\r\n }\r\n}\r\n\r\n/** SSR-safe persist of a clamped width. Swallows storage errors (private mode, quota). */\r\nexport function writeStoredSidebarWidth(width: number): void {\r\n if (typeof window === 'undefined') return\r\n try {\r\n window.localStorage.setItem(SIDEBAR_WIDTH_STORAGE_KEY, String(clampSidebarWidth(width)))\r\n } catch {\r\n // ignore: storage may be unavailable (private mode / quota)\r\n }\r\n}\r\n\r\nexport interface ResizableSidebarWidth {\r\n /** Current width in px. Only meaningful when `canResize` is true; mobile stays full-width via CSS. */\r\n width: number\r\n /** True while a drag is in progress (for cursor / no-select styling). */\r\n isResizing: boolean\r\n /** True on desktop only. Mobile is full-width and not resizable. */\r\n canResize: boolean\r\n /** Attach to the drag handle's onPointerDown. */\r\n startResize: (e: React.PointerEvent) => void\r\n}\r\n\r\n/**\r\n * Drives a user-resizable sidebar width on desktop. Width is restored from and persisted to\r\n * localStorage, clamped to [MIN_SIDEBAR_WIDTH, MAX_SIDEBAR_WIDTH]. On mobile (`useIsMobile`)\r\n * resizing is disabled and the sidebar is expected to render full-width via CSS.\r\n */\r\nexport function useResizableSidebarWidth(): ResizableSidebarWidth {\r\n const isMobile = useIsMobile()\r\n const canResize = !isMobile\r\n\r\n const [width, setWidth] = React.useState<number>(DEFAULT_SIDEBAR_WIDTH)\r\n const [isResizing, setIsResizing] = React.useState(false)\r\n\r\n // Hydrate from storage after mount (avoids SSR/client mismatch on first paint).\r\n React.useEffect(() => {\r\n setWidth(readStoredSidebarWidth())\r\n }, [])\r\n\r\n const startResize = React.useCallback(\r\n (e: React.PointerEvent) => {\r\n if (!canResize) return\r\n e.preventDefault()\r\n setIsResizing(true)\r\n\r\n const startX = e.clientX\r\n const startWidth = width\r\n\r\n const onMove = (ev: PointerEvent) => {\r\n setWidth(clampSidebarWidth(startWidth + (ev.clientX - startX)))\r\n }\r\n const onUp = () => {\r\n setIsResizing(false)\r\n window.removeEventListener('pointermove', onMove)\r\n window.removeEventListener('pointerup', onUp)\r\n // Persist the final width; read the latest via the functional updater.\r\n setWidth(current => {\r\n writeStoredSidebarWidth(current)\r\n return current\r\n })\r\n }\r\n\r\n window.addEventListener('pointermove', onMove)\r\n window.addEventListener('pointerup', onUp)\r\n },\r\n [canResize, width]\r\n )\r\n\r\n return { width, isResizing, canResize, startResize }\r\n}\r\n"],"mappings":";AAKA,YAAY,WAAW;AAEvB,SAAS,mBAAmB;AAGrB,MAAM,oBAAoB;AAE1B,MAAM,oBAAoB;AAC1B,MAAM,wBAAwB;AAC9B,MAAM,4BAA4B;AAGlC,SAAS,kBAAkB,OAAuB;AACvD,MAAI,OAAO,MAAM,KAAK,EAAG,QAAO;AAChC,SAAO,KAAK,IAAI,mBAAmB,KAAK,IAAI,mBAAmB,KAAK,CAAC;AACvE;AAGO,SAAS,yBAAiC;AAC/C,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,MAAI;AACF,UAAM,MAAM,OAAO,aAAa,QAAQ,yBAAyB;AACjE,QAAI,QAAQ,KAAM,QAAO;AACzB,UAAM,SAAS,OAAO,WAAW,GAAG;AACpC,QAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,WAAO,kBAAkB,MAAM;AAAA,EACjC,SAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,wBAAwB,OAAqB;AAC3D,MAAI,OAAO,WAAW,YAAa;AACnC,MAAI;AACF,WAAO,aAAa,QAAQ,2BAA2B,OAAO,kBAAkB,KAAK,CAAC,CAAC;AAAA,EACzF,SAAQ;AAAA,EAER;AACF;AAkBO,SAAS,2BAAkD;AAChE,QAAM,WAAW,YAAY;AAC7B,QAAM,YAAY,CAAC;AAEnB,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,SAAiB,qBAAqB;AACtE,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,KAAK;AAGxD,QAAM,UAAU,MAAM;AACpB,aAAS,uBAAuB,CAAC;AAAA,EACnC,GAAG,CAAC,CAAC;AAEL,QAAM,cAAc,MAAM;AAAA,IACxB,CAAC,MAA0B;AACzB,UAAI,CAAC,UAAW;AAChB,QAAE,eAAe;AACjB,oBAAc,IAAI;AAElB,YAAM,SAAS,EAAE;AACjB,YAAM,aAAa;AAEnB,YAAM,SAAS,CAAC,OAAqB;AACnC,iBAAS,kBAAkB,cAAc,GAAG,UAAU,OAAO,CAAC;AAAA,MAChE;AACA,YAAM,OAAO,MAAM;AACjB,sBAAc,KAAK;AACnB,eAAO,oBAAoB,eAAe,MAAM;AAChD,eAAO,oBAAoB,aAAa,IAAI;AAE5C,iBAAS,aAAW;AAClB,kCAAwB,OAAO;AAC/B,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAEA,aAAO,iBAAiB,eAAe,MAAM;AAC7C,aAAO,iBAAiB,aAAa,IAAI;AAAA,IAC3C;AAAA,IACA,CAAC,WAAW,KAAK;AAAA,EACnB;AAEA,SAAO,EAAE,OAAO,YAAY,WAAW,YAAY;AACrD;","names":[]}
|
|
@@ -239,6 +239,7 @@
|
|
|
239
239
|
"label": "Write a comment",
|
|
240
240
|
"placeholder": "Enter your comment here...",
|
|
241
241
|
"close": "Close",
|
|
242
|
+
"clickPlusHint": "Click the + to place your comment",
|
|
242
243
|
"placeHelpTextMap": "Double click anywhere on the map to add comment",
|
|
243
244
|
"placeHelpTextBim": "Double click anywhere on the model to add comment"
|
|
244
245
|
},
|
|
@@ -261,6 +262,7 @@
|
|
|
261
262
|
"attachments": "Attachments",
|
|
262
263
|
"addAttachment": "Add attachment",
|
|
263
264
|
"writeReply": "Write a reply...",
|
|
265
|
+
"doubleClickZoom": "Double click to zoom to comment",
|
|
264
266
|
"position": "Position",
|
|
265
267
|
"lastUpdated": "Last updated"
|
|
266
268
|
},
|
|
@@ -1041,7 +1043,10 @@
|
|
|
1041
1043
|
"placeSensorTooltipBim": "Double-click on the model to place the sensor",
|
|
1042
1044
|
"selectType": "Select type",
|
|
1043
1045
|
"selectFormat": "Select format",
|
|
1044
|
-
"tags": "Tags"
|
|
1046
|
+
"tags": "Tags",
|
|
1047
|
+
"previewPoints": "data points",
|
|
1048
|
+
"previewNoData": "No data at this URL",
|
|
1049
|
+
"previewError": "Could not reach this URL"
|
|
1045
1050
|
},
|
|
1046
1051
|
"SensorLayers": {
|
|
1047
1052
|
"sensorEdited": "Sensor edited",
|
|
@@ -1052,6 +1057,7 @@
|
|
|
1052
1057
|
"addSensorTitle": "Add Sensor",
|
|
1053
1058
|
"searchSensors": "Search sensors...",
|
|
1054
1059
|
"editSensor": "Edit sensor",
|
|
1060
|
+
"expandSensor": "Expand",
|
|
1055
1061
|
"sensorEdited": "Sensor edited",
|
|
1056
1062
|
"deleteSensor": "Delete sensor",
|
|
1057
1063
|
"sensorDeleted": "Sensor deleted",
|
|
@@ -1175,6 +1181,9 @@
|
|
|
1175
1181
|
"toastSuccessUpdate": "Site updated successfully",
|
|
1176
1182
|
"toastErrorUpdate": "Failed to update Site"
|
|
1177
1183
|
},
|
|
1184
|
+
"InfoSidebar": {
|
|
1185
|
+
"resizeHandleLabel": "Resize sidebar"
|
|
1186
|
+
},
|
|
1178
1187
|
"TabSelector": {
|
|
1179
1188
|
"fileLabel": "File",
|
|
1180
1189
|
"layersTitle": "Layers",
|
|
@@ -239,6 +239,7 @@
|
|
|
239
239
|
"label": "Escribir un comentario",
|
|
240
240
|
"placeholder": "Ingrese su comentario aquí...",
|
|
241
241
|
"close": "Cerrar",
|
|
242
|
+
"clickPlusHint": "Haga clic en + para colocar su comentario",
|
|
242
243
|
"placeHelpTextMap": "Haga doble clic en cualquier lugar del mapa para añadir un comentario",
|
|
243
244
|
"placeHelpTextBim": "Haga doble clic en cualquier lugar del modelo para añadir un comentario"
|
|
244
245
|
},
|
|
@@ -261,6 +262,7 @@
|
|
|
261
262
|
"attachments": "Adjuntos",
|
|
262
263
|
"addAttachment": "Añadir adjunto",
|
|
263
264
|
"writeReply": "Escribir una respuesta...",
|
|
265
|
+
"doubleClickZoom": "Doble clic para acercar al comentario",
|
|
264
266
|
"position": "Posición",
|
|
265
267
|
"lastUpdated": "Última actualización"
|
|
266
268
|
},
|
|
@@ -1041,7 +1043,10 @@
|
|
|
1041
1043
|
"placeSensorTooltipBim": "Haga doble clic en el modelo para colocar el sensor",
|
|
1042
1044
|
"selectType": "Seleccionar tipo",
|
|
1043
1045
|
"selectFormat": "Seleccionar formato",
|
|
1044
|
-
"tags": "Etiquetas"
|
|
1046
|
+
"tags": "Etiquetas",
|
|
1047
|
+
"previewPoints": "puntos de datos",
|
|
1048
|
+
"previewNoData": "No hay datos en esta URL",
|
|
1049
|
+
"previewError": "No se pudo acceder a esta URL"
|
|
1045
1050
|
},
|
|
1046
1051
|
"SensorLayers": {
|
|
1047
1052
|
"sensorEdited": "Sensor editado",
|
|
@@ -1052,6 +1057,7 @@
|
|
|
1052
1057
|
"addSensorTitle": "Añadir sensor",
|
|
1053
1058
|
"searchSensors": "Buscar sensores...",
|
|
1054
1059
|
"editSensor": "Editar sensor",
|
|
1060
|
+
"expandSensor": "Ampliar",
|
|
1055
1061
|
"sensorEdited": "Sensor editado",
|
|
1056
1062
|
"deleteSensor": "Eliminar sensor",
|
|
1057
1063
|
"sensorDeleted": "Sensor eliminado",
|
|
@@ -1174,6 +1180,9 @@
|
|
|
1174
1180
|
"toastSuccessUpdate": "Sitio actualizado con éxito",
|
|
1175
1181
|
"toastErrorUpdate": "Error al actualizar el sitio"
|
|
1176
1182
|
},
|
|
1183
|
+
"InfoSidebar": {
|
|
1184
|
+
"resizeHandleLabel": "Redimensionar la barra lateral"
|
|
1185
|
+
},
|
|
1177
1186
|
"TabSelector": {
|
|
1178
1187
|
"fileLabel": "Archivo",
|
|
1179
1188
|
"layersTitle": "Capas",
|
|
@@ -1867,4 +1876,4 @@
|
|
|
1867
1876
|
"uploadError": "Error al subir el archivo:",
|
|
1868
1877
|
"unknownError": "Ocurrió un error desconocido"
|
|
1869
1878
|
}
|
|
1870
|
-
}
|
|
1879
|
+
}
|
|
@@ -239,6 +239,7 @@
|
|
|
239
239
|
"label": "Écrire un commentaire",
|
|
240
240
|
"placeholder": "Saisissez votre commentaire ici...",
|
|
241
241
|
"close": "Fermer",
|
|
242
|
+
"clickPlusHint": "Cliquez sur + pour placer votre commentaire",
|
|
242
243
|
"placeHelpTextMap": "Double-cliquez n’importe où sur la carte pour ajouter un commentaire",
|
|
243
244
|
"placeHelpTextBim": "Double-cliquez sur le modèle pour ajouter un commentaire"
|
|
244
245
|
},
|
|
@@ -261,6 +262,7 @@
|
|
|
261
262
|
"attachments": "Pièces jointes",
|
|
262
263
|
"addAttachment": "Ajouter une pièce jointe",
|
|
263
264
|
"writeReply": "Écrire une réponse...",
|
|
265
|
+
"doubleClickZoom": "Double-cliquez pour zoomer sur le commentaire",
|
|
264
266
|
"position": "Position",
|
|
265
267
|
"lastUpdated": "Dernière mise à jour"
|
|
266
268
|
},
|
|
@@ -1041,7 +1043,10 @@
|
|
|
1041
1043
|
"placeSensorTooltipBim": "Double-cliquez sur le modèle pour placer le capteur",
|
|
1042
1044
|
"selectType": "Sélectionner le type",
|
|
1043
1045
|
"selectFormat": "Sélectionner le format",
|
|
1044
|
-
"tags": "Étiquettes"
|
|
1046
|
+
"tags": "Étiquettes",
|
|
1047
|
+
"previewPoints": "points de données",
|
|
1048
|
+
"previewNoData": "Aucune donnée à cette URL",
|
|
1049
|
+
"previewError": "Impossible d'accéder à cette URL"
|
|
1045
1050
|
},
|
|
1046
1051
|
"SensorLayers": {
|
|
1047
1052
|
"sensorEdited": "Capteur modifié",
|
|
@@ -1052,6 +1057,7 @@
|
|
|
1052
1057
|
"addSensorTitle": "Ajouter un capteur",
|
|
1053
1058
|
"searchSensors": "Rechercher des capteurs...",
|
|
1054
1059
|
"editSensor": "Modifier le capteur",
|
|
1060
|
+
"expandSensor": "Agrandir",
|
|
1055
1061
|
"sensorEdited": "Capteur modifié",
|
|
1056
1062
|
"deleteSensor": "Supprimer le capteur",
|
|
1057
1063
|
"sensorDeleted": "Capteur supprimé",
|
|
@@ -1174,6 +1180,9 @@
|
|
|
1174
1180
|
"toastSuccessUpdate": "Site mis à jour avec succès",
|
|
1175
1181
|
"toastErrorUpdate": "Échec de la mise à jour du site"
|
|
1176
1182
|
},
|
|
1183
|
+
"InfoSidebar": {
|
|
1184
|
+
"resizeHandleLabel": "Redimensionner la barre latérale"
|
|
1185
|
+
},
|
|
1177
1186
|
"TabSelector": {
|
|
1178
1187
|
"fileLabel": "Fichier",
|
|
1179
1188
|
"layersTitle": "Couches",
|
|
@@ -1867,4 +1876,4 @@
|
|
|
1867
1876
|
"uploadError": "Erreur lors du téléversement du fichier :",
|
|
1868
1877
|
"unknownError": "Erreur inconnue s'est produite"
|
|
1869
1878
|
}
|
|
1870
|
-
}
|
|
1879
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/store/AppConfig/context.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/store/AppConfig/context.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,cAAc,CAAA;IACzB,aAAa,EAAE,aAAa,CAAA;CAC7B,CAAA;AAoBD,eAAO,MAAM,gBAAgB;WACpB,gBAAgB;cACb,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;EAI1C,CAAA;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAAE,aAAa,CAAC,EAAE,aAAa,CAAA;CAAE,CAAC,CAQlG,CAAA;AAED,eAAO,MAAM,mBAAmB;WAjBvB,gBAAgB;cACb,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;CAgB+B,CAAA"}
|
|
@@ -20,11 +20,14 @@ var __spreadValues = (a, b) => {
|
|
|
20
20
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
21
|
import { jsx } from "react/jsx-runtime";
|
|
22
22
|
import * as React from "react";
|
|
23
|
+
import { detectTimeZone } from "../../utils/timeUtils";
|
|
23
24
|
import { AppConfigReducer } from "./reducer";
|
|
24
25
|
const initialState = {
|
|
25
26
|
appConfig: {
|
|
26
27
|
organization: null,
|
|
27
|
-
user: null
|
|
28
|
+
user: null,
|
|
29
|
+
displayTimeZone: detectTimeZone(),
|
|
30
|
+
displayTimeZoneUserSet: false
|
|
28
31
|
},
|
|
29
32
|
runtimeConfig: {}
|
|
30
33
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/store/AppConfig/context.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { AppConfigReducer } from './reducer'\r\n\r\nimport type { AppConfigActions, AppConfigState } from './reducer';\r\n\r\nexport type RuntimeConfig = {\r\n minioUrl?: string\r\n martinUrl?: string\r\n recaptchaSiteKey?: string\r\n pointcloudApiUrl?: string\r\n geocodeEarthApiKey?: string\r\n geocoderUrl?: string\r\n photonUrl?: string\r\n nominatimUrl?: string\r\n maptilerKey?: string\r\n}\r\n\r\ntype InitialStateType = {\r\n appConfig: AppConfigState\r\n runtimeConfig: RuntimeConfig\r\n}\r\n\r\nconst initialState: InitialStateType = {\r\n appConfig: {\r\n organization: null,\r\n user: null,\r\n },\r\n runtimeConfig: {},\r\n}\r\n\r\nconst reducer = (\r\n { appConfig, runtimeConfig }: InitialStateType,\r\n action: AppConfigActions,\r\n): InitialStateType => ({\r\n appConfig: AppConfigReducer(appConfig, action),\r\n runtimeConfig,\r\n})\r\n\r\nexport const AppConfigContext = React.createContext<{\r\n state: InitialStateType\r\n dispatch: React.Dispatch<AppConfigActions>\r\n}>({\r\n state: initialState,\r\n dispatch: () => null,\r\n})\r\n\r\nexport const AppConfigProvider: React.FC<React.PropsWithChildren<{ runtimeConfig?: RuntimeConfig }>> = ({ children, runtimeConfig = {} }) => {\r\n const [state, dispatch] = React.useReducer(reducer, { ...initialState, runtimeConfig })\r\n const value = React.useMemo(() => ({ state, dispatch }), [state])\r\n return (\r\n <AppConfigContext.Provider value={value}>\r\n {children}\r\n </AppConfigContext.Provider>\r\n )\r\n}\r\n\r\nexport const useAppConfigContext = () => React.useContext(AppConfigContext)"],"mappings":";;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/store/AppConfig/context.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { detectTimeZone } from '../../utils/timeUtils'\r\n\r\nimport { AppConfigReducer } from './reducer'\r\n\r\nimport type { AppConfigActions, AppConfigState } from './reducer';\r\n\r\nexport type RuntimeConfig = {\r\n minioUrl?: string\r\n martinUrl?: string\r\n recaptchaSiteKey?: string\r\n pointcloudApiUrl?: string\r\n geocodeEarthApiKey?: string\r\n geocoderUrl?: string\r\n photonUrl?: string\r\n nominatimUrl?: string\r\n maptilerKey?: string\r\n}\r\n\r\ntype InitialStateType = {\r\n appConfig: AppConfigState\r\n runtimeConfig: RuntimeConfig\r\n}\r\n\r\nconst initialState: InitialStateType = {\r\n appConfig: {\r\n organization: null,\r\n user: null,\r\n displayTimeZone: detectTimeZone(),\r\n displayTimeZoneUserSet: false,\r\n },\r\n runtimeConfig: {},\r\n}\r\n\r\nconst reducer = (\r\n { appConfig, runtimeConfig }: InitialStateType,\r\n action: AppConfigActions,\r\n): InitialStateType => ({\r\n appConfig: AppConfigReducer(appConfig, action),\r\n runtimeConfig,\r\n})\r\n\r\nexport const AppConfigContext = React.createContext<{\r\n state: InitialStateType\r\n dispatch: React.Dispatch<AppConfigActions>\r\n}>({\r\n state: initialState,\r\n dispatch: () => null,\r\n})\r\n\r\nexport const AppConfigProvider: React.FC<React.PropsWithChildren<{ runtimeConfig?: RuntimeConfig }>> = ({ children, runtimeConfig = {} }) => {\r\n const [state, dispatch] = React.useReducer(reducer, { ...initialState, runtimeConfig })\r\n const value = React.useMemo(() => ({ state, dispatch }), [state])\r\n return (\r\n <AppConfigContext.Provider value={value}>\r\n {children}\r\n </AppConfigContext.Provider>\r\n )\r\n}\r\n\r\nexport const useAppConfigContext = () => React.useContext(AppConfigContext)"],"mappings":";;;;;;;;;;;;;;;;;;;;AA4DI;AAvDJ,YAAY,WAAW;AAEvB,SAAS,sBAAsB;AAE/B,SAAS,wBAAwB;AAqBjC,MAAM,eAAiC;AAAA,EACrC,WAAW;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,iBAAiB,eAAe;AAAA,IAChC,wBAAwB;AAAA,EAC1B;AAAA,EACA,eAAe,CAAC;AAClB;AAEA,MAAM,UAAU,CACd,EAAE,WAAW,cAAc,GAC3B,YACsB;AAAA,EACtB,WAAW,iBAAiB,WAAW,MAAM;AAAA,EAC7C;AACF;AAEO,MAAM,mBAAmB,MAAM,cAGnC;AAAA,EACD,OAAO;AAAA,EACP,UAAU,MAAM;AAClB,CAAC;AAEM,MAAM,oBAA0F,CAAC,EAAE,UAAU,gBAAgB,CAAC,EAAE,MAAM;AAC3I,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,WAAW,SAAS,iCAAK,eAAL,EAAmB,cAAc,EAAC;AACtF,QAAM,QAAQ,MAAM,QAAQ,OAAO,EAAE,OAAO,SAAS,IAAI,CAAC,KAAK,CAAC;AAChE,SACE,oBAAC,iBAAiB,UAAjB,EAA0B,OACxB,UACH;AAEJ;AAEO,MAAM,sBAAsB,MAAM,MAAM,WAAW,gBAAgB;","names":[]}
|
|
@@ -3,11 +3,21 @@ import type { ActionMap } from '../ActionMap';
|
|
|
3
3
|
interface AppConfigTypes {
|
|
4
4
|
organization: Organization | null;
|
|
5
5
|
user: User | null;
|
|
6
|
+
/** Display timezone for sensor time rendering (non-persisted). */
|
|
7
|
+
displayTimeZone: string;
|
|
8
|
+
/** True once the user picked a zone, so location defaults stop overriding it. */
|
|
9
|
+
displayTimeZoneUserSet: boolean;
|
|
6
10
|
}
|
|
7
11
|
export type AppConfigState = AppConfigTypes;
|
|
8
12
|
export type AppConfigPayload = {
|
|
9
13
|
['SET_ORGANIZATION']: Pick<AppConfigTypes, 'organization'>;
|
|
10
14
|
['SET_USER']: Pick<AppConfigTypes, 'user'>;
|
|
15
|
+
['SET_DISPLAY_TIME_ZONE']: {
|
|
16
|
+
displayTimeZone: string;
|
|
17
|
+
};
|
|
18
|
+
['SET_DEFAULT_TIME_ZONE']: {
|
|
19
|
+
displayTimeZone: string;
|
|
20
|
+
};
|
|
11
21
|
};
|
|
12
22
|
export type AppConfigActions = ActionMap<AppConfigPayload>[keyof ActionMap<AppConfigPayload>];
|
|
13
23
|
export declare const AppConfigReducer: (state: AppConfigState, action: AppConfigActions) => AppConfigTypes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/core/store/AppConfig/reducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,UAAU,cAAc;IACtB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/core/store/AppConfig/reducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,UAAU,cAAc;IACtB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IACjC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IACjB,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAA;IACvB,iFAAiF;IACjF,sBAAsB,EAAE,OAAO,CAAA;CAChC;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,CAAA;AAE3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,kBAAkB,CAAC,EAAG,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;IAC3D,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;IAC1C,CAAC,uBAAuB,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,CAAC,uBAAuB,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAA;CACvD,CAAA;AAED,MAAM,MAAM,gBAAgB,GACxB,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAElE,eAAO,MAAM,gBAAgB,GAAI,OAAO,cAAc,EAAE,QAAQ,gBAAgB,mBA+B/E,CAAA"}
|
|
@@ -29,6 +29,16 @@ const AppConfigReducer = (state, action) => {
|
|
|
29
29
|
return __spreadProps(__spreadValues({}, state), {
|
|
30
30
|
user
|
|
31
31
|
});
|
|
32
|
+
case "SET_DISPLAY_TIME_ZONE":
|
|
33
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
34
|
+
displayTimeZone: action.payload.displayTimeZone,
|
|
35
|
+
displayTimeZoneUserSet: true
|
|
36
|
+
});
|
|
37
|
+
case "SET_DEFAULT_TIME_ZONE":
|
|
38
|
+
if (state.displayTimeZoneUserSet) return state;
|
|
39
|
+
return __spreadProps(__spreadValues({}, state), {
|
|
40
|
+
displayTimeZone: action.payload.displayTimeZone
|
|
41
|
+
});
|
|
32
42
|
default:
|
|
33
43
|
return state;
|
|
34
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/store/AppConfig/reducer.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Organization, User } from '../../types/dbTypes'\r\nimport type { ActionMap } from '../ActionMap'\r\n\r\ninterface AppConfigTypes {\r\n organization: Organization | null\r\n user: User | null\r\n}\r\n\r\nexport type AppConfigState = AppConfigTypes\r\n\r\nexport type AppConfigPayload = {\r\n ['SET_ORGANIZATION']: Pick<AppConfigTypes, 'organization'>\r\n ['SET_USER']: Pick<AppConfigTypes, 'user'>\r\n}\r\n\r\nexport type AppConfigActions\r\n = ActionMap<AppConfigPayload>[keyof ActionMap<AppConfigPayload>]\r\n\r\nexport const AppConfigReducer = (state: AppConfigState, action: AppConfigActions) => {\r\n switch (action.type) {\r\n case 'SET_ORGANIZATION':\r\n const { organization } = action.payload\r\n return {\r\n ...state,\r\n organization,\r\n }\r\n case 'SET_USER':\r\n const { user } = action.payload\r\n return {\r\n ...state,\r\n user,\r\n }\r\n default:\r\n\r\n return state\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/store/AppConfig/reducer.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Organization, User } from '../../types/dbTypes'\r\nimport type { ActionMap } from '../ActionMap'\r\n\r\ninterface AppConfigTypes {\r\n organization: Organization | null\r\n user: User | null\r\n /** Display timezone for sensor time rendering (non-persisted). */\r\n displayTimeZone: string\r\n /** True once the user picked a zone, so location defaults stop overriding it. */\r\n displayTimeZoneUserSet: boolean\r\n}\r\n\r\nexport type AppConfigState = AppConfigTypes\r\n\r\nexport type AppConfigPayload = {\r\n ['SET_ORGANIZATION']: Pick<AppConfigTypes, 'organization'>\r\n ['SET_USER']: Pick<AppConfigTypes, 'user'>\r\n ['SET_DISPLAY_TIME_ZONE']: { displayTimeZone: string }\r\n ['SET_DEFAULT_TIME_ZONE']: { displayTimeZone: string }\r\n}\r\n\r\nexport type AppConfigActions\r\n = ActionMap<AppConfigPayload>[keyof ActionMap<AppConfigPayload>]\r\n\r\nexport const AppConfigReducer = (state: AppConfigState, action: AppConfigActions) => {\r\n switch (action.type) {\r\n case 'SET_ORGANIZATION':\r\n const { organization } = action.payload\r\n return {\r\n ...state,\r\n organization,\r\n }\r\n case 'SET_USER':\r\n const { user } = action.payload\r\n return {\r\n ...state,\r\n user,\r\n }\r\n case 'SET_DISPLAY_TIME_ZONE':\r\n return {\r\n ...state,\r\n displayTimeZone: action.payload.displayTimeZone,\r\n displayTimeZoneUserSet: true,\r\n }\r\n case 'SET_DEFAULT_TIME_ZONE':\r\n // Location-derived default: apply only until the user makes an explicit choice.\r\n if (state.displayTimeZoneUserSet) return state\r\n return {\r\n ...state,\r\n displayTimeZone: action.payload.displayTimeZone,\r\n }\r\n default:\r\n\r\n return state\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA2BO,MAAM,mBAAmB,CAAC,OAAuB,WAA6B;AACnF,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,YAAM,EAAE,aAAa,IAAI,OAAO;AAChC,aAAO,iCACF,QADE;AAAA,QAEL;AAAA,MACF;AAAA,IACF,KAAK;AACH,YAAM,EAAE,KAAK,IAAI,OAAO;AACxB,aAAO,iCACF,QADE;AAAA,QAEL;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,iCACF,QADE;AAAA,QAEL,iBAAiB,OAAO,QAAQ;AAAA,QAChC,wBAAwB;AAAA,MAC1B;AAAA,IACF,KAAK;AAEH,UAAI,MAAM,uBAAwB,QAAO;AACzC,aAAO,iCACF,QADE;AAAA,QAEL,iBAAiB,OAAO,QAAQ;AAAA,MAClC;AAAA,IACF;AAEE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/core/store/Datasets/reducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,aAAa,EAAE,OAAO,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,CAAA;AAEvC,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IAE9C,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IACvD,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAEzD,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACrD,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAE5D,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAA;IAC7B,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAA;IAC9B,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAE9D,CAAC,eAAe,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,WAAW,CAAA;KAAG,CAAA;IAElE,CAAC,oBAAoB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAC,CAAA;IAC7E,CAAC,oBAAoB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAClE,CAAC,iBAAiB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,WAAW,CAAA;KAAE,CAAA;IAExF,CAAC,kBAAkB,CAAC,EAAE;QAAE,iBAAiB,EAAE,OAAO,EAAE,CAAA;KAAE,CAAA;CACvD,CAAA;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;AAE9D,eAAO,MAAM,cAAc,GAAI,OAAO,YAAY,EAAE,QAAQ,cAAc,
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/core/store/Datasets/reducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,UAAU,YAAY;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,aAAa,EAAE,OAAO,EAAE,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,CAAA;AAEvC,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IAE9C,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IACvD,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAEzD,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACrD,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAE5D,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAA;IAC7B,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAA;IAC9B,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;IAE9D,CAAC,eAAe,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,WAAW,CAAA;KAAG,CAAA;IAElE,CAAC,oBAAoB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,YAAY,EAAE,CAAA;KAAC,CAAA;IAC7E,CAAC,oBAAoB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAClE,CAAC,iBAAiB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,WAAW,CAAA;KAAE,CAAA;IAExF,CAAC,kBAAkB,CAAC,EAAE;QAAE,iBAAiB,EAAE,OAAO,EAAE,CAAA;KAAE,CAAA;CACvD,CAAA;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,CAAC,cAAc,CAAC,CAAC,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC,CAAA;AAE9D,eAAO,MAAM,cAAc,GAAI,OAAO,YAAY,EAAE,QAAQ,cAAc,iBAmLzE,CAAA"}
|
|
@@ -139,7 +139,6 @@ const DatasetReducer = (state, action) => {
|
|
|
139
139
|
});
|
|
140
140
|
case "SET_FIELD_COLOR":
|
|
141
141
|
const { datasetName: dName, fieldName: fName, layerColor: lColor } = action.payload;
|
|
142
|
-
console.log("SETTING FIELD COLOR IN REDUCER FOR DATASET:", dName, "FIELD:", fName, "TO COLOR:", lColor);
|
|
143
142
|
return __spreadProps(__spreadValues({}, state), {
|
|
144
143
|
addedDatasets: state.addedDatasets.map((dataset2) => {
|
|
145
144
|
if (dataset2.name === dName) {
|
|
@@ -163,7 +162,6 @@ const DatasetReducer = (state, action) => {
|
|
|
163
162
|
addedDatasets: reorderedDatasets
|
|
164
163
|
});
|
|
165
164
|
default:
|
|
166
|
-
console.log("THIS FILE ACTION HASN'T BEEN IMPLEMENTED YET.");
|
|
167
165
|
return state;
|
|
168
166
|
}
|
|
169
167
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/store/Datasets/reducer.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Dataset, DatasetField, LayerColors } from '../../types/datasetTypes'\r\nimport type { ActionMap } from '../ActionMap'\r\n\r\ninterface DatasetsType {\r\n dataset: Dataset | null\r\n datasetId: string | null\r\n datasets: Dataset[]\r\n addedDatasets: Dataset[]\r\n orgRefreshNonce: number\r\n}\r\n\r\nexport type DatasetState = DatasetsType\r\n\r\nexport type DatasetPayload = {\r\n ['SET_DATASETS']: Pick<DatasetState, 'datasets'>\r\n ['ADD_DATASET']: Pick<DatasetState, 'dataset'>\r\n\r\n ['HIDE_DATASET_BY_ID']: Pick<DatasetState, 'datasetId'>\r\n ['UNHIDE_DATASET_BY_ID']: Pick<DatasetState, 'datasetId'>\r\n\r\n ['ADD_DATASET_TO_MAP']: Pick<DatasetState, 'dataset'>\r\n ['REMOVE_DATASET_FROM_MAP']: Pick<DatasetState, 'datasetId'>\r\n\r\n ['REMOVE_ALL_DATASETS']: void\r\n ['REFRESH_ORG_DATASETS']: void\r\n ['TOGGLE_DATASET_VISIBILITY']: Pick<DatasetState, 'datasetId'>\r\n\r\n ['DATASET_COLOR']: { datasetId: string, layerColor: LayerColors }\r\n\r\n ['SET_DATASET_FIELDS']: { datasetName: string, datasetFields: DatasetField[]}\r\n ['SET_SELECTED_FIELD']: { datasetName: string, fieldName: string }\r\n ['SET_FIELD_COLOR']: { datasetName: string, fieldName: string, layerColor: LayerColors }\r\n\r\n ['REORDER_DATASETS']: { reorderedDatasets: Dataset[] }\r\n}\r\n\r\nexport type DatasetActions\r\n = ActionMap<DatasetPayload>[keyof ActionMap<DatasetPayload>]\r\n\r\nexport const DatasetReducer = (state: DatasetState, action: DatasetActions) => {\r\n switch (action.type) {\r\n // system or map or bim viewer file action\r\n case 'SET_DATASETS':\r\n const { datasets } = action.payload\r\n return {\r\n ...state,\r\n datasets: datasets,\r\n }\r\n case 'ADD_DATASET':\r\n const { dataset } = action.payload\r\n return {\r\n ...state,\r\n datasets: [...state.datasets, dataset],\r\n }\r\n case 'HIDE_DATASET_BY_ID':\r\n const { datasetId: datasetIdToHide } = action.payload\r\n return {\r\n ...state,\r\n datasets: state.datasets.map((dataset) => {\r\n return dataset.id == datasetIdToHide\r\n ? {\r\n ...dataset,\r\n visible: false,\r\n }\r\n : dataset\r\n }),\r\n }\r\n case 'UNHIDE_DATASET_BY_ID':\r\n const { datasetId: datasetIdToShow } = action.payload\r\n return {\r\n ...state,\r\n datasets: state.datasets.map((dataset) => {\r\n return dataset.id == datasetIdToShow\r\n ? {\r\n ...dataset,\r\n visible: true,\r\n }\r\n : dataset\r\n }),\r\n }\r\n\r\n case 'ADD_DATASET_TO_MAP':\r\n const { dataset: datasetToAdd } = action.payload\r\n const datasetAlreadyAdded = state.addedDatasets.some(\r\n d => d?.name === datasetToAdd.name,\r\n )\r\n\r\n const addedDatasets = datasetAlreadyAdded\r\n ? state.addedDatasets\r\n : (() => {\r\n const maxOrder = state.addedDatasets.reduce<number>((max, current) => {\r\n const order = current.order ?? -1\r\n return order > max ? order : max\r\n }, -1)\r\n\r\n const nextOrder = maxOrder + 1\r\n\r\n return [...state.addedDatasets, { ...datasetToAdd, order: nextOrder }]\r\n })()\r\n return {\r\n ...state,\r\n dataset: datasetToAdd,\r\n addedDatasets,\r\n }\r\n case 'REMOVE_DATASET_FROM_MAP':\r\n const datasetIdToRemove = action.payload.datasetId\r\n const remaining = state.addedDatasets.filter(dataset => dataset.id !== datasetIdToRemove)\r\n const sorted = remaining.sort((a, b) => (b.order ?? 0) - (a.order ?? 0))\r\n const maxOrder = sorted.length - 1\r\n const updatedAddedDatasets = sorted.map((dataset, index) => ({\r\n ...dataset,\r\n order: maxOrder - index\r\n }))\r\n return {\r\n ...state,\r\n addedDatasets: updatedAddedDatasets,\r\n }\r\n case 'REMOVE_ALL_DATASETS':\r\n return {\r\n ...state,\r\n addedDatasets: [],\r\n }\r\n case 'REFRESH_ORG_DATASETS':\r\n return {\r\n ...state,\r\n orgRefreshNonce: (state.orgRefreshNonce ?? 0) + 1,\r\n }\r\n case 'TOGGLE_DATASET_VISIBILITY': {\r\n const datasetId = action.payload.datasetId\r\n const updatedDatasets = state.addedDatasets.map((dataset) => {\r\n if (dataset.id === datasetId) {\r\n return { ...dataset, visible: dataset.visible === false ? true : false }\r\n }\r\n return dataset\r\n })\r\n return {\r\n ...state,\r\n addedDatasets: updatedDatasets,\r\n }\r\n }\r\n\r\n case 'DATASET_COLOR':\r\n const { datasetId, layerColor } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map((dataset) => {\r\n if (dataset.id === datasetId) {\r\n return {\r\n ...dataset,\r\n layerColor,\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n\r\n case 'SET_DATASET_FIELDS':\r\n const { datasetName, datasetFields } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map(dataset => {\r\n if (dataset.name === datasetName) {\r\n return {\r\n ...dataset,\r\n fields: datasetFields,\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n case 'SET_SELECTED_FIELD':\r\n const { datasetName: dsName, fieldName } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map(dataset => {\r\n if (dataset.name === dsName) {\r\n return {\r\n ...dataset,\r\n selectedFieldName: fieldName,\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n case 'SET_FIELD_COLOR':\r\n const { datasetName: dName, fieldName: fName, layerColor: lColor } = action.payload\r\n console.log('SETTING FIELD COLOR IN REDUCER FOR DATASET:', dName, 'FIELD:', fName, 'TO COLOR:', lColor)\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map(dataset => {\r\n if (dataset.name === dName) {\r\n return {\r\n ...dataset,\r\n fields: dataset.fields.map(field => {\r\n if (field.name === fName) {\r\n return {\r\n ...field,\r\n layerColor: lColor,\r\n }\r\n }\r\n return field\r\n }),\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n\r\n case 'REORDER_DATASETS':\r\n const { reorderedDatasets } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: reorderedDatasets,\r\n }\r\n\r\n default:\r\n console.log('THIS FILE ACTION HASN\\'T BEEN IMPLEMENTED YET.')\r\n return state\r\n }\r\n}\r\n"],"mappings":"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","names":["dataset","maxOrder","_a","datasetId"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/store/Datasets/reducer.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Dataset, DatasetField, LayerColors } from '../../types/datasetTypes'\r\nimport type { ActionMap } from '../ActionMap'\r\n\r\ninterface DatasetsType {\r\n dataset: Dataset | null\r\n datasetId: string | null\r\n datasets: Dataset[]\r\n addedDatasets: Dataset[]\r\n orgRefreshNonce: number\r\n}\r\n\r\nexport type DatasetState = DatasetsType\r\n\r\nexport type DatasetPayload = {\r\n ['SET_DATASETS']: Pick<DatasetState, 'datasets'>\r\n ['ADD_DATASET']: Pick<DatasetState, 'dataset'>\r\n\r\n ['HIDE_DATASET_BY_ID']: Pick<DatasetState, 'datasetId'>\r\n ['UNHIDE_DATASET_BY_ID']: Pick<DatasetState, 'datasetId'>\r\n\r\n ['ADD_DATASET_TO_MAP']: Pick<DatasetState, 'dataset'>\r\n ['REMOVE_DATASET_FROM_MAP']: Pick<DatasetState, 'datasetId'>\r\n\r\n ['REMOVE_ALL_DATASETS']: void\r\n ['REFRESH_ORG_DATASETS']: void\r\n ['TOGGLE_DATASET_VISIBILITY']: Pick<DatasetState, 'datasetId'>\r\n\r\n ['DATASET_COLOR']: { datasetId: string, layerColor: LayerColors }\r\n\r\n ['SET_DATASET_FIELDS']: { datasetName: string, datasetFields: DatasetField[]}\r\n ['SET_SELECTED_FIELD']: { datasetName: string, fieldName: string }\r\n ['SET_FIELD_COLOR']: { datasetName: string, fieldName: string, layerColor: LayerColors }\r\n\r\n ['REORDER_DATASETS']: { reorderedDatasets: Dataset[] }\r\n}\r\n\r\nexport type DatasetActions\r\n = ActionMap<DatasetPayload>[keyof ActionMap<DatasetPayload>]\r\n\r\nexport const DatasetReducer = (state: DatasetState, action: DatasetActions) => {\r\n switch (action.type) {\r\n // system or map or bim viewer file action\r\n case 'SET_DATASETS':\r\n const { datasets } = action.payload\r\n return {\r\n ...state,\r\n datasets: datasets,\r\n }\r\n case 'ADD_DATASET':\r\n const { dataset } = action.payload\r\n return {\r\n ...state,\r\n datasets: [...state.datasets, dataset],\r\n }\r\n case 'HIDE_DATASET_BY_ID':\r\n const { datasetId: datasetIdToHide } = action.payload\r\n return {\r\n ...state,\r\n datasets: state.datasets.map((dataset) => {\r\n return dataset.id == datasetIdToHide\r\n ? {\r\n ...dataset,\r\n visible: false,\r\n }\r\n : dataset\r\n }),\r\n }\r\n case 'UNHIDE_DATASET_BY_ID':\r\n const { datasetId: datasetIdToShow } = action.payload\r\n return {\r\n ...state,\r\n datasets: state.datasets.map((dataset) => {\r\n return dataset.id == datasetIdToShow\r\n ? {\r\n ...dataset,\r\n visible: true,\r\n }\r\n : dataset\r\n }),\r\n }\r\n\r\n case 'ADD_DATASET_TO_MAP':\r\n const { dataset: datasetToAdd } = action.payload\r\n const datasetAlreadyAdded = state.addedDatasets.some(\r\n d => d?.name === datasetToAdd.name,\r\n )\r\n\r\n const addedDatasets = datasetAlreadyAdded\r\n ? state.addedDatasets\r\n : (() => {\r\n const maxOrder = state.addedDatasets.reduce<number>((max, current) => {\r\n const order = current.order ?? -1\r\n return order > max ? order : max\r\n }, -1)\r\n\r\n const nextOrder = maxOrder + 1\r\n\r\n return [...state.addedDatasets, { ...datasetToAdd, order: nextOrder }]\r\n })()\r\n return {\r\n ...state,\r\n dataset: datasetToAdd,\r\n addedDatasets,\r\n }\r\n case 'REMOVE_DATASET_FROM_MAP':\r\n const datasetIdToRemove = action.payload.datasetId\r\n const remaining = state.addedDatasets.filter(dataset => dataset.id !== datasetIdToRemove)\r\n const sorted = remaining.sort((a, b) => (b.order ?? 0) - (a.order ?? 0))\r\n const maxOrder = sorted.length - 1\r\n const updatedAddedDatasets = sorted.map((dataset, index) => ({\r\n ...dataset,\r\n order: maxOrder - index\r\n }))\r\n return {\r\n ...state,\r\n addedDatasets: updatedAddedDatasets,\r\n }\r\n case 'REMOVE_ALL_DATASETS':\r\n return {\r\n ...state,\r\n addedDatasets: [],\r\n }\r\n case 'REFRESH_ORG_DATASETS':\r\n return {\r\n ...state,\r\n orgRefreshNonce: (state.orgRefreshNonce ?? 0) + 1,\r\n }\r\n case 'TOGGLE_DATASET_VISIBILITY': {\r\n const datasetId = action.payload.datasetId\r\n const updatedDatasets = state.addedDatasets.map((dataset) => {\r\n if (dataset.id === datasetId) {\r\n return { ...dataset, visible: dataset.visible === false ? true : false }\r\n }\r\n return dataset\r\n })\r\n return {\r\n ...state,\r\n addedDatasets: updatedDatasets,\r\n }\r\n }\r\n\r\n case 'DATASET_COLOR':\r\n const { datasetId, layerColor } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map((dataset) => {\r\n if (dataset.id === datasetId) {\r\n return {\r\n ...dataset,\r\n layerColor,\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n\r\n case 'SET_DATASET_FIELDS':\r\n const { datasetName, datasetFields } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map(dataset => {\r\n if (dataset.name === datasetName) {\r\n return {\r\n ...dataset,\r\n fields: datasetFields,\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n case 'SET_SELECTED_FIELD':\r\n const { datasetName: dsName, fieldName } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map(dataset => {\r\n if (dataset.name === dsName) {\r\n return {\r\n ...dataset,\r\n selectedFieldName: fieldName,\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n case 'SET_FIELD_COLOR':\r\n const { datasetName: dName, fieldName: fName, layerColor: lColor } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: state.addedDatasets.map(dataset => {\r\n if (dataset.name === dName) {\r\n return {\r\n ...dataset,\r\n fields: dataset.fields.map(field => {\r\n if (field.name === fName) {\r\n return {\r\n ...field,\r\n layerColor: lColor,\r\n }\r\n }\r\n return field\r\n }),\r\n }\r\n }\r\n return dataset\r\n }),\r\n }\r\n\r\n case 'REORDER_DATASETS':\r\n const { reorderedDatasets } = action.payload\r\n return {\r\n ...state,\r\n addedDatasets: reorderedDatasets,\r\n }\r\n\r\n default:\r\n // ⚠️ Unhandled dataset action type is silently ignored (was logged as \"not implemented yet\")\r\n return state\r\n }\r\n}\r\n"],"mappings":"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","names":["dataset","maxOrder","_a","datasetId"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/store/Files/reducer.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { FileType } from '../../types/files'\r\n\r\nimport type { DbFile } from '../../types/dbTypes'\r\nimport type { FileAction } from '../../types/global'\r\nimport type { ActionMap } from '../ActionMap'\r\n\r\ninterface FilesTypes {\r\n files: DbFile[]\r\n currentFile: DbFile | null\r\n mapFileIds: number[]\r\n isMapFileManagerOpen: boolean\r\n actionMode: FileAction | null\r\n editingFile: DbFile | null\r\n}\r\n\r\nexport type FilesState = FilesTypes\r\n\r\nexport type FilesPayload = {\r\n // system/map/model file action\r\n ['SET_FILES']: { files: DbFile[] }\r\n ['ADD_FILE']: { file: DbFile }\r\n ['ADD_FILES']: { files: DbFile[] }\r\n ['REMOVE_FILE']: { id: number }\r\n ['REMOVE_ALL_FILE']: { id: number }\r\n ['SET_CURRENT_FILE']: { currentFile: DbFile | null }\r\n ['SE_CURRENT_FILE']: { currentFile: DbFile | null }\r\n\r\n // map visibility — which files are currently shown on the map\r\n ['ADD_TO_MAP']: { id: number }\r\n ['REMOVE_FROM_MAP']: { id: number }\r\n ['ADD_ALL_TO_MAP']: { ids: number[] }\r\n ['REMOVE_ALL_FROM_MAP']: void\r\n\r\n // kept for legacy callers outside the map viewer\r\n ['HIDE_FILE_BY_ID']: { id: number }\r\n ['UNHIDE_FILE_BY_ID']: { id: number }\r\n ['TOGGLE_FILE_BY_ID']: { id: number }\r\n\r\n // file manager\r\n ['HIDE_MAP_FILE_MANAGER']: void\r\n ['SHOW_MAP_FILE_MANAGER']: void\r\n\r\n // map specific action (legacy)\r\n ['HIDE_ALL_MAP_FILES']: void\r\n ['UNHIDE_ALL_MAP_FILES']: void\r\n\r\n // model specific action\r\n ['HIDE_ALL_MODEL_FILES']: void\r\n ['UNHIDE_ALL_MODEL_FILES']: void\r\n\r\n ['SET_ACTION_MODE']: { actionMode: FileAction | null }\r\n ['EDIT_FILE']: { file: DbFile | null }\r\n ['UPDATE_FILE_COORDS']: { id: number; lat: number; lng: number; elevation?: number; rotation?: number; type?: string }\r\n}\r\n\r\nexport type FilesActions\r\n = ActionMap<FilesPayload>[keyof ActionMap<FilesPayload>]\r\n\r\nexport const FilesReducer = (state: FilesState, action: FilesActions) => {\r\n switch (action.type) {\r\n case 'SET_FILES': {\r\n // Also prune mapFileIds for any file that no longer exists (e.g. deleted via API)\r\n const incomingIds = new Set(action.payload.files.map(f => f.id))\r\n return {\r\n ...state,\r\n files: action.payload.files,\r\n mapFileIds: state.mapFileIds.filter(id => incomingIds.has(id)),\r\n }\r\n }\r\n\r\n case 'ADD_FILE':\r\n return { ...state, files: [...state.files, action.payload.file] }\r\n\r\n case 'ADD_FILES':\r\n return { ...state, files: [...state.files, ...action.payload.files] }\r\n\r\n case 'SET_CURRENT_FILE':\r\n case 'SE_CURRENT_FILE':\r\n return { ...state, currentFile: action.payload.currentFile }\r\n\r\n case 'REMOVE_FILE':\r\n return {\r\n ...state,\r\n files: state.files.filter(f => f.id !== action.payload.id),\r\n currentFile: state.currentFile?.id === action.payload.id ? null : state.currentFile,\r\n mapFileIds: state.mapFileIds.filter(id => id !== action.payload.id),\r\n }\r\n\r\n // ── Map visibility ────────────────────────────────────────────────────────\r\n case 'ADD_TO_MAP':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.includes(action.payload.id)\r\n ? state.mapFileIds\r\n : [...state.mapFileIds, action.payload.id],\r\n }\r\n\r\n case 'REMOVE_FROM_MAP':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.filter(id => id !== action.payload.id),\r\n }\r\n\r\n case 'ADD_ALL_TO_MAP':\r\n return {\r\n ...state,\r\n mapFileIds: [...new Set([...state.mapFileIds, ...action.payload.ids])],\r\n }\r\n\r\n case 'REMOVE_ALL_FROM_MAP':\r\n return { ...state, mapFileIds: [] }\r\n\r\n // ── Legacy visibility (kept for non-map callers) ──────────────────────────\r\n case 'HIDE_FILE_BY_ID':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.filter(id => id !== action.payload.id),\r\n }\r\n\r\n case 'UNHIDE_FILE_BY_ID':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.includes(action.payload.id)\r\n ? state.mapFileIds\r\n : [...state.mapFileIds, action.payload.id],\r\n }\r\n\r\n case 'HIDE_ALL_MAP_FILES':\r\n return { ...state, mapFileIds: [] }\r\n\r\n case 'UNHIDE_ALL_MAP_FILES':\r\n return {\r\n ...state,\r\n mapFileIds: [...new Set([\r\n ...state.mapFileIds,\r\n ...state.files.filter(f => f.type === 'map-file').map(f => f.id),\r\n ])],\r\n }\r\n\r\n // ── File manager ──────────────────────────────────────────────────────────\r\n case 'HIDE_MAP_FILE_MANAGER':\r\n return { ...state, isMapFileManagerOpen: false }\r\n\r\n case 'SHOW_MAP_FILE_MANAGER':\r\n return { ...state, isMapFileManagerOpen: true }\r\n\r\n case 'SET_ACTION_MODE':\r\n return { ...state, actionMode: action.payload.actionMode }\r\n\r\n case 'EDIT_FILE':\r\n return { ...state, editingFile: action.payload.file }\r\n\r\n case 'UPDATE_FILE_COORDS':\r\n return {\r\n ...state,\r\n files: state.files.map(f =>\r\n f.id === action.payload.id\r\n ? {\r\n ...f,\r\n lat: action.payload.lat,\r\n lng: action.payload.lng,\r\n ...(action.payload.elevation !== undefined && { elevation: action.payload.elevation }),\r\n ...(action.payload.rotation !== undefined && { rotation: action.payload.rotation }),\r\n ...(action.payload.type !== undefined && { type: action.payload.type }),\r\n }\r\n : f\r\n ),\r\n }\r\n\r\n default:\r\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/store/Files/reducer.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { FileType } from '../../types/files'\r\n\r\nimport type { DbFile } from '../../types/dbTypes'\r\nimport type { FileAction } from '../../types/global'\r\nimport type { ActionMap } from '../ActionMap'\r\n\r\ninterface FilesTypes {\r\n files: DbFile[]\r\n currentFile: DbFile | null\r\n mapFileIds: number[]\r\n isMapFileManagerOpen: boolean\r\n actionMode: FileAction | null\r\n editingFile: DbFile | null\r\n}\r\n\r\nexport type FilesState = FilesTypes\r\n\r\nexport type FilesPayload = {\r\n // system/map/model file action\r\n ['SET_FILES']: { files: DbFile[] }\r\n ['ADD_FILE']: { file: DbFile }\r\n ['ADD_FILES']: { files: DbFile[] }\r\n ['REMOVE_FILE']: { id: number }\r\n ['REMOVE_ALL_FILE']: { id: number }\r\n ['SET_CURRENT_FILE']: { currentFile: DbFile | null }\r\n ['SE_CURRENT_FILE']: { currentFile: DbFile | null }\r\n\r\n // map visibility — which files are currently shown on the map\r\n ['ADD_TO_MAP']: { id: number }\r\n ['REMOVE_FROM_MAP']: { id: number }\r\n ['ADD_ALL_TO_MAP']: { ids: number[] }\r\n ['REMOVE_ALL_FROM_MAP']: void\r\n\r\n // kept for legacy callers outside the map viewer\r\n ['HIDE_FILE_BY_ID']: { id: number }\r\n ['UNHIDE_FILE_BY_ID']: { id: number }\r\n ['TOGGLE_FILE_BY_ID']: { id: number }\r\n\r\n // file manager\r\n ['HIDE_MAP_FILE_MANAGER']: void\r\n ['SHOW_MAP_FILE_MANAGER']: void\r\n\r\n // map specific action (legacy)\r\n ['HIDE_ALL_MAP_FILES']: void\r\n ['UNHIDE_ALL_MAP_FILES']: void\r\n\r\n // model specific action\r\n ['HIDE_ALL_MODEL_FILES']: void\r\n ['UNHIDE_ALL_MODEL_FILES']: void\r\n\r\n ['SET_ACTION_MODE']: { actionMode: FileAction | null }\r\n ['EDIT_FILE']: { file: DbFile | null }\r\n ['UPDATE_FILE_COORDS']: { id: number; lat: number; lng: number; elevation?: number; rotation?: number; type?: string }\r\n}\r\n\r\nexport type FilesActions\r\n = ActionMap<FilesPayload>[keyof ActionMap<FilesPayload>]\r\n\r\nexport const FilesReducer = (state: FilesState, action: FilesActions) => {\r\n switch (action.type) {\r\n case 'SET_FILES': {\r\n // Also prune mapFileIds for any file that no longer exists (e.g. deleted via API)\r\n const incomingIds = new Set(action.payload.files.map(f => f.id))\r\n return {\r\n ...state,\r\n files: action.payload.files,\r\n mapFileIds: state.mapFileIds.filter(id => incomingIds.has(id)),\r\n }\r\n }\r\n\r\n case 'ADD_FILE':\r\n return { ...state, files: [...state.files, action.payload.file] }\r\n\r\n case 'ADD_FILES':\r\n return { ...state, files: [...state.files, ...action.payload.files] }\r\n\r\n case 'SET_CURRENT_FILE':\r\n case 'SE_CURRENT_FILE':\r\n return { ...state, currentFile: action.payload.currentFile }\r\n\r\n case 'REMOVE_FILE':\r\n return {\r\n ...state,\r\n files: state.files.filter(f => f.id !== action.payload.id),\r\n currentFile: state.currentFile?.id === action.payload.id ? null : state.currentFile,\r\n mapFileIds: state.mapFileIds.filter(id => id !== action.payload.id),\r\n }\r\n\r\n // ── Map visibility ────────────────────────────────────────────────────────\r\n case 'ADD_TO_MAP':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.includes(action.payload.id)\r\n ? state.mapFileIds\r\n : [...state.mapFileIds, action.payload.id],\r\n }\r\n\r\n case 'REMOVE_FROM_MAP':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.filter(id => id !== action.payload.id),\r\n }\r\n\r\n case 'ADD_ALL_TO_MAP':\r\n return {\r\n ...state,\r\n mapFileIds: [...new Set([...state.mapFileIds, ...action.payload.ids])],\r\n }\r\n\r\n case 'REMOVE_ALL_FROM_MAP':\r\n return { ...state, mapFileIds: [] }\r\n\r\n // ── Legacy visibility (kept for non-map callers) ──────────────────────────\r\n case 'HIDE_FILE_BY_ID':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.filter(id => id !== action.payload.id),\r\n }\r\n\r\n case 'UNHIDE_FILE_BY_ID':\r\n return {\r\n ...state,\r\n mapFileIds: state.mapFileIds.includes(action.payload.id)\r\n ? state.mapFileIds\r\n : [...state.mapFileIds, action.payload.id],\r\n }\r\n\r\n case 'HIDE_ALL_MAP_FILES':\r\n return { ...state, mapFileIds: [] }\r\n\r\n case 'UNHIDE_ALL_MAP_FILES':\r\n return {\r\n ...state,\r\n mapFileIds: [...new Set([\r\n ...state.mapFileIds,\r\n ...state.files.filter(f => f.type === 'map-file').map(f => f.id),\r\n ])],\r\n }\r\n\r\n // ── File manager ──────────────────────────────────────────────────────────\r\n case 'HIDE_MAP_FILE_MANAGER':\r\n return { ...state, isMapFileManagerOpen: false }\r\n\r\n case 'SHOW_MAP_FILE_MANAGER':\r\n return { ...state, isMapFileManagerOpen: true }\r\n\r\n case 'SET_ACTION_MODE':\r\n return { ...state, actionMode: action.payload.actionMode }\r\n\r\n case 'EDIT_FILE':\r\n return { ...state, editingFile: action.payload.file }\r\n\r\n case 'UPDATE_FILE_COORDS':\r\n return {\r\n ...state,\r\n files: state.files.map(f =>\r\n f.id === action.payload.id\r\n ? {\r\n ...f,\r\n lat: action.payload.lat,\r\n lng: action.payload.lng,\r\n ...(action.payload.elevation !== undefined && { elevation: action.payload.elevation }),\r\n ...(action.payload.rotation !== undefined && { rotation: action.payload.rotation }),\r\n ...(action.payload.type !== undefined && { type: action.payload.type }),\r\n }\r\n : f\r\n ),\r\n }\r\n\r\n default:\r\n // ⚠️ Unhandled file action type is silently ignored (was logged as \"not implemented yet\")\r\n return state\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/store/Menus/context.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,KAAK,gBAAgB,GAAG;IACpB,KAAK,EAAE,UAAU,CAAA;CACpB,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/store/Menus/context.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,11 +18,17 @@ const getInitialState = (pathname) => {
|
|
|
18
18
|
selectedTab: "file",
|
|
19
19
|
commentsVisibleInViewer: [],
|
|
20
20
|
currentCommentId: null,
|
|
21
|
+
focusedCommentId: null,
|
|
22
|
+
focusRequestId: 0,
|
|
23
|
+
pendingCommentAction: null,
|
|
21
24
|
sensorsVisibleInViewer: [],
|
|
22
25
|
visibleSensorTypes: {},
|
|
23
26
|
visibleSensorTags: {},
|
|
24
27
|
currentSensorId: null,
|
|
25
|
-
currentSensorTypeId: null
|
|
28
|
+
currentSensorTypeId: null,
|
|
29
|
+
focusedSensorId: null,
|
|
30
|
+
sensorFocusRequestId: 0,
|
|
31
|
+
pendingSensorAction: null
|
|
26
32
|
}
|
|
27
33
|
};
|
|
28
34
|
};
|
|
@@ -30,7 +36,7 @@ const reducer = ({ menus }, action) => ({
|
|
|
30
36
|
menus: MenusReducer(menus, action)
|
|
31
37
|
});
|
|
32
38
|
const MenusContext = React.createContext({
|
|
33
|
-
state: { menus: { currentViewer: ViewerNames.map, rowsPerPage: 10, selectedTab: "file", commentsVisibleInViewer: [], currentCommentId: null, sensorsVisibleInViewer: [], visibleSensorTypes: {}, visibleSensorTags: {}, currentSensorId: null, currentSensorTypeId: null } },
|
|
39
|
+
state: { menus: { currentViewer: ViewerNames.map, rowsPerPage: 10, selectedTab: "file", commentsVisibleInViewer: [], currentCommentId: null, focusedCommentId: null, focusRequestId: 0, pendingCommentAction: null, sensorsVisibleInViewer: [], visibleSensorTypes: {}, visibleSensorTags: {}, currentSensorId: null, currentSensorTypeId: null, focusedSensorId: null, sensorFocusRequestId: 0, pendingSensorAction: null } },
|
|
34
40
|
dispatch: () => null,
|
|
35
41
|
isSidebarOpen: false,
|
|
36
42
|
setIsSidebarOpen: () => null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/store/Menus/context.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { usePathname } from 'next/navigation'\r\nimport * as React from \"react\";\r\n\r\nimport { ViewerNames } from '../../types/dbTypes'\r\n\r\nimport { MenusReducer } from './reducer'\r\n\r\nimport type { MenusActions, MenusState } from './reducer';\r\nimport type { Building, Site, User, Infrastructure } from '../../types/dbTypes'\r\nimport type { FileRow } from '../../types/files'\r\n\r\ntype InitialStateType = {\r\n menus: MenusState\r\n}\r\n\r\n// Function to determine if path is an auth page\r\nconst isAuthPath = (pathname?: string): boolean => {\r\n if (!pathname) return false\r\n return pathname.includes('/auth/')\r\n}\r\n\r\n// Get initial state based on current path\r\nconst getInitialState = (pathname?: string): InitialStateType => {\r\n const isAuth = isAuthPath(pathname)\r\n return {\r\n menus: {\r\n currentViewer: isAuth ? ViewerNames.auth : ViewerNames.map,\r\n rowsPerPage: 10, // Default rows per page\r\n selectedTab: 'file',\r\n commentsVisibleInViewer: [],\r\n currentCommentId: null,\r\n sensorsVisibleInViewer: [],\r\n visibleSensorTypes: {},\r\n visibleSensorTags: {},\r\n currentSensorId: null,\r\n currentSensorTypeId: null,\r\n },\r\n }\r\n}\r\n\r\nconst reducer = ({ menus }: InitialStateType, action: MenusActions) => ({\r\n menus: MenusReducer(menus, action),\r\n})\r\n\r\nexport const MenusContext = React.createContext<{\r\n state: InitialStateType\r\n dispatch: React.Dispatch<MenusActions>\r\n isSidebarOpen: boolean\r\n setIsSidebarOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n view: 'table' | 'detail'\r\n setView: React.Dispatch<React.SetStateAction<'table' | 'detail'>>\r\n selectedItem: Building | null\r\n setSelectedItem: React.Dispatch<React.SetStateAction<Building | null>>\r\n selectedSite: Site | null\r\n setSelectedSite: React.Dispatch<React.SetStateAction<Site | null>>\r\n selectedInfrastructure: Infrastructure | null\r\n setSelectedInfrastructure: React.Dispatch<React.SetStateAction<Infrastructure | null>>\r\n selectedFile: FileRow | null\r\n setSelectedFile: React.Dispatch<React.SetStateAction<FileRow | null>>\r\n selectedUser: Partial<User> | null\r\n setSelectedUser: React.Dispatch<React.SetStateAction<Partial<User> | null>>\r\n isDatasetMenuOpen: boolean\r\n setIsDatasetMenuOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n isAuthPage?: boolean\r\n}>({\r\n state: { menus: { currentViewer: ViewerNames.map, rowsPerPage: 10, selectedTab: 'file', commentsVisibleInViewer: [], currentCommentId: null, sensorsVisibleInViewer: [], visibleSensorTypes: {}, visibleSensorTags: {}, currentSensorId: null, currentSensorTypeId: null } },\r\n dispatch: () => null,\r\n isSidebarOpen: false,\r\n setIsSidebarOpen: () => null,\r\n view: 'table',\r\n setView: () => null,\r\n selectedItem: null,\r\n setSelectedItem: () => null,\r\n selectedSite: null,\r\n setSelectedSite: () => null,\r\n selectedInfrastructure: null,\r\n setSelectedInfrastructure: () => null,\r\n selectedFile: null,\r\n setSelectedFile: () => null,\r\n selectedUser: null,\r\n setSelectedUser: () => null,\r\n isDatasetMenuOpen: false,\r\n setIsDatasetMenuOpen: () => null,\r\n isAuthPage: true,\r\n})\r\n\r\nexport const MenusProvider: React.FC<React.PropsWithChildren> = ({ children }) => {\r\n const pathname = usePathname()\r\n const [state, dispatch] = React.useReducer(reducer, getInitialState(pathname))\r\n\r\n const [isSidebarOpen, setIsSidebarOpen] = React.useState(false)\r\n const [view, setView] = React.useState<'table' | 'detail'>('table')\r\n const [selectedItem, setSelectedItem] = React.useState<Building | null>(null)\r\n const [selectedSite, setSelectedSite] = React.useState<Site | null>(null)\r\n const [selectedInfrastructure, setSelectedInfrastructure] = React.useState<Infrastructure | null>(null)\r\n const [selectedFile, setSelectedFile] = React.useState<FileRow | null>(null)\r\n const [selectedUser, setSelectedUser] = React.useState<Partial<User> | null>(null)\r\n const [isDatasetMenuOpen, setIsDatasetMenuOpen] = React.useState(false)\r\n // Check if current path is an authentication page\r\n const isAuthPage = isAuthPath(pathname)\r\n\r\n // Update state if pathname changes and auth state changes\r\n React.useEffect(() => {\r\n if (isAuthPage && state.menus.currentViewer !== ViewerNames.auth) {\r\n dispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: ViewerNames.auth },\r\n })\r\n setIsSidebarOpen(false)\r\n }\r\n else if (!isAuthPage && state.menus.currentViewer === ViewerNames.auth) {\r\n dispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: ViewerNames.map },\r\n })\r\n }\r\n }, [pathname, isAuthPage, state.menus.currentViewer])\r\n\r\n const value = React.useMemo(() => ({\r\n state,\r\n dispatch,\r\n isSidebarOpen,\r\n setIsSidebarOpen,\r\n view,\r\n setView,\r\n selectedItem,\r\n setSelectedItem,\r\n selectedSite,\r\n setSelectedSite,\r\n selectedInfrastructure,\r\n setSelectedInfrastructure,\r\n selectedFile,\r\n setSelectedFile,\r\n selectedUser,\r\n setSelectedUser,\r\n isDatasetMenuOpen,\r\n setIsDatasetMenuOpen,\r\n }), [\r\n state, isSidebarOpen, view, selectedItem, selectedSite,\r\n selectedInfrastructure, selectedFile, selectedUser, isDatasetMenuOpen,\r\n ])\r\n\r\n return (\r\n <MenusContext.Provider value={value}>\r\n { children }\r\n </MenusContext.Provider>\r\n )\r\n}\r\n\r\nexport const useMenusContext = () => React.useContext(MenusContext)\r\n"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/store/Menus/context.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { usePathname } from 'next/navigation'\r\nimport * as React from \"react\";\r\n\r\nimport { ViewerNames } from '../../types/dbTypes'\r\n\r\nimport { MenusReducer } from './reducer'\r\n\r\nimport type { MenusActions, MenusState } from './reducer';\r\nimport type { Building, Site, User, Infrastructure } from '../../types/dbTypes'\r\nimport type { FileRow } from '../../types/files'\r\n\r\ntype InitialStateType = {\r\n menus: MenusState\r\n}\r\n\r\n// Function to determine if path is an auth page\r\nconst isAuthPath = (pathname?: string): boolean => {\r\n if (!pathname) return false\r\n return pathname.includes('/auth/')\r\n}\r\n\r\n// Get initial state based on current path\r\nconst getInitialState = (pathname?: string): InitialStateType => {\r\n const isAuth = isAuthPath(pathname)\r\n return {\r\n menus: {\r\n currentViewer: isAuth ? ViewerNames.auth : ViewerNames.map,\r\n rowsPerPage: 10, // Default rows per page\r\n selectedTab: 'file',\r\n commentsVisibleInViewer: [],\r\n currentCommentId: null,\r\n focusedCommentId: null,\r\n focusRequestId: 0,\r\n pendingCommentAction: null,\r\n sensorsVisibleInViewer: [],\r\n visibleSensorTypes: {},\r\n visibleSensorTags: {},\r\n currentSensorId: null,\r\n currentSensorTypeId: null,\r\n focusedSensorId: null,\r\n sensorFocusRequestId: 0,\r\n pendingSensorAction: null,\r\n },\r\n }\r\n}\r\n\r\nconst reducer = ({ menus }: InitialStateType, action: MenusActions) => ({\r\n menus: MenusReducer(menus, action),\r\n})\r\n\r\nexport const MenusContext = React.createContext<{\r\n state: InitialStateType\r\n dispatch: React.Dispatch<MenusActions>\r\n isSidebarOpen: boolean\r\n setIsSidebarOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n view: 'table' | 'detail'\r\n setView: React.Dispatch<React.SetStateAction<'table' | 'detail'>>\r\n selectedItem: Building | null\r\n setSelectedItem: React.Dispatch<React.SetStateAction<Building | null>>\r\n selectedSite: Site | null\r\n setSelectedSite: React.Dispatch<React.SetStateAction<Site | null>>\r\n selectedInfrastructure: Infrastructure | null\r\n setSelectedInfrastructure: React.Dispatch<React.SetStateAction<Infrastructure | null>>\r\n selectedFile: FileRow | null\r\n setSelectedFile: React.Dispatch<React.SetStateAction<FileRow | null>>\r\n selectedUser: Partial<User> | null\r\n setSelectedUser: React.Dispatch<React.SetStateAction<Partial<User> | null>>\r\n isDatasetMenuOpen: boolean\r\n setIsDatasetMenuOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n isAuthPage?: boolean\r\n}>({\r\n state: { menus: { currentViewer: ViewerNames.map, rowsPerPage: 10, selectedTab: 'file', commentsVisibleInViewer: [], currentCommentId: null, focusedCommentId: null, focusRequestId: 0, pendingCommentAction: null, sensorsVisibleInViewer: [], visibleSensorTypes: {}, visibleSensorTags: {}, currentSensorId: null, currentSensorTypeId: null, focusedSensorId: null, sensorFocusRequestId: 0, pendingSensorAction: null } },\r\n dispatch: () => null,\r\n isSidebarOpen: false,\r\n setIsSidebarOpen: () => null,\r\n view: 'table',\r\n setView: () => null,\r\n selectedItem: null,\r\n setSelectedItem: () => null,\r\n selectedSite: null,\r\n setSelectedSite: () => null,\r\n selectedInfrastructure: null,\r\n setSelectedInfrastructure: () => null,\r\n selectedFile: null,\r\n setSelectedFile: () => null,\r\n selectedUser: null,\r\n setSelectedUser: () => null,\r\n isDatasetMenuOpen: false,\r\n setIsDatasetMenuOpen: () => null,\r\n isAuthPage: true,\r\n})\r\n\r\nexport const MenusProvider: React.FC<React.PropsWithChildren> = ({ children }) => {\r\n const pathname = usePathname()\r\n const [state, dispatch] = React.useReducer(reducer, getInitialState(pathname))\r\n\r\n const [isSidebarOpen, setIsSidebarOpen] = React.useState(false)\r\n const [view, setView] = React.useState<'table' | 'detail'>('table')\r\n const [selectedItem, setSelectedItem] = React.useState<Building | null>(null)\r\n const [selectedSite, setSelectedSite] = React.useState<Site | null>(null)\r\n const [selectedInfrastructure, setSelectedInfrastructure] = React.useState<Infrastructure | null>(null)\r\n const [selectedFile, setSelectedFile] = React.useState<FileRow | null>(null)\r\n const [selectedUser, setSelectedUser] = React.useState<Partial<User> | null>(null)\r\n const [isDatasetMenuOpen, setIsDatasetMenuOpen] = React.useState(false)\r\n // Check if current path is an authentication page\r\n const isAuthPage = isAuthPath(pathname)\r\n\r\n // Update state if pathname changes and auth state changes\r\n React.useEffect(() => {\r\n if (isAuthPage && state.menus.currentViewer !== ViewerNames.auth) {\r\n dispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: ViewerNames.auth },\r\n })\r\n setIsSidebarOpen(false)\r\n }\r\n else if (!isAuthPage && state.menus.currentViewer === ViewerNames.auth) {\r\n dispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: ViewerNames.map },\r\n })\r\n }\r\n }, [pathname, isAuthPage, state.menus.currentViewer])\r\n\r\n const value = React.useMemo(() => ({\r\n state,\r\n dispatch,\r\n isSidebarOpen,\r\n setIsSidebarOpen,\r\n view,\r\n setView,\r\n selectedItem,\r\n setSelectedItem,\r\n selectedSite,\r\n setSelectedSite,\r\n selectedInfrastructure,\r\n setSelectedInfrastructure,\r\n selectedFile,\r\n setSelectedFile,\r\n selectedUser,\r\n setSelectedUser,\r\n isDatasetMenuOpen,\r\n setIsDatasetMenuOpen,\r\n }), [\r\n state, isSidebarOpen, view, selectedItem, selectedSite,\r\n selectedInfrastructure, selectedFile, selectedUser, isDatasetMenuOpen,\r\n ])\r\n\r\n return (\r\n <MenusContext.Provider value={value}>\r\n { children }\r\n </MenusContext.Provider>\r\n )\r\n}\r\n\r\nexport const useMenusContext = () => React.useContext(MenusContext)\r\n"],"mappings":"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","names":[]}
|