@geode/opengeodeweb-front 10.34.0-rc.8 → 10.34.0

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.
Files changed (282) hide show
  1. package/{server → .build/server}/utils/app_config.js +10 -9
  2. package/{server → .build/server}/utils/cleanup.js +31 -17
  3. package/{server → .build/server}/utils/cloud.js +1 -4
  4. package/{server → .build/server}/utils/microservices.js +21 -9
  5. package/{server → .build/server}/utils/path.js +4 -4
  6. package/{server → .build/server}/utils/scripts.js +9 -9
  7. package/.build/server/utils/server_config.js +51 -0
  8. package/.build/server/utils/stream.js +6 -0
  9. package/{server → .build/server}/utils/ws_client.js +18 -3
  10. package/{shared → .build/shared}/scripts.js +10 -10
  11. package/.build/shared/utils/call_raw.js +31 -0
  12. package/{shared → .build/shared}/utils/call_schema.js +2 -2
  13. package/.build/shared/utils/fetch_raw.js +52 -0
  14. package/{shared → .build/shared}/utils/fetch_schema.js +2 -2
  15. package/{shared → .build/shared}/utils/file.js +3 -1
  16. package/{shared → .build/shared}/utils/response_handlers/load.js +10 -7
  17. package/{shared → .build/shared}/utils/validate_schema.js +1 -1
  18. package/app/components/ActionButton.vue +6 -6
  19. package/app/components/CameraManager/List.vue +5 -5
  20. package/app/components/CameraManager/Saver.vue +3 -5
  21. package/app/components/CameraManager.vue +6 -4
  22. package/app/components/CameraOrientation.vue +12 -12
  23. package/app/components/ClippingPlaneCard.vue +4 -2
  24. package/app/components/ClippingPlanes.vue +8 -8
  25. package/app/components/CrsSelector.vue +9 -10
  26. package/app/components/DeleteDialog.vue +4 -2
  27. package/app/components/DragAndDrop.vue +10 -12
  28. package/app/components/DragAndDropInternal/DragAndDropInline.vue +4 -2
  29. package/app/components/ExtensionSelector.vue +4 -4
  30. package/app/components/FeedBack/ErrorBanner.vue +3 -1
  31. package/app/components/FeedBack/Snackers.vue +4 -3
  32. package/app/components/FileSelector.vue +10 -8
  33. package/app/components/FileUploader.vue +11 -11
  34. package/app/components/GlassCard.vue +1 -1
  35. package/app/components/HybridRenderingView.vue +7 -5
  36. package/app/components/HybridViewerTooltip.vue +7 -7
  37. package/app/components/Launcher.vue +1 -1
  38. package/app/components/Loading/EcoMessages.vue +9 -3
  39. package/app/components/Loading.vue +2 -2
  40. package/app/components/MissingFilesSelector.vue +12 -10
  41. package/app/components/ObjectSelector.vue +10 -9
  42. package/app/components/PackagesVersions.vue +6 -5
  43. package/app/components/Recaptcha.vue +3 -3
  44. package/app/components/RemoteRenderingView.vue +6 -7
  45. package/app/components/Ruler.vue +3 -3
  46. package/app/components/Screenshot.vue +6 -6
  47. package/app/components/SearchBar.vue +4 -2
  48. package/app/components/ShrinkFilter.vue +7 -7
  49. package/app/components/Step.vue +6 -5
  50. package/app/components/Stepper.vue +4 -3
  51. package/app/components/ToolPanel.vue +6 -3
  52. package/app/components/ViewToolbar.vue +25 -28
  53. package/app/components/Viewer/ContextMenu/CenterButton.vue +7 -5
  54. package/app/components/Viewer/ContextMenu/CircularItems.vue +3 -3
  55. package/app/components/Viewer/ContextMenu/ContextMenu.vue +22 -19
  56. package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +10 -8
  57. package/app/components/Viewer/ContextMenu/InfoCard.vue +11 -12
  58. package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +13 -17
  59. package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +11 -15
  60. package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +12 -16
  61. package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +8 -12
  62. package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +11 -15
  63. package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +11 -15
  64. package/app/components/Viewer/Generic/Model/BlocksOptions.vue +67 -38
  65. package/app/components/Viewer/Generic/Model/CornersOptions.vue +53 -23
  66. package/app/components/Viewer/Generic/Model/EdgesOptions.vue +1 -3
  67. package/app/components/Viewer/Generic/Model/LinesOptions.vue +67 -38
  68. package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +31 -15
  69. package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +2 -3
  70. package/app/components/Viewer/Generic/Model/PointsOptions.vue +6 -6
  71. package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +69 -38
  72. package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +64 -46
  73. package/app/components/Viewer/ObjectTree/Base/Controls.vue +5 -5
  74. package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +13 -9
  75. package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +5 -5
  76. package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +10 -10
  77. package/app/components/Viewer/ObjectTree/Box.vue +6 -4
  78. package/app/components/Viewer/ObjectTree/Layout.vue +23 -21
  79. package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +14 -14
  80. package/app/components/Viewer/ObjectTree/Views/{ModelCollections.vue → ModelTree.vue} +59 -24
  81. package/app/components/Viewer/Options/AttributeColorBar.vue +4 -2
  82. package/app/components/Viewer/Options/AttributeRangeSelector.vue +4 -2
  83. package/app/components/Viewer/Options/AttributeSelector.vue +7 -9
  84. package/app/components/Viewer/Options/ColorMapList.vue +15 -13
  85. package/app/components/Viewer/Options/ColorMapPicker.vue +4 -4
  86. package/app/components/Viewer/Options/ColorPicker.vue +223 -41
  87. package/app/components/Viewer/Options/ColoringTypeSelector.vue +16 -16
  88. package/app/components/Viewer/Options/ColormapQuickPicker.vue +7 -5
  89. package/app/components/Viewer/Options/OptionsSection.vue +1 -1
  90. package/app/components/Viewer/Options/TextureItem.vue +8 -6
  91. package/app/components/Viewer/Options/TexturesSelector.vue +1 -1
  92. package/app/components/Viewer/OverlappingObjectsPicker.vue +8 -9
  93. package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +2 -6
  94. package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +12 -16
  95. package/app/components/Viewer/Surface/PolygonsOptions.vue +12 -16
  96. package/app/components/Viewer/Ui.vue +2 -2
  97. package/app/components/Wrapper.vue +1 -4
  98. package/app/components/ZScaling.vue +5 -3
  99. package/app/components/csv-preview/CsvPreviewer.vue +38 -37
  100. package/app/components/csv-preview/CsvSettings.vue +6 -4
  101. package/app/components/csv-preview/CsvTable.vue +1 -1
  102. package/app/composables/batch_style.ts +5 -6
  103. package/app/composables/clipping_planes_widget.ts +73 -181
  104. package/app/composables/clipping_planes_widget_entries.ts +189 -0
  105. package/app/composables/copy_to_clipboard.ts +7 -0
  106. package/app/composables/global_attribute_style.ts +163 -83
  107. package/app/composables/hover_highlight.ts +46 -14
  108. package/app/composables/model_collections.ts +26 -13
  109. package/app/composables/model_components.ts +26 -13
  110. package/app/composables/project_manager.ts +76 -19
  111. package/app/composables/responsive_middle_truncate.ts +13 -13
  112. package/app/composables/stepper_tree.ts +34 -11
  113. package/app/composables/tree_filter.ts +66 -44
  114. package/app/composables/tree_keyboard_nav.ts +25 -11
  115. package/app/composables/tree_scroll.ts +44 -14
  116. package/app/composables/use_adaptive_styles.ts +66 -23
  117. package/app/composables/use_overlapping_picker.ts +66 -16
  118. package/app/composables/use_quick_colormap.ts +16 -5
  119. package/app/composables/virtual_tree.ts +75 -43
  120. package/app/composables/vtk_implicit_plane_widget.d.ts +2 -0
  121. package/app/plugins/auto_store_register.ts +2 -7
  122. package/app/plugins/click_outside_ignore_snackbars.client.ts +39 -0
  123. package/app/stores/app.ts +57 -192
  124. package/app/stores/app_helpers/extension.ts +179 -0
  125. package/app/stores/back.ts +37 -21
  126. package/app/stores/camera_manager.ts +22 -20
  127. package/app/stores/cloud.ts +17 -13
  128. package/app/stores/data.ts +88 -47
  129. package/app/stores/data_helpers/collections.ts +36 -38
  130. package/app/stores/data_helpers/mesh.ts +45 -36
  131. package/app/stores/data_style.ts +50 -28
  132. package/app/stores/feedback.ts +6 -6
  133. package/app/stores/hybrid_viewer.ts +41 -52
  134. package/app/stores/infra.ts +39 -37
  135. package/app/stores/menu.ts +23 -14
  136. package/app/stores/treeview.ts +72 -42
  137. package/app/stores/viewer.ts +39 -27
  138. package/app/utils/attributes.ts +3 -3
  139. package/app/utils/clipping_planes.ts +111 -14
  140. package/app/utils/color_picker.ts +57 -0
  141. package/app/utils/colormap.ts +58 -35
  142. package/app/utils/default_styles/index.ts +2 -2
  143. package/app/utils/default_styles/meshes.ts +107 -13
  144. package/app/utils/default_styles/models.ts +83 -14
  145. package/app/utils/extension.ts +47 -20
  146. package/app/utils/import_workflow.ts +21 -13
  147. package/app/utils/name_cleaner.ts +1 -1
  148. package/app/utils/string.ts +1 -1
  149. package/app/utils/treeview.ts +2 -2
  150. package/internal/database/base_database.ts +7 -3
  151. package/internal/database/database.ts +36 -26
  152. package/internal/database/extended_database.ts +1 -1
  153. package/internal/stores/data_style/mesh/cells/cell.ts +70 -34
  154. package/internal/stores/data_style/mesh/cells/color.ts +12 -6
  155. package/internal/stores/data_style/mesh/cells/common.ts +18 -8
  156. package/internal/stores/data_style/mesh/cells/index.ts +122 -42
  157. package/internal/stores/data_style/mesh/cells/textures.ts +12 -6
  158. package/internal/stores/data_style/mesh/cells/vertex.ts +75 -34
  159. package/internal/stores/data_style/mesh/cells/visibility.ts +15 -4
  160. package/internal/stores/data_style/mesh/edges/color.ts +12 -6
  161. package/internal/stores/data_style/mesh/edges/common.ts +14 -6
  162. package/internal/stores/data_style/mesh/edges/edge.ts +71 -39
  163. package/internal/stores/data_style/mesh/edges/index.ts +117 -42
  164. package/internal/stores/data_style/mesh/edges/vertex.ts +76 -39
  165. package/internal/stores/data_style/mesh/edges/visibility.ts +15 -4
  166. package/internal/stores/data_style/mesh/edges/width.ts +12 -4
  167. package/internal/stores/data_style/mesh/index.ts +30 -11
  168. package/internal/stores/data_style/mesh/points/color.ts +12 -6
  169. package/internal/stores/data_style/mesh/points/common.ts +21 -8
  170. package/internal/stores/data_style/mesh/points/index.ts +101 -50
  171. package/internal/stores/data_style/mesh/points/size.ts +12 -4
  172. package/internal/stores/data_style/mesh/points/vertex.ts +75 -34
  173. package/internal/stores/data_style/mesh/points/visibility.ts +17 -7
  174. package/internal/stores/data_style/mesh/polygons/color.ts +12 -6
  175. package/internal/stores/data_style/mesh/polygons/common.ts +23 -6
  176. package/internal/stores/data_style/mesh/polygons/index.ts +130 -70
  177. package/internal/stores/data_style/mesh/polygons/polygon.ts +77 -43
  178. package/internal/stores/data_style/mesh/polygons/textures.ts +12 -6
  179. package/internal/stores/data_style/mesh/polygons/vertex.ts +79 -39
  180. package/internal/stores/data_style/mesh/polygons/visibility.ts +16 -6
  181. package/internal/stores/data_style/mesh/polyhedra/color.ts +12 -6
  182. package/internal/stores/data_style/mesh/polyhedra/common.ts +14 -6
  183. package/internal/stores/data_style/mesh/polyhedra/index.ts +115 -56
  184. package/internal/stores/data_style/mesh/polyhedra/polyhedron.ts +80 -39
  185. package/internal/stores/data_style/mesh/polyhedra/vertex.ts +79 -39
  186. package/internal/stores/data_style/mesh/polyhedra/visibility.ts +16 -6
  187. package/internal/stores/data_style/model/blocks/color.ts +43 -13
  188. package/internal/stores/data_style/model/blocks/common.ts +21 -6
  189. package/internal/stores/data_style/model/blocks/index.ts +89 -59
  190. package/internal/stores/data_style/model/blocks/polyhedron.ts +101 -44
  191. package/internal/stores/data_style/model/blocks/vertex.ts +107 -42
  192. package/internal/stores/data_style/model/blocks/visibility.ts +17 -4
  193. package/internal/stores/data_style/model/color.ts +171 -83
  194. package/internal/stores/data_style/model/common.ts +70 -21
  195. package/internal/stores/data_style/model/corners/color.ts +43 -11
  196. package/internal/stores/data_style/model/corners/common.ts +25 -6
  197. package/internal/stores/data_style/model/corners/index.ts +66 -41
  198. package/internal/stores/data_style/model/corners/vertex.ts +105 -74
  199. package/internal/stores/data_style/model/corners/visibility.ts +19 -4
  200. package/internal/stores/data_style/model/edges/common.ts +12 -4
  201. package/internal/stores/data_style/model/edges/index.ts +2 -1
  202. package/internal/stores/data_style/model/edges/visibility.ts +24 -7
  203. package/internal/stores/data_style/model/index.ts +24 -11
  204. package/internal/stores/data_style/model/lines/color.ts +41 -11
  205. package/internal/stores/data_style/model/lines/common.ts +17 -6
  206. package/internal/stores/data_style/model/lines/edge.ts +105 -42
  207. package/internal/stores/data_style/model/lines/index.ts +86 -59
  208. package/internal/stores/data_style/model/lines/vertex.ts +105 -42
  209. package/internal/stores/data_style/model/lines/visibility.ts +17 -4
  210. package/internal/stores/data_style/model/points/common.ts +8 -4
  211. package/internal/stores/data_style/model/points/index.ts +10 -3
  212. package/internal/stores/data_style/model/points/size.ts +12 -4
  213. package/internal/stores/data_style/model/points/visibility.ts +16 -6
  214. package/internal/stores/data_style/model/selection.ts +80 -58
  215. package/internal/stores/data_style/model/surfaces/color.ts +41 -11
  216. package/internal/stores/data_style/model/surfaces/common.ts +23 -6
  217. package/internal/stores/data_style/model/surfaces/index.ts +89 -59
  218. package/internal/stores/data_style/model/surfaces/polygon.ts +107 -67
  219. package/internal/stores/data_style/model/surfaces/vertex.ts +111 -67
  220. package/internal/stores/data_style/model/surfaces/visibility.ts +18 -5
  221. package/internal/stores/data_style/model/visibility.ts +82 -20
  222. package/internal/stores/data_style/state.ts +77 -65
  223. package/internal/stores/hybrid_viewer/brightness.ts +49 -31
  224. package/internal/stores/hybrid_viewer/camera.ts +191 -177
  225. package/internal/stores/hybrid_viewer/camera_animation.ts +11 -10
  226. package/internal/stores/hybrid_viewer/core.ts +64 -0
  227. package/internal/stores/hybrid_viewer/filters.ts +10 -16
  228. package/internal/stores/hybrid_viewer/highlight.ts +91 -130
  229. package/internal/stores/hybrid_viewer/ruler.ts +24 -15
  230. package/internal/stores/hybrid_viewer/scene.ts +96 -117
  231. package/internal/stores/hybrid_viewer/viewport.ts +74 -65
  232. package/internal/stores/hybrid_viewer/vtk_types.ts +13 -29
  233. package/internal/utils/api_fetch.ts +54 -23
  234. package/internal/utils/upload_file.ts +74 -53
  235. package/internal/utils/viewer_call.ts +22 -13
  236. package/internal/utils/ws_client.ts +24 -13
  237. package/nuxt.config.ts +58 -1
  238. package/package.json +20 -8
  239. package/server/api/cloud/extensions/run.post.ts +6 -10
  240. package/server/api/local/app/project_folder_path.post.ts +4 -4
  241. package/server/api/local/app/run_back.post.ts +5 -7
  242. package/server/api/local/app/run_viewer.post.ts +5 -7
  243. package/server/api/local/extensions/kill.post.ts +4 -3
  244. package/server/api/local/extensions/run.post.ts +7 -10
  245. package/server/api/local/extensions/upload.put.ts +44 -54
  246. package/server/api/microservice/app/get_is_app_ready.get.ts +4 -5
  247. package/server/api/microservice/app/set_app_base_url.post.ts +5 -6
  248. package/server/api/microservice/app/set_back_base_url.post.ts +5 -6
  249. package/server/api/microservice/app/set_is_app_ready.post.ts +5 -6
  250. package/server/api/microservice/app/set_viewer_base_url.post.ts +5 -6
  251. package/server/api/microservice/extensions/download.post.ts +5 -4
  252. package/server/api/serverless/run_cloud.post.ts +53 -11
  253. package/server/utils/app_config.ts +29 -22
  254. package/server/utils/cleanup.ts +60 -30
  255. package/server/utils/cloud.ts +9 -8
  256. package/server/utils/extension.ts +23 -9
  257. package/server/utils/microservices.ts +33 -24
  258. package/server/utils/path.ts +4 -4
  259. package/server/utils/scripts.ts +26 -23
  260. package/server/utils/server.ts +2 -2
  261. package/server/utils/server_config.ts +41 -27
  262. package/server/utils/stream.ts +6 -0
  263. package/server/utils/ws_client.ts +42 -8
  264. package/shared/scripts.ts +15 -10
  265. package/shared/utils/call_raw.ts +23 -16
  266. package/shared/utils/call_schema.ts +5 -8
  267. package/shared/utils/fetch_raw.ts +87 -47
  268. package/shared/utils/fetch_schema.ts +6 -9
  269. package/shared/utils/file.ts +8 -2
  270. package/shared/utils/response_handlers/load.ts +26 -11
  271. package/shared/utils/types.ts +9 -9
  272. package/shared/utils/validate_schema.ts +1 -1
  273. package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +0 -276
  274. package/server/types/vendor.d.ts +0 -64
  275. package/server/utils/server_config.js +0 -43
  276. package/shared/utils/call_raw.js +0 -30
  277. package/shared/utils/fetch_raw.js +0 -40
  278. /package/{opengeodeweb_front_schemas.js → .build/opengeodeweb_front_schemas.js} +0 -0
  279. /package/{server → .build/server}/utils/server.js +0 -0
  280. /package/{shared → .build/shared}/app_mode.js +0 -0
  281. /package/{shared → .build/shared}/utils/parse_boolean.js +0 -0
  282. /package/{shared → .build/shared}/utils/types.js +0 -0
@@ -8,27 +8,37 @@ import { useViewerStore } from "@ogw_front/stores/viewer";
8
8
  // Local constants
9
9
  const schema = viewer_schemas.opengeodeweb_viewer.mesh.polyhedra.visibility;
10
10
 
11
- export function useMeshPolyhedraVisibilityStyle() {
11
+ export function useMeshPolyhedraVisibilityStyle(): {
12
+ meshPolyhedraVisibility: (id: string) => boolean | undefined;
13
+ setMeshPolyhedraVisibility: (id: string, visibility: boolean | undefined) => Promise<unknown>;
14
+ } {
12
15
  const viewerStore = useViewerStore();
13
16
  const meshPolyhedraCommonStyle = useMeshPolyhedraCommonStyle();
14
17
 
15
18
  function meshPolyhedraVisibility(id: string): boolean | undefined {
19
+ // oxlint-disable-next-line no-unsafe-type-assertion -- visibility is defined as boolean in the data style schema.
16
20
  return meshPolyhedraCommonStyle.meshPolyhedraStyle(id).visibility as boolean | undefined;
17
21
  }
18
- function setMeshPolyhedraVisibility(id: string, visibility: boolean | undefined) {
22
+ async function setMeshPolyhedraVisibility(
23
+ id: string,
24
+ visibility: boolean | undefined,
25
+ ): Promise<unknown> {
19
26
  const params = { id, visibility };
20
- return viewerStore.request(
27
+ const result = await viewerStore.request(
21
28
  {
22
29
  schema,
23
30
  params,
24
31
  },
25
32
  {
26
- response_function: () =>
27
- meshPolyhedraCommonStyle.mutateMeshPolyhedraStyle(id, {
33
+ response_function: async () => {
34
+ const mutation_result = await meshPolyhedraCommonStyle.mutateMeshPolyhedraStyle(id, {
28
35
  visibility,
29
- }),
36
+ });
37
+ return mutation_result;
38
+ },
30
39
  },
31
40
  );
41
+ return result;
32
42
  }
33
43
 
34
44
  return {
@@ -1,24 +1,42 @@
1
- // Not auto-fixable (eslint's sort-imports core rule has no autofixer) and this file's import order doesn't match its syntax-kind-then-alphabetical requirement - left as-is rather than manually reordered across the codebase for a purely cosmetic rule.
2
- // oxlint-disable eslint/sort-imports
3
- import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
4
1
  import {
5
2
  isModelBlocksPolyhedronAttributeValid,
6
3
  useModelBlocksPolyhedronAttribute,
7
4
  } from "./polyhedron";
8
5
  import { isModelBlocksVertexAttributeValid, useModelBlocksVertexAttribute } from "./vertex";
6
+ import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
7
+ import { useDataStore } from "@ogw_front/stores/data";
9
8
  import { useModelBlocksCommonStyle } from "./common";
10
9
  import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
11
10
  import viewer_schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
12
11
 
13
12
  const schema = viewer_schemas.opengeodeweb_viewer.model.blocks.color;
14
13
 
15
- export function useModelBlocksColor() {
14
+ export function useModelBlocksColor(): {
15
+ modelBlockColoring: (id: string, block_id?: string) => StyleValues;
16
+ modelBlockColor: (id: string, block_id?: string) => unknown;
17
+ setModelBlocksColor: (
18
+ modelId: string,
19
+ blocks_ids: string[],
20
+ color: unknown,
21
+ activeColoring?: string,
22
+ collectionId?: string,
23
+ ) => Promise<unknown>;
24
+ modelBlockActiveColoring: (id: string, block_id?: string) => unknown;
25
+ setModelBlocksActiveColoring: (
26
+ modelId: string,
27
+ blocks_ids: string[],
28
+ activeColoring: string,
29
+ collectionId?: string,
30
+ ) => Promise<void>;
31
+ } {
32
+ const dataStore = useDataStore();
16
33
  const modelCommonStyle = useModelCommonStyle();
17
34
  const modelBlocksCommonStyle = useModelBlocksCommonStyle();
18
35
  const modelBlocksVertexAttribute = useModelBlocksVertexAttribute();
19
36
  const modelBlocksPolyhedronAttribute = useModelBlocksPolyhedronAttribute();
20
37
 
21
38
  function modelBlockColoring(id: string, block_id?: string): StyleValues {
39
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
22
40
  return modelBlocksCommonStyle.modelBlockStyle(id, block_id).coloring as StyleValues;
23
41
  }
24
42
 
@@ -26,13 +44,22 @@ export function useModelBlocksColor() {
26
44
  return modelBlockColoring(id, block_id).constant;
27
45
  }
28
46
 
29
- function setModelBlocksColor(
47
+ async function setModelBlocksColor(
30
48
  modelId: string,
31
49
  blocks_ids: string[],
32
50
  color: unknown,
33
51
  activeColoring = "constant",
34
- ) {
35
- return modelCommonStyle.setModelTypeColor(modelId, blocks_ids, color, schema, activeColoring);
52
+ collectionId?: string,
53
+ ): Promise<unknown> {
54
+ const result = await modelCommonStyle.setModelTypeColor(
55
+ modelId,
56
+ blocks_ids,
57
+ color,
58
+ schema,
59
+ activeColoring,
60
+ collectionId,
61
+ );
62
+ return result;
36
63
  }
37
64
 
38
65
  function modelBlockActiveColoring(id: string, block_id?: string): unknown {
@@ -43,9 +70,11 @@ export function useModelBlocksColor() {
43
70
  modelId: string,
44
71
  blocks_ids: string[],
45
72
  activeColoring: string,
46
- ) {
47
- if (blocks_ids.length > 1) {
48
- modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
73
+ collectionId?: string,
74
+ ): Promise<void> {
75
+ const totalBlockIds = await dataStore.getBlocksGeodeIds(modelId);
76
+ if (blocks_ids.length === totalBlockIds.length) {
77
+ await modelBlocksCommonStyle.mutateModelBlocksTypeColoring(modelId, {
49
78
  active: activeColoring,
50
79
  });
51
80
  }
@@ -54,7 +83,8 @@ export function useModelBlocksColor() {
54
83
  });
55
84
  if (activeColoring === "constant" || activeColoring === "random") {
56
85
  const color = modelBlockColor(modelId, blocks_ids[0]);
57
- return setModelBlocksColor(modelId, blocks_ids, color, activeColoring);
86
+ await setModelBlocksColor(modelId, blocks_ids, color, activeColoring, collectionId);
87
+ return;
58
88
  }
59
89
 
60
90
  if (activeColoring === "vertex") {
@@ -76,7 +106,7 @@ export function useModelBlocksColor() {
76
106
  );
77
107
  const attribute = { name, item, minimum, maximum, colorMap };
78
108
  if (isModelBlocksVertexAttributeValid(attribute)) {
79
- return modelBlocksVertexAttribute.setModelBlocksVertexAttribute(
109
+ await modelBlocksVertexAttribute.setModelBlocksVertexAttribute(
80
110
  modelId,
81
111
  blocks_ids,
82
112
  attribute,
@@ -101,7 +131,7 @@ export function useModelBlocksColor() {
101
131
  );
102
132
  const attribute = { name, item, minimum, maximum, colorMap };
103
133
  if (isModelBlocksPolyhedronAttributeValid(attribute)) {
104
- return modelBlocksPolyhedronAttribute.setModelBlocksPolyhedronAttribute(
134
+ await modelBlocksPolyhedronAttribute.setModelBlocksPolyhedronAttribute(
105
135
  modelId,
106
136
  blocks_ids,
107
137
  attribute,
@@ -3,12 +3,22 @@ import merge from "lodash/merge";
3
3
  import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
4
4
  import { useModelCommonStyle } from "@ogw_internal/stores/data_style/model/common";
5
5
 
6
- export function useModelBlocksCommonStyle() {
6
+ export function useModelBlocksCommonStyle(): {
7
+ modelBlocksStyle: (id: string) => StyleValues;
8
+ modelBlockStyle: (id: string, block_id?: string) => StyleValues;
9
+ modelBlockColoring: (id: string, block_id?: string) => StyleValues;
10
+ mutateModelBlocksColoring: (
11
+ id: string,
12
+ blocks_ids: string[],
13
+ values: StyleValues,
14
+ ) => Promise<void>;
15
+ mutateModelBlocksTypeColoring: (id: string, values: StyleValues) => Promise<void>;
16
+ } {
7
17
  const dataStyleState = useDataStyleState();
8
18
  const modelCommonStyle = useModelCommonStyle();
9
19
 
10
20
  function modelBlocksStyle(id: string): StyleValues {
11
- return dataStyleState.getStyle(id).blocks as StyleValues;
21
+ return dataStyleState.getStyle(id).blocks ?? {};
12
22
  }
13
23
 
14
24
  function modelComponentTypeBlocksStyle(id: string): StyleValues {
@@ -27,17 +37,22 @@ export function useModelBlocksCommonStyle() {
27
37
  }
28
38
 
29
39
  function modelBlockColoring(id: string, block_id?: string): StyleValues {
40
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
30
41
  return modelBlockStyle(id, block_id).coloring as StyleValues;
31
42
  }
32
43
 
33
- function mutateModelBlocksColoring(id: string, blocks_ids: string[], values: StyleValues) {
34
- return modelCommonStyle.mutateComponentStyles(id, blocks_ids, {
44
+ async function mutateModelBlocksColoring(
45
+ id: string,
46
+ blocks_ids: string[],
47
+ values: StyleValues,
48
+ ): Promise<void> {
49
+ await modelCommonStyle.mutateComponentStyles(id, blocks_ids, {
35
50
  coloring: values,
36
51
  });
37
52
  }
38
53
 
39
- function mutateModelBlocksTypeColoring(id: string, values: StyleValues) {
40
- return modelCommonStyle.mutateModelComponentTypeStyle(id, "Block", {
54
+ async function mutateModelBlocksTypeColoring(id: string, values: StyleValues): Promise<void> {
55
+ await modelCommonStyle.mutateModelComponentTypeStyle(id, "Block", {
41
56
  coloring: values,
42
57
  });
43
58
  }
@@ -22,12 +22,21 @@ interface AttributeGroup {
22
22
  blocks_ids: string[];
23
23
  }
24
24
 
25
- async function setModelBlocksDefaultStyle(_id: string) {
25
+ async function setModelBlocksDefaultStyle(_id: string): Promise<void> {
26
26
  // Placeholder
27
27
  }
28
28
 
29
+ type UseModelBlocksStyleReturn = {
30
+ applyModelBlocksStyle: (modelId: string) => Promise<void>;
31
+ setModelBlocksDefaultStyle: (id: string) => Promise<void>;
32
+ } & ReturnType<typeof useModelBlocksCommonStyle> &
33
+ ReturnType<typeof useModelBlocksVisibility> &
34
+ ReturnType<typeof useModelBlocksColor> &
35
+ ReturnType<typeof useModelBlocksVertexAttribute> &
36
+ ReturnType<typeof useModelBlocksPolyhedronAttribute>;
37
+
29
38
  // oxlint-disable-next-line max-lines-per-function
30
- export function useModelBlocksStyle() {
39
+ export function useModelBlocksStyle(): UseModelBlocksStyleReturn {
31
40
  const dataStore = useDataStore();
32
41
  const modelCommonStyle = useModelBlocksCommonStyle();
33
42
  const modelVisibilityStyle = useModelBlocksVisibility();
@@ -35,30 +44,38 @@ export function useModelBlocksStyle() {
35
44
  const modelBlocksVertexAttribute = useModelBlocksVertexAttribute();
36
45
  const modelBlocksPolyhedronAttribute = useModelBlocksPolyhedronAttribute();
37
46
 
38
- function applyModelBlocksVisibilityStyle(modelId: string, blocks_ids: string[]) {
47
+ async function applyModelBlocksVisibilityStyle(
48
+ modelId: string,
49
+ blocks_ids: string[],
50
+ ): Promise<unknown[]> {
39
51
  const visibilityGroups: Record<string, string[]> = {};
40
52
  for (const block_id of blocks_ids) {
41
53
  const style = modelCommonStyle.modelBlockStyle(modelId, block_id);
42
54
  const visibility = String(style.visibility);
43
- if (!visibilityGroups[visibility]) {
44
- visibilityGroups[visibility] = [];
45
- }
55
+ visibilityGroups[visibility] ??= [];
46
56
  visibilityGroups[visibility].push(block_id);
47
57
  }
48
- return Promise.all(
49
- Object.entries(visibilityGroups).map(([visibility, ids]) =>
50
- modelVisibilityStyle.setModelBlocksVisibility(modelId, ids, visibility === "true"),
51
- ),
58
+ const result = await Promise.all(
59
+ Object.entries(visibilityGroups).map(async ([visibility, ids]) => {
60
+ const visibilityResult = await modelVisibilityStyle.setModelBlocksVisibility(
61
+ modelId,
62
+ ids,
63
+ visibility === "true",
64
+ );
65
+ return visibilityResult;
66
+ }),
52
67
  );
68
+ return result;
53
69
  }
54
70
 
55
- function applyModelBlocksColoringStyle(modelId: string, blocks_ids: string[]) {
71
+ async function applyModelBlocksColoringStyle(
72
+ modelId: string,
73
+ blocks_ids: string[],
74
+ ): Promise<unknown[]> {
56
75
  const activeColoringGroups: Record<string, string[]> = {};
57
76
  for (const block_id of blocks_ids) {
58
77
  const activeColoring = String(modelColorStyle.modelBlockActiveColoring(modelId, block_id));
59
- if (!activeColoringGroups[activeColoring]) {
60
- activeColoringGroups[activeColoring] = [];
61
- }
78
+ activeColoringGroups[activeColoring] ??= [];
62
79
  activeColoringGroups[activeColoring].push(block_id);
63
80
  }
64
81
 
@@ -70,15 +87,19 @@ export function useModelBlocksStyle() {
70
87
  for (const block_id of type_blocks_ids) {
71
88
  const color = modelColorStyle.modelBlockColor(modelId, block_id);
72
89
  const color_key = JSON.stringify(color);
73
- if (!colorGroups[color_key]) {
74
- colorGroups[color_key] = { color, blocks_ids: [] };
75
- }
90
+ colorGroups[color_key] ??= { color, blocks_ids: [] };
76
91
  colorGroups[color_key].blocks_ids.push(block_id);
77
92
  }
78
93
  coloringPromises.push(
79
- ...Object.values(colorGroups).map(({ color, blocks_ids: ids }) =>
80
- modelColorStyle.setModelBlocksColor(modelId, ids, color, "constant"),
81
- ),
94
+ ...Object.values(colorGroups).map(async ({ color, blocks_ids: ids }) => {
95
+ const result = await modelColorStyle.setModelBlocksColor(
96
+ modelId,
97
+ ids,
98
+ color,
99
+ "constant",
100
+ );
101
+ return result;
102
+ }),
82
103
  );
83
104
  } else if (type === "random") {
84
105
  coloringPromises.push(
@@ -102,28 +123,32 @@ export function useModelBlocksStyle() {
102
123
  continue;
103
124
  }
104
125
  const key = `${name}_${item}_${colorMap}_${minimum}_${maximum}`;
105
- if (!vertexGroups[key]) {
106
- vertexGroups[key] = {
107
- name,
108
- item,
109
- minimum,
110
- maximum,
111
- colorMap,
112
- blocks_ids: [],
113
- };
114
- }
126
+ vertexGroups[key] ??= {
127
+ name,
128
+ item,
129
+ minimum,
130
+ maximum,
131
+ colorMap,
132
+ blocks_ids: [],
133
+ };
115
134
  vertexGroups[key].blocks_ids.push(block_id);
116
135
  }
117
136
  coloringPromises.push(
118
137
  ...Object.values(vertexGroups).map(
119
- ({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) =>
120
- modelBlocksVertexAttribute.setModelBlocksVertexAttribute(modelId, ids, {
121
- name,
122
- item,
123
- minimum,
124
- maximum,
125
- colorMap,
126
- }),
138
+ async ({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) => {
139
+ const result = await modelBlocksVertexAttribute.setModelBlocksVertexAttribute(
140
+ modelId,
141
+ ids,
142
+ {
143
+ name,
144
+ item,
145
+ minimum,
146
+ maximum,
147
+ colorMap,
148
+ },
149
+ );
150
+ return result;
151
+ },
127
152
  ),
128
153
  );
129
154
  } else if (type === "polyhedron") {
@@ -148,43 +173,48 @@ export function useModelBlocksStyle() {
148
173
  continue;
149
174
  }
150
175
  const key = `${name}_${item}_${colorMap}_${minimum}_${maximum}`;
151
- if (!polyhedronGroups[key]) {
152
- polyhedronGroups[key] = {
153
- name,
154
- item,
155
- minimum,
156
- maximum,
157
- colorMap,
158
- blocks_ids: [],
159
- };
160
- }
176
+ polyhedronGroups[key] ??= {
177
+ name,
178
+ item,
179
+ minimum,
180
+ maximum,
181
+ colorMap,
182
+ blocks_ids: [],
183
+ };
161
184
  polyhedronGroups[key].blocks_ids.push(block_id);
162
185
  }
163
186
  coloringPromises.push(
164
187
  ...Object.values(polyhedronGroups).map(
165
- ({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) =>
166
- modelBlocksPolyhedronAttribute.setModelBlocksPolyhedronAttribute(modelId, ids, {
167
- name,
168
- item,
169
- minimum,
170
- maximum,
171
- colorMap,
172
- }),
188
+ async ({ name, item, minimum, maximum, colorMap, blocks_ids: ids }) => {
189
+ const result = await modelBlocksPolyhedronAttribute.setModelBlocksPolyhedronAttribute(
190
+ modelId,
191
+ ids,
192
+ {
193
+ name,
194
+ item,
195
+ minimum,
196
+ maximum,
197
+ colorMap,
198
+ },
199
+ );
200
+ return result;
201
+ },
173
202
  ),
174
203
  );
175
204
  }
176
205
  }
177
206
 
178
- return Promise.all(coloringPromises);
207
+ const result = await Promise.all(coloringPromises);
208
+ return result;
179
209
  }
180
210
 
181
- async function applyModelBlocksStyle(modelId: string) {
211
+ async function applyModelBlocksStyle(modelId: string): Promise<void> {
182
212
  const blocks_ids = await dataStore.getBlocksGeodeIds(modelId);
183
213
  if (blocks_ids.length === 0) {
184
214
  return;
185
215
  }
186
216
 
187
- return Promise.all([
217
+ await Promise.all([
188
218
  applyModelBlocksVisibilityStyle(modelId, blocks_ids),
189
219
  applyModelBlocksColoringStyle(modelId, blocks_ids),
190
220
  ]);