@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
@@ -1,33 +1,43 @@
1
1
  import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
2
2
  import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
3
3
 
4
- export function useMeshCellsCommonStyle() {
4
+ export function useMeshCellsCommonStyle(): {
5
+ meshCellsStyle: (id: string) => StyleValues;
6
+ meshCellsColoring: (id: string) => StyleValues;
7
+ mutateMeshCellsStyle: (id: string, values: StyleValues) => Promise<string>;
8
+ mutateMeshCellsColoring: (id: string, values: StyleValues) => Promise<string>;
9
+ mutateMeshCellsCellStyle: (id: string, values: StyleValues) => Promise<string>;
10
+ } {
5
11
  const dataStyleState = useDataStyleState();
6
12
 
7
- function mutateMeshCellsStyle(id: string, values: StyleValues) {
8
- return dataStyleState.mutateStyle(id, {
13
+ async function mutateMeshCellsStyle(id: string, values: StyleValues): Promise<string> {
14
+ const result = await dataStyleState.mutateStyle(id, {
9
15
  cells: values,
10
16
  });
17
+ return result;
11
18
  }
12
19
 
13
20
  function meshCellsStyle(id: string): StyleValues {
14
- return dataStyleState.getStyle(id).cells as StyleValues;
21
+ return dataStyleState.getStyle(id).cells ?? {};
15
22
  }
16
23
 
17
24
  function meshCellsColoring(id: string): StyleValues {
25
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
18
26
  return meshCellsStyle(id).coloring as StyleValues;
19
27
  }
20
28
 
21
- function mutateMeshCellsColoring(id: string, values: StyleValues) {
22
- return mutateMeshCellsStyle(id, {
29
+ async function mutateMeshCellsColoring(id: string, values: StyleValues): Promise<string> {
30
+ const result = await mutateMeshCellsStyle(id, {
23
31
  coloring: values,
24
32
  });
33
+ return result;
25
34
  }
26
35
 
27
- function mutateMeshCellsCellStyle(id: string, values: StyleValues) {
28
- return mutateMeshCellsColoring(id, {
36
+ async function mutateMeshCellsCellStyle(id: string, values: StyleValues): Promise<string> {
37
+ const result = await mutateMeshCellsColoring(id, {
29
38
  cell: values,
30
39
  });
40
+ return result;
31
41
  }
32
42
 
33
43
  return {
@@ -3,6 +3,7 @@
3
3
  // Local imports
4
4
  import { isMeshCellsCellAttributeValid, useMeshCellsCellAttributeStyle } from "./cell";
5
5
  import { isMeshCellsVertexAttributeValid, useMeshCellsVertexAttributeStyle } from "./vertex";
6
+ import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
6
7
  import { useMeshCellsColorStyle } from "./color";
7
8
  import { useMeshCellsCommonStyle } from "./common";
8
9
  import { useMeshCellsTexturesStyle } from "./textures";
@@ -10,68 +11,147 @@ import { useMeshCellsVisibilityStyle } from "./visibility";
10
11
 
11
12
  // Local constants
12
13
 
13
- export function useMeshCellsStyle() {
14
+ interface MeshCellsActiveColoringDeps {
15
+ readonly commonStyle: ReturnType<typeof useMeshCellsCommonStyle>;
16
+ readonly colorStyle: ReturnType<typeof useMeshCellsColorStyle>;
17
+ readonly texturesStyle: ReturnType<typeof useMeshCellsTexturesStyle>;
18
+ readonly vertexAttributeStyle: ReturnType<typeof useMeshCellsVertexAttributeStyle>;
19
+ readonly cellAttributeStyle: ReturnType<typeof useMeshCellsCellAttributeStyle>;
20
+ }
21
+
22
+ function handleMeshCellsVertexColoring(
23
+ id: string,
24
+ vertexAttributeStyle: ReturnType<typeof useMeshCellsVertexAttributeStyle>,
25
+ ): Promise<unknown> | undefined {
26
+ const name = vertexAttributeStyle.meshCellsVertexAttributeName(id);
27
+ const item = vertexAttributeStyle.meshCellsVertexAttributeItem(id);
28
+ const [minimum, maximum] = vertexAttributeStyle.meshCellsVertexAttributeRange(id);
29
+ const colorMap = vertexAttributeStyle.meshCellsVertexAttributeColorMap(id);
30
+ const vertex_attribute = { name, item, minimum, maximum, colorMap };
31
+ if (!isMeshCellsVertexAttributeValid(vertex_attribute)) {
32
+ return undefined;
33
+ }
34
+ return vertexAttributeStyle.setMeshCellsVertexAttribute(id, vertex_attribute);
35
+ }
36
+
37
+ function handleMeshCellsCellColoring(
38
+ id: string,
39
+ cellAttributeStyle: ReturnType<typeof useMeshCellsCellAttributeStyle>,
40
+ ): Promise<unknown> | undefined {
41
+ const name = cellAttributeStyle.meshCellsCellAttributeName(id);
42
+ const item = cellAttributeStyle.meshCellsCellAttributeItem(id);
43
+ const [minimum, maximum] = cellAttributeStyle.meshCellsCellAttributeRange(id);
44
+ const colorMap = cellAttributeStyle.meshCellsCellAttributeColorMap(id);
45
+ const cell_attribute = { name, item, minimum, maximum, colorMap };
46
+ if (!isMeshCellsCellAttributeValid(cell_attribute)) {
47
+ return undefined;
48
+ }
49
+ return cellAttributeStyle.setMeshCellsCellAttribute(id, cell_attribute);
50
+ }
51
+
52
+ async function setMeshCellsActiveColoring(
53
+ id: string,
54
+ type: string | undefined,
55
+ deps: MeshCellsActiveColoringDeps,
56
+ ): Promise<unknown> {
57
+ await deps.commonStyle.mutateMeshCellsStyle(id, {
58
+ coloring: { active: type },
59
+ });
60
+ if (type === "constant") {
61
+ const result = await deps.colorStyle.setMeshCellsColor(id, deps.colorStyle.meshCellsColor(id));
62
+ return result;
63
+ }
64
+ if (type === "textures") {
65
+ const result = await deps.texturesStyle.setMeshCellsTextures(
66
+ id,
67
+ deps.texturesStyle.meshCellsTextures(id),
68
+ );
69
+ return result;
70
+ }
71
+ if (type === "vertex") {
72
+ const result = await handleMeshCellsVertexColoring(id, deps.vertexAttributeStyle);
73
+ return result;
74
+ }
75
+ if (type === "cell") {
76
+ const result = await handleMeshCellsCellColoring(id, deps.cellAttributeStyle);
77
+ return result;
78
+ }
79
+ throw new Error(`Unknown mesh cells coloring type: ${type}`);
80
+ }
81
+
82
+ async function applyMeshCellsStyle(
83
+ id: string,
84
+ visibilityStyle: ReturnType<typeof useMeshCellsVisibilityStyle>,
85
+ activeColoringType: string | undefined,
86
+ deps: MeshCellsActiveColoringDeps,
87
+ ): Promise<unknown[]> {
88
+ const result = await Promise.all([
89
+ visibilityStyle.setMeshCellsVisibility(id, visibilityStyle.meshCellsVisibility(id)),
90
+ setMeshCellsActiveColoring(id, activeColoringType, deps),
91
+ ]);
92
+ return result;
93
+ }
94
+
95
+ type UseMeshCellsStyleReturn = ReturnType<typeof useMeshCellsCommonStyle> & {
96
+ meshCellsColoring: (id: string) => StyleValues;
97
+ meshCellsActiveColoring: (id: string) => string | undefined;
98
+ setMeshCellsActiveColoring: (id: string, type: string | undefined) => Promise<unknown>;
99
+ applyMeshCellsStyle: (id: string) => Promise<unknown[]>;
100
+ } & ReturnType<typeof useMeshCellsVisibilityStyle> &
101
+ ReturnType<typeof useMeshCellsColorStyle> &
102
+ ReturnType<typeof useMeshCellsTexturesStyle> &
103
+ ReturnType<typeof useMeshCellsVertexAttributeStyle> &
104
+ ReturnType<typeof useMeshCellsCellAttributeStyle>;
105
+
106
+ export function useMeshCellsStyle(): UseMeshCellsStyleReturn {
14
107
  const meshCellsCommonStyle = useMeshCellsCommonStyle();
15
108
  const meshCellsVisibility = useMeshCellsVisibilityStyle();
16
109
  const meshCellsColorStyle = useMeshCellsColorStyle();
17
110
  const meshCellsTexturesStore = useMeshCellsTexturesStyle();
111
+ const meshCellsVertexAttributeStyle = useMeshCellsVertexAttributeStyle();
112
+ const meshCellsCellAttributeStyle = useMeshCellsCellAttributeStyle();
113
+
114
+ const activeColoringDeps: MeshCellsActiveColoringDeps = {
115
+ commonStyle: meshCellsCommonStyle,
116
+ colorStyle: meshCellsColorStyle,
117
+ texturesStyle: meshCellsTexturesStore,
118
+ vertexAttributeStyle: meshCellsVertexAttributeStyle,
119
+ cellAttributeStyle: meshCellsCellAttributeStyle,
120
+ };
18
121
 
19
- function meshCellsColoring(id: string) {
122
+ function meshCellsColoring(id: string): StyleValues {
20
123
  return meshCellsCommonStyle.meshCellsColoring(id);
21
124
  }
22
- const meshCellsVertexAttributeStyle = useMeshCellsVertexAttributeStyle();
23
- const meshCellsCellAttributeStyle = useMeshCellsCellAttributeStyle();
24
125
 
25
126
  function meshCellsActiveColoring(id: string): string | undefined {
127
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring.active is defined as string in the data style schema.
26
128
  return meshCellsColoring(id).active as string | undefined;
27
129
  }
28
130
 
29
- async function setMeshCellsActiveColoring(id: string, type: string | undefined) {
30
- await meshCellsCommonStyle.mutateMeshCellsStyle(id, {
31
- coloring: { active: type },
32
- });
33
- if (type === "constant") {
34
- return meshCellsColorStyle.setMeshCellsColor(id, meshCellsColorStyle.meshCellsColor(id));
35
- } else if (type === "textures") {
36
- const textures = meshCellsTexturesStore.meshCellsTextures(id);
37
- return meshCellsTexturesStore.setMeshCellsTextures(id, textures);
38
- } else if (type === "vertex") {
39
- const name = meshCellsVertexAttributeStyle.meshCellsVertexAttributeName(id);
40
- const item = meshCellsVertexAttributeStyle.meshCellsVertexAttributeItem(id);
41
- const [minimum, maximum] = meshCellsVertexAttributeStyle.meshCellsVertexAttributeRange(id);
42
- const colorMap = meshCellsVertexAttributeStyle.meshCellsVertexAttributeColorMap(id);
43
- const vertex_attribute = { name, item, minimum, maximum, colorMap };
44
- if (!isMeshCellsVertexAttributeValid(vertex_attribute)) {
45
- return;
46
- }
47
- return meshCellsVertexAttributeStyle.setMeshCellsVertexAttribute(id, vertex_attribute);
48
- } else if (type === "cell") {
49
- const name = meshCellsCellAttributeStyle.meshCellsCellAttributeName(id);
50
- const item = meshCellsCellAttributeStyle.meshCellsCellAttributeItem(id);
51
- const [minimum, maximum] = meshCellsCellAttributeStyle.meshCellsCellAttributeRange(id);
52
- const colorMap = meshCellsCellAttributeStyle.meshCellsCellAttributeColorMap(id);
53
- const cell_attribute = { name, item, minimum, maximum, colorMap };
54
- if (!isMeshCellsCellAttributeValid(cell_attribute)) {
55
- return;
56
- }
57
- return meshCellsCellAttributeStyle.setMeshCellsCellAttribute(id, cell_attribute);
58
- }
59
- throw new Error(`Unknown mesh cells coloring type: ${type}`);
131
+ async function boundSetMeshCellsActiveColoring(
132
+ id: string,
133
+ type: string | undefined,
134
+ ): Promise<unknown> {
135
+ const result = await setMeshCellsActiveColoring(id, type, activeColoringDeps);
136
+ return result;
60
137
  }
61
138
 
62
- function applyMeshCellsStyle(id: string) {
63
- return Promise.all([
64
- meshCellsVisibility.setMeshCellsVisibility(id, meshCellsVisibility.meshCellsVisibility(id)),
65
- setMeshCellsActiveColoring(id, meshCellsActiveColoring(id)),
66
- ]);
139
+ async function boundApplyMeshCellsStyle(id: string): Promise<unknown[]> {
140
+ const result = await applyMeshCellsStyle(
141
+ id,
142
+ meshCellsVisibility,
143
+ meshCellsActiveColoring(id),
144
+ activeColoringDeps,
145
+ );
146
+ return result;
67
147
  }
68
148
 
69
149
  return {
70
150
  ...meshCellsCommonStyle,
71
151
  meshCellsColoring,
72
152
  meshCellsActiveColoring,
73
- setMeshCellsActiveColoring,
74
- applyMeshCellsStyle,
153
+ setMeshCellsActiveColoring: boundSetMeshCellsActiveColoring,
154
+ applyMeshCellsStyle: boundApplyMeshCellsStyle,
75
155
  ...meshCellsVisibility,
76
156
  ...meshCellsColorStyle,
77
157
  ...meshCellsTexturesStore,
@@ -8,27 +8,33 @@ import { useViewerStore } from "@ogw_front/stores/viewer";
8
8
  // Local constants
9
9
  const schema = viewer_schemas.opengeodeweb_viewer.mesh.apply_textures;
10
10
 
11
- export function useMeshCellsTexturesStyle() {
11
+ export function useMeshCellsTexturesStyle(): {
12
+ meshCellsTextures: (id: string) => unknown;
13
+ setMeshCellsTextures: (id: string, textures: unknown) => Promise<unknown>;
14
+ } {
12
15
  const viewerStore = useViewerStore();
13
16
  const meshCellsCommonStyle = useMeshCellsCommonStyle();
14
17
 
15
18
  function meshCellsTextures(id: string): unknown {
16
19
  return meshCellsCommonStyle.meshCellsColoring(id).textures;
17
20
  }
18
- function setMeshCellsTextures(id: string, textures: unknown) {
21
+ async function setMeshCellsTextures(id: string, textures: unknown): Promise<unknown> {
19
22
  const params = { id, textures };
20
- return viewerStore.request(
23
+ const result = await viewerStore.request(
21
24
  {
22
25
  schema,
23
26
  params,
24
27
  },
25
28
  {
26
- response_function: () =>
27
- meshCellsCommonStyle.mutateMeshCellsStyle(id, {
29
+ response_function: async () => {
30
+ const mutateResult = await meshCellsCommonStyle.mutateMeshCellsStyle(id, {
28
31
  coloring: { textures },
29
- }),
32
+ });
33
+ return mutateResult;
34
+ },
30
35
  },
31
36
  );
37
+ return result;
32
38
  }
33
39
 
34
40
  return {
@@ -49,11 +49,38 @@ function isMeshCellsVertexAttributeValid({
49
49
  );
50
50
  }
51
51
 
52
+ interface UseMeshCellsVertexAttributeStyleReturn {
53
+ meshCellsVertexAttributeName: (id: string) => string | undefined;
54
+ meshCellsVertexAttributeItem: (id: string) => number;
55
+ meshCellsVertexAttributeRange: (id: string) => [number | undefined, number | undefined];
56
+ meshCellsVertexAttributeColorMap: (id: string) => string | undefined;
57
+ meshCellsVertexAttributeStoredConfig: (
58
+ id: string,
59
+ name: string | undefined,
60
+ item: number | undefined,
61
+ ) => AttributeStoredConfig;
62
+ setMeshCellsVertexAttribute: (id: string, input: AttributeInput) => Promise<unknown>;
63
+ setMeshCellsVertexAttributeName: (id: string, name: string) => Promise<unknown>;
64
+ setMeshCellsVertexAttributeItem: (id: string, item: number) => Promise<unknown>;
65
+ setMeshCellsVertexAttributeRange: (
66
+ id: string,
67
+ minimum: number,
68
+ maximum: number,
69
+ ) => Promise<unknown>;
70
+ setMeshCellsVertexAttributeColorMap: (
71
+ id: string,
72
+ colorMap: string | undefined,
73
+ ) => Promise<unknown>;
74
+ meshCellsVertexAttributeNoDataColor: (id: string) => unknown;
75
+ setMeshCellsVertexAttributeNoDataColor: (id: string, no_data_color: unknown) => Promise<unknown>;
76
+ }
77
+
52
78
  // oxlint-disable-next-line max-lines-per-function
53
- function useMeshCellsVertexAttributeStyle() {
79
+ function useMeshCellsVertexAttributeStyle(): UseMeshCellsVertexAttributeStyleReturn {
54
80
  const viewerStore = useViewerStore();
55
81
  const meshCellsCommonStyle = useMeshCellsCommonStyle();
56
82
  function meshCellsVertexAttribute(id: string): AttributeState {
83
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring.vertex shape is defined by the data style schema.
57
84
  return meshCellsCommonStyle.meshCellsColoring(id).vertex as AttributeState;
58
85
  }
59
86
  function meshCellsVertexAttributeStoredConfig(
@@ -62,14 +89,10 @@ function useMeshCellsVertexAttributeStyle() {
62
89
  item: number | undefined,
63
90
  ): AttributeStoredConfig {
64
91
  const { storedConfigs } = meshCellsVertexAttribute(id);
65
- if (
66
- storedConfigs &&
67
- name !== undefined &&
68
- name in storedConfigs &&
69
- item !== undefined &&
70
- item in storedConfigs[name]!
71
- ) {
72
- return storedConfigs[name]![item]!;
92
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
93
+ const itemConfig = item === undefined ? undefined : nameConfig?.[item];
94
+ if (itemConfig !== undefined) {
95
+ return itemConfig;
73
96
  }
74
97
  return {
75
98
  minimum: undefined,
@@ -78,35 +101,41 @@ function useMeshCellsVertexAttributeStyle() {
78
101
  no_data_color: DEFAULT_NO_DATA_COLOR,
79
102
  };
80
103
  }
81
- function mutateMeshCellsVertexStyle(id: string, values: Record<string, unknown>) {
82
- return meshCellsCommonStyle.mutateMeshCellsStyle(id, {
104
+ async function mutateMeshCellsVertexStyle(
105
+ id: string,
106
+ values: Record<string, unknown>,
107
+ ): Promise<string> {
108
+ const result = await meshCellsCommonStyle.mutateMeshCellsStyle(id, {
83
109
  coloring: {
84
110
  vertex: values,
85
111
  },
86
112
  });
113
+ return result;
87
114
  }
88
- function setMeshCellsVertexAttributeStoredConfig(
115
+ async function setMeshCellsVertexAttributeStoredConfig(
89
116
  id: string,
90
117
  name: string | undefined,
91
118
  item: number | undefined,
92
119
  config: Partial<AttributeStoredConfig>,
93
- ) {
94
- return mutateMeshCellsVertexStyle(id, {
120
+ ): Promise<string> {
121
+ const result = await mutateMeshCellsVertexStyle(id, {
95
122
  storedConfigs: {
96
- [name as string]: {
123
+ [name ?? ""]: {
97
124
  lastItem: item,
98
- [item as number]: config,
125
+ [item ?? 0]: config,
99
126
  },
100
127
  },
101
128
  });
129
+ return result;
102
130
  }
103
131
  function meshCellsVertexAttributeName(id: string): string | undefined {
104
132
  return meshCellsVertexAttribute(id).name;
105
133
  }
106
134
  function meshCellsVertexAttributeLastItem(id: string, name: string | undefined): number {
107
135
  const { storedConfigs } = meshCellsVertexAttribute(id);
108
- if (storedConfigs && name !== undefined && name in storedConfigs) {
109
- return storedConfigs[name]!.lastItem;
136
+ const nameConfig = name === undefined ? undefined : storedConfigs?.[name];
137
+ if (nameConfig !== undefined) {
138
+ return nameConfig.lastItem;
110
139
  }
111
140
  return 0;
112
141
  }
@@ -114,7 +143,7 @@ function useMeshCellsVertexAttributeStyle() {
114
143
  const { item, name } = meshCellsVertexAttribute(id);
115
144
  return item ?? meshCellsVertexAttributeLastItem(id, name);
116
145
  }
117
- function setMeshCellsVertexAttribute(
146
+ async function setMeshCellsVertexAttribute(
118
147
  id: string,
119
148
  {
120
149
  name,
@@ -124,18 +153,18 @@ function useMeshCellsVertexAttributeStyle() {
124
153
  colorMap,
125
154
  no_data_color = DEFAULT_NO_DATA_COLOR,
126
155
  }: AttributeInput,
127
- ) {
128
- mutateMeshCellsVertexStyle(id, {
156
+ ): Promise<unknown> {
157
+ await mutateMeshCellsVertexStyle(id, {
129
158
  name,
130
159
  item,
131
160
  });
132
- setMeshCellsVertexAttributeStoredConfig(id, name, item, {
161
+ await setMeshCellsVertexAttributeStoredConfig(id, name, item, {
133
162
  minimum,
134
163
  maximum,
135
164
  colorMap,
136
165
  no_data_color,
137
166
  });
138
- const points = getRGBPointsFromPreset(colorMap as string);
167
+ const points = getRGBPointsFromPreset(colorMap ?? "");
139
168
  const schema = meshCellsVertexAttributeSchemas.attribute;
140
169
  const params = {
141
170
  id,
@@ -151,7 +180,7 @@ function useMeshCellsVertexAttributeStyle() {
151
180
  params,
152
181
  });
153
182
  }
154
- function applyVertexAttribute(id: string) {
183
+ async function applyVertexAttribute(id: string): Promise<unknown> {
155
184
  const name = meshCellsVertexAttributeName(id);
156
185
  const item = meshCellsVertexAttributeItem(id);
157
186
  const storedConfig = meshCellsVertexAttributeStoredConfig(id, name, item);
@@ -164,19 +193,21 @@ function useMeshCellsVertexAttributeStyle() {
164
193
  no_data_color: storedConfig.no_data_color,
165
194
  };
166
195
  if (isMeshCellsVertexAttributeValid(attribute)) {
167
- return setMeshCellsVertexAttribute(id, attribute);
196
+ const result = await setMeshCellsVertexAttribute(id, attribute);
197
+ return result;
168
198
  }
199
+ return undefined;
169
200
  }
170
- function setMeshCellsVertexAttributeName(id: string, name: string) {
201
+ async function setMeshCellsVertexAttributeName(id: string, name: string): Promise<unknown> {
171
202
  const item = meshCellsVertexAttributeLastItem(id, name);
172
- mutateMeshCellsVertexStyle(id, {
203
+ await mutateMeshCellsVertexStyle(id, {
173
204
  name,
174
205
  item,
175
206
  });
176
207
  return applyVertexAttribute(id);
177
208
  }
178
- function setMeshCellsVertexAttributeItem(id: string, item: number) {
179
- mutateMeshCellsVertexStyle(id, {
209
+ async function setMeshCellsVertexAttributeItem(id: string, item: number): Promise<unknown> {
210
+ await mutateMeshCellsVertexStyle(id, {
180
211
  item,
181
212
  });
182
213
  return applyVertexAttribute(id);
@@ -187,10 +218,14 @@ function useMeshCellsVertexAttributeStyle() {
187
218
  const storedConfig = meshCellsVertexAttributeStoredConfig(id, name, item);
188
219
  return [storedConfig.minimum, storedConfig.maximum];
189
220
  }
190
- function setMeshCellsVertexAttributeRange(id: string, minimum: number, maximum: number) {
221
+ async function setMeshCellsVertexAttributeRange(
222
+ id: string,
223
+ minimum: number,
224
+ maximum: number,
225
+ ): Promise<unknown> {
191
226
  const name = meshCellsVertexAttributeName(id);
192
227
  const item = meshCellsVertexAttributeItem(id);
193
- setMeshCellsVertexAttributeStoredConfig(id, name, item, {
228
+ await setMeshCellsVertexAttributeStoredConfig(id, name, item, {
194
229
  minimum,
195
230
  maximum,
196
231
  });
@@ -202,10 +237,13 @@ function useMeshCellsVertexAttributeStyle() {
202
237
  const storedConfig = meshCellsVertexAttributeStoredConfig(id, name, item);
203
238
  return storedConfig.colorMap;
204
239
  }
205
- function setMeshCellsVertexAttributeColorMap(id: string, colorMap: string | undefined) {
240
+ async function setMeshCellsVertexAttributeColorMap(
241
+ id: string,
242
+ colorMap: string | undefined,
243
+ ): Promise<unknown> {
206
244
  const name = meshCellsVertexAttributeName(id);
207
245
  const item = meshCellsVertexAttributeItem(id);
208
- setMeshCellsVertexAttributeStoredConfig(id, name, item, {
246
+ await setMeshCellsVertexAttributeStoredConfig(id, name, item, {
209
247
  colorMap,
210
248
  });
211
249
  return applyVertexAttribute(id);
@@ -216,7 +254,10 @@ function useMeshCellsVertexAttributeStyle() {
216
254
  const storedConfig = meshCellsVertexAttributeStoredConfig(id, name, item);
217
255
  return storedConfig.no_data_color;
218
256
  }
219
- async function setMeshCellsVertexAttributeNoDataColor(id: string, no_data_color: unknown) {
257
+ async function setMeshCellsVertexAttributeNoDataColor(
258
+ id: string,
259
+ no_data_color: unknown,
260
+ ): Promise<unknown> {
220
261
  const name = meshCellsVertexAttributeName(id);
221
262
  const item = meshCellsVertexAttributeItem(id);
222
263
  const storedConfig = meshCellsVertexAttributeStoredConfig(id, name, item);
@@ -8,24 +8,35 @@ import { useViewerStore } from "@ogw_front/stores/viewer";
8
8
  // Local constants
9
9
  const schema = viewer_schemas.opengeodeweb_viewer.mesh.cells.visibility;
10
10
 
11
- export function useMeshCellsVisibilityStyle() {
11
+ export function useMeshCellsVisibilityStyle(): {
12
+ meshCellsVisibility: (id: string) => boolean | undefined;
13
+ setMeshCellsVisibility: (id: string, visibility: boolean | undefined) => Promise<unknown>;
14
+ } {
12
15
  const viewerStore = useViewerStore();
13
16
  const meshCellsCommonStyle = useMeshCellsCommonStyle();
14
17
 
15
18
  function meshCellsVisibility(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 meshCellsCommonStyle.meshCellsStyle(id).visibility as boolean | undefined;
17
21
  }
18
- function setMeshCellsVisibility(id: string, visibility: boolean | undefined) {
22
+ async function setMeshCellsVisibility(
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: () => meshCellsCommonStyle.mutateMeshCellsStyle(id, { visibility }),
33
+ response_function: async () => {
34
+ const mutateResult = await meshCellsCommonStyle.mutateMeshCellsStyle(id, { visibility });
35
+ return mutateResult;
36
+ },
27
37
  },
28
38
  );
39
+ return result;
29
40
  }
30
41
 
31
42
  return {
@@ -8,27 +8,33 @@ import { useViewerStore } from "@ogw_front/stores/viewer";
8
8
  // Local constants
9
9
  const schema = viewer_schemas.opengeodeweb_viewer.mesh.edges.color;
10
10
 
11
- export function useMeshEdgesColorStyle() {
11
+ export function useMeshEdgesColorStyle(): {
12
+ meshEdgesColor: (id: string) => unknown;
13
+ setMeshEdgesColor: (id: string, color: unknown) => Promise<unknown>;
14
+ } {
12
15
  const viewerStore = useViewerStore();
13
16
  const meshEdgesCommonStyle = useMeshEdgesCommonStyle();
14
17
 
15
18
  function meshEdgesColor(id: string): unknown {
16
19
  return meshEdgesCommonStyle.meshEdgesColoring(id).constant;
17
20
  }
18
- function setMeshEdgesColor(id: string, color: unknown) {
21
+ async function setMeshEdgesColor(id: string, color: unknown): Promise<unknown> {
19
22
  const params = { id, color };
20
- return viewerStore.request(
23
+ const result = await viewerStore.request(
21
24
  {
22
25
  schema,
23
26
  params,
24
27
  },
25
28
  {
26
- response_function: () =>
27
- meshEdgesCommonStyle.mutateMeshEdgesColoring(id, {
29
+ response_function: async () => {
30
+ const mutateResult = await meshEdgesCommonStyle.mutateMeshEdgesColoring(id, {
28
31
  constant: color,
29
- }),
32
+ });
33
+ return mutateResult;
34
+ },
30
35
  },
31
36
  );
37
+ return result;
32
38
  }
33
39
 
34
40
  return {
@@ -1,27 +1,35 @@
1
1
  import type { StyleValues } from "@ogw_internal/stores/data_style/types.js";
2
2
  import { useDataStyleState } from "@ogw_internal/stores/data_style/state";
3
3
 
4
- export function useMeshEdgesCommonStyle() {
4
+ export function useMeshEdgesCommonStyle(): {
5
+ meshEdgesStyle: (id: string) => StyleValues;
6
+ meshEdgesColoring: (id: string) => StyleValues;
7
+ mutateMeshEdgesStyle: (id: string, values: StyleValues) => Promise<string>;
8
+ mutateMeshEdgesColoring: (id: string, values: StyleValues) => Promise<string>;
9
+ } {
5
10
  const dataStyleState = useDataStyleState();
6
11
 
7
- function mutateMeshEdgesStyle(id: string, values: StyleValues) {
8
- return dataStyleState.mutateStyle(id, {
12
+ async function mutateMeshEdgesStyle(id: string, values: StyleValues): Promise<string> {
13
+ const result = await dataStyleState.mutateStyle(id, {
9
14
  edges: values,
10
15
  });
16
+ return result;
11
17
  }
12
18
 
13
19
  function meshEdgesStyle(id: string): StyleValues {
14
- return dataStyleState.getStyle(id).edges as StyleValues;
20
+ return dataStyleState.getStyle(id).edges ?? {};
15
21
  }
16
22
 
17
23
  function meshEdgesColoring(id: string): StyleValues {
24
+ // oxlint-disable-next-line no-unsafe-type-assertion -- coloring shape is defined by the data style schema.
18
25
  return meshEdgesStyle(id).coloring as StyleValues;
19
26
  }
20
27
 
21
- function mutateMeshEdgesColoring(id: string, values: StyleValues) {
22
- return mutateMeshEdgesStyle(id, {
28
+ async function mutateMeshEdgesColoring(id: string, values: StyleValues): Promise<string> {
29
+ const result = await mutateMeshEdgesStyle(id, {
23
30
  coloring: values,
24
31
  });
32
+ return result;
25
33
  }
26
34
 
27
35
  return {