@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,18 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import Map, { NavigationControl } from "react-map-gl/maplibre";
|
|
4
|
-
import React from "react";
|
|
5
3
|
import maplibregl from "maplibre-gl";
|
|
6
4
|
import { useSearchParams } from "next/navigation";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import Map, { NavigationControl } from "react-map-gl/maplibre";
|
|
7
7
|
import { MapContext } from "../../../store";
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
8
|
+
import SettingsButton from "../../ui/SettingsButton";
|
|
9
|
+
import { StatsOverlay } from "../../ui/stats";
|
|
10
10
|
import DatasetManagerMenu from "./datasets/DatasetManager";
|
|
11
11
|
import { MapLegendHost } from "./legends/MapLegendHost";
|
|
12
|
-
import { StatsOverlay } from "../../ui/stats";
|
|
13
|
-
import { MapHoverManager } from "./utils/MapEventManager/MapHoverManager";
|
|
14
12
|
import { MapLayers } from "./src/MapLayers";
|
|
15
|
-
import
|
|
13
|
+
import { MapClickManager } from "./utils/MapEventManager/MapClickManager";
|
|
14
|
+
import { MapHoverManager } from "./utils/MapEventManager/MapHoverManager";
|
|
15
|
+
import { resolveBounds } from "./utils/validateBounds";
|
|
16
16
|
const CANADA_DEFAULTS = {
|
|
17
17
|
zoom: 3,
|
|
18
18
|
lat: 56.415,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/core/components/viewers/map/MapViewer.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 Map, { MapRef, NavigationControl } from 'react-map-gl/maplibre'\r\nimport React from 'react'\r\n\r\nimport maplibregl from 'maplibre-gl'\r\nimport { useSearchParams } from 'next/navigation'\r\n\r\nimport { MapContext } from '../../../store'\r\nimport { resolveBounds } from './utils/validateBounds'\r\n\r\nimport { MapClickManager } from './utils/MapEventManager/MapClickManager'\r\nimport DatasetManagerMenu from './datasets/DatasetManager'\r\nimport { MapLegendHost } from './legends/MapLegendHost'\r\nimport { StatsOverlay } from '../../ui/stats'\r\nimport { MapHoverManager } from './utils/MapEventManager/MapHoverManager'\r\nimport { Organization } from '../../../types/dbTypes'\r\nimport { CurrentLocation } from '../../../types/map'\r\nimport { MapLayers } from './src/MapLayers'\r\nimport SettingsButton from '../../ui/SettingsButton'\r\n\r\nconst CANADA_DEFAULTS = {\r\n zoom: 3,\r\n lat: 56.415,\r\n long: -98.74,\r\n} as const\r\n\r\nconst DEFAULT_MAP_STYLE = { name: 'Satellite', url: 'mapStyles/satellite.json' } as const\r\nconst MAX_GLOBE_ZOOM = 5\r\n\r\ninterface Props {\r\n width?: string\r\n height?: string\r\n organization: Organization\r\n minioBaseUrl?: string\r\n maptilerKey?: string\r\n}\r\n\r\nexport function MapViewer({ width = '100%', height = '100%', organization, minioBaseUrl, maptilerKey }: Props) {\r\n\r\n const searchParams = useSearchParams()\r\n\r\n // Add state to track if map is loaded\r\n const [isMapLoaded, setIsMapLoaded] = React.useState(false)\r\n\r\n const viewState = React.useMemo(() => {\r\n return searchParams.size === 0\r\n ? {\r\n zoom: organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n bearing: organization.bearing ?? 0,\r\n pitch: organization.pitch ?? 0,\r\n longitude: organization.long ?? CANADA_DEFAULTS.long,\r\n latitude: organization.lat ?? CANADA_DEFAULTS.lat,\r\n }\r\n : {\r\n latitude: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n longitude: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n }\r\n }, [searchParams, organization])\r\n\r\n const initialProjection = viewState.zoom > MAX_GLOBE_ZOOM ? 'mercator' : 'globe'\r\n\r\n // Memoize the inline style object that gets passed to <Map> for a stable prop identity.\r\n const mapContainerStyle = React.useMemo(\r\n () => ({ width, height, backgroundColor: 'black' }),\r\n [width, height],\r\n )\r\n\r\n // Adaptive pixel ratio. A hardcoded 2 doubled fragment-shader cost on 1× DPR\r\n // desktops for zero visual gain; capping at 2 keeps phones (DPR 3-4) effective.\r\n const pixelRatio = React.useMemo(\r\n () => Math.min(typeof window !== 'undefined' ? window.devicePixelRatio : 1, 2),\r\n [],\r\n )\r\n\r\n const mapRef = React.useRef<MapRef>(null)\r\n const { dispatch: mapDispatch, state: mapState } = React.useContext(MapContext)\r\n\r\n // Keep the projection in sync with zoom at all times — not only while the\r\n // map-settings sidebar is mounted. The globe projection degrades past\r\n // MAX_GLOBE_ZOOM, so we force mercator regardless of which panels are open.\r\n const activeMap = mapState?.map?.map\r\n\r\n React.useEffect(() => {\r\n if (!activeMap) return\r\n\r\n const enforceProjectionForZoom = () => {\r\n if (activeMap.getZoom() <= MAX_GLOBE_ZOOM) return\r\n\r\n const projection = activeMap.getProjection()\r\n const currentType =\r\n typeof projection === 'string'\r\n ? projection\r\n : (projection as { type?: string; name?: string })?.type ?? (projection as { type?: string; name?: string })?.name\r\n\r\n if (currentType !== 'mercator') {\r\n activeMap.setProjection({ type: 'mercator' })\r\n }\r\n }\r\n\r\n enforceProjectionForZoom()\r\n activeMap.on('zoom', enforceProjectionForZoom)\r\n\r\n return () => {\r\n activeMap.off('zoom', enforceProjectionForZoom)\r\n }\r\n }, [activeMap])\r\n\r\n const handleMapLoad = () => {\r\n const map = mapRef.current.getMap()\r\n\r\n if (map.getZoom() > MAX_GLOBE_ZOOM) {\r\n map.setProjection({ type: 'mercator' })\r\n }\r\n\r\n // Only dispatch SET_MAP after map is fully loaded\r\n if (mapRef.current) {\r\n mapDispatch({\r\n type: 'SET_MAP',\r\n payload: { map },\r\n })\r\n }\r\n // initilize a new click manager\r\n const mapClickManager = new MapClickManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_CLICK_MANAGER',\r\n payload: { mapClickManager },\r\n })\r\n\r\n const mapHoverManager = new MapHoverManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_HOVER_MANAGER',\r\n payload: { mapHoverManager },\r\n })\r\n\r\n // update current Location with URL params or fallback to theme location\r\n const updatedLocation: CurrentLocation = {\r\n // Then override with URL params (this ensures URL params take precedence)\r\n lat: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n lng: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n // Add location details from URL params if available\r\n countrySubdivision: searchParams.has('countrySubdivision') ? searchParams.get('countrySubdivision') : (organization.countrySubdivision ?? ''),\r\n municipality: searchParams.has('municipality') ? searchParams.get('municipality') : (organization.municipality ?? ''),\r\n address: searchParams.has('address') ? searchParams.get('address') : '', // organization.address,\r\n site: searchParams.has('site') ? searchParams.get('site') : String(organization.locationSiteId ?? ''),\r\n id: String(organization.id),\r\n }\r\n\r\n mapDispatch({\r\n type: 'UPDATE_LOCATION',\r\n payload: { currentLocation: updatedLocation },\r\n })\r\n\r\n // Set map as loaded after all dispatches are complete\r\n setIsMapLoaded(true)\r\n }\r\n\r\n // Enable the perf HUD by appending ?debug=1 to the URL. Never reaches\r\n // production users unless they explicitly opt in.\r\n const isDebug = searchParams.get('debug') === '1'\r\n\r\n // useCallback so the onDblClick prop identity is stable across renders of\r\n // MapViewer; a new function each render caused react-map-gl to detach/re-attach\r\n // the listener. The console.log is gated behind a dev-mode check.\r\n const onDblClick = React.useCallback((e) => {\r\n if (process.env.NODE_ENV === 'production') return\r\n const { lng, lat } = e.lngLat\r\n const elevation = mapRef.current?.queryTerrainElevation([lng, lat]) || 0\r\n const coordinates = { lng, lat, elevation, zoom: mapRef.current?.getZoom() }\r\n console.log('📍 Map coordinates:', coordinates)\r\n }, [])\r\n\r\n const mapStyle = mapState?.map.mapStyle ?? DEFAULT_MAP_STYLE;\r\n\r\n return (\r\n <>\r\n <Map\r\n id=\"map-component\"\r\n mapStyle={mapStyle.url}\r\n mapLib={maplibregl}\r\n onLoad={handleMapLoad}\r\n ref={mapRef}\r\n style={mapContainerStyle}\r\n initialViewState={viewState}\r\n maxPitch={60}\r\n minZoom={organization?.minZoom ?? CANADA_DEFAULTS.zoom}\r\n maxBounds={resolveBounds(organization?.maxBounds)}\r\n projection={initialProjection}\r\n doubleClickZoom={false}\r\n onDblClick={onDblClick}\r\n pixelRatio={pixelRatio}\r\n >\r\n <NavigationControl visualizePitch />\r\n <SettingsButton />\r\n {isMapLoaded\r\n && (\r\n <>\r\n <MapLayers minioBaseUrl={minioBaseUrl} organization={organization} maptilerKey={maptilerKey} />\r\n {/* Bottom-left stack: legend above the layers/styling card, gap auto-managed by flex. */}\r\n <div className=\"absolute bottom-[10px] left-3 z-10 flex flex-col gap-2 pointer-events-none\">\r\n {/* Portal slot for on-map WMS time controls; display:contents so an\r\n empty slot adds no flex item / gap, but a mounted control stacks\r\n above the legend + dataset-manager cards. */}\r\n <div id=\"wms-time-slot\" style={{ display: 'contents' }} />\r\n <MapLegendHost />\r\n <DatasetManagerMenu />\r\n </div>\r\n </>\r\n )}\r\n </Map>\r\n <StatsOverlay mapRef={mapRef} enabled={isDebug} />\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/MapViewer.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 maplibregl from 'maplibre-gl'\r\nimport { useSearchParams } from 'next/navigation'\r\nimport React from 'react'\r\nimport Map, { NavigationControl } from 'react-map-gl/maplibre'\r\n\r\n\r\nimport { MapContext } from '../../../store'\r\nimport SettingsButton from '../../ui/SettingsButton'\r\nimport { StatsOverlay } from '../../ui/stats'\r\n\r\nimport DatasetManagerMenu from './datasets/DatasetManager'\r\nimport { MapLegendHost } from './legends/MapLegendHost'\r\nimport { MapLayers } from './src/MapLayers'\r\nimport { MapClickManager } from './utils/MapEventManager/MapClickManager'\r\nimport { MapHoverManager } from './utils/MapEventManager/MapHoverManager'\r\nimport { resolveBounds } from './utils/validateBounds'\r\n\r\n\r\n\r\n\r\nimport type { Organization } from '../../../types/dbTypes'\r\nimport type { CurrentLocation } from '../../../types/map'\r\nimport type { MapRef} from 'react-map-gl/maplibre';\r\n\r\nconst CANADA_DEFAULTS = {\r\n zoom: 3,\r\n lat: 56.415,\r\n long: -98.74,\r\n} as const\r\n\r\nconst DEFAULT_MAP_STYLE = { name: 'Satellite', url: 'mapStyles/satellite.json' } as const\r\nconst MAX_GLOBE_ZOOM = 5\r\n\r\ninterface Props {\r\n width?: string\r\n height?: string\r\n organization: Organization\r\n minioBaseUrl?: string\r\n maptilerKey?: string\r\n}\r\n\r\nexport function MapViewer({ width = '100%', height = '100%', organization, minioBaseUrl, maptilerKey }: Props) {\r\n\r\n const searchParams = useSearchParams()\r\n\r\n // Add state to track if map is loaded\r\n const [isMapLoaded, setIsMapLoaded] = React.useState(false)\r\n\r\n const viewState = React.useMemo(() => {\r\n return searchParams.size === 0\r\n ? {\r\n zoom: organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n bearing: organization.bearing ?? 0,\r\n pitch: organization.pitch ?? 0,\r\n longitude: organization.long ?? CANADA_DEFAULTS.long,\r\n latitude: organization.lat ?? CANADA_DEFAULTS.lat,\r\n }\r\n : {\r\n latitude: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n longitude: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n }\r\n }, [searchParams, organization])\r\n\r\n const initialProjection = viewState.zoom > MAX_GLOBE_ZOOM ? 'mercator' : 'globe'\r\n\r\n // Memoize the inline style object that gets passed to <Map> for a stable prop identity.\r\n const mapContainerStyle = React.useMemo(\r\n () => ({ width, height, backgroundColor: 'black' }),\r\n [width, height],\r\n )\r\n\r\n // Adaptive pixel ratio. A hardcoded 2 doubled fragment-shader cost on 1× DPR\r\n // desktops for zero visual gain; capping at 2 keeps phones (DPR 3-4) effective.\r\n const pixelRatio = React.useMemo(\r\n () => Math.min(typeof window !== 'undefined' ? window.devicePixelRatio : 1, 2),\r\n [],\r\n )\r\n\r\n const mapRef = React.useRef<MapRef>(null)\r\n const { dispatch: mapDispatch, state: mapState } = React.useContext(MapContext)\r\n\r\n // Keep the projection in sync with zoom at all times — not only while the\r\n // map-settings sidebar is mounted. The globe projection degrades past\r\n // MAX_GLOBE_ZOOM, so we force mercator regardless of which panels are open.\r\n const activeMap = mapState?.map?.map\r\n\r\n React.useEffect(() => {\r\n if (!activeMap) return\r\n\r\n const enforceProjectionForZoom = () => {\r\n if (activeMap.getZoom() <= MAX_GLOBE_ZOOM) return\r\n\r\n const projection = activeMap.getProjection()\r\n const currentType =\r\n typeof projection === 'string'\r\n ? projection\r\n : (projection as { type?: string; name?: string })?.type ?? (projection as { type?: string; name?: string })?.name\r\n\r\n if (currentType !== 'mercator') {\r\n activeMap.setProjection({ type: 'mercator' })\r\n }\r\n }\r\n\r\n enforceProjectionForZoom()\r\n activeMap.on('zoom', enforceProjectionForZoom)\r\n\r\n return () => {\r\n activeMap.off('zoom', enforceProjectionForZoom)\r\n }\r\n }, [activeMap])\r\n\r\n const handleMapLoad = () => {\r\n const map = mapRef.current.getMap()\r\n\r\n if (map.getZoom() > MAX_GLOBE_ZOOM) {\r\n map.setProjection({ type: 'mercator' })\r\n }\r\n\r\n // Only dispatch SET_MAP after map is fully loaded\r\n if (mapRef.current) {\r\n mapDispatch({\r\n type: 'SET_MAP',\r\n payload: { map },\r\n })\r\n }\r\n // initilize a new click manager\r\n const mapClickManager = new MapClickManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_CLICK_MANAGER',\r\n payload: { mapClickManager },\r\n })\r\n\r\n const mapHoverManager = new MapHoverManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_HOVER_MANAGER',\r\n payload: { mapHoverManager },\r\n })\r\n\r\n // update current Location with URL params or fallback to theme location\r\n const updatedLocation: CurrentLocation = {\r\n // Then override with URL params (this ensures URL params take precedence)\r\n lat: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n lng: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n // Add location details from URL params if available\r\n countrySubdivision: searchParams.has('countrySubdivision') ? searchParams.get('countrySubdivision') : (organization.countrySubdivision ?? ''),\r\n municipality: searchParams.has('municipality') ? searchParams.get('municipality') : (organization.municipality ?? ''),\r\n address: searchParams.has('address') ? searchParams.get('address') : '', // organization.address,\r\n site: searchParams.has('site') ? searchParams.get('site') : String(organization.locationSiteId ?? ''),\r\n id: String(organization.id),\r\n }\r\n\r\n mapDispatch({\r\n type: 'UPDATE_LOCATION',\r\n payload: { currentLocation: updatedLocation },\r\n })\r\n\r\n // Set map as loaded after all dispatches are complete\r\n setIsMapLoaded(true)\r\n }\r\n\r\n // Enable the perf HUD by appending ?debug=1 to the URL. Never reaches\r\n // production users unless they explicitly opt in.\r\n const isDebug = searchParams.get('debug') === '1'\r\n\r\n // useCallback so the onDblClick prop identity is stable across renders of\r\n // MapViewer; a new function each render caused react-map-gl to detach/re-attach\r\n // the listener. The console.log is gated behind a dev-mode check.\r\n const onDblClick = React.useCallback((e) => {\r\n if (process.env.NODE_ENV === 'production') return\r\n const { lng, lat } = e.lngLat\r\n const elevation = mapRef.current?.queryTerrainElevation([lng, lat]) || 0\r\n const coordinates = { lng, lat, elevation, zoom: mapRef.current?.getZoom() }\r\n console.log('📍 Map coordinates:', coordinates)\r\n }, [])\r\n\r\n const mapStyle = mapState?.map.mapStyle ?? DEFAULT_MAP_STYLE;\r\n\r\n return (\r\n <>\r\n <Map\r\n id=\"map-component\"\r\n mapStyle={mapStyle.url}\r\n mapLib={maplibregl}\r\n onLoad={handleMapLoad}\r\n ref={mapRef}\r\n style={mapContainerStyle}\r\n initialViewState={viewState}\r\n maxPitch={60}\r\n minZoom={organization?.minZoom ?? CANADA_DEFAULTS.zoom}\r\n maxBounds={resolveBounds(organization?.maxBounds)}\r\n projection={initialProjection}\r\n doubleClickZoom={false}\r\n onDblClick={onDblClick}\r\n pixelRatio={pixelRatio}\r\n >\r\n <NavigationControl visualizePitch />\r\n <SettingsButton />\r\n {isMapLoaded\r\n && (\r\n <>\r\n <MapLayers minioBaseUrl={minioBaseUrl} organization={organization} maptilerKey={maptilerKey} />\r\n {/* Bottom-left stack: legend above the layers/styling card, gap auto-managed by flex. */}\r\n <div className=\"absolute bottom-[10px] left-3 z-10 flex flex-col gap-2 pointer-events-none\">\r\n {/* Portal slot for on-map WMS time controls; display:contents so an\r\n empty slot adds no flex item / gap, but a mounted control stacks\r\n above the legend + dataset-manager cards. */}\r\n <div id=\"wms-time-slot\" style={{ display: 'contents' }} />\r\n <MapLegendHost />\r\n <DatasetManagerMenu />\r\n </div>\r\n </>\r\n )}\r\n </Map>\r\n <StatsOverlay mapRef={mapRef} enabled={isDebug} />\r\n </>\r\n\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddPortalDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddPortalDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiB9B,UAAU,oBAAoB;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAeD,eAAO,MAAM,eAAe,GAAI,wBAAwB,oBAAoB,sBAwL3E,CAAA"}
|
|
@@ -19,8 +19,11 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
};
|
|
20
20
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
21
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
-
import * as React from "react";
|
|
23
22
|
import * as LR from "lucide-react";
|
|
23
|
+
import * as React from "react";
|
|
24
|
+
import { useCreateOpenDataPortal } from "../../../../hooks/openDataPortals/openDataPortals";
|
|
25
|
+
import { DatasetGroup, DataManagementSystem } from "../../../../types/dbTypes";
|
|
26
|
+
import { Button } from "../../../ui/Button";
|
|
24
27
|
import {
|
|
25
28
|
Dialog,
|
|
26
29
|
DialogContent,
|
|
@@ -28,11 +31,8 @@ import {
|
|
|
28
31
|
DialogHeader,
|
|
29
32
|
DialogTitle
|
|
30
33
|
} from "../../../ui/Dialog";
|
|
31
|
-
import { Button } from "../../../ui/Button";
|
|
32
34
|
import { Input } from "../../../ui/Input";
|
|
33
35
|
import { Label } from "../../../ui/Label";
|
|
34
|
-
import { useCreateOpenDataPortal } from "../../../../hooks/openDataPortals/openDataPortals";
|
|
35
|
-
import { DatasetGroup, DataManagementSystem } from "../../../../types/dbTypes";
|
|
36
36
|
const EMPTY_FORM = {
|
|
37
37
|
name: "",
|
|
38
38
|
group: DatasetGroup.Municipal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.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 {\r\n Dialog,\r\n DialogContent,\r\n DialogDescription,\r\n DialogHeader,\r\n DialogTitle,\r\n} from '../../../ui/Dialog'\r\nimport { Button } from '../../../ui/Button'\r\nimport { Input } from '../../../ui/Input'\r\nimport { Label } from '../../../ui/Label'\r\nimport { useCreateOpenDataPortal } from '../../../../hooks/openDataPortals/openDataPortals'\r\nimport { DatasetGroup, DataManagementSystem } from '../../../../types/dbTypes'\r\nimport type { OpenDataPortal } from '../../../../types/dbTypes'\r\n\r\ninterface AddPortalDialogProps {\r\n open: boolean\r\n onOpenChange: (open: boolean) => void\r\n}\r\n\r\ntype FormState = Omit<OpenDataPortal, 'id'>\r\n\r\nconst EMPTY_FORM: FormState = {\r\n name: '',\r\n group: DatasetGroup.Municipal,\r\n portalUrl: '',\r\n dataManagementSystem: undefined,\r\n apiUrl: '',\r\n countrySubdivision: '',\r\n municipality: '',\r\n country: '',\r\n}\r\n\r\nexport const AddPortalDialog = ({ open, onOpenChange }: AddPortalDialogProps) => {\r\n const [form, setForm] = React.useState<FormState>(EMPTY_FORM)\r\n const [submitError, setSubmitError] = React.useState<string | null>(null)\r\n const { createOpenDataPortal, isMutating } = useCreateOpenDataPortal()\r\n\r\n const update = <K extends keyof FormState>(field: K, value: FormState[K]) => {\r\n setForm(prev => ({ ...prev, [field]: value }))\r\n }\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault()\r\n setSubmitError(null)\r\n if (!form.name.trim()) {\r\n setSubmitError('Name is required')\r\n return\r\n }\r\n\r\n // Strip empty optionals so the row doesn't carry literal empty strings.\r\n const payload: FormState = {\r\n name: form.name.trim(),\r\n group: form.group,\r\n portalUrl: form.portalUrl?.trim() || undefined,\r\n dataManagementSystem: form.dataManagementSystem || undefined,\r\n apiUrl: form.apiUrl?.trim() || undefined,\r\n countrySubdivision: form.countrySubdivision?.trim() || undefined,\r\n municipality: form.municipality?.trim() || undefined,\r\n country: form.country?.trim() || undefined,\r\n }\r\n\r\n try {\r\n await createOpenDataPortal(payload)\r\n setForm(EMPTY_FORM)\r\n onOpenChange(false)\r\n }\r\n catch (err) {\r\n setSubmitError(err instanceof Error ? err.message : 'Failed to create portal')\r\n }\r\n }\r\n\r\n return (\r\n <Dialog open={open} onOpenChange={onOpenChange}>\r\n <DialogContent className=\"sm:max-w-[520px]\">\r\n <DialogHeader>\r\n <DialogTitle>Add Open Data Portal</DialogTitle>\r\n <DialogDescription>\r\n Register a new external data portal. Only Name and Group are required.\r\n </DialogDescription>\r\n </DialogHeader>\r\n\r\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-name\">\r\n Name\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <Input\r\n id=\"portal-name\"\r\n value={form.name}\r\n onChange={e => update('name', e.target.value)}\r\n disabled={isMutating}\r\n required\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-group\">\r\n Group\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <select\r\n id=\"portal-group\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={form.group as string}\r\n onChange={e => update('group', e.target.value as DatasetGroup)}\r\n disabled={isMutating}\r\n >\r\n {Object.values(DatasetGroup).map(g => (\r\n <option key={g} value={g}>{g}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-dms\">Data Management System</Label>\r\n <select\r\n id=\"portal-dms\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={(form.dataManagementSystem as string) ?? ''}\r\n onChange={e => update('dataManagementSystem', (e.target.value || undefined) as DataManagementSystem | undefined)}\r\n disabled={isMutating}\r\n >\r\n <option value=\"\">(none)</option>\r\n {Object.values(DataManagementSystem).map(d => (\r\n <option key={d} value={d}>{d}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-portalUrl\">Portal URL</Label>\r\n <Input\r\n id=\"portal-portalUrl\"\r\n type=\"url\"\r\n value={form.portalUrl ?? ''}\r\n onChange={e => update('portalUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/open-data\"\r\n />\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-apiUrl\">API URL</Label>\r\n <Input\r\n id=\"portal-apiUrl\"\r\n type=\"url\"\r\n value={form.apiUrl ?? ''}\r\n onChange={e => update('apiUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/api\"\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-3 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-municipality\">Municipality</Label>\r\n <Input\r\n id=\"portal-municipality\"\r\n value={form.municipality ?? ''}\r\n onChange={e => update('municipality', e.target.value)}\r\n disabled={isMutating}\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-countrySubdivision\">Subdivision</Label>\r\n <Input\r\n id=\"portal-countrySubdivision\"\r\n value={form.countrySubdivision ?? ''}\r\n onChange={e => update('countrySubdivision', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA-ON\"\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-country\">Country</Label>\r\n <Input\r\n id=\"portal-country\"\r\n value={form.country ?? ''}\r\n onChange={e => update('country', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA\"\r\n />\r\n </div>\r\n </div>\r\n\r\n {submitError && (\r\n <p className=\"text-sm text-destructive\">{submitError}</p>\r\n )}\r\n\r\n <div className=\"flex justify-end gap-2 pt-2\">\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={() => onOpenChange(false)}\r\n disabled={isMutating}\r\n >\r\n Cancel\r\n </Button>\r\n <Button type=\"submit\" disabled={isMutating}>\r\n {isMutating\r\n ? (\r\n <>\r\n <LR.Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\r\n Adding…\r\n </>\r\n )\r\n : 'Add Portal'}\r\n </Button>\r\n </div>\r\n </form>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c","_d","_e"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.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 * as React from 'react'\r\n\r\nimport { useCreateOpenDataPortal } from '../../../../hooks/openDataPortals/openDataPortals'\r\nimport { DatasetGroup, DataManagementSystem } from '../../../../types/dbTypes'\r\nimport { Button } from '../../../ui/Button'\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogDescription,\r\n DialogHeader,\r\n DialogTitle,\r\n} from '../../../ui/Dialog'\r\nimport { Input } from '../../../ui/Input'\r\nimport { Label } from '../../../ui/Label'\r\n\r\nimport type { OpenDataPortal } from '../../../../types/dbTypes'\r\n\r\ninterface AddPortalDialogProps {\r\n open: boolean\r\n onOpenChange: (open: boolean) => void\r\n}\r\n\r\ntype FormState = Omit<OpenDataPortal, 'id'>\r\n\r\nconst EMPTY_FORM: FormState = {\r\n name: '',\r\n group: DatasetGroup.Municipal,\r\n portalUrl: '',\r\n dataManagementSystem: undefined,\r\n apiUrl: '',\r\n countrySubdivision: '',\r\n municipality: '',\r\n country: '',\r\n}\r\n\r\nexport const AddPortalDialog = ({ open, onOpenChange }: AddPortalDialogProps) => {\r\n const [form, setForm] = React.useState<FormState>(EMPTY_FORM)\r\n const [submitError, setSubmitError] = React.useState<string | null>(null)\r\n const { createOpenDataPortal, isMutating } = useCreateOpenDataPortal()\r\n\r\n const update = <K extends keyof FormState>(field: K, value: FormState[K]) => {\r\n setForm(prev => ({ ...prev, [field]: value }))\r\n }\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault()\r\n setSubmitError(null)\r\n if (!form.name.trim()) {\r\n setSubmitError('Name is required')\r\n return\r\n }\r\n\r\n // Strip empty optionals so the row doesn't carry literal empty strings.\r\n const payload: FormState = {\r\n name: form.name.trim(),\r\n group: form.group,\r\n portalUrl: form.portalUrl?.trim() || undefined,\r\n dataManagementSystem: form.dataManagementSystem || undefined,\r\n apiUrl: form.apiUrl?.trim() || undefined,\r\n countrySubdivision: form.countrySubdivision?.trim() || undefined,\r\n municipality: form.municipality?.trim() || undefined,\r\n country: form.country?.trim() || undefined,\r\n }\r\n\r\n try {\r\n await createOpenDataPortal(payload)\r\n setForm(EMPTY_FORM)\r\n onOpenChange(false)\r\n }\r\n catch (err) {\r\n setSubmitError(err instanceof Error ? err.message : 'Failed to create portal')\r\n }\r\n }\r\n\r\n return (\r\n <Dialog open={open} onOpenChange={onOpenChange}>\r\n <DialogContent className=\"sm:max-w-[520px]\">\r\n <DialogHeader>\r\n <DialogTitle>Add Open Data Portal</DialogTitle>\r\n <DialogDescription>\r\n Register a new external data portal. Only Name and Group are required.\r\n </DialogDescription>\r\n </DialogHeader>\r\n\r\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-name\">\r\n Name\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <Input\r\n id=\"portal-name\"\r\n value={form.name}\r\n onChange={e => update('name', e.target.value)}\r\n disabled={isMutating}\r\n required\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-group\">\r\n Group\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <select\r\n id=\"portal-group\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={form.group as string}\r\n onChange={e => update('group', e.target.value as DatasetGroup)}\r\n disabled={isMutating}\r\n >\r\n {Object.values(DatasetGroup).map(g => (\r\n <option key={g} value={g}>{g}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-dms\">Data Management System</Label>\r\n <select\r\n id=\"portal-dms\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={(form.dataManagementSystem as string) ?? ''}\r\n onChange={e => update('dataManagementSystem', (e.target.value || undefined) as DataManagementSystem | undefined)}\r\n disabled={isMutating}\r\n >\r\n <option value=\"\">(none)</option>\r\n {Object.values(DataManagementSystem).map(d => (\r\n <option key={d} value={d}>{d}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-portalUrl\">Portal URL</Label>\r\n <Input\r\n id=\"portal-portalUrl\"\r\n type=\"url\"\r\n value={form.portalUrl ?? ''}\r\n onChange={e => update('portalUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/open-data\"\r\n />\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-apiUrl\">API URL</Label>\r\n <Input\r\n id=\"portal-apiUrl\"\r\n type=\"url\"\r\n value={form.apiUrl ?? ''}\r\n onChange={e => update('apiUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/api\"\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-3 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-municipality\">Municipality</Label>\r\n <Input\r\n id=\"portal-municipality\"\r\n value={form.municipality ?? ''}\r\n onChange={e => update('municipality', e.target.value)}\r\n disabled={isMutating}\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-countrySubdivision\">Subdivision</Label>\r\n <Input\r\n id=\"portal-countrySubdivision\"\r\n value={form.countrySubdivision ?? ''}\r\n onChange={e => update('countrySubdivision', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA-ON\"\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-country\">Country</Label>\r\n <Input\r\n id=\"portal-country\"\r\n value={form.country ?? ''}\r\n onChange={e => update('country', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA\"\r\n />\r\n </div>\r\n </div>\r\n\r\n {submitError && (\r\n <p className=\"text-sm text-destructive\">{submitError}</p>\r\n )}\r\n\r\n <div className=\"flex justify-end gap-2 pt-2\">\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={() => onOpenChange(false)}\r\n disabled={isMutating}\r\n >\r\n Cancel\r\n </Button>\r\n <Button type=\"submit\" disabled={isMutating}>\r\n {isMutating\r\n ? (\r\n <>\r\n <LR.Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\r\n Adding…\r\n </>\r\n )\r\n : 'Add Portal'}\r\n </Button>\r\n </div>\r\n </form>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c","_d","_e"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetDetails.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatasetDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetDetails.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAE7D,UAAU,mBAAmB;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,eAAe,EAAE,EAAE,mBAAmB,qBAiK9E"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { DescriptionListItem } from "../../../../components/ui/DescriptionList";
|
|
4
|
-
import { Button, Badge, Separator } from "../../../../components/ui/";
|
|
5
|
-
import { Card, CardContent } from "../../../../components/ui/Card";
|
|
6
3
|
import * as LR from "lucide-react";
|
|
7
4
|
import Link from "next/link";
|
|
8
|
-
import * as React from "react";
|
|
9
5
|
import { useTranslations } from "next-intl";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { Button, Badge, Separator } from "../../../../components/ui/";
|
|
8
|
+
import { Card, CardContent } from "../../../../components/ui/Card";
|
|
9
|
+
import { DescriptionListItem } from "../../../../components/ui/DescriptionList";
|
|
10
10
|
import { useFastDatasetCache } from "./src/useFastDatasetCache";
|
|
11
11
|
function DatasetDetails({ selectedDataset }) {
|
|
12
12
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetDetails.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\n// Shadcn Components\r\nimport { DescriptionListItem } from '../../../../components/ui/DescriptionList'\r\nimport { Button, Badge, Separator } from '../../../../components/ui/'\r\nimport { Card, CardContent } from '../../../../components/ui/Card'\r\nimport * as LR from 'lucide-react'\r\nimport type { Dataset } from '../../../../types/datasetTypes'\r\nimport Link from 'next/link'\r\nimport * as React from 'react'\r\nimport { useTranslations } from 'next-intl'\r\nimport { useFastDatasetCache } from './src/useFastDatasetCache'\r\n\r\ninterface DatasetDetailsProps {\r\n selectedDataset?: Dataset\r\n}\r\n\r\nexport default function DatasetDetails({ selectedDataset }: DatasetDetailsProps) {\r\n // Translation\r\n const t = useTranslations('DatasetDetails')\r\n\r\n const [featuresData, setFeaturesData] = React.useState<any>(null)\r\n const [featuresLoading, setFeaturesLoading] = React.useState(false)\r\n const { getFromCache } = useFastDatasetCache()\r\n\r\n React.useEffect(() => {\r\n let isMounted = true\r\n \r\n if (!selectedDataset) {\r\n setFeaturesData(null)\r\n return\r\n }\r\n\r\n setFeaturesLoading(true)\r\n \r\n getFromCache(selectedDataset).then((data) => {\r\n if (isMounted) {\r\n setFeaturesData(data)\r\n }\r\n }).catch(err => {\r\n console.error('Failed to load dataset features:', err)\r\n if (isMounted) setFeaturesData(null)\r\n }).finally(() => {\r\n if (isMounted) setFeaturesLoading(false)\r\n })\r\n\r\n return () => { isMounted = false }\r\n }, [selectedDataset, getFromCache])\r\n\r\n // console.log(\"Features Data:\", featuresData);\r\n\r\n return (\r\n <div className=\"flex flex-col p-6 sm:h-[718px] overflow-y-auto max-h-[80vh]\">\r\n {/* 2 column headers */}\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label=\"Url\">\r\n <Link\r\n href={selectedDataset.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"underline text-blue-600\"\r\n >\r\n {selectedDataset.url}\r\n </Link>\r\n </DescriptionListItem>\r\n </div>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('publisherLabel')}>\r\n {selectedDataset.publisher || t('noPublisher')}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('licenseLabel')}>\r\n {selectedDataset.license\r\n ? (\r\n getLicense(selectedDataset.license)\r\n )\r\n : t('noLicense')}\r\n </DescriptionListItem>\r\n </div>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('email')} className={`${selectedDataset.contact ? 'underline' : ''}`}>\r\n {selectedDataset.contact || t('noEmail')}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('typeLabel')}>\r\n {selectedDataset.type}\r\n </DescriptionListItem>\r\n </div>\r\n\r\n {(selectedDataset.dateReleased || selectedDataset.dateUpdated) && (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('dateReleasedLabel')}>\r\n {formatDate(selectedDataset.dateReleased) || t('noDateReleased')}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('dateUpdatedLabel')}>\r\n {formatDate(selectedDataset.dateUpdated) || t('noDateUpdated')}\r\n </DescriptionListItem>\r\n </div>\r\n )}\r\n\r\n {featuresData && featuresData.editingInfo && (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('lastEditDateLabel')}>\r\n {featuresLoading\r\n ? t('loading')\r\n : (featuresData?.editingInfo?.lastEditDate\r\n ? formatDate(featuresData.editingInfo.lastEditDate)\r\n : t('unknown'))}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('dataLastEditDateLabel')}>\r\n {featuresLoading\r\n ? t('loading')\r\n : (featuresData?.editingInfo?.dataLastEditDate\r\n ? formatDate(featuresData.editingInfo.dataLastEditDate)\r\n : t('unknown'))}\r\n </DescriptionListItem>\r\n </div>\r\n )}\r\n\r\n {/* Full width headers */}\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('keywordsLabel')} className=\"flex gap-2\">\r\n {selectedDataset.keywords && selectedDataset.keywords.length > 0\r\n ? (\r\n selectedDataset.keywords.map((keyword, index) => (\r\n <Badge className=\"max-h-10 flex cursor-pointer items-start max-w-[120px] truncate\" title={keyword} key={index}>\r\n {keyword}\r\n </Badge>\r\n ))\r\n )\r\n : (\r\n <Badge>\r\n Keyword\r\n </Badge>\r\n )}\r\n </DescriptionListItem>\r\n </div>\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('descriptionLabel')}>\r\n {selectedDataset.description || t('noDescription')}\r\n </DescriptionListItem>\r\n </div>\r\n\r\n {/* Files */}\r\n {selectedDataset.files && selectedDataset.files.length > 0 && (\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label=\"Data and Resources\">\r\n <div className=\"flex flex-col md:flex-row gap-2 md:gap-6 w-full\">\r\n <Card className=\"w-full\">\r\n <CardContent className=\"p-4 md:p-6 flex items-center gap-3\">\r\n <LR.File className=\"w-4 h-4 text-foreground shrink-0\" />\r\n <div className=\"flex items-center justify-between w-full\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm font-semibold text-card-foreground underline\">\r\n Placeholder\r\n </span>\r\n </div>\r\n <Button variant=\"outline\" className=\"hidden md:!flex\">\r\n Explore\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon\"\r\n className=\"md:hidden\"\r\n >\r\n <LR.Download />\r\n </Button>\r\n </div>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </DescriptionListItem>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nfunction formatDate(dateString: string): string {\r\n if (!dateString) return 'Unknown'\r\n // Parse ISO string and format as YYYY-MM-DD\r\n const date = new Date(dateString)\r\n if (isNaN(date.getTime())) return dateString\r\n return date.toISOString().slice(0, 10)\r\n}\r\n\r\nfunction getLicense(license: string) {\r\n // Extract URL from HTML or use as is\r\n const htmlRegex = /<a[^>]+href=['\"]([^'\"]+)['\"][^>]*>(.*?)<\\/a>/i\r\n const match = htmlRegex.exec(license)\r\n if (match) {\r\n return (\r\n <a\r\n href={match[1]}\r\n target=\"_blank\"\r\n rel=\"nofollow ugc noopener noreferrer\"\r\n className=\"underline text-blue-600\"\r\n >\r\n {match[2] || match[1]}\r\n </a>\r\n )\r\n }\r\n // If it's a plain URL string\r\n const urlRegex = /^https?:\\/\\/[^\\s]+$/i\r\n if (urlRegex.test(license)) {\r\n return (\r\n <a\r\n href={license}\r\n target=\"_blank\"\r\n rel=\"nofollow ugc noopener noreferrer\"\r\n className=\"underline text-blue-600\"\r\n >\r\n {license}\r\n </a>\r\n )\r\n }\r\n // Otherwise, just show as text\r\n return license\r\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetDetails.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\n// Shadcn Components\r\nimport * as LR from 'lucide-react'\r\nimport Link from 'next/link'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as React from 'react'\r\n\r\nimport { Button, Badge, Separator } from '../../../../components/ui/'\r\nimport { Card, CardContent } from '../../../../components/ui/Card'\r\nimport { DescriptionListItem } from '../../../../components/ui/DescriptionList'\r\n\r\nimport { useFastDatasetCache } from './src/useFastDatasetCache'\r\n\r\nimport type { Dataset } from '../../../../types/datasetTypes'\r\n\r\ninterface DatasetDetailsProps {\r\n selectedDataset?: Dataset\r\n}\r\n\r\nexport default function DatasetDetails({ selectedDataset }: DatasetDetailsProps) {\r\n // Translation\r\n const t = useTranslations('DatasetDetails')\r\n\r\n const [featuresData, setFeaturesData] = React.useState<any>(null)\r\n const [featuresLoading, setFeaturesLoading] = React.useState(false)\r\n const { getFromCache } = useFastDatasetCache()\r\n\r\n React.useEffect(() => {\r\n let isMounted = true\r\n\r\n if (!selectedDataset) {\r\n setFeaturesData(null)\r\n return\r\n }\r\n\r\n setFeaturesLoading(true)\r\n\r\n getFromCache(selectedDataset).then((data) => {\r\n if (isMounted) {\r\n setFeaturesData(data)\r\n }\r\n }).catch(err => {\r\n console.error('Failed to load dataset features:', err)\r\n if (isMounted) setFeaturesData(null)\r\n }).finally(() => {\r\n if (isMounted) setFeaturesLoading(false)\r\n })\r\n\r\n return () => { isMounted = false }\r\n }, [selectedDataset, getFromCache])\r\n\r\n // console.log(\"Features Data:\", featuresData);\r\n\r\n return (\r\n <div className=\"flex flex-col p-6 sm:h-[718px] overflow-y-auto max-h-[80vh]\">\r\n {/* 2 column headers */}\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label=\"Url\">\r\n <Link\r\n href={selectedDataset.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"underline text-blue-600\"\r\n >\r\n {selectedDataset.url}\r\n </Link>\r\n </DescriptionListItem>\r\n </div>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('publisherLabel')}>\r\n {selectedDataset.publisher || t('noPublisher')}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('licenseLabel')}>\r\n {selectedDataset.license\r\n ? (\r\n getLicense(selectedDataset.license)\r\n )\r\n : t('noLicense')}\r\n </DescriptionListItem>\r\n </div>\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('email')} className={`${selectedDataset.contact ? 'underline' : ''}`}>\r\n {selectedDataset.contact || t('noEmail')}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('typeLabel')}>\r\n {selectedDataset.type}\r\n </DescriptionListItem>\r\n </div>\r\n\r\n {(selectedDataset.dateReleased || selectedDataset.dateUpdated) && (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('dateReleasedLabel')}>\r\n {formatDate(selectedDataset.dateReleased) || t('noDateReleased')}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('dateUpdatedLabel')}>\r\n {formatDate(selectedDataset.dateUpdated) || t('noDateUpdated')}\r\n </DescriptionListItem>\r\n </div>\r\n )}\r\n\r\n {featuresData && featuresData.editingInfo && (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('lastEditDateLabel')}>\r\n {featuresLoading\r\n ? t('loading')\r\n : (featuresData?.editingInfo?.lastEditDate\r\n ? formatDate(featuresData.editingInfo.lastEditDate)\r\n : t('unknown'))}\r\n </DescriptionListItem>\r\n <Separator className=\"md:hidden\" />\r\n <DescriptionListItem label={t('dataLastEditDateLabel')}>\r\n {featuresLoading\r\n ? t('loading')\r\n : (featuresData?.editingInfo?.dataLastEditDate\r\n ? formatDate(featuresData.editingInfo.dataLastEditDate)\r\n : t('unknown'))}\r\n </DescriptionListItem>\r\n </div>\r\n )}\r\n\r\n {/* Full width headers */}\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('keywordsLabel')} className=\"flex gap-2\">\r\n {selectedDataset.keywords && selectedDataset.keywords.length > 0\r\n ? (\r\n selectedDataset.keywords.map((keyword, index) => (\r\n <Badge className=\"max-h-10 flex cursor-pointer items-start max-w-[120px] truncate\" title={keyword} key={index}>\r\n {keyword}\r\n </Badge>\r\n ))\r\n )\r\n : (\r\n <Badge>\r\n Keyword\r\n </Badge>\r\n )}\r\n </DescriptionListItem>\r\n </div>\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label={t('descriptionLabel')}>\r\n {selectedDataset.description || t('noDescription')}\r\n </DescriptionListItem>\r\n </div>\r\n\r\n {/* Files */}\r\n {selectedDataset.files && selectedDataset.files.length > 0 && (\r\n <div className=\"grid grid-cols-1 gap-3 md:gap-6 py-3 border-t border-border\">\r\n <DescriptionListItem label=\"Data and Resources\">\r\n <div className=\"flex flex-col md:flex-row gap-2 md:gap-6 w-full\">\r\n <Card className=\"w-full\">\r\n <CardContent className=\"p-4 md:p-6 flex items-center gap-3\">\r\n <LR.File className=\"w-4 h-4 text-foreground shrink-0\" />\r\n <div className=\"flex items-center justify-between w-full\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm font-semibold text-card-foreground underline\">\r\n Placeholder\r\n </span>\r\n </div>\r\n <Button variant=\"outline\" className=\"hidden md:!flex\">\r\n Explore\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"icon\"\r\n className=\"md:hidden\"\r\n >\r\n <LR.Download />\r\n </Button>\r\n </div>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </DescriptionListItem>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nfunction formatDate(dateString: string): string {\r\n if (!dateString) return 'Unknown'\r\n // Parse ISO string and format as YYYY-MM-DD\r\n const date = new Date(dateString)\r\n if (isNaN(date.getTime())) return dateString\r\n return date.toISOString().slice(0, 10)\r\n}\r\n\r\nfunction getLicense(license: string) {\r\n // Extract URL from HTML or use as is\r\n const htmlRegex = /<a[^>]+href=['\"]([^'\"]+)['\"][^>]*>(.*?)<\\/a>/i\r\n const match = htmlRegex.exec(license)\r\n if (match) {\r\n return (\r\n <a\r\n href={match[1]}\r\n target=\"_blank\"\r\n rel=\"nofollow ugc noopener noreferrer\"\r\n className=\"underline text-blue-600\"\r\n >\r\n {match[2] || match[1]}\r\n </a>\r\n )\r\n }\r\n // If it's a plain URL string\r\n const urlRegex = /^https?:\\/\\/[^\\s]+$/i\r\n if (urlRegex.test(license)) {\r\n return (\r\n <a\r\n href={license}\r\n target=\"_blank\"\r\n rel=\"nofollow ugc noopener noreferrer\"\r\n className=\"underline text-blue-600\"\r\n >\r\n {license}\r\n </a>\r\n )\r\n }\r\n // Otherwise, just show as text\r\n return license\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/index.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqH9B,MAAM,CAAC,OAAO,UAAU,kBAAkB,sBA+LzC"}
|
|
@@ -19,19 +19,6 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
};
|
|
20
20
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
21
21
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
-
import * as React from "react";
|
|
23
|
-
import { useTranslations } from "next-intl";
|
|
24
|
-
import { MapContext, DatasetsContext } from "../../../../../store";
|
|
25
|
-
import { Command, Menubar, Badge, Button, Switch } from "../../../../../components/ui/";
|
|
26
|
-
import {
|
|
27
|
-
Table,
|
|
28
|
-
TableBody,
|
|
29
|
-
TableCell,
|
|
30
|
-
TableRow
|
|
31
|
-
} from "../../../../../components/ui/Table";
|
|
32
|
-
import { FieldsTable } from "./src/FieldsTable";
|
|
33
|
-
import * as LR from "lucide-react";
|
|
34
|
-
import { ClusterManager } from "../../utils/ClusterManager";
|
|
35
22
|
import {
|
|
36
23
|
DndContext,
|
|
37
24
|
closestCenter,
|
|
@@ -50,7 +37,20 @@ import {
|
|
|
50
37
|
useSortable
|
|
51
38
|
} from "@dnd-kit/sortable";
|
|
52
39
|
import { CSS } from "@dnd-kit/utilities";
|
|
40
|
+
import * as LR from "lucide-react";
|
|
41
|
+
import { useTranslations } from "next-intl";
|
|
42
|
+
import * as React from "react";
|
|
43
|
+
import { Command, Menubar, Badge, Button, Switch } from "../../../../../components/ui/";
|
|
44
|
+
import {
|
|
45
|
+
Table,
|
|
46
|
+
TableBody,
|
|
47
|
+
TableCell,
|
|
48
|
+
TableRow
|
|
49
|
+
} from "../../../../../components/ui/Table";
|
|
50
|
+
import { MapContext, DatasetsContext } from "../../../../../store";
|
|
53
51
|
import { useSidebar } from "../../../../ui/Sidebar";
|
|
52
|
+
import { ClusterManager } from "../../utils/ClusterManager";
|
|
53
|
+
import { FieldsTable } from "./src/FieldsTable";
|
|
54
54
|
const isBuildingDataset = (dataset) => dataset.type === "buildings" && "data" in dataset;
|
|
55
55
|
const SortableTableRow = ({
|
|
56
56
|
dataset,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/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\n// Dependencies\r\nimport * as React from 'react'\r\nimport { useTranslations } from 'next-intl'\r\nimport { MapContext, DatasetsContext } from '../../../../../store'\r\nimport { Command, Menubar, Badge, Button, Switch } from '../../../../../components/ui/'\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n} from '../../../../../components/ui/Table'\r\nimport { FieldsTable } from './src/FieldsTable'\r\nimport * as LR from 'lucide-react'\r\nimport type { Dataset, BuildingDataset as RawBuildingDataset } from '../../../../../types/datasetTypes'\r\nimport { ClusterManager } from '../../utils/ClusterManager'\r\nimport {\r\n DndContext,\r\n closestCenter,\r\n KeyboardSensor,\r\n PointerSensor,\r\n useSensor,\r\n useSensors,\r\n DragEndEvent,\r\n} from '@dnd-kit/core'\r\nimport {\r\n arrayMove,\r\n SortableContext,\r\n sortableKeyboardCoordinates,\r\n verticalListSortingStrategy,\r\n} from '@dnd-kit/sortable'\r\nimport {\r\n useSortable,\r\n} from '@dnd-kit/sortable'\r\nimport { CSS } from '@dnd-kit/utilities'\r\nimport { useSidebar } from '../../../../ui/Sidebar'\r\n\r\ntype BuildingDataset = RawBuildingDataset & Dataset\r\n\r\n// Type guard to check if dataset is a building dataset\r\nconst isBuildingDataset = (dataset: Dataset): dataset is BuildingDataset =>\r\n dataset.type === 'buildings' && 'data' in dataset\r\n\r\ninterface SortableTableRowProps {\r\n dataset: Dataset\r\n onToggleDataset: (dataset: Dataset) => void\r\n openDatasetDetails: (datasetName: string) => void\r\n expandedDatasets: Set<string>\r\n}\r\n\r\nconst SortableTableRow: React.FC<SortableTableRowProps> = ({\r\n dataset,\r\n onToggleDataset,\r\n openDatasetDetails,\r\n expandedDatasets,\r\n}) => {\r\n const {\r\n attributes,\r\n listeners,\r\n setNodeRef,\r\n transform,\r\n transition,\r\n isDragging,\r\n } = useSortable({ id: dataset.name })\r\n\r\n const style = {\r\n transform: CSS.Transform.toString(transform),\r\n transition,\r\n opacity: isDragging ? 0.5 : 1,\r\n }\r\n\r\n // Raster (WMS) layers are server-rendered images with no fields and a server-fixed\r\n // colour ramp, so the field-styling table + colour swatch are meaningless — hide them.\r\n const isRaster = dataset.datasetType === 'WMS' || dataset.type === 'WMS'\r\n\r\n return (\r\n <>\r\n <TableRow ref={setNodeRef} style={style} className=\"hover:bg-muted/50\">\r\n <TableCell>\r\n <div className=\"flex items-center gap-2\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"cursor-grab active:cursor-grabbing\"\r\n {...attributes}\r\n {...listeners}\r\n >\r\n <LR.GripVertical className=\"h-4 w-4\" />\r\n </Button>\r\n <Switch\r\n checked={dataset.visible !== false}\r\n onCheckedChange={() => onToggleDataset(dataset)}\r\n className=\"shrink-0\"\r\n style={dataset.visible === false || isRaster ? {} : { backgroundColor: dataset.layerColor.color }}\r\n />\r\n </div>\r\n </TableCell>\r\n <TableCell className=\"font-medium\">\r\n {dataset.name.replaceAll('_', ' ')}\r\n {dataset.total && (\r\n <Badge variant=\"outline\" className=\"ml-2 text-xs\">\r\n {dataset.total}\r\n </Badge>\r\n )}\r\n </TableCell>\r\n <TableCell>\r\n {!isRaster && (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={() => openDatasetDetails(dataset.name)}\r\n className=\"shrink-0\"\r\n >\r\n <LR.ChevronDown\r\n className={`h-4 w-4 transition-transform duration-200 ${expandedDatasets.has(dataset.name) ? 'rotate-180' : ''}`}\r\n />\r\n </Button>\r\n )}\r\n </TableCell>\r\n </TableRow>\r\n {!isRaster && expandedDatasets.has(dataset.name) && (\r\n <TableRow>\r\n <TableCell colSpan={4} className=\"p-0 pb-1\">\r\n <FieldsTable\r\n dataset={dataset}\r\n />\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport default function DatasetManagerMenu() {\r\n // Translation\r\n const t = useTranslations('DatasetManagerMenu')\r\n\r\n const { state: mapState, dispatch: mapDispatch } = React.useContext(MapContext)\r\n const { map } = mapState.map\r\n\r\n const { state: datasetState, dispatch: datasetDispatch } = React.useContext(DatasetsContext)\r\n const { addedDatasets } = datasetState.datasets\r\n\r\n const [open, setOpen] = React.useState(false)\r\n const [menuOpen, setMenuOpen] = React.useState(false)\r\n const [expandedDatasets, setExpandedDatasets] = React.useState<Set<string>>(new Set())\r\n\r\n const sensors = useSensors(\r\n useSensor(PointerSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n )\r\n\r\n const sortedDatasets = React.useMemo(() => {\r\n const datasetsWithOrder = addedDatasets.map((dataset, index) => ({\r\n ...dataset,\r\n order: dataset.order !== undefined ? dataset.order : addedDatasets.length - 1 - index,\r\n }))\r\n\r\n return datasetsWithOrder.sort((a, b) => (b.order ?? 0) - (a.order ?? 0))\r\n }, [addedDatasets])\r\n\r\n React.useEffect(() => {\r\n if (!map || !addedDatasets) return\r\n\r\n const clusterManager = new ClusterManager(map)\r\n\r\n const sortedDatasets = [...addedDatasets].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\r\n\r\n for (const dataset of sortedDatasets) {\r\n if (isBuildingDataset(dataset)) {\r\n if (dataset.visible === false) {\r\n clusterManager.remove(dataset.name)\r\n }\r\n else {\r\n clusterManager.create(dataset)\r\n clusterManager.toggleVisibility(dataset.name, true)\r\n }\r\n }\r\n }\r\n }, [map, addedDatasets])\r\n\r\n // Remove clusters for datasets no longer present\r\n const previousNamesRef = React.useRef<Set<string>>(new Set())\r\n\r\n React.useEffect(() => {\r\n if (!map) return\r\n const clusterManager = new ClusterManager(map)\r\n const currentNames = new Set(\r\n addedDatasets.filter(isBuildingDataset).map(ds => ds.name),\r\n )\r\n const removedNames = [...previousNamesRef.current].filter(\r\n name => !currentNames.has(name),\r\n )\r\n for (const datasetName of removedNames) {\r\n clusterManager.remove(datasetName)\r\n }\r\n previousNamesRef.current = currentNames\r\n }, [map, addedDatasets])\r\n\r\n const onToggle = () => setOpen(!open)\r\n\r\n const onToggleDataset = (dataset: Dataset) => {\r\n const datasetId = dataset.id;\r\n datasetDispatch({ type: 'TOGGLE_DATASET_VISIBILITY', payload: { datasetId } })\r\n }\r\n\r\n const toggleDatasetExpansion = (datasetName: string) => {\r\n setExpandedDatasets((prev) => {\r\n const newSet = new Set(prev)\r\n newSet.has(datasetName) ? newSet.delete(datasetName) : newSet.add(datasetName)\r\n return newSet\r\n })\r\n }\r\n\r\n const handleDragEnd = (event: DragEndEvent) => {\r\n const { active, over } = event\r\n\r\n if (over && active.id !== over.id) {\r\n const displayOrder = [...sortedDatasets]\r\n\r\n const oldIndex = displayOrder.findIndex(dataset => dataset.name === active.id)\r\n const newIndex = displayOrder.findIndex(dataset => dataset.name === over.id)\r\n\r\n const reorderedDisplay = arrayMove(displayOrder, oldIndex, newIndex)\r\n const maxOrder = reorderedDisplay.length - 1\r\n const reorderedDatasets = reorderedDisplay.map((dataset, index) => ({\r\n ...dataset,\r\n order: maxOrder - index,\r\n }))\r\n\r\n datasetDispatch({\r\n type: 'REORDER_DATASETS',\r\n payload: { reorderedDatasets }\r\n })\r\n }\r\n }\r\n\r\n const openAnimation = `\r\n pointer-events-auto \r\n transform \r\n transition-all \r\n duration-200\r\n data-[state=open]:animate-in \r\n data-[state=closed]:animate-out \r\n data-[state=closed]:fade-out-0 \r\n data-[state=open]:fade-in-0 \r\n data-[state=closed]:zoom-out-95 \r\n data-[state=open]:zoom-in-95\r\n `\r\n\r\n React.useEffect(() => {\r\n setMenuOpen(addedDatasets.length > 0)\r\n }, [addedDatasets.length])\r\n\r\n const openDatasetDetails = (datasetName: string) => {\r\n toggleDatasetExpansion(datasetName)\r\n }\r\n\r\n const {openInfo} = useSidebar()\r\n\r\n return (\r\n <>\r\n {!openInfo && addedDatasets.length > 0 && (\r\n <div data-state={menuOpen ? 'open' : 'closed'} className={openAnimation}>\r\n <Menubar className=\"pointer-events-auto w-96 h-auto\">\r\n <Command>\r\n <div>\r\n <div className={`flex items-center justify-between gap-3 ${open ? 'p-3' : 'pl-1 py-0'}`}>\r\n <div className=\"flex items-center gap-2\">\r\n <Badge>{addedDatasets.length}</Badge>\r\n <div className=\"text-sm font-medium\">\r\n {t('appliedLayer')}\r\n {addedDatasets.length === 1 ? '' : 's'}\r\n </div>\r\n </div>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={onToggle}\r\n className=\"opacity-70 hover:opacity-100 transition-opacity duration-200 hover:bg-transparent\"\r\n >\r\n <LR.ChevronUp\r\n size={14}\r\n className={`transition-transform duration-200 ${open ? 'rotate-180' : ''}`}\r\n />\r\n </Button>\r\n </div>\r\n {open && (\r\n <div className=\"max-h-[40vh] overflow-y-auto\">\r\n <DndContext\r\n sensors={sensors}\r\n collisionDetection={closestCenter}\r\n onDragEnd={handleDragEnd}\r\n >\r\n <SortableContext\r\n items={sortedDatasets.map(dataset => dataset.name)}\r\n strategy={verticalListSortingStrategy}\r\n >\r\n <Table>\r\n <TableBody>\r\n {sortedDatasets.map((dataset) => (\r\n <SortableTableRow\r\n key={dataset.name}\r\n dataset={dataset}\r\n onToggleDataset={onToggleDataset}\r\n openDatasetDetails={openDatasetDetails}\r\n expandedDatasets={expandedDatasets}\r\n />\r\n ))}\r\n </TableBody>\r\n </Table>\r\n </SortableContext>\r\n </DndContext>\r\n </div>\r\n )}\r\n </div>\r\n </Command>\r\n </Menubar>\r\n </div>\r\n )}\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["sortedDatasets"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/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\n// Dependencies\r\nimport {\r\n DndContext,\r\n closestCenter,\r\n KeyboardSensor,\r\n PointerSensor,\r\n useSensor,\r\n useSensors\r\n} from '@dnd-kit/core'\r\nimport {\r\n arrayMove,\r\n SortableContext,\r\n sortableKeyboardCoordinates,\r\n verticalListSortingStrategy,\r\n} from '@dnd-kit/sortable'\r\nimport {\r\n useSortable,\r\n} from '@dnd-kit/sortable'\r\nimport { CSS } from '@dnd-kit/utilities'\r\nimport * as LR from 'lucide-react'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as React from 'react'\r\n\r\nimport { Command, Menubar, Badge, Button, Switch } from '../../../../../components/ui/'\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n} from '../../../../../components/ui/Table'\r\nimport { MapContext, DatasetsContext } from '../../../../../store'\r\nimport { useSidebar } from '../../../../ui/Sidebar'\r\nimport { ClusterManager } from '../../utils/ClusterManager'\r\n\r\nimport { FieldsTable } from './src/FieldsTable'\r\n\r\nimport type { Dataset, BuildingDataset as RawBuildingDataset } from '../../../../../types/datasetTypes'\r\nimport type {\r\n DragEndEvent} from '@dnd-kit/core';\r\n\r\n\r\n\r\ntype BuildingDataset = RawBuildingDataset & Dataset\r\n\r\n// Type guard to check if dataset is a building dataset\r\nconst isBuildingDataset = (dataset: Dataset): dataset is BuildingDataset =>\r\n dataset.type === 'buildings' && 'data' in dataset\r\n\r\ninterface SortableTableRowProps {\r\n dataset: Dataset\r\n onToggleDataset: (dataset: Dataset) => void\r\n openDatasetDetails: (datasetName: string) => void\r\n expandedDatasets: Set<string>\r\n}\r\n\r\nconst SortableTableRow: React.FC<SortableTableRowProps> = ({\r\n dataset,\r\n onToggleDataset,\r\n openDatasetDetails,\r\n expandedDatasets,\r\n}) => {\r\n const {\r\n attributes,\r\n listeners,\r\n setNodeRef,\r\n transform,\r\n transition,\r\n isDragging,\r\n } = useSortable({ id: dataset.name })\r\n\r\n const style = {\r\n transform: CSS.Transform.toString(transform),\r\n transition,\r\n opacity: isDragging ? 0.5 : 1,\r\n }\r\n\r\n // Raster (WMS) layers are server-rendered images with no fields and a server-fixed\r\n // colour ramp, so the field-styling table + colour swatch are meaningless — hide them.\r\n const isRaster = dataset.datasetType === 'WMS' || dataset.type === 'WMS'\r\n\r\n return (\r\n <>\r\n <TableRow ref={setNodeRef} style={style} className=\"hover:bg-muted/50\">\r\n <TableCell>\r\n <div className=\"flex items-center gap-2\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"cursor-grab active:cursor-grabbing\"\r\n {...attributes}\r\n {...listeners}\r\n >\r\n <LR.GripVertical className=\"h-4 w-4\" />\r\n </Button>\r\n <Switch\r\n checked={dataset.visible !== false}\r\n onCheckedChange={() => onToggleDataset(dataset)}\r\n className=\"shrink-0\"\r\n style={dataset.visible === false || isRaster ? {} : { backgroundColor: dataset.layerColor.color }}\r\n />\r\n </div>\r\n </TableCell>\r\n <TableCell className=\"font-medium\">\r\n {dataset.name.replaceAll('_', ' ')}\r\n {dataset.total && (\r\n <Badge variant=\"outline\" className=\"ml-2 text-xs\">\r\n {dataset.total}\r\n </Badge>\r\n )}\r\n </TableCell>\r\n <TableCell>\r\n {!isRaster && (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={() => openDatasetDetails(dataset.name)}\r\n className=\"shrink-0\"\r\n >\r\n <LR.ChevronDown\r\n className={`h-4 w-4 transition-transform duration-200 ${expandedDatasets.has(dataset.name) ? 'rotate-180' : ''}`}\r\n />\r\n </Button>\r\n )}\r\n </TableCell>\r\n </TableRow>\r\n {!isRaster && expandedDatasets.has(dataset.name) && (\r\n <TableRow>\r\n <TableCell colSpan={4} className=\"p-0 pb-1\">\r\n <FieldsTable\r\n dataset={dataset}\r\n />\r\n </TableCell>\r\n </TableRow>\r\n )}\r\n </>\r\n )\r\n}\r\n\r\nexport default function DatasetManagerMenu() {\r\n // Translation\r\n const t = useTranslations('DatasetManagerMenu')\r\n\r\n const { state: mapState, dispatch: mapDispatch } = React.useContext(MapContext)\r\n const { map } = mapState.map\r\n\r\n const { state: datasetState, dispatch: datasetDispatch } = React.useContext(DatasetsContext)\r\n const { addedDatasets } = datasetState.datasets\r\n\r\n const [open, setOpen] = React.useState(false)\r\n const [menuOpen, setMenuOpen] = React.useState(false)\r\n const [expandedDatasets, setExpandedDatasets] = React.useState<Set<string>>(new Set())\r\n\r\n const sensors = useSensors(\r\n useSensor(PointerSensor),\r\n useSensor(KeyboardSensor, {\r\n coordinateGetter: sortableKeyboardCoordinates,\r\n })\r\n )\r\n\r\n const sortedDatasets = React.useMemo(() => {\r\n const datasetsWithOrder = addedDatasets.map((dataset, index) => ({\r\n ...dataset,\r\n order: dataset.order !== undefined ? dataset.order : addedDatasets.length - 1 - index,\r\n }))\r\n\r\n return datasetsWithOrder.sort((a, b) => (b.order ?? 0) - (a.order ?? 0))\r\n }, [addedDatasets])\r\n\r\n React.useEffect(() => {\r\n if (!map || !addedDatasets) return\r\n\r\n const clusterManager = new ClusterManager(map)\r\n\r\n const sortedDatasets = [...addedDatasets].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\r\n\r\n for (const dataset of sortedDatasets) {\r\n if (isBuildingDataset(dataset)) {\r\n if (dataset.visible === false) {\r\n clusterManager.remove(dataset.name)\r\n }\r\n else {\r\n clusterManager.create(dataset)\r\n clusterManager.toggleVisibility(dataset.name, true)\r\n }\r\n }\r\n }\r\n }, [map, addedDatasets])\r\n\r\n // Remove clusters for datasets no longer present\r\n const previousNamesRef = React.useRef<Set<string>>(new Set())\r\n\r\n React.useEffect(() => {\r\n if (!map) return\r\n const clusterManager = new ClusterManager(map)\r\n const currentNames = new Set(\r\n addedDatasets.filter(isBuildingDataset).map(ds => ds.name),\r\n )\r\n const removedNames = [...previousNamesRef.current].filter(\r\n name => !currentNames.has(name),\r\n )\r\n for (const datasetName of removedNames) {\r\n clusterManager.remove(datasetName)\r\n }\r\n previousNamesRef.current = currentNames\r\n }, [map, addedDatasets])\r\n\r\n const onToggle = () => setOpen(!open)\r\n\r\n const onToggleDataset = (dataset: Dataset) => {\r\n const datasetId = dataset.id;\r\n datasetDispatch({ type: 'TOGGLE_DATASET_VISIBILITY', payload: { datasetId } })\r\n }\r\n\r\n const toggleDatasetExpansion = (datasetName: string) => {\r\n setExpandedDatasets((prev) => {\r\n const newSet = new Set(prev)\r\n newSet.has(datasetName) ? newSet.delete(datasetName) : newSet.add(datasetName)\r\n return newSet\r\n })\r\n }\r\n\r\n const handleDragEnd = (event: DragEndEvent) => {\r\n const { active, over } = event\r\n\r\n if (over && active.id !== over.id) {\r\n const displayOrder = [...sortedDatasets]\r\n\r\n const oldIndex = displayOrder.findIndex(dataset => dataset.name === active.id)\r\n const newIndex = displayOrder.findIndex(dataset => dataset.name === over.id)\r\n\r\n const reorderedDisplay = arrayMove(displayOrder, oldIndex, newIndex)\r\n const maxOrder = reorderedDisplay.length - 1\r\n const reorderedDatasets = reorderedDisplay.map((dataset, index) => ({\r\n ...dataset,\r\n order: maxOrder - index,\r\n }))\r\n\r\n datasetDispatch({\r\n type: 'REORDER_DATASETS',\r\n payload: { reorderedDatasets }\r\n })\r\n }\r\n }\r\n\r\n const openAnimation = `\r\n pointer-events-auto \r\n transform \r\n transition-all \r\n duration-200\r\n data-[state=open]:animate-in \r\n data-[state=closed]:animate-out \r\n data-[state=closed]:fade-out-0 \r\n data-[state=open]:fade-in-0 \r\n data-[state=closed]:zoom-out-95 \r\n data-[state=open]:zoom-in-95\r\n `\r\n\r\n React.useEffect(() => {\r\n setMenuOpen(addedDatasets.length > 0)\r\n }, [addedDatasets.length])\r\n\r\n const openDatasetDetails = (datasetName: string) => {\r\n toggleDatasetExpansion(datasetName)\r\n }\r\n\r\n const {openInfo} = useSidebar()\r\n\r\n return (\r\n <>\r\n {!openInfo && addedDatasets.length > 0 && (\r\n <div data-state={menuOpen ? 'open' : 'closed'} className={openAnimation}>\r\n <Menubar className=\"pointer-events-auto w-96 h-auto\">\r\n <Command>\r\n <div>\r\n <div className={`flex items-center justify-between gap-3 ${open ? 'p-3' : 'pl-1 py-0'}`}>\r\n <div className=\"flex items-center gap-2\">\r\n <Badge>{addedDatasets.length}</Badge>\r\n <div className=\"text-sm font-medium\">\r\n {t('appliedLayer')}\r\n {addedDatasets.length === 1 ? '' : 's'}\r\n </div>\r\n </div>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={onToggle}\r\n className=\"opacity-70 hover:opacity-100 transition-opacity duration-200 hover:bg-transparent\"\r\n >\r\n <LR.ChevronUp\r\n size={14}\r\n className={`transition-transform duration-200 ${open ? 'rotate-180' : ''}`}\r\n />\r\n </Button>\r\n </div>\r\n {open && (\r\n <div className=\"max-h-[40vh] overflow-y-auto\">\r\n <DndContext\r\n sensors={sensors}\r\n collisionDetection={closestCenter}\r\n onDragEnd={handleDragEnd}\r\n >\r\n <SortableContext\r\n items={sortedDatasets.map(dataset => dataset.name)}\r\n strategy={verticalListSortingStrategy}\r\n >\r\n <Table>\r\n <TableBody>\r\n {sortedDatasets.map((dataset) => (\r\n <SortableTableRow\r\n key={dataset.name}\r\n dataset={dataset}\r\n onToggleDataset={onToggleDataset}\r\n openDatasetDetails={openDatasetDetails}\r\n expandedDatasets={expandedDatasets}\r\n />\r\n ))}\r\n </TableBody>\r\n </Table>\r\n </SortableContext>\r\n </DndContext>\r\n </div>\r\n )}\r\n </div>\r\n </Command>\r\n </Menubar>\r\n </div>\r\n )}\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["sortedDatasets"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldsTable.d.ts","sourceRoot":"","sources":["../../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FieldsTable.d.ts","sourceRoot":"","sources":["../../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EAAa,OAAO,EAAgB,MAAM,sCAAsC,CAAA;AAE5F,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,qBA2OxD"}
|
|
@@ -19,12 +19,12 @@ 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 { useTranslations, useLocale } from "next-intl";
|
|
23
|
+
import * as React from "react";
|
|
24
24
|
import { Checkbox, Input, LoadingSpinner } from "../../../../../../components/ui/";
|
|
25
25
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../../../../../../components/ui/Table";
|
|
26
|
-
import { formatName } from "../../utils";
|
|
27
26
|
import { DatasetsContext } from "../../../../../../store";
|
|
27
|
+
import { formatName } from "../../utils";
|
|
28
28
|
function FieldsTable({ dataset }) {
|
|
29
29
|
const t = useTranslations("FieldsTable");
|
|
30
30
|
const locale = useLocale();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.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\n// Dependencies\r\nimport * as React from 'react'\r\nimport { useTranslations, useLocale } from 'next-intl'\r\n\r\n// Shadcn components\r\nimport { Checkbox, Input, LoadingSpinner } from '../../../../../../components/ui/'\r\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../../../../../../components/ui/Table'\r\nimport { formatName } from '../../utils'\r\nimport type { ColorType, Dataset, DatasetField } from '../../../../../../types/datasetTypes'\r\nimport { DatasetsContext } from '../../../../../../store'\r\n\r\ninterface FieldsTableProps {\r\n dataset: Dataset\r\n}\r\n\r\nexport function FieldsTable({ dataset }: FieldsTableProps) {\r\n const t = useTranslations('FieldsTable')\r\n const locale = useLocale()\r\n const datasetId = dataset.id\r\n const { dispatch: datasetDispatch } = React.useContext(DatasetsContext)\r\n\r\n const [fields, setFields] = React.useState<DatasetField[]>([])\r\n const [loading, setLoading] = React.useState(false)\r\n const [fieldColors, setFieldColors] = React.useState<Record<string, { single?: string; min?: string; max?: string }>>({})\r\n const [selectedField, setSelectedField] = React.useState<string>('All features')\r\n\r\n const getEffectiveColor = (fieldName: string, colorType: 'min' | 'max' | 'single') => {\r\n const userColor = fieldColors[fieldName]?.[colorType]\r\n if (userColor) return userColor\r\n if (colorType === 'single') return dataset.layerColor.color\r\n if (colorType === 'min') return dataset.layerColor.minColor || dataset.layerColor.color\r\n if (colorType === 'max') return dataset.layerColor.maxColor || dataset.layerColor.color\r\n return '#cccccc'\r\n }\r\n\r\n const onSelectingField = (field: DatasetField) => {\r\n datasetDispatch({ type: 'SET_SELECTED_FIELD', payload: { datasetName: dataset.name, fieldName: field.name } })\r\n setSelectedField(field.name)\r\n }\r\n\r\n const debouncedDispatchRef = React.useRef<NodeJS.Timeout | null>(null)\r\n const handleColorChange = React.useCallback((fieldName: string, color: string, colorType: 'single' | 'min' | 'max') => {\r\n setFieldColors(prev => ({\r\n ...prev,\r\n [fieldName]: { ...prev[fieldName], [colorType]: color },\r\n }))\r\n if (fieldName === selectedField) {\r\n if (debouncedDispatchRef.current) clearTimeout(debouncedDispatchRef.current)\r\n debouncedDispatchRef.current = setTimeout(() => {\r\n const layerColor = {\r\n ...dataset.layerColor,\r\n ...(colorType === 'single' && { color }),\r\n ...(colorType === 'min' && { minColor: color }),\r\n ...(colorType === 'max' && { maxColor: color }),\r\n }\r\n datasetDispatch({ type: 'DATASET_COLOR', payload: { datasetId, layerColor } })\r\n datasetDispatch({ type: 'SET_FIELD_COLOR', payload: { datasetName: dataset.name, fieldName: fieldName, layerColor } })\r\n }, 200)\r\n }\r\n }, [selectedField, dataset.layerColor, datasetId, datasetDispatch])\r\n\r\n React.useEffect(() => () => { if (debouncedDispatchRef.current) clearTimeout(debouncedDispatchRef.current) }, [])\r\n\r\n const filteredFields = React.useMemo<DatasetField[]>(() => {\r\n const result: DatasetField[] = fields.filter(field => {\r\n const t = (field as any).type\r\n if (t === 'id') return false\r\n const key = field.name || 'unnamed'\r\n const lowerKey = key.toLowerCase()\r\n const coordinateKeys = ['globalid', 'latitude', 'lat', 'longitude', 'lng', 'lon', 'coordinates', 'coordina', 'x', 'y', 'z']\r\n if (coordinateKeys.includes(lowerKey)) return false\r\n const hasIdWord = /(^|[\\s_-])id($|[\\s_-])/i.test(lowerKey) || lowerKey.endsWith('id')\r\n if (hasIdWord) return false\r\n if (locale === 'En') {\r\n const fr = ['fr', 'fre', 'french']\r\n const es = ['es', 'esp', 'spanish']\r\n if (fr.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n if (es.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n } else if (locale === 'Fr') {\r\n const en = ['en', 'eng', 'engl', 'english']\r\n const es = ['es', 'esp', 'spanish']\r\n if (en.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n if (es.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n } else if (locale === 'Es') {\r\n const en = ['en', 'eng', 'engl', 'english']\r\n const fr = ['fr', 'fre', 'french']\r\n if (en.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n if (fr.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n }\r\n return true\r\n })\r\n if (!result.some(f => (f as any).name === 'All features')) {\r\n // Insert All features synthetic row with explicit colorType so it can show a single color picker\r\n result.unshift({ name: 'All features', type: 'single', colorType: 'single' } as any)\r\n }\r\n return result\r\n }, [fields, locale])\r\n\r\n // Simple categorization relying solely on pre-inferred field.type (includes 'datetime')\r\n const colorType = (field: DatasetField): 'single' | 'minMax' | 'boolean' => {\r\n const t = typeof field.type === 'string' ? field.type.toLowerCase() : field.type\r\n if (t === 'number' || t === 'datetime') return 'minMax'\r\n if (t === 'boolean') return 'boolean'\r\n return 'single'\r\n }\r\n\r\n interface RowConfig {\r\n showMinMax?: boolean\r\n showSingleColor?: boolean\r\n selectable: boolean\r\n minLabel?: string\r\n maxLabel?: string\r\n }\r\n\r\n const buildConfig = (rowCat: ColorType): RowConfig => {\r\n switch (rowCat) {\r\n case 'single': return { showSingleColor: true, selectable: true }\r\n case 'minMax': return { showMinMax: true, selectable: true, minLabel: 'min', maxLabel: 'max' }\r\n case 'boolean': return { showMinMax: true, selectable: true, minLabel: 'No', maxLabel: 'Yes' }\r\n default: return { selectable: true }\r\n }\r\n }\r\n\r\n const renderColorControls = (field: DatasetField, rowConfig: RowConfig, isSelected: boolean) => {\r\n if (!isSelected) return null\r\n if (rowConfig.showSingleColor) {\r\n return (\r\n <div className=\"flex gap-1\">\r\n <div className=\"w-5 h-5 rounded-md overflow-hidden border border-gray-300 shadow-sm\">\r\n <Input\r\n type=\"color\"\r\n value={getEffectiveColor(field.name, 'single')}\r\n onChange={e => handleColorChange(field.name, e.target.value, 'single')}\r\n className=\"w-full h-full p-0 border-0 cursor-pointer [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-0 [&::-webkit-color-swatch]:rounded-none\"\r\n title={t('fieldColor')}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n if (rowConfig.showMinMax) {\r\n return (\r\n <div className=\"flex gap-2 items-center\">\r\n <div className=\"flex items-center gap-1\">\r\n {rowConfig.minLabel && <span className=\"text-xs text-muted-foreground\">{rowConfig.minLabel}</span>}\r\n <div className=\"w-5 h-5 rounded-sm overflow-hidden border border-gray-300 shadow-sm\">\r\n <Input\r\n type=\"color\"\r\n value={getEffectiveColor(field.name, 'min')}\r\n onChange={e => handleColorChange(field.name, e.target.value, 'min')}\r\n className=\"w-full h-full p-0 border-0 cursor-pointer [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-0 [&::-webkit-color-swatch]:rounded-none\"\r\n title={rowConfig.minLabel}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"flex items-center gap-1\">\r\n {rowConfig.maxLabel && <span className=\"text-xs text-muted-foreground\">{rowConfig.maxLabel}</span>}\r\n <div className=\"w-5 h-5 rounded-sm overflow-hidden border border-gray-300 shadow-sm\">\r\n <Input\r\n type=\"color\"\r\n value={getEffectiveColor(field.name, 'max')}\r\n onChange={e => handleColorChange(field.name, e.target.value, 'max')}\r\n className=\"w-full h-full p-0 border-0 cursor-pointer [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-0 [&::-webkit-color-swatch]:rounded-none\"\r\n title={rowConfig.maxLabel}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n return null\r\n }\r\n\r\n React.useEffect(() => {\r\n let mounted = true\r\n if (!dataset.getFields) setFields(dataset.fields || [])\r\n async function fetchFields() {\r\n setLoading(true)\r\n if (dataset && typeof dataset.getFields === 'function') {\r\n const result = await dataset.getFields()\r\n const datasetFields: DatasetField[] = result.map(f => ({\r\n name: f.name,\r\n datasetName: dataset.name,\r\n colorType: colorType(f),\r\n type: f.type,\r\n layerColor: dataset.layerColor,\r\n selected: false\r\n }))\r\n datasetDispatch({ type: 'SET_DATASET_FIELDS', payload: { datasetName: dataset.name, datasetFields } })\r\n if (mounted && Array.isArray(result)) setFields(datasetFields)\r\n }\r\n if (mounted) setLoading(false)\r\n }\r\n fetchFields()\r\n return () => { mounted = false }\r\n }, [dataset.name])\r\n\r\n React.useEffect(() => {\r\n if (selectedField === 'All features') {\r\n const allField = filteredFields.find(f => f.name === 'All features')\r\n if (allField) onSelectingField(allField as DatasetField)\r\n }\r\n }, [filteredFields, selectedField, dataset.name])\r\n\r\n return (\r\n <div className=\"mt-4\">\r\n {loading ? (\r\n <div className=\"flex items-center gap-2 py-4 justify-center\">\r\n <LoadingSpinner />\r\n <span className=\"text-sm\">{t('loadingText')}</span>\r\n </div>\r\n ) : (\r\n <Table>\r\n <TableHeader>\r\n <TableRow className=\"h-8\">\r\n <TableHead className=\"w-16 text-xs\"></TableHead>\r\n <TableHead className=\"text-xs\">{t('fieldName')}</TableHead>\r\n <TableHead className=\"text-xs\">{t('color')}</TableHead>\r\n </TableRow>\r\n </TableHeader>\r\n <TableBody>\r\n {filteredFields.map(field => {\r\n const fieldColorType = field.colorType\r\n const rowConfig = buildConfig(fieldColorType as any)\r\n // Override: only show single color picker for the synthetic 'All features' row\r\n if (fieldColorType === 'single') {\r\n rowConfig.showSingleColor = field.name === 'All features'\r\n }\r\n const isSelected = selectedField === field.name\r\n const colorControls = renderColorControls(field, rowConfig, isSelected)\r\n return (\r\n <TableRow key={field.name} className=\"h-8\">\r\n <TableCell className=\"py-2\">\r\n {rowConfig.selectable && (\r\n <Checkbox\r\n checked={isSelected}\r\n onCheckedChange={() => onSelectingField(field)}\r\n />\r\n )}\r\n </TableCell>\r\n <TableCell className=\"py-2 text-sm\">{formatName(field.name)}</TableCell>\r\n <TableCell className=\"py-2\">{colorControls}</TableCell>\r\n </TableRow>\r\n )\r\n })}\r\n </TableBody>\r\n </Table>\r\n )}\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":["colorType","t"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.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\n// Dependencies\r\nimport { useTranslations, useLocale } from 'next-intl'\r\nimport * as React from 'react'\r\n\r\n// Shadcn components\r\nimport { Checkbox, Input, LoadingSpinner } from '../../../../../../components/ui/'\r\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../../../../../../components/ui/Table'\r\nimport { DatasetsContext } from '../../../../../../store'\r\nimport { formatName } from '../../utils'\r\n\r\nimport type { ColorType, Dataset, DatasetField } from '../../../../../../types/datasetTypes'\r\n\r\ninterface FieldsTableProps {\r\n dataset: Dataset\r\n}\r\n\r\nexport function FieldsTable({ dataset }: FieldsTableProps) {\r\n const t = useTranslations('FieldsTable')\r\n const locale = useLocale()\r\n const datasetId = dataset.id\r\n const { dispatch: datasetDispatch } = React.useContext(DatasetsContext)\r\n\r\n const [fields, setFields] = React.useState<DatasetField[]>([])\r\n const [loading, setLoading] = React.useState(false)\r\n const [fieldColors, setFieldColors] = React.useState<Record<string, { single?: string; min?: string; max?: string }>>({})\r\n const [selectedField, setSelectedField] = React.useState<string>('All features')\r\n\r\n const getEffectiveColor = (fieldName: string, colorType: 'min' | 'max' | 'single') => {\r\n const userColor = fieldColors[fieldName]?.[colorType]\r\n if (userColor) return userColor\r\n if (colorType === 'single') return dataset.layerColor.color\r\n if (colorType === 'min') return dataset.layerColor.minColor || dataset.layerColor.color\r\n if (colorType === 'max') return dataset.layerColor.maxColor || dataset.layerColor.color\r\n return '#cccccc'\r\n }\r\n\r\n const onSelectingField = (field: DatasetField) => {\r\n datasetDispatch({ type: 'SET_SELECTED_FIELD', payload: { datasetName: dataset.name, fieldName: field.name } })\r\n setSelectedField(field.name)\r\n }\r\n\r\n const debouncedDispatchRef = React.useRef<NodeJS.Timeout | null>(null)\r\n const handleColorChange = React.useCallback((fieldName: string, color: string, colorType: 'single' | 'min' | 'max') => {\r\n setFieldColors(prev => ({\r\n ...prev,\r\n [fieldName]: { ...prev[fieldName], [colorType]: color },\r\n }))\r\n if (fieldName === selectedField) {\r\n if (debouncedDispatchRef.current) clearTimeout(debouncedDispatchRef.current)\r\n debouncedDispatchRef.current = setTimeout(() => {\r\n const layerColor = {\r\n ...dataset.layerColor,\r\n ...(colorType === 'single' && { color }),\r\n ...(colorType === 'min' && { minColor: color }),\r\n ...(colorType === 'max' && { maxColor: color }),\r\n }\r\n datasetDispatch({ type: 'DATASET_COLOR', payload: { datasetId, layerColor } })\r\n datasetDispatch({ type: 'SET_FIELD_COLOR', payload: { datasetName: dataset.name, fieldName: fieldName, layerColor } })\r\n }, 200)\r\n }\r\n }, [selectedField, dataset.layerColor, datasetId, datasetDispatch])\r\n\r\n React.useEffect(() => () => { if (debouncedDispatchRef.current) clearTimeout(debouncedDispatchRef.current) }, [])\r\n\r\n const filteredFields = React.useMemo<DatasetField[]>(() => {\r\n const result: DatasetField[] = fields.filter(field => {\r\n const t = (field as any).type\r\n if (t === 'id') return false\r\n const key = field.name || 'unnamed'\r\n const lowerKey = key.toLowerCase()\r\n const coordinateKeys = ['globalid', 'latitude', 'lat', 'longitude', 'lng', 'lon', 'coordinates', 'coordina', 'x', 'y', 'z']\r\n if (coordinateKeys.includes(lowerKey)) return false\r\n const hasIdWord = /(^|[\\s_-])id($|[\\s_-])/i.test(lowerKey) || lowerKey.endsWith('id')\r\n if (hasIdWord) return false\r\n if (locale === 'En') {\r\n const fr = ['fr', 'fre', 'french']\r\n const es = ['es', 'esp', 'spanish']\r\n if (fr.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n if (es.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n } else if (locale === 'Fr') {\r\n const en = ['en', 'eng', 'engl', 'english']\r\n const es = ['es', 'esp', 'spanish']\r\n if (en.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n if (es.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n } else if (locale === 'Es') {\r\n const en = ['en', 'eng', 'engl', 'english']\r\n const fr = ['fr', 'fre', 'french']\r\n if (en.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n if (fr.some(ind => lowerKey === ind || lowerKey.endsWith(`_${ind}`) || lowerKey.startsWith(`${ind}_`))) return false\r\n }\r\n return true\r\n })\r\n if (!result.some(f => (f as any).name === 'All features')) {\r\n // Insert All features synthetic row with explicit colorType so it can show a single color picker\r\n result.unshift({ name: 'All features', type: 'single', colorType: 'single' } as any)\r\n }\r\n return result\r\n }, [fields, locale])\r\n\r\n // Simple categorization relying solely on pre-inferred field.type (includes 'datetime')\r\n const colorType = (field: DatasetField): 'single' | 'minMax' | 'boolean' => {\r\n const t = typeof field.type === 'string' ? field.type.toLowerCase() : field.type\r\n if (t === 'number' || t === 'datetime') return 'minMax'\r\n if (t === 'boolean') return 'boolean'\r\n return 'single'\r\n }\r\n\r\n interface RowConfig {\r\n showMinMax?: boolean\r\n showSingleColor?: boolean\r\n selectable: boolean\r\n minLabel?: string\r\n maxLabel?: string\r\n }\r\n\r\n const buildConfig = (rowCat: ColorType): RowConfig => {\r\n switch (rowCat) {\r\n case 'single': return { showSingleColor: true, selectable: true }\r\n case 'minMax': return { showMinMax: true, selectable: true, minLabel: 'min', maxLabel: 'max' }\r\n case 'boolean': return { showMinMax: true, selectable: true, minLabel: 'No', maxLabel: 'Yes' }\r\n default: return { selectable: true }\r\n }\r\n }\r\n\r\n const renderColorControls = (field: DatasetField, rowConfig: RowConfig, isSelected: boolean) => {\r\n if (!isSelected) return null\r\n if (rowConfig.showSingleColor) {\r\n return (\r\n <div className=\"flex gap-1\">\r\n <div className=\"w-5 h-5 rounded-md overflow-hidden border border-gray-300 shadow-sm\">\r\n <Input\r\n type=\"color\"\r\n value={getEffectiveColor(field.name, 'single')}\r\n onChange={e => handleColorChange(field.name, e.target.value, 'single')}\r\n className=\"w-full h-full p-0 border-0 cursor-pointer [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-0 [&::-webkit-color-swatch]:rounded-none\"\r\n title={t('fieldColor')}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n if (rowConfig.showMinMax) {\r\n return (\r\n <div className=\"flex gap-2 items-center\">\r\n <div className=\"flex items-center gap-1\">\r\n {rowConfig.minLabel && <span className=\"text-xs text-muted-foreground\">{rowConfig.minLabel}</span>}\r\n <div className=\"w-5 h-5 rounded-sm overflow-hidden border border-gray-300 shadow-sm\">\r\n <Input\r\n type=\"color\"\r\n value={getEffectiveColor(field.name, 'min')}\r\n onChange={e => handleColorChange(field.name, e.target.value, 'min')}\r\n className=\"w-full h-full p-0 border-0 cursor-pointer [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-0 [&::-webkit-color-swatch]:rounded-none\"\r\n title={rowConfig.minLabel}\r\n />\r\n </div>\r\n </div>\r\n <div className=\"flex items-center gap-1\">\r\n {rowConfig.maxLabel && <span className=\"text-xs text-muted-foreground\">{rowConfig.maxLabel}</span>}\r\n <div className=\"w-5 h-5 rounded-sm overflow-hidden border border-gray-300 shadow-sm\">\r\n <Input\r\n type=\"color\"\r\n value={getEffectiveColor(field.name, 'max')}\r\n onChange={e => handleColorChange(field.name, e.target.value, 'max')}\r\n className=\"w-full h-full p-0 border-0 cursor-pointer [&::-webkit-color-swatch-wrapper]:p-0 [&::-webkit-color-swatch]:border-0 [&::-webkit-color-swatch]:rounded-none\"\r\n title={rowConfig.maxLabel}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n return null\r\n }\r\n\r\n React.useEffect(() => {\r\n let mounted = true\r\n if (!dataset.getFields) setFields(dataset.fields || [])\r\n async function fetchFields() {\r\n setLoading(true)\r\n if (dataset && typeof dataset.getFields === 'function') {\r\n const result = await dataset.getFields()\r\n const datasetFields: DatasetField[] = result.map(f => ({\r\n name: f.name,\r\n datasetName: dataset.name,\r\n colorType: colorType(f),\r\n type: f.type,\r\n layerColor: dataset.layerColor,\r\n selected: false\r\n }))\r\n datasetDispatch({ type: 'SET_DATASET_FIELDS', payload: { datasetName: dataset.name, datasetFields } })\r\n if (mounted && Array.isArray(result)) setFields(datasetFields)\r\n }\r\n if (mounted) setLoading(false)\r\n }\r\n fetchFields()\r\n return () => { mounted = false }\r\n }, [dataset.name])\r\n\r\n React.useEffect(() => {\r\n if (selectedField === 'All features') {\r\n const allField = filteredFields.find(f => f.name === 'All features')\r\n if (allField) onSelectingField(allField as DatasetField)\r\n }\r\n }, [filteredFields, selectedField, dataset.name])\r\n\r\n return (\r\n <div className=\"mt-4\">\r\n {loading ? (\r\n <div className=\"flex items-center gap-2 py-4 justify-center\">\r\n <LoadingSpinner />\r\n <span className=\"text-sm\">{t('loadingText')}</span>\r\n </div>\r\n ) : (\r\n <Table>\r\n <TableHeader>\r\n <TableRow className=\"h-8\">\r\n <TableHead className=\"w-16 text-xs\"></TableHead>\r\n <TableHead className=\"text-xs\">{t('fieldName')}</TableHead>\r\n <TableHead className=\"text-xs\">{t('color')}</TableHead>\r\n </TableRow>\r\n </TableHeader>\r\n <TableBody>\r\n {filteredFields.map(field => {\r\n const fieldColorType = field.colorType\r\n const rowConfig = buildConfig(fieldColorType as any)\r\n // Override: only show single color picker for the synthetic 'All features' row\r\n if (fieldColorType === 'single') {\r\n rowConfig.showSingleColor = field.name === 'All features'\r\n }\r\n const isSelected = selectedField === field.name\r\n const colorControls = renderColorControls(field, rowConfig, isSelected)\r\n return (\r\n <TableRow key={field.name} className=\"h-8\">\r\n <TableCell className=\"py-2\">\r\n {rowConfig.selectable && (\r\n <Checkbox\r\n checked={isSelected}\r\n onCheckedChange={() => onSelectingField(field)}\r\n />\r\n )}\r\n </TableCell>\r\n <TableCell className=\"py-2 text-sm\">{formatName(field.name)}</TableCell>\r\n <TableCell className=\"py-2\">{colorControls}</TableCell>\r\n </TableRow>\r\n )\r\n })}\r\n </TableBody>\r\n </Table>\r\n )}\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":["colorType","t"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetSkeleton.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetSkeleton.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatasetSkeleton.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetSkeleton.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,OAAO,UAAU,eAAe,gCAyEtC"}
|