@geode/opengeodeweb-front 10.34.0-rc.2 → 10.34.0-rc.21
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/.build/opengeodeweb_front_schemas.js +175 -0
- package/.build/server/utils/app_config.js +57 -0
- package/.build/server/utils/cleanup.js +135 -0
- package/.build/server/utils/cloud.js +156 -0
- package/.build/server/utils/microservices.js +153 -0
- package/.build/server/utils/path.js +108 -0
- package/.build/server/utils/scripts.js +134 -0
- package/.build/server/utils/server.js +44 -0
- package/.build/server/utils/server_config.js +51 -0
- package/.build/server/utils/stream.js +6 -0
- package/.build/server/utils/ws_client.js +100 -0
- package/.build/shared/app_mode.js +8 -0
- package/.build/shared/scripts.js +49 -0
- package/.build/shared/utils/call_raw.js +31 -0
- package/.build/shared/utils/call_schema.js +28 -0
- package/.build/shared/utils/fetch_raw.js +52 -0
- package/.build/shared/utils/fetch_schema.js +32 -0
- package/.build/shared/utils/file.js +14 -0
- package/.build/shared/utils/parse_boolean.js +23 -0
- package/.build/shared/utils/response_handlers/load.js +50 -0
- package/.build/shared/utils/types.js +1 -0
- package/.build/shared/utils/validate_schema.js +17 -0
- package/README.md +8 -0
- package/app/assets/{geode_objects.js → geode_objects.ts} +8 -1
- package/app/components/ActionButton.vue +28 -12
- package/app/components/Basic/Slider.vue +2 -2
- package/app/components/Basic/Switch.vue +2 -2
- package/app/components/CameraManager/List.vue +11 -11
- package/app/components/CameraManager/Saver.vue +8 -4
- package/app/components/CameraManager.vue +24 -12
- package/app/components/CameraOrientation.vue +31 -17
- package/app/components/ClippingPlaneCard.vue +13 -12
- package/app/components/ClippingPlanes.vue +31 -21
- package/app/components/CrsSelector.vue +26 -18
- package/app/components/DeleteDialog.vue +18 -16
- package/app/components/DragAndDrop.vue +55 -37
- package/app/components/DragAndDropInternal/DragAndDropInline.vue +31 -16
- package/app/components/DragAndDropInternal/DragAndDropOverlay.vue +32 -19
- package/app/components/ExtensionSelector.vue +34 -18
- package/app/components/FeedBack/ErrorBanner.vue +4 -3
- package/app/components/FeedBack/Snackers.vue +6 -5
- package/app/components/FetchingData.vue +8 -12
- package/app/components/FileSelector.vue +27 -17
- package/app/components/FileUploader.vue +51 -30
- package/app/components/GlassCard.vue +17 -13
- package/app/components/HybridRenderingView.vue +25 -12
- package/app/components/HybridViewerTooltip.vue +28 -26
- package/app/components/InfraConnected.vue +1 -1
- package/app/components/Launcher.vue +12 -10
- package/app/components/Loading/EcoMessages.vue +24 -13
- package/app/components/Loading/Header.vue +6 -7
- package/app/components/Loading/Progress.vue +6 -7
- package/app/components/Loading.vue +10 -14
- package/app/components/MissingFilesSelector.vue +35 -19
- package/app/components/ObjectSelector.vue +37 -21
- package/app/components/PackagesVersions.vue +16 -8
- package/app/components/Recaptcha.vue +17 -23
- package/app/components/RemoteRenderingView.vue +21 -15
- package/app/components/Ruler.vue +11 -9
- package/app/components/Screenshot.vue +25 -19
- package/app/components/SearchBar.vue +12 -6
- package/app/components/ShrinkFilter.vue +19 -14
- package/app/components/Step.vue +32 -12
- package/app/components/Stepper.vue +19 -7
- package/app/components/ToolPanel.vue +29 -13
- package/app/components/ViewToolbar.vue +53 -44
- package/app/components/Viewer/ContextMenu/CenterButton.vue +16 -9
- package/app/components/Viewer/ContextMenu/CircularItems.vue +13 -10
- package/app/components/Viewer/ContextMenu/ContextMenu.vue +40 -32
- package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +31 -17
- package/app/components/Viewer/ContextMenu/InfoCard.vue +38 -22
- package/app/components/Viewer/EdgedCurve/PointsOptions.vue +8 -5
- package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +67 -48
- package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +74 -50
- package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +69 -50
- package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +47 -35
- package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +91 -51
- package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +74 -49
- package/app/components/Viewer/Generic/Model/BlocksOptions.vue +115 -53
- package/app/components/Viewer/Generic/Model/CornersOptions.vue +75 -37
- package/app/components/Viewer/Generic/Model/EdgesOptions.vue +13 -9
- package/app/components/Viewer/Generic/Model/LinesOptions.vue +110 -61
- package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +32 -21
- package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +9 -5
- package/app/components/Viewer/Generic/Model/PointsOptions.vue +19 -13
- package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +119 -49
- package/app/components/Viewer/Grid/2D/CellsOptions.vue +8 -5
- package/app/components/Viewer/Grid/2D/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Grid/2D/PointsOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/CellsOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/FacetsOptions.vue +8 -5
- package/app/components/Viewer/Grid/3D/PointsOptions.vue +8 -5
- package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +120 -76
- package/app/components/Viewer/ObjectTree/Base/Controls.vue +25 -10
- package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +42 -17
- package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +22 -9
- package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +29 -14
- package/app/components/Viewer/ObjectTree/Box.vue +32 -15
- package/app/components/Viewer/ObjectTree/Layout.vue +55 -35
- package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +63 -34
- package/app/components/Viewer/ObjectTree/Views/{ModelCollections.vue → ModelTree.vue} +101 -39
- package/app/components/Viewer/Options/AttributeColorBar.vue +14 -6
- package/app/components/Viewer/Options/AttributeRangeSelector.vue +8 -4
- package/app/components/Viewer/Options/AttributeSelector.vue +64 -33
- package/app/components/Viewer/Options/ColorMapList.vue +52 -24
- package/app/components/Viewer/Options/ColorMapPicker.vue +15 -11
- package/app/components/Viewer/Options/ColorPicker.vue +239 -50
- package/app/components/Viewer/Options/ColoringTypeSelector.vue +87 -67
- package/app/components/Viewer/Options/ColormapQuickPicker.vue +16 -12
- package/app/components/Viewer/Options/OptionsSection.vue +7 -5
- package/app/components/Viewer/Options/Sliders/Size.vue +3 -3
- package/app/components/Viewer/Options/Sliders/Slider.vue +9 -6
- package/app/components/Viewer/Options/Sliders/Width.vue +3 -3
- package/app/components/Viewer/Options/TextureItem.vue +29 -22
- package/app/components/Viewer/Options/TexturesSelector.vue +23 -12
- package/app/components/Viewer/Options/VisibilitySwitch.vue +3 -3
- package/app/components/Viewer/OverlappingObjectsPicker.vue +27 -12
- package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +38 -26
- package/app/components/Viewer/Solid/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Solid/PointsOptions.vue +8 -5
- package/app/components/Viewer/Solid/PolygonsOptions.vue +8 -5
- package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +73 -48
- package/app/components/Viewer/Surface/EdgesOptions.vue +8 -5
- package/app/components/Viewer/Surface/PointsOptions.vue +8 -5
- package/app/components/Viewer/Surface/PolygonsOptions.vue +79 -49
- package/app/components/Viewer/Surface/Triangulated/TrianglesOptions.vue +8 -5
- package/app/components/Viewer/TetrahedralSolid/TetrahedraOptions.vue +8 -5
- package/app/components/Viewer/TetrahedralSolid/TrianglesOptions.vue +8 -5
- package/app/components/Viewer/Ui.vue +19 -14
- package/app/components/Wrapper.vue +16 -10
- package/app/components/ZScaling.vue +18 -10
- package/app/components/csv-preview/CsvPreviewer.vue +72 -50
- package/app/components/csv-preview/CsvSettings.vue +30 -50
- package/app/components/csv-preview/CsvTable.vue +34 -14
- package/app/composables/{batch_style.js → batch_style.ts} +9 -7
- package/app/composables/clipping_planes_widget.ts +204 -0
- package/app/composables/clipping_planes_widget_entries.ts +189 -0
- package/app/composables/copy_to_clipboard.ts +7 -0
- package/app/composables/global_attribute_style.ts +303 -0
- package/app/composables/hover_highlight.ts +127 -0
- package/app/composables/{model_collections.js → model_collections.ts} +28 -9
- package/app/composables/{model_components.js → model_components.ts} +28 -9
- package/app/composables/{project_manager.js → project_manager.ts} +77 -20
- package/app/composables/responsive_middle_truncate.ts +48 -0
- package/app/composables/{run_function_when_microservices_connected.js → run_function_when_microservices_connected.ts} +1 -1
- package/app/composables/stepper_tree.ts +79 -0
- package/app/composables/tree_filter.ts +194 -0
- package/app/composables/{tree_keyboard_nav.js → tree_keyboard_nav.ts} +62 -20
- package/app/composables/{tree_scroll.js → tree_scroll.ts} +61 -12
- package/app/composables/use_adaptive_styles.ts +186 -0
- package/app/composables/use_overlapping_picker.ts +263 -0
- package/app/composables/use_quick_colormap.ts +55 -0
- package/app/composables/virtual_tree.ts +271 -0
- package/app/composables/vtk_implicit_plane_widget.d.ts +2 -0
- package/app/plugins/{auto_store_register.js → auto_store_register.ts} +3 -5
- package/app/plugins/click_outside_ignore_snackbars.client.ts +36 -0
- package/app/stores/app.ts +252 -0
- package/app/stores/app_helpers/extension.ts +179 -0
- package/app/stores/{back.js → back.ts} +54 -28
- package/app/stores/camera_manager.ts +80 -0
- package/app/stores/{cloud.js → cloud.ts} +18 -13
- package/app/stores/data.ts +392 -0
- package/app/stores/data_helpers/collections.ts +138 -0
- package/app/stores/data_helpers/mesh.ts +169 -0
- package/app/stores/data_style.ts +167 -0
- package/app/stores/{feedback.js → feedback.ts} +19 -8
- package/app/stores/{hybrid_viewer.js → hybrid_viewer.ts} +49 -45
- package/app/stores/infra.ts +106 -0
- package/app/stores/{menu.js → menu.ts} +67 -36
- package/app/stores/treeview.ts +383 -0
- package/app/stores/{viewer.js → viewer.ts} +75 -42
- package/app/utils/attributes.ts +40 -0
- package/app/utils/clipping_planes.ts +222 -0
- package/app/utils/color_picker.js +54 -0
- package/app/utils/colormap.ts +102 -0
- package/app/utils/default_styles/{constants.js → constants.ts} +25 -12
- package/app/utils/default_styles/{index.js → index.ts} +4 -3
- package/app/utils/default_styles/meshes.ts +264 -0
- package/app/utils/default_styles/{models.js → models.ts} +106 -52
- package/app/utils/{extension.js → extension.ts} +63 -19
- package/app/utils/{import_workflow.js → import_workflow.ts} +39 -22
- package/app/utils/{log.js → log.ts} +12 -2
- package/app/utils/{name_cleaner.js → name_cleaner.ts} +6 -6
- package/app/utils/status.ts +19 -0
- package/app/utils/{stores.js → stores.ts} +5 -5
- package/app/utils/{string.js → string.ts} +6 -6
- package/app/utils/{treeview.js → treeview.ts} +4 -1
- package/internal/database/{base_database.js → base_database.ts} +7 -3
- package/internal/database/database.ts +102 -0
- package/internal/database/{extended_database.js → extended_database.ts} +5 -1
- package/internal/database/tables/camera_positions.ts +6 -0
- package/internal/database/tables/{data.js → data.ts} +3 -1
- package/internal/database/tables/data_style.ts +6 -0
- package/internal/database/tables/model_component_datastyle.ts +6 -0
- package/internal/database/tables/model_component_type_datastyle.ts +6 -0
- package/internal/database/tables/model_components.ts +6 -0
- package/internal/database/tables/model_components_relation.ts +6 -0
- package/internal/database/tables/table_definition.ts +5 -0
- package/internal/stores/data_style/mesh/cells/cell.ts +279 -0
- package/internal/stores/data_style/mesh/cells/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/cells/common.ts +50 -0
- package/internal/stores/data_style/mesh/cells/index.ts +161 -0
- package/internal/stores/data_style/mesh/cells/{textures.js → textures.ts} +14 -8
- package/internal/stores/data_style/mesh/cells/vertex.ts +285 -0
- package/internal/stores/data_style/mesh/cells/visibility.ts +46 -0
- package/internal/stores/data_style/mesh/edges/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/edges/common.ts +41 -0
- package/internal/stores/data_style/mesh/edges/edge.ts +279 -0
- package/internal/stores/data_style/mesh/edges/index.ts +155 -0
- package/internal/stores/data_style/mesh/edges/vertex.ts +285 -0
- package/internal/stores/data_style/mesh/edges/visibility.ts +45 -0
- package/internal/stores/data_style/mesh/edges/width.ts +42 -0
- package/internal/stores/data_style/mesh/{index.js → index.ts} +34 -14
- package/internal/stores/data_style/mesh/points/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/points/common.ts +51 -0
- package/internal/stores/data_style/mesh/points/index.ts +133 -0
- package/internal/stores/data_style/mesh/points/size.ts +43 -0
- package/internal/stores/data_style/mesh/points/vertex.ts +285 -0
- package/internal/stores/data_style/mesh/points/visibility.ts +49 -0
- package/internal/stores/data_style/mesh/polygons/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/polygons/common.ts +50 -0
- package/internal/stores/data_style/mesh/polygons/index.ts +167 -0
- package/internal/stores/data_style/mesh/polygons/polygon.ts +282 -0
- package/internal/stores/data_style/mesh/polygons/{textures.js → textures.ts} +14 -8
- package/internal/stores/data_style/mesh/polygons/vertex.ts +288 -0
- package/internal/stores/data_style/mesh/polygons/visibility.ts +48 -0
- package/internal/stores/data_style/mesh/polyhedra/{color.js → color.ts} +13 -7
- package/internal/stores/data_style/mesh/polyhedra/common.ts +41 -0
- package/internal/stores/data_style/mesh/polyhedra/index.ts +157 -0
- package/internal/stores/data_style/mesh/polyhedra/polyhedron.ts +294 -0
- package/internal/stores/data_style/mesh/polyhedra/vertex.ts +288 -0
- package/internal/stores/data_style/mesh/polyhedra/visibility.ts +48 -0
- package/internal/stores/data_style/model/blocks/{color.js → color.ts} +50 -13
- package/internal/stores/data_style/model/blocks/common.ts +67 -0
- package/internal/stores/data_style/model/blocks/{index.js → index.ts} +111 -66
- package/internal/stores/data_style/model/blocks/polyhedron.ts +363 -0
- package/internal/stores/data_style/model/blocks/vertex.ts +349 -0
- package/internal/stores/data_style/model/blocks/visibility.ts +37 -0
- package/internal/stores/data_style/model/color.ts +348 -0
- package/internal/stores/data_style/model/common.ts +262 -0
- package/internal/stores/data_style/model/corners/{color.js → color.ts} +49 -10
- package/internal/stores/data_style/model/corners/common.ts +71 -0
- package/internal/stores/data_style/model/corners/{index.js → index.ts} +86 -47
- package/internal/stores/data_style/model/corners/vertex.ts +315 -0
- package/internal/stores/data_style/model/corners/visibility.ts +39 -0
- package/internal/stores/data_style/model/edges/common.ts +29 -0
- package/internal/stores/data_style/model/edges/{index.js → index.ts} +2 -7
- package/internal/stores/data_style/model/edges/visibility.ts +55 -0
- package/internal/stores/data_style/model/{index.js → index.ts} +24 -11
- package/internal/stores/data_style/model/lines/{color.js → color.ts} +47 -10
- package/internal/stores/data_style/model/lines/common.ts +63 -0
- package/internal/stores/data_style/model/lines/edge.ts +343 -0
- package/internal/stores/data_style/model/lines/{index.js → index.ts} +108 -66
- package/internal/stores/data_style/model/lines/vertex.ts +344 -0
- package/internal/stores/data_style/model/lines/visibility.ts +37 -0
- package/internal/stores/data_style/model/points/common.ts +25 -0
- package/internal/stores/data_style/model/points/index.ts +35 -0
- package/internal/stores/data_style/model/points/size.ts +44 -0
- package/internal/stores/data_style/model/points/visibility.ts +46 -0
- package/internal/stores/data_style/model/selection.ts +138 -0
- package/internal/stores/data_style/model/surfaces/{color.js → color.ts} +47 -10
- package/internal/stores/data_style/model/surfaces/common.ts +69 -0
- package/internal/stores/data_style/model/surfaces/{index.js → index.ts} +113 -66
- package/internal/stores/data_style/model/surfaces/polygon.ts +347 -0
- package/internal/stores/data_style/model/surfaces/vertex.ts +351 -0
- package/internal/stores/data_style/model/surfaces/visibility.ts +37 -0
- package/internal/stores/data_style/model/{visibility.js → visibility.ts} +112 -32
- package/internal/stores/data_style/state.ts +281 -0
- package/internal/stores/data_style/types.ts +30 -0
- package/internal/stores/hybrid_viewer/brightness.ts +124 -0
- package/internal/stores/hybrid_viewer/camera.ts +326 -0
- package/internal/stores/hybrid_viewer/{camera_animation.js → camera_animation.ts} +30 -12
- package/internal/stores/hybrid_viewer/{constants.js → constants.ts} +2 -2
- package/internal/stores/hybrid_viewer/core.ts +64 -0
- package/internal/stores/hybrid_viewer/{filters.js → filters.ts} +10 -13
- package/internal/stores/hybrid_viewer/highlight.ts +183 -0
- package/internal/stores/hybrid_viewer/{ruler.js → ruler.ts} +50 -22
- package/internal/stores/hybrid_viewer/scene.ts +125 -0
- package/internal/stores/hybrid_viewer/viewport.ts +177 -0
- package/internal/stores/hybrid_viewer/vtk_types.ts +58 -0
- package/internal/utils/api_fetch.ts +133 -0
- package/internal/utils/upload_file.ts +115 -0
- package/internal/utils/viewer_call.ts +99 -0
- package/internal/utils/ws_client.ts +54 -0
- package/nuxt.config.ts +168 -0
- package/opengeodeweb_front_schemas.json +2 -2
- package/package.json +49 -13
- package/server/api/cloud/extensions/{run.post.js → run.post.ts} +16 -12
- package/server/api/local/app/project_folder_path.post.ts +33 -0
- package/server/api/local/app/run_back.post.ts +39 -0
- package/server/api/local/app/run_viewer.post.ts +39 -0
- package/server/api/local/extensions/{kill.post.js → kill.post.ts} +15 -8
- package/server/api/local/extensions/{run.post.js → run.post.ts} +17 -12
- package/server/api/local/extensions/upload.put.ts +71 -0
- package/server/api/microservice/app/{get_is_app_ready.get.js → get_is_app_ready.get.ts} +5 -5
- package/server/api/microservice/app/schemas/get_is_app_ready.json +1 -1
- package/server/api/microservice/app/set_app_base_url.post.ts +29 -0
- package/server/api/microservice/app/set_back_base_url.post.ts +26 -0
- package/server/api/microservice/app/set_is_app_ready.post.ts +29 -0
- package/server/api/microservice/app/set_viewer_base_url.post.ts +26 -0
- package/server/api/microservice/extensions/{download.post.js → download.post.ts} +13 -6
- package/server/api/serverless/run_cloud.post.ts +92 -0
- package/server/utils/{app_config.js → app_config.ts} +40 -18
- package/server/utils/{cleanup.js → cleanup.ts} +76 -29
- package/server/utils/{cloud.js → cloud.ts} +33 -17
- package/server/utils/{extension.js → extension.ts} +31 -4
- package/server/utils/{microservices.js → microservices.ts} +68 -27
- package/server/utils/{path.js → path.ts} +36 -17
- package/server/utils/{scripts.js → scripts.ts} +49 -33
- package/server/utils/{server.js → server.ts} +13 -6
- package/server/utils/server_config.ts +74 -0
- package/server/utils/stream.ts +6 -0
- package/server/utils/ws_client.ts +165 -0
- package/shared/{scripts.js → scripts.ts} +15 -10
- package/shared/utils/call_raw.ts +73 -0
- package/shared/utils/{call_schema.js → call_schema.ts} +15 -6
- package/shared/utils/fetch_raw.ts +125 -0
- package/shared/utils/{fetch_schema.js → fetch_schema.ts} +16 -7
- package/shared/utils/file.ts +22 -0
- package/shared/utils/{parse_boolean.js → parse_boolean.ts} +1 -1
- package/shared/utils/response_handlers/load.ts +109 -0
- package/shared/utils/types.ts +27 -0
- package/shared/utils/{validate_schema.js → validate_schema.ts} +3 -1
- package/.github/workflows/config.json +0 -5
- package/.github/workflows/deploy.yml +0 -15
- package/.github/workflows/manual_release.yml +0 -11
- package/.github/workflows/merge_request.yml +0 -9
- package/.github/workflows/pr_update.yml +0 -11
- package/.github/workflows/prepare_deploy.yml +0 -9
- package/.github/workflows/schedule.yml +0 -18
- package/.github/workflows/test.yml +0 -14
- package/.github/workflows/test_pr.yml +0 -12
- package/.oxlintrc.json +0 -150
- package/.releaserc +0 -11
- package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +0 -224
- package/app/composables/clipping_planes_widget.js +0 -249
- package/app/composables/global_attribute_style.js +0 -181
- package/app/composables/hover_highlight.js +0 -91
- package/app/composables/responsive_middle_truncate.js +0 -34
- package/app/composables/stepper_tree.js +0 -56
- package/app/composables/tree_filter.js +0 -138
- package/app/composables/use_adaptive_styles.js +0 -120
- package/app/composables/use_overlapping_picker.js +0 -169
- package/app/composables/use_quick_colormap.js +0 -32
- package/app/composables/virtual_tree.js +0 -191
- package/app/stores/app.js +0 -326
- package/app/stores/camera_manager.js +0 -57
- package/app/stores/data.js +0 -278
- package/app/stores/data_helpers/collections.js +0 -96
- package/app/stores/data_helpers/mesh.js +0 -122
- package/app/stores/data_style.js +0 -116
- package/app/stores/infra.js +0 -95
- package/app/stores/treeview.js +0 -290
- package/app/utils/attributes.js +0 -23
- package/app/utils/clipping_planes.js +0 -110
- package/app/utils/colormap.js +0 -64
- package/app/utils/default_styles/meshes.js +0 -191
- package/app/utils/status.js +0 -10
- package/commitlint.config.js +0 -20
- package/internal/database/database.js +0 -80
- package/internal/database/tables/camera_positions.js +0 -4
- package/internal/database/tables/data_style.js +0 -4
- package/internal/database/tables/model_component_datastyle.js +0 -4
- package/internal/database/tables/model_component_type_datastyle.js +0 -4
- package/internal/database/tables/model_components.js +0 -4
- package/internal/database/tables/model_components_relation.js +0 -4
- package/internal/stores/data_style/mesh/cells/cell.js +0 -196
- package/internal/stores/data_style/mesh/cells/common.js +0 -39
- package/internal/stores/data_style/mesh/cells/index.js +0 -81
- package/internal/stores/data_style/mesh/cells/vertex.js +0 -193
- package/internal/stores/data_style/mesh/cells/visibility.js +0 -35
- package/internal/stores/data_style/mesh/edges/common.js +0 -32
- package/internal/stores/data_style/mesh/edges/edge.js +0 -195
- package/internal/stores/data_style/mesh/edges/index.js +0 -81
- package/internal/stores/data_style/mesh/edges/vertex.js +0 -196
- package/internal/stores/data_style/mesh/edges/visibility.js +0 -34
- package/internal/stores/data_style/mesh/edges/width.js +0 -34
- package/internal/stores/data_style/mesh/points/common.js +0 -37
- package/internal/stores/data_style/mesh/points/index.js +0 -82
- package/internal/stores/data_style/mesh/points/size.js +0 -35
- package/internal/stores/data_style/mesh/points/vertex.js +0 -193
- package/internal/stores/data_style/mesh/points/visibility.js +0 -37
- package/internal/stores/data_style/mesh/polygons/common.js +0 -32
- package/internal/stores/data_style/mesh/polygons/index.js +0 -107
- package/internal/stores/data_style/mesh/polygons/polygon.js +0 -196
- package/internal/stores/data_style/mesh/polygons/vertex.js +0 -196
- package/internal/stores/data_style/mesh/polygons/visibility.js +0 -38
- package/internal/stores/data_style/mesh/polyhedra/common.js +0 -32
- package/internal/stores/data_style/mesh/polyhedra/index.js +0 -98
- package/internal/stores/data_style/mesh/polyhedra/polyhedron.js +0 -196
- package/internal/stores/data_style/mesh/polyhedra/vertex.js +0 -196
- package/internal/stores/data_style/mesh/polyhedra/visibility.js +0 -38
- package/internal/stores/data_style/model/blocks/common.js +0 -51
- package/internal/stores/data_style/model/blocks/polyhedron.js +0 -215
- package/internal/stores/data_style/model/blocks/vertex.js +0 -204
- package/internal/stores/data_style/model/blocks/visibility.js +0 -20
- package/internal/stores/data_style/model/color.js +0 -218
- package/internal/stores/data_style/model/common.js +0 -141
- package/internal/stores/data_style/model/corners/common.js +0 -51
- package/internal/stores/data_style/model/corners/vertex.js +0 -204
- package/internal/stores/data_style/model/corners/visibility.js +0 -20
- package/internal/stores/data_style/model/edges/common.js +0 -20
- package/internal/stores/data_style/model/edges/visibility.js +0 -38
- package/internal/stores/data_style/model/lines/common.js +0 -51
- package/internal/stores/data_style/model/lines/edge.js +0 -203
- package/internal/stores/data_style/model/lines/vertex.js +0 -204
- package/internal/stores/data_style/model/lines/visibility.js +0 -20
- package/internal/stores/data_style/model/points/common.js +0 -20
- package/internal/stores/data_style/model/points/index.js +0 -25
- package/internal/stores/data_style/model/points/size.js +0 -36
- package/internal/stores/data_style/model/points/visibility.js +0 -36
- package/internal/stores/data_style/model/selection.js +0 -89
- package/internal/stores/data_style/model/surfaces/common.js +0 -51
- package/internal/stores/data_style/model/surfaces/polygon.js +0 -215
- package/internal/stores/data_style/model/surfaces/vertex.js +0 -215
- package/internal/stores/data_style/model/surfaces/visibility.js +0 -20
- package/internal/stores/data_style/state.js +0 -197
- package/internal/stores/hybrid_viewer/brightness.js +0 -82
- package/internal/stores/hybrid_viewer/camera.js +0 -274
- package/internal/stores/hybrid_viewer/highlight.js +0 -170
- package/internal/stores/hybrid_viewer/scene.js +0 -136
- package/internal/stores/hybrid_viewer/viewport.js +0 -140
- package/internal/utils/api_fetch.js +0 -52
- package/internal/utils/upload_file.js +0 -57
- package/internal/utils/viewer_call.js +0 -49
- package/internal/utils/ws_client.js +0 -29
- package/nuxt.config.js +0 -106
- package/scripts/generate_geode_objects.js +0 -24
- package/server/api/local/app/project_folder_path.post.js +0 -29
- package/server/api/local/app/run_back.post.js +0 -33
- package/server/api/local/app/run_viewer.post.js +0 -33
- package/server/api/local/extensions/upload.put.js +0 -72
- package/server/api/microservice/app/set_app_base_url.post.js +0 -25
- package/server/api/microservice/app/set_back_base_url.post.js +0 -22
- package/server/api/microservice/app/set_is_app_ready.post.js +0 -25
- package/server/api/microservice/app/set_viewer_base_url.post.js +0 -22
- package/server/api/serverless/run_cloud.post.js +0 -44
- package/server/utils/server_config.js +0 -58
- package/server/utils/ws_client.js +0 -112
- package/shared/utils/call_raw.js +0 -46
- package/shared/utils/fetch_raw.js +0 -61
- package/shared/utils/file.js +0 -16
- package/shared/utils/response_handlers/load.js +0 -74
- package/tests/integration/data/uploads/test.og_brep +0 -0
- package/tests/integration/data/uploads/test.og_edc2d +0 -0
- package/tests/integration/data/uploads/test.og_edc3d +0 -0
- package/tests/integration/data/uploads/test.og_psf3d +0 -0
- package/tests/integration/data/uploads/test.og_rgd2d +0 -0
- package/tests/integration/data/uploads/test.og_rgd3d +0 -0
- package/tests/integration/data/uploads/test.vtu +0 -22
- package/tests/integration/setup.js +0 -92
- package/tests/integration/stores/data_style/mesh/cells.nuxt.test.js +0 -343
- package/tests/integration/stores/data_style/mesh/edges.nuxt.test.js +0 -254
- package/tests/integration/stores/data_style/mesh/index.nuxt.test.js +0 -62
- package/tests/integration/stores/data_style/mesh/points.nuxt.test.js +0 -201
- package/tests/integration/stores/data_style/mesh/polygons.nuxt.test.js +0 -260
- package/tests/integration/stores/data_style/mesh/polyhedra.nuxt.test.js +0 -267
- package/tests/integration/stores/data_style/model/blocks.nuxt.test.js +0 -397
- package/tests/integration/stores/data_style/model/corners.nuxt.test.js +0 -264
- package/tests/integration/stores/data_style/model/edges.nuxt.test.js +0 -71
- package/tests/integration/stores/data_style/model/index.nuxt.test.js +0 -92
- package/tests/integration/stores/data_style/model/lines.nuxt.test.js +0 -379
- package/tests/integration/stores/data_style/model/points.nuxt.test.js +0 -95
- package/tests/integration/stores/data_style/model/surfaces.nuxt.test.js +0 -574
- package/tests/integration/stores/viewer.nuxt.test.js +0 -69
- package/tests/setup_indexeddb.js +0 -4
- package/tests/unit/components/CrsSelector.nuxt.test.js +0 -55
- package/tests/unit/components/DragAndDrop.nuxt.test.js +0 -89
- package/tests/unit/components/ExtensionSelector.nuxt.test.js +0 -65
- package/tests/unit/components/FeedBack/ErrorsBanner.nuxt.test.js +0 -41
- package/tests/unit/components/FeedBack/Snackers.nuxt.test.js +0 -49
- package/tests/unit/components/FileSelector.nuxt.test.js +0 -124
- package/tests/unit/components/FileUploader.nuxt.test.js +0 -69
- package/tests/unit/components/MissingFilesSelector.nuxt.test.js +0 -77
- package/tests/unit/components/ObjectSelector.nuxt.test.js +0 -118
- package/tests/unit/components/PackagesVersions.nuxt.test.js +0 -42
- package/tests/unit/components/Step.nuxt.test.js +0 -51
- package/tests/unit/components/Stepper.nuxt.test.js +0 -41
- package/tests/unit/components/ToolPanel.nuxt.test.js +0 -66
- package/tests/unit/composables/api_fetch.nuxt.test.js +0 -75
- package/tests/unit/composables/project_manager.nuxt.test.js +0 -299
- package/tests/unit/composables/run_function_when_microservices_connected.nuxt.test.js +0 -57
- package/tests/unit/composables/upload_file.nuxt.test.js +0 -45
- package/tests/unit/composables/virtual_tree.nuxt.test.js +0 -63
- package/tests/unit/plugins/project_load.nuxt.test.js +0 -98
- package/tests/unit/stores/app.nuxt.test.js +0 -189
- package/tests/unit/stores/back.nuxt.test.js +0 -147
- package/tests/unit/stores/cloud.nuxt.test.js +0 -90
- package/tests/unit/stores/data.nuxt.test.js +0 -162
- package/tests/unit/stores/feedback.nuxt.test.js +0 -90
- package/tests/unit/stores/infra.nuxt.test.js +0 -313
- package/tests/unit/stores/treeview.nuxt.test.js +0 -63
- package/tests/unit/stores/viewer.nuxt.test.js +0 -161
- package/tests/unit/utils/validate_schema.nuxt.test.js +0 -38
- package/tests/utils.js +0 -20
- package/tests/vitest.config.js +0 -67
- /package/server/api/local/app/{kill.post.js → kill.post.ts} +0 -0
- /package/shared/{app_mode.js → app_mode.ts} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useModelBlocksCommonStyle } from "./common";
|
|
2
|
+
import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
|
|
3
|
+
import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
|
|
4
|
+
|
|
5
|
+
const schema = viewer_schemas.opengeodeweb_viewer.model.blocks.visibility;
|
|
6
|
+
|
|
7
|
+
export function useModelBlocksVisibility(): {
|
|
8
|
+
setModelBlocksVisibility: (
|
|
9
|
+
modelId: string,
|
|
10
|
+
blocks_ids: string[],
|
|
11
|
+
visibility: boolean | undefined,
|
|
12
|
+
) => Promise<unknown>;
|
|
13
|
+
modelBlockVisibility: (id: string, block_id?: string) => unknown;
|
|
14
|
+
} {
|
|
15
|
+
const modelCommonStyle = useModelCommonStyle();
|
|
16
|
+
const modelBlocksCommonStyle = useModelBlocksCommonStyle();
|
|
17
|
+
|
|
18
|
+
function modelBlockVisibility(id: string, block_id?: string): unknown {
|
|
19
|
+
return modelBlocksCommonStyle.modelBlockStyle(id, block_id).visibility;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async function setModelBlocksVisibility(
|
|
23
|
+
modelId: string,
|
|
24
|
+
blocks_ids: string[],
|
|
25
|
+
visibility: boolean | undefined,
|
|
26
|
+
): Promise<unknown> {
|
|
27
|
+
const result = await modelCommonStyle.setModelTypeVisibility(
|
|
28
|
+
modelId,
|
|
29
|
+
blocks_ids,
|
|
30
|
+
visibility,
|
|
31
|
+
schema,
|
|
32
|
+
);
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return { setModelBlocksVisibility, modelBlockVisibility };
|
|
37
|
+
}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
// oxlint-disable eslint/max-lines
|
|
2
|
+
import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
|
|
3
|
+
import { dispatchToComponentTypes } from "./visibility";
|
|
4
|
+
import { useDataStore } from "@ogw_front/stores/data";
|
|
5
|
+
import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
|
|
6
|
+
import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
|
|
7
|
+
|
|
8
|
+
// The four per-component-type style composables (Surface/Line/Block/Corner) each expose a different, large set of methods (color, visibility, per-attribute-kind getters/setters...). This module only cares about looking a handful of them up dynamically by name (built into ATTRIBUTE_FUNCTIONS below), so a precise structural type for componentStyleFunctions isn't worth modelling here; `any` keeps the dynamic dispatch table honest about that.
|
|
9
|
+
// oxlint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
type ComponentStyleFunctions = Record<"Surface" | "Line" | "Block" | "Corner", any>;
|
|
11
|
+
|
|
12
|
+
interface AttributeAccessors {
|
|
13
|
+
getName: (modelId: string, componentId: string) => string | undefined;
|
|
14
|
+
setName: (modelId: string, componentIds: string[], name: string) => unknown;
|
|
15
|
+
getRange: (modelId: string, componentId: string) => [number | undefined, number | undefined];
|
|
16
|
+
setRange: (modelId: string, componentIds: string[], minimum: number, maximum: number) => unknown;
|
|
17
|
+
getColorMap: (modelId: string, componentId: string) => string | undefined;
|
|
18
|
+
setColorMap: (modelId: string, componentIds: string[], colorMap: string) => unknown;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// The signatures below describe just the per-attribute-kind methods this module reads off each dynamically-typed composable (see the `any` in ComponentStyleFunctions above). `attributeFn` narrows one such method to its known signature so every downstream read/call is a real, checked type instead of `any`.
|
|
22
|
+
type AttributeNameFn = (modelId: string, componentId: string) => string | undefined;
|
|
23
|
+
type SetAttributeNameFn = (modelId: string, componentIds: string[], name: string) => unknown;
|
|
24
|
+
type AttributeRangeFn = (
|
|
25
|
+
modelId: string,
|
|
26
|
+
componentId: string,
|
|
27
|
+
) => [number | undefined, number | undefined];
|
|
28
|
+
type SetAttributeRangeFn = (
|
|
29
|
+
modelId: string,
|
|
30
|
+
componentIds: string[],
|
|
31
|
+
minimum: number,
|
|
32
|
+
maximum: number,
|
|
33
|
+
) => unknown;
|
|
34
|
+
type AttributeColorMapFn = (modelId: string, componentId: string) => string | undefined;
|
|
35
|
+
type SetAttributeColorMapFn = (
|
|
36
|
+
modelId: string,
|
|
37
|
+
componentIds: string[],
|
|
38
|
+
colorMap: string,
|
|
39
|
+
) => unknown;
|
|
40
|
+
type DynamicStyleFunctions = Record<string, unknown>;
|
|
41
|
+
|
|
42
|
+
// oxlint-disable-next-line no-unnecessary-type-parameters -- Signature narrows a dynamically-looked-up method to its known call signature; see comment above.
|
|
43
|
+
function attributeFn<Signature>(method: unknown): Signature {
|
|
44
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- narrowing a dynamically-looked-up method to its known call signature; see comment above.
|
|
45
|
+
return method as Signature;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// oxlint-disable-next-line max-lines-per-function
|
|
49
|
+
function useModelColorStyle(componentStyleFunctions: ComponentStyleFunctions): {
|
|
50
|
+
getModelColor: (modelId: string) => unknown;
|
|
51
|
+
getModelActiveColoring: (modelId: string) => unknown;
|
|
52
|
+
getModelComponentColor: (modelId: string, componentId: string) => unknown;
|
|
53
|
+
getModelComponentEffectiveColor: (modelId: string, componentId: string, type: string) => unknown;
|
|
54
|
+
getModelComponentActiveColoring: (modelId: string, componentId: string) => unknown;
|
|
55
|
+
modelComponentTypeColor: (modelId: string, type: string) => unknown;
|
|
56
|
+
getModelComponentTypeActiveColoring: (modelId: string, type: string) => unknown;
|
|
57
|
+
setModelComponentTypeColor: (modelId: string, type: string, color: unknown) => Promise<void>;
|
|
58
|
+
setModelComponentTypeActiveColoring: (
|
|
59
|
+
modelId: string,
|
|
60
|
+
type: string,
|
|
61
|
+
activeColoring: string,
|
|
62
|
+
) => Promise<void>;
|
|
63
|
+
setModelComponentActiveColoring: (
|
|
64
|
+
modelId: string,
|
|
65
|
+
componentId: string,
|
|
66
|
+
activeColoring: string,
|
|
67
|
+
) => Promise<void>;
|
|
68
|
+
setModelComponentsColor: (
|
|
69
|
+
modelId: string,
|
|
70
|
+
componentIds: string[],
|
|
71
|
+
color: unknown,
|
|
72
|
+
activeColoring?: string,
|
|
73
|
+
) => Promise<unknown[]>;
|
|
74
|
+
} {
|
|
75
|
+
const dataStore = useDataStore();
|
|
76
|
+
const dataStyleState = useDataStyleState();
|
|
77
|
+
const modelCommonStyle = useModelCommonStyle();
|
|
78
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- componentStyleFunctions is a dynamic dispatch table typed any by design; see ComponentStyleFunctions comment above.
|
|
79
|
+
const Surface = componentStyleFunctions.Surface as DynamicStyleFunctions;
|
|
80
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- componentStyleFunctions is a dynamic dispatch table typed any by design; see ComponentStyleFunctions comment above.
|
|
81
|
+
const Line = componentStyleFunctions.Line as DynamicStyleFunctions;
|
|
82
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- componentStyleFunctions is a dynamic dispatch table typed any by design; see ComponentStyleFunctions comment above.
|
|
83
|
+
const Block = componentStyleFunctions.Block as DynamicStyleFunctions;
|
|
84
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- componentStyleFunctions is a dynamic dispatch table typed any by design; see ComponentStyleFunctions comment above.
|
|
85
|
+
const Corner = componentStyleFunctions.Corner as DynamicStyleFunctions;
|
|
86
|
+
const ATTRIBUTE_FUNCTIONS: Record<string, Record<string, AttributeAccessors>> = {
|
|
87
|
+
Surface: {
|
|
88
|
+
vertex: {
|
|
89
|
+
getName: attributeFn<AttributeNameFn>(Surface.modelSurfacesVertexAttributeName),
|
|
90
|
+
setName: attributeFn<SetAttributeNameFn>(Surface.setModelSurfacesVertexAttributeName),
|
|
91
|
+
getRange: attributeFn<AttributeRangeFn>(Surface.modelSurfacesVertexAttributeRange),
|
|
92
|
+
setRange: attributeFn<SetAttributeRangeFn>(Surface.setModelSurfacesVertexAttributeRange),
|
|
93
|
+
getColorMap: attributeFn<AttributeColorMapFn>(Surface.modelSurfacesVertexAttributeColorMap),
|
|
94
|
+
setColorMap: attributeFn<SetAttributeColorMapFn>(
|
|
95
|
+
Surface.setModelSurfacesVertexAttributeColorMap,
|
|
96
|
+
),
|
|
97
|
+
},
|
|
98
|
+
polygon: {
|
|
99
|
+
getName: attributeFn<AttributeNameFn>(Surface.modelSurfacesPolygonAttributeName),
|
|
100
|
+
setName: attributeFn<SetAttributeNameFn>(Surface.setModelSurfacesPolygonAttributeName),
|
|
101
|
+
getRange: attributeFn<AttributeRangeFn>(Surface.modelSurfacesPolygonAttributeRange),
|
|
102
|
+
setRange: attributeFn<SetAttributeRangeFn>(Surface.setModelSurfacesPolygonAttributeRange),
|
|
103
|
+
getColorMap: attributeFn<AttributeColorMapFn>(
|
|
104
|
+
Surface.modelSurfacesPolygonAttributeColorMap,
|
|
105
|
+
),
|
|
106
|
+
setColorMap: attributeFn<SetAttributeColorMapFn>(
|
|
107
|
+
Surface.setModelSurfacesPolygonAttributeColorMap,
|
|
108
|
+
),
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
Line: {
|
|
112
|
+
vertex: {
|
|
113
|
+
getName: attributeFn<AttributeNameFn>(Line.modelLinesVertexAttributeName),
|
|
114
|
+
setName: attributeFn<SetAttributeNameFn>(Line.setModelLinesVertexAttributeName),
|
|
115
|
+
getRange: attributeFn<AttributeRangeFn>(Line.modelLinesVertexAttributeRange),
|
|
116
|
+
setRange: attributeFn<SetAttributeRangeFn>(Line.setModelLinesVertexAttributeRange),
|
|
117
|
+
getColorMap: attributeFn<AttributeColorMapFn>(Line.modelLinesVertexAttributeColorMap),
|
|
118
|
+
setColorMap: attributeFn<SetAttributeColorMapFn>(Line.setModelLinesVertexAttributeColorMap),
|
|
119
|
+
},
|
|
120
|
+
edge: {
|
|
121
|
+
getName: attributeFn<AttributeNameFn>(Line.modelLinesEdgeAttributeName),
|
|
122
|
+
setName: attributeFn<SetAttributeNameFn>(Line.setModelLinesEdgeAttributeName),
|
|
123
|
+
getRange: attributeFn<AttributeRangeFn>(Line.modelLinesEdgeAttributeRange),
|
|
124
|
+
setRange: attributeFn<SetAttributeRangeFn>(Line.setModelLinesEdgeAttributeRange),
|
|
125
|
+
getColorMap: attributeFn<AttributeColorMapFn>(Line.modelLinesEdgeAttributeColorMap),
|
|
126
|
+
setColorMap: attributeFn<SetAttributeColorMapFn>(Line.setModelLinesEdgeAttributeColorMap),
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
Block: {
|
|
130
|
+
vertex: {
|
|
131
|
+
getName: attributeFn<AttributeNameFn>(Block.modelBlocksVertexAttributeName),
|
|
132
|
+
setName: attributeFn<SetAttributeNameFn>(Block.setModelBlocksVertexAttributeName),
|
|
133
|
+
getRange: attributeFn<AttributeRangeFn>(Block.modelBlocksVertexAttributeRange),
|
|
134
|
+
setRange: attributeFn<SetAttributeRangeFn>(Block.setModelBlocksVertexAttributeRange),
|
|
135
|
+
getColorMap: attributeFn<AttributeColorMapFn>(Block.modelBlocksVertexAttributeColorMap),
|
|
136
|
+
setColorMap: attributeFn<SetAttributeColorMapFn>(
|
|
137
|
+
Block.setModelBlocksVertexAttributeColorMap,
|
|
138
|
+
),
|
|
139
|
+
},
|
|
140
|
+
polyhedron: {
|
|
141
|
+
getName: attributeFn<AttributeNameFn>(Block.modelBlocksPolyhedronAttributeName),
|
|
142
|
+
setName: attributeFn<SetAttributeNameFn>(Block.setModelBlocksPolyhedronAttributeName),
|
|
143
|
+
getRange: attributeFn<AttributeRangeFn>(Block.modelBlocksPolyhedronAttributeRange),
|
|
144
|
+
setRange: attributeFn<SetAttributeRangeFn>(Block.setModelBlocksPolyhedronAttributeRange),
|
|
145
|
+
getColorMap: attributeFn<AttributeColorMapFn>(Block.modelBlocksPolyhedronAttributeColorMap),
|
|
146
|
+
setColorMap: attributeFn<SetAttributeColorMapFn>(
|
|
147
|
+
Block.setModelBlocksPolyhedronAttributeColorMap,
|
|
148
|
+
),
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
Corner: {
|
|
152
|
+
vertex: {
|
|
153
|
+
getName: attributeFn<AttributeNameFn>(Corner.modelCornersVertexAttributeName),
|
|
154
|
+
setName: attributeFn<SetAttributeNameFn>(Corner.setModelCornersVertexAttributeName),
|
|
155
|
+
getRange: attributeFn<AttributeRangeFn>(Corner.modelCornersVertexAttributeRange),
|
|
156
|
+
setRange: attributeFn<SetAttributeRangeFn>(Corner.setModelCornersVertexAttributeRange),
|
|
157
|
+
getColorMap: attributeFn<AttributeColorMapFn>(Corner.modelCornersVertexAttributeColorMap),
|
|
158
|
+
setColorMap: attributeFn<SetAttributeColorMapFn>(
|
|
159
|
+
Corner.setModelCornersVertexAttributeColorMap,
|
|
160
|
+
),
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
function getModelComponentColor(modelId: string, componentId: string): unknown {
|
|
165
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
166
|
+
const coloring = dataStyleState.getComponentStyle(modelId, componentId).coloring as StyleValues;
|
|
167
|
+
return coloring.constant;
|
|
168
|
+
}
|
|
169
|
+
function modelComponentTypeColor(modelId: string, type: string): unknown {
|
|
170
|
+
const groupStyle = dataStyleState.getModelComponentTypeStyle(modelId, type);
|
|
171
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
172
|
+
const groupColoring = groupStyle.coloring as StyleValues;
|
|
173
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- style values are stored as loosely-typed StyleValues records; see StyleValues definition.
|
|
174
|
+
const typeStyle = dataStyleState.getStyle(modelId)[`${type.toLowerCase()}s`] as StyleValues;
|
|
175
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
176
|
+
const typeColoring = typeStyle.coloring as StyleValues;
|
|
177
|
+
return groupColoring.constant ?? typeColoring.constant;
|
|
178
|
+
}
|
|
179
|
+
function getModelComponentEffectiveColor(
|
|
180
|
+
modelId: string,
|
|
181
|
+
componentId: string,
|
|
182
|
+
type: string,
|
|
183
|
+
): unknown {
|
|
184
|
+
const individualColor = getModelComponentColor(modelId, componentId);
|
|
185
|
+
if (individualColor !== undefined) {
|
|
186
|
+
return individualColor;
|
|
187
|
+
}
|
|
188
|
+
return modelComponentTypeColor(modelId, type);
|
|
189
|
+
}
|
|
190
|
+
function getModelComponentActiveColoring(modelId: string, componentId: string): unknown {
|
|
191
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
192
|
+
const coloring = dataStyleState.getComponentStyle(modelId, componentId).coloring as StyleValues;
|
|
193
|
+
return coloring.active;
|
|
194
|
+
}
|
|
195
|
+
function getModelComponentTypeActiveColoring(modelId: string, type: string): unknown {
|
|
196
|
+
const groupStyle = dataStyleState.getModelComponentTypeStyle(modelId, type);
|
|
197
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
198
|
+
const groupColoring = groupStyle.coloring as StyleValues;
|
|
199
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- style values are stored as loosely-typed StyleValues records; see StyleValues definition.
|
|
200
|
+
const typeStyle = dataStyleState.getStyle(modelId)[`${type.toLowerCase()}s`] as StyleValues;
|
|
201
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
202
|
+
const typeColoring = typeStyle.coloring as StyleValues;
|
|
203
|
+
return groupColoring.active ?? typeColoring.active;
|
|
204
|
+
}
|
|
205
|
+
async function setModelComponentsColor(
|
|
206
|
+
modelId: string,
|
|
207
|
+
componentIds: string[],
|
|
208
|
+
color: unknown,
|
|
209
|
+
activeColoring = "constant",
|
|
210
|
+
): Promise<unknown[]> {
|
|
211
|
+
await modelCommonStyle.mutateComponentStyles(modelId, componentIds, {
|
|
212
|
+
coloring: {
|
|
213
|
+
constant: color,
|
|
214
|
+
active: activeColoring,
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
return dispatchToComponentTypes(
|
|
218
|
+
modelId,
|
|
219
|
+
componentIds,
|
|
220
|
+
"Color",
|
|
221
|
+
{
|
|
222
|
+
componentStyleFunctions,
|
|
223
|
+
},
|
|
224
|
+
color,
|
|
225
|
+
activeColoring,
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
async function setModelComponentTypeColor(
|
|
229
|
+
modelId: string,
|
|
230
|
+
type: string,
|
|
231
|
+
color: unknown,
|
|
232
|
+
): Promise<void> {
|
|
233
|
+
await modelCommonStyle.mutateModelComponentTypeStyle(modelId, type, {
|
|
234
|
+
coloring: {
|
|
235
|
+
constant: color,
|
|
236
|
+
active: "constant",
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
const idsForType = await dataStore.getMeshComponentGeodeIds(modelId, type);
|
|
240
|
+
if (idsForType.length === 0) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
await setModelComponentsColor(modelId, idsForType, color);
|
|
244
|
+
}
|
|
245
|
+
async function setModelComponentTypeActiveColoring(
|
|
246
|
+
modelId: string,
|
|
247
|
+
type: string,
|
|
248
|
+
activeColoring: string,
|
|
249
|
+
): Promise<void> {
|
|
250
|
+
await modelCommonStyle.mutateModelComponentTypeStyle(modelId, type, {
|
|
251
|
+
coloring: {
|
|
252
|
+
active: activeColoring,
|
|
253
|
+
},
|
|
254
|
+
});
|
|
255
|
+
const idsForType = await dataStore.getMeshComponentGeodeIds(modelId, type);
|
|
256
|
+
if (idsForType.length === 0) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
if (activeColoring === "random" || activeColoring === "constant") {
|
|
260
|
+
await setModelComponentsColor(modelId, idsForType, undefined, activeColoring);
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
await modelCommonStyle.mutateComponentStyles(modelId, idsForType, {
|
|
264
|
+
coloring: {
|
|
265
|
+
active: activeColoring,
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
const attributeFunctions = ATTRIBUTE_FUNCTIONS[type]?.[activeColoring];
|
|
269
|
+
if (attributeFunctions === undefined) {
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
const { getName, setName, getRange, setRange, getColorMap, setColorMap } = attributeFunctions;
|
|
273
|
+
const [firstId] = idsForType;
|
|
274
|
+
if (firstId === undefined) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const name = getName(modelId, firstId);
|
|
278
|
+
if (name !== undefined && name !== "") {
|
|
279
|
+
await setName(modelId, idsForType, name);
|
|
280
|
+
const [minimum, maximum] = getRange(modelId, firstId);
|
|
281
|
+
if (minimum !== undefined && maximum !== undefined) {
|
|
282
|
+
await setRange(modelId, idsForType, minimum, maximum);
|
|
283
|
+
}
|
|
284
|
+
const colorMap = getColorMap(modelId, firstId);
|
|
285
|
+
if (colorMap !== undefined && colorMap !== "") {
|
|
286
|
+
await setColorMap(modelId, idsForType, colorMap);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
async function setModelComponentActiveColoring(
|
|
291
|
+
modelId: string,
|
|
292
|
+
componentId: string,
|
|
293
|
+
activeColoring: string,
|
|
294
|
+
): Promise<void> {
|
|
295
|
+
await modelCommonStyle.mutateComponentStyle(modelId, componentId, {
|
|
296
|
+
coloring: {
|
|
297
|
+
active: activeColoring,
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
if (activeColoring === "random" || activeColoring === "constant") {
|
|
301
|
+
await setModelComponentsColor(modelId, [componentId], undefined, activeColoring);
|
|
302
|
+
return;
|
|
303
|
+
}
|
|
304
|
+
const type = await dataStore.meshComponentType(modelId, componentId);
|
|
305
|
+
if (type === undefined) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
const attributeFunctions = ATTRIBUTE_FUNCTIONS[type]?.[activeColoring];
|
|
309
|
+
if (attributeFunctions === undefined) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const { getName, setName, getRange, setRange, getColorMap, setColorMap } = attributeFunctions;
|
|
313
|
+
const name = getName(modelId, componentId);
|
|
314
|
+
if (name !== undefined && name !== "") {
|
|
315
|
+
await setName(modelId, [componentId], name);
|
|
316
|
+
const [minimum, maximum] = getRange(modelId, componentId);
|
|
317
|
+
if (minimum !== undefined && maximum !== undefined) {
|
|
318
|
+
await setRange(modelId, [componentId], minimum, maximum);
|
|
319
|
+
}
|
|
320
|
+
const colorMap = getColorMap(modelId, componentId);
|
|
321
|
+
if (colorMap !== undefined && colorMap !== "") {
|
|
322
|
+
await setColorMap(modelId, [componentId], colorMap);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
function getModelColor(modelId: string): unknown {
|
|
327
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
328
|
+
return (dataStyleState.getStyle(modelId).coloring as StyleValues).constant;
|
|
329
|
+
}
|
|
330
|
+
function getModelActiveColoring(modelId: string): unknown {
|
|
331
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
|
|
332
|
+
return (dataStyleState.getStyle(modelId).coloring as StyleValues).active;
|
|
333
|
+
}
|
|
334
|
+
return {
|
|
335
|
+
getModelColor,
|
|
336
|
+
getModelActiveColoring,
|
|
337
|
+
getModelComponentColor,
|
|
338
|
+
getModelComponentEffectiveColor,
|
|
339
|
+
getModelComponentActiveColoring,
|
|
340
|
+
modelComponentTypeColor,
|
|
341
|
+
getModelComponentTypeActiveColoring,
|
|
342
|
+
setModelComponentTypeColor,
|
|
343
|
+
setModelComponentTypeActiveColoring,
|
|
344
|
+
setModelComponentActiveColoring,
|
|
345
|
+
setModelComponentsColor,
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
export { useModelColorStyle };
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import type { Dexie, Table } from "dexie";
|
|
2
|
+
import type {
|
|
3
|
+
ModelComponentStyle,
|
|
4
|
+
ModelComponentTypeStyle,
|
|
5
|
+
StyleValues,
|
|
6
|
+
} from "@ogw_internal/stores/data_style/types.js";
|
|
7
|
+
import type { JsonRpcSchema } from "@ogw_shared/utils/types.js";
|
|
8
|
+
import { database } from "@ogw_internal/database/database";
|
|
9
|
+
import merge from "lodash/merge";
|
|
10
|
+
import { useDataStore } from "@ogw_front/stores/data";
|
|
11
|
+
import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
|
|
12
|
+
import { useViewerStore } from "@ogw_front/stores/viewer";
|
|
13
|
+
|
|
14
|
+
// The underlying dexie tables use compound array keys ([id_model, id_component] /
|
|
15
|
+
// [id_model, type]) but the shared `database` proxy types every table as
|
|
16
|
+
// Table<Record<string, unknown>, string>. Cast locally to the real key shape.
|
|
17
|
+
type ComponentTable = Table<ModelComponentStyle, [string, string]>;
|
|
18
|
+
type ComponentTypeTable = Table<ModelComponentTypeStyle, [string, string]>;
|
|
19
|
+
|
|
20
|
+
interface ComponentStyleUpdate {
|
|
21
|
+
id_component: string;
|
|
22
|
+
values: StyleValues;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface UseModelCommonStyleReturn {
|
|
26
|
+
mutateComponentStyle: (
|
|
27
|
+
id_model: string,
|
|
28
|
+
id_component: string,
|
|
29
|
+
values: StyleValues,
|
|
30
|
+
) => Promise<unknown>;
|
|
31
|
+
mutateModelComponentTypeStyle: (
|
|
32
|
+
id_model: string,
|
|
33
|
+
type: string,
|
|
34
|
+
values: StyleValues,
|
|
35
|
+
) => Promise<void>;
|
|
36
|
+
mutateComponentStyles: (
|
|
37
|
+
id_model: string,
|
|
38
|
+
id_components: string[],
|
|
39
|
+
values: StyleValues,
|
|
40
|
+
) => Promise<void>;
|
|
41
|
+
bulkMutateComponentStylesPerComponent: (
|
|
42
|
+
id_model: string,
|
|
43
|
+
component_updates: ComponentStyleUpdate[],
|
|
44
|
+
) => Promise<void>;
|
|
45
|
+
setModelTypeColor: (
|
|
46
|
+
id: string,
|
|
47
|
+
component_ids: string[],
|
|
48
|
+
color: unknown,
|
|
49
|
+
schema: JsonRpcSchema,
|
|
50
|
+
activeColoring?: string,
|
|
51
|
+
) => Promise<unknown>;
|
|
52
|
+
setModelTypeVisibility: (
|
|
53
|
+
id: string,
|
|
54
|
+
component_ids: string[],
|
|
55
|
+
visibility: boolean | undefined,
|
|
56
|
+
schema: JsonRpcSchema,
|
|
57
|
+
) => Promise<unknown>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// oxlint-disable-next-line max-lines-per-function
|
|
61
|
+
export function useModelCommonStyle(): UseModelCommonStyleReturn {
|
|
62
|
+
const dataStore = useDataStore();
|
|
63
|
+
const viewerStore = useViewerStore();
|
|
64
|
+
const dataStyleState = useDataStyleState();
|
|
65
|
+
const model_component_datastyle_db =
|
|
66
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- compound-key table cast; see comment above.
|
|
67
|
+
database.model_component_datastyle as unknown as ComponentTable;
|
|
68
|
+
const model_component_type_datastyle_db =
|
|
69
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- compound-key table cast; see comment above.
|
|
70
|
+
database.model_component_type_datastyle as unknown as ComponentTypeTable;
|
|
71
|
+
|
|
72
|
+
async function mutateComponentStyle(
|
|
73
|
+
id_model: string,
|
|
74
|
+
id_component: string,
|
|
75
|
+
values: StyleValues,
|
|
76
|
+
): Promise<unknown> {
|
|
77
|
+
dataStyleState.updateComponentStyleCache(id_model, id_component, values);
|
|
78
|
+
const key: [string, string] = [id_model, id_component];
|
|
79
|
+
const entry: ModelComponentStyle = (await model_component_datastyle_db.get(key)) ?? {
|
|
80
|
+
id_model,
|
|
81
|
+
id_component,
|
|
82
|
+
};
|
|
83
|
+
merge(entry, values);
|
|
84
|
+
return model_component_datastyle_db.put(structuredClone(toRaw(entry)));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
async function mutateModelComponentTypeStyle(
|
|
88
|
+
id_model: string,
|
|
89
|
+
type: string,
|
|
90
|
+
values: StyleValues,
|
|
91
|
+
): Promise<void> {
|
|
92
|
+
dataStyleState.updateModelComponentTypeStyleCache(id_model, type, values);
|
|
93
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- the shared database proxy types every table as Dexie; see comment above.
|
|
94
|
+
await (database as unknown as Dexie).transaction(
|
|
95
|
+
"rw",
|
|
96
|
+
model_component_type_datastyle_db,
|
|
97
|
+
async () => {
|
|
98
|
+
const key: [string, string] = [id_model, type];
|
|
99
|
+
const entry: ModelComponentTypeStyle = (await model_component_type_datastyle_db.get(
|
|
100
|
+
key,
|
|
101
|
+
)) ?? {
|
|
102
|
+
id_model,
|
|
103
|
+
type,
|
|
104
|
+
};
|
|
105
|
+
merge(entry, values);
|
|
106
|
+
return model_component_type_datastyle_db.put(structuredClone(toRaw(entry)));
|
|
107
|
+
},
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async function mutateComponentStyles(
|
|
112
|
+
id_model: string,
|
|
113
|
+
id_components: string[],
|
|
114
|
+
values: StyleValues,
|
|
115
|
+
): Promise<void> {
|
|
116
|
+
dataStyleState.bulkUpdateComponentStylesCache(id_model, id_components, values);
|
|
117
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- the shared database proxy types every table as Dexie; see comment above.
|
|
118
|
+
await (database as unknown as Dexie).transaction(
|
|
119
|
+
"rw",
|
|
120
|
+
model_component_datastyle_db,
|
|
121
|
+
async () => {
|
|
122
|
+
const keys: [string, string][] = id_components.map((id_component) => [
|
|
123
|
+
id_model,
|
|
124
|
+
id_component,
|
|
125
|
+
]);
|
|
126
|
+
const existing = await model_component_datastyle_db.bulkGet(keys);
|
|
127
|
+
const updates = id_components.map((id_component, index) => {
|
|
128
|
+
const style: ModelComponentStyle = existing[index] ?? { id_model, id_component };
|
|
129
|
+
merge(style, values);
|
|
130
|
+
return toRaw(style);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
return model_component_datastyle_db.bulkPut(structuredClone(updates));
|
|
134
|
+
},
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async function bulkMutateComponentStylesPerComponent(
|
|
139
|
+
id_model: string,
|
|
140
|
+
component_updates: ComponentStyleUpdate[],
|
|
141
|
+
): Promise<void> {
|
|
142
|
+
dataStyleState.bulkUpdateComponentStyleCache(id_model, component_updates);
|
|
143
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- the shared database proxy types every table as Dexie; see comment above.
|
|
144
|
+
await (database as unknown as Dexie).transaction(
|
|
145
|
+
"rw",
|
|
146
|
+
model_component_datastyle_db,
|
|
147
|
+
async () => {
|
|
148
|
+
const keys: [string, string][] = component_updates.map((update) => [
|
|
149
|
+
id_model,
|
|
150
|
+
update.id_component,
|
|
151
|
+
]);
|
|
152
|
+
const existing = await model_component_datastyle_db.bulkGet(keys);
|
|
153
|
+
const updates = component_updates.map(({ id_component, values }, index) => {
|
|
154
|
+
const style: ModelComponentStyle = existing[index] ?? { id_model, id_component };
|
|
155
|
+
merge(style, values);
|
|
156
|
+
return toRaw(style);
|
|
157
|
+
});
|
|
158
|
+
return model_component_datastyle_db.bulkPut(structuredClone(updates));
|
|
159
|
+
},
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
async function setModelTypeColor(
|
|
164
|
+
id: string,
|
|
165
|
+
component_ids: string[],
|
|
166
|
+
color: unknown,
|
|
167
|
+
schema: JsonRpcSchema,
|
|
168
|
+
activeColoring = "constant",
|
|
169
|
+
): Promise<unknown> {
|
|
170
|
+
if (!component_ids?.length) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const viewer_ids = await dataStore.getMeshComponentsViewerIds(id, component_ids);
|
|
175
|
+
if (!viewer_ids?.length) {
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const params: Record<string, unknown> = {
|
|
180
|
+
id,
|
|
181
|
+
block_ids: viewer_ids,
|
|
182
|
+
color_mode: activeColoring,
|
|
183
|
+
};
|
|
184
|
+
if (activeColoring === "constant") {
|
|
185
|
+
await mutateComponentStyles(id, component_ids, {
|
|
186
|
+
coloring: {
|
|
187
|
+
constant: color,
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
params.color = color;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return viewerStore.request(
|
|
194
|
+
{ schema, params },
|
|
195
|
+
{
|
|
196
|
+
response_function: async (response: unknown) => {
|
|
197
|
+
// oxlint-disable-next-line no-unsafe-type-assertion -- response shape is defined by the color-set schema.
|
|
198
|
+
const colors = response as { geode_id: string; color: unknown }[] | undefined;
|
|
199
|
+
if (activeColoring === "constant") {
|
|
200
|
+
await mutateComponentStyles(id, component_ids, {
|
|
201
|
+
coloring: {
|
|
202
|
+
constant: color,
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
if (colors === undefined || colors.length === 0) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
await bulkMutateComponentStylesPerComponent(
|
|
213
|
+
id,
|
|
214
|
+
colors.map(({ geode_id, color: color_value }) => ({
|
|
215
|
+
id_component: geode_id,
|
|
216
|
+
values: {
|
|
217
|
+
coloring: {
|
|
218
|
+
constant: color_value,
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
})),
|
|
222
|
+
);
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
async function setModelTypeVisibility(
|
|
229
|
+
id: string,
|
|
230
|
+
component_ids: string[],
|
|
231
|
+
visibility: boolean | undefined,
|
|
232
|
+
schema: JsonRpcSchema,
|
|
233
|
+
): Promise<unknown> {
|
|
234
|
+
if (!component_ids?.length) {
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const viewer_ids = await dataStore.getMeshComponentsViewerIds(id, component_ids);
|
|
239
|
+
if (!viewer_ids?.length) {
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
const params = { id, block_ids: viewer_ids, visibility };
|
|
243
|
+
const result = await viewerStore.request(
|
|
244
|
+
{ schema, params },
|
|
245
|
+
{
|
|
246
|
+
response_function: async () => {
|
|
247
|
+
await mutateComponentStyles(id, component_ids, { visibility });
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
);
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
return {
|
|
255
|
+
mutateComponentStyle,
|
|
256
|
+
mutateModelComponentTypeStyle,
|
|
257
|
+
mutateComponentStyles,
|
|
258
|
+
bulkMutateComponentStylesPerComponent,
|
|
259
|
+
setModelTypeColor,
|
|
260
|
+
setModelTypeVisibility,
|
|
261
|
+
};
|
|
262
|
+
}
|