@collabdt/core 0.0.51 → 0.0.54
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/NOTICE +1021 -0
- package/README.md +32 -4
- package/dist/core/components/AppSidebarContent.d.ts.map +1 -1
- package/dist/core/components/AppSidebarContent.js.map +1 -1
- package/dist/core/components/ConfirmDialog.d.ts.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.map +1 -1
- package/dist/core/components/Logo.d.ts.map +1 -1
- package/dist/core/components/Logo.js.map +1 -1
- package/dist/core/components/Toolbar.d.ts.map +1 -1
- package/dist/core/components/Toolbar.js.map +1 -1
- package/dist/core/components/ToolbarBody.d.ts.map +1 -1
- package/dist/core/components/ToolbarBody.js.map +1 -1
- package/dist/core/components/ToolbarSubmenu.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/components/authentication/AuthPage.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/components/authentication/PasswordError.d.ts.map +1 -1
- package/dist/core/components/authentication/PasswordError.js.map +1 -1
- package/dist/core/components/authentication/Signin.d.ts.map +1 -1
- package/dist/core/components/authentication/Signin.js.map +1 -1
- package/dist/core/components/authentication/SigninEmail.d.ts.map +1 -1
- package/dist/core/components/authentication/SigninEmail.js.map +1 -1
- package/dist/core/components/authentication/Signup.d.ts.map +1 -1
- package/dist/core/components/authentication/Signup.js.map +1 -1
- package/dist/core/components/authentication/VerifyEmail.d.ts.map +1 -1
- package/dist/core/components/authentication/VerifyEmail.js.map +1 -1
- package/dist/core/components/authentication/index.d.ts.map +1 -1
- package/dist/core/components/authentication/index.js.map +1 -1
- package/dist/core/components/index.d.ts.map +1 -1
- package/dist/core/components/index.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.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.map +1 -1
- package/dist/core/components/organizationConfig/index.d.ts.map +1 -1
- package/dist/core/components/organizationConfig/index.js.map +1 -1
- package/dist/core/components/organizationConfig/src/organizationConfigContent.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/components/settings/src/AccountSettingsPanel.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/components/settings/src/OrganizationSettingsPanel.d.ts.map +1 -1
- package/dist/core/components/settings/src/OrganizationSettingsPanel.js.map +1 -1
- package/dist/core/components/settings/src/OrganizationSkeleton.d.ts.map +1 -1
- package/dist/core/components/settings/src/OrganizationSkeleton.js.map +1 -1
- package/dist/core/components/settings/src/SettingsContent.d.ts.map +1 -1
- package/dist/core/components/settings/src/SettingsContent.js.map +1 -1
- package/dist/core/components/settings/src/SettingsHeader.d.ts.map +1 -1
- package/dist/core/components/settings/src/SettingsHeader.js.map +1 -1
- package/dist/core/components/settings/src/SettingsSidebar.d.ts.map +1 -1
- package/dist/core/components/settings/src/SettingsSidebar.js.map +1 -1
- package/dist/core/components/settings/src/SettingsSkeleton.d.ts.map +1 -1
- package/dist/core/components/settings/src/SettingsSkeleton.js.map +1 -1
- package/dist/core/components/settings/src/UsersSettingsPanel.d.ts.map +1 -1
- package/dist/core/components/settings/src/UsersSettingsPanel.js.map +1 -1
- package/dist/core/components/settings/src/types.d.ts.map +1 -1
- package/dist/core/components/ui/Accordion.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/AlertDialog.d.ts.map +1 -1
- package/dist/core/components/ui/AlertDialog.js.map +1 -1
- package/dist/core/components/ui/AnimatedBackground.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/Avatar.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/Button.d.ts.map +1 -1
- package/dist/core/components/ui/Button.js.map +1 -1
- package/dist/core/components/ui/Calendar.d.ts.map +1 -1
- package/dist/core/components/ui/Calendar.js.map +1 -1
- package/dist/core/components/ui/Card.d.ts.map +1 -1
- package/dist/core/components/ui/Card.js.map +1 -1
- package/dist/core/components/ui/Checkbox.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/ColorCircle.d.ts.map +1 -1
- package/dist/core/components/ui/ColorCircle.js.map +1 -1
- package/dist/core/components/ui/Command.d.ts.map +1 -1
- package/dist/core/components/ui/Command.js.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
- package/dist/core/components/ui/Comments/Comment.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/Comment.js.map +1 -1
- package/dist/core/components/ui/Comments/CommentInput.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CommentInput.js.map +1 -1
- package/dist/core/components/ui/Comments/CommentsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/CommentsSection.js.map +1 -1
- package/dist/core/components/ui/Comments/commentUtils.d.ts.map +1 -1
- package/dist/core/components/ui/Comments/commentUtils.js.map +1 -1
- package/dist/core/components/ui/Countdown.d.ts.map +1 -1
- package/dist/core/components/ui/Countdown.js.map +1 -1
- package/dist/core/components/ui/DataTable.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/components/ui/DescriptionList.d.ts.map +1 -1
- package/dist/core/components/ui/DescriptionList.js.map +1 -1
- package/dist/core/components/ui/Dialog.d.ts.map +1 -1
- package/dist/core/components/ui/Dialog.js.map +1 -1
- package/dist/core/components/ui/DropdownMenu.d.ts.map +1 -1
- package/dist/core/components/ui/DropdownMenu.js.map +1 -1
- package/dist/core/components/ui/ExportData.d.ts.map +1 -1
- package/dist/core/components/ui/ExportData.js.map +1 -1
- package/dist/core/components/ui/FilesManager/index.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/index.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileItemComponent.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileItemComponent.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/FileMarker.d.ts.map +1 -1
- 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.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.map +1 -1
- package/dist/core/components/ui/FilesManager/src/downloadUtils.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useCommonFileUpload.d.ts.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.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileActions.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.d.ts.map +1 -1
- package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js.map +1 -1
- package/dist/core/components/ui/Footer.d.ts.map +1 -1
- package/dist/core/components/ui/Footer.js.map +1 -1
- package/dist/core/components/ui/GenericTool.d.ts.map +1 -1
- package/dist/core/components/ui/GenericTool.js.map +1 -1
- package/dist/core/components/ui/Icons/BcfIcon.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/BcfIcon.js.map +1 -1
- package/dist/core/components/ui/Icons/CdtIcon.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/CdtIcon.js.map +1 -1
- package/dist/core/components/ui/Icons/FloorPlanIcon.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/FloorPlanIcon.js.map +1 -1
- package/dist/core/components/ui/Icons/GoogleIcon.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/GoogleIcon.js.map +1 -1
- package/dist/core/components/ui/Icons/IdsIcon.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/IdsIcon.js.map +1 -1
- package/dist/core/components/ui/Icons/IfcIcon.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/IfcIcon.js.map +1 -1
- package/dist/core/components/ui/Icons/index.d.ts.map +1 -1
- package/dist/core/components/ui/Icons/index.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Container.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Container.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Header.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/Header.js.map +1 -1
- package/dist/core/components/ui/InfoSidebar/index.d.ts.map +1 -1
- package/dist/core/components/ui/InfoSidebar/index.js.map +1 -1
- package/dist/core/components/ui/Input.d.ts.map +1 -1
- package/dist/core/components/ui/Input.js.map +1 -1
- package/dist/core/components/ui/Label.d.ts.map +1 -1
- package/dist/core/components/ui/Label.js.map +1 -1
- package/dist/core/components/ui/LanguageToggle.d.ts.map +1 -1
- package/dist/core/components/ui/LanguageToggle.js.map +1 -1
- package/dist/core/components/ui/LoadingSpinner.d.ts.map +1 -1
- package/dist/core/components/ui/LoadingSpinner.js.map +1 -1
- package/dist/core/components/ui/Menubar.d.ts.map +1 -1
- package/dist/core/components/ui/Menubar.js.map +1 -1
- package/dist/core/components/ui/NavUser.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/components/ui/Popover.d.ts.map +1 -1
- package/dist/core/components/ui/Popover.js.map +1 -1
- package/dist/core/components/ui/Progress.d.ts.map +1 -1
- package/dist/core/components/ui/Progress.js.map +1 -1
- package/dist/core/components/ui/ScrollArea.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/Select.d.ts.map +1 -1
- package/dist/core/components/ui/Select.js.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
- package/dist/core/components/ui/Sensors/Sensor.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/Sensor.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorChart.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorTagsSection.js.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
- package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
- package/dist/core/components/ui/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.map +1 -1
- package/dist/core/components/ui/Sensors/sensorUtils.js.map +1 -1
- package/dist/core/components/ui/Separator.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/ShareFeature/QRCodeWithLink.d.ts.map +1 -1
- package/dist/core/components/ui/ShareFeature/QRCodeWithLink.js.map +1 -1
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts.map +1 -1
- package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js.map +1 -1
- package/dist/core/components/ui/ShareFeature/index.d.ts.map +1 -1
- package/dist/core/components/ui/ShareFeature/index.js.map +1 -1
- package/dist/core/components/ui/Sheet.d.ts.map +1 -1
- package/dist/core/components/ui/Sheet.js.map +1 -1
- package/dist/core/components/ui/Sidebar.d.ts.map +1 -1
- package/dist/core/components/ui/Sidebar.js.map +1 -1
- package/dist/core/components/ui/Skeleton.d.ts.map +1 -1
- package/dist/core/components/ui/Skeleton.js.map +1 -1
- package/dist/core/components/ui/Slider.d.ts.map +1 -1
- package/dist/core/components/ui/Slider.js.map +1 -1
- package/dist/core/components/ui/Sonner.d.ts.map +1 -1
- package/dist/core/components/ui/Sonner.js.map +1 -1
- package/dist/core/components/ui/Switch.d.ts.map +1 -1
- package/dist/core/components/ui/Switch.js.map +1 -1
- package/dist/core/components/ui/Table.d.ts.map +1 -1
- package/dist/core/components/ui/Table.js.map +1 -1
- package/dist/core/components/ui/Tabs.d.ts.map +1 -1
- package/dist/core/components/ui/Tabs.js.map +1 -1
- package/dist/core/components/ui/Textarea.d.ts.map +1 -1
- package/dist/core/components/ui/Textarea.js.map +1 -1
- package/dist/core/components/ui/Toggle.d.ts.map +1 -1
- package/dist/core/components/ui/Toggle.js.map +1 -1
- package/dist/core/components/ui/ToggleGroup.d.ts.map +1 -1
- package/dist/core/components/ui/ToggleGroup.js.map +1 -1
- package/dist/core/components/ui/ToolbarButton.d.ts.map +1 -1
- package/dist/core/components/ui/ToolbarButton.js.map +1 -1
- package/dist/core/components/ui/Tooltip.d.ts.map +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.map +1 -1
- package/dist/core/components/ui/chart.d.ts.map +1 -1
- package/dist/core/components/ui/chart.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/index.d.ts.map +1 -1
- package/dist/core/components/ui/index.js.map +1 -1
- package/dist/core/components/ui/openPopupWindow.d.ts.map +1 -1
- package/dist/core/components/ui/openPopupWindow.js.map +1 -1
- package/dist/core/components/ui/openPopupWindowLCA.d.ts.map +1 -1
- package/dist/core/components/ui/openPopupWindowLCA.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.d.ts.map +1 -1
- package/dist/core/components/ui/uploadFile.js.map +1 -1
- package/dist/core/components/viewers/Data/DataMenu.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/DataMenu.js.map +1 -1
- package/dist/core/components/viewers/Data/FilterButtons.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/FilterButtons.js.map +1 -1
- package/dist/core/components/viewers/Data/HeaderButtons.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/HeaderButtons.js.map +1 -1
- package/dist/core/components/viewers/Data/MoreOptions.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/MoreOptions.js.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/Filters.js.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js.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.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.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.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.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.map +1 -1
- package/dist/core/components/viewers/Data/details/AttachedFiles.js.map +1 -1
- package/dist/core/components/viewers/Data/details/CheckboxGroup.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/CheckboxGroup.js.map +1 -1
- package/dist/core/components/viewers/Data/details/DetailActions.d.ts.map +1 -1
- 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.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.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.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.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.map +1 -1
- package/dist/core/components/viewers/Data/details/UnitsGrid.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/UnitsGrid.js.map +1 -1
- package/dist/core/components/viewers/Data/details/getAttachmentFileName.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/details/getAttachmentFileName.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.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.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.map +1 -1
- package/dist/core/components/viewers/Data/files/FilePreview.d.ts.map +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.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.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js.map +1 -1
- package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.d.ts.map +1 -1
- 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.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.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.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.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.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.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.map +1 -1
- package/dist/core/components/viewers/Data/utils/Columns.d.ts.map +1 -1
- 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/convertDate.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/utils/convertDate.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/csvUtils.d.ts.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.map +1 -1
- package/dist/core/components/viewers/Data/utils/positionParser.d.ts.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.map +1 -1
- package/dist/core/components/viewers/Data/utils/useViewerData.js.map +1 -1
- package/dist/core/components/viewers/Data/utils/viewerConfig.d.ts.map +1 -1
- package/dist/core/components/viewers/Data/utils/viewerConfig.js.map +1 -1
- package/dist/core/components/viewers/Viewer.d.ts.map +1 -1
- package/dist/core/components/viewers/Viewer.js.map +1 -1
- package/dist/core/components/viewers/bim/BimToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/BimToolbar.js.map +1 -1
- package/dist/core/components/viewers/bim/BimViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/BimViewer.js.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.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.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.map +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.map +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.map +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.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.d.ts.map +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.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.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.map +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.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.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.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/CurrentCamera.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/CurrentCamera.js.map +1 -1
- package/dist/core/components/viewers/bim/src/CurrentWorld.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/CurrentWorld.js.map +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.map +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.map +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.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts.map +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.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.js.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/utils.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/FloorplanTool/src/utils.js.map +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.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/IfcToFragments.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/IfcToFragments.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.map +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.map +1 -1
- package/dist/core/components/viewers/bim/src/ModelManager/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/SimpleBimViewer.js.map +1 -1
- package/dist/core/components/viewers/bim/src/SpatialStructure.d.ts.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.map +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/CategoryHighlighter.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/CategoryHighlighter.js.map +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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ViewModeCoordinator.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ViewModeCoordinator.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/drawingLayers.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/drawingLayers.js.map +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/exportDrawingToDxf.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/exportDrawingToDxf.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/safeRun.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/safeRun.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.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/viewSection.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/lib/viewSection.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.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.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.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.map +1 -1
- 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.map +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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts.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.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/index.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/index.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/markerUtils.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/AddToBim/src/markerUtils.js.map +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.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.map +1 -1
- 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.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.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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js.map +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.map +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.map +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.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts.map +1 -1
- package/dist/core/components/viewers/bim/src/tools/measureBimTool.js.map +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.map +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.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.map +1 -1
- package/dist/core/components/viewers/bim/utils/setCameraLookAt.js.map +1 -1
- package/dist/core/components/viewers/index.d.ts.map +1 -1
- package/dist/core/components/viewers/index.js.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/MapViewer.js.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.map +1 -1
- package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts.map +1 -1
- 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.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.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.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.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.map +1 -1
- package/dist/core/components/viewers/map/datasets/data.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/data.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/index.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/arcgisFetch.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/arcgisFetch.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.d.ts.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.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/geojsonFile.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/geojsonFile.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/localDatasets.js.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.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts.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.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts.map +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.map +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/src/wmsTime.d.ts +0 -8
- package/dist/core/components/viewers/map/datasets/src/wmsTime.d.ts.map +1 -1
- package/dist/core/components/viewers/map/datasets/src/wmsTime.js.map +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.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.map +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.map +1 -1
- 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.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js.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.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.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js.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.map +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.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/countryLayerUtils.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/countryLayerUtils.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.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.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/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.map +1 -1
- 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.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.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.js.map +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.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.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.map +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/disposeThreeScene.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/disposeThreeScene.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/mapLayersUtils.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapLayers/src/mapLayersUtils.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/index.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/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.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
- package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts.map +1 -1
- 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.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.map +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.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.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.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.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.map +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.map +1 -1
- package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/compare/CompareDialog.js.map +1 -1
- package/dist/core/components/viewers/map/src/compare/description-list.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/compare/description-list.js.map +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.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.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.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/ProgressBar.d.ts.map +1 -1
- package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/ProgressBar.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.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.map +1 -1
- 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.map +1 -1
- package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts.map +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.map +1 -1
- package/dist/core/components/viewers/map/src/tools/mapTools.js.map +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.map +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.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.map +1 -1
- package/dist/core/components/viewers/map/utils/MapEventManager/MapHoverManager.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/MapEventManager/MapHoverManager.js.map +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/dateName.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/dateName.js.map +1 -1
- package/dist/core/components/viewers/map/utils/extractCoordinates.d.ts.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.map +1 -1
- package/dist/core/components/viewers/map/utils/fitBuildingsBounds.js.map +1 -1
- package/dist/core/components/viewers/map/utils/fitGeojsonBounds.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/fitGeojsonBounds.js.map +1 -1
- package/dist/core/components/viewers/map/utils/flyToEach.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/flyToEach.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoder.d.ts.map +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.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/adapters.js.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/config.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/geocoding/config.js.map +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.map +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.map +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.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.map +1 -1
- package/dist/core/components/viewers/map/utils/mapStyleCatalog.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/mapStyleCatalog.js.map +1 -1
- package/dist/core/components/viewers/map/utils/stringToColour.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/stringToColour.js.map +1 -1
- package/dist/core/components/viewers/map/utils/toggleBimToMap.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/toggleBimToMap.js.map +1 -1
- package/dist/core/components/viewers/map/utils/updateBuildingOsmId.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/updateBuildingOsmId.js.map +1 -1
- package/dist/core/components/viewers/map/utils/validateBounds.d.ts.map +1 -1
- package/dist/core/components/viewers/map/utils/validateBounds.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudToolbar.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudViewer.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/PointCloudViewer.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/define.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/define.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.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.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.map +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.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.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.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.d.ts.map +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.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.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.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/ViewportGizmo.d.ts.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.map +1 -1
- 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.map +1 -1
- 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.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.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.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.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.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.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.map +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.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/src/getCameraPosition.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/src/getCameraPosition.js.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/index.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/src/tools/index.js.map +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.map +1 -1
- package/dist/core/components/viewers/pointcloud/utils/potreeLoader.d.ts.map +1 -1
- package/dist/core/components/viewers/pointcloud/utils/potreeLoader.js.map +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/components/viewers/useCoordinateSystem.d.ts.map +1 -1
- package/dist/core/components/viewers/useCoordinateSystem.js.map +1 -1
- package/dist/core/hooks/buildings/buildings.d.ts.map +1 -1
- package/dist/core/hooks/buildings/buildings.js.map +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.map +1 -1
- package/dist/core/hooks/comments/comments.js.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.d.ts.map +1 -1
- package/dist/core/hooks/comments/createCommentHooks.js.map +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.map +1 -1
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/index.js.map +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/infrastructures/infrastructures.d.ts.map +1 -1
- package/dist/core/hooks/infrastructures/infrastructures.js.map +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/openDataPortals/openDataPortals.d.ts.map +1 -1
- package/dist/core/hooks/openDataPortals/openDataPortals.js.map +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/organizations/organizations.d.ts.map +1 -1
- package/dist/core/hooks/organizations/organizations.js.map +1 -1
- package/dist/core/hooks/ports/apiAdapter.d.ts.map +1 -1
- package/dist/core/hooks/provider.d.ts.map +1 -1
- package/dist/core/hooks/provider.js.map +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/sensorTypes/sensorTypes.d.ts.map +1 -1
- package/dist/core/hooks/sensorTypes/sensorTypes.js.map +1 -1
- package/dist/core/hooks/sensors/createSensorHooks.d.ts.map +1 -1
- package/dist/core/hooks/sensors/createSensorHooks.js.map +1 -1
- package/dist/core/hooks/sensors/sensors.d.ts.map +1 -1
- package/dist/core/hooks/sensors/sensors.js.map +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/sites/sites.js.map +1 -1
- package/dist/core/hooks/ui/use-mobile.d.ts.map +1 -1
- package/dist/core/hooks/ui/use-mobile.js.map +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/hooks/users/users.d.ts.map +1 -1
- package/dist/core/hooks/users/users.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +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/errors.d.ts.map +1 -1
- package/dist/core/plugins/host/errors.js.map +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.map +1 -1
- package/dist/core/plugins/host/registry.d.ts.map +1 -1
- package/dist/core/plugins/host/registry.js.map +1 -1
- package/dist/core/plugins/installed.d.ts.map +1 -1
- package/dist/core/plugins/installed.js.map +1 -1
- package/dist/core/plugins/sdk/components.d.ts.map +1 -1
- package/dist/core/plugins/sdk/components.js.map +1 -1
- package/dist/core/plugins/sdk/index.d.ts.map +1 -1
- package/dist/core/plugins/sdk/index.js.map +1 -1
- package/dist/core/plugins/sdk/types.d.ts.map +1 -1
- package/dist/core/plugins/sdk/types.js.map +1 -1
- package/dist/core/store/ActionMap.d.ts.map +1 -1
- package/dist/core/store/AppConfig/context.d.ts.map +1 -1
- package/dist/core/store/AppConfig/context.js.map +1 -1
- package/dist/core/store/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.map +1 -1
- package/dist/core/store/BIM/context.js.map +1 -1
- 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.map +1 -1
- package/dist/core/store/Buildings/context.js.map +1 -1
- 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.map +1 -1
- package/dist/core/store/Content/context.d.ts.map +1 -1
- package/dist/core/store/Content/context.js.map +1 -1
- package/dist/core/store/Datasets/context.d.ts.map +1 -1
- package/dist/core/store/Datasets/context.js.map +1 -1
- package/dist/core/store/Datasets/reducer.d.ts.map +1 -1
- package/dist/core/store/Datasets/reducer.js.map +1 -1
- package/dist/core/store/Files/context.d.ts.map +1 -1
- package/dist/core/store/Files/context.js.map +1 -1
- package/dist/core/store/Files/reducer.d.ts.map +1 -1
- package/dist/core/store/Files/reducer.js.map +1 -1
- package/dist/core/store/Map/context.d.ts.map +1 -1
- package/dist/core/store/Map/context.js.map +1 -1
- 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/Menus/context.d.ts.map +1 -1
- package/dist/core/store/Menus/context.js.map +1 -1
- package/dist/core/store/Menus/reducer.d.ts.map +1 -1
- package/dist/core/store/Menus/reducer.js.map +1 -1
- package/dist/core/store/Permissions/context.d.ts.map +1 -1
- package/dist/core/store/Permissions/context.js.map +1 -1
- package/dist/core/store/PointCloud/context.d.ts.map +1 -1
- package/dist/core/store/PointCloud/context.js.map +1 -1
- package/dist/core/store/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.map +1 -1
- package/dist/core/store/Tools/context.js.map +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/store/index.d.ts.map +1 -1
- package/dist/core/store/index.js.map +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/bim.d.ts.map +1 -1
- package/dist/core/types/datasetTypes.d.ts.map +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.map +1 -1
- package/dist/core/types/global.d.ts.map +1 -1
- package/dist/core/types/global.js.map +1 -1
- package/dist/core/types/index.d.ts.map +1 -1
- package/dist/core/types/index.js.map +1 -1
- package/dist/core/types/map.d.ts.map +1 -1
- package/dist/core/types/martinTypes.d.ts.map +1 -1
- package/dist/core/types/martinTypes.js.map +1 -1
- package/dist/core/types/next-auth.d.ts.map +1 -1
- package/dist/core/types/tools.d.ts.map +1 -1
- package/dist/core/types/users.d.ts.map +1 -1
- package/dist/core/utils/acceptedFiles.d.ts.map +1 -1
- package/dist/core/utils/acceptedFiles.js.map +1 -1
- package/dist/core/utils/errorHandler.d.ts.map +1 -1
- package/dist/core/utils/errorHandler.js.map +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/imageUtils.d.ts.map +1 -1
- package/dist/core/utils/imageUtils.js.map +1 -1
- package/dist/core/utils/index.d.ts.map +1 -1
- package/dist/core/utils/index.js.map +1 -1
- package/dist/core/utils/markerUtils.d.ts.map +1 -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.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.d.ts.map +1 -1
- package/dist/core/utils/timeUtils.js.map +1 -1
- package/dist/core/utils/utils.d.ts.map +1 -1
- package/dist/core/utils/utils.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\nimport * as OBC from '@thatopen/components'\r\nimport * as OBF from \"@thatopen/components-front\"\r\nimport * as THREE from \"three\";\r\nimport { LineMaterial } from \"three/examples/jsm/lines/LineMaterial.js\";\r\n\r\n// Utilities\r\nimport { Tool, ToolbarToolType } from '../../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport { Button } from '../../../../../ui/Button'\r\nimport { DropdownMenuItem } from '../../../../../ui/DropdownMenu'\r\nimport { Card, CardContent, CardHeader, CardTitle } from '../../../../../ui/Card'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { MenusContext, ToolsContext } from '../../../../../../store'\r\nimport { BimContext } from '../../../../../../store'\r\nimport { CursorType } from '../../../../../../types/global'\r\nimport { Cursor } from '../../Cursor'\r\n\r\n// Submenu wrapper\r\nimport { ToolbarSubmenu, SubmenuContext } from '../../../../../ToolbarSubmenu'\r\n\r\ninterface ClippingToolProps {\r\n tool: Tool\r\n}\r\n\r\nexport const ClippingTool: React.FC<ClippingToolProps> = ({ tool }) => {\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { dispatch: menusDispatch } = React.useContext(MenusContext)\r\n const { state: bimState } = React.useContext(BimContext)\r\n const { bimComponents, world } = bimState.bim\r\n\r\n const [active, setActive] = React.useState(false)\r\n const keydownRef = React.useRef<(e: KeyboardEvent) => void>(() => {})\r\n\r\n const setCursor = (cursor: CursorType) => {\r\n if (!bimComponents) return\r\n const currentCursor = bimComponents.get(Cursor)\r\n if (!currentCursor) return\r\n currentCursor.cursor = cursor\r\n }\r\n\r\n const setTools = (currentToolId: ToolbarToolType) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n \r\n const flipAddingPlaneState = async () => {\r\n const _active = !active\r\n\r\n setActive(_active)\r\n setTools(_active ? tool.id : null)\r\n setCursor(_active ? 'crosshair' : '')\r\n }\r\n\r\n const removeAllClippingPlanes = React.useCallback(() => {\r\n if (!world || !bimComponents) return\r\n console.log(\"Remove all clipping planes\")\r\n bimComponents.get(OBC.Clipper).deleteAll()\r\n }, [world, bimComponents])\r\n\r\n //use effect to handle controlling the state of adding clipping plane\r\n const handleCreateClippingPlane = React.useCallback(async () => {\r\n if (!world || !bimComponents) return\r\n // set up\r\n const casters = bimComponents.get(OBC.Raycasters)\r\n casters.get(world)\r\n\r\n //styling \r\n const clipStyler = bimComponents.get(OBF.ClipStyler)\r\n clipStyler.world = world;\r\n clipStyler.styles.set(\"Black\", {\r\n linesMaterial: new LineMaterial({\r\n color: \"black\",\r\n linewidth: 2, // thick, screen-space lines\r\n }),\r\n fillsMaterial: new THREE.MeshBasicMaterial({\r\n color: 0x000000,\r\n side: THREE.DoubleSide, // see the cap from both sides\r\n // transparent: true, // enable opacity blending\r\n // opacity: 0.2, // soft see-through cap\r\n // depthWrite: false, // reduce sorting issues with transparency\r\n // polygonOffset: true, // nudge to prevent z-fighting\r\n // polygonOffsetFactor: -2,\r\n // polygonOffsetUnits: 1,\r\n }),\r\n });\r\n\r\n //set up items to be filled\r\n const finder = bimComponents.get(OBC.ItemsFinder);\r\n finder.create(\"Walls\", [{ categories: [/WALL/] }]);\r\n finder.create(\"Slabs\", [{ categories: [/SLAB/] }]);\r\n finder.create(\"Columns\", [{ categories: [/COLUMN/] }]);\r\n finder.create(\"Doors\", [{ categories: [/DOOR/] }]);\r\n finder.create(\"Curtains\", [{ categories: [/PLATE/, /MEMBER/] }]);\r\n finder.create(\"Windows\", [{ categories: [/WINDOW/] }]);\r\n\r\n const classifier = bimComponents.get(OBC.Classifier);\r\n const classificationName = \"ClipperGroups\";\r\n classifier.setGroupQuery(classificationName, \"Walls\", { name: \"Walls\" });\r\n classifier.setGroupQuery(classificationName, \"Slabs\", { name: \"Slabs\" });\r\n classifier.setGroupQuery(classificationName, \"Columns\", { name: \"Columns\" });\r\n classifier.setGroupQuery(classificationName, \"Doors\", { name: \"Doors\" });\r\n classifier.setGroupQuery(classificationName, \"Curtains\", { name: \"Curtains\" });\r\n classifier.setGroupQuery(classificationName, \"Windows\", { name: \"Windows\" });\r\n\r\n //Create clipper\r\n const clipper = bimComponents.get(OBC.Clipper)\r\n clipper.enabled = true\r\n\r\n //Apply styling\r\n clipper.list.onItemSet.add(({ key }) => {\r\n clipStyler.createFromClipping(key, {\r\n items: { All: { style: \"Black\" } },\r\n });\r\n });\r\n\r\n let result = await clipper.create(world)\r\n\r\n if (result) {\r\n console.log(result)\r\n }\r\n }, [world, bimComponents])\r\n\r\n React.useEffect(() => {\r\n keydownRef.current = (event: KeyboardEvent) => {\r\n if (event.key === 'Backspace') {\r\n // Remove the clipping plane under the cursor\r\n if (!world || !bimComponents) return\r\n bimComponents.get(OBC.Clipper).delete(world, undefined)\r\n }\r\n }\r\n }, [world, bimComponents])\r\n \r\n const handleKeyDown = React.useCallback((e: KeyboardEvent) => {\r\n keydownRef.current?.(e)\r\n }, [])\r\n \r\n // Handle deleting plane using Backspace\r\n React.useEffect(() => {\r\n if (!active) {\r\n window.removeEventListener('keydown', handleKeyDown)\r\n return\r\n }\r\n window.addEventListener('keydown', handleKeyDown)\r\n return () => {\r\n window.removeEventListener('keydown', handleKeyDown)\r\n }\r\n }, [active, handleKeyDown])\r\n\r\n React.useEffect (() => {\r\n if (!world || !bimComponents) return\r\n \r\n const container = world.renderer.three.domElement\r\n\r\n if (active) {\r\n container.addEventListener(\"dblclick\", handleCreateClippingPlane)\r\n }\r\n else {\r\n container.removeEventListener(\"dblclick\", handleCreateClippingPlane)\r\n }\r\n\r\n }, [active, world, bimComponents])\r\n\r\n return (\r\n <div>\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={flipAddingPlaneState}>\r\n <LR.PlusSquare />\r\n <span>{active? 'Cancel add' : 'Add'} clipping Plane</span>\r\n </DropdownMenuItem>\r\n \r\n <DropdownMenuItem onClick={() => removeAllClippingPlanes()}>\r\n <LR.Trash2/>\r\n <span> Delete all clipping planes</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n\r\n {active &&\r\n <Card className=\"p-3 absolute bottom-10 left-0 bg-background shadow-md z-10 w-full\">\r\n <span className=\"text-muted-foreground text-xs\">\r\n Double click on the model to add a clipping plane. Press Backspace to remove the clipping plane.\r\n </span> \r\n </Card>\r\n } \r\n </div>\r\n \r\n )\r\n}"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\nimport * as OBC from '@thatopen/components'\r\nimport * as OBF from \"@thatopen/components-front\"\r\nimport * as THREE from \"three\";\r\nimport { LineMaterial } from \"three/examples/jsm/lines/LineMaterial.js\";\r\n\r\n// Utilities\r\nimport { Tool, ToolbarToolType } from '../../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport { Button } from '../../../../../ui/Button'\r\nimport { DropdownMenuItem } from '../../../../../ui/DropdownMenu'\r\nimport { Card, CardContent, CardHeader, CardTitle } from '../../../../../ui/Card'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { MenusContext, ToolsContext } from '../../../../../../store'\r\nimport { BimContext } from '../../../../../../store'\r\nimport { CursorType } from '../../../../../../types/global'\r\nimport { Cursor } from '../../Cursor'\r\n\r\n// Submenu wrapper\r\nimport { ToolbarSubmenu, SubmenuContext } from '../../../../../ToolbarSubmenu'\r\n\r\ninterface ClippingToolProps {\r\n tool: Tool\r\n}\r\n\r\nexport const ClippingTool: React.FC<ClippingToolProps> = ({ tool }) => {\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { dispatch: menusDispatch } = React.useContext(MenusContext)\r\n const { state: bimState } = React.useContext(BimContext)\r\n const { bimComponents, world } = bimState.bim\r\n\r\n const [active, setActive] = React.useState(false)\r\n const keydownRef = React.useRef<(e: KeyboardEvent) => void>(() => {})\r\n\r\n const setCursor = (cursor: CursorType) => {\r\n if (!bimComponents) return\r\n const currentCursor = bimComponents.get(Cursor)\r\n if (!currentCursor) return\r\n currentCursor.cursor = cursor\r\n }\r\n\r\n const setTools = (currentToolId: ToolbarToolType) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n \r\n const flipAddingPlaneState = async () => {\r\n const _active = !active\r\n\r\n setActive(_active)\r\n setTools(_active ? tool.id : null)\r\n setCursor(_active ? 'crosshair' : '')\r\n }\r\n\r\n const removeAllClippingPlanes = React.useCallback(() => {\r\n if (!world || !bimComponents) return\r\n console.log(\"Remove all clipping planes\")\r\n bimComponents.get(OBC.Clipper).deleteAll()\r\n }, [world, bimComponents])\r\n\r\n //use effect to handle controlling the state of adding clipping plane\r\n const handleCreateClippingPlane = React.useCallback(async () => {\r\n if (!world || !bimComponents) return\r\n // set up\r\n const casters = bimComponents.get(OBC.Raycasters)\r\n casters.get(world)\r\n\r\n //styling \r\n const clipStyler = bimComponents.get(OBF.ClipStyler)\r\n clipStyler.world = world;\r\n clipStyler.styles.set(\"Black\", {\r\n linesMaterial: new LineMaterial({\r\n color: \"black\",\r\n linewidth: 2, // thick, screen-space lines\r\n }),\r\n fillsMaterial: new THREE.MeshBasicMaterial({\r\n color: 0x000000,\r\n side: THREE.DoubleSide, // see the cap from both sides\r\n // transparent: true, // enable opacity blending\r\n // opacity: 0.2, // soft see-through cap\r\n // depthWrite: false, // reduce sorting issues with transparency\r\n // polygonOffset: true, // nudge to prevent z-fighting\r\n // polygonOffsetFactor: -2,\r\n // polygonOffsetUnits: 1,\r\n }),\r\n });\r\n\r\n //set up items to be filled\r\n const finder = bimComponents.get(OBC.ItemsFinder);\r\n finder.create(\"Walls\", [{ categories: [/WALL/] }]);\r\n finder.create(\"Slabs\", [{ categories: [/SLAB/] }]);\r\n finder.create(\"Columns\", [{ categories: [/COLUMN/] }]);\r\n finder.create(\"Doors\", [{ categories: [/DOOR/] }]);\r\n finder.create(\"Curtains\", [{ categories: [/PLATE/, /MEMBER/] }]);\r\n finder.create(\"Windows\", [{ categories: [/WINDOW/] }]);\r\n\r\n const classifier = bimComponents.get(OBC.Classifier);\r\n const classificationName = \"ClipperGroups\";\r\n classifier.setGroupQuery(classificationName, \"Walls\", { name: \"Walls\" });\r\n classifier.setGroupQuery(classificationName, \"Slabs\", { name: \"Slabs\" });\r\n classifier.setGroupQuery(classificationName, \"Columns\", { name: \"Columns\" });\r\n classifier.setGroupQuery(classificationName, \"Doors\", { name: \"Doors\" });\r\n classifier.setGroupQuery(classificationName, \"Curtains\", { name: \"Curtains\" });\r\n classifier.setGroupQuery(classificationName, \"Windows\", { name: \"Windows\" });\r\n\r\n //Create clipper\r\n const clipper = bimComponents.get(OBC.Clipper)\r\n clipper.enabled = true\r\n\r\n //Apply styling\r\n clipper.list.onItemSet.add(({ key }) => {\r\n clipStyler.createFromClipping(key, {\r\n items: { All: { style: \"Black\" } },\r\n });\r\n });\r\n\r\n let result = await clipper.create(world)\r\n\r\n if (result) {\r\n console.log(result)\r\n }\r\n }, [world, bimComponents])\r\n\r\n React.useEffect(() => {\r\n keydownRef.current = (event: KeyboardEvent) => {\r\n if (event.key === 'Backspace') {\r\n // Remove the clipping plane under the cursor\r\n if (!world || !bimComponents) return\r\n bimComponents.get(OBC.Clipper).delete(world, undefined)\r\n }\r\n }\r\n }, [world, bimComponents])\r\n \r\n const handleKeyDown = React.useCallback((e: KeyboardEvent) => {\r\n keydownRef.current?.(e)\r\n }, [])\r\n \r\n // Handle deleting plane using Backspace\r\n React.useEffect(() => {\r\n if (!active) {\r\n window.removeEventListener('keydown', handleKeyDown)\r\n return\r\n }\r\n window.addEventListener('keydown', handleKeyDown)\r\n return () => {\r\n window.removeEventListener('keydown', handleKeyDown)\r\n }\r\n }, [active, handleKeyDown])\r\n\r\n React.useEffect (() => {\r\n if (!world || !bimComponents) return\r\n \r\n const container = world.renderer.three.domElement\r\n\r\n if (active) {\r\n container.addEventListener(\"dblclick\", handleCreateClippingPlane)\r\n }\r\n else {\r\n container.removeEventListener(\"dblclick\", handleCreateClippingPlane)\r\n }\r\n\r\n }, [active, world, bimComponents])\r\n\r\n return (\r\n <div>\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={flipAddingPlaneState}>\r\n <LR.PlusSquare />\r\n <span>{active? 'Cancel add' : 'Add'} clipping Plane</span>\r\n </DropdownMenuItem>\r\n \r\n <DropdownMenuItem onClick={() => removeAllClippingPlanes()}>\r\n <LR.Trash2/>\r\n <span> Delete all clipping planes</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n\r\n {active &&\r\n <Card className=\"p-3 absolute bottom-10 left-0 bg-background shadow-md z-10 w-full\">\r\n <span className=\"text-muted-foreground text-xs\">\r\n Double click on the model to add a clipping plane. Press Backspace to remove the clipping plane.\r\n </span> \r\n </Card>\r\n } \r\n </div>\r\n \r\n )\r\n}"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExplodeByLevelTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/ExplodeByLevelTool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExplodeByLevelTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/ExplodeByLevelTool.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AASjD,UAAU,mBAAmB;IAC3B,IAAI,EAAE,IAAI,CAAA;CACX;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+B5D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/ExplodeByLevelTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// Use this tutorial https://docs.thatopen.com/Tutorials/Fragments/Fragments/FragmentsModels/EditApi\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\n\r\n// Utilities\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport { Button } from '../../../../ui/Button'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\n\r\ninterface ExplodeByLevelProps {\r\n tool: Tool\r\n}\r\n\r\nexport const ExplodeByLevelTool: React.FC<ExplodeByLevelProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('ExplodeByLevelTool')\r\n\r\n const { state: bimState } = React.useContext(BimContext)\r\n const { bimComponents } = bimState.bim\r\n\r\n const handleExplodeByLevel = async () => {\r\n if (!bimComponents) return\r\n\r\n try {\r\n // TODO: Implement explode by level functionality\r\n console.log('Explode by level functionality not implemented yet')\r\n }\r\n catch (error) {\r\n console.error('Error exploding by level:', error)\r\n }\r\n }\r\n\r\n return (\r\n <Button\r\n size=\"icon\"\r\n variant=\"ghost\"\r\n className=\"flex justify-center items-center h-9 w-9 pointer-events-auto opacity-50\"\r\n onClick={handleExplodeByLevel}\r\n title={`${tool.title} (${t('comingSoon')})`}\r\n disabled={true}\r\n >\r\n <LR.Layers3 />\r\n </Button>\r\n )\r\n}"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/ExplodeByLevelTool.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// Use this tutorial https://docs.thatopen.com/Tutorials/Fragments/Fragments/FragmentsModels/EditApi\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\n\r\n// Utilities\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport { Button } from '../../../../ui/Button'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\n\r\ninterface ExplodeByLevelProps {\r\n tool: Tool\r\n}\r\n\r\nexport const ExplodeByLevelTool: React.FC<ExplodeByLevelProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('ExplodeByLevelTool')\r\n\r\n const { state: bimState } = React.useContext(BimContext)\r\n const { bimComponents } = bimState.bim\r\n\r\n const handleExplodeByLevel = async () => {\r\n if (!bimComponents) return\r\n\r\n try {\r\n // TODO: Implement explode by level functionality\r\n console.log('Explode by level functionality not implemented yet')\r\n }\r\n catch (error) {\r\n console.error('Error exploding by level:', error)\r\n }\r\n }\r\n\r\n return (\r\n <Button\r\n size=\"icon\"\r\n variant=\"ghost\"\r\n className=\"flex justify-center items-center h-9 w-9 pointer-events-auto opacity-50\"\r\n onClick={handleExplodeByLevel}\r\n title={`${tool.title} (${t('comingSoon')})`}\r\n disabled={true}\r\n >\r\n <LR.Layers3 />\r\n </Button>\r\n )\r\n}"],"mappings":";AAqDM;AA7CN,YAAY,WAAW;AACvB,SAAS,uBAAuB;AAMhC,SAAS,cAAc;AAGvB,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAMpB,MAAM,qBAAoD,CAAC,EAAE,KAAK,MAAM;AAE7E,QAAM,IAAI,gBAAgB,oBAAoB;AAE9C,QAAM,EAAE,OAAO,SAAS,IAAI,MAAM,WAAW,UAAU;AACvD,QAAM,EAAE,cAAc,IAAI,SAAS;AAEnC,QAAM,uBAAuB,YAAY;AACvC,QAAI,CAAC,cAAe;AAEpB,QAAI;AAEF,cAAQ,IAAI,oDAAoD;AAAA,IAClE,SACO,OAAO;AACZ,cAAQ,MAAM,6BAA6B,KAAK;AAAA,IAClD;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,SAAS;AAAA,MACT,OAAO,GAAG,KAAK,KAAK,KAAK,EAAE,YAAY,CAAC;AAAA,MACxC,UAAU;AAAA,MAEV,8BAAC,GAAG,SAAH,EAAW;AAAA;AAAA,EACd;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FitCameraTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/FitCameraTool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FitCameraTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/FitCameraTool.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAUjD,UAAU,cAAc;IACtB,IAAI,EAAE,IAAI,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA4BlD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/FitCameraTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\n\r\n// Utilities\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport { Button } from '../../../../ui/Button'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { FitCamera } from '../FitCamera'\r\n\r\ninterface FitCameraProps {\r\n tool: Tool\r\n}\r\n\r\nexport const FitCameraTool: React.FC<FitCameraProps> = ({ tool }) => {\r\n const { state: bimState } = React.useContext(BimContext)\r\n const { bimComponents } = bimState.bim\r\n\r\n const handleFitCamera = async () => {\r\n if (!bimComponents) return\r\n\r\n try {\r\n const fitCamera = bimComponents.get(FitCamera)\r\n if (!fitCamera) throw new Error('FitCamera component not found')\r\n await fitCamera.fit()\r\n }\r\n catch (error) {\r\n console.error('Error fitting camera:', error)\r\n }\r\n }\r\n\r\n return (\r\n <Button\r\n size=\"icon\"\r\n variant=\"ghost\"\r\n className=\"flex justify-center items-center h-9 w-9 pointer-events-auto\"\r\n onClick={handleFitCamera}\r\n title={tool.title}\r\n >\r\n <LR.Fullscreen />\r\n </Button>\r\n )\r\n}"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/FitCameraTool.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\n\r\n// Utilities\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport { Button } from '../../../../ui/Button'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { FitCamera } from '../FitCamera'\r\n\r\ninterface FitCameraProps {\r\n tool: Tool\r\n}\r\n\r\nexport const FitCameraTool: React.FC<FitCameraProps> = ({ tool }) => {\r\n const { state: bimState } = React.useContext(BimContext)\r\n const { bimComponents } = bimState.bim\r\n\r\n const handleFitCamera = async () => {\r\n if (!bimComponents) return\r\n\r\n try {\r\n const fitCamera = bimComponents.get(FitCamera)\r\n if (!fitCamera) throw new Error('FitCamera component not found')\r\n await fitCamera.fit()\r\n }\r\n catch (error) {\r\n console.error('Error fitting camera:', error)\r\n }\r\n }\r\n\r\n return (\r\n <Button\r\n size=\"icon\"\r\n variant=\"ghost\"\r\n className=\"flex justify-center items-center h-9 w-9 pointer-events-auto\"\r\n onClick={handleFitCamera}\r\n title={tool.title}\r\n >\r\n <LR.Fullscreen />\r\n </Button>\r\n )\r\n}"],"mappings":";AAgDM;AA1CN,YAAY,WAAW;AAMvB,SAAS,cAAc;AAGvB,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAMnB,MAAM,gBAA0C,CAAC,EAAE,KAAK,MAAM;AACnE,QAAM,EAAE,OAAO,SAAS,IAAI,MAAM,WAAW,UAAU;AACvD,QAAM,EAAE,cAAc,IAAI,SAAS;AAEnC,QAAM,kBAAkB,YAAY;AAClC,QAAI,CAAC,cAAe;AAEpB,QAAI;AACF,YAAM,YAAY,cAAc,IAAI,SAAS;AAC7C,UAAI,CAAC,UAAW,OAAM,IAAI,MAAM,+BAA+B;AAC/D,YAAM,UAAU,IAAI;AAAA,IACtB,SACO,OAAO;AACZ,cAAQ,MAAM,yBAAyB,KAAK;AAAA,IAC9C;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,WAAU;AAAA,MACV,SAAS;AAAA,MACT,OAAO,KAAK;AAAA,MAEZ,8BAAC,GAAG,YAAH,EAAc;AAAA;AAAA,EACjB;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InspectBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/InspectBimTool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InspectBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/InspectBimTool.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAYjD,UAAU,gBAAgB;IACxB,IAAI,EAAE,IAAI,CAAA;CACX;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAwGrD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/InspectBimTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\n\r\n// Utilities\r\nimport { ToolsContext } from '../../../../../store'\r\nimport { CursorType } from '../../../../../types/global'\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport {\r\n DropdownMenuItem,\r\n} from '../../../../ui/DropdownMenu'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { ToolbarSubmenu } from '../../../../ToolbarSubmenu'\r\n\r\ninterface InspectToolProps {\r\n tool: Tool\r\n}\r\n\r\nexport const InspectBimTool: React.FC<InspectToolProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('InspectBimTool')\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext)\r\n const [active, setActive] = React.useState(false)\r\n const [inspectType, setInspectType] = React.useState<'line' | 'area'>('line')\r\n\r\n const { world } = bimState.bim\r\n const toolId = tool.id\r\n\r\n const { currentToolId } = toolsState.tools\r\n const setTool = (currentToolId) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n\r\n const getContainer = (): HTMLElement | null => {\r\n if (typeof window === 'undefined') return null\r\n return world?.renderer?.three?.domElement || document.querySelector('#bim-viewer-container')\r\n }\r\n\r\n const setCursor = (cursor: CursorType) => {\r\n const container = getContainer()\r\n if (container) {\r\n container.style.cursor = cursor\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n const container = getContainer()\r\n if (!container) return\r\n\r\n // Click handler for inspect\r\n const clickHandler = (e): void => {\r\n if (!active) return\r\n console.log('clickHandler', e)\r\n }\r\n\r\n // Mousemove handler for cursor style\r\n const mousemoveHandler = (e): void => {\r\n if (!active) return\r\n console.log('mousemoveHandler', e)\r\n }\r\n\r\n // Add event listeners\r\n container.addEventListener('click', clickHandler)\r\n container.addEventListener('mousemove', mousemoveHandler)\r\n\r\n // Clean up when the component unmounts\r\n return () => {\r\n container.removeEventListener('click', clickHandler)\r\n container.removeEventListener('mousemove', mousemoveHandler)\r\n\r\n container.style.cursor = ''\r\n }\r\n }, [active, world])\r\n\r\n // Monitor active state changes\r\n React.useEffect(() => {\r\n if (active) {\r\n // setCursor('crosshair');\r\n }\r\n else {\r\n // setCursor('');\r\n }\r\n }, [active])\r\n\r\n // When current tool changes\r\n React.useEffect(() => {\r\n setActive(currentToolId === toolId)\r\n }, [currentToolId, toolId])\r\n\r\n type MeasureType = 'vertices' | 'explode' | 'clip' | 'plans'\r\n\r\n const handleInspectTypeChange = (type: MeasureType) => {\r\n setInspectType(type as any)\r\n\r\n // If not active, activate the tool\r\n if (!active) {\r\n setActive(true)\r\n setTool(type)\r\n }\r\n }\r\n\r\n return (\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={() => handleInspectTypeChange('vertices')} disabled={true}>\r\n <LR.Scale3D />\r\n <span>{t('show')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleInspectTypeChange('explode')} disabled={true}>\r\n <LR.UnfoldVertical />\r\n <span>{t('explode')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleInspectTypeChange('clip')} disabled={true}>\r\n <LR.Crop />\r\n <span>{t('clipping')}</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n )\r\n}\r\n"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/InspectBimTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\n\r\n// Utilities\r\nimport { ToolsContext } from '../../../../../store'\r\nimport { CursorType } from '../../../../../types/global'\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport {\r\n DropdownMenuItem,\r\n} from '../../../../ui/DropdownMenu'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { ToolbarSubmenu } from '../../../../ToolbarSubmenu'\r\n\r\ninterface InspectToolProps {\r\n tool: Tool\r\n}\r\n\r\nexport const InspectBimTool: React.FC<InspectToolProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('InspectBimTool')\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext)\r\n const [active, setActive] = React.useState(false)\r\n const [inspectType, setInspectType] = React.useState<'line' | 'area'>('line')\r\n\r\n const { world } = bimState.bim\r\n const toolId = tool.id\r\n\r\n const { currentToolId } = toolsState.tools\r\n const setTool = (currentToolId) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n\r\n const getContainer = (): HTMLElement | null => {\r\n if (typeof window === 'undefined') return null\r\n return world?.renderer?.three?.domElement || document.querySelector('#bim-viewer-container')\r\n }\r\n\r\n const setCursor = (cursor: CursorType) => {\r\n const container = getContainer()\r\n if (container) {\r\n container.style.cursor = cursor\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n const container = getContainer()\r\n if (!container) return\r\n\r\n // Click handler for inspect\r\n const clickHandler = (e): void => {\r\n if (!active) return\r\n console.log('clickHandler', e)\r\n }\r\n\r\n // Mousemove handler for cursor style\r\n const mousemoveHandler = (e): void => {\r\n if (!active) return\r\n console.log('mousemoveHandler', e)\r\n }\r\n\r\n // Add event listeners\r\n container.addEventListener('click', clickHandler)\r\n container.addEventListener('mousemove', mousemoveHandler)\r\n\r\n // Clean up when the component unmounts\r\n return () => {\r\n container.removeEventListener('click', clickHandler)\r\n container.removeEventListener('mousemove', mousemoveHandler)\r\n\r\n container.style.cursor = ''\r\n }\r\n }, [active, world])\r\n\r\n // Monitor active state changes\r\n React.useEffect(() => {\r\n if (active) {\r\n // setCursor('crosshair');\r\n }\r\n else {\r\n // setCursor('');\r\n }\r\n }, [active])\r\n\r\n // When current tool changes\r\n React.useEffect(() => {\r\n setActive(currentToolId === toolId)\r\n }, [currentToolId, toolId])\r\n\r\n type MeasureType = 'vertices' | 'explode' | 'clip' | 'plans'\r\n\r\n const handleInspectTypeChange = (type: MeasureType) => {\r\n setInspectType(type as any)\r\n\r\n // If not active, activate the tool\r\n if (!active) {\r\n setActive(true)\r\n setTool(type)\r\n }\r\n }\r\n\r\n return (\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={() => handleInspectTypeChange('vertices')} disabled={true}>\r\n <LR.Scale3D />\r\n <span>{t('show')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleInspectTypeChange('explode')} disabled={true}>\r\n <LR.UnfoldVertical />\r\n <span>{t('explode')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleInspectTypeChange('clip')} disabled={true}>\r\n <LR.Crop />\r\n <span>{t('clipping')}</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n )\r\n}\r\n"],"mappings":";AAsHM,SACE,KADF;AAhHN,YAAY,WAAW;AACvB,SAAS,uBAAuB;AAGhC,SAAS,oBAAoB;AAK7B;AAAA,EACE;AAAA,OACK;AAGP,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAMxB,MAAM,iBAA6C,CAAC,EAAE,KAAK,MAAM;AAEtE,QAAM,IAAI,gBAAgB,gBAAgB;AAE1C,QAAM,EAAE,UAAU,eAAe,OAAO,WAAW,IAAI,MAAM,WAAW,YAAY;AACpF,QAAM,EAAE,UAAU,aAAa,OAAO,SAAS,IAAI,MAAM,WAAW,UAAU;AAC9E,QAAM,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAS,KAAK;AAChD,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAA0B,MAAM;AAE5E,QAAM,EAAE,MAAM,IAAI,SAAS;AAC3B,QAAM,SAAS,KAAK;AAEpB,QAAM,EAAE,cAAc,IAAI,WAAW;AACrC,QAAM,UAAU,CAACA,mBAAkB;AACjC,kBAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,EAAE,eAAAA,eAAc;AAAA,IAC3B,CAAC;AAAA,EACH;AAEA,QAAM,eAAe,MAA0B;AAhDjD;AAiDI,QAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,aAAO,0CAAO,aAAP,mBAAiB,UAAjB,mBAAwB,eAAc,SAAS,cAAc,uBAAuB;AAAA,EAC7F;AAEA,QAAM,YAAY,CAAC,WAAuB;AACxC,UAAM,YAAY,aAAa;AAC/B,QAAI,WAAW;AACb,gBAAU,MAAM,SAAS;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,UAAU,MAAM;AACpB,UAAM,YAAY,aAAa;AAC/B,QAAI,CAAC,UAAW;AAGhB,UAAM,eAAe,CAAC,MAAY;AAChC,UAAI,CAAC,OAAQ;AACb,cAAQ,IAAI,gBAAgB,CAAC;AAAA,IAC/B;AAGA,UAAM,mBAAmB,CAAC,MAAY;AACpC,UAAI,CAAC,OAAQ;AACb,cAAQ,IAAI,oBAAoB,CAAC;AAAA,IACnC;AAGA,cAAU,iBAAiB,SAAS,YAAY;AAChD,cAAU,iBAAiB,aAAa,gBAAgB;AAGxD,WAAO,MAAM;AACX,gBAAU,oBAAoB,SAAS,YAAY;AACnD,gBAAU,oBAAoB,aAAa,gBAAgB;AAE3D,gBAAU,MAAM,SAAS;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,QAAQ,KAAK,CAAC;AAGlB,QAAM,UAAU,MAAM;AACpB,QAAI,QAAQ;AAAA,IAEZ,OACK;AAAA,IAEL;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAGX,QAAM,UAAU,MAAM;AACpB,cAAU,kBAAkB,MAAM;AAAA,EACpC,GAAG,CAAC,eAAe,MAAM,CAAC;AAI1B,QAAM,0BAA0B,CAAC,SAAsB;AACrD,mBAAe,IAAW;AAG1B,QAAI,CAAC,QAAQ;AACX,gBAAU,IAAI;AACd,cAAQ,IAAI;AAAA,IACd;AAAA,EACF;AAEA,SACE,qBAAC,kBAAe,MACd;AAAA,yBAAC,oBAAiB,SAAS,MAAM,wBAAwB,UAAU,GAAG,UAAU,MAC9E;AAAA,0BAAC,GAAG,SAAH,EAAW;AAAA,MACZ,oBAAC,UAAM,YAAE,MAAM,GAAE;AAAA,OACnB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,wBAAwB,SAAS,GAAG,UAAU,MAC7E;AAAA,0BAAC,GAAG,gBAAH,EAAkB;AAAA,MACnB,oBAAC,UAAM,YAAE,SAAS,GAAE;AAAA,OACtB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,wBAAwB,MAAM,GAAG,UAAU,MAC1E;AAAA,0BAAC,GAAG,MAAH,EAAQ;AAAA,MACT,oBAAC,UAAM,YAAE,UAAU,GAAE;AAAA,OACvB;AAAA,KACF;AAEJ;","names":["currentToolId"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bimToolbar.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/bimToolbar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bimToolbar.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/bimToolbar.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAYjD,MAAM,MAAM,mBAAmB,GAC/B,SAAS,GACT,iBAAiB,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,gBAAgB,GAAG,aAAa,GACpI,cAAc,GACd,gBAAgB,GAAG,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAAG,aAAa,GAAG,WAAW,GAAG,aAAa,CAAA;AAEnH,wBAAgB,eAAe,IAAI,IAAI,EAAE,CAiDxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/bimToolbar.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/bimToolbar.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { ClippingTool } from './ClippingTool/ClippingTool';\r\n\r\nimport { Tool } from '../../../../../types/tools'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as LR from 'lucide-react'\r\nimport { MeasureBimTool } from './measureBimTool'\r\nimport { InspectBimTool } from './InspectBimTool'\r\n\r\nimport { ShareBimTool } from './shareBimTool'\r\nimport AddToBim from './AddToBim'\r\nimport { SelectionBimTool } from './selectionBimTool'\r\nimport { FitCameraTool } from './FitCameraTool'\r\nimport { ExplodeByLevelTool } from './ExplodeByLevelTool'\r\n\r\nexport type BimToolbarToolsType = \r\n'bim-add' | \r\n'bim-add-comment' | 'bim-add-file' | 'bim-add-ids' | 'bim-add-ifc' | 'bim-add-bcf' | 'bim-add-cad' | 'bim-add-sensor' | 'bim-add-h2k' | \r\n 'bim-clipping' |\r\n 'bim-camera-fit' | 'bim-selection' | 'bim-camera' | 'bim-dimensions' | 'bim-inspect' | 'bim-share' | 'bim-explode'\r\n\r\nexport function bimToolbarTools(): Tool[] {\r\n // Translation\r\n const t = useTranslations('bimToolbarTools')\r\n\r\n return [\r\n // {\r\n // id: 'bim-selection',\r\n // title: t('selection'),\r\n // icon: LR.MousePointerClick,\r\n // component: SelectionBimTool,\r\n // },\r\n // {\r\n // id: 'bim-explode',\r\n // title: t('explode'),\r\n // icon: LR.Layers3,\r\n // component: ExplodeByLevelTool,\r\n // },\r\n {\r\n id: 'bim-clipping',\r\n title: t('clipping'),\r\n icon: LR.Crop,\r\n component: ClippingTool,\r\n },\r\n {\r\n id: 'bim-camera-fit',\r\n title: t('fit'),\r\n icon: LR.Maximize2,\r\n component: FitCameraTool,\r\n },\r\n {\r\n id: 'bim-add',\r\n title: t('add'),\r\n icon: LR.Plus,\r\n component: AddToBim,\r\n },\r\n {\r\n id: 'bim-dimensions',\r\n title: t('measure'),\r\n icon: LR.Ruler,\r\n component: MeasureBimTool,\r\n },\r\n {\r\n id: 'bim-share',\r\n title: t('share'),\r\n icon: LR.Share2,\r\n component: ShareBimTool\r\n },\r\n // Add more tools here if needed\r\n ]\r\n}\r\n"],"mappings":"AAGA,SAAS,oBAAoB;AAG7B,SAAS,uBAAuB;AAChC,YAAY,QAAQ;AACpB,SAAS,sBAAsB;AAG/B,SAAS,oBAAoB;AAC7B,OAAO,cAAc;AAErB,SAAS,qBAAqB;AASvB,SAAS,kBAA0B;AAExC,QAAM,IAAI,gBAAgB,iBAAiB;AAE3C,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAaL;AAAA,MACE,IAAI;AAAA,MACJ,OAAO,EAAE,UAAU;AAAA,MACnB,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO,EAAE,KAAK;AAAA,MACd,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO,EAAE,KAAK;AAAA,MACd,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO,EAAE,SAAS;AAAA,MAClB,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA;AAAA,MACE,IAAI;AAAA,MACJ,OAAO,EAAE,OAAO;AAAA,MAChB,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,IACb;AAAA;AAAA,EAEF;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measureBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/measureBimTool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"measureBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/measureBimTool.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,IAAI,EAAwB,MAAM,4BAA4B,CAAA;AAavE,UAAU,gBAAgB;IACxB,IAAI,EAAE,IAAI,CAAA;CACX;AAID,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAiHrD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/measureBimTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\nimport * as OBF from \"@thatopen/components-front\"\r\n// Utilities\r\nimport { ToolsContext } from '../../../../../store'\r\nimport { CursorType } from '../../../../../types/global'\r\nimport { Tool, type ToolbarToolType } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport {\r\n DropdownMenuItem,\r\n} from '../../../../ui/DropdownMenu'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { ToolbarSubmenu } from '../../../../ToolbarSubmenu'\r\nimport { LengthMeasurement } from '../BimMeasurements/LenghtMeasurement'\r\nimport { Cursor } from '../Cursor'\r\ninterface MeasureToolProps {\r\n tool: Tool\r\n}\r\n\r\ntype MeasureType = 'free' | 'edge' | 'area' | 'volume' \r\n\r\nexport const MeasureBimTool: React.FC<MeasureToolProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('MeasureBimTool')\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { state: bimState } = React.useContext(BimContext)\r\n const [active, setActive] = React.useState(false)\r\n\r\n const { bimComponents } = bimState.bim\r\n const lengthMeasurement = bimComponents?.get(LengthMeasurement)\r\n const hoverHandler = bimComponents?.get(OBF.Hoverer)\r\n\r\n const setCursor = (cursor: CursorType) => {\r\n if (!bimComponents) return\r\n const currentCursor = bimComponents.get(Cursor)\r\n if (!currentCursor) return\r\n currentCursor.cursor = cursor\r\n }\r\n\r\n const toolId = tool.id\r\n const { currentToolId } = toolsState.tools\r\n const setTools = (currentToolId: ToolbarToolType) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n\r\n // When current tool changes\r\n React.useEffect(() => {\r\n setActive(currentToolId === toolId)\r\n \r\n // Disable measurement when tool is deactivated\r\n if (currentToolId !== toolId && lengthMeasurement) {\r\n lengthMeasurement.enabled = false\r\n if (hoverHandler) {\r\n hoverHandler.enabled = true\r\n }\r\n }\r\n }, [currentToolId, toolId, lengthMeasurement])\r\n\r\n // Optional: Listen to measurement creation events\r\n React.useEffect(() => {\r\n if (!lengthMeasurement) return\r\n\r\n const handleMeasurementCreated = (data: { length: number }) => {\r\n console.log('Measurement created:', data.length)\r\n // You can add custom logic here when a measurement is created\r\n }\r\n\r\n lengthMeasurement.onDimensionCreate.add(handleMeasurementCreated)\r\n\r\n return () => {\r\n lengthMeasurement.onDimensionCreate.remove(handleMeasurementCreated)\r\n }\r\n }, [lengthMeasurement])\r\n\r\n const handleMeasureTypeChange = (type: MeasureType) => {\r\n if (!lengthMeasurement) return\r\n\r\n // Set the tool as active\r\n setTools(toolId)\r\n if (hoverHandler) {\r\n hoverHandler.enabled = false\r\n }\r\n\r\n // Enable the measurement component and set measurement mode\r\n if (type === 'free') {\r\n lengthMeasurement.createFreeMeasurements()\r\n }\r\n if (type === 'edge') {\r\n lengthMeasurement.createEdgeMeasurements()\r\n }\r\n\r\n setCursor('crosshair')\r\n }\r\n\r\n // Clear measurements function\r\n const clearMeasurements = () => {\r\n if (lengthMeasurement) {\r\n lengthMeasurement.deleteAll()\r\n lengthMeasurement.enabled = false\r\n }\r\n if (hoverHandler) {\r\n hoverHandler.enabled = true\r\n }\r\n setCursor('')\r\n }\r\n\r\n return (\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('free')} >\r\n <LR.Ruler />\r\n <span>{t('free')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('edge')} >\r\n <LR.RulerDimensionLine />\r\n <span>{t('edge')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('area')} disabled={true}>\r\n <LR.SquareDashed />\r\n <span>{t('area')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('volume')} disabled={true}>\r\n <LR.Box />\r\n <span>{t('volume')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={clearMeasurements} >\r\n <LR.X />\r\n <span>{t('clear')}</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n )\r\n}\r\n"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/measureBimTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\nimport * as OBF from \"@thatopen/components-front\"\r\n// Utilities\r\nimport { ToolsContext } from '../../../../../store'\r\nimport { CursorType } from '../../../../../types/global'\r\nimport { Tool, type ToolbarToolType } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport {\r\n DropdownMenuItem,\r\n} from '../../../../ui/DropdownMenu'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { ToolbarSubmenu } from '../../../../ToolbarSubmenu'\r\nimport { LengthMeasurement } from '../BimMeasurements/LenghtMeasurement'\r\nimport { Cursor } from '../Cursor'\r\ninterface MeasureToolProps {\r\n tool: Tool\r\n}\r\n\r\ntype MeasureType = 'free' | 'edge' | 'area' | 'volume' \r\n\r\nexport const MeasureBimTool: React.FC<MeasureToolProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('MeasureBimTool')\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { state: bimState } = React.useContext(BimContext)\r\n const [active, setActive] = React.useState(false)\r\n\r\n const { bimComponents } = bimState.bim\r\n const lengthMeasurement = bimComponents?.get(LengthMeasurement)\r\n const hoverHandler = bimComponents?.get(OBF.Hoverer)\r\n\r\n const setCursor = (cursor: CursorType) => {\r\n if (!bimComponents) return\r\n const currentCursor = bimComponents.get(Cursor)\r\n if (!currentCursor) return\r\n currentCursor.cursor = cursor\r\n }\r\n\r\n const toolId = tool.id\r\n const { currentToolId } = toolsState.tools\r\n const setTools = (currentToolId: ToolbarToolType) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n\r\n // When current tool changes\r\n React.useEffect(() => {\r\n setActive(currentToolId === toolId)\r\n \r\n // Disable measurement when tool is deactivated\r\n if (currentToolId !== toolId && lengthMeasurement) {\r\n lengthMeasurement.enabled = false\r\n if (hoverHandler) {\r\n hoverHandler.enabled = true\r\n }\r\n }\r\n }, [currentToolId, toolId, lengthMeasurement])\r\n\r\n // Optional: Listen to measurement creation events\r\n React.useEffect(() => {\r\n if (!lengthMeasurement) return\r\n\r\n const handleMeasurementCreated = (data: { length: number }) => {\r\n console.log('Measurement created:', data.length)\r\n // You can add custom logic here when a measurement is created\r\n }\r\n\r\n lengthMeasurement.onDimensionCreate.add(handleMeasurementCreated)\r\n\r\n return () => {\r\n lengthMeasurement.onDimensionCreate.remove(handleMeasurementCreated)\r\n }\r\n }, [lengthMeasurement])\r\n\r\n const handleMeasureTypeChange = (type: MeasureType) => {\r\n if (!lengthMeasurement) return\r\n\r\n // Set the tool as active\r\n setTools(toolId)\r\n if (hoverHandler) {\r\n hoverHandler.enabled = false\r\n }\r\n\r\n // Enable the measurement component and set measurement mode\r\n if (type === 'free') {\r\n lengthMeasurement.createFreeMeasurements()\r\n }\r\n if (type === 'edge') {\r\n lengthMeasurement.createEdgeMeasurements()\r\n }\r\n\r\n setCursor('crosshair')\r\n }\r\n\r\n // Clear measurements function\r\n const clearMeasurements = () => {\r\n if (lengthMeasurement) {\r\n lengthMeasurement.deleteAll()\r\n lengthMeasurement.enabled = false\r\n }\r\n if (hoverHandler) {\r\n hoverHandler.enabled = true\r\n }\r\n setCursor('')\r\n }\r\n\r\n return (\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('free')} >\r\n <LR.Ruler />\r\n <span>{t('free')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('edge')} >\r\n <LR.RulerDimensionLine />\r\n <span>{t('edge')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('area')} disabled={true}>\r\n <LR.SquareDashed />\r\n <span>{t('area')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleMeasureTypeChange('volume')} disabled={true}>\r\n <LR.Box />\r\n <span>{t('volume')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={clearMeasurements} >\r\n <LR.X />\r\n <span>{t('clear')}</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n )\r\n}\r\n"],"mappings":";AA0HM,SACE,KADF;AApHN,YAAY,WAAW;AACvB,SAAS,uBAAuB;AAChC,YAAY,SAAS;AAErB,SAAS,oBAAoB;AAK7B;AAAA,EACE;AAAA,OACK;AAGP,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAClC,SAAS,cAAc;AAOhB,MAAM,iBAA6C,CAAC,EAAE,KAAK,MAAM;AAEtE,QAAM,IAAI,gBAAgB,gBAAgB;AAE1C,QAAM,EAAE,UAAU,eAAe,OAAO,WAAW,IAAI,MAAM,WAAW,YAAY;AACpF,QAAM,EAAE,OAAO,SAAS,IAAI,MAAM,WAAW,UAAU;AACvD,QAAM,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAS,KAAK;AAEhD,QAAM,EAAE,cAAc,IAAI,SAAS;AACnC,QAAM,oBAAoB,+CAAe,IAAI;AAC7C,QAAM,eAAe,+CAAe,IAAI,IAAI;AAExC,QAAM,YAAY,CAAC,WAAuB;AACxC,QAAI,CAAC,cAAe;AACpB,UAAM,gBAAgB,cAAc,IAAI,MAAM;AAC9C,QAAI,CAAC,cAAe;AACpB,kBAAc,SAAS;AAAA,EACzB;AAEJ,QAAM,SAAS,KAAK;AACpB,QAAM,EAAE,cAAc,IAAI,WAAW;AACrC,QAAM,WAAW,CAACA,mBAAmC;AACnD,kBAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,EAAE,eAAAA,eAAc;AAAA,IAC3B,CAAC;AAAA,EACH;AAGA,QAAM,UAAU,MAAM;AACpB,cAAU,kBAAkB,MAAM;AAGlC,QAAI,kBAAkB,UAAU,mBAAmB;AACjD,wBAAkB,UAAU;AAC5B,UAAI,cAAc;AAChB,qBAAa,UAAU;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,eAAe,QAAQ,iBAAiB,CAAC;AAG7C,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC,kBAAmB;AAExB,UAAM,2BAA2B,CAAC,SAA6B;AAC7D,cAAQ,IAAI,wBAAwB,KAAK,MAAM;AAAA,IAEjD;AAEA,sBAAkB,kBAAkB,IAAI,wBAAwB;AAEhE,WAAO,MAAM;AACX,wBAAkB,kBAAkB,OAAO,wBAAwB;AAAA,IACrE;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,QAAM,0BAA0B,CAAC,SAAsB;AACrD,QAAI,CAAC,kBAAmB;AAGxB,aAAS,MAAM;AACf,QAAI,cAAc;AAChB,mBAAa,UAAU;AAAA,IACzB;AAGA,QAAI,SAAS,QAAQ;AACnB,wBAAkB,uBAAuB;AAAA,IAC3C;AACA,QAAI,SAAS,QAAQ;AACnB,wBAAkB,uBAAuB;AAAA,IAC3C;AAEA,cAAU,WAAW;AAAA,EACvB;AAGA,QAAM,oBAAoB,MAAM;AAC9B,QAAI,mBAAmB;AACrB,wBAAkB,UAAU;AAC5B,wBAAkB,UAAU;AAAA,IAC9B;AACA,QAAI,cAAc;AAChB,mBAAa,UAAU;AAAA,IACzB;AACA,cAAU,EAAE;AAAA,EACd;AAEA,SACE,qBAAC,kBAAe,MACd;AAAA,yBAAC,oBAAiB,SAAS,MAAM,wBAAwB,MAAM,GAC7D;AAAA,0BAAC,GAAG,OAAH,EAAS;AAAA,MACV,oBAAC,UAAM,YAAE,MAAM,GAAE;AAAA,OACnB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,wBAAwB,MAAM,GAC7D;AAAA,0BAAC,GAAG,oBAAH,EAAsB;AAAA,MACvB,oBAAC,UAAM,YAAE,MAAM,GAAE;AAAA,OACnB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,wBAAwB,MAAM,GAAG,UAAU,MAC1E;AAAA,0BAAC,GAAG,cAAH,EAAgB;AAAA,MACjB,oBAAC,UAAM,YAAE,MAAM,GAAE;AAAA,OACnB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,wBAAwB,QAAQ,GAAG,UAAU,MAC5E;AAAA,0BAAC,GAAG,KAAH,EAAO;AAAA,MACR,oBAAC,UAAM,YAAE,QAAQ,GAAE;AAAA,OACrB;AAAA,IACA,qBAAC,oBAAiB,SAAS,mBACzB;AAAA,0BAAC,GAAG,GAAH,EAAK;AAAA,MACN,oBAAC,UAAM,YAAE,OAAO,GAAE;AAAA,OACpB;AAAA,KACF;AAEJ;","names":["currentToolId"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectionBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/selectionBimTool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selectionBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/selectionBimTool.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,EAAE,IAAI,EAAwB,MAAM,4BAA4B,CAAA;AAavE,UAAU,kBAAkB;IAC1B,IAAI,EAAE,IAAI,CAAA;CACX;AAID,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiFzD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/selectionBimTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\n\r\n// Open BIM Components\r\nimport * as OBC from '@thatopen/components'\r\nimport * as OBF from '@thatopen/components-front'\r\n\r\n// Utilities\r\nimport { ToolsContext } from '../../../../../store'\r\nimport { Tool, type ToolbarToolType } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport {\r\n DropdownMenuItem,\r\n} from '../../../../ui/DropdownMenu'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { ToolbarSubmenu } from '../../../../ToolbarSubmenu'\r\nimport { CurrentWorld } from '../CurrentWorld'\r\n\r\ninterface SelectionToolProps {\r\n tool: Tool\r\n}\r\n\r\ntype SelectionToolsType = 'bim-selection-show-all' | 'bim-selection-invert' | 'bim-selection-isolate' | 'bim-selection-focus'\r\n\r\nexport const SelectionBimTool: React.FC<SelectionToolProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('SelectionBimTool')\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext)\r\n const { bimComponents } = bimState.bim\r\n const [selectionType, setSelectionType] = React.useState<SelectionToolsType>()\r\n const [active, setActive] = React.useState<boolean>(false)\r\n\r\n const toolId = tool.id\r\n const { currentToolId } = toolsState.tools\r\n\r\n const setTools = (currentToolId: ToolbarToolType) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n\r\n // When current tool changes\r\n React.useEffect(() => {\r\n setActive(currentToolId === toolId)\r\n }, [currentToolId, toolId])\r\n\r\n const handleSelectionTypeChange = async (type: SelectionToolsType) => {\r\n setSelectionType(type as any)\r\n if (!bimComponents) return\r\n\r\n const { world } = bimComponents.get(CurrentWorld)\r\n const hider = bimComponents.get(OBC.Hider)\r\n const fragments = bimComponents.get(OBC.FragmentsManager)\r\n\r\n\r\n\r\n const bbox = bimComponents.get(OBC.BoundingBoxer)\r\n if (!(world && fragments )) return\r\n\r\n switch (type) {\r\n case 'bim-selection-show-all':\r\n\r\n break\r\n case 'bim-selection-invert':\r\n\r\n break\r\n case 'bim-selection-isolate':\r\n\r\n break\r\n case 'bim-selection-focus':\r\n\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (!active) {\r\n setActive(true)\r\n setTools(toolId)\r\n }\r\n }\r\n\r\n return (\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-show-all')} disabled={true}>\r\n <LR.Eye />\r\n <span>{t('show')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-invert')} disabled={true}>\r\n <LR.ArrowUpDown />\r\n <span>{t('invert')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-isolate')} disabled={true}>\r\n <LR.Funnel />\r\n <span>{t('isolate')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-focus')} disabled={true}>\r\n <LR.Focus />\r\n <span>{t('focus')}</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n )\r\n}"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/selectionBimTool.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\n// Dependencies\r\nimport * as React from \"react\";\r\nimport { useTranslations } from 'next-intl'\r\n\r\n// Open BIM Components\r\nimport * as OBC from '@thatopen/components'\r\nimport * as OBF from '@thatopen/components-front'\r\n\r\n// Utilities\r\nimport { ToolsContext } from '../../../../../store'\r\nimport { Tool, type ToolbarToolType } from '../../../../../types/tools'\r\n\r\n// Shadcn components\r\nimport {\r\n DropdownMenuItem,\r\n} from '../../../../ui/DropdownMenu'\r\n\r\n// Icons\r\nimport * as LR from 'lucide-react'\r\nimport { BimContext } from '../../../../../store/BIM/context'\r\nimport { ToolbarSubmenu } from '../../../../ToolbarSubmenu'\r\nimport { CurrentWorld } from '../CurrentWorld'\r\n\r\ninterface SelectionToolProps {\r\n tool: Tool\r\n}\r\n\r\ntype SelectionToolsType = 'bim-selection-show-all' | 'bim-selection-invert' | 'bim-selection-isolate' | 'bim-selection-focus'\r\n\r\nexport const SelectionBimTool: React.FC<SelectionToolProps> = ({ tool }) => {\r\n // Translation\r\n const t = useTranslations('SelectionBimTool')\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext)\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext)\r\n const { bimComponents } = bimState.bim\r\n const [selectionType, setSelectionType] = React.useState<SelectionToolsType>()\r\n const [active, setActive] = React.useState<boolean>(false)\r\n\r\n const toolId = tool.id\r\n const { currentToolId } = toolsState.tools\r\n\r\n const setTools = (currentToolId: ToolbarToolType) => {\r\n toolsDispatch({\r\n type: 'SET-TOOL',\r\n payload: { currentToolId },\r\n })\r\n }\r\n\r\n // When current tool changes\r\n React.useEffect(() => {\r\n setActive(currentToolId === toolId)\r\n }, [currentToolId, toolId])\r\n\r\n const handleSelectionTypeChange = async (type: SelectionToolsType) => {\r\n setSelectionType(type as any)\r\n if (!bimComponents) return\r\n\r\n const { world } = bimComponents.get(CurrentWorld)\r\n const hider = bimComponents.get(OBC.Hider)\r\n const fragments = bimComponents.get(OBC.FragmentsManager)\r\n\r\n\r\n\r\n const bbox = bimComponents.get(OBC.BoundingBoxer)\r\n if (!(world && fragments )) return\r\n\r\n switch (type) {\r\n case 'bim-selection-show-all':\r\n\r\n break\r\n case 'bim-selection-invert':\r\n\r\n break\r\n case 'bim-selection-isolate':\r\n\r\n break\r\n case 'bim-selection-focus':\r\n\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (!active) {\r\n setActive(true)\r\n setTools(toolId)\r\n }\r\n }\r\n\r\n return (\r\n <ToolbarSubmenu tool={tool}>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-show-all')} disabled={true}>\r\n <LR.Eye />\r\n <span>{t('show')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-invert')} disabled={true}>\r\n <LR.ArrowUpDown />\r\n <span>{t('invert')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-isolate')} disabled={true}>\r\n <LR.Funnel />\r\n <span>{t('isolate')}</span>\r\n </DropdownMenuItem>\r\n <DropdownMenuItem onClick={() => handleSelectionTypeChange('bim-selection-focus')} disabled={true}>\r\n <LR.Focus />\r\n <span>{t('focus')}</span>\r\n </DropdownMenuItem>\r\n </ToolbarSubmenu>\r\n )\r\n}"],"mappings":";AAiGM,SACE,KADF;AA3FN,YAAY,WAAW;AACvB,SAAS,uBAAuB;AAGhC,YAAY,SAAS;AAIrB,SAAS,oBAAoB;AAI7B;AAAA,EACE;AAAA,OACK;AAGP,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAQtB,MAAM,mBAAiD,CAAC,EAAE,KAAK,MAAM;AAE1E,QAAM,IAAI,gBAAgB,kBAAkB;AAE5C,QAAM,EAAE,UAAU,eAAe,OAAO,WAAW,IAAI,MAAM,WAAW,YAAY;AACpF,QAAM,EAAE,UAAU,aAAa,OAAO,SAAS,IAAI,MAAM,WAAW,UAAU;AAC9E,QAAM,EAAE,cAAc,IAAI,SAAS;AACnC,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAA6B;AAC7E,QAAM,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAkB,KAAK;AAEzD,QAAM,SAAS,KAAK;AACpB,QAAM,EAAE,cAAc,IAAI,WAAW;AAErC,QAAM,WAAW,CAACA,mBAAmC;AACnD,kBAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,EAAE,eAAAA,eAAc;AAAA,IAC3B,CAAC;AAAA,EACH;AAGA,QAAM,UAAU,MAAM;AACpB,cAAU,kBAAkB,MAAM;AAAA,EACpC,GAAG,CAAC,eAAe,MAAM,CAAC;AAE1B,QAAM,4BAA4B,OAAO,SAA6B;AACpE,qBAAiB,IAAW;AAC5B,QAAI,CAAC,cAAe;AAEpB,UAAM,EAAE,MAAM,IAAI,cAAc,IAAI,YAAY;AAChD,UAAM,QAAQ,cAAc,IAAI,IAAI,KAAK;AACzC,UAAM,YAAY,cAAc,IAAI,IAAI,gBAAgB;AAIxD,UAAM,OAAO,cAAc,IAAI,IAAI,aAAa;AAChD,QAAI,EAAE,SAAS,WAAa;AAE5B,YAAQ,MAAM;AAAA,MACZ,KAAK;AAEH;AAAA,MACF,KAAK;AAEH;AAAA,MACF,KAAK;AAEH;AAAA,MACF,KAAK;AAEH;AAAA,MACF;AACE;AAAA,IACJ;AAEA,QAAI,CAAC,QAAQ;AACX,gBAAU,IAAI;AACd,eAAS,MAAM;AAAA,IACjB;AAAA,EACF;AAEA,SACE,qBAAC,kBAAe,MACd;AAAA,yBAAC,oBAAiB,SAAS,MAAM,0BAA0B,wBAAwB,GAAG,UAAU,MAC9F;AAAA,0BAAC,GAAG,KAAH,EAAO;AAAA,MACR,oBAAC,UAAM,YAAE,MAAM,GAAE;AAAA,OACnB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,0BAA0B,sBAAsB,GAAG,UAAU,MAC5F;AAAA,0BAAC,GAAG,aAAH,EAAe;AAAA,MAChB,oBAAC,UAAM,YAAE,QAAQ,GAAE;AAAA,OACrB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,0BAA0B,uBAAuB,GAAG,UAAU,MAC7F;AAAA,0BAAC,GAAG,QAAH,EAAU;AAAA,MACX,oBAAC,UAAM,YAAE,SAAS,GAAE;AAAA,OACtB;AAAA,IACA,qBAAC,oBAAiB,SAAS,MAAM,0BAA0B,qBAAqB,GAAG,UAAU,MAC3F;AAAA,0BAAC,GAAG,OAAH,EAAS;AAAA,MACV,oBAAC,UAAM,YAAE,OAAO,GAAE;AAAA,OACpB;AAAA,KACF;AAEJ;","names":["currentToolId"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shareBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/shareBimTool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shareBimTool.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/tools/shareBimTool.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAKjD,UAAU,cAAc;IACtB,IAAI,EAAE,IAAI,CAAA;CACX;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAkDjD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/shareBimTool.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from \"react\";\r\nimport * as THREE from 'three'\r\n\r\n// Utilities\r\nimport { BimContext, BuildingsContext } from '../../../../../store'\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Custom components\r\nimport { ShareToolSubmenu } from '../../../../ui/ShareFeature'\r\n\r\ninterface ShareToolProps {\r\n tool: Tool\r\n}\r\n\r\nexport const ShareBimTool: React.FC<ShareToolProps> = ({ tool }) => {\r\n const { state: bimState } = React.useContext(BimContext)\r\n\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n const { building } = buildingState.buildings\r\n\r\n const { world, modelId } = bimState.bim\r\n\r\n const constructShareUrl = async (): Promise<string> => {\r\n const origin = window.location.origin\r\n const pathname = window.location.pathname\r\n\r\n if (world == null) {\r\n return origin + pathname\r\n }\r\n else {\r\n const position = new THREE.Vector3()\r\n const camPosition = world.camera.controls.getPosition(position) // THREE.PerspectiveCamera\r\n const target = new THREE.Vector3()\r\n const camTarget = world.camera.controls.getTarget(target) // THREE.PerspectiveCamera\r\n\r\n // Start with existing URL parameters from the current page\r\n const currentUrl = new URL(window.location.href)\r\n const params = new URLSearchParams(currentUrl.search)\r\n\r\n // Add/override BIM-specific parameters\r\n params.set('viewer', 'bim')\r\n params.set('camX', camPosition.x.toFixed(3) || '0')\r\n params.set('camY', camPosition.y.toFixed(3) || '0')\r\n params.set('camZ', camPosition.z.toFixed(3) || '0')\r\n params.set('tarX', camTarget.x.toFixed(3) || '0')\r\n params.set('tarY', camTarget.y.toFixed(3) || '0')\r\n params.set('tarZ', camTarget.z.toFixed(3) || '0')\r\n if (building) {\r\n params.set('buildingId', String(building.id))\r\n }\r\n\r\n const shareUrl = `${origin}${pathname}?${params.toString()}`\r\n return shareUrl\r\n }\r\n }\r\n\r\n return (\r\n <ShareToolSubmenu \r\n tool={tool} \r\n constructShareUrl={constructShareUrl}\r\n translationKey=\"ShareTool\"\r\n dialogTitleKey=\"bim\"\r\n />\r\n )\r\n}"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/tools/shareBimTool.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 THREE from 'three'\r\n\r\n// Utilities\r\nimport { BimContext, BuildingsContext } from '../../../../../store'\r\nimport { Tool } from '../../../../../types/tools'\r\n\r\n// Custom components\r\nimport { ShareToolSubmenu } from '../../../../ui/ShareFeature'\r\n\r\ninterface ShareToolProps {\r\n tool: Tool\r\n}\r\n\r\nexport const ShareBimTool: React.FC<ShareToolProps> = ({ tool }) => {\r\n const { state: bimState } = React.useContext(BimContext)\r\n\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n const { building } = buildingState.buildings\r\n\r\n const { world, modelId } = bimState.bim\r\n\r\n const constructShareUrl = async (): Promise<string> => {\r\n const origin = window.location.origin\r\n const pathname = window.location.pathname\r\n\r\n if (world == null) {\r\n return origin + pathname\r\n }\r\n else {\r\n const position = new THREE.Vector3()\r\n const camPosition = world.camera.controls.getPosition(position) // THREE.PerspectiveCamera\r\n const target = new THREE.Vector3()\r\n const camTarget = world.camera.controls.getTarget(target) // THREE.PerspectiveCamera\r\n\r\n // Start with existing URL parameters from the current page\r\n const currentUrl = new URL(window.location.href)\r\n const params = new URLSearchParams(currentUrl.search)\r\n\r\n // Add/override BIM-specific parameters\r\n params.set('viewer', 'bim')\r\n params.set('camX', camPosition.x.toFixed(3) || '0')\r\n params.set('camY', camPosition.y.toFixed(3) || '0')\r\n params.set('camZ', camPosition.z.toFixed(3) || '0')\r\n params.set('tarX', camTarget.x.toFixed(3) || '0')\r\n params.set('tarY', camTarget.y.toFixed(3) || '0')\r\n params.set('tarZ', camTarget.z.toFixed(3) || '0')\r\n if (building) {\r\n params.set('buildingId', String(building.id))\r\n }\r\n\r\n const shareUrl = `${origin}${pathname}?${params.toString()}`\r\n return shareUrl\r\n }\r\n }\r\n\r\n return (\r\n <ShareToolSubmenu \r\n tool={tool} \r\n constructShareUrl={constructShareUrl}\r\n translationKey=\"ShareTool\"\r\n dialogTitleKey=\"bim\"\r\n />\r\n )\r\n}"],"mappings":";AA8DI;AAzDJ,YAAY,WAAW;AACvB,YAAY,WAAW;AAGvB,SAAS,YAAY,wBAAwB;AAI7C,SAAS,wBAAwB;AAM1B,MAAM,eAAyC,CAAC,EAAE,KAAK,MAAM;AAClE,QAAM,EAAE,OAAO,SAAS,IAAI,MAAM,WAAW,UAAU;AAEvD,QAAM,EAAE,OAAO,cAAc,IAAI,MAAM,WAAW,gBAAgB;AAClE,QAAM,EAAE,SAAS,IAAI,cAAc;AAEnC,QAAM,EAAE,OAAO,QAAQ,IAAI,SAAS;AAEpC,QAAM,oBAAoB,YAA6B;AACrD,UAAM,SAAS,OAAO,SAAS;AAC/B,UAAM,WAAW,OAAO,SAAS;AAEjC,QAAI,SAAS,MAAM;AACjB,aAAO,SAAS;AAAA,IAClB,OACK;AACH,YAAM,WAAW,IAAI,MAAM,QAAQ;AACnC,YAAM,cAAc,MAAM,OAAO,SAAS,YAAY,QAAQ;AAC9D,YAAM,SAAS,IAAI,MAAM,QAAQ;AACjC,YAAM,YAAY,MAAM,OAAO,SAAS,UAAU,MAAM;AAGxD,YAAM,aAAa,IAAI,IAAI,OAAO,SAAS,IAAI;AAC/C,YAAM,SAAS,IAAI,gBAAgB,WAAW,MAAM;AAGpD,aAAO,IAAI,UAAU,KAAK;AAC1B,aAAO,IAAI,QAAQ,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG;AAClD,aAAO,IAAI,QAAQ,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG;AAClD,aAAO,IAAI,QAAQ,YAAY,EAAE,QAAQ,CAAC,KAAK,GAAG;AAClD,aAAO,IAAI,QAAQ,UAAU,EAAE,QAAQ,CAAC,KAAK,GAAG;AAChD,aAAO,IAAI,QAAQ,UAAU,EAAE,QAAQ,CAAC,KAAK,GAAG;AAChD,aAAO,IAAI,QAAQ,UAAU,EAAE,QAAQ,CAAC,KAAK,GAAG;AAChD,UAAI,UAAU;AACZ,eAAO,IAAI,cAAc,OAAO,SAAS,EAAE,CAAC;AAAA,MAC9C;AAEA,YAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,IAAI,OAAO,SAAS,CAAC;AAC1D,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,gBAAe;AAAA,MACf,gBAAe;AAAA;AAAA,EACjB;AAEJ;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GizmoController.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/utils/GizmoController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GizmoController.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/utils/GizmoController.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAG3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,eAAe,CAAgD;IACvE,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,cAAc,CAAsB;IAC5C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;gBAET,KAAK,EAAE,GAAG,CAAC,KAAK;IAI5B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO;IA2DvC,MAAM,IAAI,IAAI;IAgBd,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI;IAIrD,UAAU,IAAI,OAAO;IAIrB,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/bim/utils/GizmoController.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/bim/utils/GizmoController.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 { TransformControls } from 'three/examples/jsm/Addons.js'\r\n\r\nexport class GizmoController {\r\n private _controls: TransformControls | null = null\r\n private _helper: THREE.Object3D | null = null\r\n private _keydownHandler: ((event: KeyboardEvent) => void) | null = null\r\n private _world: OBC.World\r\n private _object: THREE.Object3D | null = null\r\n private _originalPosition = new THREE.Vector3()\r\n private _originalRotation = new THREE.Euler()\r\n private _originalScale = new THREE.Vector3()\r\n onAccept?: () => void\r\n onCancel?: () => void\r\n\r\n constructor(world: OBC.World) {\r\n this._world = world\r\n }\r\n\r\n attach(object: THREE.Object3D): boolean {\r\n if (!this._world?.camera?.three || !this._world?.renderer?.three.domElement) {\r\n console.warn('[GizmoController] World camera or renderer not available')\r\n return false\r\n }\r\n\r\n this.detach()\r\n\r\n // Snapshot original transform so ESC can restore it\r\n this._object = object\r\n this._originalPosition.copy(object.position)\r\n this._originalRotation.copy(object.rotation)\r\n this._originalScale.copy(object.scale)\r\n\r\n const controls = new TransformControls(\r\n this._world.camera.three,\r\n this._world.renderer.three.domElement,\r\n )\r\n controls.setMode('translate')\r\n controls.attach(object)\r\n\r\n // Freeze camera orbit while dragging\r\n controls.addEventListener('dragging-changed', (event: any) => {\r\n if (this._world?.camera?.controls) {\r\n this._world.camera.controls.enabled = !event.value\r\n }\r\n })\r\n\r\n // In Three.js r169+, TransformControls is no longer an Object3D.\r\n // Only the helper returned by getHelper() goes into the scene.\r\n const helper = controls.getHelper()\r\n this._world.scene.three.add(helper)\r\n\r\n this._controls = controls\r\n this._helper = helper\r\n\r\n // Keyboard shortcuts\r\n this._keydownHandler = (event: KeyboardEvent) => {\r\n if (!this._controls) return\r\n switch (event.key) {\r\n case 'g': case 'G': this._controls.setMode('translate'); break\r\n case 'r': case 'R': this._controls.setMode('rotate'); break\r\n case 's': case 'S': this._controls.setMode('scale'); break\r\n case 'Escape':\r\n this._revert()\r\n this.detach()\r\n this.onCancel?.()\r\n break\r\n case 'Enter':\r\n this.detach()\r\n this.onAccept?.()\r\n break\r\n }\r\n }\r\n document.addEventListener('keydown', this._keydownHandler)\r\n\r\n return true\r\n }\r\n\r\n detach(): void {\r\n if (this._helper) {\r\n this._world.scene.three.remove(this._helper)\r\n this._helper = null\r\n }\r\n if (this._controls) {\r\n this._controls.dispose()\r\n this._controls = null\r\n }\r\n if (this._keydownHandler) {\r\n document.removeEventListener('keydown', this._keydownHandler)\r\n this._keydownHandler = null\r\n }\r\n this._object = null\r\n }\r\n\r\n private _revert(): void {\r\n if (!this._object) return\r\n this._object.position.copy(this._originalPosition)\r\n this._object.rotation.copy(this._originalRotation)\r\n this._object.scale.copy(this._originalScale)\r\n this._object.updateMatrixWorld(true)\r\n }\r\n\r\n setMode(mode: 'translate' | 'rotate' | 'scale'): void {\r\n this._controls?.setMode(mode)\r\n }\r\n\r\n isAttached(): boolean {\r\n return this._controls !== null\r\n }\r\n\r\n dispose(): void {\r\n this.detach()\r\n }\r\n}\r\n"],"mappings":"AAGA,YAAY,WAAW;AAEvB,SAAS,yBAAyB;AAE3B,MAAM,gBAAgB;AAAA,EAY3B,YAAY,OAAkB;AAX9B,SAAQ,YAAsC;AAC9C,SAAQ,UAAiC;AACzC,SAAQ,kBAA2D;AAEnE,SAAQ,UAAiC;AACzC,SAAQ,oBAAoB,IAAI,MAAM,QAAQ;AAC9C,SAAQ,oBAAoB,IAAI,MAAM,MAAM;AAC5C,SAAQ,iBAAiB,IAAI,MAAM,QAAQ;AAKzC,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,OAAO,QAAiC;AAvB1C;AAwBI,QAAI,GAAC,gBAAK,WAAL,mBAAa,WAAb,mBAAqB,UAAS,GAAC,gBAAK,WAAL,mBAAa,aAAb,mBAAuB,MAAM,aAAY;AAC3E,cAAQ,KAAK,0DAA0D;AACvE,aAAO;AAAA,IACT;AAEA,SAAK,OAAO;AAGZ,SAAK,UAAU;AACf,SAAK,kBAAkB,KAAK,OAAO,QAAQ;AAC3C,SAAK,kBAAkB,KAAK,OAAO,QAAQ;AAC3C,SAAK,eAAe,KAAK,OAAO,KAAK;AAErC,UAAM,WAAW,IAAI;AAAA,MACnB,KAAK,OAAO,OAAO;AAAA,MACnB,KAAK,OAAO,SAAS,MAAM;AAAA,IAC7B;AACA,aAAS,QAAQ,WAAW;AAC5B,aAAS,OAAO,MAAM;AAGtB,aAAS,iBAAiB,oBAAoB,CAAC,UAAe;AA7ClE,UAAAA,KAAAC;AA8CM,WAAIA,OAAAD,MAAA,KAAK,WAAL,gBAAAA,IAAa,WAAb,gBAAAC,IAAqB,UAAU;AACjC,aAAK,OAAO,OAAO,SAAS,UAAU,CAAC,MAAM;AAAA,MAC/C;AAAA,IACF,CAAC;AAID,UAAM,SAAS,SAAS,UAAU;AAClC,SAAK,OAAO,MAAM,MAAM,IAAI,MAAM;AAElC,SAAK,YAAY;AACjB,SAAK,UAAU;AAGf,SAAK,kBAAkB,CAAC,UAAyB;AA5DrD,UAAAD,KAAAC;AA6DM,UAAI,CAAC,KAAK,UAAW;AACrB,cAAQ,MAAM,KAAK;AAAA,QACjB,KAAK;AAAA,QAAK,KAAK;AAAK,eAAK,UAAU,QAAQ,WAAW;AAAG;AAAA,QACzD,KAAK;AAAA,QAAK,KAAK;AAAK,eAAK,UAAU,QAAQ,QAAQ;AAAG;AAAA,QACtD,KAAK;AAAA,QAAK,KAAK;AAAK,eAAK,UAAU,QAAQ,OAAO;AAAG;AAAA,QACrD,KAAK;AACH,eAAK,QAAQ;AACb,eAAK,OAAO;AACZ,WAAAD,MAAA,KAAK,aAAL,gBAAAA,IAAA;AACA;AAAA,QACF,KAAK;AACH,eAAK,OAAO;AACZ,WAAAC,MAAA,KAAK,aAAL,gBAAAA,IAAA;AACA;AAAA,MACJ;AAAA,IACF;AACA,aAAS,iBAAiB,WAAW,KAAK,eAAe;AAEzD,WAAO;AAAA,EACT;AAAA,EAEA,SAAe;AACb,QAAI,KAAK,SAAS;AAChB,WAAK,OAAO,MAAM,MAAM,OAAO,KAAK,OAAO;AAC3C,WAAK,UAAU;AAAA,IACjB;AACA,QAAI,KAAK,WAAW;AAClB,WAAK,UAAU,QAAQ;AACvB,WAAK,YAAY;AAAA,IACnB;AACA,QAAI,KAAK,iBAAiB;AACxB,eAAS,oBAAoB,WAAW,KAAK,eAAe;AAC5D,WAAK,kBAAkB;AAAA,IACzB;AACA,SAAK,UAAU;AAAA,EACjB;AAAA,EAEQ,UAAgB;AACtB,QAAI,CAAC,KAAK,QAAS;AACnB,SAAK,QAAQ,SAAS,KAAK,KAAK,iBAAiB;AACjD,SAAK,QAAQ,SAAS,KAAK,KAAK,iBAAiB;AACjD,SAAK,QAAQ,MAAM,KAAK,KAAK,cAAc;AAC3C,SAAK,QAAQ,kBAAkB,IAAI;AAAA,EACrC;AAAA,EAEA,QAAQ,MAA8C;AA1GxD;AA2GI,eAAK,cAAL,mBAAgB,QAAQ;AAAA,EAC1B;AAAA,EAEA,aAAsB;AACpB,WAAO,KAAK,cAAc;AAAA,EAC5B;AAAA,EAEA,UAAgB;AACd,SAAK,OAAO;AAAA,EACd;AACF;","names":["_a","_b"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setCameraLookAt.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/utils/setCameraLookAt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setCameraLookAt.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/utils/setCameraLookAt.ts"],"names":[],"mappings":"AAGY,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAC;AAE5C,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe;;;;;;;;;;;;EAa9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/bim/utils/setCameraLookAt.ts"],"sourcesContent":[" import * as OBC from \"@thatopen/components\";\r\n\r\n export function setCameraLookAt(world: OBC.World, searchParams: URLSearchParams) {\r\n const camX = Number(searchParams.get(\"camX\"));\r\n const camY = Number(searchParams.get(\"camY\"));\r\n const camZ = Number(searchParams.get(\"camZ\"));\r\n const tarX = Number(searchParams.get(\"tarX\"));\r\n const tarY = Number(searchParams.get(\"tarY\"));\r\n const tarZ = Number(searchParams.get(\"tarZ\"));\r\n if (world && camX && camY && camZ && tarX && tarY && tarZ) {\r\n world.camera.controls.setLookAt(camX, camY, camZ, tarX, tarY, tarZ, true);\r\n return {sharing: true, cameraPosition: { x: camX, y: camY, z: camZ }, targetPosition: { x: tarX, y: tarY, z: tarZ } };\r\n }\r\n else {world.camera.controls.setLookAt(20, 40, 40, -30, 10, -5, true); \r\n return {sharing: false, cameraPosition: { x: 20, y: 40, z: 10 }, targetPosition: { x: -30, y: 10, z: -5 } }};\r\n }"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/bim/utils/setCameraLookAt.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\n import * as OBC from \"@thatopen/components\";\r\n\r\n export function setCameraLookAt(world: OBC.World, searchParams: URLSearchParams) {\r\n const camX = Number(searchParams.get(\"camX\"));\r\n const camY = Number(searchParams.get(\"camY\"));\r\n const camZ = Number(searchParams.get(\"camZ\"));\r\n const tarX = Number(searchParams.get(\"tarX\"));\r\n const tarY = Number(searchParams.get(\"tarY\"));\r\n const tarZ = Number(searchParams.get(\"tarZ\"));\r\n if (world && camX && camY && camZ && tarX && tarY && tarZ) {\r\n world.camera.controls.setLookAt(camX, camY, camZ, tarX, tarY, tarZ, true);\r\n return {sharing: true, cameraPosition: { x: camX, y: camY, z: camZ }, targetPosition: { x: tarX, y: tarY, z: tarZ } };\r\n }\r\n else {world.camera.controls.setLookAt(20, 40, 40, -30, 10, -5, true); \r\n return {sharing: false, cameraPosition: { x: 20, y: 40, z: 10 }, targetPosition: { x: -30, y: 10, z: -5 } }};\r\n }"],"mappings":"AAKmB,SAAS,gBAAgB,OAAkB,cAA+B;AAC7E,QAAM,OAAO,OAAO,aAAa,IAAI,MAAM,CAAC;AAC5C,QAAM,OAAO,OAAO,aAAa,IAAI,MAAM,CAAC;AAC5C,QAAM,OAAO,OAAO,aAAa,IAAI,MAAM,CAAC;AAC5C,QAAM,OAAO,OAAO,aAAa,IAAI,MAAM,CAAC;AAC5C,QAAM,OAAO,OAAO,aAAa,IAAI,MAAM,CAAC;AAChD,QAAM,OAAO,OAAO,aAAa,IAAI,MAAM,CAAC;AAC7C,MAAI,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAClD,UAAM,OAAO,SAAS,UAAU,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AACxE,WAAO,EAAC,SAAS,MAAM,gBAAgB,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,gBAAgB,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE;AAAA,EACxH,OACC;AAAC,UAAM,OAAO,SAAS,UAAU,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAC/D,WAAO,EAAC,SAAS,OAAO,gBAAgB,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,gBAAgB,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,EAAE;AAAA,EAAC;AAAC;AAChH;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/components/viewers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/components/viewers/index.ts"],"names":[],"mappings":"AAGA,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/core/components/viewers/index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/components/viewers/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nexport * from './Viewer'\r\nexport * from './map/MapViewer'\r\nexport { fetchArcGISDatasets } from './map/datasets/src/arcGISDatasets'\r\nexport { fetchCkanDatasets } from './map/datasets/src/ckanDatasets'\r\nexport { fetchOpenDataSoftDatasets } from './map/datasets/src/opendatasoftDatasets'\r\nexport { fetchSocrataDatasets } from './map/datasets/src/socrataDatasets'\r\nexport { fetchLocalDatasets } from './map/datasets/src/localDatasets'"],"mappings":"AAGA,cAAc;AACd,cAAc;AACd,SAAS,2BAA2B;AACpC,SAAS,yBAAyB;AAClC,SAAS,iCAAiC;AAC1C,SAAS,4BAA4B;AACrC,SAAS,0BAA0B;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/map/MapViewer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MapViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/map/MapViewer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAA;AAazB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAcrD,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAc,EAAE,MAAe,EAAE,YAAY,EAAE,EAAE,KAAK,qBAsLjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/core/components/viewers/map/MapViewer.tsx"],"sourcesContent":["'use client'\r\n\r\nimport Map, { MapRef, NavigationControl } from 'react-map-gl/maplibre'\r\nimport React from 'react'\r\n\r\nimport maplibregl from 'maplibre-gl'\r\nimport { useSearchParams } from 'next/navigation'\r\n\r\nimport { MapContext } from '../../../store'\r\nimport { resolveBounds } from './utils/validateBounds'\r\n\r\nimport { MapClickManager } from './utils/MapEventManager/MapClickManager'\r\nimport DatasetManagerMenu from './datasets/DatasetManager'\r\nimport { MapLegendHost } from './legends/MapLegendHost'\r\nimport { StatsOverlay } from '../../ui/stats'\r\nimport { MapHoverManager } from './utils/MapEventManager/MapHoverManager'\r\nimport { Organization } from '../../../types/dbTypes'\r\nimport { CurrentLocation } from '../../../types/map'\r\nimport { MapLayers } from './src/MapLayers'\r\nimport SettingsButton from '../../ui/SettingsButton'\r\n\r\nconst CANADA_DEFAULTS = {\r\n zoom: 3,\r\n lat: 56.415,\r\n long: -98.74,\r\n} as const\r\n\r\nconst DEFAULT_MAP_STYLE = { name: 'Satellite', url: 'mapStyles/satellite.json' } as const\r\nconst MAX_GLOBE_ZOOM = 5\r\n\r\ninterface Props {\r\n width?: string\r\n height?: string\r\n organization: Organization\r\n}\r\n\r\nexport function MapViewer({ width = '100%', height = '100%', organization }: Props) {\r\n\r\n const searchParams = useSearchParams()\r\n\r\n // Add state to track if map is loaded\r\n const [isMapLoaded, setIsMapLoaded] = React.useState(false)\r\n\r\n const viewState = React.useMemo(() => {\r\n return searchParams.size === 0\r\n ? {\r\n zoom: organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n bearing: organization.bearing ?? 0,\r\n pitch: organization.pitch ?? 0,\r\n longitude: organization.long ?? CANADA_DEFAULTS.long,\r\n latitude: organization.lat ?? CANADA_DEFAULTS.lat,\r\n }\r\n : {\r\n latitude: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n longitude: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n }\r\n }, [searchParams, organization])\r\n\r\n const initialProjection = viewState.zoom > MAX_GLOBE_ZOOM ? 'mercator' : 'globe'\r\n\r\n // Memoize the inline style object that gets passed to <Map> for a stable prop identity.\r\n const mapContainerStyle = React.useMemo(\r\n () => ({ width, height, backgroundColor: 'black' }),\r\n [width, height],\r\n )\r\n\r\n // Adaptive pixel ratio. A hardcoded 2 doubled fragment-shader cost on 1× DPR\r\n // desktops for zero visual gain; capping at 2 keeps phones (DPR 3-4) effective.\r\n const pixelRatio = React.useMemo(\r\n () => Math.min(typeof window !== 'undefined' ? window.devicePixelRatio : 1, 2),\r\n [],\r\n )\r\n\r\n const mapRef = React.useRef<MapRef>(null)\r\n const { dispatch: mapDispatch, state: mapState } = React.useContext(MapContext)\r\n\r\n // Keep the projection in sync with zoom at all times — not only while the\r\n // map-settings sidebar is mounted. The globe projection degrades past\r\n // MAX_GLOBE_ZOOM, so we force mercator regardless of which panels are open.\r\n const activeMap = mapState?.map?.map\r\n\r\n React.useEffect(() => {\r\n if (!activeMap) return\r\n\r\n const enforceProjectionForZoom = () => {\r\n if (activeMap.getZoom() <= MAX_GLOBE_ZOOM) return\r\n\r\n const projection = activeMap.getProjection()\r\n const currentType =\r\n typeof projection === 'string'\r\n ? projection\r\n : (projection as { type?: string; name?: string })?.type ?? (projection as { type?: string; name?: string })?.name\r\n\r\n if (currentType !== 'mercator') {\r\n activeMap.setProjection({ type: 'mercator' })\r\n }\r\n }\r\n\r\n enforceProjectionForZoom()\r\n activeMap.on('zoom', enforceProjectionForZoom)\r\n\r\n return () => {\r\n activeMap.off('zoom', enforceProjectionForZoom)\r\n }\r\n }, [activeMap])\r\n\r\n const handleMapLoad = () => {\r\n const map = mapRef.current.getMap()\r\n\r\n if (map.getZoom() > MAX_GLOBE_ZOOM) {\r\n map.setProjection({ type: 'mercator' })\r\n }\r\n\r\n // Only dispatch SET_MAP after map is fully loaded\r\n if (mapRef.current) {\r\n mapDispatch({\r\n type: 'SET_MAP',\r\n payload: { map },\r\n })\r\n }\r\n // initilize a new click manager\r\n const mapClickManager = new MapClickManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_CLICK_MANAGER',\r\n payload: { mapClickManager },\r\n })\r\n\r\n const mapHoverManager = new MapHoverManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_HOVER_MANAGER',\r\n payload: { mapHoverManager },\r\n })\r\n\r\n // update current Location with URL params or fallback to theme location\r\n const updatedLocation: CurrentLocation = {\r\n // Then override with URL params (this ensures URL params take precedence)\r\n lat: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n lng: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n // Add location details from URL params if available\r\n countrySubdivision: searchParams.has('countrySubdivision') ? searchParams.get('countrySubdivision') : (organization.countrySubdivision ?? ''),\r\n municipality: searchParams.has('municipality') ? searchParams.get('municipality') : (organization.municipality ?? ''),\r\n address: searchParams.has('address') ? searchParams.get('address') : '', // organization.address,\r\n site: searchParams.has('site') ? searchParams.get('site') : String(organization.locationSiteId ?? ''),\r\n id: String(organization.id),\r\n }\r\n\r\n mapDispatch({\r\n type: 'UPDATE_LOCATION',\r\n payload: { currentLocation: updatedLocation },\r\n })\r\n\r\n // Set map as loaded after all dispatches are complete\r\n setIsMapLoaded(true)\r\n }\r\n\r\n // Enable the perf HUD by appending ?debug=1 to the URL. Never reaches\r\n // production users unless they explicitly opt in.\r\n const isDebug = searchParams.get('debug') === '1'\r\n\r\n // useCallback so the onDblClick prop identity is stable across renders of\r\n // MapViewer; a new function each render caused react-map-gl to detach/re-attach\r\n // the listener. The console.log is gated behind a dev-mode check.\r\n const onDblClick = React.useCallback((e) => {\r\n if (process.env.NODE_ENV === 'production') return\r\n const { lng, lat } = e.lngLat\r\n const elevation = mapRef.current?.queryTerrainElevation([lng, lat]) || 0\r\n const coordinates = { lng, lat, elevation, zoom: mapRef.current?.getZoom() }\r\n console.log('📍 Map coordinates:', coordinates)\r\n }, [])\r\n\r\n const mapStyle = mapState?.map.mapStyle ?? DEFAULT_MAP_STYLE;\r\n\r\n return (\r\n <>\r\n <Map\r\n id=\"map-component\"\r\n mapStyle={mapStyle.url}\r\n mapLib={maplibregl}\r\n onLoad={handleMapLoad}\r\n ref={mapRef}\r\n style={mapContainerStyle}\r\n initialViewState={viewState}\r\n maxPitch={60}\r\n minZoom={organization?.minZoom ?? CANADA_DEFAULTS.zoom}\r\n maxBounds={resolveBounds(organization?.maxBounds)}\r\n projection={initialProjection}\r\n doubleClickZoom={false}\r\n onDblClick={onDblClick}\r\n pixelRatio={pixelRatio}\r\n >\r\n <NavigationControl visualizePitch />\r\n <SettingsButton />\r\n {isMapLoaded\r\n && (\r\n <>\r\n <MapLayers />\r\n {/* Bottom-left stack: legend above the layers/styling card, gap auto-managed by flex. */}\r\n <div className=\"absolute bottom-[10px] left-3 z-10 flex flex-col gap-2 pointer-events-none\">\r\n {/* Portal slot for on-map WMS time controls; display:contents so an\r\n empty slot adds no flex item / gap, but a mounted control stacks\r\n above the legend + dataset-manager cards. */}\r\n <div id=\"wms-time-slot\" style={{ display: 'contents' }} />\r\n <MapLegendHost />\r\n <DatasetManagerMenu />\r\n </div>\r\n </>\r\n )}\r\n </Map>\r\n <StatsOverlay mapRef={mapRef} enabled={isDebug} />\r\n </>\r\n\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/core/components/viewers/map/MapViewer.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport Map, { MapRef, NavigationControl } from 'react-map-gl/maplibre'\r\nimport React from 'react'\r\n\r\nimport maplibregl from 'maplibre-gl'\r\nimport { useSearchParams } from 'next/navigation'\r\n\r\nimport { MapContext } from '../../../store'\r\nimport { resolveBounds } from './utils/validateBounds'\r\n\r\nimport { MapClickManager } from './utils/MapEventManager/MapClickManager'\r\nimport DatasetManagerMenu from './datasets/DatasetManager'\r\nimport { MapLegendHost } from './legends/MapLegendHost'\r\nimport { StatsOverlay } from '../../ui/stats'\r\nimport { MapHoverManager } from './utils/MapEventManager/MapHoverManager'\r\nimport { Organization } from '../../../types/dbTypes'\r\nimport { CurrentLocation } from '../../../types/map'\r\nimport { MapLayers } from './src/MapLayers'\r\nimport SettingsButton from '../../ui/SettingsButton'\r\n\r\nconst CANADA_DEFAULTS = {\r\n zoom: 3,\r\n lat: 56.415,\r\n long: -98.74,\r\n} as const\r\n\r\nconst DEFAULT_MAP_STYLE = { name: 'Satellite', url: 'mapStyles/satellite.json' } as const\r\nconst MAX_GLOBE_ZOOM = 5\r\n\r\ninterface Props {\r\n width?: string\r\n height?: string\r\n organization: Organization\r\n}\r\n\r\nexport function MapViewer({ width = '100%', height = '100%', organization }: Props) {\r\n\r\n const searchParams = useSearchParams()\r\n\r\n // Add state to track if map is loaded\r\n const [isMapLoaded, setIsMapLoaded] = React.useState(false)\r\n\r\n const viewState = React.useMemo(() => {\r\n return searchParams.size === 0\r\n ? {\r\n zoom: organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n bearing: organization.bearing ?? 0,\r\n pitch: organization.pitch ?? 0,\r\n longitude: organization.long ?? CANADA_DEFAULTS.long,\r\n latitude: organization.lat ?? CANADA_DEFAULTS.lat,\r\n }\r\n : {\r\n latitude: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n longitude: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n }\r\n }, [searchParams, organization])\r\n\r\n const initialProjection = viewState.zoom > MAX_GLOBE_ZOOM ? 'mercator' : 'globe'\r\n\r\n // Memoize the inline style object that gets passed to <Map> for a stable prop identity.\r\n const mapContainerStyle = React.useMemo(\r\n () => ({ width, height, backgroundColor: 'black' }),\r\n [width, height],\r\n )\r\n\r\n // Adaptive pixel ratio. A hardcoded 2 doubled fragment-shader cost on 1× DPR\r\n // desktops for zero visual gain; capping at 2 keeps phones (DPR 3-4) effective.\r\n const pixelRatio = React.useMemo(\r\n () => Math.min(typeof window !== 'undefined' ? window.devicePixelRatio : 1, 2),\r\n [],\r\n )\r\n\r\n const mapRef = React.useRef<MapRef>(null)\r\n const { dispatch: mapDispatch, state: mapState } = React.useContext(MapContext)\r\n\r\n // Keep the projection in sync with zoom at all times — not only while the\r\n // map-settings sidebar is mounted. The globe projection degrades past\r\n // MAX_GLOBE_ZOOM, so we force mercator regardless of which panels are open.\r\n const activeMap = mapState?.map?.map\r\n\r\n React.useEffect(() => {\r\n if (!activeMap) return\r\n\r\n const enforceProjectionForZoom = () => {\r\n if (activeMap.getZoom() <= MAX_GLOBE_ZOOM) return\r\n\r\n const projection = activeMap.getProjection()\r\n const currentType =\r\n typeof projection === 'string'\r\n ? projection\r\n : (projection as { type?: string; name?: string })?.type ?? (projection as { type?: string; name?: string })?.name\r\n\r\n if (currentType !== 'mercator') {\r\n activeMap.setProjection({ type: 'mercator' })\r\n }\r\n }\r\n\r\n enforceProjectionForZoom()\r\n activeMap.on('zoom', enforceProjectionForZoom)\r\n\r\n return () => {\r\n activeMap.off('zoom', enforceProjectionForZoom)\r\n }\r\n }, [activeMap])\r\n\r\n const handleMapLoad = () => {\r\n const map = mapRef.current.getMap()\r\n\r\n if (map.getZoom() > MAX_GLOBE_ZOOM) {\r\n map.setProjection({ type: 'mercator' })\r\n }\r\n\r\n // Only dispatch SET_MAP after map is fully loaded\r\n if (mapRef.current) {\r\n mapDispatch({\r\n type: 'SET_MAP',\r\n payload: { map },\r\n })\r\n }\r\n // initilize a new click manager\r\n const mapClickManager = new MapClickManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_CLICK_MANAGER',\r\n payload: { mapClickManager },\r\n })\r\n\r\n const mapHoverManager = new MapHoverManager(map)\r\n mapDispatch({\r\n type: 'ADD_MAP_HOVER_MANAGER',\r\n payload: { mapHoverManager },\r\n })\r\n\r\n // update current Location with URL params or fallback to theme location\r\n const updatedLocation: CurrentLocation = {\r\n // Then override with URL params (this ensures URL params take precedence)\r\n lat: searchParams.has('lat') ? Number.parseFloat(searchParams.get('lat')) : organization.lat ?? CANADA_DEFAULTS.lat,\r\n lng: searchParams.has('lng') ? Number.parseFloat(searchParams.get('lng')) : organization.long ?? CANADA_DEFAULTS.long,\r\n bearing: searchParams.has('bearing') ? Number.parseFloat(searchParams.get('bearing')) : organization.bearing ?? 0,\r\n pitch: searchParams.has('pitch') ? Number.parseFloat(searchParams.get('pitch')) : organization.pitch ?? 0,\r\n zoom: searchParams.has('zoom') ? Number.parseFloat(searchParams.get('zoom')) : organization.zoom ?? CANADA_DEFAULTS.zoom,\r\n // Add location details from URL params if available\r\n countrySubdivision: searchParams.has('countrySubdivision') ? searchParams.get('countrySubdivision') : (organization.countrySubdivision ?? ''),\r\n municipality: searchParams.has('municipality') ? searchParams.get('municipality') : (organization.municipality ?? ''),\r\n address: searchParams.has('address') ? searchParams.get('address') : '', // organization.address,\r\n site: searchParams.has('site') ? searchParams.get('site') : String(organization.locationSiteId ?? ''),\r\n id: String(organization.id),\r\n }\r\n\r\n mapDispatch({\r\n type: 'UPDATE_LOCATION',\r\n payload: { currentLocation: updatedLocation },\r\n })\r\n\r\n // Set map as loaded after all dispatches are complete\r\n setIsMapLoaded(true)\r\n }\r\n\r\n // Enable the perf HUD by appending ?debug=1 to the URL. Never reaches\r\n // production users unless they explicitly opt in.\r\n const isDebug = searchParams.get('debug') === '1'\r\n\r\n // useCallback so the onDblClick prop identity is stable across renders of\r\n // MapViewer; a new function each render caused react-map-gl to detach/re-attach\r\n // the listener. The console.log is gated behind a dev-mode check.\r\n const onDblClick = React.useCallback((e) => {\r\n if (process.env.NODE_ENV === 'production') return\r\n const { lng, lat } = e.lngLat\r\n const elevation = mapRef.current?.queryTerrainElevation([lng, lat]) || 0\r\n const coordinates = { lng, lat, elevation, zoom: mapRef.current?.getZoom() }\r\n console.log('📍 Map coordinates:', coordinates)\r\n }, [])\r\n\r\n const mapStyle = mapState?.map.mapStyle ?? DEFAULT_MAP_STYLE;\r\n\r\n return (\r\n <>\r\n <Map\r\n id=\"map-component\"\r\n mapStyle={mapStyle.url}\r\n mapLib={maplibregl}\r\n onLoad={handleMapLoad}\r\n ref={mapRef}\r\n style={mapContainerStyle}\r\n initialViewState={viewState}\r\n maxPitch={60}\r\n minZoom={organization?.minZoom ?? CANADA_DEFAULTS.zoom}\r\n maxBounds={resolveBounds(organization?.maxBounds)}\r\n projection={initialProjection}\r\n doubleClickZoom={false}\r\n onDblClick={onDblClick}\r\n pixelRatio={pixelRatio}\r\n >\r\n <NavigationControl visualizePitch />\r\n <SettingsButton />\r\n {isMapLoaded\r\n && (\r\n <>\r\n <MapLayers />\r\n {/* Bottom-left stack: legend above the layers/styling card, gap auto-managed by flex. */}\r\n <div className=\"absolute bottom-[10px] left-3 z-10 flex flex-col gap-2 pointer-events-none\">\r\n {/* Portal slot for on-map WMS time controls; display:contents so an\r\n empty slot adds no flex item / gap, but a mounted control stacks\r\n above the legend + dataset-manager cards. */}\r\n <div id=\"wms-time-slot\" style={{ display: 'contents' }} />\r\n <MapLegendHost />\r\n <DatasetManagerMenu />\r\n </div>\r\n </>\r\n )}\r\n </Map>\r\n <StatsOverlay mapRef={mapRef} enabled={isDebug} />\r\n </>\r\n\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddPortalDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddPortalDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAgB9B,UAAU,oBAAoB;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAeD,eAAO,MAAM,eAAe,GAAI,wBAAwB,oBAAoB,sBAwL3E,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.tsx"],"sourcesContent":["'use client'\r\n\r\nimport * as React from 'react'\r\nimport * as LR from 'lucide-react'\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogDescription,\r\n DialogHeader,\r\n DialogTitle,\r\n} from '../../../ui/Dialog'\r\nimport { Button } from '../../../ui/Button'\r\nimport { Input } from '../../../ui/Input'\r\nimport { Label } from '../../../ui/Label'\r\nimport { useCreateOpenDataPortal } from '../../../../hooks/openDataPortals/openDataPortals'\r\nimport { DatasetGroup, DataManagementSystem } from '../../../../types/dbTypes'\r\nimport type { OpenDataPortal } from '../../../../types/dbTypes'\r\n\r\ninterface AddPortalDialogProps {\r\n open: boolean\r\n onOpenChange: (open: boolean) => void\r\n}\r\n\r\ntype FormState = Omit<OpenDataPortal, 'id'>\r\n\r\nconst EMPTY_FORM: FormState = {\r\n name: '',\r\n group: DatasetGroup.Municipal,\r\n portalUrl: '',\r\n dataManagementSystem: undefined,\r\n apiUrl: '',\r\n countrySubdivision: '',\r\n municipality: '',\r\n country: '',\r\n}\r\n\r\nexport const AddPortalDialog = ({ open, onOpenChange }: AddPortalDialogProps) => {\r\n const [form, setForm] = React.useState<FormState>(EMPTY_FORM)\r\n const [submitError, setSubmitError] = React.useState<string | null>(null)\r\n const { createOpenDataPortal, isMutating } = useCreateOpenDataPortal()\r\n\r\n const update = <K extends keyof FormState>(field: K, value: FormState[K]) => {\r\n setForm(prev => ({ ...prev, [field]: value }))\r\n }\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault()\r\n setSubmitError(null)\r\n if (!form.name.trim()) {\r\n setSubmitError('Name is required')\r\n return\r\n }\r\n\r\n // Strip empty optionals so the row doesn't carry literal empty strings.\r\n const payload: FormState = {\r\n name: form.name.trim(),\r\n group: form.group,\r\n portalUrl: form.portalUrl?.trim() || undefined,\r\n dataManagementSystem: form.dataManagementSystem || undefined,\r\n apiUrl: form.apiUrl?.trim() || undefined,\r\n countrySubdivision: form.countrySubdivision?.trim() || undefined,\r\n municipality: form.municipality?.trim() || undefined,\r\n country: form.country?.trim() || undefined,\r\n }\r\n\r\n try {\r\n await createOpenDataPortal(payload)\r\n setForm(EMPTY_FORM)\r\n onOpenChange(false)\r\n }\r\n catch (err) {\r\n setSubmitError(err instanceof Error ? err.message : 'Failed to create portal')\r\n }\r\n }\r\n\r\n return (\r\n <Dialog open={open} onOpenChange={onOpenChange}>\r\n <DialogContent className=\"sm:max-w-[520px]\">\r\n <DialogHeader>\r\n <DialogTitle>Add Open Data Portal</DialogTitle>\r\n <DialogDescription>\r\n Register a new external data portal. Only Name and Group are required.\r\n </DialogDescription>\r\n </DialogHeader>\r\n\r\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-name\">\r\n Name\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <Input\r\n id=\"portal-name\"\r\n value={form.name}\r\n onChange={e => update('name', e.target.value)}\r\n disabled={isMutating}\r\n required\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-group\">\r\n Group\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <select\r\n id=\"portal-group\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={form.group as string}\r\n onChange={e => update('group', e.target.value as DatasetGroup)}\r\n disabled={isMutating}\r\n >\r\n {Object.values(DatasetGroup).map(g => (\r\n <option key={g} value={g}>{g}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-dms\">Data Management System</Label>\r\n <select\r\n id=\"portal-dms\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={(form.dataManagementSystem as string) ?? ''}\r\n onChange={e => update('dataManagementSystem', (e.target.value || undefined) as DataManagementSystem | undefined)}\r\n disabled={isMutating}\r\n >\r\n <option value=\"\">(none)</option>\r\n {Object.values(DataManagementSystem).map(d => (\r\n <option key={d} value={d}>{d}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-portalUrl\">Portal URL</Label>\r\n <Input\r\n id=\"portal-portalUrl\"\r\n type=\"url\"\r\n value={form.portalUrl ?? ''}\r\n onChange={e => update('portalUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/open-data\"\r\n />\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-apiUrl\">API URL</Label>\r\n <Input\r\n id=\"portal-apiUrl\"\r\n type=\"url\"\r\n value={form.apiUrl ?? ''}\r\n onChange={e => update('apiUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/api\"\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-3 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-municipality\">Municipality</Label>\r\n <Input\r\n id=\"portal-municipality\"\r\n value={form.municipality ?? ''}\r\n onChange={e => update('municipality', e.target.value)}\r\n disabled={isMutating}\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-countrySubdivision\">Subdivision</Label>\r\n <Input\r\n id=\"portal-countrySubdivision\"\r\n value={form.countrySubdivision ?? ''}\r\n onChange={e => update('countrySubdivision', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA-ON\"\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-country\">Country</Label>\r\n <Input\r\n id=\"portal-country\"\r\n value={form.country ?? ''}\r\n onChange={e => update('country', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA\"\r\n />\r\n </div>\r\n </div>\r\n\r\n {submitError && (\r\n <p className=\"text-sm text-destructive\">{submitError}</p>\r\n )}\r\n\r\n <div className=\"flex justify-end gap-2 pt-2\">\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={() => onOpenChange(false)}\r\n disabled={isMutating}\r\n >\r\n Cancel\r\n </Button>\r\n <Button type=\"submit\" disabled={isMutating}>\r\n {isMutating\r\n ? (\r\n <>\r\n <LR.Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\r\n Adding…\r\n </>\r\n )\r\n : 'Add Portal'}\r\n </Button>\r\n </div>\r\n </form>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c","_d","_e"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/core/components/viewers/map/datasets/AddPortalDialog.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\nimport * as LR from 'lucide-react'\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogDescription,\r\n DialogHeader,\r\n DialogTitle,\r\n} from '../../../ui/Dialog'\r\nimport { Button } from '../../../ui/Button'\r\nimport { Input } from '../../../ui/Input'\r\nimport { Label } from '../../../ui/Label'\r\nimport { useCreateOpenDataPortal } from '../../../../hooks/openDataPortals/openDataPortals'\r\nimport { DatasetGroup, DataManagementSystem } from '../../../../types/dbTypes'\r\nimport type { OpenDataPortal } from '../../../../types/dbTypes'\r\n\r\ninterface AddPortalDialogProps {\r\n open: boolean\r\n onOpenChange: (open: boolean) => void\r\n}\r\n\r\ntype FormState = Omit<OpenDataPortal, 'id'>\r\n\r\nconst EMPTY_FORM: FormState = {\r\n name: '',\r\n group: DatasetGroup.Municipal,\r\n portalUrl: '',\r\n dataManagementSystem: undefined,\r\n apiUrl: '',\r\n countrySubdivision: '',\r\n municipality: '',\r\n country: '',\r\n}\r\n\r\nexport const AddPortalDialog = ({ open, onOpenChange }: AddPortalDialogProps) => {\r\n const [form, setForm] = React.useState<FormState>(EMPTY_FORM)\r\n const [submitError, setSubmitError] = React.useState<string | null>(null)\r\n const { createOpenDataPortal, isMutating } = useCreateOpenDataPortal()\r\n\r\n const update = <K extends keyof FormState>(field: K, value: FormState[K]) => {\r\n setForm(prev => ({ ...prev, [field]: value }))\r\n }\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault()\r\n setSubmitError(null)\r\n if (!form.name.trim()) {\r\n setSubmitError('Name is required')\r\n return\r\n }\r\n\r\n // Strip empty optionals so the row doesn't carry literal empty strings.\r\n const payload: FormState = {\r\n name: form.name.trim(),\r\n group: form.group,\r\n portalUrl: form.portalUrl?.trim() || undefined,\r\n dataManagementSystem: form.dataManagementSystem || undefined,\r\n apiUrl: form.apiUrl?.trim() || undefined,\r\n countrySubdivision: form.countrySubdivision?.trim() || undefined,\r\n municipality: form.municipality?.trim() || undefined,\r\n country: form.country?.trim() || undefined,\r\n }\r\n\r\n try {\r\n await createOpenDataPortal(payload)\r\n setForm(EMPTY_FORM)\r\n onOpenChange(false)\r\n }\r\n catch (err) {\r\n setSubmitError(err instanceof Error ? err.message : 'Failed to create portal')\r\n }\r\n }\r\n\r\n return (\r\n <Dialog open={open} onOpenChange={onOpenChange}>\r\n <DialogContent className=\"sm:max-w-[520px]\">\r\n <DialogHeader>\r\n <DialogTitle>Add Open Data Portal</DialogTitle>\r\n <DialogDescription>\r\n Register a new external data portal. Only Name and Group are required.\r\n </DialogDescription>\r\n </DialogHeader>\r\n\r\n <form onSubmit={handleSubmit} className=\"flex flex-col gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-name\">\r\n Name\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <Input\r\n id=\"portal-name\"\r\n value={form.name}\r\n onChange={e => update('name', e.target.value)}\r\n disabled={isMutating}\r\n required\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-group\">\r\n Group\r\n <span className=\"text-destructive ml-0.5\">*</span>\r\n </Label>\r\n <select\r\n id=\"portal-group\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={form.group as string}\r\n onChange={e => update('group', e.target.value as DatasetGroup)}\r\n disabled={isMutating}\r\n >\r\n {Object.values(DatasetGroup).map(g => (\r\n <option key={g} value={g}>{g}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-dms\">Data Management System</Label>\r\n <select\r\n id=\"portal-dms\"\r\n className=\"h-9 rounded-md border border-input bg-transparent px-3 text-sm\"\r\n value={(form.dataManagementSystem as string) ?? ''}\r\n onChange={e => update('dataManagementSystem', (e.target.value || undefined) as DataManagementSystem | undefined)}\r\n disabled={isMutating}\r\n >\r\n <option value=\"\">(none)</option>\r\n {Object.values(DataManagementSystem).map(d => (\r\n <option key={d} value={d}>{d}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-portalUrl\">Portal URL</Label>\r\n <Input\r\n id=\"portal-portalUrl\"\r\n type=\"url\"\r\n value={form.portalUrl ?? ''}\r\n onChange={e => update('portalUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/open-data\"\r\n />\r\n </div>\r\n\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-apiUrl\">API URL</Label>\r\n <Input\r\n id=\"portal-apiUrl\"\r\n type=\"url\"\r\n value={form.apiUrl ?? ''}\r\n onChange={e => update('apiUrl', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"https://example.com/api\"\r\n />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-3 gap-3\">\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-municipality\">Municipality</Label>\r\n <Input\r\n id=\"portal-municipality\"\r\n value={form.municipality ?? ''}\r\n onChange={e => update('municipality', e.target.value)}\r\n disabled={isMutating}\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-countrySubdivision\">Subdivision</Label>\r\n <Input\r\n id=\"portal-countrySubdivision\"\r\n value={form.countrySubdivision ?? ''}\r\n onChange={e => update('countrySubdivision', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA-ON\"\r\n />\r\n </div>\r\n <div className=\"flex flex-col gap-1\">\r\n <Label htmlFor=\"portal-country\">Country</Label>\r\n <Input\r\n id=\"portal-country\"\r\n value={form.country ?? ''}\r\n onChange={e => update('country', e.target.value)}\r\n disabled={isMutating}\r\n placeholder=\"CA\"\r\n />\r\n </div>\r\n </div>\r\n\r\n {submitError && (\r\n <p className=\"text-sm text-destructive\">{submitError}</p>\r\n )}\r\n\r\n <div className=\"flex justify-end gap-2 pt-2\">\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={() => onOpenChange(false)}\r\n disabled={isMutating}\r\n >\r\n Cancel\r\n </Button>\r\n <Button type=\"submit\" disabled={isMutating}>\r\n {isMutating\r\n ? (\r\n <>\r\n <LR.Loader2 className=\"mr-1 h-4 w-4 animate-spin\" />\r\n Adding…\r\n </>\r\n )\r\n : 'Add Portal'}\r\n </Button>\r\n </div>\r\n </form>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c","_d","_e"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetDetails.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatasetDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/datasets/DatasetDetails.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAE7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,UAAU,mBAAmB;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,eAAe,EAAE,EAAE,mBAAmB,qBAiK9E"}
|