@giro3d/piero 1.0.0-beta.4 → 1.0.0-beta.7
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/README.md +10 -10
- package/dist/assets/piero.css +2 -2
- package/dist/index.cjs.js +6 -9
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.es.js +3090 -6878
- package/dist/index.es.js.map +1 -1
- package/dist/modules.cjs.js +1 -1
- package/dist/modules.cjs.js.map +1 -1
- package/dist/modules.d.ts +1 -1
- package/dist/modules.es.js +1598 -893
- package/dist/modules.es.js.map +1 -1
- package/dist/{src → packages/piero/src}/App.vue.d.ts +1 -0
- package/dist/packages/piero/src/App.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/PieroApplication.d.ts +5 -0
- package/dist/packages/piero/src/PieroApplication.d.ts.map +1 -0
- package/dist/{src/api/AnalysisApi.d.ts → packages/piero/src/api/analysis.d.ts} +5 -3
- package/dist/packages/piero/src/api/analysis.d.ts.map +1 -0
- package/dist/packages/piero/src/api/bookmarks.d.ts +16 -0
- package/dist/packages/piero/src/api/bookmarks.d.ts.map +1 -0
- package/dist/{src/api/DatasetApi.d.ts → packages/piero/src/api/dataset.d.ts} +55 -19
- package/dist/packages/piero/src/api/dataset.d.ts.map +1 -0
- package/dist/packages/piero/src/api/http.d.ts +32 -0
- package/dist/packages/piero/src/api/http.d.ts.map +1 -0
- package/dist/packages/piero/src/api/index.d.ts +9 -0
- package/dist/packages/piero/src/api/index.d.ts.map +1 -0
- package/dist/packages/piero/src/api/notifications.d.ts +52 -0
- package/dist/packages/piero/src/api/notifications.d.ts.map +1 -0
- package/dist/{src/api/SearchApi.d.ts → packages/piero/src/api/search.d.ts} +2 -0
- package/dist/packages/piero/src/api/search.d.ts.map +1 -0
- package/dist/packages/piero/src/api/view.d.ts +31 -0
- package/dist/packages/piero/src/api/view.d.ts.map +1 -0
- package/dist/{src/api/WidgetApi.d.ts → packages/piero/src/api/widgets.d.ts} +9 -6
- package/dist/packages/piero/src/api/widgets.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/AlertToast.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/AlertToast.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/AttributeGroup.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/AttributeGroup.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/AttributeItem.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/AttributeItem.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/AttributePanel.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/AttributePanel.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/components/CheckboxToggle.vue.d.ts +26 -0
- package/dist/packages/piero/src/components/CheckboxToggle.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/ColorFragment.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/ColorFragment.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/Configuration.d.ts +2 -1
- package/dist/packages/piero/src/components/Configuration.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/CoordinateFragment.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/CoordinateFragment.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/CoordinateInput.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/CoordinateInput.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/DropdownView.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/DropdownView.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/LinkFragment.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/LinkFragment.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/LoadingScreen.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/LoadingScreen.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/MainView.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/MainView.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/ModalOverlay.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/ModalOverlay.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/NavigationButtons.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/NavigationButtons.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/PanelContainer.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/PanelContainer.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/ProgressBar.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/ProgressBar.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/SearchOverlay.vue.d.ts +2 -1
- package/dist/packages/piero/src/components/SearchOverlay.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/SpinnerControl.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/SpinnerControl.vue.d.ts.map +1 -0
- package/dist/{src/components/atoms/ListLabel.vue.d.ts → packages/piero/src/components/StatusBar.vue.d.ts} +5 -1
- package/dist/packages/piero/src/components/StatusBar.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/SwitchToggle.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/SwitchToggle.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/VisibilityControl.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/VisibilityControl.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/atoms/ButtonArea.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/atoms/ButtonArea.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/atoms/ButtonWithIcon.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/atoms/ButtonWithIcon.vue.d.ts.map +1 -0
- package/dist/{src/components/atoms/SectionCollapsible.vue.d.ts → packages/piero/src/components/atoms/CompactList.vue.d.ts} +5 -14
- package/dist/packages/piero/src/components/atoms/CompactList.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/atoms/Icon.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/atoms/Icon.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/atoms/IconList.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/atoms/IconList.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/atoms/IconListButton.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/atoms/IconListButton.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/atoms/ImportButton.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/atoms/ImportButton.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/atoms/ListLabelButton.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/atoms/ListLabelButton.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/components/atoms/Slider.vue.d.ts +15 -0
- package/dist/packages/piero/src/components/atoms/Slider.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/AboutPanel.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/AboutPanel.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/components/panels/AnalysisPanel.vue.d.ts +3 -0
- package/dist/packages/piero/src/components/panels/AnalysisPanel.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/AnnotationItem.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/AnnotationItem.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/AnnotationPanel.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/AnnotationPanel.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/BookmarkItem.vue.d.ts +3 -2
- package/dist/packages/piero/src/components/panels/BookmarkItem.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/BookmarkPanel.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/BookmarkPanel.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/components/panels/DatagroupItem.vue.d.ts +15 -0
- package/dist/packages/piero/src/components/panels/DatagroupItem.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/components/panels/DatasetItem.vue.d.ts +15 -0
- package/dist/packages/piero/src/components/panels/DatasetItem.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/components/panels/DatasetOrGroupItem.vue.d.ts +15 -0
- package/dist/packages/piero/src/components/panels/DatasetOrGroupItem.vue.d.ts.map +1 -0
- package/dist/{src/components/panels/AnalysisPanel.vue.d.ts → packages/piero/src/components/panels/DatasetPanel.vue.d.ts} +1 -0
- package/dist/packages/piero/src/components/panels/DatasetPanel.vue.d.ts.map +1 -0
- package/dist/{src/components/OpacitySlider.vue.d.ts → packages/piero/src/components/panels/DatasetParameters.vue.d.ts} +6 -5
- package/dist/packages/piero/src/components/panels/DatasetParameters.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/EmptyIndicator.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/EmptyIndicator.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/MeasurementItem.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/MeasurementItem.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/MeasurementPanel.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/MeasurementPanel.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/ShareBookmarkModal.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/ShareBookmarkModal.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/panels/analysis/ToolWrapper.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/panels/analysis/ToolWrapper.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/toolbar/ToolBar.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/toolbar/ToolBar.vue.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/components/toolbar/ToolbarButton.vue.d.ts +1 -0
- package/dist/packages/piero/src/components/toolbar/ToolbarButton.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/ImageFormat.d.ts +4 -0
- package/dist/packages/piero/src/configuration/ImageFormat.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/annotation.d.ts +25 -0
- package/dist/packages/piero/src/configuration/annotation.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/basemap.d.ts +7 -0
- package/dist/packages/piero/src/configuration/basemap.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/bookmark.d.ts +10 -0
- package/dist/packages/piero/src/configuration/bookmark.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/colormap.d.ts +10 -0
- package/dist/packages/piero/src/configuration/colormap.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/configuration.d.ts +32 -0
- package/dist/packages/piero/src/configuration/configuration.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/configuration.test.d.ts +2 -0
- package/dist/packages/piero/src/configuration/configuration.test.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/coordinate.d.ts +23 -0
- package/dist/packages/piero/src/configuration/coordinate.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/crs.d.ts +11 -0
- package/dist/packages/piero/src/configuration/crs.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/dataset.d.ts +56 -0
- package/dist/packages/piero/src/configuration/dataset.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/defaultConfig.d.ts +8 -0
- package/dist/packages/piero/src/configuration/defaultConfig.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/extent.d.ts +15 -0
- package/dist/packages/piero/src/configuration/extent.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/index.d.ts +18 -0
- package/dist/packages/piero/src/configuration/index.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/layer.d.ts +27 -0
- package/dist/packages/piero/src/configuration/layer.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/lookAt.d.ts +13 -0
- package/dist/packages/piero/src/configuration/lookAt.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/module.d.ts +6 -0
- package/dist/packages/piero/src/configuration/module.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/orientation.d.ts +4 -0
- package/dist/packages/piero/src/configuration/orientation.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/scene.d.ts +12 -0
- package/dist/packages/piero/src/configuration/scene.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/style.d.ts +7 -0
- package/dist/packages/piero/src/configuration/style.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/units.d.ts +6 -0
- package/dist/packages/piero/src/configuration/units.d.ts.map +1 -0
- package/dist/packages/piero/src/configuration/url.d.ts +4 -0
- package/dist/packages/piero/src/configuration/url.d.ts.map +1 -0
- package/dist/packages/piero/src/configurationLoader.d.ts +7 -0
- package/dist/packages/piero/src/configurationLoader.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/constants.d.ts +1 -0
- package/dist/packages/piero/src/constants.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/context.d.ts +27 -18
- package/dist/packages/piero/src/context.d.ts.map +1 -0
- package/dist/packages/piero/src/createPieroApp.d.ts +30 -0
- package/dist/packages/piero/src/createPieroApp.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/events.d.ts +3 -1
- package/dist/packages/piero/src/events.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/giro3d/CameraControlsInspector.d.ts +1 -0
- package/dist/packages/piero/src/giro3d/CameraControlsInspector.d.ts.map +1 -0
- package/dist/packages/piero/src/giro3d/DatasetBuilder.d.ts +17 -0
- package/dist/packages/piero/src/giro3d/DatasetBuilder.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/giro3d/Measure3D.d.ts +1 -0
- package/dist/packages/piero/src/giro3d/Measure3D.d.ts.map +1 -0
- package/dist/packages/piero/src/index.d.ts +15 -0
- package/dist/packages/piero/src/index.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/loaders/loader.d.ts +3 -9
- package/dist/packages/piero/src/loaders/loader.d.ts.map +1 -0
- package/dist/packages/piero/src/loaders/loader.test.d.ts +2 -0
- package/dist/packages/piero/src/loaders/loader.test.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/loaders/userData.d.ts +1 -0
- package/dist/packages/piero/src/loaders/userData.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/module.d.ts +6 -1
- package/dist/packages/piero/src/module.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/analysis/ClippingBox.d.ts +19 -0
- package/dist/packages/piero/src/modules/analysis/ClippingBox.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/analysis/CrossSection.d.ts +12 -0
- package/dist/packages/piero/src/modules/analysis/CrossSection.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/analysis/FloodingPlane.d.ts +12 -0
- package/dist/packages/piero/src/modules/analysis/FloodingPlane.d.ts.map +1 -0
- package/dist/{src/modules/clippingBoxAnalysis → packages/piero/src/modules/analysis/clippingBox}/ClippingBox.vue.d.ts +1 -0
- package/dist/packages/piero/src/modules/analysis/clippingBox/ClippingBox.vue.d.ts.map +1 -0
- package/dist/{src/modules/clippingBoxAnalysis → packages/piero/src/modules/analysis/clippingBox}/ClippingBoxManager.d.ts +4 -3
- package/dist/packages/piero/src/modules/analysis/clippingBox/ClippingBoxManager.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/analysis/clippingBox/store.d.ts +2269 -0
- package/dist/packages/piero/src/modules/analysis/clippingBox/store.d.ts.map +1 -0
- package/dist/{src/modules/crossSectionAnalysis → packages/piero/src/modules/analysis/crossSection}/CrossSection.vue.d.ts +1 -0
- package/dist/packages/piero/src/modules/analysis/crossSection/CrossSection.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/analysis/crossSection/CrossSectionHelper.d.ts +5 -0
- package/dist/packages/piero/src/modules/analysis/crossSection/CrossSectionHelper.d.ts.map +1 -0
- package/dist/{src/modules/crossSectionAnalysis → packages/piero/src/modules/analysis/crossSection}/CrossSectionManager.d.ts +2 -1
- package/dist/packages/piero/src/modules/analysis/crossSection/CrossSectionManager.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/analysis/crossSection/store.d.ts +543 -0
- package/dist/packages/piero/src/modules/analysis/crossSection/store.d.ts.map +1 -0
- package/dist/{src/modules/floodingPlaneAnalysis → packages/piero/src/modules/analysis/floodingPlane}/FloodingPlane.vue.d.ts +1 -0
- package/dist/packages/piero/src/modules/analysis/floodingPlane/FloodingPlane.vue.d.ts.map +1 -0
- package/dist/{src/modules/floodingPlaneAnalysis → packages/piero/src/modules/analysis/floodingPlane}/FloodingPlaneManager.d.ts +2 -1
- package/dist/packages/piero/src/modules/analysis/floodingPlane/FloodingPlaneManager.d.ts.map +1 -0
- package/dist/{src/modules/floodingPlaneAnalysis → packages/piero/src/modules/analysis/floodingPlane}/FloodingPlaneObject.d.ts +2 -1
- package/dist/packages/piero/src/modules/analysis/floodingPlane/FloodingPlaneObject.d.ts.map +1 -0
- package/dist/{src/modules/floodingPlaneAnalysis → packages/piero/src/modules/analysis/floodingPlane}/store.d.ts +1 -0
- package/dist/packages/piero/src/modules/analysis/floodingPlane/store.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/analysis/index.d.ts +9 -0
- package/dist/packages/piero/src/modules/analysis/index.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/index.d.ts +17 -0
- package/dist/packages/piero/src/modules/index.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/BDTopoLoader.d.ts +11 -0
- package/dist/packages/piero/src/modules/loaders/BDTopoLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/GPXLoader.d.ts +28 -0
- package/dist/packages/piero/src/modules/loaders/GPXLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/GeoJSONLoader.d.ts +28 -0
- package/dist/packages/piero/src/modules/loaders/GeoJSONLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/GeoTIFFLoader.d.ts +11 -0
- package/dist/packages/piero/src/modules/loaders/GeoTIFFLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/IFCLoader.d.ts +11 -0
- package/dist/packages/piero/src/modules/loaders/IFCLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/KMLLoader.d.ts +28 -0
- package/dist/packages/piero/src/modules/loaders/KMLLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/LASLoader.d.ts +29 -0
- package/dist/packages/piero/src/modules/loaders/LASLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/MapboxLoader.d.ts +11 -0
- package/dist/packages/piero/src/modules/loaders/MapboxLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/OSMLoader.d.ts +11 -0
- package/dist/packages/piero/src/modules/loaders/OSMLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/PotreeLoader.d.ts +11 -0
- package/dist/packages/piero/src/modules/loaders/PotreeLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/TMSLoader.d.ts +27 -0
- package/dist/packages/piero/src/modules/loaders/TMSLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/Tiles3DLoader.d.ts +11 -0
- package/dist/packages/piero/src/modules/loaders/Tiles3DLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/WMSLoader.d.ts +29 -0
- package/dist/packages/piero/src/modules/loaders/WMSLoader.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/WMTSLoader.d.ts +29 -0
- package/dist/packages/piero/src/modules/loaders/WMTSLoader.d.ts.map +1 -0
- package/dist/{src/giro3d/entities/FeatureCollectionEntity.d.ts → packages/piero/src/modules/loaders/bdtopo/BDTopoEntity.d.ts} +7 -9
- package/dist/packages/piero/src/modules/loaders/bdtopo/BDTopoEntity.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/loaders}/ifc/IfcEntity.d.ts +6 -3
- package/dist/packages/piero/src/modules/loaders/ifc/IfcEntity.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/loaders}/ifc/IfcEntityInspector.d.ts +1 -0
- package/dist/packages/piero/src/modules/loaders/ifc/IfcEntityInspector.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/loaders}/ifc/IfcPropertyView.vue.d.ts +2 -1
- package/dist/packages/piero/src/modules/loaders/ifc/IfcPropertyView.vue.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/loaders}/ifc/IfcSubtree.vue.d.ts +1 -0
- package/dist/packages/piero/src/modules/loaders/ifc/IfcSubtree.vue.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/loaders/index.d.ts +20 -0
- package/dist/packages/piero/src/modules/loaders/index.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/misc/Attribution.d.ts +8 -0
- package/dist/packages/piero/src/modules/misc/Attribution.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/misc/AttributionWidget.vue.d.ts +4 -0
- package/dist/packages/piero/src/modules/misc/AttributionWidget.vue.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/misc}/DownloadDataset.d.ts +3 -2
- package/dist/packages/piero/src/modules/misc/DownloadDataset.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/misc/Graticule.d.ts +8 -0
- package/dist/packages/piero/src/modules/misc/Graticule.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/misc}/OpenLayersMinimap.d.ts +3 -2
- package/dist/packages/piero/src/modules/misc/OpenLayersMinimap.d.ts.map +1 -0
- package/dist/{src/modules/minimap → packages/piero/src/modules/misc}/OpenLayersMinimapComponent.vue.d.ts +1 -0
- package/dist/packages/piero/src/modules/misc/OpenLayersMinimapComponent.vue.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/misc}/PostProcessEntities.d.ts +3 -2
- package/dist/packages/piero/src/modules/misc/PostProcessEntities.d.ts.map +1 -0
- package/dist/{src/modules → packages/piero/src/modules/misc}/Tour.d.ts +4 -3
- package/dist/packages/piero/src/modules/misc/Tour.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/misc/index.d.ts +12 -0
- package/dist/packages/piero/src/modules/misc/index.d.ts.map +1 -0
- package/dist/{src/modules/geocoding → packages/piero/src/modules/search}/CoordinatesSearch.d.ts +2 -1
- package/dist/packages/piero/src/modules/search/CoordinatesSearch.d.ts.map +1 -0
- package/dist/{src/modules/geocoding → packages/piero/src/modules/search}/FrenchBanGeocoder.d.ts +2 -1
- package/dist/packages/piero/src/modules/search/FrenchBanGeocoder.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/search/PhotonGeocoder.d.ts +11 -0
- package/dist/packages/piero/src/modules/search/PhotonGeocoder.d.ts.map +1 -0
- package/dist/packages/piero/src/modules/search/index.d.ts +9 -0
- package/dist/packages/piero/src/modules/search/index.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/providers/Alticoding.d.ts +1 -0
- package/dist/packages/piero/src/providers/Alticoding.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/providers/IgnProvider.d.ts +1 -0
- package/dist/packages/piero/src/providers/IgnProvider.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/AnnotationManager.d.ts +9 -2
- package/dist/packages/piero/src/services/AnnotationManager.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/CameraController.d.ts +2 -1
- package/dist/packages/piero/src/services/CameraController.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/DatasetManager.d.ts +4 -3
- package/dist/packages/piero/src/services/DatasetManager.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/Giro3DManager.d.ts +2 -1
- package/dist/packages/piero/src/services/Giro3DManager.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/Highlighter.d.ts +1 -0
- package/dist/packages/piero/src/services/Highlighter.d.ts.map +1 -0
- package/dist/packages/piero/src/services/LayerManager.d.ts +24 -0
- package/dist/packages/piero/src/services/LayerManager.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/MeasureTool.d.ts +2 -1
- package/dist/packages/piero/src/services/MeasureTool.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/MeasurementManager.d.ts +2 -1
- package/dist/packages/piero/src/services/MeasurementManager.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/services/SceneCursorManager.d.ts +1 -0
- package/dist/packages/piero/src/services/SceneCursorManager.d.ts.map +1 -0
- package/dist/{src/services/Picker.d.ts → packages/piero/src/services/picking.d.ts} +1 -0
- package/dist/packages/piero/src/services/picking.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/analysis.d.ts +2 -1
- package/dist/packages/piero/src/stores/analysis.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/annotations.d.ts +1 -0
- package/dist/packages/piero/src/stores/annotations.d.ts.map +1 -0
- package/dist/packages/piero/src/stores/basemap.d.ts +18 -0
- package/dist/packages/piero/src/stores/basemap.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/bookmarks.d.ts +2 -1
- package/dist/packages/piero/src/stores/bookmarks.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/camera.d.ts +1 -0
- package/dist/packages/piero/src/stores/camera.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/datasets.d.ts +27 -16
- package/dist/packages/piero/src/stores/datasets.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/giro3d.d.ts +7 -5
- package/dist/packages/piero/src/stores/giro3d.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/measurement.d.ts +1 -0
- package/dist/packages/piero/src/stores/measurement.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/modules.d.ts +1 -0
- package/dist/packages/piero/src/stores/modules.d.ts.map +1 -0
- package/dist/packages/piero/src/stores/modules.test.d.ts +2 -0
- package/dist/packages/piero/src/stores/modules.test.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/notifications.d.ts +2 -1
- package/dist/packages/piero/src/stores/notifications.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/search.d.ts +6 -2
- package/dist/packages/piero/src/stores/search.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/stores/widgets.d.ts +2 -1
- package/dist/packages/piero/src/stores/widgets.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/Annotation.d.ts +5 -2
- package/dist/packages/piero/src/types/Annotation.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/AnnotationMode.d.ts +1 -0
- package/dist/packages/piero/src/types/AnnotationMode.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/Bookmark.d.ts +1 -0
- package/dist/packages/piero/src/types/Bookmark.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/CameraPosition.d.ts +4 -0
- package/dist/packages/piero/src/types/CameraPosition.d.ts.map +1 -0
- package/dist/packages/piero/src/types/Dataset.d.ts +81 -0
- package/dist/packages/piero/src/types/Dataset.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/Feature.d.ts +1 -0
- package/dist/packages/piero/src/types/Feature.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/Measure.d.ts +1 -0
- package/dist/packages/piero/src/types/Measure.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/MeasurementMode.d.ts +1 -0
- package/dist/packages/piero/src/types/MeasurementMode.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/Named.d.ts +1 -0
- package/dist/packages/piero/src/types/Named.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/NavigationMode.d.ts +1 -0
- package/dist/packages/piero/src/types/NavigationMode.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/OLGeometry.d.ts +1 -0
- package/dist/packages/piero/src/types/OLGeometry.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/Viewbox.d.ts +1 -0
- package/dist/packages/piero/src/types/Viewbox.d.ts.map +1 -0
- package/dist/packages/piero/src/types/index.d.ts +1 -0
- package/dist/packages/piero/src/types/index.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/types/utilities.d.ts +1 -0
- package/dist/packages/piero/src/types/utilities.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/utils/Components.d.ts +1 -0
- package/dist/packages/piero/src/utils/Components.d.ts.map +1 -0
- package/dist/packages/piero/src/utils/Configuration.d.ts +12 -0
- package/dist/packages/piero/src/utils/Configuration.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/utils/Download.d.ts +2 -1
- package/dist/packages/piero/src/utils/Download.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/utils/Fetcher.d.ts +2 -20
- package/dist/packages/piero/src/utils/Fetcher.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/utils/Measure.d.ts +1 -0
- package/dist/packages/piero/src/utils/Measure.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/utils/Projections.d.ts +3 -2
- package/dist/packages/piero/src/utils/Projections.d.ts.map +1 -0
- package/dist/{src → packages/piero/src}/utils/Types.d.ts +1 -0
- package/dist/packages/piero/src/utils/Types.d.ts.map +1 -0
- package/dist/{src/utils/OLFeatures.d.ts → packages/piero/src/utils/features.d.ts} +1 -0
- package/dist/packages/piero/src/utils/features.d.ts.map +1 -0
- package/dist/packages/piero/src/utils/style.d.ts +4 -0
- package/dist/packages/piero/src/utils/style.d.ts.map +1 -0
- package/dist/userData.cjs.js +6 -0
- package/dist/userData.cjs.js.map +1 -0
- package/dist/{Components.es.js → userData.es.js} +2283 -3131
- package/dist/userData.es.js.map +1 -0
- package/package.json +9 -5
- package/dist/Components.cjs.js +0 -7
- package/dist/Components.cjs.js.map +0 -1
- package/dist/Components.es.js.map +0 -1
- package/dist/src/api/BookmarkApi.d.ts +0 -6
- package/dist/src/api/NotificationApi.d.ts +0 -10
- package/dist/src/api/ViewApi.d.ts +0 -10
- package/dist/src/api/index.d.ts +0 -5
- package/dist/src/components/StatusBar.vue.d.ts +0 -10
- package/dist/src/components/atoms/CompactList.vue.d.ts +0 -17
- package/dist/src/components/panels/BasemapItem.vue.d.ts +0 -17
- package/dist/src/components/panels/DatagroupItem.vue.d.ts +0 -18
- package/dist/src/components/panels/DatasetItem.vue.d.ts +0 -18
- package/dist/src/components/panels/DatasetOrGroupItem.vue.d.ts +0 -16
- package/dist/src/components/panels/DatasetPanel.vue.d.ts +0 -2
- package/dist/src/components/panels/OverlayItem.vue.d.ts +0 -19
- package/dist/src/config-loader.d.ts +0 -7
- package/dist/src/createPieroApp.d.ts +0 -31
- package/dist/src/giro3d/EntityBuilder.d.ts +0 -21
- package/dist/src/giro3d/Graticule.d.ts +0 -20
- package/dist/src/giro3d/Grid.d.ts +0 -11
- package/dist/src/giro3d/LayerBuilder.d.ts +0 -46
- package/dist/src/giro3d/Plane.d.ts +0 -11
- package/dist/src/giro3d/Skybox.d.ts +0 -6
- package/dist/src/giro3d/entities/PointCloudEntity.d.ts +0 -45
- package/dist/src/giro3d/entities/TiledPointCloudEntity.d.ts +0 -13
- package/dist/src/giro3d/entities/Tiles3dEntity.d.ts +0 -11
- package/dist/src/giro3d/entities/VectorLabelsEntity.d.ts +0 -48
- package/dist/src/giro3d/entities/VectorMeshEntity.d.ts +0 -97
- package/dist/src/giro3d/entities/VectorShapeEntity.d.ts +0 -8
- package/dist/src/giro3d/entities/flatPointCloud.d.ts +0 -2
- package/dist/src/giro3d/entities/tiledIfc.d.ts +0 -2
- package/dist/src/giro3d/entities/vector.d.ts +0 -2
- package/dist/src/giro3d/sources/GeopackageSource.d.ts +0 -20
- package/dist/src/giro3d/sources/ShapefileSource.d.ts +0 -20
- package/dist/src/giro3d/sources/mixins.d.ts +0 -60
- package/dist/src/index.d.ts +0 -18
- package/dist/src/loaders/csv.d.ts +0 -3
- package/dist/src/loaders/las.d.ts +0 -3
- package/dist/src/loaders/loader.test.d.ts +0 -1
- package/dist/src/loaders/vector.d.ts +0 -4
- package/dist/src/modules/ClippingBoxAnalysis.d.ts +0 -18
- package/dist/src/modules/CrossSectionAnalysis.d.ts +0 -11
- package/dist/src/modules/FloodingPlaneAnalysis.d.ts +0 -11
- package/dist/src/modules/IFCLoader.d.ts +0 -10
- package/dist/src/modules/PLYLoader.d.ts +0 -10
- package/dist/src/modules/PotreeLoader.d.ts +0 -10
- package/dist/src/modules/clippingBoxAnalysis/store.d.ts +0 -2268
- package/dist/src/modules/crossSectionAnalysis/CrossSectionHelper.d.ts +0 -4
- package/dist/src/modules/crossSectionAnalysis/store.d.ts +0 -542
- package/dist/src/modules/index.d.ts +0 -13
- package/dist/src/modules/ply/PlyEntity.d.ts +0 -33
- package/dist/src/services/LayerManager.d.ts +0 -37
- package/dist/src/stores/layers.d.ts +0 -40
- package/dist/src/stores/modules.test.d.ts +0 -1
- package/dist/src/types/BaseLayer.d.ts +0 -30
- package/dist/src/types/Configuration.d.ts +0 -106
- package/dist/src/types/Dataset.d.ts +0 -78
- package/dist/src/types/IFCTypes.d.ts +0 -5
- package/dist/src/types/LayerObject.d.ts +0 -20
- package/dist/src/types/Notification.d.ts +0 -8
- package/dist/src/types/Overlay.d.ts +0 -24
- package/dist/src/types/VectorStyle.d.ts +0 -31
- package/dist/src/types/configuration/analysis.d.ts +0 -26
- package/dist/src/types/configuration/bookmark.d.ts +0 -16
- package/dist/src/types/configuration/camera.d.ts +0 -19
- package/dist/src/types/configuration/color.d.ts +0 -18
- package/dist/src/types/configuration/datasets/cityjson.d.ts +0 -9
- package/dist/src/types/configuration/datasets/core.d.ts +0 -49
- package/dist/src/types/configuration/datasets/featureCollection.d.ts +0 -6
- package/dist/src/types/configuration/datasets/ifc.d.ts +0 -10
- package/dist/src/types/configuration/datasets/index.d.ts +0 -27
- package/dist/src/types/configuration/datasets/layer.d.ts +0 -43
- package/dist/src/types/configuration/datasets/ply.d.ts +0 -10
- package/dist/src/types/configuration/datasets/pointCloud.d.ts +0 -12
- package/dist/src/types/configuration/datasets/potreePointCloud.d.ts +0 -10
- package/dist/src/types/configuration/datasets/tiledIfc.d.ts +0 -9
- package/dist/src/types/configuration/datasets/tiledPointCloud.d.ts +0 -9
- package/dist/src/types/configuration/datasets/vector.d.ts +0 -34
- package/dist/src/types/configuration/features.d.ts +0 -2
- package/dist/src/types/configuration/geographic.d.ts +0 -51
- package/dist/src/types/configuration/layers/core.d.ts +0 -50
- package/dist/src/types/configuration/layers/index.d.ts +0 -51
- package/dist/src/types/configuration/sources/bingMaps.d.ts +0 -5
- package/dist/src/types/configuration/sources/core/baseConfig.d.ts +0 -70
- package/dist/src/types/configuration/sources/core/tiled.d.ts +0 -19
- package/dist/src/types/configuration/sources/core/vector.d.ts +0 -13
- package/dist/src/types/configuration/sources/core/vectorTile.d.ts +0 -8
- package/dist/src/types/configuration/sources/customVector.d.ts +0 -7
- package/dist/src/types/configuration/sources/customVectorTile.d.ts +0 -8
- package/dist/src/types/configuration/sources/geojson.d.ts +0 -5
- package/dist/src/types/configuration/sources/geotiff.d.ts +0 -8
- package/dist/src/types/configuration/sources/gpx.d.ts +0 -5
- package/dist/src/types/configuration/sources/kml.d.ts +0 -5
- package/dist/src/types/configuration/sources/mvt.d.ts +0 -10
- package/dist/src/types/configuration/sources/osm.d.ts +0 -5
- package/dist/src/types/configuration/sources/stadiaMaps.d.ts +0 -5
- package/dist/src/types/configuration/sources/wms.d.ts +0 -15
- package/dist/src/types/configuration/sources/wmts.d.ts +0 -15
- package/dist/src/types/configuration/sources/xyz.d.ts +0 -9
- package/dist/src/utils/Configuration.d.ts +0 -15
package/dist/modules.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Y=Object.defineProperty;var W=(r,t,e)=>t in r?Y(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var d=(r,t,e)=>W(r,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./Components.cjs.js"),i=require("vue"),T=require("@giro3d/giro3d/core/geographic/Coordinates"),H=require("pinia"),L=require("@giro3d/giro3d/entities/Entity3D"),Z=require("@giro3d/giro3d/utils/Fetcher"),J=require("@giro3d/giro3d/gui/EntityPanel"),_=require("openbim-components"),Q=require("@giro3d/giro3d/gui/EntityInspector"),z=require("ol"),X=require("ol/layer/Tile"),j=require("ol/proj"),K=require("ol/source"),ee=require("@giro3d/giro3d/entities/PointCloud"),te=require("@giro3d/giro3d/sources/PotreeSource"),w=require("shepherd.js"),ne={class:"input-group"},oe={class:"form-label"},se={class:"input-group"},ie=["value"],ae=["value"],re=["value"],le=i.defineComponent({__name:"CoordinateInput",props:{cursorManager:{},initialValue:{},instance:{},label:{},showZ:{type:Boolean}},emits:["update:coordinates"],setup(r,{emit:t}){var y,C,v;const e=r,n=i.ref(((y=e.initialValue)==null?void 0:y.x)??0),o=i.ref(((C=e.initialValue)==null?void 0:C.y)??0),s=i.ref(((v=e.initialValue)==null?void 0:v.z)??0),a=t,u=new c.Picker,h=i.ref(!1),m=()=>{a("update:coordinates",new T(c.nonNull(e.instance).referenceCrs,n.value,o.value,s.value))},l=()=>{const b=c.nonNull(e.instance);h.value=!0;const E=V=>{var I,S,k,A;const P=(S=(I=u.getFirstFeatureAt(b,V))==null?void 0:I.at(0))==null?void 0:S.point;P&&(n.value=P.x,o.value=P.y,s.value=P.z,(k=e.cursorManager)==null||k.setCursor("location"),(A=e.cursorManager)==null||A.setCursorLocation(P))},x=V=>{var I,S,k;(I=e.cursorManager)==null||I.setCursor(null),b.domElement.removeEventListener("click",x),b.domElement.removeEventListener("mousemove",E),h.value=!1;const P=(k=(S=u.getFirstFeatureAt(b,V))==null?void 0:S.at(0))==null?void 0:k.point;P&&(n.value=P.x,o.value=P.y,s.value=P.z,m())};b.domElement.addEventListener("mousemove",E),b.domElement.addEventListener("click",x)};function p(b){n.value=b,m()}function f(b){o.value=b,m()}function g(b){s.value=b,m()}return(b,E)=>(i.openBlock(),i.createElementBlock("div",ne,[i.createElementVNode("label",oe,i.toDisplayString(e.label),1),i.createElementVNode("div",se,[i.createElementVNode("input",{type:"number",class:"form-control",id:"plane-center-x",value:n.value.toFixed(2),onInput:E[0]||(E[0]=x=>p(Number.parseFloat(x.target.value)))},null,40,ie),i.createElementVNode("input",{type:"number",class:"form-control",id:"plane-center-y",value:o.value.toFixed(2),onInput:E[1]||(E[1]=x=>f(Number.parseFloat(x.target.value)))},null,40,ae),e.showZ===!0?(i.openBlock(),i.createElementBlock("input",{key:0,type:"number",class:"form-control",id:"plane-center-z",value:s.value.toFixed(2),onInput:E[2]||(E[2]=x=>g(Number.parseFloat(x.target.value)))},null,40,re)):i.createCommentVNode("",!0),e.instance!=null?(i.openBlock(),i.createBlock(c._sfc_main$1,{key:1,title:"Pick point in scene",icon:"fg-location",disabled:h.value,onClick:l,class:"btn-primary"},null,8,["disabled"])):i.createCommentVNode("",!0)])]))}}),$=H.defineStore("crossSection",()=>{const r=i.ref(0),t=i.shallowRef(),e=i.shallowRef(),n=i.ref(new c.Vector3(0,0,0)),o=i.ref(!1),s=i.ref(!1);function a(f){o.value=f}function u(f){r.value=f}function h(f){n.value=f}function m(f){s.value=f}function l(f){t.value=f}function p(f){e.value=f}return{center:n,cursorManager:e,enable:o,instance:t,orientation:r,setCenter:h,setCursorManager:p,setEnabled:a,setInstance:l,setOrientation:u,setShowHelper:m,showHelper:s}}),ce={class:"input-group"},ue={class:"input-group"},de={class:"input-group my-3"},pe=["value"],he={class:"input-group mb-3"},me=["value"],fe=i.defineComponent({__name:"CrossSection",setup(r){const t=$();function e(o){t.setOrientation(o)}const n=o=>{t.setCenter(o.toVector3())};return(o,s)=>(i.openBlock(),i.createElementBlock(i.Fragment,null,[i.createElementVNode("div",ce,[i.createVNode(c._sfc_main,{"model-value":i.unref(t).enable,"onUpdate:modelValue":s[0]||(s[0]=a=>i.unref(t).setEnabled(a)),id:"cross-section-enable",title:"Enable cross-section"},null,8,["model-value"]),s[4]||(s[4]=i.createElementVNode("label",{for:"cross-section-enable",class:"form-check-label"},"Enable cross section",-1))]),i.createElementVNode("div",ue,[i.createVNode(c._sfc_main,{"model-value":i.unref(t).showHelper,"onUpdate:modelValue":s[1]||(s[1]=a=>i.unref(t).setShowHelper(a)),id:"cross-section-helper-enable",title:"Show plane helper"},null,8,["model-value"]),s[5]||(s[5]=i.createElementVNode("label",{for:"cross-section-helper-enable",class:"form-check-label"},"Show plane helper",-1))]),i.createElementVNode("div",de,[s[6]||(s[6]=i.createElementVNode("label",{for:"plane-orientation-range",class:"form-check-label"},"Plane orientation (0-360°)",-1)),i.createElementVNode("input",{id:"plane-orientation-range",title:"Altitude",type:"range",class:"form-range",min:"0",step:"0.1",max:"360",value:i.unref(t).orientation,onInput:s[2]||(s[2]=a=>e(Number.parseFloat(a.target.value)))},null,40,pe)]),i.createElementVNode("div",he,[i.createElementVNode("input",{type:"number",class:"form-control",id:"plane-orientation-number",step:"0.1",value:i.unref(t).orientation,onInput:s[3]||(s[3]=a=>e(Number.parseFloat(a.target.value)))},null,40,me)]),s[7]||(s[7]=i.createElementVNode("hr",null,null,-1)),i.unref(t).instance!=null?(i.openBlock(),i.createBlock(le,{key:0,label:"Center","initial-value":i.unref(t).center,instance:i.unref(t).instance,"cursor-manager":i.unref(t).cursorManager,"onUpdate:coordinates":n},null,8,["initial-value","instance","cursor-manager"])):i.createCommentVNode("",!0)],64))}});class ge extends c.Object3D{constructor(){super();const t=new c.Mesh(new c.PlaneGeometry(50,100,1,10),new c.MeshBasicMaterial({color:"#6bf904",depthTest:!1,depthWrite:!1,wireframe:!0})),e=new c.ArrowHelper(new c.Vector3(0,1,0),new c.Vector3(0,0,0),200);t.renderOrder=999,t.rotateY(Math.PI/2),this.add(t),this.add(e),this.updateMatrixWorld(!0)}}class ye{constructor(t){d(this,"_clippingPlanes",null);d(this,"_helper");d(this,"_instance");d(this,"_store",$());this.context=t,t.events.addEventListener("ready",()=>{this._instance=t.view.getInstance();const e=t.configuration.default_crs,n=t.configuration.analysis.cross_section;this._store.setCursorManager(t.view.getSceneCursorManager()),this._store.setInstance(t.view.getInstance()),this._store.setOrientation(n.orientation);const o=n.pivot,s=new T(o.crs??e,o.x,o.y,0).as(e);this._store.setCenter(s.toVector3()),this._instance.addEventListener("entity-added",this.updateCrossSection.bind(this)),this._store.$onAction(({after:a,name:u})=>{a(()=>{switch(u){case"setCenter":case"setEnabled":case"setOrientation":case"setShowHelper":this.updateCrossSection(),this.updateHelper(),this.showHelper(this._store.showHelper);break}})}),this.updateCrossSection(),this.updateHelper(),this.showHelper(this._store.showHelper)})}dispose(){}createHelperIfNecessary(){this._store.showHelper&&this._helper==null&&this._instance&&(this._helper=new ge,this._instance.add(this._helper).catch(console.error))}showHelper(t){this.createHelperIfNecessary(),this._helper&&(this._helper.visible=t),this.updateHelper()}updateCrossSection(){if(this._store.enable){const t=[],e=c.MathUtils.DEG2RAD*this._store.orientation,n=Math.cos(e),o=Math.sin(e),s=new c.Vector3(n,o,0),a=new c.Plane(s,0).distanceToPoint(this._store.center),u=new c.Plane(s,-a);t.push(u),this._clippingPlanes=t}else this._clippingPlanes=null;this.updateEntities()}updateEntities(){const t=this.context.view.getInstance();for(const e of t.getEntities())L.isEntity3D(e)&&(e.clippingPlanes=this._clippingPlanes);t.notifyChange()}updateHelper(){var t,e,n,o;this.createHelperIfNecessary(),(t=this._helper)==null||t.position.copy(this._store.center),(e=this._helper)==null||e.updateMatrixWorld(!0),(n=this._helper)==null||n.setRotationFromAxisAngle(new c.Vector3(0,0,1),c.MathUtils.degToRad(this._store.orientation)),(o=this._instance)==null||o.notifyChange()}}class be{constructor(){d(this,"id","builtin-cross-section-analysis");d(this,"name","Cross section");d(this,"_manager",null)}initialize(t){t.analysis.registerTool({component:fe,icon:"bi-circle-half",name:"Cross section"}),this._manager=new ye(t)}}function D(r){if("url"in r.config&&typeof r.config.url=="string")return r.config.url;if("source"in r.config&&typeof r.config.source=="object"&&"url"in r.config.source&&typeof r.config.source.url=="string")return r.config.source.url}function _e(r){return D(r)!=null}class ve{constructor(){d(this,"id","builtin-download-dataset");d(this,"name","Download dataset");d(this,"_context",null)}initialize(t){this._context=t,t.datasets.registerDatasetAction({action:this.download.bind(this),icon:"bi-download",predicate:_e,title:"Download dataset"})}download(t){const e=D(t);if(e==null){console.warn("invalid");return}const n=this._context,o=new URL(e).pathname.split("/"),s=o[o.length-1];console.info(`download ${D(t)}`),c.Fetcher.fetch(e).then(a=>{if(!a.ok)throw new Error(`${a.status} ${a.statusText}`);return a.blob()}).then(a=>{c.Download.downloadBlob(a,s),n.notifications.pushNotification({level:"success",text:s,title:"Download successful"})}).catch(a=>{console.error(a);const u=a instanceof Error?a.message:"Download failed";n.notifications.pushNotification({level:"error",text:u,title:t.name})})}}const R=H.defineStore("floodingPlane",()=>{const r=i.ref(0),t=i.ref(!1);function e(){return r.value}function n(s){r.value=s}function o(s){t.value=s}return{enable:t,getHeight:e,setEnabled:o,setHeight:n}}),we={class:"input-group mb-3"},Ce={class:"input-group mb-3"},Ee=["value"],xe={class:"input-group mb-3"},Pe=["value"],Ie=i.defineComponent({__name:"FloodingPlane",setup(r){const t=R();function e(n){t.setHeight(n)}return(n,o)=>(i.openBlock(),i.createElementBlock(i.Fragment,null,[i.createElementVNode("div",we,[i.createVNode(c._sfc_main,{"model-value":i.unref(t).enable,"onUpdate:modelValue":o[0]||(o[0]=s=>i.unref(t).setEnabled(s)),id:"flooding-plane-enable",title:"foo"},null,8,["model-value"]),o[3]||(o[3]=i.createElementVNode("label",{for:"flooding-plane-enable",class:"form-label"},"Enable flooding plane",-1))]),i.createElementVNode("div",Ce,[o[5]||(o[5]=i.createElementVNode("label",{for:"flooding-altitude-range",class:"form-label"},"Altitude",-1)),i.createElementVNode("input",{id:"flooding-altitude-range",title:"Altitude",type:"range",class:"form-range",min:"0",step:"0.1",max:"500",value:i.unref(t).getHeight(),onInput:o[1]||(o[1]=s=>e(Number.parseFloat(s.target.value)))},null,40,Ee),i.createElementVNode("div",xe,[i.createElementVNode("input",{type:"number",class:"form-control",id:"flooding-altitude-number",step:"0.1",value:i.unref(t).getHeight(),onInput:o[2]||(o[2]=s=>e(Number.parseFloat(s.target.value)))},null,40,Pe),o[4]||(o[4]=i.createElementVNode("span",{class:"input-group-text"},"m",-1))])])],64))}});class Se{constructor(){d(this,"geometry");d(this,"material");d(this,"object3D");d(this,"_height");this.geometry=new c.PlaneGeometry(1,1,1,1),this.material=new c.MeshBasicMaterial({color:43690,opacity:.5,transparent:!0}),this.object3D=new c.Mesh(this.geometry,this.material),this.object3D.renderOrder=2,this.visible=!1,this._height=0}set height(t){this._height=t}get height(){return this._height}set visible(t){this.object3D.visible=t}get visible(){return this.object3D.visible}dispose(){this.object3D.removeFromParent(),this.geometry.dispose(),this.material.dispose()}setPosition(t,e,n,o,s){this.object3D.scale.set(o,s,1),this.object3D.position.set(t,e,n),this.object3D.updateMatrixWorld()}}class ke{constructor(t){d(this,"_context");d(this,"_plane");d(this,"_store",R());this._context=t,this._plane=null,t.events.addEventListener("ready",()=>{this._store.$onAction(({after:e,name:n})=>{e(()=>{switch(n){case"setEnabled":this.updatePlane();break;case"setHeight":this.updatePlane();break}})})})}dispose(){this._plane&&(this._context.view.getInstance().remove(this._plane.object3D),this._plane.dispose())}async updatePlane(){this._plane||(this._plane=new Se,await this._context.view.getInstance().add(this._plane.object3D));const t=this._context.view.getBoundingBox(),e=t.getCenter(new c.Vector3),n=t.getSize(new c.Vector3);this._plane.visible=this._store.enable,this._plane.setPosition(e.x,e.y,this._store.getHeight(),n.x,n.y),this._context.view.getInstance().notifyChange()}}class Fe{constructor(){d(this,"id","builtin-flooding-plane-analysis");d(this,"name","Flooding plane");d(this,"_manager",null)}initialize(t){t.analysis.registerTool({component:Ie,icon:"bi-layers-half",name:"Flooding plane"}),this._manager=new ke(t)}}const Be=/^(\d+\.\d+)\s*,\s*(\d+\.\d+)$/;class Ne{constructor(){d(this,"name","Go to coordinates")}search(t){const e=Be.exec(t);if(e){const n=Number.parseFloat(e[1]),o=Number.parseFloat(e[2]),a={coordinates:T.WGS84(n,o),label:`${n.toFixed(6)}, ${o.toFixed(6)}`,provider:this};return Promise.resolve([a])}else return Promise.resolve([])}}class Te{constructor(){d(this,"id","builtin-coordinates-search");d(this,"name","Coordinates search")}initialize(t){t.search.registerProvider(new Ne)}}const Me=/[a-z]{3}/;class Le{constructor(){d(this,"name","Base adresse nationale (BAN)")}async search(t){if(!Me.test(t))return[];try{const n=(await c.Fetcher.fetchJson(`https://api-adresse.data.gouv.fr/search/?q=${t}`)).features.map(o=>{const s=o.properties,a=o.geometry,[u,h]=a.coordinates;return{coordinates:new T("EPSG:4326",u,h,0),label:s.label,provider:this}});return await Ve(n.map(o=>o.coordinates)),n}catch(e){if(e instanceof Z.HttpError)return[];throw e}}}async function Ve(r){const t=new URL("https://data.geopf.fr/altimetrie/1.0/calcul/alti/rest/elevation.json");t.searchParams.append("lon",r.map(n=>n.longitude).join("|")),t.searchParams.append("lat",r.map(n=>n.latitude).join("|")),t.searchParams.append("zonly","true"),t.searchParams.append("resource","ign_rge_alti_wld"),t.searchParams.append("delimiter","|"),t.searchParams.append("indent","false");const e=await c.Fetcher.fetchJson(t.toString());for(let n=0;n<r.length;n++)r[n].setAltitude(e.elevations[n]);return e}class De{constructor(){d(this,"id","builtin-geocoding-ban");d(this,"name","Base adresse nationale")}initialize(t){t.search.registerProvider(new Le)}}const F=new c.Matrix4,Oe={bbox:new c.MeshBasicMaterial({color:"#FFFF00",depthTest:!0,opacity:.2,transparent:!0}),selection:new c.MeshBasicMaterial({color:"#FF0000",depthTest:!1,opacity:.6,transparent:!0})},Ae=4186316022,ze=781010003,je=2655215786,He=3242617779,$e=919958153,Re=1307041759,U=1451395588,q=1883228015,Ue=[U,q],qe=[Ae,ze,je,He,$e,Re],G=r=>c.isObject(r)&&r.isIFCPickResult,B=class B extends L{constructor(e){super(new c.Group);d(this,"isIfcEntity",!0);d(this,"isPickableFeatures",!0);d(this,"type","IfcEntity");d(this,"_classificationCache");d(this,"_components");d(this,"_fragmentBoundingBox");d(this,"_fragmentClassifier");d(this,"_fragmentManager");d(this,"_ifcSelection");d(this,"_indexMap");d(this,"_model");d(this,"_source");this._source=e,this._components=new _.Components,this._components.ui.enabled=!1,this._components.scene=new _.SimpleScene(this._components),this._components.renderer=new _.SimpleRenderer(this._components,document.createElement("div")),this._components.camera=new _.SimpleCamera(this._components),this._components.raycaster=new _.SimpleRaycaster(this._components),this._components.init(),this._ifcSelection={bbox:{},selection:{}},this._indexMap={},this._classificationCache=null,this._fragmentBoundingBox=null}clearHighlight(e="selection"){for(const n of Object.keys(this._ifcSelection[e])){const o=this._fragmentManager.list[n],s=o==null?void 0:o.fragments[e];s!=null&&s.mesh.removeFromParent()}this.notifyChange(this),this._ifcSelection[e]={}}getBoundingBoxById(e){this.clearHighlight("bbox"),this.highlightById(e,"bbox");const n=this._fragmentBoundingBox;if(n===null)throw new Error("Must call initClassification before getBoundingBoxById");const o=this._fragmentManager;n.reset();const s=this._ifcSelection.bbox;if(!Object.keys(s).length)return;for(const p of Object.keys(s)){const g=o.list[p].fragments.bbox;n.addMesh(g.mesh)}const a=n.get(),{y:u,z:h}=a.min,{y:m,z:l}=a.max;return a.min.y=-l,a.max.y=-h,a.min.z=u,a.max.z=m,a.translate(this._model.position),this.clearHighlight("bbox"),a}getClassification(){if(this._classificationCache===null)throw new Error("Must call initClassification before getClassification");return this._classificationCache}getProperties(e){const n=[],o=this._model.properties;if(!o)return[];for(const s of this._indexMap[e]){const a=o[s];if(a==null)continue;const{name:u}=_.IfcPropertiesUtils.getEntityName(o,s);if(u!==null){if(a.type===U){const h=_.IfcPropertiesUtils.getPsetProps(o,s);if(h!==null)for(const m of h){if(o[m]==null)continue;const p=this.getProperty(m);p!==null&&n.push({parentName:u,...p})}}else if(a.type===q){const h=_.IfcPropertiesUtils.getQsetQuantities(o,s);if(h!==null)for(const m of h){const{key:l}=_.IfcPropertiesUtils.getQuantityValue(o,m);if(l===null)continue;const p=this.getProperty(m);p!==null&&n.push({parentName:u,...p})}}}}return n}getProperty(e){const n=this._model.properties;if(n===void 0)return null;const{name:o}=_.IfcPropertiesUtils.getEntityName(n,e);if(o===null)return null;const{value:s}=_.IfcPropertiesUtils.getQuantityValue(n,e);return{name:o,value:s}}highlight(e,n,o){this._ifcSelection[e][n.uuid]=new Set;const s=parseInt(o,10);this._ifcSelection[e][n.uuid].add(o),this.addComposites(e,n,s),this.regenerate(e,n.uuid);const a=n.fragment.group;if(a){const u=a.data[s][0];for(let h=0;h<u.length;h++){const m=u[h],l=a.keyFragments[m],p=this._fragmentManager.list[l];l in this._ifcSelection[e]||(this._ifcSelection[e][l]=new Set),this._ifcSelection[e][l].add(o),this.addComposites(e,p.mesh,s),this.regenerate(e,l)}}this.notifyChange(this)}highlightById(e,n="selection"){for(const o of Object.keys(e)){o in this._ifcSelection[n]||(this._ifcSelection[n][o]=new Set);const s=this._fragmentManager.list[o],a=new Set;for(const u of e[o])this._ifcSelection[n][o].add(u),a.add(parseInt(u,10));for(const u of a)this.addComposites(n,s.mesh,u);this.regenerate(n,o)}this.notifyChange(this)}pick(e,n){return super.pick(e,n).map(o=>({...o,entity:this,features:o.features,isIFCPickResult:!0,object:o.object}))}pickFeaturesFrom(e){var o,s,a;const n=e.object;if(n.fragment!=null&&e.instanceId!=null&&e.face){const u=n.fragment.getVertexBlockID(n.geometry,e.face.a),h=(o=n.fragment.getItemID(e.instanceId,u))==null?void 0:o.replace(/\..*/,"");if(h&&((a=(s=n.fragment.group)==null?void 0:s.properties)==null?void 0:a[h])!=null){const l=n.fragment.group.properties[h],f=[{ifcProperties:this.getProperties(h),itemProperties:l}];return e.features=f,f}}return[]}async initClassification(){this._classificationCache=await this.regenerateClassification(["storeys","entities"]),this._classificationCache.length===0&&(this._classificationCache=await this.regenerateClassification(["entities"])),this._fragmentBoundingBox=await this._components.tools.get(_.FragmentBoundingBox)}async preprocess(){const e=await c.Fetcher.fetchArrayBuffer(this._source.url);this._fragmentManager=await this._components.tools.get(_.FragmentManager),this._fragmentClassifier=await this._components.tools.get(_.FragmentClassifier);const n=new _.FragmentIfcLoader(this._components);n.settings.webIfc.COORDINATE_TO_ORIGIN=!0,n.settings.webIfc.OPTIMIZE_PROFILES=!0;const o=new Uint8Array(e);this._model=await n.load(o,this._source.name),this._model.rotateX(Math.PI/2);const s=new c.Vector3;if(this._source.at)this._source.at.toVector3(s),this._model.position.copy(s);else{const u=this._model.coordinationMatrix.clone().invert();s.applyMatrix4(u),this._model.position.set(s.x,-s.z,s.y)}this._model.updateWorldMatrix(!0,!0),this._model.updateMatrix(),this._model.updateMatrixWorld(!0),this.initializeEntityIndexes(),this._fragmentClassifier.byStorey(this._model),this._fragmentClassifier.byEntity(this._model),await this.initClassification(),this.object3d.add(this._model),this.onObjectCreated(this._model);const a=c.Fetcher.getContext(this._source.url);c.fillObject3DUserData(this,{filename:a.filename}),this.notifyChange(this.object3d)}addComposites(e,n,o){this.addHighlightToFragment(e,n.fragment);const s=n.fragment.composites[o];if(s)for(let a=1;a<s;a++){const u=_.toCompositeID(o,a);this._ifcSelection[e][n.uuid].add(u)}}addHighlightToFragment(e,n){if(!(e in n.fragments)){const o=n.addFragment(e,[Oe[e]]);n.blocks.count>1&&(o.setInstance(0,{ids:Array.from(n.ids),transform:F}),o.blocks.setVisibility(!1)),this._model.add(o.mesh),o.mesh.renderOrder=30,o.mesh.frustumCulled=!1,o.mesh.name=e,o.mesh.updateMatrixWorld(!0)}}initializeEntityIndexes(){this._indexMap={};const e=this._model.properties;if(e!==void 0)for(const n of qe)_.IfcPropertiesUtils.getRelationMap(e,n,(o,s)=>{const a=e[o];Ue.includes(a.type)||this.setEntityIndex(o);for(const u of s)this.setEntityIndex(u).add(o)})}regenerate(e,n){this.updateFragmentFill(e,n)}async regenerateClassification(e,n={}){const o=this._fragmentClassifier.get(),s=[],a=e[0],u=o[a];if(a==null||u==null)return s;for(const h of Object.keys(u)){const m={...n,[a]:[h]},l=await this._fragmentClassifier.find(m);if(Object.keys(l).length>0){const g=a[0].toUpperCase()+a.slice(1),y=await this.regenerateClassification(e.slice(1),m);s.push({children:y,fragments:l,name:h,treeItemName:g})}}return s}setEntityIndex(e){return e in this._indexMap||(this._indexMap[e]=new Set),this._indexMap[e]}updateFragmentFill(e,n){const o=this._ifcSelection[e][n],s=this._fragmentManager.list[n];if(s==null)return;const a=s.fragments[e];if(a==null)return;const u=s.mesh.parent;if(u==null)return;if(u.add(a.mesh),a.blocks.count>1)s.getInstance(0,F),a.setInstance(0,{ids:Array.from(s.ids),transform:F}),a.blocks.setVisibility(!0,o,!0);else{let m=0;for(const l of o){a.mesh.count=m+1;const{instanceID:p}=s.getInstanceAndBlockID(l);s.getInstance(p,F),a.setInstance(m,{ids:[l],transform:F}),m++}}}};d(B,"isIFCEntity",e=>c.isObject(e)&&e.isIfcEntity),d(B,"isIFCPickResult",e=>c.isObject(e)&&B.isIFCEntity(e.entity));let O=B;class Ge extends Q{constructor(t,e,n){super(t,e,n,{visibility:!0})}}const Ye={class:"d-flex"},We=["title"],Ze=["id"],Je={class:"list-unstyled border-start"},Qe=i.defineComponent({__name:"IfcSubtree",props:{classificationElement:{},ifcEntity:{}},setup(r){const t=r,e=c.MathUtils.generateUUID(),n=`#${e}`,o=i.ref(!1),s=c.useCameraStore(),u=c.useModuleStore().getModule(c.moduleId);function h(){if(u==null){console.warn("Cannot clip IFC element, ClippingBoxAnalysis module is not present");return}const p=t.ifcEntity.getBoundingBoxById(t.classificationElement.fragments);p&&!p.isEmpty()&&u.setClippingBox(p)}function m(){o.value=!0,t.ifcEntity.clearHighlight(),t.ifcEntity.highlightById(t.classificationElement.fragments),setTimeout(()=>o.value=!1,2e3)}function l(){const p=t.ifcEntity.getBoundingBoxById(t.classificationElement.fragments);p&&!p.isEmpty()&&s.lookTopDownAt(p)}return(p,f)=>{const g=i.resolveComponent("IfcSubtree",!0);return i.openBlock(),i.createElementBlock("div",null,[i.createElementVNode("div",Ye,[i.createElementVNode("span",{class:i.normalizeClass(["border rounded px-1 py-0 fw-normal",o.value?"text-danger border-danger":"text-secondary border-secondary"]),title:p.classificationElement.treeItemName},i.toDisplayString(p.classificationElement.treeItemName),11,We),p.classificationElement.children.length>0?(i.openBlock(),i.createBlock(c.IconList,{key:0},{default:i.withCtx(()=>[i.createVNode(c.IconListButton,{title:"Expand group",icon:"bi-chevron-down","data-bs-toggle":"collapse","data-bs-target":n,"aria-controls":i.unref(e),"aria-expanded":"true"},null,8,["aria-controls"])]),_:1})):i.createCommentVNode("",!0),i.createVNode(c._sfc_main$3,{class:i.normalizeClass(["label",o.value?"text-danger-emphasis":"text-muted"]),text:p.classificationElement.name,title:`Zoom to ${p.classificationElement.name}`,onClick:l},null,8,["class","text","title"]),i.createVNode(c.IconList,{class:"ms-1"},{default:i.withCtx(()=>[i.createVNode(c.IconListButton,{title:"Highlight",icon:"bi-highlighter",onClick:m}),i.unref(u)!=null?(i.openBlock(),i.createBlock(c.IconListButton,{key:0,title:"Clip to",icon:"bi-bounding-box",onClick:h})):i.createCommentVNode("",!0)]),_:1})]),p.classificationElement.children.length>0?(i.openBlock(),i.createElementBlock("div",{key:0,id:i.unref(e),class:"collapse show"},[i.createElementVNode("ul",Je,[(i.openBlock(!0),i.createElementBlock(i.Fragment,null,i.renderList(p.classificationElement.children,(y,C)=>(i.openBlock(),i.createElementBlock("li",{key:C},[i.createVNode(g,{"ifc-entity":t.ifcEntity,"classification-element":y},null,8,["ifc-entity","classification-element"])]))),128))])],8,Ze)):i.createCommentVNode("",!0)])}}}),Xe=c._export_sfc(Qe,[["__scopeId","data-v-804ca598"]]),Ke={key:0},et=i.defineComponent({__name:"IfcPropertyView",props:{dataset:{}},setup(r){const t=c.useDatasetStore(),e=r,n=c.refAndWatch(e.dataset,"isPreloaded");function o(){const a=s();return a==null?null:a.getClassification()}function s(){const a=t.getEntity(e.dataset);return a??null}return(a,u)=>i.unref(n)?(i.openBlock(),i.createElementBlock("div",Ke,[i.createElementVNode("ul",null,[(i.openBlock(!0),i.createElementBlock(i.Fragment,null,i.renderList(o(),(h,m)=>(i.openBlock(),i.createElementBlock("li",{key:m},[i.createVNode(Xe,{"ifc-entity":s(),"classification-element":h},null,8,["ifc-entity","classification-element"])]))),128))])])):i.createCommentVNode("",!0)}}),tt=c._export_sfc(et,[["__scopeId","data-v-d2d82ae7"]]),nt=r=>{if(G(r)){const t=r.object;if(t.fragment!=null&&r.face&&r.instanceId!=null){const e=t.fragment.getVertexBlockID(t.geometry,r.face.a),n=t.fragment.getItemID(r.instanceId,e).replace(/\..*/,"");return r.entity.highlight("selection",t,n),()=>r.entity.clearHighlight()}}return null},ot=r=>({name:r.filename,source:{url:r.file},type:"ifc",visible:!0}),st=(r,t)=>{var h,m,l,p,f,g,y,C,v;if(!G(r))return;const e=(h=r.features)==null?void 0:h.at(0);if(!e)return;t.has("IFC")||t.set("IFC",[]);const n=t.get("IFC"),{ifcProperties:o,itemProperties:s}=e,a="NULL",u=((m=s.Name)==null?void 0:m.value)??a;n.push({key:"Site",value:((p=(l=r.entity.object3d.userData)==null?void 0:l.dataset)==null?void 0:p.name)??a}),n.push({key:"IFCType",value:_.IfcCategoryMap[s.type]??a}),n.push({key:"Name",value:u}),n.push({key:"ID",value:s.expressID}),n.push({key:"GlobalId",value:((f=s.GlobalId)==null?void 0:f.value)??a}),((g=s.Description)==null?void 0:g.value)!=null&&n.push({key:"Description",value:s.Description.value}),((y=s.PredefinedType)==null?void 0:y.value)!=null&&n.push({key:"PredefinedType",value:s.PredefinedType.value}),((C=s.ObjectType)==null?void 0:C.value)!=null&&n.push({key:"ObjectType",value:s.ObjectType.value});for(const{name:b,parentName:E,value:x}of o)t.has(E)||t.set(E,[]),(v=t.get(E))==null||v.push({key:b,value:x})},it=r=>{const t=r.dataset,e=t.config,n=c.getCoordinates(e.source.position??t.get("position")),o=new O({...e.source,at:n,name:t.name});return Promise.resolve(o)};class at{constructor(){d(this,"id","builtin-ifc-loader");d(this,"name","IFC")}async initialize(t){t.datasets.registerDatasetType("ifc",{attributeExtractor:st,entityBuilder:it,fileExtensions:["ifc"],highlight:nt,icon:"bi-building",loader:ot,name:"IFC",propertyView:tt}),J.registerInspector("IfcEntity",Ge),await c.Fetcher.fetch("web-ifc.wasm").catch(e=>{console.warn("Could not load web-ifc.wasm",e)})}}const rt=i.defineComponent({__name:"OpenLayersMinimapComponent",props:{context:{}},setup(r){const t=i.ref(),e=i.shallowRef(),n=r,o=[[3e4,12],[5e4,10],[1e5,8],[4e5,6],[8e5,4]];function s(a){for(const[u,h]of o)if(a<u)return h;return o[o.length-1][1]}return i.onMounted(()=>{e.value=new z.Map({controls:[],layers:[new X({source:new K.OSM})],target:t.value,view:new z.View({center:j.fromLonLat([4,44]),projection:"EPSG:3857",zoom:5})});let a=new c.Vector3;const u=()=>{var g;const m=n.context.view.getInstance(),p=n.context.view.getCameraController().getCameraPosition(),f=p.camera.z;if(!p.camera.equals(a)){a=p.camera.clone();const y=new T(m.referenceCrs,a.x,a.y).as("EPSG:4326"),C=s(f),v=(g=e.value)==null?void 0:g.getView();v==null||v.setCenter(j.fromLonLat([y.longitude,y.latitude])),v==null||v.setZoom(C)}};n.context.events.addEventListener("updated",u);let h=!1;t.value&&(t.value.onclick=()=>{var m,l,p,f;h=!h,h?((m=t.value)==null||m.classList.add("collapsed"),(l=t.value)==null||l.classList.remove("expanded")):((p=t.value)==null||p.classList.remove("collapsed"),(f=t.value)==null||f.classList.add("expanded"))})}),i.onUnmounted(()=>{var a;(a=e.value)==null||a.dispose(),e.value=void 0}),(a,u)=>(i.openBlock(),i.createElementBlock("div",{ref_key:"target",ref:t,title:"Toggle minimap",class:"minimap expanded"},null,512))}}),lt=c._export_sfc(rt,[["__scopeId","data-v-38ee3c04"]]);class ct{constructor(){d(this,"id","builtin-minimap-openlayers");d(this,"name","Minimap")}initialize(t){t.widgets.addWidget({component:lt,id:"minimap-ol"})}}const N=class N extends c.Mesh{constructor(){super(...arguments);d(this,"isPickableFeatures",!0);d(this,"isPlyMesh",!0)}pickFeaturesFrom(e){if(this.geometry.hasAttribute("color")&&e.face){const n=this.geometry.getAttribute("color").array,o=e.face,a=[{color:new c.Color(n[o.a*3],n[o.a*3+1],n[o.a*3+2])}];return e.features=a,a}return[]}};d(N,"isPlyMesh",e=>c.isObject(e)&&e.isPlyMesh),d(N,"isPlyPickResult",e=>c.isObject(e)&&N.isPlyMesh(e==null?void 0:e.object));let M=N;class ut extends L{constructor(e){super(new c.Group);d(this,"isPlyEntity",!0);d(this,"source");this.source=e}async preprocess(){const e=await c.Fetcher.fetchArrayBuffer(this.source.url),n=this.source.at.as(this.source.featureProjection).toVector3(),s=new c.PLYLoader().parse(e),a=new c.MeshLambertMaterial({side:c.DoubleSide});s.hasAttribute("color")&&(a.vertexColors=!0),s.computeVertexNormals();const u=new M(s,a);u.name="plyModel",s.computeBoundingBox(),u.position.copy(n),u.updateWorldMatrix(!0,!0),this.object3d.add(u),this.onObjectCreated(u);const h=c.Fetcher.getContext(this.source.url);c.fillObject3DUserData(this,{filename:h.filename}),this.notifyChange(this.object3d)}}const dt=r=>{const{dataset:t,instance:e}=r,n=t.config,o=c.getCoordinates(n.source.position??t.get("position")),s=new ut({...n.source,at:o,featureProjection:e.referenceCrs});return Promise.resolve(s)},pt=(r,t)=>{var o;if(!M.isPlyPickResult(r))return;const e=(o=r.features)==null?void 0:o.at(0);if(!e)return;t.has("PLY")||t.set("PLY",[]),t.get("PLY").push({key:"Color",value:e.color})};class ht{constructor(){d(this,"id","builtin-ply-loader");d(this,"name","PLY")}initialize(t){t.datasets.registerDatasetType("ply",{attributeExtractor:pt,entityBuilder:dt,icon:"bi-file-earmark-binary",name:"PLY"})}}const mt=r=>{r.addEventListener("object-created",t=>{t.obj.traverse(n=>{var o;((o=n.userData)==null?void 0:o.class)==="IfcSpace"&&(n.visible=!1)})})};class ft{constructor(){d(this,"id","builtin-post-process-entities");d(this,"name","Post-process 3D Tiles");d(this,"_alreadyProcessedEntities",new Set);d(this,"_processings",[mt])}initialize(t){t.events.addEventListener("ready",()=>{const e=t.view.getInstance();e.addEventListener("entity-added",()=>this.processEntities(e)),this.processEntities(e)})}processEntities(t){for(const e of t.getEntities())this._alreadyProcessedEntities.has(e.id)||(L.isEntity3D(e)&&this.processEntity(e,t),this._alreadyProcessedEntities.add(e.id))}processEntity(t,e){const n={instance:e};for(const o of this._processings)o(t,n)}}const gt=r=>{const t=r.dataset.config,e=new ee({source:new te({url:`${t.source.url}/${t.source.filename}`})});return c.fillObject3DUserData(e,{filename:t.source.url}),Promise.resolve(e)};class yt{constructor(){d(this,"id","builtin-potree-loader");d(this,"name","Potree")}initialize(t){t.datasets.registerDatasetType("potree",{entityBuilder:gt,icon:"fg-multipoint",name:"Potree Point Cloud"})}}class bt{constructor(){d(this,"id","builtin-tour");d(this,"name","Tour");d(this,"_camera",null);d(this,"_cameraCallback",null);d(this,"_context",null);d(this,"_tours",null)}initialize(t){this._context=t,t.events.addEventListener("ready",this.start.bind(this))}buildTours(){const t=this._camera,e=new w.Tour({tourName:"main",useModalOverlay:!0}),n=new w.Tour({tourName:"navigating",useModalOverlay:!0}),o=new w.Tour({tourName:"analyzing",useModalOverlay:!0}),s=[{action:()=>{var l;return(l=w.activeTour)==null?void 0:l.next()},text:"Next"},{action:()=>{var l;return(l=w.activeTour)==null?void 0:l.cancel()},secondary:!0,text:"Exit"}],a=()=>{var v,b;const l=(v=w.activeTour)==null?void 0:v.getCurrentStep(),p=l==null?void 0:l.getElement(),f=p==null?void 0:p.querySelector(".shepherd-text"),g=(b=w.activeTour)==null?void 0:b.steps;if(l==null||p==null||f==null||g==null)return;const y=document.createElement("div");y.className="progress mt-3",y.setAttribute("role","progressbar"),y.style.height="2px";const C=document.createElement("div");C.className="progress-bar bg-success",C.style.width=`${100*(g.indexOf(l)/g.length)}%`,y.appendChild(C),f.appendChild(y)},u=async(l,p)=>new Promise(f=>{const g=document.getElementById(l);if(g&&!g.classList.contains("active")&&g.click(),document.querySelector(p))return f(document.querySelector(p));const y=new MutationObserver(()=>{document.querySelector(p)&&(y.disconnect(),f(document.querySelector(p)))});y.observe(document.body,{childList:!0,subtree:!0})});e.addStep({buttons:[{action:()=>{var l;(l=w.activeTour)==null||l.complete(),n.show(0)},text:"Navigating"},{action:()=>{var l;(l=w.activeTour)==null||l.complete(),o.show(0)},text:"Analyzing data"},{action:()=>{var l;return(l=w.activeTour)==null?void 0:l.cancel()},secondary:!0,text:"Exit"}],cancelIcon:{enabled:!0,label:"Exit tutorial"},id:"example-step",text:"<p>Welcome to <strong>Piero</strong>, the Giro3D application.<br/>We can guide you through the different features.</p>",title:"Welcome!",when:{show:a}}),n.addStep({attachTo:{element:"#main-view",on:"bottom"},buttons:s,id:"view",text:"<p>This is the <b>main view</b>.</p><p>Giro3D natively supports a broad range of data sources, from 2D raster and vector data, to 3D point clouds and tilesets.</p><p>Piero adds support for CityJSON and IFC files.</p>",when:{show:a}}),n.addStep({attachTo:{element:"#main-view",on:"bottom"},buttons:s,id:"navigate",text:'<p>This application integrates <a href="https://github.com/yomotsu/camera-controls">camera-controls</a>, a camera control for three.js.</p><p><b>Click</b> to move the camera. <b>Right-click</b> to rotate around a point. <b>Scroll</b> to zoom in or out.</p>',when:{hide:()=>{this._cameraCallback&&t.removeEventListener("interaction-end",this._cameraCallback),this._cameraCallback=null},show:()=>{let l=0;this._cameraCallback=()=>{var p;l+=1,l>2&&((p=w.activeTour)==null||p.next())},t.addEventListener("interaction-end",this._cameraCallback),a()}}}),n.addStep({attachTo:{element:"#toolbar",on:"right"},beforeShowPromise:()=>u("toolbar-datasets","#datasets-drop-zone"),buttons:s,id:"toolbar-layers",text:"<p>Giro3D supports multiple datasets.</p><p>You can toggle datasets as you wish with the <b>Datasets</b> panel.</p>",when:{show:a}}),n.addStep({attachTo:{element:"#basemap-list",on:"right"},beforeShowPromise:()=>u("toolbar-datasets","#datasets-drop-zone"),buttons:s,id:"basemaps",text:"<p><b>Basemaps</b> are color and elevation layers that make the basic shape and aspect of the <b>Map</b>.</p>",when:{show:a}}),n.addStep({attachTo:{element:"#overlay-list",on:"right"},beforeShowPromise:()=>u("toolbar-datasets","#datasets-drop-zone"),buttons:s,id:"overlays",text:"<p><b>Overlays</b> are vector layers in various formats (WFS, GML, GeoJSON...).</p>",when:{show:a}}),n.addStep({attachTo:{element:"#dataset-list",on:"right"},beforeShowPromise:()=>u("toolbar-datasets","#datasets-drop-zone"),buttons:s,id:"layers",text:"<p>The <b>Datasets</b> panel contains all 3D objects in the scene.</><p>You can toggle their visibility and delete them.<p><p>Most objects leverage Giro3D's adaptive resolution to optimize their display.</p>",when:{show:a}}),n.addStep({attachTo:{element:"#datasets-drop-zone",on:"right"},beforeShowPromise:()=>u("toolbar-datasets","#datasets-drop-zone"),buttons:s,id:"adddata",text:"<p>You can add your own data from your computer by <b>dragging the file</b> into this page.</p><p>While you won't benefit from Giro3D's tiling mechanism, this can be a great way to quickly visualize datasets up to 100MB.</p><p>This application supports CityJSONs, IFCs, LAS/LAZs, CSV pointclouds, and simple GeoJSON features.</p>",when:{show:a}}),n.addStep({attachTo:{element:"#main-view",on:"bottom"},buttons:s,id:"attributes",text:"<p>By clicking on any feature on the map, you can see its <strong>Attribute table</strong>. Clickable features display a cursor when hovered.</p>",when:{show:a}}),n.addStep({attachTo:{element:"#search-place-autocomplete",on:"bottom"},buttons:[{action:()=>{var l;(l=w.activeTour)==null||l.complete(),o.show(0)},text:"Analyzing data"},{action:()=>{var l;return(l=w.activeTour)==null?void 0:l.complete()},secondary:!0,text:"Exit"}],id:"widgets",text:"Giro3D is highly extensible. Here we added a widget to search and navigate to locations based on the French address database.",when:{show:a}}),o.addStep({attachTo:{element:"#annotations-fieldset",on:"right"},beforeShowPromise:()=>u("toolbar-annotations","#annotations-fieldset"),buttons:s,id:"annotation",text:"<p>You can <strong>annotate</strong> any data displayed using Giro3D native tools.<br>Select the <strong>geometry</strong> of your annotation, and <strong>click</strong> on the scene to add points. <strong>Right-click</strong> to end the shape.</p>",when:{show:a}}),o.addStep({attachTo:{element:"#annotations-fieldset",on:"right"},beforeShowPromise:()=>u("toolbar-annotations","#annotations-fieldset"),buttons:s,id:"annotations",text:"You can download your annotations as GeoJSON files. You can also upload your own by dragging them into this panel.",when:{show:a}}),c.hasExperimentalFeature("measurements")&&o.addStep({attachTo:{element:"#panel-container",on:"right"},beforeShowPromise:()=>u("toolbar-measures","#measures-fieldset"),buttons:s,id:"measurements",text:"You can add <strong>measurements</strong> to easily get distances betwween objects.<br>Once started, moving the mouse will display the measure. <strong>Click</strong> to save the measurement. <strong>Right-click</strong> to end.",when:{show:a}}),o.addStep({attachTo:{element:"#panel-container",on:"right"},beforeShowPromise:()=>u("toolbar-analysis","#panel-container .card"),buttons:[{action:()=>{var l;return(l=w.activeTour)==null?void 0:l.complete()},text:"Done!"}],id:"analysis",text:"In the <strong>Analysis</strong> panel you'll find some advanced analysis tools.",when:{show:a}});const h=()=>{const l=new URL(document.URL);l.searchParams.delete("tourStep"),l.searchParams.set("tour","none"),window.history.replaceState({},"",l.toString())},m=l=>{const p=new URL(document.URL);let f="main";l.tour.id.startsWith("navigating")?f="navigating":l.tour.id.startsWith("analyzing")&&(f="analyzing"),p.searchParams.set("tour",f),p.searchParams.set("tourStep",l.step.id),window.history.replaceState({},"",p.toString())};return e.on("cancel",h),e.on("complete",h),e.on("show",m),n.on("cancel",h),n.on("complete",h),n.on("show",m),o.on("cancel",h),o.on("complete",h),o.on("show",m),{analyzingTour:o,mainTour:e,navigatingTour:n}}getTours(){return this._tours||(this._tours=this.buildTours()),this._tours}restart(){const{mainTour:t}=this.getTours();t.show(0)}start(){if(!this._context)throw new Error("module is not initialized");const{analyzingTour:t,mainTour:e,navigatingTour:n}=this.getTours();this._camera=this._context.view.getCameraController();const o=new URL(document.URL),s=o.searchParams.get("tour")??"main";if(s!=="none"){const a=o.searchParams.get("tourStep")??0;s==="navigating"?n.show(a):s==="analyzing"?t.show(a):e.show(a)}}}exports.ClippingBoxAnalysis=c.ClippingBoxAnalysis;exports.CoordinatesSearch=Te;exports.CrossSectionAnalysis=be;exports.DownloadDataset=ve;exports.FloodingPlaneAnalysis=Fe;exports.FrenchBanGeocoder=De;exports.IFCLoader=at;exports.OpenLayersMinimap=ct;exports.PLYLoader=ht;exports.PostProcessEntities=ft;exports.PotreeLoader=yt;exports.Tour=bt;
|
|
1
|
+
"use strict";var Oe=Object.defineProperty;var je=(o,e,t)=>e in o?Oe(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var u=(o,e,t)=>je(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./userData.cjs.js"),a=require("vue"),I=require("@giro3d/giro3d/core/geographic/Coordinates"),K=require("pinia"),G=require("@giro3d/giro3d/entities/Entity3D"),Ve=require("@giro3d/giro3d/core/geographic/Extent"),$e=require("@giro3d/giro3d/entities/FeatureCollection"),ze=require("ol/format"),Ae=require("ol/loadingstrategy.js"),Ge=require("ol/source/Vector"),Ue=require("ol/tilegrid.js"),T=require("@giro3d/giro3d/core/layer/ColorLayer"),U=require("@giro3d/giro3d/sources/VectorSource"),qe=require("ol/format/GeoJSON"),V=require("ol/render/canvas/style"),q=require("@giro3d/giro3d/core/layer/ElevationLayer"),Re=require("@giro3d/giro3d/sources/GeoTIFFSource"),He=require("ol/format/GPX"),$=require("ol/style"),We=require("@giro3d/giro3d/gui/EntityPanel"),v=require("openbim-components"),Ye=require("@giro3d/giro3d/gui/EntityInspector"),Je=require("ol/format/KML"),R=require("@giro3d/giro3d/entities/PointCloud"),Ze=require("@giro3d/giro3d/sources/COPCSource"),Xe=require("@giro3d/giro3d/sources/LASSource"),_=require("zod"),Ke=require("@giro3d/giro3d/formats/MapboxTerrainFormat"),H=require("@giro3d/giro3d/sources/TiledImageSource"),O=require("ol/source"),Qe=require("@giro3d/giro3d/sources/PotreeSource"),et=require("@giro3d/giro3d/entities/Tiles3D"),tt=require("@giro3d/giro3d/sources/WmsSource"),nt=require("@giro3d/giro3d/formats/BilFormat"),ot=require("@giro3d/giro3d/sources/WmtsSource"),J=require("ol"),st=require("ol/layer/Tile"),Z=require("ol/proj"),x=require("shepherd.js"),Q=require("@giro3d/giro3d/utils/Fetcher"),it={class:"input-group"},at={class:"form-label"},rt={class:"input-group"},lt=["value"],ct=["value"],ut=["value"],dt=a.defineComponent({__name:"CoordinateInput",props:{cursorManager:{},initialValue:{},instance:{},label:{},showZ:{type:Boolean}},emits:["update:coordinates"],setup(o,{emit:e}){var g,S,C;const t=o,n=a.ref(((g=t.initialValue)==null?void 0:g.x)??0),s=a.ref(((S=t.initialValue)==null?void 0:S.y)??0),i=a.ref(((C=t.initialValue)==null?void 0:C.z)??0),r=e,c=new l.Picker,p=a.ref(!1),f=()=>{r("update:coordinates",new I(l.nonNull(t.instance).referenceCrs,n.value,s.value,i.value))},d=()=>{const b=l.nonNull(t.instance);p.value=!0;const E=j=>{var k,F,D,Y;const P=(F=(k=c.getFirstFeatureAt(b,j))==null?void 0:k.at(0))==null?void 0:F.point;P&&(n.value=P.x,s.value=P.y,i.value=P.z,(D=t.cursorManager)==null||D.setCursor("location"),(Y=t.cursorManager)==null||Y.setCursorLocation(P))},w=j=>{var k,F,D;(k=t.cursorManager)==null||k.setCursor(null),b.domElement.removeEventListener("click",w),b.domElement.removeEventListener("mousemove",E),p.value=!1;const P=(D=(F=c.getFirstFeatureAt(b,j))==null?void 0:F.at(0))==null?void 0:D.point;P&&(n.value=P.x,s.value=P.y,i.value=P.z,f())};b.domElement.addEventListener("mousemove",E),b.domElement.addEventListener("click",w)};function m(b){n.value=b,f()}function h(b){s.value=b,f()}function y(b){i.value=b,f()}return(b,E)=>(a.openBlock(),a.createElementBlock("div",it,[a.createElementVNode("label",at,a.toDisplayString(t.label),1),a.createElementVNode("div",rt,[a.createElementVNode("input",{type:"number",class:"form-control",id:"plane-center-x",value:n.value.toFixed(2),onInput:E[0]||(E[0]=w=>m(Number.parseFloat(w.target.value)))},null,40,lt),a.createElementVNode("input",{type:"number",class:"form-control",id:"plane-center-y",value:s.value.toFixed(2),onInput:E[1]||(E[1]=w=>h(Number.parseFloat(w.target.value)))},null,40,ct),t.showZ===!0?(a.openBlock(),a.createElementBlock("input",{key:0,type:"number",class:"form-control",id:"plane-center-z",value:i.value.toFixed(2),onInput:E[2]||(E[2]=w=>y(Number.parseFloat(w.target.value)))},null,40,ut)):a.createCommentVNode("",!0),t.instance!=null?(a.openBlock(),a.createBlock(l._sfc_main$1,{key:1,title:"Pick point in scene",icon:"fg-location",disabled:p.value,onClick:d,class:"btn-primary"},null,8,["disabled"])):a.createCommentVNode("",!0)])]))}}),ee=K.defineStore("crossSection",()=>{const o=a.ref(0),e=a.shallowRef(),t=a.shallowRef(),n=a.ref(new l.Vector3(0,0,0)),s=a.ref(!1),i=a.ref(!1);function r(h){s.value=h}function c(h){o.value=h}function p(h){n.value=h}function f(h){i.value=h}function d(h){e.value=h}function m(h){t.value=h}return{center:n,cursorManager:t,enable:s,instance:e,orientation:o,setCenter:p,setCursorManager:m,setEnabled:r,setInstance:d,setOrientation:c,setShowHelper:f,showHelper:i}}),pt={class:"input-group"},mt={class:"input-group"},ft={class:"input-group my-3"},ht=["value"],gt={class:"input-group mb-3"},yt=["value"],bt=a.defineComponent({__name:"CrossSection",setup(o){const e=ee();function t(s){e.setOrientation(s)}const n=s=>{e.setCenter(s.toVector3())};return(s,i)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("div",pt,[a.createVNode(l._sfc_main,{"model-value":a.unref(e).enable,"onUpdate:modelValue":i[0]||(i[0]=r=>a.unref(e).setEnabled(r)),id:"cross-section-enable",title:"Enable cross-section"},null,8,["model-value"]),i[4]||(i[4]=a.createElementVNode("label",{for:"cross-section-enable",class:"form-check-label"},"Enable cross section",-1))]),a.createElementVNode("div",mt,[a.createVNode(l._sfc_main,{"model-value":a.unref(e).showHelper,"onUpdate:modelValue":i[1]||(i[1]=r=>a.unref(e).setShowHelper(r)),id:"cross-section-helper-enable",title:"Show plane helper"},null,8,["model-value"]),i[5]||(i[5]=a.createElementVNode("label",{for:"cross-section-helper-enable",class:"form-check-label"},"Show plane helper",-1))]),a.createElementVNode("div",ft,[i[6]||(i[6]=a.createElementVNode("label",{for:"plane-orientation-range",class:"form-check-label"},"Plane orientation (0-360°)",-1)),a.createElementVNode("input",{id:"plane-orientation-range",title:"Altitude",type:"range",class:"form-range",min:"0",step:"0.1",max:"360",value:a.unref(e).orientation,onInput:i[2]||(i[2]=r=>t(Number.parseFloat(r.target.value)))},null,40,ht)]),a.createElementVNode("div",gt,[a.createElementVNode("input",{type:"number",class:"form-control",id:"plane-orientation-number",step:"0.1",value:a.unref(e).orientation,onInput:i[3]||(i[3]=r=>t(Number.parseFloat(r.target.value)))},null,40,yt)]),i[7]||(i[7]=a.createElementVNode("hr",null,null,-1)),a.unref(e).instance!=null?(a.openBlock(),a.createBlock(dt,{key:0,label:"Center","initial-value":a.unref(e).center,instance:a.unref(e).instance,"cursor-manager":a.unref(e).cursorManager,"onUpdate:coordinates":n},null,8,["initial-value","instance","cursor-manager"])):a.createCommentVNode("",!0)],64))}});class vt extends l.Object3D{constructor(){super();const e=new l.Mesh(new l.PlaneGeometry(50,100,1,10),new l.MeshBasicMaterial({color:"#6bf904",depthTest:!1,depthWrite:!1,wireframe:!0})),t=new l.ArrowHelper(new l.Vector3(0,1,0),new l.Vector3(0,0,0),200);e.renderOrder=999,e.rotateY(Math.PI/2),this.add(e),this.add(t),this.updateMatrixWorld(!0)}}class wt{constructor(e){u(this,"_clippingPlanes",null);u(this,"_helper");u(this,"_instance");u(this,"_store",ee());this.context=e,e.events.addEventListener("ready",()=>{this._instance=e.view.getInstance();const t=this._instance.referenceCrs;this._store.setCursorManager(e.view.getSceneCursorManager()),this._store.setInstance(e.view.getInstance());const n=this._store.center,s=new I(t,n.x,n.y,0);this._store.setCenter(s.toVector3()),this._instance.addEventListener("entity-added",this.updateCrossSection.bind(this)),this._store.$onAction(({after:i,name:r})=>{i(()=>{switch(r){case"setCenter":case"setEnabled":case"setOrientation":case"setShowHelper":this.updateCrossSection(),this.updateHelper(),this.showHelper(this._store.showHelper);break}})}),this.updateCrossSection(),this.updateHelper(),this.showHelper(this._store.showHelper)})}dispose(){}createHelperIfNecessary(){this._store.showHelper&&this._helper==null&&this._instance&&(this._helper=new vt,this._instance.add(this._helper).catch(console.error))}showHelper(e){this.createHelperIfNecessary(),this._helper&&(this._helper.visible=e),this.updateHelper()}updateCrossSection(){if(this._store.enable){const e=[],t=l.MathUtils.DEG2RAD*this._store.orientation,n=Math.cos(t),s=Math.sin(t),i=new l.Vector3(n,s,0),r=new l.Plane(i,0).distanceToPoint(this._store.center),c=new l.Plane(i,-r);e.push(c),this._clippingPlanes=e}else this._clippingPlanes=null;this.updateEntities()}updateEntities(){const e=this.context.view.getInstance();for(const t of e.getEntities())G.isEntity3D(t)&&(t.clippingPlanes=this._clippingPlanes);e.notifyChange()}updateHelper(){var e,t,n,s;this.createHelperIfNecessary(),(e=this._helper)==null||e.position.copy(this._store.center),(t=this._helper)==null||t.updateMatrixWorld(!0),(n=this._helper)==null||n.setRotationFromAxisAngle(new l.Vector3(0,0,1),l.MathUtils.degToRad(this._store.orientation)),(s=this._instance)==null||s.notifyChange()}}class te{constructor(){u(this,"id","builtin-analysis-cross-section");u(this,"name","Cross section");u(this,"_manager",null)}initialize(e){e.analysis.registerTool({component:bt,icon:"bi-circle-half",name:"Cross section"}),this._manager=new wt(e)}}const ne=K.defineStore("floodingPlane",()=>{const o=a.ref(0),e=a.ref(!1);function t(){return o.value}function n(i){o.value=i}function s(i){e.value=i}return{enable:e,getHeight:t,setEnabled:s,setHeight:n}}),_t={class:"input-group mb-3"},St={class:"input-group mb-3"},Et=["value"],xt={class:"input-group mb-3"},Ct=["value"],Pt=a.defineComponent({__name:"FloodingPlane",setup(o){const e=ne();function t(n){e.setHeight(n)}return(n,s)=>(a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("div",_t,[a.createVNode(l._sfc_main,{"model-value":a.unref(e).enable,"onUpdate:modelValue":s[0]||(s[0]=i=>a.unref(e).setEnabled(i)),id:"flooding-plane-enable",title:"Show flooding plane"},null,8,["model-value"]),s[3]||(s[3]=a.createElementVNode("label",{for:"flooding-plane-enable",class:"form-label"},"Enable flooding plane",-1))]),a.createElementVNode("div",St,[s[5]||(s[5]=a.createElementVNode("label",{for:"flooding-altitude-range",class:"form-label"},"Altitude",-1)),a.createElementVNode("input",{id:"flooding-altitude-range",title:"Altitude",type:"range",class:"form-range",min:"0",step:"0.1",max:"500",value:a.unref(e).getHeight(),onInput:s[1]||(s[1]=i=>t(Number.parseFloat(i.target.value)))},null,40,Et),a.createElementVNode("div",xt,[a.createElementVNode("input",{type:"number",class:"form-control",id:"flooding-altitude-number",step:"0.1",value:a.unref(e).getHeight(),onInput:s[2]||(s[2]=i=>t(Number.parseFloat(i.target.value)))},null,40,Ct),s[4]||(s[4]=a.createElementVNode("span",{class:"input-group-text"},"m",-1))])])],64))}});class Tt{constructor(){u(this,"geometry");u(this,"material");u(this,"object3D");u(this,"_height");this.geometry=new l.PlaneGeometry(1,1,1,1),this.material=new l.MeshBasicMaterial({color:43690,opacity:.5,transparent:!0}),this.object3D=new l.Mesh(this.geometry,this.material),this.object3D.renderOrder=2,this.visible=!1,this._height=0}set height(e){this._height=e}get height(){return this._height}set visible(e){this.object3D.visible=e}get visible(){return this.object3D.visible}dispose(){this.object3D.removeFromParent(),this.geometry.dispose(),this.material.dispose()}setPosition(e,t,n,s,i){this.object3D.scale.set(s,i,1),this.object3D.position.set(e,t,n),this.object3D.updateMatrixWorld()}}class It{constructor(e){u(this,"_context");u(this,"_plane");u(this,"_store",ne());this._context=e,this._plane=null,e.events.addEventListener("ready",()=>{this._store.$onAction(({after:t,name:n})=>{t(()=>{switch(n){case"setEnabled":this.updatePlane();break;case"setHeight":this.updatePlane();break}})})})}dispose(){this._plane&&(this._context.view.getInstance().remove(this._plane.object3D),this._plane.dispose())}async updatePlane(){this._plane||(this._plane=new Tt,await this._context.view.getInstance().add(this._plane.object3D));const e=this._context.view.getBoundingBox(),t=e.getCenter(new l.Vector3),n=e.getSize(new l.Vector3);this._plane.visible=this._store.enable,this._plane.setPosition(t.x,t.y,this._store.getHeight(),n.x,n.y),this._context.view.getInstance().notifyChange()}}class oe{constructor(){u(this,"id","builtin-analysis-flooding-plane");u(this,"name","Flooding plane");u(this,"_manager",null)}initialize(e){e.analysis.registerTool({component:Pt,icon:"bi-layers-half",name:"Flooding plane"}),this._manager=new It(e)}}const se=[l.ClippingBox,te,oe],kt=Object.freeze(Object.defineProperty({__proto__:null,ClippingBox:l.ClippingBox,CrossSection:te,FloodingPlane:oe,all:se},Symbol.toStringTag,{value:"Module"}));class Ft extends $e{constructor(e){const t=e.featureProjection,n="BDTOPO_V3:batiment",s=new Ge({format:new ze.GeoJSON,strategy:Ae.tile(Ue.createXYZ({tileSize:512})),url:function(d){return`${`https://data.geopf.fr/wfs/ows?SERVICE=WFS&VERSION=2.0.0&request=GetFeature&typename=${n}&outputFormat=application/json&SRSNAME=${t}&startIndex=0&bbox=`}${d.join(",")},${t}`}}),i=e.extent??new Ve("EPSG:2154",-111629.52,127502884e-2,597603379e-2,723016164e-2),r=e.extrusionOffset??(f=>{const h=-f.getProperties().hauteur;return Number.isNaN(h)?0:h}),c=e.style??(f=>{const d=f.getProperties();let m="#FFFFFF";switch(d.usage_1){case"Agricole":m="#96ff0d";break;case"Commercial et services":m="#d8ffd4";break;case"Industriel":m="#f0bb41";break;case"Religieux":m="#41b5f0";break;case"Résidentiel":m="#cec8be";break;case"Sportif":m="#ff0d45";break}return{fill:{color:new l.Color(m),shading:!0},stroke:{color:"black",lineWidth:2}}}),p={extent:i,extrusionOffset:r,maxLevel:e.maxLevel??11,minLevel:e.minLevel??11,source:s,style:c};super(p),this.name=n,l.fillObject3DUserData(this,{filename:n})}}const Dt=o=>{const e=new Ft({featureProjection:o.instance.referenceCrs});return Promise.resolve({entities:[e]})};class ie{constructor(){u(this,"id","builtin-loader-bdtopo");u(this,"name","BD TOPO®")}initialize(e){e.datasets.registerDatasetType("bdtopo",{builder:Dt,icon:"bi-buildings",name:"BD TOPO®"})}}function W(o){return Array.isArray(o)?o.length===0?[]:"style"in o[0]?V.rulesToStyleFunction(o):V.flatStylesToStyleFunction(o):V.flatStylesToStyleFunction([o])}const Lt="geojson",Mt=l.Layer.extend({projection:l.CrsName.optional().default("EPSG:4326"),style:l.OpenLayersFlatStyleLike.optional(),url:l.Url}),Nt=o=>{const e=Mt.parse(o.dataset),n={layers:[new T({resolutionFactor:e.resolution,source:new U({data:{format:new qe,url:e.url},dataProjection:e.projection,style:e.style!=null?W(e.style):l.defaultVectorStyle})})]};return Promise.resolve(n)},Bt=o=>{const e={layerType:"color",name:o.filename,projection:"EPSG:4326",resolution:1,type:"geojson",url:typeof o.file=="string"?o.file:URL.createObjectURL(o.file),visible:!0};return Promise.resolve(e)};class ae{constructor(){u(this,"id","builtin-loader-geojson");u(this,"name","GeoJSON")}initialize(e){e.datasets.registerDatasetType(Lt,{builder:Nt,fileExtensions:["geojson","geo.json"],icon:"fg-polygon-pt",loader:Bt,name:"GeoJSON"})}}const Ot=l.Layer.extend({projection:l.CrsName,url:l.Url}),jt=o=>{const e=Ot.parse(o.dataset),t=new Re({crs:e.projection,url:e.url});let n;switch(e.layerType){case"color":n=new T({source:t});break;case"elevation":n=new q({source:t});break;default:throw new Error(`unsupported layer type: ${e.layerType}`)}return Promise.resolve({layers:[n]})};class re{constructor(){u(this,"id","builtin-loader-geotiff");u(this,"name","GeoTIFF")}initialize(e){e.datasets.registerDatasetType("geotiff",{builder:jt,icon:"fg-layer-alt",name:"GeoTIFF"})}}const Vt="gpx",$t=l.Layer.extend({projection:l.CrsName.optional().default("EPSG:3857"),style:l.OpenLayersFlatStyleLike.optional(),url:l.Url}),zt=new $.Style({fill:new $.Fill({color:"rgba(72,147,131, 0.4)"}),stroke:new $.Stroke({color:"rgba(81, 227, 196, 1)",width:2})}),At=o=>{const e=$t.parse(o.dataset),n={layers:[new T({resolutionFactor:e.resolution,source:new U({data:{format:new He,url:e.url},dataProjection:e.projection,style:e.style!=null?W(e.style):zt})})]};return Promise.resolve(n)};class le{constructor(){u(this,"id","builtin-loader-gpx");u(this,"name","GPX")}initialize(e){e.datasets.registerDatasetType(Vt,{builder:At,icon:"fg-polygon-pt",name:"GPX"})}}const L=new l.Matrix4,Gt={bbox:new l.MeshBasicMaterial({color:"#FFFF00",depthTest:!0,opacity:.2,transparent:!0}),selection:new l.MeshBasicMaterial({color:"#FF0000",depthTest:!1,opacity:.6,transparent:!0})},Ut=4186316022,qt=781010003,Rt=2655215786,Ht=3242617779,Wt=919958153,Yt=1307041759,ce=1451395588,ue=1883228015,Jt=[ce,ue],Zt=[Ut,qt,Rt,Ht,Wt,Yt],de=o=>l.isObject(o)&&o.isIFCPickResult,M=class M extends G{constructor(t){super(new l.Group);u(this,"isIfcEntity",!0);u(this,"isPickableFeatures",!0);u(this,"type","IfcEntity");u(this,"_classificationCache");u(this,"_components");u(this,"_fragmentBoundingBox");u(this,"_fragmentClassifier");u(this,"_fragmentManager");u(this,"_ifcSelection");u(this,"_indexMap");u(this,"_model");u(this,"_source");this._source=t,this._components=new v.Components,this._components.ui.enabled=!1,this._components.scene=new v.SimpleScene(this._components),this._components.renderer=new v.SimpleRenderer(this._components,document.createElement("div")),this._components.camera=new v.SimpleCamera(this._components),this._components.raycaster=new v.SimpleRaycaster(this._components),this._components.init(),this._ifcSelection={bbox:{},selection:{}},this._indexMap={},this._classificationCache=null,this._fragmentBoundingBox=null}clearHighlight(t="selection"){for(const n of Object.keys(this._ifcSelection[t])){const s=this._fragmentManager.list[n],i=s==null?void 0:s.fragments[t];i!=null&&i.mesh.removeFromParent()}this.notifyChange(this),this._ifcSelection[t]={}}getBoundingBoxById(t){this.clearHighlight("bbox"),this.highlightById(t,"bbox");const n=this._fragmentBoundingBox;if(n===null)throw new Error("Must call initClassification before getBoundingBoxById");const s=this._fragmentManager;n.reset();const i=this._ifcSelection.bbox;if(!Object.keys(i).length)return;for(const m of Object.keys(i)){const y=s.list[m].fragments.bbox;n.addMesh(y.mesh)}const r=n.get(),{y:c,z:p}=r.min,{y:f,z:d}=r.max;return r.min.y=-d,r.max.y=-p,r.min.z=c,r.max.z=f,r.translate(this._model.position),this.clearHighlight("bbox"),r}getClassification(){if(this._classificationCache===null)throw new Error("Must call initClassification before getClassification");return this._classificationCache}getProperties(t){const n=[],s=this._model.properties;if(!s)return[];for(const i of this._indexMap[t]){const r=s[i];if(r==null)continue;const{name:c}=v.IfcPropertiesUtils.getEntityName(s,i);if(c!==null){if(r.type===ce){const p=v.IfcPropertiesUtils.getPsetProps(s,i);if(p!==null)for(const f of p){if(s[f]==null)continue;const m=this.getProperty(f);m!==null&&n.push({parentName:c,...m})}}else if(r.type===ue){const p=v.IfcPropertiesUtils.getQsetQuantities(s,i);if(p!==null)for(const f of p){const{key:d}=v.IfcPropertiesUtils.getQuantityValue(s,f);if(d===null)continue;const m=this.getProperty(f);m!==null&&n.push({parentName:c,...m})}}}}return n}getProperty(t){const n=this._model.properties;if(n===void 0)return null;const{name:s}=v.IfcPropertiesUtils.getEntityName(n,t);if(s===null)return null;const{value:i}=v.IfcPropertiesUtils.getQuantityValue(n,t);return{name:s,value:i}}highlight(t,n,s){this._ifcSelection[t][n.uuid]=new Set;const i=parseInt(s,10);this._ifcSelection[t][n.uuid].add(s),this.addComposites(t,n,i),this.regenerate(t,n.uuid);const r=n.fragment.group;if(r){const c=r.data[i][0];for(let p=0;p<c.length;p++){const f=c[p],d=r.keyFragments[f],m=this._fragmentManager.list[d];d in this._ifcSelection[t]||(this._ifcSelection[t][d]=new Set),this._ifcSelection[t][d].add(s),this.addComposites(t,m.mesh,i),this.regenerate(t,d)}}this.notifyChange(this)}highlightById(t,n="selection"){for(const s of Object.keys(t)){s in this._ifcSelection[n]||(this._ifcSelection[n][s]=new Set);const i=this._fragmentManager.list[s],r=new Set;for(const c of t[s])this._ifcSelection[n][s].add(c),r.add(parseInt(c,10));for(const c of r)this.addComposites(n,i.mesh,c);this.regenerate(n,s)}this.notifyChange(this)}pick(t,n){return super.pick(t,n).map(s=>({...s,entity:this,features:s.features,isIFCPickResult:!0,object:s.object}))}pickFeaturesFrom(t){var s,i,r;const n=t.object;if(n.fragment!=null&&t.instanceId!=null&&t.face){const c=n.fragment.getVertexBlockID(n.geometry,t.face.a),p=(s=n.fragment.getItemID(t.instanceId,c))==null?void 0:s.replace(/\..*/,"");if(p&&((r=(i=n.fragment.group)==null?void 0:i.properties)==null?void 0:r[p])!=null){const d=n.fragment.group.properties[p],h=[{ifcProperties:this.getProperties(p),itemProperties:d}];return t.features=h,h}}return[]}async initClassification(){this._classificationCache=await this.regenerateClassification(["storeys","entities"]),this._classificationCache.length===0&&(this._classificationCache=await this.regenerateClassification(["entities"])),this._fragmentBoundingBox=await this._components.tools.get(v.FragmentBoundingBox)}async preprocess(){const t=await l.Fetcher.fetchArrayBuffer(this._source.url);this._fragmentManager=await this._components.tools.get(v.FragmentManager),this._fragmentClassifier=await this._components.tools.get(v.FragmentClassifier);const n=new v.FragmentIfcLoader(this._components);n.settings.webIfc.COORDINATE_TO_ORIGIN=!0,n.settings.webIfc.OPTIMIZE_PROFILES=!0;const s=new Uint8Array(t);this._model=await n.load(s,this._source.name),this._model.rotateX(Math.PI/2);const i=new l.Vector3;if(this._source.at)this._source.at.toVector3(i),this._model.position.copy(i);else{const c=this._model.coordinationMatrix.clone().invert();i.applyMatrix4(c),this._model.position.set(i.x,-i.z,i.y)}this._model.updateWorldMatrix(!0,!0),this._model.updateMatrix(),this._model.updateMatrixWorld(!0),this.initializeEntityIndexes(),this._fragmentClassifier.byStorey(this._model),this._fragmentClassifier.byEntity(this._model),await this.initClassification(),this.object3d.add(this._model),this.onObjectCreated(this._model);const r=l.Fetcher.getContext(this._source.url);l.fillObject3DUserData(this,{filename:r.filename}),this.notifyChange(this.object3d)}addComposites(t,n,s){this.addHighlightToFragment(t,n.fragment);const i=n.fragment.composites[s];if(i)for(let r=1;r<i;r++){const c=v.toCompositeID(s,r);this._ifcSelection[t][n.uuid].add(c)}}addHighlightToFragment(t,n){if(!(t in n.fragments)){const s=n.addFragment(t,[Gt[t]]);n.blocks.count>1&&(s.setInstance(0,{ids:Array.from(n.ids),transform:L}),s.blocks.setVisibility(!1)),this._model.add(s.mesh),s.mesh.renderOrder=30,s.mesh.frustumCulled=!1,s.mesh.name=t,s.mesh.updateMatrixWorld(!0)}}initializeEntityIndexes(){this._indexMap={};const t=this._model.properties;if(t!==void 0)for(const n of Zt)v.IfcPropertiesUtils.getRelationMap(t,n,(s,i)=>{const r=t[s];Jt.includes(r.type)||this.setEntityIndex(s);for(const c of i)this.setEntityIndex(c).add(s)})}regenerate(t,n){this.updateFragmentFill(t,n)}async regenerateClassification(t,n={}){const s=this._fragmentClassifier.get(),i=[],r=t[0],c=s[r];if(r==null||c==null)return i;for(const p of Object.keys(c)){const f={...n,[r]:[p]},d=await this._fragmentClassifier.find(f);if(Object.keys(d).length>0){const y=r[0].toUpperCase()+r.slice(1),g=await this.regenerateClassification(t.slice(1),f);i.push({children:g,fragments:d,name:p,treeItemName:y})}}return i}setEntityIndex(t){return t in this._indexMap||(this._indexMap[t]=new Set),this._indexMap[t]}updateFragmentFill(t,n){const s=this._ifcSelection[t][n],i=this._fragmentManager.list[n];if(i==null)return;const r=i.fragments[t];if(r==null)return;const c=i.mesh.parent;if(c==null)return;if(c.add(r.mesh),r.blocks.count>1)i.getInstance(0,L),r.setInstance(0,{ids:Array.from(i.ids),transform:L}),r.blocks.setVisibility(!0,s,!0);else{let f=0;for(const d of s){r.mesh.count=f+1;const{instanceID:m}=i.getInstanceAndBlockID(d);i.getInstance(m,L),r.setInstance(f,{ids:[d],transform:L}),f++}}}};u(M,"isIFCEntity",t=>l.isObject(t)&&t.isIfcEntity),u(M,"isIFCPickResult",t=>l.isObject(t)&&M.isIFCEntity(t.entity));let z=M;class Xt extends Ye{constructor(e,t,n){super(e,t,n,{visibility:!0})}}const Kt={class:"d-flex"},Qt=["title"],en=["id"],tn={class:"list-unstyled border-start"},nn=a.defineComponent({__name:"IfcSubtree",props:{classificationElement:{},ifcEntity:{}},setup(o){const e=o,t=l.MathUtils.generateUUID(),n=`#${t}`,s=a.ref(!1),i=l.useCameraStore(),c=l.useModuleStore().getModule(l.moduleId);function p(){if(c==null){console.warn("Cannot clip IFC element, ClippingBoxAnalysis module is not present");return}const m=e.ifcEntity.getBoundingBoxById(e.classificationElement.fragments);m&&!m.isEmpty()&&c.setClippingBox(m)}function f(){s.value=!0,e.ifcEntity.clearHighlight(),e.ifcEntity.highlightById(e.classificationElement.fragments),setTimeout(()=>s.value=!1,2e3)}function d(){const m=e.ifcEntity.getBoundingBoxById(e.classificationElement.fragments);m&&!m.isEmpty()&&i.lookTopDownAt(m)}return(m,h)=>{const y=a.resolveComponent("IfcSubtree",!0);return a.openBlock(),a.createElementBlock("div",null,[a.createElementVNode("div",Kt,[a.createElementVNode("span",{class:a.normalizeClass(["border rounded px-1 py-0 fw-normal",s.value?"text-danger border-danger":"text-secondary border-secondary"]),title:o.classificationElement.treeItemName},a.toDisplayString(o.classificationElement.treeItemName),11,Qt),o.classificationElement.children.length>0?(a.openBlock(),a.createBlock(l.IconList,{key:0},{default:a.withCtx(()=>[a.createVNode(l.IconListButton,{title:"Expand group",icon:"bi-chevron-down","data-bs-toggle":"collapse","data-bs-target":n,"aria-controls":a.unref(t),"aria-expanded":"true"},null,8,["aria-controls"])]),_:1})):a.createCommentVNode("",!0),a.createVNode(l._sfc_main$3,{class:a.normalizeClass(["label",s.value?"text-danger-emphasis":"text-muted"]),text:o.classificationElement.name,title:`Zoom to ${o.classificationElement.name}`,onClick:d},null,8,["class","text","title"]),a.createVNode(l.IconList,{class:"ms-1"},{default:a.withCtx(()=>[a.createVNode(l.IconListButton,{title:"Highlight",icon:"bi-highlighter",onClick:f}),a.unref(c)!=null?(a.openBlock(),a.createBlock(l.IconListButton,{key:0,title:"Clip to",icon:"bi-bounding-box",onClick:p})):a.createCommentVNode("",!0)]),_:1})]),o.classificationElement.children.length>0?(a.openBlock(),a.createElementBlock("div",{key:0,id:a.unref(t),class:"collapse show"},[a.createElementVNode("ul",tn,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(o.classificationElement.children,(g,S)=>(a.openBlock(),a.createElementBlock("li",{key:S},[a.createVNode(y,{"ifc-entity":e.ifcEntity,"classification-element":g},null,8,["ifc-entity","classification-element"])]))),128))])],8,en)):a.createCommentVNode("",!0)])}}}),on=l._export_sfc(nn,[["__scopeId","data-v-b83cefb0"]]),sn={key:0},an=a.defineComponent({__name:"IfcPropertyView",props:{dataset:{}},setup(o){const e=l.useDatasetStore(),t=o,n=l.refAndWatch(t.dataset,"state");function s(){const r=i();return r==null?null:r.getClassification()}function i(){const r=e.getEntities(t.dataset);return r==null?null:r[0]}return(r,c)=>a.unref(n)===a.unref(l.DatasetState).Loaded?(a.openBlock(),a.createElementBlock("div",sn,[a.createElementVNode("ul",null,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(s(),(p,f)=>(a.openBlock(),a.createElementBlock("li",{key:f},[a.createVNode(on,{"ifc-entity":i(),"classification-element":p},null,8,["ifc-entity","classification-element"])]))),128))])])):a.createCommentVNode("",!0)}}),rn=l._export_sfc(an,[["__scopeId","data-v-dc6d8b2c"]]),ln=l.Dataset$1.extend({position:l.Coordinate.optional(),url:l.Url}),cn=o=>{if(de(o)){const e=o.object;if(e.fragment!=null&&o.face&&o.instanceId!=null){const t=e.fragment.getVertexBlockID(e.geometry,o.face.a),n=e.fragment.getItemID(o.instanceId,t).replace(/\..*/,"");return o.entity.highlight("selection",e,n),()=>o.entity.clearHighlight()}}return null},un=o=>{const e={name:o.filename,type:"ifc",url:typeof o.file=="string"?o.file:URL.createObjectURL(o.file),visible:!0};return Promise.resolve(e)},dn=(o,e)=>{var p,f,d,m,h,y,g,S,C;if(!de(o))return;const t=(p=o.features)==null?void 0:p.at(0);if(!t)return;e.has("IFC")||e.set("IFC",[]);const n=e.get("IFC"),{ifcProperties:s,itemProperties:i}=t,r="NULL",c=((f=i.Name)==null?void 0:f.value)??r;n.push({key:"Site",value:((m=(d=o.entity.object3d.userData)==null?void 0:d.dataset)==null?void 0:m.name)??r}),n.push({key:"IFCType",value:v.IfcCategoryMap[i.type]??r}),n.push({key:"Name",value:c}),n.push({key:"ID",value:i.expressID}),n.push({key:"GlobalId",value:((h=i.GlobalId)==null?void 0:h.value)??r}),((y=i.Description)==null?void 0:y.value)!=null&&n.push({key:"Description",value:i.Description.value}),((g=i.PredefinedType)==null?void 0:g.value)!=null&&n.push({key:"PredefinedType",value:i.PredefinedType.value}),((S=i.ObjectType)==null?void 0:S.value)!=null&&n.push({key:"ObjectType",value:i.ObjectType.value});for(const{name:b,parentName:E,value:w}of s)e.has(E)||e.set(E,[]),(C=e.get(E))==null||C.push({key:b,value:w})},pn=o=>{const{dataset:e,instance:t}=o,n=ln.parse(e),s=n.position?l.toGiro3DCoordinates(n.position,t.referenceCrs).as(t.referenceCrs):void 0,i=new z({at:s,name:e.name,url:n.url});return Promise.resolve({entities:[i]})};class pe{constructor(){u(this,"id","builtin-loader-ifc");u(this,"name","IFC")}async initialize(e){e.datasets.registerDatasetType("ifc",{attributeExtractor:dn,builder:pn,fileExtensions:["ifc"],highlight:cn,icon:"bi-building",loader:un,name:"IFC",propertyView:rn}),We.registerInspector("IfcEntity",Xt),await l.Fetcher.fetch("web-ifc.wasm").catch(t=>{console.warn("Could not load web-ifc.wasm",t)})}}const mn="kml",fn=l.Layer.extend({projection:l.CrsName.optional().default("EPSG:4326"),style:l.OpenLayersFlatStyleLike.optional(),url:l.Url}),hn=o=>{const e=fn.parse(o.dataset),n={layers:[new T({resolutionFactor:e.resolution,source:new U({data:{format:new Je({extractStyles:e.style==null}),url:e.url},dataProjection:e.projection,style:e.style!=null?W(e.style):l.defaultVectorStyle})})]};return Promise.resolve(n)},gn=o=>{const e={layerType:"color",name:o.filename,projection:"EPSG:4326",resolution:1,type:"kml",url:typeof o.file=="string"?o.file:URL.createObjectURL(o.file),visible:!0};return Promise.resolve(e)};class me{constructor(){u(this,"id","builtin-loader-kml");u(this,"name","KML")}initialize(e){e.datasets.registerDatasetType(mn,{builder:hn,fileExtensions:["kml"],icon:"fg-polygon-pt",loader:gn,name:"KML"})}}const yn=_.object({colorMap:l.ColorMap.default({max:100,min:0,ramp:"Greys"})}),fe=l.Dataset$1.extend({attribute:_.string().optional(),style:yn.optional(),url:l.Url}),bn=o=>{const e=fe.parse(o.dataset),t=new R({source:new Xe({url:e.url})});return Promise.resolve({entities:[t]})},vn=o=>{const e=fe.parse(o.dataset),t=new R({source:new Ze({url:e.url})}),n=e.attribute;return t.addEventListener("initialized",()=>{var s;n!=null&&(t.setColoringMode("attribute"),t.setActiveAttribute(n)),((s=e.style)==null?void 0:s.colorMap)!=null&&(t.colorMap=l.toGiro3DColorMap(e.style.colorMap))}),Promise.resolve({entities:[t]})},X=o=>{const e={name:o.filename,type:"las",url:typeof o.file=="string"?o.file:URL.createObjectURL(o.file),visible:!0};return Promise.resolve(e)};class he{constructor(){u(this,"id","builtin-loader-las");u(this,"name","LAS")}initialize(e){e.datasets.registerDatasetType("las",{builder:bn,fileExtensions:["laz","las"],icon:"fg-multipoint",loader:X,name:"LAS"}),e.datasets.registerDatasetType("copc",{builder:vn,fileExtensions:["copc.laz"],icon:"fg-multipoint",loader:X,name:"Cloud-Optimized Point Cloud (COPC)"})}}const wn=_.union([_.literal("mapbox.mapbox-terrain-dem-v1"),_.literal("mapbox.terrain-rgb"),_.literal("mapbox.satellite")]),_n=l.Layer.extend({tileset:wn,token:_.string().nonempty()}),Sn={"mapbox.mapbox-terrain-dem-v1":"pngraw","mapbox.satellite":"jpeg","mapbox.terrain-rgb":"pngraw"},En="https://api.mapbox.com/v4",xn=o=>{const e=_n.parse(o.dataset),t=Sn[e.tileset];let n;switch(e.tileset){case"mapbox.mapbox-terrain-dem-v1":case"mapbox.terrain-rgb":n=new Ke;break}let s;const i=new H({format:n,source:new O.XYZ({url:`${En}/${e.tileset}/{z}/{x}/{y}.${t}?access_token=${e.token}`})}),r={extent:e.extent!=null?l.toGiro3DExtent(e.extent,o.instance.referenceCrs):void 0,resolutionFactor:e.resolution,source:i};switch(e.layerType){case"color":s=new T(r);break;case"elevation":s=new q(r);break}return Promise.resolve({layers:[s]})};class ge{constructor(){u(this,"id","builtin-loader-mapbox");u(this,"name","Mapbox")}initialize(e){e.datasets.registerDatasetType("mapbox",{builder:xn,icon:"fg-layer-alt",name:"Mapbox"})}}const Cn=()=>{const e={layers:[new T({source:new H({source:new O.OSM})})]};return Promise.resolve(e)};class ye{constructor(){u(this,"id","builtin-loader-osm");u(this,"name","OSM basemap")}initialize(e){e.datasets.registerDatasetType("osm",{builder:Cn,icon:"fg-layer-alt",name:"OpenStreetMap"})}}const Pn=l.Dataset$1.extend({url:l.Url}),Tn=o=>{const e=Pn.parse(o.dataset),t=new R({source:new Qe({url:`${e.url}`})});return l.fillObject3DUserData(t,{filename:e.url}),Promise.resolve({entities:[t]})};class be{constructor(){u(this,"id","builtin-loader-potree");u(this,"name","Potree")}initialize(e){e.datasets.registerDatasetType("potree",{builder:Tn,icon:"fg-multipoint",name:"Potree Point Cloud"})}}const In=l.Dataset$1.extend({url:l.Url}),kn=o=>{const e=In.parse(o.dataset),t=new et({url:e.url});return Promise.resolve({entities:[t]})};class ve{constructor(){u(this,"id","builtin-loader-3dtiles");u(this,"name","3D Tiles")}initialize(e){e.datasets.registerDatasetType("3dtiles",{builder:kn,icon:"fg-3dtiles-file",name:"3D Tiles"})}}const Fn="tms",Dn=l.Layer.extend(_.object({projection:l.CrsName.optional().default("EPSG:3857"),url:l.Url}).shape),Ln=o=>{const e=Dn.parse(o.dataset),n={layers:[new T({extent:e.extent?l.toGiro3DExtent(e.extent,o.instance.referenceCrs).as(o.instance.referenceCrs):void 0,source:new H({source:new O.XYZ({projection:e.projection??"EPSG:3857",url:e.url})})})]};return Promise.resolve(n)};class we{constructor(){u(this,"id","builtin-loader-tms");u(this,"name","TMS")}initialize(e){e.datasets.registerDatasetType(Fn,{builder:Ln,icon:"fg-layer-alt",name:"TMS"})}}const Mn="wms",Nn=l.Layer.extend({format:_.string().nonempty().optional().default("image/jpeg"),layer:_.union([_.array(_.string().nonempty()),_.string().nonempty()]),projection:l.CrsName.optional().default("EPSG:3857"),url:l.Url}),Bn=o=>{const e=Nn.parse(o.dataset),n={layers:[new T({resolutionFactor:e.resolution,source:new tt({imageFormat:e.format,layer:Array.isArray(e.layer)?e.layer:[e.layer],projection:e.projection??"EPSG:3857",url:e.url})})]};return Promise.resolve(n)};class _e{constructor(){u(this,"id","builtin-loader-wms");u(this,"name","WMS")}initialize(e){e.datasets.registerDatasetType(Mn,{builder:Bn,icon:"fg-layer-alt",name:"WMS"})}}const Se=_.string().nonempty();_.globalRegistry.add(Se,{id:"ImageFormat"});const On="wmts",jn=l.Layer.extend({format:Se.optional().default("image/jpeg"),layer:_.string().nonempty().nonoptional(),projection:l.CrsName.optional().default("EPSG:3857"),url:l.Url});function Vn(o){if(o==="image/x-bil;bits=32")return new nt}const $n=async o=>{const e=jn.parse(o.dataset),t=await ot.fromCapabilities(e.url,{format:Vn(e.format),imageFormat:e.format,layer:e.layer,noDataValue:e.nodata}),n={extent:e.extent!=null?l.toGiro3DExtent(e.extent,o.instance.referenceCrs).as(o.instance.referenceCrs):void 0,noDataOptions:e.nodata!=null?{replaceNoData:!0}:void 0,resolutionFactor:e.resolution,source:t};let s;switch(e.layerType){case"color":s=new T(n);break;case"elevation":s=new q(n);break;default:throw new Error(`unsupported layer type: ${e.layerType}`)}const i={layers:[s]};return Promise.resolve(i)};class Ee{constructor(){u(this,"id","builtin-loader-wmts");u(this,"name","WMTS")}initialize(e){e.datasets.registerDatasetType(On,{builder:$n,icon:"fg-layer-alt",name:"WMTS"})}}const xe=[ae,re,le,pe,me,he,ye,ve,we,_e,Ee,ge,be,ie],zn=Object.freeze(Object.defineProperty({__proto__:null,BDTopoLoader:ie,GPXLoader:le,GeoJSONLoader:ae,GeoTIFFLoader:re,IFCLoader:pe,KMLLoader:me,LASLoader:he,MapboxLoader:ge,OSMLoader:ye,PotreeLoader:be,TMSLoader:we,Tiles3DLoader:ve,WMSLoader:_e,WMTSLoader:Ee,all:xe},Symbol.toStringTag,{value:"Module"})),An={class:"area"},Gn={key:0,class:"list rounded text-muted"},Un=a.defineComponent({__name:"AttributionWidget",props:{context:{}},setup(o){const e=l.useDatasetStore(),t=a.computed(()=>n(e.getVisibleDatasets()));function n(i){const r=i.filter(p=>p.visible&&!l.Datagroup.isGroup(p)&&p.config.attribution!=null).map(p=>l.nonNull(p.config.attribution));return[...new Set(r)]}const s=a.ref(!1);return(i,r)=>(a.openBlock(),a.createElementBlock("div",An,[a.createVNode(l._sfc_main$1,{title:"Show attributions and copyrights",icon:"bi-info-lg",class:"btn-light button border",onClick:r[0]||(r[0]=()=>s.value=!s.value)}),s.value&&t.value.length>0?(a.openBlock(),a.createElementBlock("div",Gn,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(t.value,c=>(a.openBlock(),a.createElementBlock("span",{key:c},a.toDisplayString(c),1))),128))])):a.createCommentVNode("",!0)]))}}),qn=l._export_sfc(Un,[["__scopeId","data-v-d3ec562b"]]);class Ce{constructor(){u(this,"id","builtin-attribution");u(this,"name","Attribution")}initialize(e){e.widgets.addWidget({component:qn,id:"attribution"})}}function A(o){if("url"in o.config&&typeof o.config.url=="string")try{return _.url().parse(o.config.url),o.config.url}catch{return}}function Rn(o){return A(o)!=null}class Pe{constructor(){u(this,"id","builtin-download-dataset");u(this,"name","Download dataset");u(this,"_context",null)}initialize(e){this._context=e,e.datasets.registerDatasetAction({action:this.download.bind(this),icon:"bi-download",predicate:Rn,title:"Download dataset"})}download(e){const t=A(e);if(t==null){console.warn("invalid");return}const n=this._context,s=new URL(t).pathname.split("/"),i=s[s.length-1];console.info(`download ${A(e)}`),l.Fetcher.fetch(t).then(r=>{if(!r.ok)throw new Error(`${r.status} ${r.statusText}`);return r.blob()}).then(r=>{l.Download.downloadBlob(r,i),n.notifications.push({level:"success",text:i,title:"Download successful"})}).catch(r=>{console.error(r);const c=r instanceof Error?r.message:"Download failed";n.notifications.push({level:"error",text:c,title:e.name})})}}let B=!1,N=1;function Hn(o){return l.MathUtils.clamp(o/400,1,1/0)}const Wn=[{altitude:1e3,step:100},{altitude:2500,step:200},{altitude:5e3,step:500},{altitude:2e4,step:1e3},{altitude:5e4,step:2e3},{altitude:1e5,step:1e4},{altitude:2e5,step:2e4},{altitude:4e5,step:4e4},{altitude:25e4,step:25e3},{altitude:5e5,step:5e4},{altitude:1e6,step:1e5},{altitude:2e6,step:25e4},{altitude:5e6,step:5e5},{altitude:1e7,step:1e6},{altitude:3e7,step:2e6},{altitude:1/0,step:4e6}];function Yn(o,e,t,n){let s=!1;function i(c,p,f){c[p]!==f&&(s=!0,c[p]=f)}i(o.graticule,"enabled",B);const r=t.z;i(o.graticule,"thickness",Hn(r)),i(o.graticule,"opacity",e);for(const c of Wn)if(r<=c.altitude){i(o.graticule,"xStep",c.step),i(o.graticule,"yStep",c.step);break}s&&n.notifyChange(o)}const Jn=o=>e=>{const t=e.instance,n=t.view;B=!0,N=1;const s=n.camera.position.clone(),i=n.camera.rotation.clone(),r=()=>{const c=o.view.getBasemap();(c.graticule.opacity!==N||c.graticule.enabled!==B||!s.equals(n.camera.position)||!i.equals(n.camera.rotation))&&(s.copy(n.camera.position),i.copy(n.camera.rotation),Yn(c,N,s,t))};return o.events.addEventListener("dataset-opacity-changed",c=>{c.value.config.type==="graticule"&&(N=c.value.opacity,r())}),o.events.addEventListener("dataset-visibility-changed",c=>{c.value.config.type==="graticule"&&(B=c.value.visible,r())}),t.addEventListener("after-camera-update",()=>{r()}),r(),Promise.resolve({})};class Te{constructor(){u(this,"id","builtin-graticule");u(this,"name","Graticule")}initialize(e){e.datasets.registerDatasetType("graticule",{builder:Jn(e),icon:"fg-grid",name:"Graticule"})}}const Zn=a.defineComponent({__name:"OpenLayersMinimapComponent",props:{context:{}},setup(o){const e=a.ref(),t=a.shallowRef(),n=o,s=[[3e4,12],[5e4,10],[1e5,8],[4e5,6],[8e5,4],[16e5,3],[3e6,1]];function i(r){for(const[c,p]of s)if(r<c)return p;return s[s.length-1][1]}return a.onMounted(()=>{const r=new st({source:new O.OSM});t.value=new J.Map({controls:[],layers:[r],target:e.value,view:new J.View({center:Z.fromLonLat([4,44]),projection:"EPSG:3857",zoom:5})});let c=new l.Vector3,p;const f=()=>{var C;const h=n.context.view.getInstance(),g=n.context.view.getCameraController().getCameraPosition(),S=g.camera.z;if(!g.camera.equals(c)){c=g.camera.clone();const b=new I(h.referenceCrs,c.x,c.y).as("EPSG:4326"),E=i(S),w=(C=t.value)==null?void 0:C.getView();w==null||w.setCenter(Z.fromLonLat([b.longitude,b.latitude])),w==null||w.setZoom(E)}};let d=!1;const m=()=>{clearTimeout(p),d||(p=setTimeout(f,200))};n.context.events.addEventListener("updated",m),e.value&&(e.value.onclick=()=>{var h,y,g,S;d=!d,d?((h=e.value)==null||h.classList.add("collapsed"),(y=e.value)==null||y.classList.remove("expanded")):((g=e.value)==null||g.classList.remove("collapsed"),(S=e.value)==null||S.classList.add("expanded"))})}),a.onUnmounted(()=>{var r;(r=t.value)==null||r.dispose(),t.value=void 0}),(r,c)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"target",ref:e,title:"Toggle minimap",class:"minimap expanded"},[...c[0]||(c[0]=[a.createElementVNode("div",{class:"crosshair position-absolute top-50 start-50 translate-middle"},[a.createElementVNode("i",{class:"bi bi-crosshair"})],-1)])],512))}}),Xn=l._export_sfc(Zn,[["__scopeId","data-v-ce43aa25"]]);class Ie{constructor(){u(this,"id","builtin-minimap-openlayers");u(this,"name","Minimap")}initialize(e){e.widgets.addWidget({component:Xn,id:"minimap-ol"})}}const Kn=o=>{o.addEventListener("object-created",e=>{e.obj.traverse(n=>{var s;((s=n.userData)==null?void 0:s.class)==="IfcSpace"&&(n.visible=!1)})})};class ke{constructor(){u(this,"id","builtin-post-process-entities");u(this,"name","Post-process 3D Tiles");u(this,"_alreadyProcessedEntities",new Set);u(this,"_processings",[Kn])}initialize(e){e.events.addEventListener("ready",()=>{const t=e.view.getInstance();t.addEventListener("entity-added",()=>this.processEntities(t)),this.processEntities(t)})}processEntities(e){for(const t of e.getEntities())this._alreadyProcessedEntities.has(t.id)||(G.isEntity3D(t)&&this.processEntity(t,e),this._alreadyProcessedEntities.add(t.id))}processEntity(e,t){const n={instance:t};for(const s of this._processings)s(e,n)}}class Fe{constructor(){u(this,"id","builtin-tour");u(this,"name","Tour");u(this,"_camera",null);u(this,"_cameraCallback",null);u(this,"_context",null);u(this,"_tours",null)}initialize(e){this._context=e,e.events.addEventListener("ready",this.start.bind(this))}buildTours(){const e=this._camera,t=new x.Tour({tourName:"main",useModalOverlay:!0}),n=new x.Tour({tourName:"navigating",useModalOverlay:!0}),s=new x.Tour({tourName:"analyzing",useModalOverlay:!0}),i=[{action:()=>{var d;return(d=x.activeTour)==null?void 0:d.next()},text:"Next"},{action:()=>{var d;return(d=x.activeTour)==null?void 0:d.cancel()},secondary:!0,text:"Exit"}],r=()=>{var C,b;const d=(C=x.activeTour)==null?void 0:C.getCurrentStep(),m=d==null?void 0:d.getElement(),h=m==null?void 0:m.querySelector(".shepherd-text"),y=(b=x.activeTour)==null?void 0:b.steps;if(d==null||m==null||h==null||y==null)return;const g=document.createElement("div");g.className="progress mt-3",g.setAttribute("role","progressbar"),g.style.height="2px";const S=document.createElement("div");S.className="progress-bar bg-success",S.style.width=`${100*(y.indexOf(d)/y.length)}%`,g.appendChild(S),h.appendChild(g)},c=async(d,m)=>new Promise(h=>{const y=document.getElementById(d);if(y&&!y.classList.contains("active")&&y.click(),document.querySelector(m))return h(document.querySelector(m));const g=new MutationObserver(()=>{document.querySelector(m)&&(g.disconnect(),h(document.querySelector(m)))});g.observe(document.body,{childList:!0,subtree:!0})});t.addStep({buttons:[{action:()=>{var d;(d=x.activeTour)==null||d.complete(),n.show(0)},text:"Navigating"},{action:()=>{var d;(d=x.activeTour)==null||d.complete(),s.show(0)},text:"Analyzing data"},{action:()=>{var d;return(d=x.activeTour)==null?void 0:d.cancel()},secondary:!0,text:"Exit"}],cancelIcon:{enabled:!0,label:"Exit tutorial"},id:"example-step",text:"<p>Welcome to <strong>Piero</strong>, the Giro3D application.<br/>We can guide you through the different features.</p>",title:"Welcome!",when:{show:r}}),n.addStep({attachTo:{element:"#main-view",on:"bottom"},buttons:i,id:"view",text:"<p>This is the <b>main view</b>.</p><p>Giro3D natively supports a broad range of data sources, from 2D raster and vector data, to 3D point clouds and tilesets.</p><p>Piero adds support for CityJSON and IFC files.</p>",when:{show:r}}),n.addStep({attachTo:{element:"#main-view",on:"bottom"},buttons:i,id:"navigate",text:'<p>This application integrates <a href="https://github.com/yomotsu/camera-controls">camera-controls</a>, a camera control for three.js.</p><p><b>Click</b> to move the camera. <b>Right-click</b> to rotate around a point. <b>Scroll</b> to zoom in or out.</p>',when:{hide:()=>{this._cameraCallback&&e.removeEventListener("interaction-end",this._cameraCallback),this._cameraCallback=null},show:()=>{let d=0;this._cameraCallback=()=>{var m;d+=1,d>2&&((m=x.activeTour)==null||m.next())},e.addEventListener("interaction-end",this._cameraCallback),r()}}}),n.addStep({attachTo:{element:"#toolbar",on:"right"},beforeShowPromise:()=>c("toolbar-datasets","#datasets-drop-zone"),buttons:i,id:"toolbar-layers",text:"<p>Giro3D supports multiple datasets.</p><p>You can toggle datasets as you wish with the <b>Datasets</b> panel.</p>",when:{show:r}}),n.addStep({attachTo:{element:"#basemap-list",on:"right"},beforeShowPromise:()=>c("toolbar-datasets","#datasets-drop-zone"),buttons:i,id:"basemaps",text:"<p><b>Basemaps</b> are color and elevation layers that make the basic shape and aspect of the <b>Map</b>.</p>",when:{show:r}}),n.addStep({attachTo:{element:"#overlay-list",on:"right"},beforeShowPromise:()=>c("toolbar-datasets","#datasets-drop-zone"),buttons:i,id:"overlays",text:"<p><b>Overlays</b> are vector layers in various formats (WFS, GML, GeoJSON...).</p>",when:{show:r}}),n.addStep({attachTo:{element:"#dataset-list",on:"right"},beforeShowPromise:()=>c("toolbar-datasets","#datasets-drop-zone"),buttons:i,id:"layers",text:"<p>The <b>Datasets</b> panel contains all 3D objects in the scene.</><p>You can toggle their visibility and delete them.<p><p>Most objects leverage Giro3D's adaptive resolution to optimize their display.</p>",when:{show:r}}),n.addStep({attachTo:{element:"#datasets-drop-zone",on:"right"},beforeShowPromise:()=>c("toolbar-datasets","#datasets-drop-zone"),buttons:i,id:"adddata",text:"<p>You can add your own data from your computer by <b>dragging the file</b> into this page.</p><p>While you won't benefit from Giro3D's tiling mechanism, this can be a great way to quickly visualize datasets up to 100MB.</p><p>This application supports CityJSONs, IFCs, LAS/LAZs, CSV pointclouds, and simple GeoJSON features.</p>",when:{show:r}}),n.addStep({attachTo:{element:"#main-view",on:"bottom"},buttons:i,id:"attributes",text:"<p>By clicking on any feature on the map, you can see its <strong>Attribute table</strong>. Clickable features display a cursor when hovered.</p>",when:{show:r}}),n.addStep({attachTo:{element:"#search-place-autocomplete",on:"bottom"},buttons:[{action:()=>{var d;(d=x.activeTour)==null||d.complete(),s.show(0)},text:"Analyzing data"},{action:()=>{var d;return(d=x.activeTour)==null?void 0:d.complete()},secondary:!0,text:"Exit"}],id:"widgets",text:"Giro3D is highly extensible. Here we added a widget to search and navigate to locations based on the French address database.",when:{show:r}}),s.addStep({attachTo:{element:"#annotations-fieldset",on:"right"},beforeShowPromise:()=>c("toolbar-annotations","#annotations-fieldset"),buttons:i,id:"annotation",text:"<p>You can <strong>annotate</strong> any data displayed using Giro3D native tools.<br>Select the <strong>geometry</strong> of your annotation, and <strong>click</strong> on the scene to add points. <strong>Right-click</strong> to end the shape.</p>",when:{show:r}}),s.addStep({attachTo:{element:"#annotations-fieldset",on:"right"},beforeShowPromise:()=>c("toolbar-annotations","#annotations-fieldset"),buttons:i,id:"annotations",text:"You can download your annotations as GeoJSON files. You can also upload your own by dragging them into this panel.",when:{show:r}}),s.addStep({attachTo:{element:"#panel-container",on:"right"},beforeShowPromise:()=>c("toolbar-measures","#measures-fieldset"),buttons:i,id:"measurements",text:"You can add <strong>measurements</strong> to easily get distances betwween objects.<br>Once started, moving the mouse will display the measure. <strong>Click</strong> to save the measurement. <strong>Right-click</strong> to end.",when:{show:r}}),s.addStep({attachTo:{element:"#panel-container",on:"right"},beforeShowPromise:()=>c("toolbar-analysis","#panel-container .card"),buttons:[{action:()=>{var d;return(d=x.activeTour)==null?void 0:d.complete()},text:"Done!"}],id:"analysis",text:"In the <strong>Analysis</strong> panel you'll find some advanced analysis tools.",when:{show:r}});const p=()=>{const d=new URL(document.URL);d.searchParams.delete("tourStep"),d.searchParams.set("tour","none"),window.history.replaceState({},"",d.toString())},f=d=>{const m=new URL(document.URL);let h="main";d.tour.id.startsWith("navigating")?h="navigating":d.tour.id.startsWith("analyzing")&&(h="analyzing"),m.searchParams.set("tour",h),m.searchParams.set("tourStep",d.step.id),window.history.replaceState({},"",m.toString())};return t.on("cancel",p),t.on("complete",p),t.on("show",f),n.on("cancel",p),n.on("complete",p),n.on("show",f),s.on("cancel",p),s.on("complete",p),s.on("show",f),{analyzingTour:s,mainTour:t,navigatingTour:n}}getTours(){return this._tours||(this._tours=this.buildTours()),this._tours}restart(){const{mainTour:e}=this.getTours();e.show(0)}start(){if(!this._context)throw new Error("module is not initialized");const{analyzingTour:e,mainTour:t,navigatingTour:n}=this.getTours();this._camera=this._context.view.getCameraController();const s=new URL(document.URL),i=s.searchParams.get("tour")??"main";if(i!=="none"){const r=s.searchParams.get("tourStep")??0;i==="navigating"?n.show(r):i==="analyzing"?e.show(r):t.show(r)}}}const De=[Ce,Pe,Te,Ie,ke,Fe],Qn=Object.freeze(Object.defineProperty({__proto__:null,Attribution:Ce,DownloadDataset:Pe,Graticule:Te,OpenLayersMinimap:Ie,PostProcessEntities:ke,Tour:Fe,all:De},Symbol.toStringTag,{value:"Module"})),eo=/^(\d+\.\d+)\s*,\s*(\d+\.\d+)$/;class to{constructor(){u(this,"name","Go to coordinates")}search(e){const t=eo.exec(e);if(t){const n=Number.parseFloat(t[1]),s=Number.parseFloat(t[2]),r={coordinates:I.WGS84(n,s),label:`${n.toFixed(6)}, ${s.toFixed(6)}`,provider:this};return Promise.resolve([r])}else return Promise.resolve([])}}class Le{constructor(){u(this,"id","builtin-search-coordinates");u(this,"name","Coordinates search")}initialize(e){e.search.registerProvider(new to)}}const no=/[a-z]{3}/;class oo{constructor(){u(this,"name","Base adresse nationale (BAN)")}async search(e){if(!no.test(e))return[];try{const n=(await l.Fetcher.fetchJson(`https://api-adresse.data.gouv.fr/search/?q=${e}`)).features.map(s=>{const i=s.properties,r=s.geometry,[c,p]=r.coordinates;return{coordinates:new I("EPSG:4326",c,p,0),label:i.label,provider:this}});return await so(n.map(s=>s.coordinates)),n}catch(t){if(t instanceof Q.HttpError)return[];throw t}}}async function so(o){const e=new URL("https://data.geopf.fr/altimetrie/1.0/calcul/alti/rest/elevation.json");e.searchParams.append("lon",o.map(n=>n.longitude).join("|")),e.searchParams.append("lat",o.map(n=>n.latitude).join("|")),e.searchParams.append("zonly","true"),e.searchParams.append("resource","ign_rge_alti_wld"),e.searchParams.append("delimiter","|"),e.searchParams.append("indent","false");const t=await l.Fetcher.fetchJson(e.toString());for(let n=0;n<o.length;n++)o[n].setAltitude(t.elevations[n]);return t}class Me{constructor(){u(this,"id","builtin-search-ban");u(this,"name","Base adresse nationale")}initialize(e){e.search.registerProvider(new oo)}}const io=/[a-z]{3}/;class ao{constructor(){u(this,"name","OpenStreetMap Photon")}async search(e){if(!io.test(e))return[];try{return(await l.Fetcher.fetchJson(`https://photon.komoot.io/api/?q=${e}`)).features.map(s=>{const i=s.properties,r=s.geometry,[c,p]=r.coordinates;return{coordinates:new I("EPSG:4326",c,p,0),label:ro(i),provider:this}})}catch(t){if(t instanceof Q.HttpError)return[];throw t}}}function ro(o){if(o.label!=null)return o.label;const e=[];return o.housenumber!=null&&e.push(o.housenumber),o.street!=null&&e.push(o.street),o.city!=null&&e.push(o.city),o.country!=null&&e.push(o.country),o.postcode!=null&&e.push(o.postcode),e.join(", ")}class Ne{constructor(){u(this,"id","builtin-search-photon");u(this,"name","OpenStreetMap Photon")}initialize(e){e.search.registerProvider(new ao)}}const Be=[Le,Me,Ne],lo=Object.freeze(Object.defineProperty({__proto__:null,CoordinatesSearch:Le,FrenchBanGeocoder:Me,PhotonGeocoder:Ne,all:Be},Symbol.toStringTag,{value:"Module"})),co=[...se,...xe,...De,...Be];exports.all=co;exports.analysis=kt;exports.loaders=zn;exports.misc=Qn;exports.search=lo;
|
|
2
2
|
//# sourceMappingURL=modules.cjs.js.map
|