@collabdt/core 0.3.0 → 0.3.1
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/AppSidebarContent.d.ts +1 -1
- package/dist/core/components/AppSidebarContent.d.ts.map +1 -1
- package/dist/core/components/AppSidebarContent.js +9 -9
- package/dist/core/components/AppSidebarContent.js.map +1 -1
- package/dist/core/components/ConfirmDialog.js.map +1 -1
- package/dist/core/components/DataTableSkeleton.d.ts.map +1 -1
- package/dist/core/components/DataTableSkeleton.js.map +1 -1
- package/dist/core/components/LanguageSwitch.d.ts.map +1 -1
- package/dist/core/components/LanguageSwitch.js +4 -4
- package/dist/core/components/LanguageSwitch.js.map +1 -1
- package/dist/core/components/Logo.js +1 -1
- package/dist/core/components/Logo.js.map +1 -1
- package/dist/core/components/Toolbar.d.ts +1 -1
- package/dist/core/components/Toolbar.d.ts.map +1 -1
- package/dist/core/components/Toolbar.js +1 -1
- package/dist/core/components/Toolbar.js.map +1 -1
- package/dist/core/components/ToolbarBody.d.ts +1 -1
- package/dist/core/components/ToolbarBody.d.ts.map +1 -1
- package/dist/core/components/ToolbarBody.js +1 -1
- package/dist/core/components/ToolbarBody.js.map +1 -1
- package/dist/core/components/ToolbarSubmenu.d.ts +1 -1
- package/dist/core/components/ToolbarSubmenu.d.ts.map +1 -1
- package/dist/core/components/ToolbarSubmenu.js +2 -2
- package/dist/core/components/ToolbarSubmenu.js.map +1 -1
- package/dist/core/components/TopNavigationBar.d.ts.map +1 -1
- package/dist/core/components/TopNavigationBar.js +5 -5
- package/dist/core/components/TopNavigationBar.js.map +1 -1
- package/dist/core/components/authentication/AuthPage.d.ts.map +1 -1
- package/dist/core/components/authentication/AuthPage.js +5 -5
- package/dist/core/components/authentication/AuthPage.js.map +1 -1
- package/dist/core/components/authentication/ForgotPassword.d.ts.map +1 -1
- package/dist/core/components/authentication/ForgotPassword.js +3 -3
- package/dist/core/components/authentication/ForgotPassword.js.map +1 -1
- package/dist/core/components/authentication/Signin.d.ts.map +1 -1
- package/dist/core/components/authentication/Signin.js +5 -5
- package/dist/core/components/authentication/Signin.js.map +1 -1
- package/dist/core/components/authentication/Signup.d.ts.map +1 -1
- package/dist/core/components/authentication/Signup.js +7 -7
- package/dist/core/components/authentication/Signup.js.map +1 -1
- package/dist/core/components/instance-not-found/index.d.ts.map +1 -1
- package/dist/core/components/instance-not-found/index.js +4 -4
- package/dist/core/components/instance-not-found/index.js.map +1 -1
- package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.d.ts.map +1 -1
- package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.js +3 -3
- package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.js.map +1 -1
- package/dist/core/components/organizationConfig/index.d.ts.map +1 -1
- package/dist/core/components/organizationConfig/index.js +4 -4
- package/dist/core/components/organizationConfig/index.js.map +1 -1
- package/dist/core/components/organizationConfig/src/organizationConfigContent.js +2 -2
- package/dist/core/components/organizationConfig/src/organizationConfigContent.js.map +1 -1
- package/dist/core/components/settings/index.d.ts.map +1 -1
- package/dist/core/components/settings/index.js +2 -2
- package/dist/core/components/settings/index.js.map +1 -1
- package/dist/core/components/settings/src/AccountSettingsPanel.d.ts.map +1 -1
- package/dist/core/components/settings/src/AccountSettingsPanel.js +8 -8
- package/dist/core/components/settings/src/AccountSettingsPanel.js.map +1 -1
- package/dist/core/components/settings/src/ChangePassword.d.ts.map +1 -1
- package/dist/core/components/settings/src/ChangePassword.js +5 -5
- package/dist/core/components/settings/src/ChangePassword.js.map +1 -1
- package/dist/core/components/settings/src/OrganizationSettingsPanel.d.ts.map +1 -1
- package/dist/core/components/settings/src/OrganizationSettingsPanel.js +7 -7
- package/dist/core/components/settings/src/OrganizationSettingsPanel.js.map +1 -1
- package/dist/core/components/settings/src/SettingsContent.d.ts.map +1 -1
- package/dist/core/components/settings/src/SettingsContent.js +1 -1
- package/dist/core/components/settings/src/SettingsContent.js.map +1 -1
- package/dist/core/components/settings/src/SettingsSidebar.d.ts.map +1 -1
- package/dist/core/components/settings/src/SettingsSidebar.js +3 -3
- package/dist/core/components/settings/src/SettingsSidebar.js.map +1 -1
- package/dist/core/components/settings/src/UsersSettingsPanel.js +1 -1
- package/dist/core/components/settings/src/UsersSettingsPanel.js.map +1 -1
- package/dist/core/components/support/BugReportDialog.d.ts.map +1 -1
- package/dist/core/components/support/BugReportDialog.js +8 -8
- package/dist/core/components/support/BugReportDialog.js.map +1 -1
- package/dist/core/components/support/FeatureRequestDialog.d.ts.map +1 -1
- package/dist/core/components/support/FeatureRequestDialog.js +6 -6
- package/dist/core/components/support/FeatureRequestDialog.js.map +1 -1
- package/dist/core/components/support/SupportMenu.d.ts.map +1 -1
- package/dist/core/components/support/SupportMenu.js +1 -1
- package/dist/core/components/support/SupportMenu.js.map +1 -1
- package/dist/core/components/ui/Accordion.d.ts +1 -1
- package/dist/core/components/ui/Accordion.d.ts.map +1 -1
- package/dist/core/components/ui/Accordion.js +1 -1
- package/dist/core/components/ui/Accordion.js.map +1 -1
- package/dist/core/components/ui/AddItemDialog.d.ts.map +1 -1
- package/dist/core/components/ui/AddItemDialog.js +1 -1
- package/dist/core/components/ui/AddItemDialog.js.map +1 -1
- package/dist/core/components/ui/AlertDialog.d.ts +1 -1
- package/dist/core/components/ui/AlertDialog.d.ts.map +1 -1
- package/dist/core/components/ui/AlertDialog.js +1 -1
- package/dist/core/components/ui/AlertDialog.js.map +1 -1
- package/dist/core/components/ui/AnimatedBackground.js +1 -1
- package/dist/core/components/ui/AnimatedBackground.js.map +1 -1
- package/dist/core/components/ui/AppSidebar.d.ts.map +1 -1
- package/dist/core/components/ui/AppSidebar.js +7 -7
- package/dist/core/components/ui/AppSidebar.js.map +1 -1
- package/dist/core/components/ui/Avatar.d.ts +1 -1
- package/dist/core/components/ui/Avatar.d.ts.map +1 -1
- package/dist/core/components/ui/Avatar.js +1 -1
- package/dist/core/components/ui/Avatar.js.map +1 -1
- package/dist/core/components/ui/Badge.d.ts.map +1 -1
- package/dist/core/components/ui/Badge.js.map +1 -1
- package/dist/core/components/ui/Breadcrumb.d.ts.map +1 -1
- package/dist/core/components/ui/Breadcrumb.js +2 -2
- package/dist/core/components/ui/Breadcrumb.js.map +1 -1
- package/dist/core/components/ui/Button.d.ts.map +1 -1
- package/dist/core/components/ui/Button.js +1 -1
- package/dist/core/components/ui/Button.js.map +1 -1
- package/dist/core/components/ui/Calendar.d.ts +2 -1
- package/dist/core/components/ui/Calendar.d.ts.map +1 -1
- package/dist/core/components/ui/Calendar.js +1 -1
- package/dist/core/components/ui/Calendar.js.map +1 -1
- package/dist/core/components/ui/Checkbox.d.ts +1 -1
- package/dist/core/components/ui/Checkbox.d.ts.map +1 -1
- package/dist/core/components/ui/Checkbox.js +1 -1
- package/dist/core/components/ui/Checkbox.js.map +1 -1
- package/dist/core/components/ui/CollapsibleSection.d.ts.map +1 -1
- package/dist/core/components/ui/CollapsibleSection.js +2 -2
- package/dist/core/components/ui/CollapsibleSection.js.map +1 -1
- package/dist/core/components/ui/Command.d.ts +8 -8
- package/dist/core/components/ui/Command.d.ts.map +1 -1
- package/dist/core/components/ui/Command.js +1 -1
- package/dist/core/components/ui/Command.js.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js +9 -9
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
- package/dist/core/components/ui/Comments/Comment.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/Comment.js +4 -4
- package/dist/core/components/ui/Comments/Comment.js.map +1 -1
- package/dist/core/components/ui/Comments/CommentInput.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CommentInput.js +6 -6
- 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 +4 -4
- package/dist/core/components/ui/Comments/CommentsSection.js.map +1 -1
- package/dist/core/components/ui/Comments/commentUtils.d.ts +1 -1
- package/dist/core/components/ui/Comments/commentUtils.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/commentUtils.js.map +1 -1
- package/dist/core/components/ui/Countdown.d.ts.map +1 -1
- package/dist/core/components/ui/Countdown.js +1 -1
- package/dist/core/components/ui/Countdown.js.map +1 -1
- package/dist/core/components/ui/DataTable.d.ts +1 -1
- package/dist/core/components/ui/DataTable.d.ts.map +1 -1
- package/dist/core/components/ui/DataTable.js +17 -17
- package/dist/core/components/ui/DataTable.js.map +1 -1
- package/dist/core/components/ui/DatePicker.d.ts.map +1 -1
- package/dist/core/components/ui/DatePicker.js +2 -2
- package/dist/core/components/ui/DatePicker.js.map +1 -1
- package/dist/core/components/ui/DescriptionList.d.ts.map +1 -1
- package/dist/core/components/ui/DescriptionList.js +2 -2
- package/dist/core/components/ui/DescriptionList.js.map +1 -1
- package/dist/core/components/ui/Dialog.d.ts +1 -1
- package/dist/core/components/ui/Dialog.d.ts.map +1 -1
- package/dist/core/components/ui/Dialog.js +1 -1
- package/dist/core/components/ui/Dialog.js.map +1 -1
- package/dist/core/components/ui/DropdownMenu.d.ts +1 -1
- package/dist/core/components/ui/DropdownMenu.d.ts.map +1 -1
- package/dist/core/components/ui/DropdownMenu.js +1 -1
- package/dist/core/components/ui/DropdownMenu.js.map +1 -1
- package/dist/core/components/ui/ExportData.d.ts +2 -2
- package/dist/core/components/ui/ExportData.d.ts.map +1 -1
- package/dist/core/components/ui/ExportData.js +5 -5
- package/dist/core/components/ui/ExportData.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileItemComponent.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileItemComponent.js +3 -3
- package/dist/core/components/ui/FilesManager/src/FileItemComponent.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileMarker.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileMarker.js +2 -2
- package/dist/core/components/ui/FilesManager/src/FileMarker.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js +1 -1
- package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts +1 -1
- package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/downloadUtils.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useCommonFileUpload.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts +2 -2
- package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileActions.js +2 -2
- package/dist/core/components/ui/FilesManager/src/useFileActions.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js +3 -3
- package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.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.map +1 -1
- package/dist/core/components/ui/GenericTool.d.ts +1 -1
- package/dist/core/components/ui/GenericTool.d.ts.map +1 -1
- package/dist/core/components/ui/GenericTool.js +2 -2
- package/dist/core/components/ui/GenericTool.js.map +1 -1
- package/dist/core/components/ui/Icons/FloorPlanIcon.js +1 -1
- package/dist/core/components/ui/Icons/FloorPlanIcon.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Container.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Container.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Header.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Header.js +4 -4
- package/dist/core/components/ui/InfoSidebar/Header.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/index.d.ts +1 -1
- package/dist/core/components/ui/InfoSidebar/index.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/index.js +1 -1
- package/dist/core/components/ui/InfoSidebar/index.js.map +1 -1
- package/dist/core/components/ui/Label.d.ts +1 -1
- package/dist/core/components/ui/Label.d.ts.map +1 -1
- package/dist/core/components/ui/Label.js +1 -1
- package/dist/core/components/ui/Label.js.map +1 -1
- package/dist/core/components/ui/LanguageToggle.d.ts +1 -1
- package/dist/core/components/ui/LanguageToggle.d.ts.map +1 -1
- package/dist/core/components/ui/LanguageToggle.js +1 -1
- package/dist/core/components/ui/LanguageToggle.js.map +1 -1
- package/dist/core/components/ui/Menubar.d.ts +1 -1
- package/dist/core/components/ui/Menubar.d.ts.map +1 -1
- package/dist/core/components/ui/Menubar.js +1 -1
- package/dist/core/components/ui/Menubar.js.map +1 -1
- package/dist/core/components/ui/NavUser.js +7 -7
- package/dist/core/components/ui/NavUser.js.map +1 -1
- package/dist/core/components/ui/Navbar.d.ts.map +1 -1
- package/dist/core/components/ui/Navbar.js +2 -2
- package/dist/core/components/ui/Navbar.js.map +1 -1
- package/dist/core/components/ui/Popover.d.ts +1 -1
- package/dist/core/components/ui/Popover.d.ts.map +1 -1
- package/dist/core/components/ui/Popover.js +1 -1
- package/dist/core/components/ui/Popover.js.map +1 -1
- package/dist/core/components/ui/Progress.d.ts +1 -1
- package/dist/core/components/ui/Progress.d.ts.map +1 -1
- package/dist/core/components/ui/Progress.js +1 -1
- package/dist/core/components/ui/Progress.js.map +1 -1
- package/dist/core/components/ui/ScrollArea.d.ts +1 -1
- package/dist/core/components/ui/ScrollArea.d.ts.map +1 -1
- package/dist/core/components/ui/ScrollArea.js +1 -1
- package/dist/core/components/ui/ScrollArea.js.map +1 -1
- package/dist/core/components/ui/SearchInput.d.ts.map +1 -1
- package/dist/core/components/ui/SearchInput.js +2 -2
- package/dist/core/components/ui/SearchInput.js.map +1 -1
- package/dist/core/components/ui/Select.d.ts +1 -1
- package/dist/core/components/ui/Select.d.ts.map +1 -1
- package/dist/core/components/ui/Select.js +3 -3
- package/dist/core/components/ui/Select.js.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js +10 -10
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
- package/dist/core/components/ui/Sensors/Sensor.d.ts +2 -1
- package/dist/core/components/ui/Sensors/Sensor.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/Sensor.js +3 -3
- package/dist/core/components/ui/Sensors/Sensor.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorChart.d.ts +1 -1
- package/dist/core/components/ui/Sensors/SensorChart.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorChart.js +1 -1
- package/dist/core/components/ui/Sensors/SensorChart.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorInput.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorInput.js +9 -9
- package/dist/core/components/ui/Sensors/SensorInput.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.js +3 -3
- package/dist/core/components/ui/Sensors/SensorTagsSection.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.js +7 -7
- package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.js.map +1 -1
- package/dist/core/components/ui/Sensors/sensorUtils.d.ts +1 -1
- package/dist/core/components/ui/Sensors/sensorUtils.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/sensorUtils.js.map +1 -1
- package/dist/core/components/ui/Separator.d.ts +1 -1
- package/dist/core/components/ui/Separator.d.ts.map +1 -1
- package/dist/core/components/ui/Separator.js +1 -1
- package/dist/core/components/ui/Separator.js.map +1 -1
- package/dist/core/components/ui/SettingsButton.d.ts.map +1 -1
- package/dist/core/components/ui/SettingsButton.js +4 -4
- package/dist/core/components/ui/SettingsButton.js.map +1 -1
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts +1 -1
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts.map +1 -1
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js +14 -14
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js.map +1 -1
- package/dist/core/components/ui/Sheet.d.ts +1 -1
- package/dist/core/components/ui/Sheet.d.ts.map +1 -1
- package/dist/core/components/ui/Sheet.js +1 -1
- package/dist/core/components/ui/Sheet.js.map +1 -1
- package/dist/core/components/ui/Sidebar.d.ts +1 -1
- package/dist/core/components/ui/Sidebar.d.ts.map +1 -1
- package/dist/core/components/ui/Sidebar.js +6 -6
- package/dist/core/components/ui/Sidebar.js.map +1 -1
- package/dist/core/components/ui/Slider.d.ts +1 -1
- package/dist/core/components/ui/Slider.d.ts.map +1 -1
- package/dist/core/components/ui/Slider.js +1 -1
- package/dist/core/components/ui/Slider.js.map +1 -1
- package/dist/core/components/ui/Switch.d.ts +1 -1
- package/dist/core/components/ui/Switch.d.ts.map +1 -1
- package/dist/core/components/ui/Switch.js +1 -1
- package/dist/core/components/ui/Switch.js.map +1 -1
- package/dist/core/components/ui/Tabs.d.ts +1 -1
- package/dist/core/components/ui/Tabs.d.ts.map +1 -1
- package/dist/core/components/ui/Tabs.js +1 -1
- package/dist/core/components/ui/Tabs.js.map +1 -1
- package/dist/core/components/ui/Toggle.d.ts +1 -1
- package/dist/core/components/ui/Toggle.d.ts.map +1 -1
- package/dist/core/components/ui/Toggle.js +1 -1
- package/dist/core/components/ui/Toggle.js.map +1 -1
- package/dist/core/components/ui/ToggleGroup.d.ts +1 -1
- package/dist/core/components/ui/ToggleGroup.d.ts.map +1 -1
- package/dist/core/components/ui/ToggleGroup.js +1 -1
- package/dist/core/components/ui/ToggleGroup.js.map +1 -1
- package/dist/core/components/ui/ToolbarButton.d.ts +1 -1
- package/dist/core/components/ui/ToolbarButton.d.ts.map +1 -1
- package/dist/core/components/ui/ToolbarButton.js +1 -1
- package/dist/core/components/ui/ToolbarButton.js.map +1 -1
- package/dist/core/components/ui/Tooltip.d.ts +1 -1
- package/dist/core/components/ui/Tooltip.d.ts.map +1 -1
- package/dist/core/components/ui/Tooltip.js +1 -1
- package/dist/core/components/ui/Tooltip.js.map +1 -1
- package/dist/core/components/ui/UserAvatar.d.ts.map +1 -1
- package/dist/core/components/ui/UserAvatar.js +1 -1
- package/dist/core/components/ui/UserAvatar.js.map +1 -1
- package/dist/core/components/ui/downloadUtils.d.ts.map +1 -1
- package/dist/core/components/ui/downloadUtils.js.map +1 -1
- package/dist/core/components/ui/stats.d.ts.map +1 -1
- package/dist/core/components/ui/stats.js.map +1 -1
- package/dist/core/components/ui/uploadFile.js +1 -1
- package/dist/core/components/ui/uploadFile.js.map +1 -1
- package/dist/core/components/viewers/Data/DataMenu.d.ts +1 -1
- package/dist/core/components/viewers/Data/DataMenu.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/DataMenu.js +11 -11
- package/dist/core/components/viewers/Data/DataMenu.js.map +1 -1
- package/dist/core/components/viewers/Data/FilterButtons.d.ts +1 -1
- package/dist/core/components/viewers/Data/FilterButtons.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/FilterButtons.js +7 -7
- package/dist/core/components/viewers/Data/FilterButtons.js.map +1 -1
- package/dist/core/components/viewers/Data/HeaderButtons.d.ts +1 -1
- package/dist/core/components/viewers/Data/HeaderButtons.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/HeaderButtons.js +9 -9
- package/dist/core/components/viewers/Data/HeaderButtons.js.map +1 -1
- package/dist/core/components/viewers/Data/MoreOptions.d.ts +1 -1
- package/dist/core/components/viewers/Data/MoreOptions.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/MoreOptions.js +16 -16
- package/dist/core/components/viewers/Data/MoreOptions.js.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/Filters.js +2 -2
- package/dist/core/components/viewers/Data/advancedFilter/Filters.js.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js +6 -6
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js +3 -3
- package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js +10 -10
- package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js +11 -11
- package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js +10 -10
- package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.js.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.js.map +1 -1
- package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts +1 -1
- package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/AttachedFiles.js +3 -3
- package/dist/core/components/viewers/Data/details/AttachedFiles.js.map +1 -1
- package/dist/core/components/viewers/Data/details/DetailActions.d.ts +1 -1
- package/dist/core/components/viewers/Data/details/DetailActions.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/DetailActions.js +2 -2
- package/dist/core/components/viewers/Data/details/DetailActions.js.map +1 -1
- package/dist/core/components/viewers/Data/details/DetailHeader.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/DetailHeader.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 +4 -4
- package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js.map +1 -1
- package/dist/core/components/viewers/Data/details/FieldValue.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/FieldValue.js +2 -2
- package/dist/core/components/viewers/Data/details/FieldValue.js.map +1 -1
- package/dist/core/components/viewers/Data/details/FileUpload.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/FileUpload.js +2 -2
- package/dist/core/components/viewers/Data/details/FileUpload.js.map +1 -1
- package/dist/core/components/viewers/Data/details/FilterFiles.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/FilterFiles.js +2 -2
- package/dist/core/components/viewers/Data/details/FilterFiles.js.map +1 -1
- package/dist/core/components/viewers/Data/details/TabSidebar.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/TabSidebar.js +3 -3
- package/dist/core/components/viewers/Data/details/TabSidebar.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 +3 -3
- package/dist/core/components/viewers/Data/files/DatatableFileAdder.js.map +1 -1
- package/dist/core/components/viewers/Data/files/FileDetails.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/files/FileDetails.js +8 -8
- package/dist/core/components/viewers/Data/files/FileDetails.js.map +1 -1
- package/dist/core/components/viewers/Data/files/FileMoreOptions.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/files/FileMoreOptions.js +8 -8
- package/dist/core/components/viewers/Data/files/FileMoreOptions.js.map +1 -1
- package/dist/core/components/viewers/Data/files/FilePreview.d.ts +1 -1
- package/dist/core/components/viewers/Data/files/FilePreview.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/files/FilePreview.js +1 -1
- package/dist/core/components/viewers/Data/files/FilePreview.js.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js +3 -3
- package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js +2 -2
- package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js +6 -6
- package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/AddSite.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/AddSite.js +5 -5
- package/dist/core/components/viewers/Data/siteDetails/AddSite.js.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js +10 -10
- package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js +9 -9
- package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/SiteDetails.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js +11 -11
- package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js.map +1 -1
- package/dist/core/components/viewers/Data/userDetails/AddUser.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/userDetails/AddUser.js +3 -3
- package/dist/core/components/viewers/Data/userDetails/AddUser.js.map +1 -1
- package/dist/core/components/viewers/Data/userDetails/UserDetails.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/userDetails/UserDetails.js +12 -12
- package/dist/core/components/viewers/Data/userDetails/UserDetails.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 +12 -12
- package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/Columns.d.ts +2 -2
- package/dist/core/components/viewers/Data/utils/Columns.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/utils/Columns.js +7 -7
- package/dist/core/components/viewers/Data/utils/Columns.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/Headers.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/utils/Headers.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/csvUtils.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/positionParser.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/useViewerData.d.ts +2 -2
- package/dist/core/components/viewers/Data/utils/useViewerData.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/utils/useViewerData.js.map +1 -1
- package/dist/core/components/viewers/Viewer.d.ts +1 -1
- package/dist/core/components/viewers/Viewer.d.ts.map +1 -1
- package/dist/core/components/viewers/Viewer.js +6 -6
- package/dist/core/components/viewers/Viewer.js.map +1 -1
- package/dist/core/components/viewers/bim/BimToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/BimToolbar.js +1 -1
- package/dist/core/components/viewers/bim/BimToolbar.js.map +1 -1
- package/dist/core/components/viewers/bim/BimViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/BimViewer.js +7 -7
- package/dist/core/components/viewers/bim/BimViewer.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BCFTopicsManager.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BCFTopicsManager.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts +2 -2
- package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BIMManager/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimLoadingState/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimLoadingState/index.js +9 -9
- package/dist/core/components/viewers/bim/src/BimLoadingState/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js +1 -1
- package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js +5 -5
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.js +9 -9
- package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.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 +6 -6
- 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/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js +4 -4
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts +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 +10 -10
- 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 +9 -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/LayersTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js +2 -2
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js +6 -6
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts +1 -1
- 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.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js +2 -2
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js +5 -5
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js +3 -3
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js +3 -3
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js +4 -4
- package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts +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 +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js +5 -5
- package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/CameraProjection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/CameraProjection.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 +1 -1
- package/dist/core/components/viewers/bim/src/ClippingPlane.js.map +1 -1
- package/dist/core/components/viewers/bim/src/Cursor.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/Cursor.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/Cursor.js.map +1 -1
- package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/DXFLoader/index.js +1 -1
- package/dist/core/components/viewers/bim/src/DXFLoader/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/index.js +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.js.map +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts +4 -4
- package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.js.map +1 -1
- package/dist/core/components/viewers/bim/src/FitCamera.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/FitCamera.js +1 -1
- package/dist/core/components/viewers/bim/src/FitCamera.js.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts +3 -3
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.js +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts +3 -3
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.js.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.js.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts +2 -2
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.js.map +1 -1
- package/dist/core/components/viewers/bim/src/GhostMode.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/GhostMode.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/GhostMode.js.map +1 -1
- package/dist/core/components/viewers/bim/src/Highlighter/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/Highlighter/index.js +1 -1
- package/dist/core/components/viewers/bim/src/Highlighter/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/IDSManager/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/IDSManager/index.js +3 -3
- package/dist/core/components/viewers/bim/src/IDSManager/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js +2 -2
- package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js.map +1 -1
- package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.js.map +1 -1
- package/dist/core/components/viewers/bim/src/LoadModels.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/LoadModels.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/LoadModels.js +1 -1
- package/dist/core/components/viewers/bim/src/LoadModels.js.map +1 -1
- package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/ModelManager/index.js +4 -4
- package/dist/core/components/viewers/bim/src/ModelManager/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.js +8 -8
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.js.map +1 -1
- package/dist/core/components/viewers/bim/src/SpatialStructure.js.map +1 -1
- package/dist/core/components/viewers/bim/src/ViewportGizmo.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/ViewportGizmo.js +2 -2
- package/dist/core/components/viewers/bim/src/ViewportGizmo.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/CameraController.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ChromeController.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ClipController.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/GridController.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/GridController.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js +1 -1
- package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts +2 -2
- package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js +1 -1
- package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/drawingProjection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/useBuildingName.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/useBuildingName.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js +1 -1
- package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/index.js +4 -4
- package/dist/core/components/viewers/bim/src/propertiesMenu/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js +2 -2
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.js.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js +2 -2
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js +9 -9
- package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js +2 -2
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js +2 -2
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js +3 -3
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts +1 -1
- 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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts +2 -2
- 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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts +5 -5
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js +2 -2
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts +1 -1
- 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 +1 -1
- 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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js +4 -4
- 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/useFilePlacement.d.ts +2 -2
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js +4 -4
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js.map +1 -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 +6 -6
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js +2 -2
- package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts +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 +6 -6
- 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 +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 +3 -3
- package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js +2 -2
- package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js +4 -4
- package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/bimToolbar.js +4 -4
- package/dist/core/components/viewers/bim/src/tools/bimToolbar.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts +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 +5 -5
- package/dist/core/components/viewers/bim/src/tools/measureBimTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js +5 -5
- package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts +1 -1
- package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/shareBimTool.js.map +1 -1
- package/dist/core/components/viewers/bim/utils/GizmoController.d.ts +1 -1
- package/dist/core/components/viewers/bim/utils/GizmoController.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/utils/GizmoController.js.map +1 -1
- package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts +1 -1
- package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/utils/setCameraLookAt.js.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.d.ts +1 -1
- package/dist/core/components/viewers/map/MapViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.js +7 -7
- package/dist/core/components/viewers/map/MapViewer.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/AddPortalDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/AddPortalDialog.js +4 -4
- package/dist/core/components/viewers/map/datasets/AddPortalDialog.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetDetails.js +4 -4
- package/dist/core/components/viewers/map/datasets/DatasetDetails.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetManager/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetManager/index.js +13 -13
- package/dist/core/components/viewers/map/datasets/DatasetManager/index.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js +2 -2
- package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetSkeleton.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetSkeleton.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/Filters.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/Filters.js +2 -2
- package/dist/core/components/viewers/map/datasets/Filters.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/NestedFilter.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/NestedFilter.js +1 -1
- package/dist/core/components/viewers/map/datasets/NestedFilter.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/RowActions.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/RowActions.js +3 -3
- package/dist/core/components/viewers/map/datasets/RowActions.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/data.d.ts +1 -1
- package/dist/core/components/viewers/map/datasets/data.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/data.js +2 -2
- package/dist/core/components/viewers/map/datasets/data.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/index.d.ts +1 -1
- package/dist/core/components/viewers/map/datasets/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/index.js +11 -11
- package/dist/core/components/viewers/map/datasets/index.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts +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 +2 -2
- package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/cache.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts +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 +1 -1
- package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts +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 +3 -3
- package/dist/core/components/viewers/map/datasets/src/localDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/minioDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/minioDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts +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 +1 -1
- package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts +1 -1
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/socrataDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js +1 -1
- package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts +1 -12
- package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/urlSources.js +1 -1
- package/dist/core/components/viewers/map/datasets/src/urlSources.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js +1 -1
- package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts +1 -1
- package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/utils.d.ts +1 -1
- package/dist/core/components/viewers/map/datasets/utils.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/utils.js.map +1 -1
- package/dist/core/components/viewers/map/legends/MapLegendHost.d.ts.map +1 -1
- package/dist/core/components/viewers/map/legends/MapLegendHost.js +3 -3
- package/dist/core/components/viewers/map/legends/MapLegendHost.js.map +1 -1
- package/dist/core/components/viewers/map/src/Geocoder.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/Geocoder.js +8 -8
- package/dist/core/components/viewers/map/src/Geocoder.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js +3 -3
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts +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 +11 -10
- 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 +23 -55
- 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 +4 -4
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js +2 -2
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.js +5 -5
- package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js +5 -5
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js +4 -4
- package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.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 +9 -9
- package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js +3 -3
- package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.js +3 -3
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.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 -2
- 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/FileLayer/components/MapFileMarker.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileMarker.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js +6 -6
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js +3 -3
- package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js +3 -3
- package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js.map +1 -1
- 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 +11 -11
- package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js +2 -2
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js +4 -4
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts +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 +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.js +4 -4
- package/dist/core/components/viewers/map/src/MapSidebar/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js +2 -2
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts +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 +5 -5
- 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 +5 -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/LayersTab/index.d.ts +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js +4 -4
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js +4 -4
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js +2 -2
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts +1 -1
- 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.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js +3 -3
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js +3 -3
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js +3 -3
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js +3 -3
- package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js.map +1 -1
- package/dist/core/components/viewers/map/src/SimpleMap.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/SimpleMap.js +1 -1
- package/dist/core/components/viewers/map/src/SimpleMap.js.map +1 -1
- package/dist/core/components/viewers/map/src/compare/AddItem.d.ts +1 -1
- package/dist/core/components/viewers/map/src/compare/AddItem.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/compare/AddItem.js +6 -6
- package/dist/core/components/viewers/map/src/compare/AddItem.js.map +1 -1
- package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts +2 -2
- package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/compare/CompareDialog.js +5 -5
- package/dist/core/components/viewers/map/src/compare/CompareDialog.js.map +1 -1
- package/dist/core/components/viewers/map/src/compare/index.d.ts +1 -1
- package/dist/core/components/viewers/map/src/compare/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/compare/index.js +6 -6
- package/dist/core/components/viewers/map/src/compare/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js +3 -3
- package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js +5 -5
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js +3 -3
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js +7 -7
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts +2 -2
- package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js +8 -8
- package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts +2 -2
- package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js +1 -1
- package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/mapTools.d.ts +2 -2
- package/dist/core/components/viewers/map/src/tools/mapTools.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/mapTools.js +4 -4
- package/dist/core/components/viewers/map/src/tools/mapTools.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts +1 -1
- package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/measureMapTool.js +3 -3
- package/dist/core/components/viewers/map/src/tools/measureMapTool.js.map +1 -1
- package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts +1 -1
- package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/shareMapTool.js.map +1 -1
- package/dist/core/components/viewers/map/utils/ClusterManager.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/ClusterManager.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/ClusterManager.js.map +1 -1
- package/dist/core/components/viewers/map/utils/MarkerManager.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/MarkerManager.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/MarkerManager.js.map +1 -1
- package/dist/core/components/viewers/map/utils/extractCoordinates.js.map +1 -1
- package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/fitBuildingsBounds.js.map +1 -1
- package/dist/core/components/viewers/map/utils/flyToEach.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/flyToEach.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/flyToEach.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoder.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/geocoder.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoder.js +1 -1
- package/dist/core/components/viewers/map/utils/geocoder.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/adapters.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/index.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/index.js +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/index.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/osm.js +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/osm.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/pelias.js.map +1 -1
- package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts +1 -1
- package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudViewer.js +5 -5
- package/dist/core/components/viewers/pointcloud/PointCloudViewer.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js +7 -7
- package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js +15 -15
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js +3 -3
- package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js +2 -2
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js +3 -3
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js +4 -4
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js +5 -5
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js +3 -3
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js +4 -4
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js +10 -10
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/ViewportGizmo.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js +3 -3
- package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js +6 -6
- package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js +2 -2
- package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js +2 -2
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js +3 -3
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js +4 -4
- package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js +2 -2
- package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts +1 -1
- package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.js.map +1 -1
- package/dist/core/hooks/buildings/createBuildingHooks.d.ts +1 -1
- package/dist/core/hooks/buildings/createBuildingHooks.d.ts.map +1 -1
- package/dist/core/hooks/buildings/createBuildingHooks.js.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.d.ts +1 -1
- package/dist/core/hooks/comments/createCommentHooks.d.ts.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.js +1 -1
- package/dist/core/hooks/comments/createCommentHooks.js.map +1 -1
- package/dist/core/hooks/files/createFileHooks.d.ts +1 -1
- package/dist/core/hooks/files/createFileHooks.d.ts.map +1 -1
- package/dist/core/hooks/files/createFileHooks.js.map +1 -1
- package/dist/core/hooks/files/files.d.ts.map +1 -1
- package/dist/core/hooks/files/files.js +1 -1
- package/dist/core/hooks/files/files.js.map +1 -1
- package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts +1 -1
- package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts.map +1 -1
- package/dist/core/hooks/infrastructures/createInfrastructureHooks.js.map +1 -1
- package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts +1 -1
- package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts.map +1 -1
- package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.js.map +1 -1
- package/dist/core/hooks/organizations/createOrganizationHooks.d.ts +1 -1
- package/dist/core/hooks/organizations/createOrganizationHooks.d.ts.map +1 -1
- package/dist/core/hooks/organizations/createOrganizationHooks.js.map +1 -1
- package/dist/core/hooks/provider.d.ts +5 -5
- package/dist/core/hooks/provider.d.ts.map +1 -1
- package/dist/core/hooks/provider.js +4 -4
- package/dist/core/hooks/provider.js.map +1 -1
- package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts +1 -1
- package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts.map +1 -1
- package/dist/core/hooks/sensorTypes/createSensorTypeHooks.js.map +1 -1
- package/dist/core/hooks/sensors/createSensorHooks.d.ts +1 -1
- package/dist/core/hooks/sensors/createSensorHooks.d.ts.map +1 -1
- package/dist/core/hooks/sensors/createSensorHooks.js +1 -1
- package/dist/core/hooks/sensors/createSensorHooks.js.map +1 -1
- package/dist/core/hooks/sites/createSiteHooks.d.ts +1 -1
- package/dist/core/hooks/sites/createSiteHooks.d.ts.map +1 -1
- package/dist/core/hooks/sites/createSiteHooks.js.map +1 -1
- package/dist/core/hooks/sites/sites.d.ts.map +1 -1
- package/dist/core/hooks/useCaptureScreenshot.d.ts.map +1 -1
- package/dist/core/hooks/useCaptureScreenshot.js.map +1 -1
- package/dist/core/hooks/useCurrentViewerPosition.d.ts.map +1 -1
- package/dist/core/hooks/useCurrentViewerPosition.js +1 -1
- package/dist/core/hooks/useCurrentViewerPosition.js.map +1 -1
- package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts +1 -1
- package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts.map +1 -1
- package/dist/core/hooks/useGeocodingRuntimeConfig.js.map +1 -1
- package/dist/core/hooks/useShareUrl.d.ts.map +1 -1
- package/dist/core/hooks/useShareUrl.js +1 -1
- package/dist/core/hooks/useShareUrl.js.map +1 -1
- package/dist/core/hooks/users/createUserHooks.d.ts +1 -1
- package/dist/core/hooks/users/createUserHooks.d.ts.map +1 -1
- package/dist/core/hooks/users/createUserHooks.js.map +1 -1
- package/dist/core/i18n/index.js +1 -1
- package/dist/core/i18n/index.js.map +1 -1
- package/dist/core/i18n/messages/en.json +1872 -1872
- package/dist/core/i18n/messages/es.json +1870 -1870
- package/dist/core/i18n/messages/fr.json +1870 -1870
- package/dist/core/plugins/host/context.d.ts +1 -1
- package/dist/core/plugins/host/context.d.ts.map +1 -1
- package/dist/core/plugins/host/context.js.map +1 -1
- package/dist/core/plugins/host/host.d.ts +1 -1
- package/dist/core/plugins/host/host.d.ts.map +1 -1
- package/dist/core/plugins/host/host.js.map +1 -1
- package/dist/core/plugins/host/provider.d.ts.map +1 -1
- package/dist/core/plugins/host/provider.js +2 -2
- package/dist/core/plugins/host/provider.js.map +1 -1
- package/dist/core/store/AppConfig/context.d.ts +1 -1
- package/dist/core/store/AppConfig/context.d.ts.map +1 -1
- package/dist/core/store/AppConfig/context.js.map +1 -1
- package/dist/core/store/AppConfig/reducer.d.ts +2 -2
- package/dist/core/store/AppConfig/reducer.d.ts.map +1 -1
- package/dist/core/store/AppConfig/reducer.js.map +1 -1
- package/dist/core/store/BIM/context.d.ts +1 -1
- package/dist/core/store/BIM/context.d.ts.map +1 -1
- package/dist/core/store/BIM/context.js.map +1 -1
- package/dist/core/store/BIM/reducer.d.ts +3 -3
- package/dist/core/store/BIM/reducer.d.ts.map +1 -1
- package/dist/core/store/BIM/reducer.js.map +1 -1
- package/dist/core/store/Buildings/context.d.ts +1 -1
- package/dist/core/store/Buildings/context.d.ts.map +1 -1
- package/dist/core/store/Buildings/context.js.map +1 -1
- package/dist/core/store/Buildings/reducer.d.ts +2 -2
- package/dist/core/store/Buildings/reducer.d.ts.map +1 -1
- package/dist/core/store/Buildings/reducer.js.map +1 -1
- package/dist/core/store/CombineProviders.d.ts.map +1 -1
- package/dist/core/store/CombineProviders.js +7 -7
- package/dist/core/store/CombineProviders.js.map +1 -1
- package/dist/core/store/Content/context.d.ts +1 -1
- package/dist/core/store/Content/context.d.ts.map +1 -1
- package/dist/core/store/Content/context.js.map +1 -1
- package/dist/core/store/Datasets/context.d.ts +1 -1
- package/dist/core/store/Datasets/context.d.ts.map +1 -1
- package/dist/core/store/Datasets/context.js.map +1 -1
- package/dist/core/store/Datasets/reducer.d.ts +1 -1
- package/dist/core/store/Datasets/reducer.d.ts.map +1 -1
- package/dist/core/store/Datasets/reducer.js.map +1 -1
- package/dist/core/store/Files/context.d.ts +1 -1
- package/dist/core/store/Files/context.d.ts.map +1 -1
- package/dist/core/store/Files/context.js.map +1 -1
- package/dist/core/store/Files/reducer.d.ts +3 -3
- package/dist/core/store/Files/reducer.d.ts.map +1 -1
- package/dist/core/store/Files/reducer.js.map +1 -1
- package/dist/core/store/Map/context.d.ts +1 -1
- package/dist/core/store/Map/context.d.ts.map +1 -1
- package/dist/core/store/Map/context.js +1 -1
- package/dist/core/store/Map/context.js.map +1 -1
- package/dist/core/store/Map/reducer.d.ts +6 -5
- package/dist/core/store/Map/reducer.d.ts.map +1 -1
- package/dist/core/store/Map/reducer.js.map +1 -1
- package/dist/core/store/MapSites/context.d.ts +1 -1
- package/dist/core/store/MapSites/context.d.ts.map +1 -1
- package/dist/core/store/MapSites/context.js.map +1 -1
- package/dist/core/store/MapSites/reducer.d.ts +1 -1
- package/dist/core/store/MapSites/reducer.d.ts.map +1 -1
- package/dist/core/store/MapSites/reducer.js.map +1 -1
- package/dist/core/store/Menus/context.d.ts +1 -1
- package/dist/core/store/Menus/context.d.ts.map +1 -1
- package/dist/core/store/Menus/context.js +2 -2
- package/dist/core/store/Menus/context.js.map +1 -1
- package/dist/core/store/Menus/reducer.d.ts +1 -1
- package/dist/core/store/Menus/reducer.d.ts.map +1 -1
- package/dist/core/store/Menus/reducer.js.map +1 -1
- package/dist/core/store/Permissions/context.d.ts +1 -1
- package/dist/core/store/Permissions/context.d.ts.map +1 -1
- package/dist/core/store/Permissions/context.js +2 -2
- package/dist/core/store/Permissions/context.js.map +1 -1
- package/dist/core/store/PointCloud/context.d.ts +1 -1
- package/dist/core/store/PointCloud/context.d.ts.map +1 -1
- package/dist/core/store/PointCloud/context.js.map +1 -1
- package/dist/core/store/PointCloud/reducer.d.ts +1 -1
- package/dist/core/store/PointCloud/reducer.d.ts.map +1 -1
- package/dist/core/store/PointCloud/reducer.js.map +1 -1
- package/dist/core/store/Tools/context.d.ts +1 -1
- package/dist/core/store/Tools/context.d.ts.map +1 -1
- package/dist/core/store/Tools/context.js.map +1 -1
- package/dist/core/store/Tools/reducer.d.ts +1 -1
- package/dist/core/store/Tools/reducer.d.ts.map +1 -1
- package/dist/core/store/Tools/reducer.js.map +1 -1
- package/dist/core/styles/globals.css +17 -16
- package/dist/core/styles/tailwindMerge.d.ts +1 -1
- package/dist/core/styles/tailwindMerge.d.ts.map +1 -1
- package/dist/core/styles/tailwindMerge.js.map +1 -1
- package/dist/core/types/datasetTypes.d.ts +2 -2
- package/dist/core/types/datasetTypes.d.ts.map +1 -1
- package/dist/core/types/dbTypes.d.ts +1 -1
- package/dist/core/types/dbTypes.d.ts.map +1 -1
- package/dist/core/types/dbTypes.js.map +1 -1
- package/dist/core/types/files.d.ts +2 -2
- package/dist/core/types/files.d.ts.map +1 -1
- package/dist/core/types/global.d.ts +3 -3
- package/dist/core/types/global.d.ts.map +1 -1
- package/dist/core/types/global.js.map +1 -1
- package/dist/core/types/map.d.ts +2 -2
- package/dist/core/types/map.d.ts.map +1 -1
- package/dist/core/types/tools.d.ts +3 -3
- package/dist/core/types/tools.d.ts.map +1 -1
- package/dist/core/types/users.d.ts +2 -2
- package/dist/core/types/users.d.ts.map +1 -1
- package/dist/core/utils/getFileIcon.d.ts +1 -1
- package/dist/core/utils/getFileIcon.d.ts.map +1 -1
- package/dist/core/utils/getFileIcon.js.map +1 -1
- package/dist/core/utils/memcache.js.map +1 -1
- package/dist/core/utils/roles.d.ts.map +1 -1
- package/dist/core/utils/roles.js.map +1 -1
- package/dist/core/utils/timeUtils.js.map +1 -1
- package/dist/core/utils/utils.d.ts +1 -1
- package/dist/core/utils/utils.d.ts.map +1 -1
- package/dist/core/utils/utils.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.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\nimport { Source, Layer, Marker } from 'react-map-gl/maplibre'\r\nimport type { LayerProps } from 'react-map-gl/maplibre'\r\nimport type { MapGeoJSONFeature } from 'maplibre-gl'\r\nimport { toast } from 'sonner'\r\n\r\nimport {\r\n MapContext,\r\n usePermissions,\r\n useMenusContext,\r\n useMapSitesContext,\r\n} from '../../../../../../../store'\r\nimport { MapLayerClickPriority, type ClickCallback } from '../../../../utils/MapEventManager/MapClickManager'\r\nimport { ViewerNames, type Site } from '../../../../../../../types/dbTypes'\r\nimport { useSite, useDeleteSite } from '../../../../../../../hooks/sites/sites'\r\nimport { useDeleteFile } from '../../../../../../../hooks/files/files'\r\nimport { polygonCentroid, uploadGeoJsonToAsset, pointToSegmentDistance } from './siteGeometry'\r\nimport { SiteContextMenu } from './SiteContextMenu'\r\n\r\nconst SITE_FILL_ID = 'site-fill'\r\nconst SITE_OUTLINE_ID = 'site-outline'\r\nconst SITE_LABEL_ID = 'site-label'\r\n\r\n// How close (screen px) a click must be to count as \"on a vertex\" / \"on an edge\".\r\nconst VERTEX_HIT_PX = 12\r\nconst EDGE_HIT_PX = 8\r\n// A polygon needs at least 3 corners; deleting below that is blocked.\r\nconst MIN_RING_POINTS = 3\r\n\r\nconst fillLayer: LayerProps = {\r\n id: SITE_FILL_ID,\r\n type: 'fill',\r\n paint: { 'fill-color': '#3b82f6', 'fill-opacity': 0.35 },\r\n filter: ['==', ['get', 'type'], 'site'],\r\n}\r\n\r\nconst outlineLayer: LayerProps = {\r\n id: SITE_OUTLINE_ID,\r\n type: 'line',\r\n layout: { 'line-cap': 'round', 'line-join': 'round' },\r\n paint: { 'line-color': '#1c4587', 'line-width': 2 },\r\n filter: ['==', ['get', 'type'], 'site'],\r\n}\r\n\r\nconst labelLayer: LayerProps = {\r\n id: SITE_LABEL_ID,\r\n type: 'symbol',\r\n layout: {\r\n 'text-field': ['get', 'name'],\r\n 'text-font': ['Inter'],\r\n 'text-size': 16,\r\n 'text-anchor': 'center',\r\n 'text-allow-overlap': false,\r\n },\r\n paint: {\r\n 'text-color': '#ffffff',\r\n 'text-halo-color': '#000000',\r\n 'text-halo-width': 1.5,\r\n },\r\n filter: ['==', ['get', 'type'], 'site-label'],\r\n}\r\n\r\nexport const SiteLayer = () => {\r\n const { state: mapState } = React.useContext(MapContext)\r\n const { map, mapClickManager } = mapState.map\r\n const { state: mapSitesState, dispatch } = useMapSitesContext()\r\n const { sites, editingSiteId } = mapSitesState.mapSites\r\n\r\n const { ability } = usePermissions()\r\n const canUpdate = ability.can('update', 'Site')\r\n const canDelete = ability.can('delete', 'Site')\r\n const canRead = ability.can('read', 'Site')\r\n\r\n const { dispatch: menusDispatch, setSelectedSite, setView } = useMenusContext()\r\n\r\n const [menu, setMenu] = React.useState<{ x: number, y: number, siteId: number } | null>(null)\r\n\r\n // The site the user is currently acting on (menu open) or editing.\r\n const activeSiteId = menu?.siteId ?? editingSiteId ?? null\r\n const { updateSite } = useSite(activeSiteId ? String(activeSiteId) : '')\r\n const { deleteSite } = useDeleteSite(activeSiteId ?? undefined)\r\n const { deleteFile } = useDeleteFile(undefined, activeSiteId ?? undefined)\r\n\r\n const menuSite = menu ? sites.find(s => s.id === menu.siteId) ?? null : null\r\n\r\n // Live mirrors so the once-bound map click handlers read current values.\r\n const sitesRef = React.useRef(sites)\r\n sitesRef.current = sites\r\n const editingSiteIdRef = React.useRef(editingSiteId)\r\n editingSiteIdRef.current = editingSiteId\r\n\r\n // Build the rendered FeatureCollection: a polygon + a single centroid label\r\n // per shown site.\r\n const featureCollection = React.useMemo<GeoJSON.FeatureCollection>(() => {\r\n const features: GeoJSON.Feature[] = []\r\n for (const s of sites) {\r\n if (s.ring.length < 3) continue\r\n features.push({\r\n type: 'Feature',\r\n geometry: { type: 'Polygon', coordinates: [[...s.ring, s.ring[0]]] },\r\n properties: { type: 'site', siteId: s.id, name: s.name },\r\n })\r\n features.push({\r\n type: 'Feature',\r\n geometry: { type: 'Point', coordinates: polygonCentroid(s.ring) },\r\n properties: { type: 'site-label', siteId: s.id, name: s.name },\r\n })\r\n }\r\n return { type: 'FeatureCollection', features }\r\n }, [sites])\r\n\r\n // Lowest-priority click handler: opens the site menu only when no other\r\n // interactive layer was hit at the click point.\r\n React.useEffect(() => {\r\n if (!map || !mapClickManager) return\r\n\r\n const handleSiteClick: ClickCallback = (e, features: MapGeoJSONFeature[]) => {\r\n // While editing a shape, fill clicks are for adding vertices (see the\r\n // edit-click effect), not for (re)opening the menu.\r\n if (editingSiteIdRef.current != null) return\r\n const feature = features?.[0]\r\n const siteId = Number(feature?.properties?.siteId)\r\n if (!siteId || Number.isNaN(siteId)) return\r\n const native = e.originalEvent as MouseEvent | undefined\r\n setMenu({\r\n x: native?.clientX ?? e.point.x,\r\n y: native?.clientY ?? e.point.y,\r\n siteId,\r\n })\r\n }\r\n\r\n const onEnter = () => { map.getCanvas().style.cursor = 'pointer' }\r\n const onLeave = () => { map.getCanvas().style.cursor = '' }\r\n\r\n mapClickManager.register(SITE_FILL_ID, MapLayerClickPriority.SiteLayerClickPriority, handleSiteClick)\r\n map.on('mouseenter', SITE_FILL_ID, onEnter)\r\n map.on('mouseleave', SITE_FILL_ID, onLeave)\r\n\r\n return () => {\r\n mapClickManager.unregister(SITE_FILL_ID)\r\n map.off('mouseenter', SITE_FILL_ID, onEnter)\r\n map.off('mouseleave', SITE_FILL_ID, onLeave)\r\n }\r\n }, [map, mapClickManager])\r\n\r\n const updateVertex = (index: number, lng: number, lat: number) => {\r\n if (editingSiteId == null) return\r\n const s = sites.find(x => x.id === editingSiteId)\r\n if (!s) return\r\n const ring = s.ring.map((p, i) => (i === index ? [lng, lat] as [number, number] : p))\r\n dispatch({ type: 'UPDATE_SITE_RING', payload: { id: editingSiteId, ring } })\r\n }\r\n\r\n // Double-click a vertex to delete it (a polygon keeps at least 3 corners).\r\n const deleteVertex = (index: number) => {\r\n if (editingSiteId == null) return\r\n const s = sites.find(x => x.id === editingSiteId)\r\n if (!s) return\r\n if (s.ring.length <= MIN_RING_POINTS) {\r\n toast.warning('A site needs at least 3 points.')\r\n return\r\n }\r\n const ring = s.ring.filter((_, i) => i !== index)\r\n dispatch({ type: 'UPDATE_SITE_RING', payload: { id: editingSiteId, ring } })\r\n }\r\n\r\n // While editing, a click on an edge (not a vertex) inserts a new vertex there.\r\n React.useEffect(() => {\r\n if (!map || editingSiteId == null) return\r\n\r\n const onEditClick = (e: maplibregl.MapMouseEvent) => {\r\n const site = sitesRef.current.find(s => s.id === editingSiteId)\r\n const ring = site?.ring\r\n if (!ring || ring.length < 2) return\r\n\r\n const click = e.point\r\n // Ignore clicks on/near an existing vertex — those drag (or, on a\r\n // double-click, delete) via the markers.\r\n for (const v of ring) {\r\n const vp = map.project(v as [number, number])\r\n if (Math.hypot(vp.x - click.x, vp.y - click.y) <= VERTEX_HIT_PX) return\r\n }\r\n\r\n // Find the nearest edge segment in screen space.\r\n let bestDist = Infinity\r\n let bestIdx = -1\r\n for (let i = 0; i < ring.length; i++) {\r\n const a = map.project(ring[i] as [number, number])\r\n const b = map.project(ring[(i + 1) % ring.length] as [number, number])\r\n const d = pointToSegmentDistance(click.x, click.y, a.x, a.y, b.x, b.y)\r\n if (d < bestDist) { bestDist = d; bestIdx = i }\r\n }\r\n\r\n if (bestIdx >= 0 && bestDist <= EDGE_HIT_PX) {\r\n const next = [...ring]\r\n next.splice(bestIdx + 1, 0, [e.lngLat.lng, e.lngLat.lat])\r\n dispatch({ type: 'UPDATE_SITE_RING', payload: { id: editingSiteId, ring: next } })\r\n }\r\n }\r\n\r\n // Avoid the map zooming when a vertex is double-clicked to delete it.\r\n map.doubleClickZoom.disable()\r\n map.on('click', onEditClick)\r\n return () => {\r\n map.off('click', onEditClick)\r\n map.doubleClickZoom.enable()\r\n }\r\n }, [map, editingSiteId, dispatch])\r\n\r\n const handleRename = async (name: string) => {\r\n if (!menu) return\r\n dispatch({ type: 'UPDATE_SITE_NAME', payload: { id: menu.siteId, name } })\r\n try {\r\n await updateSite({ siteName: name })\r\n }\r\n catch {\r\n toast.error('Failed to rename the site.')\r\n }\r\n }\r\n\r\n const handleToggleEdit = async () => {\r\n if (editingSiteId === activeSiteId && activeSiteId != null) {\r\n // Finishing an edit: persist the new geometry + centroid.\r\n const s = sites.find(x => x.id === activeSiteId)\r\n dispatch({ type: 'SET_EDITING_SITE', payload: { id: null } })\r\n if (s?.assetId && s.ring.length >= 3) {\r\n const toastId = toast.loading('Saving site shape…')\r\n try {\r\n await uploadGeoJsonToAsset(s.assetId, s.ring, s.name)\r\n const c = polygonCentroid(s.ring)\r\n await updateSite({ siteLongitude: c[0], siteLatitude: c[1] })\r\n toast.success('Site shape saved.', { id: toastId })\r\n }\r\n catch {\r\n toast.error('Failed to save the site shape.', { id: toastId })\r\n }\r\n }\r\n }\r\n else {\r\n // Keep the menu open so the name can be edited alongside the vertices.\r\n dispatch({ type: 'SET_EDITING_SITE', payload: { id: activeSiteId } })\r\n }\r\n }\r\n\r\n const handleHide = () => {\r\n if (!menu) return\r\n dispatch({ type: 'HIDE_SITE', payload: { id: menu.siteId } })\r\n setMenu(null)\r\n }\r\n\r\n const handleInfo = () => {\r\n if (!menu) return\r\n const s = sites.find(x => x.id === menu.siteId)\r\n setSelectedSite({ id: menu.siteId, siteName: s?.name } as Site)\r\n setView('detail')\r\n menusDispatch({ type: 'SET_VIEWER', payload: { currentViewer: ViewerNames.sites } })\r\n setMenu(null)\r\n }\r\n\r\n const handleDelete = async () => {\r\n if (!menu) return\r\n const id = menu.siteId\r\n const s = sites.find(x => x.id === id)\r\n try {\r\n await deleteSite(id)\r\n if (s?.fileId) {\r\n try { await deleteFile(s.fileId) }\r\n catch { /* geometry file orphaned; site itself is gone */ }\r\n }\r\n dispatch({ type: 'HIDE_SITE', payload: { id } })\r\n setMenu(null)\r\n toast.success('Site deleted.')\r\n }\r\n catch {\r\n toast.error('Failed to delete the site.')\r\n }\r\n }\r\n\r\n const editingSite = editingSiteId != null ? sites.find(s => s.id === editingSiteId) ?? null : null\r\n\r\n return (\r\n <>\r\n <Source id=\"sites-source\" type=\"geojson\" data={featureCollection}>\r\n <Layer {...fillLayer} />\r\n <Layer {...outlineLayer} />\r\n <Layer {...labelLayer} />\r\n </Source>\r\n\r\n {/* Draggable vertex handles while editing a site's shape */}\r\n {editingSite?.ring.map((vertex, index) => (\r\n <Marker\r\n key={`${editingSite.id}-vertex-${index}`}\r\n longitude={vertex[0]}\r\n latitude={vertex[1]}\r\n draggable\r\n onDrag={(e: { lngLat: { lng: number, lat: number } }) =>\r\n updateVertex(index, e.lngLat.lng, e.lngLat.lat)}\r\n >\r\n <div\r\n title=\"Drag to move · double-click to delete\"\r\n onDoubleClick={(ev) => { ev.stopPropagation(); deleteVertex(index) }}\r\n style={{\r\n width: 14,\r\n height: 14,\r\n borderRadius: '50%',\r\n background: '#22c55e',\r\n border: '2px solid #ffffff',\r\n boxShadow: '0 0 0 1px #15803d',\r\n cursor: 'grab',\r\n }}\r\n />\r\n </Marker>\r\n ))}\r\n\r\n {menu && menuSite && (\r\n <SiteContextMenu\r\n x={menu.x}\r\n y={menu.y}\r\n site={menuSite}\r\n isEditing={editingSiteId === menu.siteId}\r\n canUpdate={canUpdate}\r\n canDelete={canDelete}\r\n canRead={canRead}\r\n onClose={() => setMenu(null)}\r\n onRename={handleRename}\r\n onToggleEdit={handleToggleEdit}\r\n onHide={handleHide}\r\n onInfo={handleInfo}\r\n onDelete={handleDelete}\r\n />\r\n )}\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.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\nimport { Source, Layer, Marker } from 'react-map-gl/maplibre'\r\nimport { toast } from 'sonner'\r\n\r\nimport { useDeleteFile } from '../../../../../../../hooks/files/files'\r\nimport { useSite, useDeleteSite } from '../../../../../../../hooks/sites/sites'\r\nimport {\r\n MapContext,\r\n usePermissions,\r\n useMenusContext,\r\n useMapSitesContext,\r\n} from '../../../../../../../store'\r\nimport { ViewerNames, type Site } from '../../../../../../../types/dbTypes'\r\nimport { MapLayerClickPriority, type ClickCallback } from '../../../../utils/MapEventManager/MapClickManager'\r\n\r\nimport { SiteContextMenu } from './SiteContextMenu'\r\nimport { polygonCentroid, uploadGeoJsonToAsset, pointToSegmentDistance } from './siteGeometry'\r\n\r\nimport type { MapGeoJSONFeature } from 'maplibre-gl'\r\nimport type { LayerProps } from 'react-map-gl/maplibre'\r\n\r\nconst SITE_FILL_ID = 'site-fill'\r\nconst SITE_OUTLINE_ID = 'site-outline'\r\nconst SITE_LABEL_ID = 'site-label'\r\n\r\n// How close (screen px) a click must be to count as \"on a vertex\" / \"on an edge\".\r\nconst VERTEX_HIT_PX = 12\r\nconst EDGE_HIT_PX = 8\r\n// A polygon needs at least 3 corners; deleting below that is blocked.\r\nconst MIN_RING_POINTS = 3\r\n\r\nconst fillLayer: LayerProps = {\r\n id: SITE_FILL_ID,\r\n type: 'fill',\r\n paint: { 'fill-color': '#3b82f6', 'fill-opacity': 0.35 },\r\n filter: ['==', ['get', 'type'], 'site'],\r\n}\r\n\r\nconst outlineLayer: LayerProps = {\r\n id: SITE_OUTLINE_ID,\r\n type: 'line',\r\n layout: { 'line-cap': 'round', 'line-join': 'round' },\r\n paint: { 'line-color': '#1c4587', 'line-width': 2 },\r\n filter: ['==', ['get', 'type'], 'site'],\r\n}\r\n\r\nconst labelLayer: LayerProps = {\r\n id: SITE_LABEL_ID,\r\n type: 'symbol',\r\n layout: {\r\n 'text-field': ['get', 'name'],\r\n 'text-font': ['Inter'],\r\n 'text-size': 16,\r\n 'text-anchor': 'center',\r\n 'text-allow-overlap': false,\r\n },\r\n paint: {\r\n 'text-color': '#ffffff',\r\n 'text-halo-color': '#000000',\r\n 'text-halo-width': 1.5,\r\n },\r\n filter: ['==', ['get', 'type'], 'site-label'],\r\n}\r\n\r\nexport const SiteLayer = () => {\r\n const { state: mapState } = React.useContext(MapContext)\r\n const { map, mapClickManager } = mapState.map\r\n const { state: mapSitesState, dispatch } = useMapSitesContext()\r\n const { sites, editingSiteId } = mapSitesState.mapSites\r\n\r\n const { ability } = usePermissions()\r\n const canUpdate = ability.can('update', 'Site')\r\n const canDelete = ability.can('delete', 'Site')\r\n const canRead = ability.can('read', 'Site')\r\n\r\n const { dispatch: menusDispatch, setSelectedSite, setView } = useMenusContext()\r\n\r\n const [menu, setMenu] = React.useState<{ x: number, y: number, siteId: number } | null>(null)\r\n\r\n // The site the user is currently acting on (menu open) or editing.\r\n const activeSiteId = menu?.siteId ?? editingSiteId ?? null\r\n const { updateSite } = useSite(activeSiteId ? String(activeSiteId) : '')\r\n const { deleteSite } = useDeleteSite(activeSiteId ?? undefined)\r\n const { deleteFile } = useDeleteFile(undefined, activeSiteId ?? undefined)\r\n\r\n const menuSite = menu ? sites.find(s => s.id === menu.siteId) ?? null : null\r\n\r\n // Live mirrors so the once-bound map click handlers read current values.\r\n const sitesRef = React.useRef(sites)\r\n sitesRef.current = sites\r\n const editingSiteIdRef = React.useRef(editingSiteId)\r\n editingSiteIdRef.current = editingSiteId\r\n\r\n // Build the rendered FeatureCollection: a polygon + a single centroid label\r\n // per shown site.\r\n const featureCollection = React.useMemo<GeoJSON.FeatureCollection>(() => {\r\n const features: GeoJSON.Feature[] = []\r\n for (const s of sites) {\r\n if (s.ring.length < 3) continue\r\n features.push({\r\n type: 'Feature',\r\n geometry: { type: 'Polygon', coordinates: [[...s.ring, s.ring[0]]] },\r\n properties: { type: 'site', siteId: s.id, name: s.name },\r\n })\r\n features.push({\r\n type: 'Feature',\r\n geometry: { type: 'Point', coordinates: polygonCentroid(s.ring) },\r\n properties: { type: 'site-label', siteId: s.id, name: s.name },\r\n })\r\n }\r\n return { type: 'FeatureCollection', features }\r\n }, [sites])\r\n\r\n // Lowest-priority click handler: opens the site menu only when no other\r\n // interactive layer was hit at the click point.\r\n React.useEffect(() => {\r\n if (!map || !mapClickManager) return\r\n\r\n const handleSiteClick: ClickCallback = (e, features: MapGeoJSONFeature[]) => {\r\n // While editing a shape, fill clicks are for adding vertices (see the\r\n // edit-click effect), not for (re)opening the menu.\r\n if (editingSiteIdRef.current != null) return\r\n const feature = features?.[0]\r\n const siteId = Number(feature?.properties?.siteId)\r\n if (!siteId || Number.isNaN(siteId)) return\r\n const native = e.originalEvent as MouseEvent | undefined\r\n setMenu({\r\n x: native?.clientX ?? e.point.x,\r\n y: native?.clientY ?? e.point.y,\r\n siteId,\r\n })\r\n }\r\n\r\n const onEnter = () => { map.getCanvas().style.cursor = 'pointer' }\r\n const onLeave = () => { map.getCanvas().style.cursor = '' }\r\n\r\n mapClickManager.register(SITE_FILL_ID, MapLayerClickPriority.SiteLayerClickPriority, handleSiteClick)\r\n map.on('mouseenter', SITE_FILL_ID, onEnter)\r\n map.on('mouseleave', SITE_FILL_ID, onLeave)\r\n\r\n return () => {\r\n mapClickManager.unregister(SITE_FILL_ID)\r\n map.off('mouseenter', SITE_FILL_ID, onEnter)\r\n map.off('mouseleave', SITE_FILL_ID, onLeave)\r\n }\r\n }, [map, mapClickManager])\r\n\r\n const updateVertex = (index: number, lng: number, lat: number) => {\r\n if (editingSiteId == null) return\r\n const s = sites.find(x => x.id === editingSiteId)\r\n if (!s) return\r\n const ring = s.ring.map((p, i) => (i === index ? [lng, lat] as [number, number] : p))\r\n dispatch({ type: 'UPDATE_SITE_RING', payload: { id: editingSiteId, ring } })\r\n }\r\n\r\n // Double-click a vertex to delete it (a polygon keeps at least 3 corners).\r\n const deleteVertex = (index: number) => {\r\n if (editingSiteId == null) return\r\n const s = sites.find(x => x.id === editingSiteId)\r\n if (!s) return\r\n if (s.ring.length <= MIN_RING_POINTS) {\r\n toast.warning('A site needs at least 3 points.')\r\n return\r\n }\r\n const ring = s.ring.filter((_, i) => i !== index)\r\n dispatch({ type: 'UPDATE_SITE_RING', payload: { id: editingSiteId, ring } })\r\n }\r\n\r\n // While editing, a click on an edge (not a vertex) inserts a new vertex there.\r\n React.useEffect(() => {\r\n if (!map || editingSiteId == null) return\r\n\r\n const onEditClick = (e: maplibregl.MapMouseEvent) => {\r\n const site = sitesRef.current.find(s => s.id === editingSiteId)\r\n const ring = site?.ring\r\n if (!ring || ring.length < 2) return\r\n\r\n const click = e.point\r\n // Ignore clicks on/near an existing vertex — those drag (or, on a\r\n // double-click, delete) via the markers.\r\n for (const v of ring) {\r\n const vp = map.project(v as [number, number])\r\n if (Math.hypot(vp.x - click.x, vp.y - click.y) <= VERTEX_HIT_PX) return\r\n }\r\n\r\n // Find the nearest edge segment in screen space.\r\n let bestDist = Infinity\r\n let bestIdx = -1\r\n for (let i = 0; i < ring.length; i++) {\r\n const a = map.project(ring[i] as [number, number])\r\n const b = map.project(ring[(i + 1) % ring.length] as [number, number])\r\n const d = pointToSegmentDistance(click.x, click.y, a.x, a.y, b.x, b.y)\r\n if (d < bestDist) { bestDist = d; bestIdx = i }\r\n }\r\n\r\n if (bestIdx >= 0 && bestDist <= EDGE_HIT_PX) {\r\n const next = [...ring]\r\n next.splice(bestIdx + 1, 0, [e.lngLat.lng, e.lngLat.lat])\r\n dispatch({ type: 'UPDATE_SITE_RING', payload: { id: editingSiteId, ring: next } })\r\n }\r\n }\r\n\r\n // Avoid the map zooming when a vertex is double-clicked to delete it.\r\n map.doubleClickZoom.disable()\r\n map.on('click', onEditClick)\r\n return () => {\r\n map.off('click', onEditClick)\r\n map.doubleClickZoom.enable()\r\n }\r\n }, [map, editingSiteId, dispatch])\r\n\r\n const handleRename = async (name: string) => {\r\n if (!menu) return\r\n dispatch({ type: 'UPDATE_SITE_NAME', payload: { id: menu.siteId, name } })\r\n try {\r\n await updateSite({ siteName: name })\r\n }\r\n catch {\r\n toast.error('Failed to rename the site.')\r\n }\r\n }\r\n\r\n const handleToggleEdit = async () => {\r\n if (editingSiteId === activeSiteId && activeSiteId != null) {\r\n // Finishing an edit: persist the new geometry + centroid.\r\n const s = sites.find(x => x.id === activeSiteId)\r\n dispatch({ type: 'SET_EDITING_SITE', payload: { id: null } })\r\n if (s?.assetId && s.ring.length >= 3) {\r\n const toastId = toast.loading('Saving site shape…')\r\n try {\r\n await uploadGeoJsonToAsset(s.assetId, s.ring, s.name)\r\n const c = polygonCentroid(s.ring)\r\n await updateSite({ siteLongitude: c[0], siteLatitude: c[1] })\r\n toast.success('Site shape saved.', { id: toastId })\r\n }\r\n catch {\r\n toast.error('Failed to save the site shape.', { id: toastId })\r\n }\r\n }\r\n }\r\n else {\r\n // Keep the menu open so the name can be edited alongside the vertices.\r\n dispatch({ type: 'SET_EDITING_SITE', payload: { id: activeSiteId } })\r\n }\r\n }\r\n\r\n const handleHide = () => {\r\n if (!menu) return\r\n dispatch({ type: 'HIDE_SITE', payload: { id: menu.siteId } })\r\n setMenu(null)\r\n }\r\n\r\n const handleInfo = () => {\r\n if (!menu) return\r\n const s = sites.find(x => x.id === menu.siteId)\r\n setSelectedSite({ id: menu.siteId, siteName: s?.name } as Site)\r\n setView('detail')\r\n menusDispatch({ type: 'SET_VIEWER', payload: { currentViewer: ViewerNames.sites } })\r\n setMenu(null)\r\n }\r\n\r\n const handleDelete = async () => {\r\n if (!menu) return\r\n const id = menu.siteId\r\n const s = sites.find(x => x.id === id)\r\n try {\r\n await deleteSite(id)\r\n if (s?.fileId) {\r\n try { await deleteFile(s.fileId) }\r\n catch { /* geometry file orphaned; site itself is gone */ }\r\n }\r\n dispatch({ type: 'HIDE_SITE', payload: { id } })\r\n setMenu(null)\r\n toast.success('Site deleted.')\r\n }\r\n catch {\r\n toast.error('Failed to delete the site.')\r\n }\r\n }\r\n\r\n const editingSite = editingSiteId != null ? sites.find(s => s.id === editingSiteId) ?? null : null\r\n\r\n return (\r\n <>\r\n <Source id=\"sites-source\" type=\"geojson\" data={featureCollection}>\r\n <Layer {...fillLayer} />\r\n <Layer {...outlineLayer} />\r\n <Layer {...labelLayer} />\r\n </Source>\r\n\r\n {/* Draggable vertex handles while editing a site's shape */}\r\n {editingSite?.ring.map((vertex, index) => (\r\n <Marker\r\n key={`${editingSite.id}-vertex-${index}`}\r\n longitude={vertex[0]}\r\n latitude={vertex[1]}\r\n draggable\r\n onDrag={(e: { lngLat: { lng: number, lat: number } }) =>\r\n updateVertex(index, e.lngLat.lng, e.lngLat.lat)}\r\n >\r\n <div\r\n title=\"Drag to move · double-click to delete\"\r\n onDoubleClick={(ev) => { ev.stopPropagation(); deleteVertex(index) }}\r\n style={{\r\n width: 14,\r\n height: 14,\r\n borderRadius: '50%',\r\n background: '#22c55e',\r\n border: '2px solid #ffffff',\r\n boxShadow: '0 0 0 1px #15803d',\r\n cursor: 'grab',\r\n }}\r\n />\r\n </Marker>\r\n ))}\r\n\r\n {menu && menuSite && (\r\n <SiteContextMenu\r\n x={menu.x}\r\n y={menu.y}\r\n site={menuSite}\r\n isEditing={editingSiteId === menu.siteId}\r\n canUpdate={canUpdate}\r\n canDelete={canDelete}\r\n canRead={canRead}\r\n onClose={() => setMenu(null)}\r\n onRename={handleRename}\r\n onToggleEdit={handleToggleEdit}\r\n onHide={handleHide}\r\n onInfo={handleInfo}\r\n onDelete={handleDelete}\r\n />\r\n )}\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Dataset } from '../../../../../../../types/datasetTypes';
|
|
2
1
|
import { type Site } from '../../../../../../../types/dbTypes';
|
|
2
|
+
import type { Dataset } from '../../../../../../../types/datasetTypes';
|
|
3
3
|
export declare function createSitesDataset(sites: Site[], name: string): Dataset;
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAA;AAG5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAA;AAEtE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAoDvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { DatasetGroup, type Site } from '../../../../../../../types/dbTypes'\r\nimport { layerColorByName } from '../../../../utils/stringToColour'\r\n\r\nimport type { Dataset } from '../../../../../../../types/datasetTypes'\r\n\r\nexport function createSitesDataset(sites: Site[], name: string): Dataset {\r\n const layerColor = layerColorByName(name)\r\n\r\n const getFields = async () => [\r\n { name: 'siteType', type: 'string' },\r\n { name: 'siteUnitsTotal', type: 'number' },\r\n { name: 'siteTotalSqft', type: 'number' },\r\n { name: 'siteStoreyNum', type: 'number' },\r\n ]\r\n\r\n const getFeatures = async () => ({\r\n type: 'FeatureCollection',\r\n features: sites\r\n .filter(s => s.siteLongitude != null && s.siteLatitude != null)\r\n .map(site => ({\r\n type: 'Feature',\r\n\r\n geometry: {\r\n type: 'Point',\r\n coordinates: [site.siteLongitude, site.siteLatitude],\r\n },\r\n properties: {\r\n id: site.id,\r\n dbId: site.id,\r\n isBuilding: true,\r\n isDbBuilding: true,\r\n name: site.siteName,\r\n // type: site.siteType,\r\n // unitsTotal: site.siteUnitsTotal,\r\n // totalSqft: site.siteTotalSqft,\r\n // storeyNum: site.siteStoreyNum,\r\n },\r\n })),\r\n } as import('geojson').FeatureCollection)\r\n\r\n return {\r\n id: name.toLowerCase().replaceAll(/\\s+/g, '_'),\r\n name,\r\n type: 'sites',\r\n visible: true,\r\n total: sites.length,\r\n getFields,\r\n getFeatures,\r\n layerColor,\r\n dataManagementSystem: 'other',\r\n datasetType: 'GeoJSON',\r\n countrySubdivision: undefined,\r\n municipality: undefined,\r\n publisher: 'EnviroCentre',\r\n keywords: ['sites', 'Database', 'GeoJSON'],\r\n group: DatasetGroup.Organizational,\r\n }\r\n}\r\n"],"mappings":"AAGA,SAAS,oBAA+B;AACxC,SAAS,wBAAwB;AAI1B,SAAS,mBAAmB,OAAe,MAAuB;AACvE,QAAM,aAAa,iBAAiB,IAAI;AAExC,QAAM,YAAY,YAAY;AAAA,IAC5B,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,IACnC,EAAE,MAAM,kBAAkB,MAAM,SAAS;AAAA,IACzC,EAAE,MAAM,iBAAiB,MAAM,SAAS;AAAA,IACxC,EAAE,MAAM,iBAAiB,MAAM,SAAS;AAAA,EAC1C;AAEA,QAAM,cAAc,aAAa;AAAA,IAC/B,MAAM;AAAA,IACN,UAAU,MACP,OAAO,OAAK,EAAE,iBAAiB,QAAQ,EAAE,gBAAgB,IAAI,EAC7D,IAAI,WAAS;AAAA,MACZ,MAAM;AAAA,MAEN,UAAU;AAAA,QACR,MAAM;AAAA,QACN,aAAa,CAAC,KAAK,eAAe,KAAK,YAAY;AAAA,MACrD;AAAA,MACA,YAAY;AAAA,QACV,IAAI,KAAK;AAAA,QACT,MAAM,KAAK;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,MAKb;AAAA,IACF,EAAE;AAAA,EACN;AAEA,SAAO;AAAA,IACL,IAAI,KAAK,YAAY,EAAE,WAAW,QAAQ,GAAG;AAAA,IAC7C;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU,CAAC,SAAS,YAAY,SAAS;AAAA,IACzC,OAAO,aAAa;AAAA,EACtB;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"siteGeometry.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"siteGeometry.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;AAErC,8EAA8E;AAC9E,eAAO,MAAM,eAAe,GAAI,KAAK,IAAI,KAAG,CAAC,MAAM,EAAE,MAAM,CAgB1D,CAAA;AAED,sEAAsE;AACtE,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAS1E,CAAA;AAED,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,GACjC,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,EAAE,IAAI,MAAM,KACrE,MAOF,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,GAAI,MAAM,IAAI,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,iBASzE,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAClC,MAAM,IAAI,EACV,OAAO,CAAC,EAAE,EACV,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,KAC9C,CAAC,EAYH,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,GAAG,KAAG,IAAI,GAAG,IA0BjD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAe/E,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,MAAM,IAAI,EACV,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,CASd,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { booleanPointInPolygon, polygon as turfPolygon } from '@turf/turf'\r\nimport { uploadToPresignedUrl } from '../../../tools/AddTools/AddFile/utils/uploadToPresignedURLS'\r\n\r\nexport type Ring = [number, number][]\r\n\r\n/** Area-weighted centroid of a polygon ring; used to place a single label. */\r\nexport const polygonCentroid = (pts: Ring): [number, number] => {\r\n let x = 0, y = 0, area = 0\r\n for (let i = 0; i < pts.length; i++) {\r\n const [x0, y0] = pts[i]\r\n const [x1, y1] = pts[(i + 1) % pts.length]\r\n const cross = x0 * y1 - x1 * y0\r\n area += cross\r\n x += (x0 + x1) * cross\r\n y += (y0 + y1) * cross\r\n }\r\n area *= 0.5\r\n if (area === 0) {\r\n const n = pts.length || 1\r\n return [pts.reduce((s, p) => s + p[0], 0) / n, pts.reduce((s, p) => s + p[1], 0) / n]\r\n }\r\n return [x / (6 * area), y / (6 * area)]\r\n}\r\n\r\n/** Bounding box of a ring as [[minLng, minLat], [maxLng, maxLat]]. */\r\nexport const ringBounds = (ring: Ring): [[number, number], [number, number]] => {\r\n let minLng = Infinity, minLat = Infinity, maxLng = -Infinity, maxLat = -Infinity\r\n for (const [lng, lat] of ring) {\r\n if (lng < minLng) minLng = lng\r\n if (lat < minLat) minLat = lat\r\n if (lng > maxLng) maxLng = lng\r\n if (lat > maxLat) maxLat = lat\r\n }\r\n return [[minLng, minLat], [maxLng, maxLat]]\r\n}\r\n\r\n/** Shortest distance from point (px,py) to the segment (ax,ay)-(bx,by). */\r\nexport const pointToSegmentDistance = (\r\n px: number, py: number, ax: number, ay: number, bx: number, by: number,\r\n): number => {\r\n const dx = bx - ax\r\n const dy = by - ay\r\n const lenSq = dx * dx + dy * dy\r\n let t = lenSq === 0 ? 0 : ((px - ax) * dx + (py - ay) * dy) / lenSq\r\n t = Math.max(0, Math.min(1, t))\r\n return Math.hypot(px - (ax + t * dx), py - (ay + t * dy))\r\n}\r\n\r\n/** Build the GeoJSON FeatureCollection stored in minio for a site polygon. */\r\nexport const ringToFeatureCollection = (ring: Ring, name: string): GeoJSON.FeatureCollection => ({\r\n type: 'FeatureCollection',\r\n features: [\r\n {\r\n type: 'Feature',\r\n geometry: { type: 'Polygon', coordinates: [[...ring, ring[0]]] },\r\n properties: { type: 'site', name },\r\n },\r\n ],\r\n})\r\n\r\n/**\r\n * Return the items whose [lng, lat] point falls inside the polygon ring.\r\n * The Turf polygon is built once, so this is cheap for many points.\r\n */\r\nexport const filterPointsInRing = <T>(\r\n ring: Ring,\r\n items: T[],\r\n getLngLat: (item: T) => [number, number] | null,\r\n): T[] => {\r\n if (ring.length < 3) return []\r\n try {\r\n const poly = turfPolygon([[...ring, ring[0]]])\r\n return (items ?? []).filter((item) => {\r\n const c = getLngLat(item)\r\n return c != null && booleanPointInPolygon(c, poly)\r\n })\r\n }\r\n catch {\r\n return []\r\n }\r\n}\r\n\r\n/**\r\n * Extract the outer ring (open, no repeated closing point) from a stored\r\n * GeoJSON value, accepting a FeatureCollection, Feature, or bare geometry.\r\n */\r\nexport const ringFromGeoJson = (geo: any): Ring | null => {\r\n const geometry = (() => {\r\n if (!geo) return null\r\n if (geo.type === 'FeatureCollection') {\r\n const f = (geo.features ?? []).find(\r\n (feat: any) => feat?.geometry?.type === 'Polygon' || feat?.geometry?.type === 'MultiPolygon',\r\n )\r\n return f?.geometry ?? null\r\n }\r\n if (geo.type === 'Feature') return geo.geometry ?? null\r\n return geo\r\n })()\r\n\r\n if (!geometry) return null\r\n\r\n let coords: any\r\n if (geometry.type === 'Polygon') coords = geometry.coordinates?.[0]\r\n else if (geometry.type === 'MultiPolygon') coords = geometry.coordinates?.[0]?.[0]\r\n if (!Array.isArray(coords) || coords.length < 3) return null\r\n\r\n const ring: Ring = coords.map((c: number[]) => [c[0], c[1]] as [number, number])\r\n // Drop the closing point if it duplicates the first.\r\n const first = ring[0]\r\n const last = ring[ring.length - 1]\r\n if (ring.length > 1 && first[0] === last[0] && first[1] === last[1]) ring.pop()\r\n return ring\r\n}\r\n\r\n/**\r\n * Load a site's saved boundary ring from minio (via its attached geometry\r\n * file). Returns null if the site has no saved boundary or it can't be read.\r\n */\r\nexport const fetchSiteBoundaryRing = async (siteId: number): Promise<Ring | null> => {\r\n try {\r\n const res = await fetch(`/api/files/site/${siteId}`)\r\n if (!res.ok) return null\r\n const { files } = await res.json()\r\n const geomFile = (files ?? []).find((f: any) => f.tag === 'site-geometry' && f.url)\r\n ?? (files ?? []).find((f: any) =>\r\n (f.extension === 'geojson' || (f.mimeType && String(f.mimeType).includes('geo+json'))) && f.url)\r\n if (!geomFile?.url) return null\r\n const geo = await fetch(geomFile.url).then(r => r.json())\r\n return ringFromGeoJson(geo)\r\n }\r\n catch {\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * (Over)write a site's GeoJSON object in minio under the given asset key.\r\n * Mirrors the presigned-upload flow used by FileAdder/DatasetAdder.\r\n */\r\nexport const uploadGeoJsonToAsset = async (\r\n assetId: string,\r\n ring: Ring,\r\n name: string,\r\n): Promise<void> => {\r\n const fc = ringToFeatureCollection(ring, name)\r\n const file = new File([JSON.stringify(fc)], `${name || 'site'}.geojson`, {\r\n type: 'application/geo+json',\r\n })\r\n const presRes = await fetch(`/api/presigned-url-upload?asset=${encodeURIComponent(assetId)}`)\r\n if (!presRes.ok) throw new Error('Failed to get an upload URL')\r\n const { presignedUrl } = await presRes.json()\r\n await uploadToPresignedUrl(presignedUrl, file)\r\n}\r\n"],"mappings":"AAGA,SAAS,uBAAuB,WAAW,mBAAmB;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { booleanPointInPolygon, polygon as turfPolygon } from '@turf/turf'\r\n\r\nimport { uploadToPresignedUrl } from '../../../tools/AddTools/AddFile/utils/uploadToPresignedURLS'\r\n\r\nexport type Ring = [number, number][]\r\n\r\n/** Area-weighted centroid of a polygon ring; used to place a single label. */\r\nexport const polygonCentroid = (pts: Ring): [number, number] => {\r\n let x = 0, y = 0, area = 0\r\n for (let i = 0; i < pts.length; i++) {\r\n const [x0, y0] = pts[i]\r\n const [x1, y1] = pts[(i + 1) % pts.length]\r\n const cross = x0 * y1 - x1 * y0\r\n area += cross\r\n x += (x0 + x1) * cross\r\n y += (y0 + y1) * cross\r\n }\r\n area *= 0.5\r\n if (area === 0) {\r\n const n = pts.length || 1\r\n return [pts.reduce((s, p) => s + p[0], 0) / n, pts.reduce((s, p) => s + p[1], 0) / n]\r\n }\r\n return [x / (6 * area), y / (6 * area)]\r\n}\r\n\r\n/** Bounding box of a ring as [[minLng, minLat], [maxLng, maxLat]]. */\r\nexport const ringBounds = (ring: Ring): [[number, number], [number, number]] => {\r\n let minLng = Infinity, minLat = Infinity, maxLng = -Infinity, maxLat = -Infinity\r\n for (const [lng, lat] of ring) {\r\n if (lng < minLng) minLng = lng\r\n if (lat < minLat) minLat = lat\r\n if (lng > maxLng) maxLng = lng\r\n if (lat > maxLat) maxLat = lat\r\n }\r\n return [[minLng, minLat], [maxLng, maxLat]]\r\n}\r\n\r\n/** Shortest distance from point (px,py) to the segment (ax,ay)-(bx,by). */\r\nexport const pointToSegmentDistance = (\r\n px: number, py: number, ax: number, ay: number, bx: number, by: number,\r\n): number => {\r\n const dx = bx - ax\r\n const dy = by - ay\r\n const lenSq = dx * dx + dy * dy\r\n let t = lenSq === 0 ? 0 : ((px - ax) * dx + (py - ay) * dy) / lenSq\r\n t = Math.max(0, Math.min(1, t))\r\n return Math.hypot(px - (ax + t * dx), py - (ay + t * dy))\r\n}\r\n\r\n/** Build the GeoJSON FeatureCollection stored in minio for a site polygon. */\r\nexport const ringToFeatureCollection = (ring: Ring, name: string): GeoJSON.FeatureCollection => ({\r\n type: 'FeatureCollection',\r\n features: [\r\n {\r\n type: 'Feature',\r\n geometry: { type: 'Polygon', coordinates: [[...ring, ring[0]]] },\r\n properties: { type: 'site', name },\r\n },\r\n ],\r\n})\r\n\r\n/**\r\n * Return the items whose [lng, lat] point falls inside the polygon ring.\r\n * The Turf polygon is built once, so this is cheap for many points.\r\n */\r\nexport const filterPointsInRing = <T>(\r\n ring: Ring,\r\n items: T[],\r\n getLngLat: (item: T) => [number, number] | null,\r\n): T[] => {\r\n if (ring.length < 3) return []\r\n try {\r\n const poly = turfPolygon([[...ring, ring[0]]])\r\n return (items ?? []).filter((item) => {\r\n const c = getLngLat(item)\r\n return c != null && booleanPointInPolygon(c, poly)\r\n })\r\n }\r\n catch {\r\n return []\r\n }\r\n}\r\n\r\n/**\r\n * Extract the outer ring (open, no repeated closing point) from a stored\r\n * GeoJSON value, accepting a FeatureCollection, Feature, or bare geometry.\r\n */\r\nexport const ringFromGeoJson = (geo: any): Ring | null => {\r\n const geometry = (() => {\r\n if (!geo) return null\r\n if (geo.type === 'FeatureCollection') {\r\n const f = (geo.features ?? []).find(\r\n (feat: any) => feat?.geometry?.type === 'Polygon' || feat?.geometry?.type === 'MultiPolygon',\r\n )\r\n return f?.geometry ?? null\r\n }\r\n if (geo.type === 'Feature') return geo.geometry ?? null\r\n return geo\r\n })()\r\n\r\n if (!geometry) return null\r\n\r\n let coords: any\r\n if (geometry.type === 'Polygon') coords = geometry.coordinates?.[0]\r\n else if (geometry.type === 'MultiPolygon') coords = geometry.coordinates?.[0]?.[0]\r\n if (!Array.isArray(coords) || coords.length < 3) return null\r\n\r\n const ring: Ring = coords.map((c: number[]) => [c[0], c[1]] as [number, number])\r\n // Drop the closing point if it duplicates the first.\r\n const first = ring[0]\r\n const last = ring[ring.length - 1]\r\n if (ring.length > 1 && first[0] === last[0] && first[1] === last[1]) ring.pop()\r\n return ring\r\n}\r\n\r\n/**\r\n * Load a site's saved boundary ring from minio (via its attached geometry\r\n * file). Returns null if the site has no saved boundary or it can't be read.\r\n */\r\nexport const fetchSiteBoundaryRing = async (siteId: number): Promise<Ring | null> => {\r\n try {\r\n const res = await fetch(`/api/files/site/${siteId}`)\r\n if (!res.ok) return null\r\n const { files } = await res.json()\r\n const geomFile = (files ?? []).find((f: any) => f.tag === 'site-geometry' && f.url)\r\n ?? (files ?? []).find((f: any) =>\r\n (f.extension === 'geojson' || (f.mimeType && String(f.mimeType).includes('geo+json'))) && f.url)\r\n if (!geomFile?.url) return null\r\n const geo = await fetch(geomFile.url).then(r => r.json())\r\n return ringFromGeoJson(geo)\r\n }\r\n catch {\r\n return null\r\n }\r\n}\r\n\r\n/**\r\n * (Over)write a site's GeoJSON object in minio under the given asset key.\r\n * Mirrors the presigned-upload flow used by FileAdder/DatasetAdder.\r\n */\r\nexport const uploadGeoJsonToAsset = async (\r\n assetId: string,\r\n ring: Ring,\r\n name: string,\r\n): Promise<void> => {\r\n const fc = ringToFeatureCollection(ring, name)\r\n const file = new File([JSON.stringify(fc)], `${name || 'site'}.geojson`, {\r\n type: 'application/geo+json',\r\n })\r\n const presRes = await fetch(`/api/presigned-url-upload?asset=${encodeURIComponent(assetId)}`)\r\n if (!presRes.ok) throw new Error('Failed to get an upload URL')\r\n const { presignedUrl } = await presRes.json()\r\n await uploadToPresignedUrl(presignedUrl, file)\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
|
package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useShowSitesOnMap.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useShowSitesOnMap.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.ts"],"names":[],"mappings":"AAQA,OAAO,EAAe,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAA;AAI3E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,YAMQ,IAAI,EAAE,SAAS;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,mBAmDjF"}
|
package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.ts"],"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\nimport { MapContext, useMenusContext, useMapSitesContext } from '../../../../../../../store'\r\nimport { ViewerNames, type Site } from '../../../../../../../types/dbTypes'\r\nimport { ringFromGeoJson, ringBounds, type Ring } from './siteGeometry'\r\n\r\n/**\r\n * Shared \"show site(s) on the map\" action used by the sites table row menu and\r\n * the \"View All on Map\" header button. It switches to the map viewer FIRST (so\r\n * the action always navigates, even if a boundary fails to load), then loads\r\n * each site's polygon GeoJSON from minio, hands it to the SiteLayer via the\r\n * MapSites store, and fits the camera to the loaded boundaries. Sites without a\r\n * saved boundary fall back to flying to their point.\r\n */\r\nexport function useShowSitesOnMap() {\r\n const { dispatch: mapSitesDispatch } = useMapSitesContext()\r\n const { dispatch: menusDispatch } = useMenusContext()\r\n const { state: mapState } = React.useContext(MapContext)\r\n const { map } = mapState.map\r\n\r\n return React.useCallback(async (sites: Site[], opts?: { switchViewer?: boolean }) => {\r\n if (opts?.switchViewer ?? true) {\r\n menusDispatch({ type: 'SET_VIEWER', payload: { currentViewer: ViewerNames.map } })\r\n }\r\n\r\n const valid = sites.filter(s => s?.id)\r\n const rings = await Promise.all(valid.map(async (site): Promise<Ring | null> => {\r\n try {\r\n const res = await fetch(`/api/files/site/${site.id}`)\r\n if (!res.ok) return null\r\n const { files } = await res.json()\r\n // Prefer the file tagged as the site boundary; fall back to any geojson\r\n // attachment so older sites (saved before tagging) still resolve.\r\n const geomFile = (files ?? []).find((f: any) => f.tag === 'site-geometry' && f.url)\r\n ?? (files ?? []).find((f: any) =>\r\n (f.extension === 'geojson' || (f.mimeType && String(f.mimeType).includes('geo+json'))) && f.url)\r\n if (!geomFile?.url) return null\r\n const geo = await fetch(geomFile.url).then(r => r.json())\r\n const ring = ringFromGeoJson(geo)\r\n if (!ring) return null\r\n mapSitesDispatch({\r\n type: 'SHOW_SITE',\r\n payload: {\r\n site: {\r\n id: site.id,\r\n name: site.siteName ?? 'Site',\r\n ring,\r\n assetId: geomFile.assetId,\r\n fileId: geomFile.id,\r\n },\r\n },\r\n })\r\n return ring\r\n }\r\n catch {\r\n return null\r\n }\r\n }))\r\n\r\n if (!map) return\r\n const foundRings = rings.filter((r): r is Ring => !!r)\r\n if (foundRings.length > 0) {\r\n // Fit to the combined extent of every loaded boundary.\r\n map.fitBounds(ringBounds(foundRings.flat() as Ring), { padding: 60, duration: 1000 })\r\n }\r\n else {\r\n // No boundaries found — fly to the first site that has a point.\r\n const pt = valid.find(s => typeof s.siteLongitude === 'number' && typeof s.siteLatitude === 'number')\r\n if (pt) map.flyTo({ center: [pt.siteLongitude as number, pt.siteLatitude as number], zoom: 18, duration: 1000 })\r\n }\r\n }, [map, mapSitesDispatch, menusDispatch])\r\n}\r\n"],"mappings":";AAKA,YAAY,WAAW;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.ts"],"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 { MapContext, useMenusContext, useMapSitesContext } from '../../../../../../../store'\r\nimport { ViewerNames, type Site } from '../../../../../../../types/dbTypes'\r\n\r\nimport { ringFromGeoJson, ringBounds, type Ring } from './siteGeometry'\r\n\r\n/**\r\n * Shared \"show site(s) on the map\" action used by the sites table row menu and\r\n * the \"View All on Map\" header button. It switches to the map viewer FIRST (so\r\n * the action always navigates, even if a boundary fails to load), then loads\r\n * each site's polygon GeoJSON from minio, hands it to the SiteLayer via the\r\n * MapSites store, and fits the camera to the loaded boundaries. Sites without a\r\n * saved boundary fall back to flying to their point.\r\n */\r\nexport function useShowSitesOnMap() {\r\n const { dispatch: mapSitesDispatch } = useMapSitesContext()\r\n const { dispatch: menusDispatch } = useMenusContext()\r\n const { state: mapState } = React.useContext(MapContext)\r\n const { map } = mapState.map\r\n\r\n return React.useCallback(async (sites: Site[], opts?: { switchViewer?: boolean }) => {\r\n if (opts?.switchViewer ?? true) {\r\n menusDispatch({ type: 'SET_VIEWER', payload: { currentViewer: ViewerNames.map } })\r\n }\r\n\r\n const valid = sites.filter(s => s?.id)\r\n const rings = await Promise.all(valid.map(async (site): Promise<Ring | null> => {\r\n try {\r\n const res = await fetch(`/api/files/site/${site.id}`)\r\n if (!res.ok) return null\r\n const { files } = await res.json()\r\n // Prefer the file tagged as the site boundary; fall back to any geojson\r\n // attachment so older sites (saved before tagging) still resolve.\r\n const geomFile = (files ?? []).find((f: any) => f.tag === 'site-geometry' && f.url)\r\n ?? (files ?? []).find((f: any) =>\r\n (f.extension === 'geojson' || (f.mimeType && String(f.mimeType).includes('geo+json'))) && f.url)\r\n if (!geomFile?.url) return null\r\n const geo = await fetch(geomFile.url).then(r => r.json())\r\n const ring = ringFromGeoJson(geo)\r\n if (!ring) return null\r\n mapSitesDispatch({\r\n type: 'SHOW_SITE',\r\n payload: {\r\n site: {\r\n id: site.id,\r\n name: site.siteName ?? 'Site',\r\n ring,\r\n assetId: geomFile.assetId,\r\n fileId: geomFile.id,\r\n },\r\n },\r\n })\r\n return ring\r\n }\r\n catch {\r\n return null\r\n }\r\n }))\r\n\r\n if (!map) return\r\n const foundRings = rings.filter((r): r is Ring => !!r)\r\n if (foundRings.length > 0) {\r\n // Fit to the combined extent of every loaded boundary.\r\n map.fitBounds(ringBounds(foundRings.flat() as Ring), { padding: 60, duration: 1000 })\r\n }\r\n else {\r\n // No boundaries found — fly to the first site that has a point.\r\n const pt = valid.find(s => typeof s.siteLongitude === 'number' && typeof s.siteLatitude === 'number')\r\n if (pt) map.flyTo({ center: [pt.siteLongitude as number, pt.siteLatitude as number], zoom: 18, duration: 1000 })\r\n }\r\n }, [map, mapSitesDispatch, menusDispatch])\r\n}\r\n"],"mappings":";AAKA,YAAY,WAAW;AAEvB,SAAS,YAAY,iBAAiB,0BAA0B;AAChE,SAAS,mBAA8B;AAEvC,SAAS,iBAAiB,kBAA6B;AAUhD,SAAS,oBAAoB;AAClC,QAAM,EAAE,UAAU,iBAAiB,IAAI,mBAAmB;AAC1D,QAAM,EAAE,UAAU,cAAc,IAAI,gBAAgB;AACpD,QAAM,EAAE,OAAO,SAAS,IAAI,MAAM,WAAW,UAAU;AACvD,QAAM,EAAE,IAAI,IAAI,SAAS;AAEzB,SAAO,MAAM,YAAY,OAAO,OAAe,SAAsC;AA1BvF;AA2BI,SAAI,kCAAM,iBAAN,YAAsB,MAAM;AAC9B,oBAAc,EAAE,MAAM,cAAc,SAAS,EAAE,eAAe,YAAY,IAAI,EAAE,CAAC;AAAA,IACnF;AAEA,UAAM,QAAQ,MAAM,OAAO,OAAK,uBAAG,EAAE;AACrC,UAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM,IAAI,OAAO,SAA+B;AAhCpF,UAAAA,KAAA;AAiCM,UAAI;AACF,cAAM,MAAM,MAAM,MAAM,mBAAmB,KAAK,EAAE,EAAE;AACpD,YAAI,CAAC,IAAI,GAAI,QAAO;AACpB,cAAM,EAAE,MAAM,IAAI,MAAM,IAAI,KAAK;AAGjC,cAAM,YAAYA,OAAA,wBAAS,CAAC,GAAG,KAAK,CAAC,MAAW,EAAE,QAAQ,mBAAmB,EAAE,GAAG,MAAhE,OAAAA,OACZ,wBAAS,CAAC,GAAG,KAAK,CAAC,OACpB,EAAE,cAAc,aAAc,EAAE,YAAY,OAAO,EAAE,QAAQ,EAAE,SAAS,UAAU,MAAO,EAAE,GAAG;AACnG,YAAI,EAAC,qCAAU,KAAK,QAAO;AAC3B,cAAM,MAAM,MAAM,MAAM,SAAS,GAAG,EAAE,KAAK,OAAK,EAAE,KAAK,CAAC;AACxD,cAAM,OAAO,gBAAgB,GAAG;AAChC,YAAI,CAAC,KAAM,QAAO;AAClB,yBAAiB;AAAA,UACf,MAAM;AAAA,UACN,SAAS;AAAA,YACP,MAAM;AAAA,cACJ,IAAI,KAAK;AAAA,cACT,OAAM,UAAK,aAAL,YAAiB;AAAA,cACvB;AAAA,cACA,SAAS,SAAS;AAAA,cAClB,QAAQ,SAAS;AAAA,YACnB;AAAA,UACF;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACT,SACM;AACJ,eAAO;AAAA,MACT;AAAA,IACF,CAAC,CAAC;AAEF,QAAI,CAAC,IAAK;AACV,UAAM,aAAa,MAAM,OAAO,CAAC,MAAiB,CAAC,CAAC,CAAC;AACrD,QAAI,WAAW,SAAS,GAAG;AAEzB,UAAI,UAAU,WAAW,WAAW,KAAK,CAAS,GAAG,EAAE,SAAS,IAAI,UAAU,IAAK,CAAC;AAAA,IACtF,OACK;AAEH,YAAM,KAAK,MAAM,KAAK,OAAK,OAAO,EAAE,kBAAkB,YAAY,OAAO,EAAE,iBAAiB,QAAQ;AACpG,UAAI,GAAI,KAAI,MAAM,EAAE,QAAQ,CAAC,GAAG,eAAyB,GAAG,YAAsB,GAAG,MAAM,IAAI,UAAU,IAAK,CAAC;AAAA,IACjH;AAAA,EACF,GAAG,CAAC,KAAK,kBAAkB,aAAa,CAAC;AAC3C;","names":["_a"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { SidebarTabType } from '../../../../../store/Menus/reducer';
|
|
2
|
+
import type { SidebarTabType } from '../../../../../store/Menus/reducer';
|
|
3
3
|
interface TabSelectorProps {
|
|
4
4
|
activeTab: SidebarTabType;
|
|
5
5
|
onTabChangeAction: (tab: SidebarTabType) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabSelector.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/TabSelector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TabSelector.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/TabSelector.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAExE,UAAU,gBAAgB;IACxB,SAAS,EAAE,cAAc,CAAA;IACzB,iBAAiB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAA;CACjD;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,qBAuC7E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Separator } from "../../../../ui/Separator";
|
|
4
3
|
import { useTranslations } from "next-intl";
|
|
4
|
+
import { Separator } from "../../../../ui/Separator";
|
|
5
5
|
function TabSelector({ activeTab, onTabChangeAction }) {
|
|
6
6
|
const t = useTranslations("TabSelector");
|
|
7
7
|
const tabs = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/TabSelector.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
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/TabSelector.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 { useTranslations } from 'next-intl'\r\nimport * as React from 'react'\r\n\r\nimport { Separator } from '../../../../ui/Separator'\r\n\r\nimport type { SidebarTabType } from '../../../../../store/Menus/reducer'\r\n\r\ninterface TabSelectorProps {\r\n activeTab: SidebarTabType\r\n onTabChangeAction: (tab: SidebarTabType) => void\r\n}\r\n\r\nexport function TabSelector({ activeTab, onTabChangeAction }: TabSelectorProps) {\r\n // Translation\r\n const t = useTranslations('TabSelector')\r\n\r\n const tabs = [\r\n { id: 'file', label: t('fileLabel') },\r\n { id: 'layers', label: t('layersTitle') },\r\n { id: 'communication', label: t('communicationTitle') },\r\n { id: 'sensors', label: t('sensorsTitle') },\r\n { id: 'settings', label: t('settingsTitle') },\r\n ]\r\n\r\n return (\r\n <div>\r\n <Separator />\r\n\r\n <div className=\"px-4 py-3\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-1\">\r\n {tabs.map(tab => (\r\n <div\r\n key={tab.id}\r\n className={`px-3 py-2 rounded-md cursor-pointer transition-colors text-xs font-medium ${\r\n activeTab === tab.id\r\n ? 'bg-accent text-accent-foreground'\r\n : 'text-muted-foreground hover:text-foreground hover:bg-accent/50'\r\n }`}\r\n onClick={() => onTabChangeAction(tab.id as SidebarTabType)}\r\n >\r\n {tab.label}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <Separator />\r\n </div>\r\n )\r\n}\r\n"],"mappings":";AA8BI,SACE,KADF;AAzBJ,SAAS,uBAAuB;AAGhC,SAAS,iBAAiB;AASnB,SAAS,YAAY,EAAE,WAAW,kBAAkB,GAAqB;AAE9E,QAAM,IAAI,gBAAgB,aAAa;AAEvC,QAAM,OAAO;AAAA,IACX,EAAE,IAAI,QAAQ,OAAO,EAAE,WAAW,EAAE;AAAA,IACpC,EAAE,IAAI,UAAU,OAAO,EAAE,aAAa,EAAE;AAAA,IACxC,EAAE,IAAI,iBAAiB,OAAO,EAAE,oBAAoB,EAAE;AAAA,IACtD,EAAE,IAAI,WAAW,OAAO,EAAE,cAAc,EAAE;AAAA,IAC1C,EAAE,IAAI,YAAY,OAAO,EAAE,eAAe,EAAE;AAAA,EAC9C;AAEA,SACE,qBAAC,SACC;AAAA,wBAAC,aAAU;AAAA,IAEX,oBAAC,SAAI,WAAU,aACb,8BAAC,SAAI,WAAU,qCACb,8BAAC,SAAI,WAAU,2BACZ,eAAK,IAAI,SACR;AAAA,MAAC;AAAA;AAAA,QAEC,WAAW,6EACT,cAAc,IAAI,KACd,qCACA,gEACN;AAAA,QACA,SAAS,MAAM,kBAAkB,IAAI,EAAoB;AAAA,QAExD,cAAI;AAAA;AAAA,MARA,IAAI;AAAA,IASX,CACD,GACH,GACF,GACF;AAAA,IAEA,oBAAC,aAAU;AAAA,KACb;AAEJ;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Organization } from '../../../../../types/dbTypes';
|
|
2
|
+
import type { Organization } from '../../../../../types/dbTypes';
|
|
3
3
|
export declare function MapSidebar({ minioBaseUrl, martinBaseUrl, organization }: {
|
|
4
4
|
minioBaseUrl?: string;
|
|
5
5
|
martinBaseUrl?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEhE,wBAAgB,UAAU,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,qBA4BvJ"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import {
|
|
4
|
+
import { InfoSidebarContainer } from "../../../../../components/ui/InfoSidebar/Container";
|
|
5
5
|
import { MenusContext, usePermissions } from "../../../../../store";
|
|
6
|
+
import { CommunicationTab } from "./src/CommunicationTab";
|
|
6
7
|
import { FileTab } from "./src/FileTab";
|
|
7
8
|
import { LayersTab } from "./src/LayersTab";
|
|
8
|
-
import { SettingsTab } from "./src/SettingsTab";
|
|
9
|
-
import { InfoSidebarContainer } from "../../../../../components/ui/InfoSidebar/Container";
|
|
10
|
-
import { CommunicationTab } from "./src/CommunicationTab";
|
|
11
9
|
import { SensorsTab } from "./src/SensorsTab";
|
|
10
|
+
import { SettingsTab } from "./src/SettingsTab";
|
|
11
|
+
import { TabSelector } from "./TabSelector";
|
|
12
12
|
function MapSidebar({ minioBaseUrl, martinBaseUrl, organization }) {
|
|
13
13
|
const { ability } = usePermissions();
|
|
14
14
|
const { state: menusState, dispatch: menusDispatch } = React.useContext(MenusContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/index.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\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/src/MapSidebar/index.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\n\r\nimport { InfoSidebarContainer } from '../../../../../components/ui/InfoSidebar/Container'\r\nimport { MenusContext, usePermissions } from '../../../../../store'\r\n\r\nimport { CommunicationTab } from './src/CommunicationTab'\r\nimport { FileTab } from './src/FileTab'\r\nimport { LayersTab } from './src/LayersTab'\r\nimport { SensorsTab } from './src/SensorsTab'\r\nimport { SettingsTab } from './src/SettingsTab'\r\nimport { TabSelector } from './TabSelector'\r\n\r\nimport type { SidebarTabType } from '../../../../../store/Menus/reducer'\r\nimport type { Organization } from '../../../../../types/dbTypes'\r\n\r\nexport function MapSidebar({ minioBaseUrl, martinBaseUrl, organization }: { minioBaseUrl?: string; martinBaseUrl?: string; organization?: Organization }) {\r\n // Permissions\r\n const { ability } = usePermissions()\r\n\r\n const { state: menusState, dispatch: menusDispatch } = React.useContext(MenusContext)\r\n const { selectedTab } = menusState.menus\r\n\r\n const handleTabChange = (selectedTab: SidebarTabType) => {\r\n menusDispatch({ type: 'SET_SIDEBAR_SELECTED_TAB', payload: { selectedTab } })\r\n }\r\n\r\n return (\r\n <InfoSidebarContainer\r\n organization={organization}\r\n tabSelector={\r\n <TabSelector\r\n activeTab={selectedTab}\r\n onTabChangeAction={handleTabChange}\r\n />\r\n }\r\n >\r\n {selectedTab === 'file' && ability.can('read', 'File') && <FileTab />}\r\n {selectedTab === 'layers' && ability.can('read', 'File') && <LayersTab martinBaseUrl={martinBaseUrl} organization={organization} />}\r\n {selectedTab === 'communication' && ability.can('read', 'Comment') && <CommunicationTab />}\r\n {selectedTab === 'sensors' && ability.can('read', 'Sensor') && <SensorsTab minioBaseUrl={minioBaseUrl} />}\r\n {selectedTab === 'settings' && <SettingsTab countryCode={organization?.country} />}\r\n </InfoSidebarContainer>\r\n )\r\n}"],"mappings":";AAiCI,SAGI,KAHJ;AA5BJ,YAAY,WAAW;AAGvB,SAAS,4BAA4B;AACrC,SAAS,cAAc,sBAAsB;AAE7C,SAAS,wBAAwB;AACjC,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAKrB,SAAS,WAAW,EAAE,cAAc,eAAe,aAAa,GAAmF;AAExJ,QAAM,EAAE,QAAQ,IAAI,eAAe;AAEnC,QAAM,EAAE,OAAO,YAAY,UAAU,cAAc,IAAI,MAAM,WAAW,YAAY;AACpF,QAAM,EAAE,YAAY,IAAI,WAAW;AAEnC,QAAM,kBAAkB,CAACA,iBAAgC;AACvD,kBAAc,EAAE,MAAM,4BAA4B,SAAS,EAAE,aAAAA,aAAY,EAAE,CAAC;AAAA,EAC9E;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,UACX,mBAAmB;AAAA;AAAA,MACrB;AAAA,MAGD;AAAA,wBAAgB,UAAU,QAAQ,IAAI,QAAQ,MAAM,KAAK,oBAAC,WAAQ;AAAA,QAClE,gBAAgB,YAAY,QAAQ,IAAI,QAAQ,MAAM,KAAK,oBAAC,aAAU,eAA8B,cAA4B;AAAA,QAChI,gBAAgB,mBAAmB,QAAQ,IAAI,QAAQ,SAAS,KAAK,oBAAC,oBAAiB;AAAA,QACvF,gBAAgB,aAAa,QAAQ,IAAI,QAAQ,QAAQ,KAAK,oBAAC,cAAW,cAA4B;AAAA,QACtG,gBAAgB,cAAc,oBAAC,eAAY,aAAa,6CAAc,SAAS;AAAA;AAAA;AAAA,EAClF;AAEJ;","names":["selectedTab"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAA;AAChE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,CAAC,WAAW,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,gBAAgB,sBAM/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.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\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.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 { CommentsSection } from '../../../../../../ui/Comments/CommentsSection'\r\n\r\nimport type { DbFile } from '../../../../../../../types/dbTypes'\r\nexport interface FileItem {\r\n task: DbFile\r\n icon: React.ElementType\r\n visible: boolean\r\n}\r\n\r\nexport function CommunicationTab() {\r\n return (\r\n <div className=\"flex-1 flex flex-col space-y-6 py-4 overflow-hidden\">\r\n <CommentsSection />\r\n </div>\r\n )\r\n}\r\n"],"mappings":";AAmBM;AAZN,SAAS,uBAAuB;AASzB,SAAS,mBAAmB;AACjC,SACE,oBAAC,SAAI,WAAU,uDACb,8BAAC,mBAAgB,GACnB;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,wBAAgB,OAAO,sBAuCtB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import { FilesSection } from "./src/FilesSection";
|
|
5
|
-
import { ModelsSection } from "./src/ModelsSection";
|
|
6
4
|
import { useFiles } from "../../../../../../../hooks/files/files";
|
|
7
5
|
import { SearchInput } from "../../../../../../ui";
|
|
6
|
+
import { FilesSection } from "./src/FilesSection";
|
|
7
|
+
import { ModelsSection } from "./src/ModelsSection";
|
|
8
8
|
function FileTab() {
|
|
9
9
|
const [searchQuery, setSearchQuery] = React.useState("");
|
|
10
10
|
const filesData = useFiles().files || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/index.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\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/index.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 { useFiles } from '../../../../../../../hooks/files/files'\r\nimport { SearchInput } from '../../../../../../ui'\r\n\r\nimport { FilesSection } from './src/FilesSection'\r\nimport { ModelsSection } from './src/ModelsSection'\r\n\r\nimport type { DbFile } from '../../../../../../../types/dbTypes'\r\n\r\nexport function FileTab() {\r\n const [searchQuery, setSearchQuery] = React.useState('')\r\n const filesData: DbFile[] = useFiles().files || []\r\n\r\n const BIMFiles: DbFile[] = []\r\n const nonBIMFiles: DbFile[] = []\r\n\r\n // single .map pass to populate both arrays\r\n filesData.map((file) => {\r\n const {extension} = file\r\n if (!extension) return\r\n const isBIM = extension.toLowerCase() === 'frag'\r\n\r\n if (isBIM) {\r\n BIMFiles.push(file)\r\n } else {\r\n nonBIMFiles.push(file)\r\n }\r\n })\r\n\r\n return (\r\n <div className=\"flex-1 flex flex-col space-y-6 py-4 overflow-hidden\">\r\n <div className=\"px-4\">\r\n <SearchInput\r\n placeholder=\"Search...\"\r\n value={searchQuery}\r\n onChange={e => setSearchQuery(e.target.value)}\r\n />\r\n </div>\r\n <div className=\"flex-1 min-h-0 flex flex-col divide-y\">\r\n <div className=\"basis-1/2 min-h-0 overflow-hidden\">\r\n <ModelsSection files={BIMFiles} query={searchQuery} />\r\n </div>\r\n <div className=\"basis-1/2 min-h-0 overflow-hidden pt-4\">\r\n <FilesSection files={nonBIMFiles} query={searchQuery} />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"],"mappings":";AAsCQ,cAMF,YANE;AAjCR,YAAY,WAAW;AAEvB,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAE5B,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAIvB,SAAS,UAAU;AACxB,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAS,EAAE;AACvD,QAAM,YAAsB,SAAS,EAAE,SAAS,CAAC;AAEjD,QAAM,WAAqB,CAAC;AAC5B,QAAM,cAAwB,CAAC;AAG/B,YAAU,IAAI,CAAC,SAAS;AACtB,UAAM,EAAC,UAAS,IAAI;AACpB,QAAI,CAAC,UAAW;AAChB,UAAM,QAAQ,UAAU,YAAY,MAAM;AAE1C,QAAI,OAAO;AACT,eAAS,KAAK,IAAI;AAAA,IACpB,OAAO;AACL,kBAAY,KAAK,IAAI;AAAA,IACvB;AAAA,EACF,CAAC;AAED,SACE,qBAAC,SAAI,WAAU,uDACb;AAAA,wBAAC,SAAI,WAAU,QACb;AAAA,MAAC;AAAA;AAAA,QACC,aAAY;AAAA,QACZ,OAAO;AAAA,QACP,UAAU,OAAK,eAAe,EAAE,OAAO,KAAK;AAAA;AAAA,IAC9C,GACF;AAAA,IACA,qBAAC,SAAI,WAAU,yCACb;AAAA,0BAAC,SAAI,WAAU,qCACb,8BAAC,iBAAc,OAAO,UAAU,OAAO,aAAa,GACtD;AAAA,MACA,oBAAC,SAAI,WAAU,0CACb,8BAAC,gBAAa,OAAO,aAAa,OAAO,aAAa,GACxD;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
|
package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilesSection.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FilesSection.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,uCAAuC,CAAA;AAmB5E,UAAU,iBAAiB;IACzB,KAAK,EAAE,KAAK,EAAE,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAU,EAAE,EAAE,iBAAiB,qBA6IhF"}
|
|
@@ -19,15 +19,15 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
};
|
|
20
20
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
21
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
-
import * as React from "react";
|
|
23
22
|
import * as LR from "lucide-react";
|
|
23
|
+
import { useTranslations } from "next-intl";
|
|
24
|
+
import * as React from "react";
|
|
25
|
+
import { mutate } from "swr";
|
|
26
|
+
import { useDeleteFile } from "../../../../../../../../hooks/files/files";
|
|
24
27
|
import { BuildingsContext, FilesContext } from "../../../../../../../../store";
|
|
25
|
-
import { CollapsibleSection } from "../../../../../../../ui/CollapsibleSection";
|
|
26
28
|
import ConfirmDialog from "../../../../../../../ConfirmDialog";
|
|
27
|
-
import {
|
|
29
|
+
import { CollapsibleSection } from "../../../../../../../ui/CollapsibleSection";
|
|
28
30
|
import { useFileDeleteHandler, FileItemComponent, useFileActions, useFileUploadWithProgress } from "../../../../../../../ui/FilesManager";
|
|
29
|
-
import { useDeleteFile } from "../../../../../../../../hooks/files/files";
|
|
30
|
-
import { mutate } from "swr";
|
|
31
31
|
import { LoadingSpinner } from "../../../../../../../ui/LoadingSpinner";
|
|
32
32
|
const FILE_OPTIONS = ["view", "move", "info", "delete"];
|
|
33
33
|
const shouldExcludeByTag = (tag) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.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\nimport * as LR from 'lucide-react'\r\nimport { BuildingsContext, FilesContext, MenusContext } from '../../../../../../../../store'\r\nimport { CollapsibleSection } from '../../../../../../../ui/CollapsibleSection'\r\nimport ConfirmDialog from '../../../../../../../ConfirmDialog'\r\nimport { useTranslations } from 'next-intl'\r\nimport { useFileDeleteHandler, FileItemComponent, useFileActions, useFileUploadWithProgress } from '../../../../../../../ui/FilesManager'\r\nimport { DbFile as IFile } from '../../../../../../../../types/dbTypes'\r\nimport { useDeleteFile } from '../../../../../../../../hooks/files/files'\r\nimport { mutate } from 'swr'\r\nimport { LoadingSpinner } from '../../../../../../../ui/LoadingSpinner'\r\n\r\n// Hoisted out of the JSX so the array reference is stable across renders.\r\n// Inline `options={['view','move','info','delete']}` gets a new array identity\r\n// on every render, defeating React.memo on FileItemComponent.\r\nconst FILE_OPTIONS: import('../../../../../../../../types/global').FileAction[] = ['view', 'move', 'info', 'delete']\r\n\r\nconst shouldExcludeByTag = (tag?: string | null): boolean => {\r\n if (!tag) return false\r\n return tag === 'user' || tag === 'bim-file' || tag === 'fragment-file' || tag === 'bimModel'\r\n}\r\n\r\nconst shouldExcludeByType = (type?: string | null): boolean => {\r\n if (!type) return false\r\n return type === 'bim-file'\r\n}\r\n\r\ninterface FilesSectionProps {\r\n files: IFile[]\r\n query?: string\r\n}\r\n\r\nexport function FilesSection({ files: _filesProp, query = '' }: FilesSectionProps) {\r\n const t = useTranslations('FileSelection')\r\n\r\n const { state: buildingsState } = React.useContext(BuildingsContext)\r\n const { state: fileState, dispatch: fileDispatch } = React.useContext(FilesContext)\r\n const files = fileState.files.files\r\n const { mapFileIds } = fileState.files\r\n const { building } = buildingsState.buildings\r\n const buildingId = building?.id || -1\r\n\r\n const { deleteFile: deleteFileApi } = useDeleteFile(buildingId)\r\n\r\n // Wrap so the store is updated immediately alongside the API call\r\n const deleteFile = React.useCallback(async (fileId: number) => {\r\n fileDispatch({ type: 'REMOVE_FILE', payload: { id: fileId } })\r\n await deleteFileApi(fileId)\r\n }, [deleteFileApi, fileDispatch])\r\n\r\n const { handleDeleteFile } = useFileDeleteHandler({\r\n deleteFile,\r\n onDeleteSuccess: () => {},\r\n })\r\n\r\n const { handleAddFile, uploadState } = useFileUploadWithProgress({\r\n acceptedFileTypes: '*',\r\n onUploadSuccess: () => {\r\n console.log('File uploaded successfully')\r\n mutate(`/api/files`)\r\n },\r\n onUploadError: (error) => console.error('Error uploading file:', error),\r\n })\r\n\r\n const nonBimFiles = React.useMemo(() => {\r\n return files\r\n .filter(file => file.extension !== 'ifc' && file.extension !== 'frag')\r\n .filter(file => !shouldExcludeByTag(file.tag))\r\n .filter(file => !shouldExcludeByType((file as any).type))\r\n .map(file => ({ ...file, isVisible: mapFileIds.includes(file.id) }))\r\n .sort((a, b) => {\r\n const aOnMap = mapFileIds.includes(a.id)\r\n const bOnMap = mapFileIds.includes(b.id)\r\n if (aOnMap !== bOnMap) return aOnMap ? -1 : 1\r\n return a.name.localeCompare(b.name)\r\n })\r\n }, [files, mapFileIds])\r\n\r\n const [localFiles, setLocalFiles] = React.useState(nonBimFiles)\r\n\r\n React.useEffect(() => {\r\n setLocalFiles(nonBimFiles)\r\n }, [nonBimFiles])\r\n\r\n const handleMoveFile = React.useCallback((file: IFile) => {\r\n fileDispatch({ type: 'EDIT_FILE', payload: { file } })\r\n }, [fileDispatch])\r\n\r\n // useCallback so the onView prop identity stays stable across renders.\r\n // Otherwise useFileActions' internal useCallback dep on onView re-fires every\r\n // render, producing a new handleAction identity, which defeats React.memo on\r\n // FileItemComponent.\r\n const handleViewFile = React.useCallback((file: IFile, newVisibility: boolean) => {\r\n fileDispatch({\r\n type: newVisibility ? 'ADD_TO_MAP' : 'REMOVE_FROM_MAP',\r\n payload: { id: file.id },\r\n })\r\n }, [fileDispatch])\r\n\r\n const { handleAction, deleteDialog } = useFileActions({\r\n files: localFiles,\r\n setFiles: setLocalFiles,\r\n buildingId,\r\n handleDeleteFile,\r\n onView: handleViewFile,\r\n onMove: handleMoveFile,\r\n })\r\n\r\n const areAllMapFilesHidden = React.useMemo(\r\n () => nonBimFiles.every(file => !mapFileIds.includes(file.id)),\r\n [nonBimFiles, mapFileIds]\r\n )\r\n\r\n const filteredFiles = React.useMemo(() => {\r\n if (!query.trim()) return nonBimFiles\r\n return nonBimFiles.filter(file =>\r\n file.name.toLowerCase().includes(query.toLowerCase())\r\n )\r\n }, [nonBimFiles, query])\r\n\r\n const handleSwitchVariant = () => ({\r\n checked: !areAllMapFilesHidden,\r\n onCheckedChange: (checked: boolean) => {\r\n if (checked) {\r\n fileDispatch({ type: 'ADD_ALL_TO_MAP', payload: { ids: nonBimFiles.map(f => f.id) } })\r\n }\r\n else {\r\n fileDispatch({ type: 'REMOVE_ALL_FROM_MAP' } as never)\r\n }\r\n },\r\n })\r\n\r\n return (\r\n <div className=\"h-full min-h-0\">\r\n <CollapsibleSection\r\n title={t('filesTitle')}\r\n icon={LR.FileText}\r\n className=\"h-full min-h-0 flex flex-col\"\r\n style={{ height: '100%', minHeight: 0 }}\r\n itemCount={filteredFiles.length}\r\n onAddItem={uploadState.uploading ? undefined : handleAddFile}\r\n addItemTitle={uploadState.uploading ? `${t('uploadingFile')} ${uploadState.progress}%` : t('addFileTitle')}\r\n switchVariant={handleSwitchVariant()}\r\n >\r\n <div className=\"flex-1 min-h-0 overflow-y-auto space-y-1\">\r\n {uploadState.uploading && (\r\n <div className=\"flex items-center gap-2 px-2 py-2 text-sm text-muted-foreground\">\r\n <LoadingSpinner className=\"h-4 w-4\" />\r\n <span>{t('uploadingFile')} {uploadState.progress}%</span>\r\n </div>\r\n )}\r\n {filteredFiles.map((item) => (\r\n <FileItemComponent\r\n key={item.id}\r\n file={item}\r\n onAction={handleAction}\r\n options={FILE_OPTIONS}\r\n translationKey=\"FileSelection\"\r\n confirmDelete={false}\r\n />\r\n ))}\r\n </div>\r\n </CollapsibleSection>\r\n\r\n <ConfirmDialog\r\n isOpen={deleteDialog.isOpen}\r\n isDeleting={deleteDialog.isDeleting}\r\n onOpenChange={deleteDialog.onOpenChange}\r\n handleConfirm={deleteDialog.onConfirm}\r\n itemName={deleteDialog.itemName}\r\n />\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.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 LR from 'lucide-react'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as React from 'react'\r\nimport { mutate } from 'swr'\r\n\r\nimport { useDeleteFile } from '../../../../../../../../hooks/files/files'\r\nimport { BuildingsContext, FilesContext, MenusContext } from '../../../../../../../../store'\r\nimport ConfirmDialog from '../../../../../../../ConfirmDialog'\r\nimport { CollapsibleSection } from '../../../../../../../ui/CollapsibleSection'\r\nimport { useFileDeleteHandler, FileItemComponent, useFileActions, useFileUploadWithProgress } from '../../../../../../../ui/FilesManager'\r\nimport { LoadingSpinner } from '../../../../../../../ui/LoadingSpinner'\r\n\r\nimport type { DbFile as IFile } from '../../../../../../../../types/dbTypes'\r\n\r\n\r\n\r\n// Hoisted out of the JSX so the array reference is stable across renders.\r\n// Inline `options={['view','move','info','delete']}` gets a new array identity\r\n// on every render, defeating React.memo on FileItemComponent.\r\nconst FILE_OPTIONS: import('../../../../../../../../types/global').FileAction[] = ['view', 'move', 'info', 'delete']\r\n\r\nconst shouldExcludeByTag = (tag?: string | null): boolean => {\r\n if (!tag) return false\r\n return tag === 'user' || tag === 'bim-file' || tag === 'fragment-file' || tag === 'bimModel'\r\n}\r\n\r\nconst shouldExcludeByType = (type?: string | null): boolean => {\r\n if (!type) return false\r\n return type === 'bim-file'\r\n}\r\n\r\ninterface FilesSectionProps {\r\n files: IFile[]\r\n query?: string\r\n}\r\n\r\nexport function FilesSection({ files: _filesProp, query = '' }: FilesSectionProps) {\r\n const t = useTranslations('FileSelection')\r\n\r\n const { state: buildingsState } = React.useContext(BuildingsContext)\r\n const { state: fileState, dispatch: fileDispatch } = React.useContext(FilesContext)\r\n const files = fileState.files.files\r\n const { mapFileIds } = fileState.files\r\n const { building } = buildingsState.buildings\r\n const buildingId = building?.id || -1\r\n\r\n const { deleteFile: deleteFileApi } = useDeleteFile(buildingId)\r\n\r\n // Wrap so the store is updated immediately alongside the API call\r\n const deleteFile = React.useCallback(async (fileId: number) => {\r\n fileDispatch({ type: 'REMOVE_FILE', payload: { id: fileId } })\r\n await deleteFileApi(fileId)\r\n }, [deleteFileApi, fileDispatch])\r\n\r\n const { handleDeleteFile } = useFileDeleteHandler({\r\n deleteFile,\r\n onDeleteSuccess: () => {},\r\n })\r\n\r\n const { handleAddFile, uploadState } = useFileUploadWithProgress({\r\n acceptedFileTypes: '*',\r\n onUploadSuccess: () => {\r\n console.log('File uploaded successfully')\r\n mutate(`/api/files`)\r\n },\r\n onUploadError: (error) => console.error('Error uploading file:', error),\r\n })\r\n\r\n const nonBimFiles = React.useMemo(() => {\r\n return files\r\n .filter(file => file.extension !== 'ifc' && file.extension !== 'frag')\r\n .filter(file => !shouldExcludeByTag(file.tag))\r\n .filter(file => !shouldExcludeByType((file as any).type))\r\n .map(file => ({ ...file, isVisible: mapFileIds.includes(file.id) }))\r\n .sort((a, b) => {\r\n const aOnMap = mapFileIds.includes(a.id)\r\n const bOnMap = mapFileIds.includes(b.id)\r\n if (aOnMap !== bOnMap) return aOnMap ? -1 : 1\r\n return a.name.localeCompare(b.name)\r\n })\r\n }, [files, mapFileIds])\r\n\r\n const [localFiles, setLocalFiles] = React.useState(nonBimFiles)\r\n\r\n React.useEffect(() => {\r\n setLocalFiles(nonBimFiles)\r\n }, [nonBimFiles])\r\n\r\n const handleMoveFile = React.useCallback((file: IFile) => {\r\n fileDispatch({ type: 'EDIT_FILE', payload: { file } })\r\n }, [fileDispatch])\r\n\r\n // useCallback so the onView prop identity stays stable across renders.\r\n // Otherwise useFileActions' internal useCallback dep on onView re-fires every\r\n // render, producing a new handleAction identity, which defeats React.memo on\r\n // FileItemComponent.\r\n const handleViewFile = React.useCallback((file: IFile, newVisibility: boolean) => {\r\n fileDispatch({\r\n type: newVisibility ? 'ADD_TO_MAP' : 'REMOVE_FROM_MAP',\r\n payload: { id: file.id },\r\n })\r\n }, [fileDispatch])\r\n\r\n const { handleAction, deleteDialog } = useFileActions({\r\n files: localFiles,\r\n setFiles: setLocalFiles,\r\n buildingId,\r\n handleDeleteFile,\r\n onView: handleViewFile,\r\n onMove: handleMoveFile,\r\n })\r\n\r\n const areAllMapFilesHidden = React.useMemo(\r\n () => nonBimFiles.every(file => !mapFileIds.includes(file.id)),\r\n [nonBimFiles, mapFileIds]\r\n )\r\n\r\n const filteredFiles = React.useMemo(() => {\r\n if (!query.trim()) return nonBimFiles\r\n return nonBimFiles.filter(file =>\r\n file.name.toLowerCase().includes(query.toLowerCase())\r\n )\r\n }, [nonBimFiles, query])\r\n\r\n const handleSwitchVariant = () => ({\r\n checked: !areAllMapFilesHidden,\r\n onCheckedChange: (checked: boolean) => {\r\n if (checked) {\r\n fileDispatch({ type: 'ADD_ALL_TO_MAP', payload: { ids: nonBimFiles.map(f => f.id) } })\r\n }\r\n else {\r\n fileDispatch({ type: 'REMOVE_ALL_FROM_MAP' } as never)\r\n }\r\n },\r\n })\r\n\r\n return (\r\n <div className=\"h-full min-h-0\">\r\n <CollapsibleSection\r\n title={t('filesTitle')}\r\n icon={LR.FileText}\r\n className=\"h-full min-h-0 flex flex-col\"\r\n style={{ height: '100%', minHeight: 0 }}\r\n itemCount={filteredFiles.length}\r\n onAddItem={uploadState.uploading ? undefined : handleAddFile}\r\n addItemTitle={uploadState.uploading ? `${t('uploadingFile')} ${uploadState.progress}%` : t('addFileTitle')}\r\n switchVariant={handleSwitchVariant()}\r\n >\r\n <div className=\"flex-1 min-h-0 overflow-y-auto space-y-1\">\r\n {uploadState.uploading && (\r\n <div className=\"flex items-center gap-2 px-2 py-2 text-sm text-muted-foreground\">\r\n <LoadingSpinner className=\"h-4 w-4\" />\r\n <span>{t('uploadingFile')} {uploadState.progress}%</span>\r\n </div>\r\n )}\r\n {filteredFiles.map((item) => (\r\n <FileItemComponent\r\n key={item.id}\r\n file={item}\r\n onAction={handleAction}\r\n options={FILE_OPTIONS}\r\n translationKey=\"FileSelection\"\r\n confirmDelete={false}\r\n />\r\n ))}\r\n </div>\r\n </CollapsibleSection>\r\n\r\n <ConfirmDialog\r\n isOpen={deleteDialog.isOpen}\r\n isDeleting={deleteDialog.isDeleting}\r\n onOpenChange={deleteDialog.onOpenChange}\r\n handleConfirm={deleteDialog.onConfirm}\r\n itemName={deleteDialog.itemName}\r\n />\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":[]}
|
package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelsSection.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModelsSection.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,OAAO,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,uCAAuC,CAAA;AAO7E,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,kBAAkB,qBAoLtE"}
|
|
@@ -19,15 +19,15 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
};
|
|
20
20
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
21
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
-
import * as React from "react";
|
|
23
|
-
import { useTranslations } from "next-intl";
|
|
24
|
-
import ConfirmDialog from "../../../../../../../ConfirmDialog";
|
|
25
22
|
import * as LR from "lucide-react";
|
|
23
|
+
import { useTranslations } from "next-intl";
|
|
24
|
+
import * as React from "react";
|
|
25
|
+
import { mutate } from "swr";
|
|
26
|
+
import { useDeleteFile } from "../../../../../../../../hooks/files/files";
|
|
26
27
|
import { BimContext, BuildingsContext } from "../../../../../../../../store";
|
|
28
|
+
import ConfirmDialog from "../../../../../../../ConfirmDialog";
|
|
27
29
|
import { CollapsibleSection } from "../../../../../../../ui/CollapsibleSection";
|
|
28
|
-
import { useDeleteFile } from "../../../../../../../../hooks/files/files";
|
|
29
30
|
import { useFileDeleteHandler, FileItemComponent, useFileActions, useFileUploadWithProgress } from "../../../../../../../ui/FilesManager";
|
|
30
|
-
import { mutate } from "swr";
|
|
31
31
|
import { LoadingSpinner } from "../../../../../../../ui/LoadingSpinner";
|
|
32
32
|
import { toggleBimToMap as dispatchToggleBimToMap } from "../../../../../utils/toggleBimToMap";
|
|
33
33
|
const OPTIONS_ON_MAP = ["download", "view", "move", "info", "delete"];
|