@collabdt/core 0.3.0 → 0.3.2
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 -4
- 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 +13 -3
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js +144 -146
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
- package/dist/core/components/ui/Comments/Comment.d.ts +18 -1
- package/dist/core/components/ui/Comments/Comment.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/Comment.js +97 -26
- package/dist/core/components/ui/Comments/Comment.js.map +1 -1
- package/dist/core/components/ui/Comments/CommentActionButtons.d.ts +34 -0
- package/dist/core/components/ui/Comments/CommentActionButtons.d.ts.map +1 -0
- package/dist/core/components/ui/Comments/CommentActionButtons.js +106 -0
- package/dist/core/components/ui/Comments/CommentActionButtons.js.map +1 -0
- package/dist/core/components/ui/Comments/CommentInput.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CommentInput.js +11 -8
- 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 +89 -45
- 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 +2 -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 +0 -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 +16 -12
- 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 -10
- 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 -9
- 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 +33 -10
- 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 -2
- 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 -8
- 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 -14
- 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 -4
- 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/files/utils/fuzzySearch.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js +0 -1
- package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js.map +1 -1
- package/dist/core/components/viewers/Data/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 -13
- 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/filterHelper.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/utils/filterHelper.js +0 -2
- package/dist/core/components/viewers/Data/utils/filterHelper.js.map +1 -1
- package/dist/core/components/viewers/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 -9
- 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 +11 -17
- 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 +10 -18
- 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 +5 -4
- 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 -2
- 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 +16 -10
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js +26 -6
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts +23 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js +108 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts +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/clusterMarkersByScreenSpace.d.ts +44 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.d.ts.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js +77 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts +24 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js +27 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js.map +1 -0
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/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 +3 -3
- 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 +244 -63
- 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 -10
- 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 -4
- 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 +6 -7
- 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 +13 -16
- 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 +3 -6
- 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 -6
- 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 -12
- 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 -11
- 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 -56
- 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 -5
- 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 +182 -61
- 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 +4 -3
- 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 -14
- 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 +5 -4
- 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 -6
- 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 +6 -10
- 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/AddFile/utils/uploadToPresignedURLS.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js +1 -3
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js.map +1 -1
- package/dist/core/components/viewers/map/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/MapEventManager/MapClickManager.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js +0 -1
- package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js.map +1 -1
- package/dist/core/components/viewers/map/utils/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 +0 -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/map/utils/getOsmIdbyCoordinates.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js +0 -2
- package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js.map +1 -1
- package/dist/core/components/viewers/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/comments.d.ts +11 -0
- package/dist/core/hooks/comments/comments.d.ts.map +1 -1
- package/dist/core/hooks/comments/comments.js +3 -1
- package/dist/core/hooks/comments/comments.js.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.d.ts +12 -1
- package/dist/core/hooks/comments/createCommentHooks.d.ts.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.js +31 -2
- 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 -2
- 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/ui/useResizableSidebarWidth.d.ts +30 -0
- package/dist/core/hooks/ui/useResizableSidebarWidth.d.ts.map +1 -0
- package/dist/core/hooks/ui/useResizableSidebarWidth.js +75 -0
- package/dist/core/hooks/ui/useResizableSidebarWidth.js.map +1 -0
- package/dist/core/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 +1877 -1872
- package/dist/core/i18n/messages/es.json +1875 -1870
- package/dist/core/i18n/messages/fr.json +1875 -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 +0 -2
- 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 +0 -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 +6 -3
- package/dist/core/store/Menus/context.js.map +1 -1
- package/dist/core/store/Menus/reducer.d.ts +21 -1
- package/dist/core/store/Menus/reducer.d.ts.map +1 -1
- package/dist/core/store/Menus/reducer.js +21 -3
- 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/markerUtils.d.ts +10 -0
- package/dist/core/utils/markerUtils.d.ts.map +1 -1
- package/dist/core/utils/markerUtils.js +9 -1
- package/dist/core/utils/markerUtils.js.map +1 -1
- package/dist/core/utils/memcache.d.ts.map +1 -1
- package/dist/core/utils/memcache.js +0 -7
- package/dist/core/utils/memcache.js.map +1 -1
- package/dist/core/utils/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 +8 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/Data/utils/useViewerData.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { useMemo } from 'react'\r\n\r\nimport type { Building, Infrastructure, Site, User, DbFile } from '../../../../types/dbTypes'\r\nimport { ViewerNames } from '../../../../types/dbTypes'\r\nimport type { FileRow } from '../../../../types/files'\r\nimport type { FilterState } from '../../../../types/global'\r\nimport { filterHelper, getNarrowedFilterOptions, getUniqueColumnValues } from './filterHelper'\r\nimport { formatPosition } from './positionParser'\r\n\r\n// ---------------------------------------------------------------------------\r\n// Types\r\n// ---------------------------------------------------------------------------\r\n\r\ninterface UseViewerDataParams {\r\n currentViewer: ViewerNames\r\n buildings: Building[] | undefined\r\n sites: Site[] | undefined\r\n infrastructures: Infrastructure[] | undefined\r\n files: {\r\n id: number | string\r\n name: string\r\n attachedFilesBuildingId?: number | null\r\n uploadedAt: string | Date\r\n extension?: string | null\r\n sizeBytes: number\r\n position?: unknown\r\n }[] | undefined\r\n users: Partial<User>[] | undefined\r\n /** Loading flags from each data hook */\r\n loadingFlags: {\r\n buildings: boolean\r\n sites: boolean\r\n infrastructures: boolean\r\n files: boolean\r\n users: boolean\r\n }\r\n searchTerm: string\r\n activeFilters: FilterState[]\r\n /** Raw filter state (used by getNarrowedFilterOptions) */\r\n filters: FilterState[]\r\n /** Current user email */\r\n userEmail: string\r\n}\r\n\r\ninterface UseViewerDataResult {\r\n data: Building[] | Site[] | Infrastructure[] | FileRow[] | Partial<User>[]\r\n filteredData: Building[] | Site[] | Infrastructure[] | FileRow[] | Partial<User>[]\r\n filtersOptions: ReturnType<typeof getNarrowedFilterOptions>\r\n isLoading: boolean\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Search helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nfunction matchesSearch(value: unknown, term: string): boolean {\r\n return String(value).toLowerCase().includes(term.toLowerCase())\r\n}\r\n\r\nfunction searchFields(fields: unknown[], term: string): boolean {\r\n return fields.some(v => matchesSearch(v, term))\r\n}\r\n\r\nfunction searchAllValues(obj: object, term: string): boolean {\r\n return Object.values(obj).some(v => matchesSearch(v, term))\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Hook\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function useViewerData({\r\n currentViewer,\r\n buildings,\r\n sites,\r\n infrastructures,\r\n files,\r\n users,\r\n loadingFlags,\r\n searchTerm,\r\n activeFilters,\r\n filters,\r\n userEmail,\r\n}: UseViewerDataParams): UseViewerDataResult {\r\n\r\n // Memoize the mapped FileRow array independently so the files case below\r\n // doesn't re-derive it on every render unrelated to files data changing.\r\n const mappedFiles: FileRow[] = useMemo(() => {\r\n if (!files) return []\r\n return files.map(file => ({\r\n id: String(file.id),\r\n name: file.name,\r\n attachedTo: [\r\n { type: 'building' as const, buildingId: String(file.attachedFilesBuildingId || '') },\r\n ],\r\n dateUploaded: file.uploadedAt,\r\n uploadedBy: userEmail || 'Unknown',\r\n fileType: file.extension?.toUpperCase() || '',\r\n fileSize: `${(file.sizeBytes / (1024 * 1024)).toFixed(3)} MB`,\r\n position: formatPosition(file.position as string),\r\n metadata: file as unknown as DbFile,\r\n }))\r\n }, [files, userEmail])\r\n\r\n return useMemo((): UseViewerDataResult => {\r\n switch (currentViewer) {\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.buildings: {\r\n const data = buildings || []\r\n const searched = data.filter(b =>\r\n searchFields([\r\n b.buildingName,\r\n b.buildingCountrySubdivision,\r\n b.buildingMunicipality,\r\n b.buildingType,\r\n b.buildingAddress,\r\n ], searchTerm),\r\n )\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.buildings,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.sites: {\r\n const data = sites || []\r\n const searched = data.filter(s => searchAllValues(s, searchTerm))\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.sites,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.infrastructure: {\r\n const data = infrastructures || []\r\n const searched = data.filter((infra: Infrastructure) =>\r\n searchFields([\r\n infra.infrastructureName,\r\n infra.infrastructureType,\r\n infra.infrastructureCountrySubdivision,\r\n infra.infrastructureMunicipality,\r\n ], searchTerm),\r\n )\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.infrastructures,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.files: {\r\n const data = mappedFiles.filter(file => file.metadata.tag?.toLowerCase() !== 'user')\r\n const searched = data.filter(f => searchAllValues(f, searchTerm))\r\n const filteredData = filterHelper(searched, activeFilters)\r\n\r\n const baseFilterOptions = [\r\n {\r\n id: 'name',\r\n label: 'Name',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'name'),\r\n },\r\n {\r\n id: 'dateUploaded',\r\n label: 'Date Uploaded',\r\n type: 'date',\r\n valueOptions: getUniqueColumnValues(data, 'dateUploaded'),\r\n },\r\n {\r\n id: 'fileType',\r\n label: 'File Type',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'fileType'),\r\n },\r\n {\r\n id: 'fileSize',\r\n label: 'File Size',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'fileSize'),\r\n },\r\n {\r\n id: 'uploadedBy',\r\n label: 'Uploaded By',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'uploadedBy'),\r\n },\r\n ]\r\n\r\n const filtersOptions = getNarrowedFilterOptions(data, baseFilterOptions, filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.files,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.users: {\r\n const data = users || []\r\n const searched = data.filter(u =>\r\n searchFields([u.name, u.email, u.organizationId], searchTerm),\r\n )\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.users,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n default:\r\n return {\r\n data: [],\r\n filteredData: [],\r\n filtersOptions: [],\r\n isLoading: false,\r\n }\r\n }\r\n }, [\r\n currentViewer,\r\n buildings,\r\n sites,\r\n infrastructures,\r\n mappedFiles,\r\n users,\r\n loadingFlags,\r\n searchTerm,\r\n activeFilters,\r\n filters,\r\n ])\r\n}"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/Data/utils/useViewerData.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { useMemo } from 'react'\r\n\r\nimport { ViewerNames } from '../../../../types/dbTypes'\r\n\r\nimport { filterHelper, getNarrowedFilterOptions, getUniqueColumnValues } from './filterHelper'\r\nimport { formatPosition } from './positionParser'\r\n\r\nimport type { Building, Infrastructure, Site, User, DbFile } from '../../../../types/dbTypes'\r\nimport type { FileRow } from '../../../../types/files'\r\nimport type { FilterState } from '../../../../types/global'\r\n\r\n\r\n// ---------------------------------------------------------------------------\r\n// Types\r\n// ---------------------------------------------------------------------------\r\n\r\ninterface UseViewerDataParams {\r\n currentViewer: ViewerNames\r\n buildings: Building[] | undefined\r\n sites: Site[] | undefined\r\n infrastructures: Infrastructure[] | undefined\r\n files: {\r\n id: number | string\r\n name: string\r\n attachedFilesBuildingId?: number | null\r\n uploadedAt: string | Date\r\n extension?: string | null\r\n sizeBytes: number\r\n position?: unknown\r\n }[] | undefined\r\n users: Partial<User>[] | undefined\r\n /** Loading flags from each data hook */\r\n loadingFlags: {\r\n buildings: boolean\r\n sites: boolean\r\n infrastructures: boolean\r\n files: boolean\r\n users: boolean\r\n }\r\n searchTerm: string\r\n activeFilters: FilterState[]\r\n /** Raw filter state (used by getNarrowedFilterOptions) */\r\n filters: FilterState[]\r\n /** Current user email */\r\n userEmail: string\r\n}\r\n\r\ninterface UseViewerDataResult {\r\n data: Building[] | Site[] | Infrastructure[] | FileRow[] | Partial<User>[]\r\n filteredData: Building[] | Site[] | Infrastructure[] | FileRow[] | Partial<User>[]\r\n filtersOptions: ReturnType<typeof getNarrowedFilterOptions>\r\n isLoading: boolean\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Search helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nfunction matchesSearch(value: unknown, term: string): boolean {\r\n return String(value).toLowerCase().includes(term.toLowerCase())\r\n}\r\n\r\nfunction searchFields(fields: unknown[], term: string): boolean {\r\n return fields.some(v => matchesSearch(v, term))\r\n}\r\n\r\nfunction searchAllValues(obj: object, term: string): boolean {\r\n return Object.values(obj).some(v => matchesSearch(v, term))\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Hook\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function useViewerData({\r\n currentViewer,\r\n buildings,\r\n sites,\r\n infrastructures,\r\n files,\r\n users,\r\n loadingFlags,\r\n searchTerm,\r\n activeFilters,\r\n filters,\r\n userEmail,\r\n}: UseViewerDataParams): UseViewerDataResult {\r\n\r\n // Memoize the mapped FileRow array independently so the files case below\r\n // doesn't re-derive it on every render unrelated to files data changing.\r\n const mappedFiles: FileRow[] = useMemo(() => {\r\n if (!files) return []\r\n return files.map(file => ({\r\n id: String(file.id),\r\n name: file.name,\r\n attachedTo: [\r\n { type: 'building' as const, buildingId: String(file.attachedFilesBuildingId || '') },\r\n ],\r\n dateUploaded: file.uploadedAt,\r\n uploadedBy: userEmail || 'Unknown',\r\n fileType: file.extension?.toUpperCase() || '',\r\n fileSize: `${(file.sizeBytes / (1024 * 1024)).toFixed(3)} MB`,\r\n position: formatPosition(file.position as string),\r\n metadata: file as unknown as DbFile,\r\n }))\r\n }, [files, userEmail])\r\n\r\n return useMemo((): UseViewerDataResult => {\r\n switch (currentViewer) {\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.buildings: {\r\n const data = buildings || []\r\n const searched = data.filter(b =>\r\n searchFields([\r\n b.buildingName,\r\n b.buildingCountrySubdivision,\r\n b.buildingMunicipality,\r\n b.buildingType,\r\n b.buildingAddress,\r\n ], searchTerm),\r\n )\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.buildings,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.sites: {\r\n const data = sites || []\r\n const searched = data.filter(s => searchAllValues(s, searchTerm))\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.sites,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.infrastructure: {\r\n const data = infrastructures || []\r\n const searched = data.filter((infra: Infrastructure) =>\r\n searchFields([\r\n infra.infrastructureName,\r\n infra.infrastructureType,\r\n infra.infrastructureCountrySubdivision,\r\n infra.infrastructureMunicipality,\r\n ], searchTerm),\r\n )\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.infrastructures,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.files: {\r\n const data = mappedFiles.filter(file => file.metadata.tag?.toLowerCase() !== 'user')\r\n const searched = data.filter(f => searchAllValues(f, searchTerm))\r\n const filteredData = filterHelper(searched, activeFilters)\r\n\r\n const baseFilterOptions = [\r\n {\r\n id: 'name',\r\n label: 'Name',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'name'),\r\n },\r\n {\r\n id: 'dateUploaded',\r\n label: 'Date Uploaded',\r\n type: 'date',\r\n valueOptions: getUniqueColumnValues(data, 'dateUploaded'),\r\n },\r\n {\r\n id: 'fileType',\r\n label: 'File Type',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'fileType'),\r\n },\r\n {\r\n id: 'fileSize',\r\n label: 'File Size',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'fileSize'),\r\n },\r\n {\r\n id: 'uploadedBy',\r\n label: 'Uploaded By',\r\n type: 'string',\r\n valueOptions: getUniqueColumnValues(data, 'uploadedBy'),\r\n },\r\n ]\r\n\r\n const filtersOptions = getNarrowedFilterOptions(data, baseFilterOptions, filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.files,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n case ViewerNames.users: {\r\n const data = users || []\r\n const searched = data.filter(u =>\r\n searchFields([u.name, u.email, u.organizationId], searchTerm),\r\n )\r\n const filteredData = filterHelper(searched, activeFilters)\r\n const filtersOptions = getNarrowedFilterOptions(data, [], filters)\r\n\r\n return {\r\n data,\r\n filteredData,\r\n filtersOptions,\r\n isLoading: loadingFlags.users,\r\n }\r\n }\r\n\r\n // -----------------------------------------------------------------------\r\n default:\r\n return {\r\n data: [],\r\n filteredData: [],\r\n filtersOptions: [],\r\n isLoading: false,\r\n }\r\n }\r\n }, [\r\n currentViewer,\r\n buildings,\r\n sites,\r\n infrastructures,\r\n mappedFiles,\r\n users,\r\n loadingFlags,\r\n searchTerm,\r\n activeFilters,\r\n filters,\r\n ])\r\n}"],"mappings":"AAGA,SAAS,eAAe;AAExB,SAAS,mBAAmB;AAE5B,SAAS,cAAc,0BAA0B,6BAA6B;AAC9E,SAAS,sBAAsB;AAqD/B,SAAS,cAAc,OAAgB,MAAuB;AAC5D,SAAO,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,KAAK,YAAY,CAAC;AAChE;AAEA,SAAS,aAAa,QAAmB,MAAuB;AAC9D,SAAO,OAAO,KAAK,OAAK,cAAc,GAAG,IAAI,CAAC;AAChD;AAEA,SAAS,gBAAgB,KAAa,MAAuB;AAC3D,SAAO,OAAO,OAAO,GAAG,EAAE,KAAK,OAAK,cAAc,GAAG,IAAI,CAAC;AAC5D;AAMO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA6C;AAI3C,QAAM,cAAyB,QAAQ,MAAM;AAC3C,QAAI,CAAC,MAAO,QAAO,CAAC;AACpB,WAAO,MAAM,IAAI,UAAK;AA/F1B;AA+F8B;AAAA,QACxB,IAAI,OAAO,KAAK,EAAE;AAAA,QAClB,MAAM,KAAK;AAAA,QACX,YAAY;AAAA,UACV,EAAE,MAAM,YAAqB,YAAY,OAAO,KAAK,2BAA2B,EAAE,EAAE;AAAA,QACtF;AAAA,QACA,cAAc,KAAK;AAAA,QACnB,YAAY,aAAa;AAAA,QACzB,YAAU,UAAK,cAAL,mBAAgB,kBAAiB;AAAA,QAC3C,UAAU,IAAI,KAAK,aAAa,OAAO,OAAO,QAAQ,CAAC,CAAC;AAAA,QACxD,UAAU,eAAe,KAAK,QAAkB;AAAA,QAChD,UAAU;AAAA,MACZ;AAAA,KAAE;AAAA,EACJ,GAAG,CAAC,OAAO,SAAS,CAAC;AAErB,SAAO,QAAQ,MAA2B;AACxC,YAAQ,eAAe;AAAA;AAAA,MAErB,KAAK,YAAY,WAAW;AAC1B,cAAM,OAAO,aAAa,CAAC;AAC3B,cAAM,WAAW,KAAK;AAAA,UAAO,OAC3B,aAAa;AAAA,YACX,EAAE;AAAA,YACF,EAAE;AAAA,YACF,EAAE;AAAA,YACF,EAAE;AAAA,YACF,EAAE;AAAA,UACJ,GAAG,UAAU;AAAA,QACf;AACA,cAAM,eAAe,aAAa,UAAU,aAAa;AACzD,cAAM,iBAAiB,yBAAyB,MAAM,CAAC,GAAG,OAAO;AAEjE,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW,aAAa;AAAA,QAC1B;AAAA,MACF;AAAA;AAAA,MAGA,KAAK,YAAY,OAAO;AACtB,cAAM,OAAO,SAAS,CAAC;AACvB,cAAM,WAAW,KAAK,OAAO,OAAK,gBAAgB,GAAG,UAAU,CAAC;AAChE,cAAM,eAAe,aAAa,UAAU,aAAa;AACzD,cAAM,iBAAiB,yBAAyB,MAAM,CAAC,GAAG,OAAO;AAEjE,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW,aAAa;AAAA,QAC1B;AAAA,MACF;AAAA;AAAA,MAGA,KAAK,YAAY,gBAAgB;AAC/B,cAAM,OAAO,mBAAmB,CAAC;AACjC,cAAM,WAAW,KAAK;AAAA,UAAO,CAAC,UAC5B,aAAa;AAAA,YACX,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,YACN,MAAM;AAAA,UACR,GAAG,UAAU;AAAA,QACf;AACA,cAAM,eAAe,aAAa,UAAU,aAAa;AACzD,cAAM,iBAAiB,yBAAyB,MAAM,CAAC,GAAG,OAAO;AAEjE,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW,aAAa;AAAA,QAC1B;AAAA,MACF;AAAA;AAAA,MAGA,KAAK,YAAY,OAAO;AACtB,cAAM,OAAO,YAAY,OAAO,UAAK;AA9K7C;AA8KgD,6BAAK,SAAS,QAAd,mBAAmB,mBAAkB;AAAA,SAAM;AACnF,cAAM,WAAW,KAAK,OAAO,OAAK,gBAAgB,GAAG,UAAU,CAAC;AAChE,cAAM,eAAe,aAAa,UAAU,aAAa;AAEzD,cAAM,oBAAoB;AAAA,UACxB;AAAA,YACE,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,MAAM;AAAA,YACN,cAAc,sBAAsB,MAAM,MAAM;AAAA,UAClD;AAAA,UACA;AAAA,YACE,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,MAAM;AAAA,YACN,cAAc,sBAAsB,MAAM,cAAc;AAAA,UAC1D;AAAA,UACA;AAAA,YACE,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,MAAM;AAAA,YACN,cAAc,sBAAsB,MAAM,UAAU;AAAA,UACtD;AAAA,UACA;AAAA,YACE,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,MAAM;AAAA,YACN,cAAc,sBAAsB,MAAM,UAAU;AAAA,UACtD;AAAA,UACA;AAAA,YACE,IAAI;AAAA,YACJ,OAAO;AAAA,YACP,MAAM;AAAA,YACN,cAAc,sBAAsB,MAAM,YAAY;AAAA,UACxD;AAAA,QACF;AAEA,cAAM,iBAAiB,yBAAyB,MAAM,mBAAmB,OAAO;AAEhF,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW,aAAa;AAAA,QAC1B;AAAA,MACF;AAAA;AAAA,MAGA,KAAK,YAAY,OAAO;AACtB,cAAM,OAAO,SAAS,CAAC;AACvB,cAAM,WAAW,KAAK;AAAA,UAAO,OAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU;AAAA,QAC9D;AACA,cAAM,eAAe,aAAa,UAAU,aAAa;AACzD,cAAM,iBAAiB,yBAAyB,MAAM,CAAC,GAAG,OAAO;AAEjE,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW,aAAa;AAAA,QAC1B;AAAA,MACF;AAAA;AAAA,MAGA;AACE,eAAO;AAAA,UACL,MAAM,CAAC;AAAA,UACP,cAAc,CAAC;AAAA,UACf,gBAAgB,CAAC;AAAA,UACjB,WAAW;AAAA,QACb;AAAA,IACJ;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Viewer.d.ts","sourceRoot":"","sources":["../../../../src/core/components/viewers/Viewer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Viewer.d.ts","sourceRoot":"","sources":["../../../../src/core/components/viewers/Viewer.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAsCvD,UAAU,WAAW;IACnB,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,MAAM,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,WAAW,qBAyHhJ"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import dynamic from "next/dynamic";
|
|
5
3
|
import { Loader2 } from "lucide-react";
|
|
4
|
+
import dynamic from "next/dynamic";
|
|
6
5
|
import { useSearchParams, useRouter, usePathname } from "next/navigation";
|
|
7
|
-
import
|
|
6
|
+
import * as React from "react";
|
|
8
7
|
import { BuildingsContext, MenusContext } from "../../store";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
8
|
+
import { ViewerNames } from "../../types";
|
|
9
|
+
import { switchLanguage } from "../../utils/utils";
|
|
11
10
|
import { UserSettings } from "../settings";
|
|
12
11
|
import { Toolbar } from "../Toolbar";
|
|
13
|
-
import {
|
|
12
|
+
import { SidebarTrigger } from "../ui/Sidebar";
|
|
13
|
+
import { MapViewer } from "./map/MapViewer";
|
|
14
14
|
const BimViewer = dynamic(
|
|
15
15
|
() => import("./bim/BimViewer").then((m) => ({ default: m.BimViewer })),
|
|
16
16
|
{ ssr: false, loading: () => /* @__PURE__ */ jsx(ViewerLoadingFallback, { label: "Loading BIM viewer\u2026" }) }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/components/viewers/Viewer.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 dynamic from 'next/dynamic'\r\nimport { Loader2 } from 'lucide-react'\r\nimport { useSearchParams, useRouter, usePathname } from 'next/navigation'\r\nimport { ViewerNames } from '../../types'\r\nimport { BuildingsContext, MenusContext } from '../../store'\r\nimport { MapViewer } from './map/MapViewer'\r\n// Deep file import (not the ui barrel): the barrel re-exports heavy modules\r\n// (InfoSidebar, useFileUploadHandler, …) that would land in the eager map-route bundle.\r\nimport { SidebarTrigger } from '../ui/Sidebar'\r\nimport { UserSettings } from '../settings'\r\nimport { Toolbar } from '../Toolbar'\r\nimport { switchLanguage } from '../../utils/utils'\r\nimport { Organization } from '../../types/dbTypes'\r\n\r\n// Code-split the heavy viewers: BimViewer pulls in ~456 KB gzipped of\r\n// @thatopen/*, PointCloudViewer the Potree loader stack — loaded only when\r\n// selected, so map-only sessions never pay their cost. MapViewer stays static\r\n// because every user lands on it.\r\nconst BimViewer = dynamic(\r\n () => import('./bim/BimViewer').then(m => ({ default: m.BimViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading BIM viewer…\" /> },\r\n)\r\nconst PointCloudViewer = dynamic(\r\n () => import('./pointcloud/PointCloudViewer').then(m => ({ default: m.PointCloudViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading point cloud viewer…\" /> },\r\n)\r\n\r\n// DataMenu transitively imports BimViewer (via FilePreview), so keep it lazy\r\n// too — a static import would pull @thatopen + three/webgpu back into the eager\r\n// bundle. Only rendered for the data viewers, so map-only sessions skip it.\r\nconst DataMenu = dynamic(\r\n () => import('./Data/DataMenu').then(m => ({ default: m.DataMenu })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading data…\" /> },\r\n)\r\n\r\n// Styled to match the in-viewer loading card (see BimLoadingState): a soft\r\n// backdrop-blurred overlay with a bordered card, spinner + label. Uses only\r\n// Tailwind tokens + one lucide icon, so it adds no meaningful weight to the\r\n// eager map-route bundle (Viewer.tsx is statically imported).\r\nfunction ViewerLoadingFallback({ label }: { label: string }) {\r\n return (\r\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-background/50 backdrop-blur-[1px]\">\r\n <div className=\"flex items-center gap-3 rounded-md border border-border bg-card px-5 py-4 shadow-sm\">\r\n <Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\r\n <span className=\"text-foreground text-base font-medium font-['Inter'] leading-7\">{label}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\ninterface ViewerProps {\r\n organization: Organization\r\n minioBaseUrl?: string\r\n martinBaseUrl?: string\r\n pointcloudApiUrl?: string\r\n maptilerKey?: string\r\n geocodeEarthApiKey?: string\r\n geocoderUrl?: string\r\n}\r\n\r\nexport function Viewer({ organization, minioBaseUrl, martinBaseUrl, pointcloudApiUrl, maptilerKey, geocodeEarthApiKey, geocoderUrl }: ViewerProps) {\r\n\r\n const searchParams = useSearchParams()\r\n const viewer = (searchParams.get('viewer') as ViewerNames) || ViewerNames.map\r\n\r\n const { dispatch: menusDispatch, state: menusState } = React.useContext(MenusContext)\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n // const { dispatch: appConfigDispatch } = React.useContext(AppConfigContext)\r\n const { building } = buildingState.buildings\r\n const { currentViewer } = menusState.menus\r\n const router = useRouter()\r\n const pathname = usePathname()\r\n const [isMounted, setIsMounted] = React.useState(false)\r\n\r\n // Use a ref to track if we're currently updating -> prevent circular updates\r\n const isUpdatingRef = React.useRef(false)\r\n\r\n const { appContent } = organization\r\n\r\n // Check if viewer is valid based on appContent\r\n const isViewerValid = appContent.length === 0 || appContent.includes(viewer)\r\n \r\n // Use default viewer (map) if current viewer is not valid\r\n const validViewer = isViewerValid ? viewer : ViewerNames.map\r\n\r\n // Update URL if viewer was not available for the organization\r\n React.useEffect(() => {\r\n if (isMounted && !isViewerValid && viewer !== ViewerNames.map) {\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.delete('viewer')\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n }\r\n }, [isMounted, isViewerValid, viewer, searchParams, pathname, router, building?.id])\r\n\r\n // On first mount, respond to URL\r\n React.useEffect(() => {\r\n if (!isMounted) {\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n setIsMounted(true)\r\n }\r\n }, [isMounted, validViewer, menusDispatch])\r\n\r\n React.useEffect(() => {\r\n if (!organization) return\r\n const defaultLanguage = organization.languages?.[0] || 'En'\r\n if (defaultLanguage) switchLanguage(defaultLanguage)\r\n }, [organization])\r\n\r\n // Handle context changes (from sidebar, HeaderButtons, etc.)\r\n React.useEffect(() => {\r\n if (!isMounted || !currentViewer || currentViewer === validViewer || isUpdatingRef.current) {\r\n return\r\n }\r\n\r\n isUpdatingRef.current = true\r\n\r\n // Create URLSearchParams to preserve existing search params\r\n\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.set('viewer', currentViewer)\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n\r\n\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n\r\n // Reset the flag after a brief delay to allow the navigation to complete\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }, [currentViewer, isMounted, pathname, router, viewer, searchParams])\r\n\r\n // Handle URL changes (direct navigation)\r\n React.useEffect(() => {\r\n if (isMounted && currentViewer !== validViewer && !isUpdatingRef.current) {\r\n isUpdatingRef.current = true\r\n\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n\r\n // Reset the flag after a brief delay\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }\r\n }, [validViewer, menusDispatch, isMounted, currentViewer])\r\n\r\n const selectedViewer = (\r\n <>\r\n {[ViewerNames.map, ViewerNames.bim, ViewerNames.pointcloud].includes(validViewer) && <SidebarTrigger />}\r\n <div style={{ height: '100%', width: '100%', position: 'relative' }}>\r\n <div style={{ display: validViewer === ViewerNames.map ? 'block' : 'none', width: '100%', height: '100%' }}>\r\n <MapViewer organization={organization} minioBaseUrl={minioBaseUrl} maptilerKey={maptilerKey} />\r\n </div>\r\n {validViewer === ViewerNames.bim && <BimViewer />}\r\n {validViewer === ViewerNames.pointcloud && <PointCloudViewer pointcloudApiUrl={pointcloudApiUrl} />}\r\n {[ViewerNames.buildings, ViewerNames.sites, ViewerNames.files, ViewerNames.land, ViewerNames.infrastructure, ViewerNames.extensions, ViewerNames.users].includes(validViewer) && (\r\n <DataMenu currentViewer={validViewer} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n )}\r\n {[ViewerNames.settings].includes(validViewer) && (\r\n <UserSettings minioBaseUrl={minioBaseUrl} />\r\n )}\r\n </div>\r\n </>\r\n )\r\n\r\n return (\r\n <>\r\n {selectedViewer}\r\n <Toolbar viewer={validViewer} minioBaseUrl={minioBaseUrl} martinBaseUrl={martinBaseUrl} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n </>\r\n )\r\n}"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/components/viewers/Viewer.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 { Loader2 } from 'lucide-react'\r\nimport dynamic from 'next/dynamic'\r\nimport { useSearchParams, useRouter, usePathname } from 'next/navigation'\r\nimport * as React from 'react'\r\n\r\nimport { BuildingsContext, MenusContext } from '../../store'\r\nimport { ViewerNames } from '../../types'\r\n\r\n// Deep file import (not the ui barrel): the barrel re-exports heavy modules\r\n// (InfoSidebar, useFileUploadHandler, …) that would land in the eager map-route bundle.\r\nimport { switchLanguage } from '../../utils/utils'\r\nimport { UserSettings } from '../settings'\r\nimport { Toolbar } from '../Toolbar'\r\nimport { SidebarTrigger } from '../ui/Sidebar'\r\n\r\nimport { MapViewer } from './map/MapViewer'\r\n\r\nimport type { Organization } from '../../types/dbTypes'\r\n\r\n// Code-split the heavy viewers: BimViewer pulls in ~456 KB gzipped of\r\n// @thatopen/*, PointCloudViewer the Potree loader stack — loaded only when\r\n// selected, so map-only sessions never pay their cost. MapViewer stays static\r\n// because every user lands on it.\r\nconst BimViewer = dynamic(\r\n () => import('./bim/BimViewer').then(m => ({ default: m.BimViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading BIM viewer…\" /> },\r\n)\r\nconst PointCloudViewer = dynamic(\r\n () => import('./pointcloud/PointCloudViewer').then(m => ({ default: m.PointCloudViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading point cloud viewer…\" /> },\r\n)\r\n\r\n// DataMenu transitively imports BimViewer (via FilePreview), so keep it lazy\r\n// too — a static import would pull @thatopen + three/webgpu back into the eager\r\n// bundle. Only rendered for the data viewers, so map-only sessions skip it.\r\nconst DataMenu = dynamic(\r\n () => import('./Data/DataMenu').then(m => ({ default: m.DataMenu })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading data…\" /> },\r\n)\r\n\r\n// Styled to match the in-viewer loading card (see BimLoadingState): a soft\r\n// backdrop-blurred overlay with a bordered card, spinner + label. Uses only\r\n// Tailwind tokens + one lucide icon, so it adds no meaningful weight to the\r\n// eager map-route bundle (Viewer.tsx is statically imported).\r\nfunction ViewerLoadingFallback({ label }: { label: string }) {\r\n return (\r\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-background/50 backdrop-blur-[1px]\">\r\n <div className=\"flex items-center gap-3 rounded-md border border-border bg-card px-5 py-4 shadow-sm\">\r\n <Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\r\n <span className=\"text-foreground text-base font-medium font-['Inter'] leading-7\">{label}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\ninterface ViewerProps {\r\n organization: Organization\r\n minioBaseUrl?: string\r\n martinBaseUrl?: string\r\n pointcloudApiUrl?: string\r\n maptilerKey?: string\r\n geocodeEarthApiKey?: string\r\n geocoderUrl?: string\r\n}\r\n\r\nexport function Viewer({ organization, minioBaseUrl, martinBaseUrl, pointcloudApiUrl, maptilerKey, geocodeEarthApiKey, geocoderUrl }: ViewerProps) {\r\n\r\n const searchParams = useSearchParams()\r\n const viewer = (searchParams.get('viewer') as ViewerNames) || ViewerNames.map\r\n\r\n const { dispatch: menusDispatch, state: menusState } = React.useContext(MenusContext)\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n // const { dispatch: appConfigDispatch } = React.useContext(AppConfigContext)\r\n const { building } = buildingState.buildings\r\n const { currentViewer } = menusState.menus\r\n const router = useRouter()\r\n const pathname = usePathname()\r\n const [isMounted, setIsMounted] = React.useState(false)\r\n\r\n // Use a ref to track if we're currently updating -> prevent circular updates\r\n const isUpdatingRef = React.useRef(false)\r\n\r\n const { appContent } = organization\r\n\r\n // Check if viewer is valid based on appContent\r\n const isViewerValid = appContent.length === 0 || appContent.includes(viewer)\r\n\r\n // Use default viewer (map) if current viewer is not valid\r\n const validViewer = isViewerValid ? viewer : ViewerNames.map\r\n\r\n // Update URL if viewer was not available for the organization\r\n React.useEffect(() => {\r\n if (isMounted && !isViewerValid && viewer !== ViewerNames.map) {\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.delete('viewer')\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n }\r\n }, [isMounted, isViewerValid, viewer, searchParams, pathname, router, building?.id])\r\n\r\n // On first mount, respond to URL\r\n React.useEffect(() => {\r\n if (!isMounted) {\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n setIsMounted(true)\r\n }\r\n }, [isMounted, validViewer, menusDispatch])\r\n\r\n React.useEffect(() => {\r\n if (!organization) return\r\n const defaultLanguage = organization.languages?.[0] || 'En'\r\n if (defaultLanguage) switchLanguage(defaultLanguage)\r\n }, [organization])\r\n\r\n // Handle context changes (from sidebar, HeaderButtons, etc.)\r\n React.useEffect(() => {\r\n if (!isMounted || !currentViewer || currentViewer === validViewer || isUpdatingRef.current) {\r\n return\r\n }\r\n\r\n isUpdatingRef.current = true\r\n\r\n // Create URLSearchParams to preserve existing search params\r\n\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.set('viewer', currentViewer)\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n\r\n\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n\r\n // Reset the flag after a brief delay to allow the navigation to complete\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }, [currentViewer, isMounted, pathname, router, viewer, searchParams])\r\n\r\n // Handle URL changes (direct navigation)\r\n React.useEffect(() => {\r\n if (isMounted && currentViewer !== validViewer && !isUpdatingRef.current) {\r\n isUpdatingRef.current = true\r\n\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n\r\n // Reset the flag after a brief delay\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }\r\n }, [validViewer, menusDispatch, isMounted, currentViewer])\r\n\r\n const selectedViewer = (\r\n <>\r\n {[ViewerNames.map, ViewerNames.bim, ViewerNames.pointcloud].includes(validViewer) && <SidebarTrigger />}\r\n <div style={{ height: '100%', width: '100%', position: 'relative' }}>\r\n <div style={{ display: validViewer === ViewerNames.map ? 'block' : 'none', width: '100%', height: '100%' }}>\r\n <MapViewer organization={organization} minioBaseUrl={minioBaseUrl} maptilerKey={maptilerKey} />\r\n </div>\r\n {validViewer === ViewerNames.bim && <BimViewer />}\r\n {validViewer === ViewerNames.pointcloud && <PointCloudViewer pointcloudApiUrl={pointcloudApiUrl} />}\r\n {[ViewerNames.buildings, ViewerNames.sites, ViewerNames.files, ViewerNames.land, ViewerNames.infrastructure, ViewerNames.extensions, ViewerNames.users].includes(validViewer) && (\r\n <DataMenu currentViewer={validViewer} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n )}\r\n {[ViewerNames.settings].includes(validViewer) && (\r\n <UserSettings minioBaseUrl={minioBaseUrl} />\r\n )}\r\n </div>\r\n </>\r\n )\r\n\r\n return (\r\n <>\r\n {selectedViewer}\r\n <Toolbar viewer={validViewer} minioBaseUrl={minioBaseUrl} martinBaseUrl={martinBaseUrl} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n </>\r\n )\r\n}"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BimToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimToolbar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"BimToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimToolbar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,wBAAgB,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,qBAErE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
import { bimToolbarTools } from "./src/tools/bimToolbar";
|
|
4
3
|
import { ToolbarBody } from "../../ToolbarBody";
|
|
4
|
+
import { bimToolbarTools } from "./src/tools/bimToolbar";
|
|
5
5
|
function BimToolbar({ minioBaseUrl }) {
|
|
6
6
|
return /* @__PURE__ */ jsx(ToolbarBody, { viewer: "bim", tools: bimToolbarTools({ minioBaseUrl }) });
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimToolbar.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimToolbar.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\n\r\nimport { ToolbarBody } from '../../ToolbarBody'\r\n\r\nimport { bimToolbarTools } from './src/tools/bimToolbar'\r\n\r\nexport function BimToolbar({ minioBaseUrl }: { minioBaseUrl?: string }) {\r\n return <ToolbarBody viewer=\"bim\" tools={bimToolbarTools({ minioBaseUrl })} />\r\n}\r\n"],"mappings":";AAYS;AALT,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAEzB,SAAS,WAAW,EAAE,aAAa,GAA8B;AACtE,SAAO,oBAAC,eAAY,QAAO,OAAM,OAAO,gBAAgB,EAAE,aAAa,CAAC,GAAG;AAC7E;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BimViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimViewer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BimViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimViewer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,wBAAgB,SAAS,sBA2PxB"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import * as React from "react";
|
|
4
3
|
import * as OBC from "@thatopen/components";
|
|
5
4
|
import * as OBF from "@thatopen/components-front";
|
|
6
|
-
import * as THREE from "three";
|
|
7
5
|
import { useTranslations, useLocale } from "next-intl";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import * as THREE from "three";
|
|
8
8
|
import { ToolsContext, BimContext, MenusContext } from "../../../store";
|
|
9
|
-
import {
|
|
9
|
+
import { useBimCoordinateSystem } from "../useCoordinateSystem";
|
|
10
|
+
import { BimLoadingState } from "./src/BimLoadingState";
|
|
10
11
|
import { CurrentCamera } from "./src/CurrentCamera";
|
|
11
|
-
import {
|
|
12
|
-
import { FloorplanTool } from "./src/FloorplanTool";
|
|
12
|
+
import { CurrentWorld } from "./src/CurrentWorld";
|
|
13
13
|
import { ElevationsTool } from "./src/ElevationsTool";
|
|
14
|
+
import { FloorplanTool } from "./src/FloorplanTool";
|
|
15
|
+
import { Highlighter } from "./src/Highlighter";
|
|
14
16
|
import { ViewModeCoordinator } from "./src/lib/ViewModeCoordinator";
|
|
15
17
|
import { PropertiesMenu } from "./src/propertiesMenu";
|
|
16
|
-
import { BimLoadingState } from "./src/BimLoadingState";
|
|
17
18
|
import { ViewportGizmo } from "./src/ViewportGizmo";
|
|
18
|
-
import { useBimCoordinateSystem } from "../useCoordinateSystem";
|
|
19
19
|
function BimViewer() {
|
|
20
20
|
var _a, _b, _c;
|
|
21
21
|
const t = useTranslations("ViewportGizmo");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimViewer.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 OBC from \"@thatopen/components\";\r\nimport * as OBF from \"@thatopen/components-front\"\r\nimport * as THREE from \"three\";\r\nimport { useTranslations, useLocale } from 'next-intl';\r\nimport { ToolsContext, BimContext, MenusContext } from \"../../../store\";\r\n\r\nimport { CurrentWorld } from \"./src/CurrentWorld\";\r\nimport { CurrentCamera } from './src/CurrentCamera';\r\nimport { Highlighter } from \"./src/Highlighter\";\r\nimport { FloorplanTool } from \"./src/FloorplanTool\";\r\nimport { ElevationsTool } from \"./src/ElevationsTool\";\r\nimport { ViewModeCoordinator } from \"./src/lib/ViewModeCoordinator\";\r\n\r\nimport { PropertiesMenu } from \"./src/propertiesMenu\";\r\nimport { BimLoadingState } from \"./src/BimLoadingState\";\r\nimport { ViewportGizmo } from \"./src/ViewportGizmo\";\r\nimport { useBimCoordinateSystem } from \"../useCoordinateSystem\";\r\n\r\nexport function BimViewer() {\r\n\r\n const t = useTranslations('ViewportGizmo');\r\n const locale = useLocale();\r\n\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext);\r\n const { bimComponents } = bimState.bim;\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext);\r\n const { currentToolId } = toolsState.tools;\r\n\r\n const { state: menusState } = React.useContext(MenusContext);\r\n const { currentViewer } = menusState.menus;\r\n \r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const workerUrlRef = React.useRef<string | null>(null);\r\n const resizeObserverRef = React.useRef<ResizeObserver | null>(null);\r\n // Tracks the Components instance THIS mount created, so cleanup disposes the\r\n // real one and the create-guard can't be defeated by a stale [] closure.\r\n const componentsRef = React.useRef<OBC.Components | null>(null);\r\n\r\n const createViewer = React.useCallback(\r\n async (isCancelled: () => boolean) => {\r\n // Re-entrancy guard keyed to the ref we actually set — NOT the stale\r\n // `bimComponents` from this useCallback's [] closure (always null on\r\n // first run, so it could never stop a second init). Without this,\r\n // React StrictMode (dev) and rapid viewer remounts (prod) build a\r\n // second Components + PostproductionRenderer — a second <canvas> —\r\n // and whichever instance wins the SET_COMPONENTS race may be the one\r\n // whose canvas was detached on remount. Models then load into a scene\r\n // that is never painted: the spatial tree builds (metadata) but no\r\n // geometry shows and floorplan nav drives the dead world's camera.\r\n if (!containerRef.current || componentsRef.current) return;\r\n\r\n const container = containerRef.current;\r\n const components = new OBC.Components();\r\n const worlds = components.get(OBC.Worlds);\r\n const world = worlds.create<\r\n OBC.ShadowedScene,\r\n OBC.OrthoPerspectiveCamera,\r\n OBF.PostproductionRenderer\r\n >();\r\n\r\n world.scene = new OBC.ShadowedScene(components);\r\n\r\n world.renderer = new OBF.PostproductionRenderer(components, container);\r\n world.camera = new OBC.OrthoPerspectiveCamera(components);\r\n\r\n components.init();\r\n\r\n world.scene.setup();\r\n world.scene.three.background = null;\r\n\r\n const grids = components.get(OBC.Grids);\r\n const grid = grids.create(world);\r\n\r\n if (grid) {\r\n bimDispatch({\r\n \"type\": \"SET_GRID\",\r\n \"payload\": { grid }\r\n });\r\n }\r\n\r\n const axesHelper = new THREE.AxesHelper(5);\r\n world.scene.three.add(axesHelper);\r\n\r\n const fragments = components.get(OBC.FragmentsManager);\r\n\r\n const githubUrl =\r\n \"https://thatopen.github.io/engine_fragment/resources/worker.mjs\";\r\n const fetchedUrl = await fetch(githubUrl);\r\n const workerBlob = await fetchedUrl.blob();\r\n const workerFile = new File([workerBlob], \"worker.mjs\", {\r\n type: \"text/javascript\",\r\n });\r\n const workerUrl = URL.createObjectURL(workerFile);\r\n workerUrlRef.current = workerUrl; // Store reference for cleanup\r\n fragments.init(workerUrl);\r\n\r\n world.camera.controls.addEventListener(\"control\", () =>\r\n fragments.core.update(),\r\n );\r\n\r\n world.camera.controls.restThreshold = 0.005;\r\n world.camera.controls.addEventListener(\"rest\", () =>\r\n fragments.core.update(true)\r\n );\r\n\r\n components.get(CurrentWorld).world = world;\r\n components.get(CurrentCamera).camera = world.camera;\r\n components.get(Highlighter);\r\n components.get(ViewModeCoordinator);\r\n components.get(FloorplanTool);\r\n components.get(ElevationsTool);\r\n\r\n // Grid injection is safe here — fragments.core is initialized.\r\n if (grid) {\r\n components.get(FloorplanTool).setGrid(grid);\r\n components.get(ElevationsTool).setGrid(grid);\r\n }\r\n\r\n // Enable shadows\r\n world.renderer.three.shadowMap.enabled = true;\r\n world.renderer.three.shadowMap.type = THREE.PCFSoftShadowMap;\r\n world.scene.setup({\r\n shadows: {\r\n cascade: 1,\r\n resolution: 1024,\r\n },\r\n });\r\n\r\n world.scene.distanceRenderer.excludedObjects.add(grid.three);\r\n\r\n await world.scene.updateShadows();\r\n\r\n world.camera.controls.addEventListener(\"rest\", async () => {\r\n await world.scene.updateShadows();\r\n });\r\n\r\n world.scene.three.background = null;\r\n\r\n // If this init was superseded (StrictMode re-run) or the viewer\r\n // unmounted while we awaited the worker fetch / shadow update, throw\r\n // this instance away instead of publishing it. Prevents an orphaned\r\n // world (whose canvas is detached) from winning the store and starving\r\n // the visible canvas of geometry.\r\n if (isCancelled()) {\r\n components.dispose();\r\n return;\r\n }\r\n componentsRef.current = components;\r\n bimDispatch({\r\n type: \"SET_COMPONENTS\",\r\n payload: { bimComponents: components, world, fragments }\r\n });\r\n\r\n // Ensure canvas takes full container size\r\n const canvas = container.querySelector('canvas');\r\n if (canvas) {\r\n canvas.style.width = '100%';\r\n canvas.style.height = '100%';\r\n canvas.style.display = 'block';\r\n }\r\n\r\n // Handle resize using container dimensions\r\n const handleResize = () => {\r\n const width = container.clientWidth;\r\n const height = container.clientHeight;\r\n if (width && height) {\r\n world.renderer?.resize(new THREE.Vector2(width, height));\r\n }\r\n };\r\n \r\n // Initial resize\r\n handleResize();\r\n \r\n // Watch for container size changes using ResizeObserver. This\r\n // already covers the window-resize case: when the window resizes,\r\n // the flex layout reshapes this container, and ResizeObserver\r\n // fires.\r\n const resizeObserver = new ResizeObserver(() => {\r\n handleResize();\r\n });\r\n resizeObserver.observe(container);\r\n resizeObserverRef.current = resizeObserver;\r\n\r\n // The ResizeObserver above is sufficient for redraws. A window\r\n // 'resize' listener here previously leaked on every mount (no matching\r\n // removeEventListener), so it was removed.\r\n }, []\r\n );\r\n\r\n React.useEffect(() => {\r\n let cancelled = false;\r\n createViewer(() => cancelled);\r\n\r\n // Cleanup: mark this init cancelled (so an in-flight createViewer disposes\r\n // itself instead of publishing), and dispose the instance we actually\r\n // created (componentsRef). The old `if (bimComponents)` read the stale []\r\n // closure value (null at mount), so the real Components was never disposed\r\n // — leaking its renderer/canvas and letting orphans race the store.\r\n return () => {\r\n cancelled = true;\r\n if (resizeObserverRef.current) {\r\n resizeObserverRef.current.disconnect();\r\n }\r\n if (componentsRef.current) {\r\n componentsRef.current.dispose();\r\n componentsRef.current = null;\r\n }\r\n bimDispatch({\r\n type: \"DISPOSE-BIM\"\r\n });\r\n };\r\n }, []);\r\n\r\n // Enforce Y-up coordinate system for Three.js / camera-controls.\r\n // Runs whenever the world (and its controls) becomes available, and resets on unmount.\r\n useBimCoordinateSystem(bimState.bim.world?.camera?.controls ?? null);\r\n\r\n // Control ViewportGizmo based on current viewer\r\n React.useEffect(() => {\r\n if (!bimComponents) return;\r\n\r\n const viewportGizmo = bimComponents.get(ViewportGizmo);\r\n\r\n viewportGizmo.setLabels({\r\n top: t('top'),\r\n right: t('right'),\r\n bottom: t('bottom'),\r\n left: t('left'),\r\n front: t('front'),\r\n back: t('back')\r\n });\r\n\r\n if (!viewportGizmo) return;\r\n\r\n if (currentViewer === 'bim') {\r\n viewportGizmo.enabled = true;\r\n viewportGizmo.add();\r\n } else {\r\n viewportGizmo.enabled = false;\r\n viewportGizmo.remove();\r\n }\r\n }, [bimComponents, currentViewer, locale, t]);\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n overflow: \"hidden\"\r\n }}\r\n >\r\n <BimLoadingState />\r\n <div\r\n className=\"bim-container\"\r\n id=\"bim-viewer-container\"\r\n ref={containerRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"relative\",\r\n background: \"radial-gradient(circle, rgba(255, 255, 255, 1) 50%, rgba(220, 220, 220, 1) 100%)\",\r\n }}\r\n />\r\n <PropertiesMenu />\r\n </div>\r\n );\r\n}"],"mappings":"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","names":["_a"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimViewer.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 OBC from \"@thatopen/components\";\r\nimport * as OBF from \"@thatopen/components-front\"\r\nimport { useTranslations, useLocale } from 'next-intl';\r\nimport * as React from \"react\";\r\nimport * as THREE from \"three\";\r\n\r\nimport { ToolsContext, BimContext, MenusContext } from \"../../../store\";\r\nimport { useBimCoordinateSystem } from \"../useCoordinateSystem\";\r\n\r\nimport { BimLoadingState } from \"./src/BimLoadingState\";\r\nimport { CurrentCamera } from './src/CurrentCamera';\r\nimport { CurrentWorld } from \"./src/CurrentWorld\";\r\nimport { ElevationsTool } from \"./src/ElevationsTool\";\r\nimport { FloorplanTool } from \"./src/FloorplanTool\";\r\nimport { Highlighter } from \"./src/Highlighter\";\r\nimport { ViewModeCoordinator } from \"./src/lib/ViewModeCoordinator\";\r\nimport { PropertiesMenu } from \"./src/propertiesMenu\";\r\nimport { ViewportGizmo } from \"./src/ViewportGizmo\";\r\n\r\n\r\nexport function BimViewer() {\r\n\r\n const t = useTranslations('ViewportGizmo');\r\n const locale = useLocale();\r\n\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext);\r\n const { bimComponents } = bimState.bim;\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext);\r\n const { currentToolId } = toolsState.tools;\r\n\r\n const { state: menusState } = React.useContext(MenusContext);\r\n const { currentViewer } = menusState.menus;\r\n\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const workerUrlRef = React.useRef<string | null>(null);\r\n const resizeObserverRef = React.useRef<ResizeObserver | null>(null);\r\n // Tracks the Components instance THIS mount created, so cleanup disposes the\r\n // real one and the create-guard can't be defeated by a stale [] closure.\r\n const componentsRef = React.useRef<OBC.Components | null>(null);\r\n\r\n const createViewer = React.useCallback(\r\n async (isCancelled: () => boolean) => {\r\n // Re-entrancy guard keyed to the ref we actually set — NOT the stale\r\n // `bimComponents` from this useCallback's [] closure (always null on\r\n // first run, so it could never stop a second init). Without this,\r\n // React StrictMode (dev) and rapid viewer remounts (prod) build a\r\n // second Components + PostproductionRenderer — a second <canvas> —\r\n // and whichever instance wins the SET_COMPONENTS race may be the one\r\n // whose canvas was detached on remount. Models then load into a scene\r\n // that is never painted: the spatial tree builds (metadata) but no\r\n // geometry shows and floorplan nav drives the dead world's camera.\r\n if (!containerRef.current || componentsRef.current) return;\r\n\r\n const container = containerRef.current;\r\n const components = new OBC.Components();\r\n const worlds = components.get(OBC.Worlds);\r\n const world = worlds.create<\r\n OBC.ShadowedScene,\r\n OBC.OrthoPerspectiveCamera,\r\n OBF.PostproductionRenderer\r\n >();\r\n\r\n world.scene = new OBC.ShadowedScene(components);\r\n\r\n world.renderer = new OBF.PostproductionRenderer(components, container);\r\n world.camera = new OBC.OrthoPerspectiveCamera(components);\r\n\r\n components.init();\r\n\r\n world.scene.setup();\r\n world.scene.three.background = null;\r\n\r\n const grids = components.get(OBC.Grids);\r\n const grid = grids.create(world);\r\n\r\n if (grid) {\r\n bimDispatch({\r\n \"type\": \"SET_GRID\",\r\n \"payload\": { grid }\r\n });\r\n }\r\n\r\n const axesHelper = new THREE.AxesHelper(5);\r\n world.scene.three.add(axesHelper);\r\n\r\n const fragments = components.get(OBC.FragmentsManager);\r\n\r\n const githubUrl =\r\n \"https://thatopen.github.io/engine_fragment/resources/worker.mjs\";\r\n const fetchedUrl = await fetch(githubUrl);\r\n const workerBlob = await fetchedUrl.blob();\r\n const workerFile = new File([workerBlob], \"worker.mjs\", {\r\n type: \"text/javascript\",\r\n });\r\n const workerUrl = URL.createObjectURL(workerFile);\r\n workerUrlRef.current = workerUrl; // Store reference for cleanup\r\n fragments.init(workerUrl);\r\n\r\n world.camera.controls.addEventListener(\"control\", () =>\r\n fragments.core.update(),\r\n );\r\n\r\n world.camera.controls.restThreshold = 0.005;\r\n world.camera.controls.addEventListener(\"rest\", () =>\r\n fragments.core.update(true)\r\n );\r\n\r\n components.get(CurrentWorld).world = world;\r\n components.get(CurrentCamera).camera = world.camera;\r\n components.get(Highlighter);\r\n components.get(ViewModeCoordinator);\r\n components.get(FloorplanTool);\r\n components.get(ElevationsTool);\r\n\r\n // Grid injection is safe here — fragments.core is initialized.\r\n if (grid) {\r\n components.get(FloorplanTool).setGrid(grid);\r\n components.get(ElevationsTool).setGrid(grid);\r\n }\r\n\r\n // Enable shadows\r\n world.renderer.three.shadowMap.enabled = true;\r\n world.renderer.three.shadowMap.type = THREE.PCFSoftShadowMap;\r\n world.scene.setup({\r\n shadows: {\r\n cascade: 1,\r\n resolution: 1024,\r\n },\r\n });\r\n\r\n world.scene.distanceRenderer.excludedObjects.add(grid.three);\r\n\r\n await world.scene.updateShadows();\r\n\r\n world.camera.controls.addEventListener(\"rest\", async () => {\r\n await world.scene.updateShadows();\r\n });\r\n\r\n world.scene.three.background = null;\r\n\r\n // If this init was superseded (StrictMode re-run) or the viewer\r\n // unmounted while we awaited the worker fetch / shadow update, throw\r\n // this instance away instead of publishing it. Prevents an orphaned\r\n // world (whose canvas is detached) from winning the store and starving\r\n // the visible canvas of geometry.\r\n if (isCancelled()) {\r\n components.dispose();\r\n return;\r\n }\r\n componentsRef.current = components;\r\n bimDispatch({\r\n type: \"SET_COMPONENTS\",\r\n payload: { bimComponents: components, world, fragments }\r\n });\r\n\r\n // Ensure canvas takes full container size\r\n const canvas = container.querySelector('canvas');\r\n if (canvas) {\r\n canvas.style.width = '100%';\r\n canvas.style.height = '100%';\r\n canvas.style.display = 'block';\r\n }\r\n\r\n // Handle resize using container dimensions\r\n const handleResize = () => {\r\n const width = container.clientWidth;\r\n const height = container.clientHeight;\r\n if (width && height) {\r\n world.renderer?.resize(new THREE.Vector2(width, height));\r\n }\r\n };\r\n\r\n // Initial resize\r\n handleResize();\r\n\r\n // Watch for container size changes using ResizeObserver. This\r\n // already covers the window-resize case: when the window resizes,\r\n // the flex layout reshapes this container, and ResizeObserver\r\n // fires.\r\n const resizeObserver = new ResizeObserver(() => {\r\n handleResize();\r\n });\r\n resizeObserver.observe(container);\r\n resizeObserverRef.current = resizeObserver;\r\n\r\n // The ResizeObserver above is sufficient for redraws. A window\r\n // 'resize' listener here previously leaked on every mount (no matching\r\n // removeEventListener), so it was removed.\r\n }, []\r\n );\r\n\r\n React.useEffect(() => {\r\n let cancelled = false;\r\n createViewer(() => cancelled);\r\n\r\n // Cleanup: mark this init cancelled (so an in-flight createViewer disposes\r\n // itself instead of publishing), and dispose the instance we actually\r\n // created (componentsRef). The old `if (bimComponents)` read the stale []\r\n // closure value (null at mount), so the real Components was never disposed\r\n // — leaking its renderer/canvas and letting orphans race the store.\r\n return () => {\r\n cancelled = true;\r\n if (resizeObserverRef.current) {\r\n resizeObserverRef.current.disconnect();\r\n }\r\n if (componentsRef.current) {\r\n componentsRef.current.dispose();\r\n componentsRef.current = null;\r\n }\r\n bimDispatch({\r\n type: \"DISPOSE-BIM\"\r\n });\r\n };\r\n }, []);\r\n\r\n // Enforce Y-up coordinate system for Three.js / camera-controls.\r\n // Runs whenever the world (and its controls) becomes available, and resets on unmount.\r\n useBimCoordinateSystem(bimState.bim.world?.camera?.controls ?? null);\r\n\r\n // Control ViewportGizmo based on current viewer\r\n React.useEffect(() => {\r\n if (!bimComponents) return;\r\n\r\n const viewportGizmo = bimComponents.get(ViewportGizmo);\r\n\r\n viewportGizmo.setLabels({\r\n top: t('top'),\r\n right: t('right'),\r\n bottom: t('bottom'),\r\n left: t('left'),\r\n front: t('front'),\r\n back: t('back')\r\n });\r\n\r\n if (!viewportGizmo) return;\r\n\r\n if (currentViewer === 'bim') {\r\n viewportGizmo.enabled = true;\r\n viewportGizmo.add();\r\n } else {\r\n viewportGizmo.enabled = false;\r\n viewportGizmo.remove();\r\n }\r\n }, [bimComponents, currentViewer, locale, t]);\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n overflow: \"hidden\"\r\n }}\r\n >\r\n <BimLoadingState />\r\n <div\r\n className=\"bim-container\"\r\n id=\"bim-viewer-container\"\r\n ref={containerRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"relative\",\r\n background: \"radial-gradient(circle, rgba(255, 255, 255, 1) 50%, rgba(220, 220, 220, 1) 100%)\",\r\n }}\r\n />\r\n <PropertiesMenu />\r\n </div>\r\n );\r\n}"],"mappings":"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","names":["_a"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BCFTopicsManager.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"BCFTopicsManager.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAI3C,qBAAa,gBAAiB,SAAQ,GAAG,CAAC,SAAS;IAE/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAEtE,OAAO,UAAQ;IAEf,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAyB;gBAE1B,UAAU,EAAE,GAAG,CAAC,UAAU;IA2BtC,OAAO,CAAC,kBAAkB;IAkB1B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK;IAKzB,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,GAAG,CAAC,KAAK;IAyBxE,IAAI,CAAC,OAAO,EAAE,MAAM;IAY1B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAO1C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAgBhC,SAAS,IAAI,GAAG,CAAC,KAAK,EAAE;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,SAAS;IAIpD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO;IAUlE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI;IAoB9C,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IAYlF,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IAgB1F,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IA2BhF,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IASjE,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE;CAOvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as OBC from '@thatopen/components'\r\nimport { CurrentWorld } from './CurrentWorld'\r\n\r\nexport class BCFTopicsManager extends OBC.Component {\r\n\r\n static readonly uuid = '00a7396c-2903-4ad7-b941-f8eca39746ab' as const\r\n\r\n enabled = false\r\n\r\n private bcfTopics: OBC.BCFTopics\r\n private viewpoints: OBC.Viewpoints\r\n private world: OBC.World | null = null\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BCFTopicsManager.uuid, this)\r\n \r\n // Initialize BCF components\r\n this.bcfTopics = components.get(OBC.BCFTopics)\r\n this.viewpoints = components.get(OBC.Viewpoints)\r\n \r\n // Get world from CurrentWorld component\r\n this.world = components.get(CurrentWorld).world\r\n if (this.world) {\r\n this.viewpoints.world = this.world\r\n }\r\n \r\n // Setup BCF Topics with default configuration\r\n this.bcfTopics.setup({\r\n author: \"info@collabdigitaltwins.com\", // This will be overridden when creating topics\r\n types: new Set([...this.bcfTopics.config.types, \"Information\", \"Coordination\", \"Issue\", \"Clash\", \"Error\"]),\r\n statuses: new Set([\"Active\", \"In Progress\", \"Done\", \"In Review\", \"Closed\"]),\r\n users: new Set([\"info@collabdigitaltwins.com\"]),\r\n version: \"3\"\r\n })\r\n\r\n // Setup event handlers\r\n this.setupEventHandlers()\r\n }\r\n\r\n private setupEventHandlers() {\r\n // Create a viewpoint whenever a topic is created\r\n this.bcfTopics.list.onItemSet.add(async ({ value: topic }) => {\r\n if (this.world) {\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = `Viewpoint for ${topic.title}`\r\n \r\n // Update camera and take snapshot\r\n await viewpoint.updateCamera()\r\n viewpoint.takeSnapshot()\r\n \r\n // Link viewpoint to topic\r\n topic.viewpoints.add(viewpoint.guid)\r\n }\r\n })\r\n }\r\n\r\n setWorld(world: OBC.World) {\r\n this.world = world\r\n this.viewpoints.world = world\r\n }\r\n\r\n create(topicData: Partial<OBC.Topic> & { creationAuthor?: string }): OBC.Topic {\r\n // Override the author if provided\r\n if (topicData.creationAuthor) {\r\n this.bcfTopics.config.author = topicData.creationAuthor\r\n }\r\n\r\n const topic = this.bcfTopics.create({\r\n title: topicData.title || 'New Topic',\r\n description: topicData.description || '',\r\n type: topicData.type || 'Issue',\r\n status: topicData.status || 'Active',\r\n priority: topicData.priority,\r\n stage: topicData.stage,\r\n assignedTo: topicData.assignedTo,\r\n dueDate: topicData.dueDate,\r\n labels: topicData.labels || new Set()\r\n })\r\n \r\n const viewpoint = this.createViewpoint(`viewpoint-${topic.title}`)\r\n\r\n if (viewpoint) topic.viewpoints.add(viewpoint.guid)\r\n\r\n return topic\r\n }\r\n\r\n async view(topicId: string) {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic && topic.viewpoints.size > 0) {\r\n // Get the first viewpoint and navigate to it\r\n const viewpointId = Array.from(topic.viewpoints)[0]\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint) {\r\n await viewpoint.go()\r\n }\r\n }\r\n }\r\n\r\n edit(topic: OBC.Topic | Partial<OBC.Topic>) {\r\n const existingTopic = this.bcfTopics.list.get(topic.guid)\r\n if (existingTopic) {\r\n existingTopic.set(topic)\r\n }\r\n }\r\n\r\n remove(topicId: string): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n // Remove associated viewpoints\r\n for (const viewpointId of topic.viewpoints) {\r\n this.viewpoints.list.delete(viewpointId)\r\n }\r\n \r\n // Remove the topic\r\n const success = this.bcfTopics.list.delete(topicId)\r\n return success\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n getTopics(): OBC.Topic[] {\r\n return Array.from(this.bcfTopics.list.values())\r\n }\r\n\r\n getTopicById(topicId: string): OBC.Topic | undefined {\r\n return this.bcfTopics.list.get(topicId)\r\n }\r\n\r\n updateTopic(topicId: string, updates: Partial<OBC.Topic>): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n topic.set(updates)\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Create a viewpoint for the current camera position\r\n createViewpoint(title: string): OBC.Viewpoint | null {\r\n if (!this.world) {\r\n return null\r\n }\r\n\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = title\r\n \r\n // const highlighter = this.components.get(OBF.Highlighter)\r\n // const selection = highlighter?.selection\r\n // console.log('Viewpoint selection:', selection)\r\n \r\n // Update camera and take snapshot\r\n // viewpoint.updateCamera()\r\n // viewpoint.takeSnapshot()\r\n\r\n }\r\n\r\n // Export BCF file\r\n async exportBCF(buildingName?: string): Promise<File> {\r\n try {\r\n // Export all topics\r\n const bcfBuffer = await this.bcfTopics.export()\r\n \r\n // Create filename with date and building name\r\n const currentDate = new Date().toISOString().split('T')[0] // YYYY-MM-DD format\r\n const sanitizedBuildingName = buildingName \r\n ? buildingName.replace(/[^a-zA-Z0-9-_]/g, '_') // Replace invalid filename chars with underscore\r\n : 'UnknownBuilding'\r\n const filename = `${currentDate}_${sanitizedBuildingName}.bcf`\r\n \r\n const bcfFile = new File([bcfBuffer], filename, { type: \"application/octet-stream\" })\r\n \r\n return bcfFile\r\n } catch (error) {\r\n console.error('Failed to export BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Load BCF file\r\n async loadBCF(file: File): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const buffer = await file.arrayBuffer()\r\n const result = await this.bcfTopics.load(new Uint8Array(buffer))\r\n \r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n async loadBCFFromUrl(url: string): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const response = await fetch(url)\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n const blob = await response.blob()\r\n const result = await this.bcfTopics.load(new Uint8Array(await blob.arrayBuffer()))\r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF from URL:', error)\r\n throw error\r\n } \r\n }\r\n\r\n // Download BCF file\r\n async downloadBCF(buildingName?: string): Promise<void> {\r\n try {\r\n const bcfFile = await this.exportBCF(buildingName)\r\n \r\n // Create download link\r\n const a = document.createElement(\"a\")\r\n a.href = URL.createObjectURL(bcfFile)\r\n a.download = bcfFile.name\r\n a.click()\r\n URL.revokeObjectURL(a.href)\r\n } catch (error) {\r\n console.error('Failed to download BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Upload and load BCF file\r\n async uploadBCF(): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n return new Promise((resolve, reject) => {\r\n const input = document.createElement(\"input\")\r\n input.multiple = false\r\n input.accept = \".bcf\"\r\n input.type = \"file\"\r\n \r\n input.addEventListener(\"change\", async () => {\r\n const file = input.files?.[0]\r\n if (!file) {\r\n reject(new Error('No file selected'))\r\n return\r\n }\r\n \r\n try {\r\n const result = await this.loadBCF(file)\r\n resolve(result)\r\n } catch (error) {\r\n reject(error)\r\n }\r\n })\r\n \r\n input.click()\r\n })\r\n }\r\n\r\n // Get viewpoint data (including snapshot)\r\n getViewpointSnapshot(viewpointId: string): Uint8Array | undefined {\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint && viewpoint.snapshot) {\r\n return this.viewpoints.snapshots.get(viewpoint.snapshot)\r\n }\r\n return undefined\r\n }\r\n\r\n // Get all viewpoints for a topic\r\n getTopicViewpoints(topicId: string): OBC.Viewpoint[] {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n return Array.from(topic.viewpoints).map(id => this.viewpoints.list.get(id)).filter(Boolean) as OBC.Viewpoint[]\r\n }\r\n return []\r\n }\r\n}"],"mappings":"AAGA,YAAY,SAAS;AACrB,SAAS,oBAAoB;AAEtB,MAAM,oBAAN,MAAM,0BAAyB,IAAI,UAAU;AAAA,EAUhD,YAAY,YAA4B;AACpC,UAAM,UAAU;AAPpB,mBAAU;AAIV,SAAQ,QAA0B;AAI9B,eAAW,IAAI,kBAAiB,MAAM,IAAI;AAG1C,SAAK,YAAY,WAAW,IAAI,IAAI,SAAS;AAC7C,SAAK,aAAa,WAAW,IAAI,IAAI,UAAU;AAG/C,SAAK,QAAQ,WAAW,IAAI,YAAY,EAAE;AAC1C,QAAI,KAAK,OAAO;AACZ,WAAK,WAAW,QAAQ,KAAK;AAAA,IACjC;AAGA,SAAK,UAAU,MAAM;AAAA,MACjB,QAAQ;AAAA;AAAA,MACR,OAAO,oBAAI,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,OAAO,eAAe,gBAAgB,SAAS,SAAS,OAAO,CAAC;AAAA,MACzG,UAAU,oBAAI,IAAI,CAAC,UAAU,eAAe,QAAQ,aAAa,QAAQ,CAAC;AAAA,MAC1E,OAAO,oBAAI,IAAI,CAAC,6BAA6B,CAAC;AAAA,MAC9C,SAAS;AAAA,IACb,CAAC;AAGD,SAAK,mBAAmB;AAAA,EAC5B;AAAA,EAEQ,qBAAqB;AAEzB,SAAK,UAAU,KAAK,UAAU,IAAI,OAAO,EAAE,OAAO,MAAM,MAAM;AAC1D,UAAI,KAAK,OAAO;AACZ,cAAM,YAAY,KAAK,WAAW,OAAO;AACzC,kBAAU,QAAQ,KAAK;AACvB,kBAAU,QAAQ,iBAAiB,MAAM,KAAK;AAG9C,cAAM,UAAU,aAAa;AAC7B,kBAAU,aAAa;AAGvB,cAAM,WAAW,IAAI,UAAU,IAAI;AAAA,MACvC;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,SAAS,OAAkB;AACvB,SAAK,QAAQ;AACb,SAAK,WAAW,QAAQ;AAAA,EAC5B;AAAA,EAEA,OAAO,WAAwE;AAE3E,QAAI,UAAU,gBAAgB;AAC1B,WAAK,UAAU,OAAO,SAAS,UAAU;AAAA,IAC7C;AAEA,UAAM,QAAQ,KAAK,UAAU,OAAO;AAAA,MAChC,OAAO,UAAU,SAAS;AAAA,MAC1B,aAAa,UAAU,eAAe;AAAA,MACtC,MAAM,UAAU,QAAQ;AAAA,MACxB,QAAQ,UAAU,UAAU;AAAA,MAC5B,UAAU,UAAU;AAAA,MACpB,OAAO,UAAU;AAAA,MACjB,YAAY,UAAU;AAAA,MACtB,SAAS,UAAU;AAAA,MACnB,QAAQ,UAAU,UAAU,oBAAI,IAAI;AAAA,IACxC,CAAC;AAED,UAAM,YAAY,KAAK,gBAAgB,aAAa,MAAM,KAAK,EAAE;AAEjE,QAAI,UAAW,OAAM,WAAW,IAAI,UAAU,IAAI;AAElD,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,KAAK,SAAiB;AACxB,UAAM,QAAQ,KAAK,UAAU,KAAK,IAAI,OAAO;AAC7C,QAAI,SAAS,MAAM,WAAW,OAAO,GAAG;AAEpC,YAAM,cAAc,MAAM,KAAK,MAAM,UAAU,EAAE,CAAC;AAClD,YAAM,YAAY,KAAK,WAAW,KAAK,IAAI,WAAW;AACtD,UAAI,WAAW;AACX,cAAM,UAAU,GAAG;AAAA,MACvB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,KAAK,OAAuC;AACxC,UAAM,gBAAgB,KAAK,UAAU,KAAK,IAAI,MAAM,IAAI;AACxD,QAAI,eAAe;AACf,oBAAc,IAAI,KAAK;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEA,OAAO,SAA0B;AAC7B,UAAM,QAAQ,KAAK,UAAU,KAAK,IAAI,OAAO;AAC7C,QAAI,OAAO;AAEP,iBAAW,eAAe,MAAM,YAAY;AACxC,aAAK,WAAW,KAAK,OAAO,WAAW;AAAA,MAC3C;AAGA,YAAM,UAAU,KAAK,UAAU,KAAK,OAAO,OAAO;AAClD,aAAO;AAAA,IACX,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AAAA,EAEA,YAAyB;AACrB,WAAO,MAAM,KAAK,KAAK,UAAU,KAAK,OAAO,CAAC;AAAA,EAClD;AAAA,EAEA,aAAa,SAAwC;AACjD,WAAO,KAAK,UAAU,KAAK,IAAI,OAAO;AAAA,EAC1C;AAAA,EAEA,YAAY,SAAiB,SAAsC;AAC/D,UAAM,QAAQ,KAAK,UAAU,KAAK,IAAI,OAAO;AAC7C,QAAI,OAAO;AACP,YAAM,IAAI,OAAO;AACjB,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,gBAAgB,OAAqC;AACjD,QAAI,CAAC,KAAK,OAAO;AACb,aAAO;AAAA,IACX;AAEA,UAAM,YAAY,KAAK,WAAW,OAAO;AACzC,cAAU,QAAQ,KAAK;AACvB,cAAU,QAAQ;AAAA,EAUtB;AAAA;AAAA,EAGA,MAAM,UAAU,cAAsC;AAClD,QAAI;AAEA,YAAM,YAAY,MAAM,KAAK,UAAU,OAAO;AAG9C,YAAM,eAAc,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AACzD,YAAM,wBAAwB,eACxB,aAAa,QAAQ,mBAAmB,GAAG,IAC3C;AACN,YAAM,WAAW,GAAG,WAAW,IAAI,qBAAqB;AAExD,YAAM,UAAU,IAAI,KAAK,CAAC,SAAS,GAAG,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEpF,aAAO;AAAA,IACX,SAAS,OAAO;AACZ,cAAQ,MAAM,yBAAyB,KAAK;AAC5C,YAAM;AAAA,IACV;AAAA,EACJ;AAAA;AAAA,EAGA,MAAM,QAAQ,MAA2E;AACrF,QAAI;AACA,YAAM,SAAS,MAAM,KAAK,YAAY;AACtC,YAAM,SAAS,MAAM,KAAK,UAAU,KAAK,IAAI,WAAW,MAAM,CAAC;AAE/D,aAAO;AAAA,IACX,SAAS,OAAO;AACZ,cAAQ,MAAM,uBAAuB,KAAK;AAC1C,YAAM;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,MAAM,eAAe,KAA4E;AAC7F,QAAI;AACA,YAAM,WAAW,MAAM,MAAM,GAAG;AAChC,UAAI,CAAC,SAAS,IAAI;AACd,cAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAAA,MAC5D;AACA,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAM,SAAS,MAAM,KAAK,UAAU,KAAK,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC,CAAC;AACjF,aAAO;AAAA,IACX,SAAS,OAAO;AACZ,cAAQ,MAAM,gCAAgC,KAAK;AACnD,YAAM;AAAA,IACV;AAAA,EACJ;AAAA;AAAA,EAGA,MAAM,YAAY,cAAsC;AACpD,QAAI;AACA,YAAM,UAAU,MAAM,KAAK,UAAU,YAAY;AAGjD,YAAM,IAAI,SAAS,cAAc,GAAG;AACpC,QAAE,OAAO,IAAI,gBAAgB,OAAO;AACpC,QAAE,WAAW,QAAQ;AACrB,QAAE,MAAM;AACR,UAAI,gBAAgB,EAAE,IAAI;AAAA,IAC9B,SAAS,OAAO;AACZ,cAAQ,MAAM,2BAA2B,KAAK;AAC9C,YAAM;AAAA,IACV;AAAA,EACJ;AAAA;AAAA,EAGA,MAAM,YAA2E;AAC7E,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,YAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,YAAM,WAAW;AACjB,YAAM,SAAS;AACf,YAAM,OAAO;AAEb,YAAM,iBAAiB,UAAU,YAAY;AA9OzD;AA+OgB,cAAM,QAAO,WAAM,UAAN,mBAAc;AAC3B,YAAI,CAAC,MAAM;AACP,iBAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC;AAAA,QACJ;AAEA,YAAI;AACA,gBAAM,SAAS,MAAM,KAAK,QAAQ,IAAI;AACtC,kBAAQ,MAAM;AAAA,QAClB,SAAS,OAAO;AACZ,iBAAO,KAAK;AAAA,QAChB;AAAA,MACJ,CAAC;AAED,YAAM,MAAM;AAAA,IAChB,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,qBAAqB,aAA6C;AAC9D,UAAM,YAAY,KAAK,WAAW,KAAK,IAAI,WAAW;AACtD,QAAI,aAAa,UAAU,UAAU;AACjC,aAAO,KAAK,WAAW,UAAU,IAAI,UAAU,QAAQ;AAAA,IAC3D;AACA,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,mBAAmB,SAAkC;AACjD,UAAM,QAAQ,KAAK,UAAU,KAAK,IAAI,OAAO;AAC7C,QAAI,OAAO;AACP,aAAO,MAAM,KAAK,MAAM,UAAU,EAAE,IAAI,QAAM,KAAK,WAAW,KAAK,IAAI,EAAE,CAAC,EAAE,OAAO,OAAO;AAAA,IAC9F;AACA,WAAO,CAAC;AAAA,EACZ;AACJ;AA5Qa,kBAEO,OAAO;AAFpB,IAAM,mBAAN;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as OBC from '@thatopen/components'\r\n\r\nimport { CurrentWorld } from './CurrentWorld'\r\n\r\nexport class BCFTopicsManager extends OBC.Component {\r\n\r\n static readonly uuid = '00a7396c-2903-4ad7-b941-f8eca39746ab' as const\r\n\r\n enabled = false\r\n\r\n private bcfTopics: OBC.BCFTopics\r\n private viewpoints: OBC.Viewpoints\r\n private world: OBC.World | null = null\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BCFTopicsManager.uuid, this)\r\n\r\n // Initialize BCF components\r\n this.bcfTopics = components.get(OBC.BCFTopics)\r\n this.viewpoints = components.get(OBC.Viewpoints)\r\n\r\n // Get world from CurrentWorld component\r\n this.world = components.get(CurrentWorld).world\r\n if (this.world) {\r\n this.viewpoints.world = this.world\r\n }\r\n\r\n // Setup BCF Topics with default configuration\r\n this.bcfTopics.setup({\r\n author: \"info@collabdigitaltwins.com\", // This will be overridden when creating topics\r\n types: new Set([...this.bcfTopics.config.types, \"Information\", \"Coordination\", \"Issue\", \"Clash\", \"Error\"]),\r\n statuses: new Set([\"Active\", \"In Progress\", \"Done\", \"In Review\", \"Closed\"]),\r\n users: new Set([\"info@collabdigitaltwins.com\"]),\r\n version: \"3\"\r\n })\r\n\r\n // Setup event handlers\r\n this.setupEventHandlers()\r\n }\r\n\r\n private setupEventHandlers() {\r\n // Create a viewpoint whenever a topic is created\r\n this.bcfTopics.list.onItemSet.add(async ({ value: topic }) => {\r\n if (this.world) {\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = `Viewpoint for ${topic.title}`\r\n\r\n // Update camera and take snapshot\r\n await viewpoint.updateCamera()\r\n viewpoint.takeSnapshot()\r\n\r\n // Link viewpoint to topic\r\n topic.viewpoints.add(viewpoint.guid)\r\n }\r\n })\r\n }\r\n\r\n setWorld(world: OBC.World) {\r\n this.world = world\r\n this.viewpoints.world = world\r\n }\r\n\r\n create(topicData: Partial<OBC.Topic> & { creationAuthor?: string }): OBC.Topic {\r\n // Override the author if provided\r\n if (topicData.creationAuthor) {\r\n this.bcfTopics.config.author = topicData.creationAuthor\r\n }\r\n\r\n const topic = this.bcfTopics.create({\r\n title: topicData.title || 'New Topic',\r\n description: topicData.description || '',\r\n type: topicData.type || 'Issue',\r\n status: topicData.status || 'Active',\r\n priority: topicData.priority,\r\n stage: topicData.stage,\r\n assignedTo: topicData.assignedTo,\r\n dueDate: topicData.dueDate,\r\n labels: topicData.labels || new Set()\r\n })\r\n\r\n const viewpoint = this.createViewpoint(`viewpoint-${topic.title}`)\r\n\r\n if (viewpoint) topic.viewpoints.add(viewpoint.guid)\r\n\r\n return topic\r\n }\r\n\r\n async view(topicId: string) {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic && topic.viewpoints.size > 0) {\r\n // Get the first viewpoint and navigate to it\r\n const viewpointId = Array.from(topic.viewpoints)[0]\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint) {\r\n await viewpoint.go()\r\n }\r\n }\r\n }\r\n\r\n edit(topic: OBC.Topic | Partial<OBC.Topic>) {\r\n const existingTopic = this.bcfTopics.list.get(topic.guid)\r\n if (existingTopic) {\r\n existingTopic.set(topic)\r\n }\r\n }\r\n\r\n remove(topicId: string): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n // Remove associated viewpoints\r\n for (const viewpointId of topic.viewpoints) {\r\n this.viewpoints.list.delete(viewpointId)\r\n }\r\n\r\n // Remove the topic\r\n const success = this.bcfTopics.list.delete(topicId)\r\n return success\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n getTopics(): OBC.Topic[] {\r\n return Array.from(this.bcfTopics.list.values())\r\n }\r\n\r\n getTopicById(topicId: string): OBC.Topic | undefined {\r\n return this.bcfTopics.list.get(topicId)\r\n }\r\n\r\n updateTopic(topicId: string, updates: Partial<OBC.Topic>): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n topic.set(updates)\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Create a viewpoint for the current camera position\r\n createViewpoint(title: string): OBC.Viewpoint | null {\r\n if (!this.world) {\r\n return null\r\n }\r\n\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = title\r\n\r\n // const highlighter = this.components.get(OBF.Highlighter)\r\n // const selection = highlighter?.selection\r\n // console.log('Viewpoint selection:', selection)\r\n\r\n // Update camera and take snapshot\r\n // viewpoint.updateCamera()\r\n // viewpoint.takeSnapshot()\r\n\r\n }\r\n\r\n // Export BCF file\r\n async exportBCF(buildingName?: string): Promise<File> {\r\n try {\r\n // Export all topics\r\n const bcfBuffer = await this.bcfTopics.export()\r\n\r\n // Create filename with date and building name\r\n const currentDate = new Date().toISOString().split('T')[0] // YYYY-MM-DD format\r\n const sanitizedBuildingName = buildingName\r\n ? buildingName.replace(/[^a-zA-Z0-9-_]/g, '_') // Replace invalid filename chars with underscore\r\n : 'UnknownBuilding'\r\n const filename = `${currentDate}_${sanitizedBuildingName}.bcf`\r\n\r\n const bcfFile = new File([bcfBuffer], filename, { type: \"application/octet-stream\" })\r\n\r\n return bcfFile\r\n } catch (error) {\r\n console.error('Failed to export BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Load BCF file\r\n async loadBCF(file: File): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const buffer = await file.arrayBuffer()\r\n const result = await this.bcfTopics.load(new Uint8Array(buffer))\r\n\r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n async loadBCFFromUrl(url: string): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const response = await fetch(url)\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n const blob = await response.blob()\r\n const result = await this.bcfTopics.load(new Uint8Array(await blob.arrayBuffer()))\r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF from URL:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Download BCF file\r\n async downloadBCF(buildingName?: string): Promise<void> {\r\n try {\r\n const bcfFile = await this.exportBCF(buildingName)\r\n\r\n // Create download link\r\n const a = document.createElement(\"a\")\r\n a.href = URL.createObjectURL(bcfFile)\r\n a.download = bcfFile.name\r\n a.click()\r\n URL.revokeObjectURL(a.href)\r\n } catch (error) {\r\n console.error('Failed to download BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Upload and load BCF file\r\n async uploadBCF(): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n return new Promise((resolve, reject) => {\r\n const input = document.createElement(\"input\")\r\n input.multiple = false\r\n input.accept = \".bcf\"\r\n input.type = \"file\"\r\n\r\n input.addEventListener(\"change\", async () => {\r\n const file = input.files?.[0]\r\n if (!file) {\r\n reject(new Error('No file selected'))\r\n return\r\n }\r\n\r\n try {\r\n const result = await this.loadBCF(file)\r\n resolve(result)\r\n } catch (error) {\r\n reject(error)\r\n }\r\n })\r\n\r\n input.click()\r\n })\r\n }\r\n\r\n // Get viewpoint data (including snapshot)\r\n getViewpointSnapshot(viewpointId: string): Uint8Array | undefined {\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint && viewpoint.snapshot) {\r\n return this.viewpoints.snapshots.get(viewpoint.snapshot)\r\n }\r\n return undefined\r\n }\r\n\r\n // Get all viewpoints for a topic\r\n getTopicViewpoints(topicId: string): OBC.Viewpoint[] {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n return Array.from(topic.viewpoints).map(id => this.viewpoints.list.get(id)).filter(Boolean) as OBC.Viewpoint[]\r\n }\r\n return []\r\n }\r\n}"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
2
1
|
import * as OBC from '@thatopen/components';
|
|
3
|
-
import * as FRAGS from '@thatopen/fragments';
|
|
2
|
+
import type * as FRAGS from '@thatopen/fragments';
|
|
3
|
+
import type * as THREE from 'three';
|
|
4
4
|
export interface BimModelInfo {
|
|
5
5
|
id: string;
|
|
6
6
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAI3C,OAAO,KAAK,KAAK,KAAK,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;CAC/B;AAED,qBAAa,UAAW,SAAQ,GAAG,CAAC,SAAS;IAC3C,MAAM,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAE7D,OAAO,UAAO;IAEd,6DAA6D;IAC7D,YAAY,0BAAgC;IAE5C,8EAA8E;IAC9E,kBAAkB,0BAAgC;IAElD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,cAAc,CAAiC;gBAE3C,UAAU,EAAE,GAAG,CAAC,UAAU;IAQtC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAwB1B,gFAAgF;IAChF,OAAO,CAAC,kBAAkB;IAW1B;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQvC,GAAG,CACD,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,YAAY;IA0Bf,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9C,sCAAsC;IACtC,YAAY,IAAI,YAAY,EAAE;IAIxB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAMhE,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB3D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAerD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI;IAQ3C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAWzD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAWpD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO;IAWvD;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAiBnC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAYpD,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as THREE from 'three'\r\nimport * as OBC from '@thatopen/components'\r\nimport * as FRAGS from '@thatopen/fragments'\r\nimport { CurrentWorld } from '../CurrentWorld'\r\n\r\nexport interface BimModelInfo {\r\n id: string\r\n name: string\r\n model: FRAGS.FragmentsModel\r\n}\r\n\r\nexport interface BimTransformOptions {\r\n position?: THREE.Vector3\r\n rotation?: THREE.Euler\r\n scale?: number | THREE.Vector3\r\n}\r\n\r\nexport class BIMManager extends OBC.Component {\r\n static uuid = 'b2c1a0f9-3d4e-4c8b-9a7d-1e5f6g7h8i9j' as const\r\n\r\n enabled = true\r\n\r\n /** Triggered when a model is registered with the manager. */\r\n onModelAdded = new OBC.Event<BimModelInfo>()\r\n\r\n /** Triggered whenever a model's transform is changed through this manager. */\r\n onModelTransformed = new OBC.Event<BimModelInfo>()\r\n\r\n private _components: OBC.Components\r\n private _world: OBC.World | null = null\r\n private _models: Map<string, BimModelInfo> = new Map()\r\n private _nameOverrides: Map<string, string> = new Map()\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BIMManager.uuid, this)\r\n this._components = components\r\n this._world = components.get(CurrentWorld).world\r\n this._syncWithFragments(components)\r\n }\r\n\r\n /**\r\n * Retroactively registers all models already in the fragments list and\r\n * subscribes to future loads so BIMManager stays in sync regardless of\r\n * when it is first instantiated.\r\n */\r\n private _syncWithFragments(components: OBC.Components): void {\r\n let fragManager: OBC.FragmentsManager\r\n try {\r\n fragManager = components.get(OBC.FragmentsManager)\r\n }\r\n catch {\r\n return\r\n }\r\n\r\n // Register models that are already loaded\r\n for (const [modelId, model] of fragManager.core.models.list) {\r\n if (!this._models.has(modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n }\r\n\r\n // Listen for future loads\r\n fragManager.core.onModelLoaded.add((model: FRAGS.FragmentsModel) => {\r\n if (!this._models.has(model.modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n })\r\n }\r\n\r\n /** Low-level helper: register a FragmentsModel using its own modelId as key. */\r\n private _registerFragModel(model: FRAGS.FragmentsModel): void {\r\n const id = model.modelId\r\n const info: BimModelInfo = {\r\n id,\r\n name: this._nameOverrides.get(id) ?? id,\r\n model,\r\n }\r\n this._models.set(id, info)\r\n this.onModelAdded.trigger(info)\r\n }\r\n\r\n /**\r\n * Update the display name for a registered model.\r\n * Useful when the DbFile name becomes known after the model was auto-registered.\r\n */\r\n setName(id: string, name: string): void {\r\n this._nameOverrides.set(id, name)\r\n const info = this._models.get(id)\r\n if (info) {\r\n info.name = name\r\n }\r\n }\r\n\r\n add(\r\n model: FRAGS.FragmentsModel,\r\n id: string,\r\n name: string,\r\n options: BimTransformOptions = {},\r\n ): BimModelInfo {\r\n if (options.position) {\r\n model.object.position.copy(options.position)\r\n }\r\n\r\n if (options.rotation) {\r\n model.object.rotation.copy(options.rotation)\r\n }\r\n\r\n if (options.scale) {\r\n if (typeof options.scale === 'number') {\r\n model.object.scale.setScalar(options.scale)\r\n }\r\n else {\r\n model.object.scale.copy(options.scale)\r\n }\r\n }\r\n\r\n const modelInfo: BimModelInfo = { id, name, model }\r\n this._models.set(id, modelInfo)\r\n ;(model.object as any).bimModelId = id\r\n\r\n this.onModelAdded.trigger(modelInfo)\r\n return modelInfo\r\n }\r\n\r\n remove(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n this._models.delete(id)\r\n return true\r\n }\r\n\r\n getModel(id: string): BimModelInfo | undefined {\r\n return this._models.get(id)\r\n }\r\n\r\n /** Get all registered model infos. */\r\n getAllModels(): BimModelInfo[] {\r\n return [...this._models.values()]\r\n }\r\n\r\n async getCoordinationMatrix(id: string): Promise<THREE.Matrix4 | null> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n return modelInfo.model.getCoordinationMatrix()\r\n }\r\n\r\n async applyCoordinationMatrix(id: string): Promise<boolean> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n const coordMatrix = await modelInfo.model.getCoordinationMatrix()\r\n coordMatrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n setMatrix(id: string, matrix: THREE.Matrix4): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n matrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n getMatrix(id: string): THREE.Matrix4 | null {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n return modelInfo.model.object.matrixWorld.clone()\r\n }\r\n\r\n setPosition(id: string, position: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.copy(position)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Translate (offset) the model relative to its current position.\r\n */\r\n translate(id: string, delta: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.add(delta)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Set the absolute rotation of the model.\r\n */\r\n setRotation(id: string, rotation: THREE.Euler): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.rotation.copy(rotation)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Reset position, rotation, and scale to identity (origin, no rotation, unit scale).\r\n */\r\n resetTransform(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.set(0, 0, 0)\r\n modelInfo.model.object.rotation.set(0, 0, 0)\r\n modelInfo.model.object.scale.set(1, 1, 1)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Visibility\r\n // ---------------------------------------------------------------------------\r\n\r\n /**\r\n * Show or hide the model.\r\n */\r\n setVisibility(id: string, visible: boolean): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.visible = visible\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Cleanup\r\n // ---------------------------------------------------------------------------\r\n\r\n dispose(): void {\r\n this._models.clear()\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as OBC from '@thatopen/components'\r\n\r\nimport { CurrentWorld } from '../CurrentWorld'\r\n\r\nimport type * as FRAGS from '@thatopen/fragments'\r\nimport type * as THREE from 'three'\r\n\r\nexport interface BimModelInfo {\r\n id: string\r\n name: string\r\n model: FRAGS.FragmentsModel\r\n}\r\n\r\nexport interface BimTransformOptions {\r\n position?: THREE.Vector3\r\n rotation?: THREE.Euler\r\n scale?: number | THREE.Vector3\r\n}\r\n\r\nexport class BIMManager extends OBC.Component {\r\n static uuid = 'b2c1a0f9-3d4e-4c8b-9a7d-1e5f6g7h8i9j' as const\r\n\r\n enabled = true\r\n\r\n /** Triggered when a model is registered with the manager. */\r\n onModelAdded = new OBC.Event<BimModelInfo>()\r\n\r\n /** Triggered whenever a model's transform is changed through this manager. */\r\n onModelTransformed = new OBC.Event<BimModelInfo>()\r\n\r\n private _components: OBC.Components\r\n private _world: OBC.World | null = null\r\n private _models: Map<string, BimModelInfo> = new Map()\r\n private _nameOverrides: Map<string, string> = new Map()\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BIMManager.uuid, this)\r\n this._components = components\r\n this._world = components.get(CurrentWorld).world\r\n this._syncWithFragments(components)\r\n }\r\n\r\n /**\r\n * Retroactively registers all models already in the fragments list and\r\n * subscribes to future loads so BIMManager stays in sync regardless of\r\n * when it is first instantiated.\r\n */\r\n private _syncWithFragments(components: OBC.Components): void {\r\n let fragManager: OBC.FragmentsManager\r\n try {\r\n fragManager = components.get(OBC.FragmentsManager)\r\n }\r\n catch {\r\n return\r\n }\r\n\r\n // Register models that are already loaded\r\n for (const [modelId, model] of fragManager.core.models.list) {\r\n if (!this._models.has(modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n }\r\n\r\n // Listen for future loads\r\n fragManager.core.onModelLoaded.add((model: FRAGS.FragmentsModel) => {\r\n if (!this._models.has(model.modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n })\r\n }\r\n\r\n /** Low-level helper: register a FragmentsModel using its own modelId as key. */\r\n private _registerFragModel(model: FRAGS.FragmentsModel): void {\r\n const id = model.modelId\r\n const info: BimModelInfo = {\r\n id,\r\n name: this._nameOverrides.get(id) ?? id,\r\n model,\r\n }\r\n this._models.set(id, info)\r\n this.onModelAdded.trigger(info)\r\n }\r\n\r\n /**\r\n * Update the display name for a registered model.\r\n * Useful when the DbFile name becomes known after the model was auto-registered.\r\n */\r\n setName(id: string, name: string): void {\r\n this._nameOverrides.set(id, name)\r\n const info = this._models.get(id)\r\n if (info) {\r\n info.name = name\r\n }\r\n }\r\n\r\n add(\r\n model: FRAGS.FragmentsModel,\r\n id: string,\r\n name: string,\r\n options: BimTransformOptions = {},\r\n ): BimModelInfo {\r\n if (options.position) {\r\n model.object.position.copy(options.position)\r\n }\r\n\r\n if (options.rotation) {\r\n model.object.rotation.copy(options.rotation)\r\n }\r\n\r\n if (options.scale) {\r\n if (typeof options.scale === 'number') {\r\n model.object.scale.setScalar(options.scale)\r\n }\r\n else {\r\n model.object.scale.copy(options.scale)\r\n }\r\n }\r\n\r\n const modelInfo: BimModelInfo = { id, name, model }\r\n this._models.set(id, modelInfo)\r\n ;(model.object as any).bimModelId = id\r\n\r\n this.onModelAdded.trigger(modelInfo)\r\n return modelInfo\r\n }\r\n\r\n remove(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n this._models.delete(id)\r\n return true\r\n }\r\n\r\n getModel(id: string): BimModelInfo | undefined {\r\n return this._models.get(id)\r\n }\r\n\r\n /** Get all registered model infos. */\r\n getAllModels(): BimModelInfo[] {\r\n return [...this._models.values()]\r\n }\r\n\r\n async getCoordinationMatrix(id: string): Promise<THREE.Matrix4 | null> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n return modelInfo.model.getCoordinationMatrix()\r\n }\r\n\r\n async applyCoordinationMatrix(id: string): Promise<boolean> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n const coordMatrix = await modelInfo.model.getCoordinationMatrix()\r\n coordMatrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n setMatrix(id: string, matrix: THREE.Matrix4): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n matrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n getMatrix(id: string): THREE.Matrix4 | null {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n return modelInfo.model.object.matrixWorld.clone()\r\n }\r\n\r\n setPosition(id: string, position: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.copy(position)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Translate (offset) the model relative to its current position.\r\n */\r\n translate(id: string, delta: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.add(delta)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Set the absolute rotation of the model.\r\n */\r\n setRotation(id: string, rotation: THREE.Euler): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.rotation.copy(rotation)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Reset position, rotation, and scale to identity (origin, no rotation, unit scale).\r\n */\r\n resetTransform(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.set(0, 0, 0)\r\n modelInfo.model.object.rotation.set(0, 0, 0)\r\n modelInfo.model.object.scale.set(1, 1, 1)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Visibility\r\n // ---------------------------------------------------------------------------\r\n\r\n /**\r\n * Show or hide the model.\r\n */\r\n setVisibility(id: string, visible: boolean): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.visible = visible\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Cleanup\r\n // ---------------------------------------------------------------------------\r\n\r\n dispose(): void {\r\n this._models.clear()\r\n }\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/bim/src/BimLoadingState/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BimLoadingState/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;AAEpG,wBAAgB,eAAe,sBAoa9B"}
|
|
@@ -19,21 +19,21 @@ 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 { Upload, Box, Building2, Search, X, SquareArrowOutUpRight } from "lucide-react";
|
|
23
|
+
import { useSearchParams, useRouter } from "next/navigation";
|
|
24
|
+
import { useTranslations } from "next-intl";
|
|
22
25
|
import React from "react";
|
|
26
|
+
import { useBuilding, useBuildings } from "../../../../../hooks/buildings/buildings";
|
|
27
|
+
import { useFilesByBuildingId, useUploadFileToBuilding } from "../../../../../hooks/files/files";
|
|
28
|
+
import { BimContext, BuildingsContext, usePermissions } from "../../../../../store";
|
|
29
|
+
import { cn } from "../../../../../utils/utils";
|
|
23
30
|
import { Button } from "../../../../ui/Button";
|
|
24
31
|
import { Card, CardContent, CardHeader } from "../../../../ui/Card";
|
|
32
|
+
import { useFileUploadHandler } from "../../../../ui/FilesManager/src/useFileUploadHandler";
|
|
25
33
|
import { Input } from "../../../../ui/Input";
|
|
26
34
|
import { LoadingSpinner } from "../../../../ui/LoadingSpinner";
|
|
27
|
-
import { Upload, Box, Building2, Search, X, SquareArrowOutUpRight } from "lucide-react";
|
|
28
|
-
import { BimContext, BuildingsContext, usePermissions } from "../../../../../store";
|
|
29
|
-
import { LoadModels } from "../LoadModels";
|
|
30
|
-
import { useTranslations } from "next-intl";
|
|
31
|
-
import { useFilesByBuildingId, useUploadFileToBuilding } from "../../../../../hooks/files/files";
|
|
32
|
-
import { useFileUploadHandler } from "../../../../ui/FilesManager/src/useFileUploadHandler";
|
|
33
|
-
import { cn } from "../../../../../utils/utils";
|
|
34
|
-
import { useSearchParams, useRouter } from "next/navigation";
|
|
35
|
-
import { useBuilding, useBuildings } from "../../../../../hooks/buildings/buildings";
|
|
36
35
|
import { setCameraLookAt } from "../../utils/setCameraLookAt";
|
|
36
|
+
import { LoadModels } from "../LoadModels";
|
|
37
37
|
function BimLoadingState() {
|
|
38
38
|
const t = useTranslations("BimLoadingState");
|
|
39
39
|
const { ability } = usePermissions();
|