@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.
Files changed (499) hide show
  1. package/.build/opengeodeweb_front_schemas.js +175 -0
  2. package/.build/server/utils/app_config.js +57 -0
  3. package/.build/server/utils/cleanup.js +135 -0
  4. package/.build/server/utils/cloud.js +156 -0
  5. package/.build/server/utils/microservices.js +153 -0
  6. package/.build/server/utils/path.js +108 -0
  7. package/.build/server/utils/scripts.js +134 -0
  8. package/.build/server/utils/server.js +44 -0
  9. package/.build/server/utils/server_config.js +51 -0
  10. package/.build/server/utils/stream.js +6 -0
  11. package/.build/server/utils/ws_client.js +100 -0
  12. package/.build/shared/app_mode.js +8 -0
  13. package/.build/shared/scripts.js +49 -0
  14. package/.build/shared/utils/call_raw.js +31 -0
  15. package/.build/shared/utils/call_schema.js +28 -0
  16. package/.build/shared/utils/fetch_raw.js +52 -0
  17. package/.build/shared/utils/fetch_schema.js +32 -0
  18. package/.build/shared/utils/file.js +14 -0
  19. package/.build/shared/utils/parse_boolean.js +23 -0
  20. package/.build/shared/utils/response_handlers/load.js +50 -0
  21. package/.build/shared/utils/types.js +1 -0
  22. package/.build/shared/utils/validate_schema.js +17 -0
  23. package/README.md +8 -0
  24. package/app/assets/{geode_objects.js → geode_objects.ts} +8 -1
  25. package/app/components/ActionButton.vue +28 -12
  26. package/app/components/Basic/Slider.vue +2 -2
  27. package/app/components/Basic/Switch.vue +2 -2
  28. package/app/components/CameraManager/List.vue +11 -11
  29. package/app/components/CameraManager/Saver.vue +8 -4
  30. package/app/components/CameraManager.vue +24 -12
  31. package/app/components/CameraOrientation.vue +31 -17
  32. package/app/components/ClippingPlaneCard.vue +13 -12
  33. package/app/components/ClippingPlanes.vue +31 -21
  34. package/app/components/CrsSelector.vue +26 -18
  35. package/app/components/DeleteDialog.vue +18 -16
  36. package/app/components/DragAndDrop.vue +55 -37
  37. package/app/components/DragAndDropInternal/DragAndDropInline.vue +31 -16
  38. package/app/components/DragAndDropInternal/DragAndDropOverlay.vue +32 -19
  39. package/app/components/ExtensionSelector.vue +34 -18
  40. package/app/components/FeedBack/ErrorBanner.vue +4 -3
  41. package/app/components/FeedBack/Snackers.vue +6 -5
  42. package/app/components/FetchingData.vue +8 -12
  43. package/app/components/FileSelector.vue +27 -17
  44. package/app/components/FileUploader.vue +51 -30
  45. package/app/components/GlassCard.vue +17 -13
  46. package/app/components/HybridRenderingView.vue +25 -12
  47. package/app/components/HybridViewerTooltip.vue +28 -26
  48. package/app/components/InfraConnected.vue +1 -1
  49. package/app/components/Launcher.vue +12 -10
  50. package/app/components/Loading/EcoMessages.vue +24 -13
  51. package/app/components/Loading/Header.vue +6 -7
  52. package/app/components/Loading/Progress.vue +6 -7
  53. package/app/components/Loading.vue +10 -14
  54. package/app/components/MissingFilesSelector.vue +35 -19
  55. package/app/components/ObjectSelector.vue +37 -21
  56. package/app/components/PackagesVersions.vue +16 -8
  57. package/app/components/Recaptcha.vue +17 -23
  58. package/app/components/RemoteRenderingView.vue +21 -15
  59. package/app/components/Ruler.vue +11 -9
  60. package/app/components/Screenshot.vue +25 -19
  61. package/app/components/SearchBar.vue +12 -6
  62. package/app/components/ShrinkFilter.vue +19 -14
  63. package/app/components/Step.vue +32 -12
  64. package/app/components/Stepper.vue +19 -7
  65. package/app/components/ToolPanel.vue +29 -13
  66. package/app/components/ViewToolbar.vue +53 -44
  67. package/app/components/Viewer/ContextMenu/CenterButton.vue +16 -9
  68. package/app/components/Viewer/ContextMenu/CircularItems.vue +13 -10
  69. package/app/components/Viewer/ContextMenu/ContextMenu.vue +40 -32
  70. package/app/components/Viewer/ContextMenu/ContextMenuItem.vue +31 -17
  71. package/app/components/Viewer/ContextMenu/InfoCard.vue +38 -22
  72. package/app/components/Viewer/EdgedCurve/PointsOptions.vue +8 -5
  73. package/app/components/Viewer/EdgedCurve/SpecificEdgesOptions.vue +67 -48
  74. package/app/components/Viewer/Generic/Mesh/CellsOptions.vue +74 -50
  75. package/app/components/Viewer/Generic/Mesh/EdgesOptions.vue +69 -50
  76. package/app/components/Viewer/Generic/Mesh/PointsOptions.vue +47 -35
  77. package/app/components/Viewer/Generic/Mesh/PolygonsOptions.vue +91 -51
  78. package/app/components/Viewer/Generic/Mesh/PolyhedraOptions.vue +74 -49
  79. package/app/components/Viewer/Generic/Model/BlocksOptions.vue +115 -53
  80. package/app/components/Viewer/Generic/Model/CornersOptions.vue +75 -37
  81. package/app/components/Viewer/Generic/Model/EdgesOptions.vue +13 -9
  82. package/app/components/Viewer/Generic/Model/LinesOptions.vue +110 -61
  83. package/app/components/Viewer/Generic/Model/ModelStyleCard.vue +32 -21
  84. package/app/components/Viewer/Generic/Model/ModelStyleOptions.vue +9 -5
  85. package/app/components/Viewer/Generic/Model/PointsOptions.vue +19 -13
  86. package/app/components/Viewer/Generic/Model/SurfacesOptions.vue +119 -49
  87. package/app/components/Viewer/Grid/2D/CellsOptions.vue +8 -5
  88. package/app/components/Viewer/Grid/2D/EdgesOptions.vue +8 -5
  89. package/app/components/Viewer/Grid/2D/PointsOptions.vue +8 -5
  90. package/app/components/Viewer/Grid/3D/CellsOptions.vue +8 -5
  91. package/app/components/Viewer/Grid/3D/EdgesOptions.vue +8 -5
  92. package/app/components/Viewer/Grid/3D/FacetsOptions.vue +8 -5
  93. package/app/components/Viewer/Grid/3D/PointsOptions.vue +8 -5
  94. package/app/components/Viewer/ObjectTree/Base/CommonTreeView.vue +120 -76
  95. package/app/components/Viewer/ObjectTree/Base/Controls.vue +25 -10
  96. package/app/components/Viewer/ObjectTree/Base/ItemLabel.vue +42 -17
  97. package/app/components/Viewer/ObjectTree/Base/StickyHeader.vue +22 -9
  98. package/app/components/Viewer/ObjectTree/Base/TreeRow.vue +29 -14
  99. package/app/components/Viewer/ObjectTree/Box.vue +32 -15
  100. package/app/components/Viewer/ObjectTree/Layout.vue +55 -35
  101. package/app/components/Viewer/ObjectTree/Views/GlobalObjects.vue +63 -34
  102. package/app/components/Viewer/ObjectTree/Views/{ModelCollections.vue → ModelTree.vue} +101 -39
  103. package/app/components/Viewer/Options/AttributeColorBar.vue +14 -6
  104. package/app/components/Viewer/Options/AttributeRangeSelector.vue +8 -4
  105. package/app/components/Viewer/Options/AttributeSelector.vue +64 -33
  106. package/app/components/Viewer/Options/ColorMapList.vue +52 -24
  107. package/app/components/Viewer/Options/ColorMapPicker.vue +15 -11
  108. package/app/components/Viewer/Options/ColorPicker.vue +239 -50
  109. package/app/components/Viewer/Options/ColoringTypeSelector.vue +87 -67
  110. package/app/components/Viewer/Options/ColormapQuickPicker.vue +16 -12
  111. package/app/components/Viewer/Options/OptionsSection.vue +7 -5
  112. package/app/components/Viewer/Options/Sliders/Size.vue +3 -3
  113. package/app/components/Viewer/Options/Sliders/Slider.vue +9 -6
  114. package/app/components/Viewer/Options/Sliders/Width.vue +3 -3
  115. package/app/components/Viewer/Options/TextureItem.vue +29 -22
  116. package/app/components/Viewer/Options/TexturesSelector.vue +23 -12
  117. package/app/components/Viewer/Options/VisibilitySwitch.vue +3 -3
  118. package/app/components/Viewer/OverlappingObjectsPicker.vue +27 -12
  119. package/app/components/Viewer/PointSet/SpecificPointsOptions.vue +38 -26
  120. package/app/components/Viewer/Solid/EdgesOptions.vue +8 -5
  121. package/app/components/Viewer/Solid/PointsOptions.vue +8 -5
  122. package/app/components/Viewer/Solid/PolygonsOptions.vue +8 -5
  123. package/app/components/Viewer/Solid/SpecificPolyhedraOptions.vue +73 -48
  124. package/app/components/Viewer/Surface/EdgesOptions.vue +8 -5
  125. package/app/components/Viewer/Surface/PointsOptions.vue +8 -5
  126. package/app/components/Viewer/Surface/PolygonsOptions.vue +79 -49
  127. package/app/components/Viewer/Surface/Triangulated/TrianglesOptions.vue +8 -5
  128. package/app/components/Viewer/TetrahedralSolid/TetrahedraOptions.vue +8 -5
  129. package/app/components/Viewer/TetrahedralSolid/TrianglesOptions.vue +8 -5
  130. package/app/components/Viewer/Ui.vue +19 -14
  131. package/app/components/Wrapper.vue +16 -10
  132. package/app/components/ZScaling.vue +18 -10
  133. package/app/components/csv-preview/CsvPreviewer.vue +72 -50
  134. package/app/components/csv-preview/CsvSettings.vue +30 -50
  135. package/app/components/csv-preview/CsvTable.vue +34 -14
  136. package/app/composables/{batch_style.js → batch_style.ts} +9 -7
  137. package/app/composables/clipping_planes_widget.ts +204 -0
  138. package/app/composables/clipping_planes_widget_entries.ts +189 -0
  139. package/app/composables/copy_to_clipboard.ts +7 -0
  140. package/app/composables/global_attribute_style.ts +303 -0
  141. package/app/composables/hover_highlight.ts +127 -0
  142. package/app/composables/{model_collections.js → model_collections.ts} +28 -9
  143. package/app/composables/{model_components.js → model_components.ts} +28 -9
  144. package/app/composables/{project_manager.js → project_manager.ts} +77 -20
  145. package/app/composables/responsive_middle_truncate.ts +48 -0
  146. package/app/composables/{run_function_when_microservices_connected.js → run_function_when_microservices_connected.ts} +1 -1
  147. package/app/composables/stepper_tree.ts +79 -0
  148. package/app/composables/tree_filter.ts +194 -0
  149. package/app/composables/{tree_keyboard_nav.js → tree_keyboard_nav.ts} +62 -20
  150. package/app/composables/{tree_scroll.js → tree_scroll.ts} +61 -12
  151. package/app/composables/use_adaptive_styles.ts +186 -0
  152. package/app/composables/use_overlapping_picker.ts +263 -0
  153. package/app/composables/use_quick_colormap.ts +55 -0
  154. package/app/composables/virtual_tree.ts +271 -0
  155. package/app/composables/vtk_implicit_plane_widget.d.ts +2 -0
  156. package/app/plugins/{auto_store_register.js → auto_store_register.ts} +3 -5
  157. package/app/plugins/click_outside_ignore_snackbars.client.ts +36 -0
  158. package/app/stores/app.ts +252 -0
  159. package/app/stores/app_helpers/extension.ts +179 -0
  160. package/app/stores/{back.js → back.ts} +54 -28
  161. package/app/stores/camera_manager.ts +80 -0
  162. package/app/stores/{cloud.js → cloud.ts} +18 -13
  163. package/app/stores/data.ts +392 -0
  164. package/app/stores/data_helpers/collections.ts +138 -0
  165. package/app/stores/data_helpers/mesh.ts +169 -0
  166. package/app/stores/data_style.ts +167 -0
  167. package/app/stores/{feedback.js → feedback.ts} +19 -8
  168. package/app/stores/{hybrid_viewer.js → hybrid_viewer.ts} +49 -45
  169. package/app/stores/infra.ts +106 -0
  170. package/app/stores/{menu.js → menu.ts} +67 -36
  171. package/app/stores/treeview.ts +383 -0
  172. package/app/stores/{viewer.js → viewer.ts} +75 -42
  173. package/app/utils/attributes.ts +40 -0
  174. package/app/utils/clipping_planes.ts +222 -0
  175. package/app/utils/color_picker.js +54 -0
  176. package/app/utils/colormap.ts +102 -0
  177. package/app/utils/default_styles/{constants.js → constants.ts} +25 -12
  178. package/app/utils/default_styles/{index.js → index.ts} +4 -3
  179. package/app/utils/default_styles/meshes.ts +264 -0
  180. package/app/utils/default_styles/{models.js → models.ts} +106 -52
  181. package/app/utils/{extension.js → extension.ts} +63 -19
  182. package/app/utils/{import_workflow.js → import_workflow.ts} +39 -22
  183. package/app/utils/{log.js → log.ts} +12 -2
  184. package/app/utils/{name_cleaner.js → name_cleaner.ts} +6 -6
  185. package/app/utils/status.ts +19 -0
  186. package/app/utils/{stores.js → stores.ts} +5 -5
  187. package/app/utils/{string.js → string.ts} +6 -6
  188. package/app/utils/{treeview.js → treeview.ts} +4 -1
  189. package/internal/database/{base_database.js → base_database.ts} +7 -3
  190. package/internal/database/database.ts +102 -0
  191. package/internal/database/{extended_database.js → extended_database.ts} +5 -1
  192. package/internal/database/tables/camera_positions.ts +6 -0
  193. package/internal/database/tables/{data.js → data.ts} +3 -1
  194. package/internal/database/tables/data_style.ts +6 -0
  195. package/internal/database/tables/model_component_datastyle.ts +6 -0
  196. package/internal/database/tables/model_component_type_datastyle.ts +6 -0
  197. package/internal/database/tables/model_components.ts +6 -0
  198. package/internal/database/tables/model_components_relation.ts +6 -0
  199. package/internal/database/tables/table_definition.ts +5 -0
  200. package/internal/stores/data_style/mesh/cells/cell.ts +279 -0
  201. package/internal/stores/data_style/mesh/cells/{color.js → color.ts} +13 -7
  202. package/internal/stores/data_style/mesh/cells/common.ts +50 -0
  203. package/internal/stores/data_style/mesh/cells/index.ts +161 -0
  204. package/internal/stores/data_style/mesh/cells/{textures.js → textures.ts} +14 -8
  205. package/internal/stores/data_style/mesh/cells/vertex.ts +285 -0
  206. package/internal/stores/data_style/mesh/cells/visibility.ts +46 -0
  207. package/internal/stores/data_style/mesh/edges/{color.js → color.ts} +13 -7
  208. package/internal/stores/data_style/mesh/edges/common.ts +41 -0
  209. package/internal/stores/data_style/mesh/edges/edge.ts +279 -0
  210. package/internal/stores/data_style/mesh/edges/index.ts +155 -0
  211. package/internal/stores/data_style/mesh/edges/vertex.ts +285 -0
  212. package/internal/stores/data_style/mesh/edges/visibility.ts +45 -0
  213. package/internal/stores/data_style/mesh/edges/width.ts +42 -0
  214. package/internal/stores/data_style/mesh/{index.js → index.ts} +34 -14
  215. package/internal/stores/data_style/mesh/points/{color.js → color.ts} +13 -7
  216. package/internal/stores/data_style/mesh/points/common.ts +51 -0
  217. package/internal/stores/data_style/mesh/points/index.ts +133 -0
  218. package/internal/stores/data_style/mesh/points/size.ts +43 -0
  219. package/internal/stores/data_style/mesh/points/vertex.ts +285 -0
  220. package/internal/stores/data_style/mesh/points/visibility.ts +49 -0
  221. package/internal/stores/data_style/mesh/polygons/{color.js → color.ts} +13 -7
  222. package/internal/stores/data_style/mesh/polygons/common.ts +50 -0
  223. package/internal/stores/data_style/mesh/polygons/index.ts +167 -0
  224. package/internal/stores/data_style/mesh/polygons/polygon.ts +282 -0
  225. package/internal/stores/data_style/mesh/polygons/{textures.js → textures.ts} +14 -8
  226. package/internal/stores/data_style/mesh/polygons/vertex.ts +288 -0
  227. package/internal/stores/data_style/mesh/polygons/visibility.ts +48 -0
  228. package/internal/stores/data_style/mesh/polyhedra/{color.js → color.ts} +13 -7
  229. package/internal/stores/data_style/mesh/polyhedra/common.ts +41 -0
  230. package/internal/stores/data_style/mesh/polyhedra/index.ts +157 -0
  231. package/internal/stores/data_style/mesh/polyhedra/polyhedron.ts +294 -0
  232. package/internal/stores/data_style/mesh/polyhedra/vertex.ts +288 -0
  233. package/internal/stores/data_style/mesh/polyhedra/visibility.ts +48 -0
  234. package/internal/stores/data_style/model/blocks/{color.js → color.ts} +50 -13
  235. package/internal/stores/data_style/model/blocks/common.ts +67 -0
  236. package/internal/stores/data_style/model/blocks/{index.js → index.ts} +111 -66
  237. package/internal/stores/data_style/model/blocks/polyhedron.ts +363 -0
  238. package/internal/stores/data_style/model/blocks/vertex.ts +349 -0
  239. package/internal/stores/data_style/model/blocks/visibility.ts +37 -0
  240. package/internal/stores/data_style/model/color.ts +348 -0
  241. package/internal/stores/data_style/model/common.ts +262 -0
  242. package/internal/stores/data_style/model/corners/{color.js → color.ts} +49 -10
  243. package/internal/stores/data_style/model/corners/common.ts +71 -0
  244. package/internal/stores/data_style/model/corners/{index.js → index.ts} +86 -47
  245. package/internal/stores/data_style/model/corners/vertex.ts +315 -0
  246. package/internal/stores/data_style/model/corners/visibility.ts +39 -0
  247. package/internal/stores/data_style/model/edges/common.ts +29 -0
  248. package/internal/stores/data_style/model/edges/{index.js → index.ts} +2 -7
  249. package/internal/stores/data_style/model/edges/visibility.ts +55 -0
  250. package/internal/stores/data_style/model/{index.js → index.ts} +24 -11
  251. package/internal/stores/data_style/model/lines/{color.js → color.ts} +47 -10
  252. package/internal/stores/data_style/model/lines/common.ts +63 -0
  253. package/internal/stores/data_style/model/lines/edge.ts +343 -0
  254. package/internal/stores/data_style/model/lines/{index.js → index.ts} +108 -66
  255. package/internal/stores/data_style/model/lines/vertex.ts +344 -0
  256. package/internal/stores/data_style/model/lines/visibility.ts +37 -0
  257. package/internal/stores/data_style/model/points/common.ts +25 -0
  258. package/internal/stores/data_style/model/points/index.ts +35 -0
  259. package/internal/stores/data_style/model/points/size.ts +44 -0
  260. package/internal/stores/data_style/model/points/visibility.ts +46 -0
  261. package/internal/stores/data_style/model/selection.ts +138 -0
  262. package/internal/stores/data_style/model/surfaces/{color.js → color.ts} +47 -10
  263. package/internal/stores/data_style/model/surfaces/common.ts +69 -0
  264. package/internal/stores/data_style/model/surfaces/{index.js → index.ts} +113 -66
  265. package/internal/stores/data_style/model/surfaces/polygon.ts +347 -0
  266. package/internal/stores/data_style/model/surfaces/vertex.ts +351 -0
  267. package/internal/stores/data_style/model/surfaces/visibility.ts +37 -0
  268. package/internal/stores/data_style/model/{visibility.js → visibility.ts} +112 -32
  269. package/internal/stores/data_style/state.ts +281 -0
  270. package/internal/stores/data_style/types.ts +30 -0
  271. package/internal/stores/hybrid_viewer/brightness.ts +124 -0
  272. package/internal/stores/hybrid_viewer/camera.ts +326 -0
  273. package/internal/stores/hybrid_viewer/{camera_animation.js → camera_animation.ts} +30 -12
  274. package/internal/stores/hybrid_viewer/{constants.js → constants.ts} +2 -2
  275. package/internal/stores/hybrid_viewer/core.ts +64 -0
  276. package/internal/stores/hybrid_viewer/{filters.js → filters.ts} +10 -13
  277. package/internal/stores/hybrid_viewer/highlight.ts +183 -0
  278. package/internal/stores/hybrid_viewer/{ruler.js → ruler.ts} +50 -22
  279. package/internal/stores/hybrid_viewer/scene.ts +125 -0
  280. package/internal/stores/hybrid_viewer/viewport.ts +177 -0
  281. package/internal/stores/hybrid_viewer/vtk_types.ts +58 -0
  282. package/internal/utils/api_fetch.ts +133 -0
  283. package/internal/utils/upload_file.ts +115 -0
  284. package/internal/utils/viewer_call.ts +99 -0
  285. package/internal/utils/ws_client.ts +54 -0
  286. package/nuxt.config.ts +168 -0
  287. package/opengeodeweb_front_schemas.json +2 -2
  288. package/package.json +49 -13
  289. package/server/api/cloud/extensions/{run.post.js → run.post.ts} +16 -12
  290. package/server/api/local/app/project_folder_path.post.ts +33 -0
  291. package/server/api/local/app/run_back.post.ts +39 -0
  292. package/server/api/local/app/run_viewer.post.ts +39 -0
  293. package/server/api/local/extensions/{kill.post.js → kill.post.ts} +15 -8
  294. package/server/api/local/extensions/{run.post.js → run.post.ts} +17 -12
  295. package/server/api/local/extensions/upload.put.ts +71 -0
  296. package/server/api/microservice/app/{get_is_app_ready.get.js → get_is_app_ready.get.ts} +5 -5
  297. package/server/api/microservice/app/schemas/get_is_app_ready.json +1 -1
  298. package/server/api/microservice/app/set_app_base_url.post.ts +29 -0
  299. package/server/api/microservice/app/set_back_base_url.post.ts +26 -0
  300. package/server/api/microservice/app/set_is_app_ready.post.ts +29 -0
  301. package/server/api/microservice/app/set_viewer_base_url.post.ts +26 -0
  302. package/server/api/microservice/extensions/{download.post.js → download.post.ts} +13 -6
  303. package/server/api/serverless/run_cloud.post.ts +92 -0
  304. package/server/utils/{app_config.js → app_config.ts} +40 -18
  305. package/server/utils/{cleanup.js → cleanup.ts} +76 -29
  306. package/server/utils/{cloud.js → cloud.ts} +33 -17
  307. package/server/utils/{extension.js → extension.ts} +31 -4
  308. package/server/utils/{microservices.js → microservices.ts} +68 -27
  309. package/server/utils/{path.js → path.ts} +36 -17
  310. package/server/utils/{scripts.js → scripts.ts} +49 -33
  311. package/server/utils/{server.js → server.ts} +13 -6
  312. package/server/utils/server_config.ts +74 -0
  313. package/server/utils/stream.ts +6 -0
  314. package/server/utils/ws_client.ts +165 -0
  315. package/shared/{scripts.js → scripts.ts} +15 -10
  316. package/shared/utils/call_raw.ts +73 -0
  317. package/shared/utils/{call_schema.js → call_schema.ts} +15 -6
  318. package/shared/utils/fetch_raw.ts +125 -0
  319. package/shared/utils/{fetch_schema.js → fetch_schema.ts} +16 -7
  320. package/shared/utils/file.ts +22 -0
  321. package/shared/utils/{parse_boolean.js → parse_boolean.ts} +1 -1
  322. package/shared/utils/response_handlers/load.ts +109 -0
  323. package/shared/utils/types.ts +27 -0
  324. package/shared/utils/{validate_schema.js → validate_schema.ts} +3 -1
  325. package/.github/workflows/config.json +0 -5
  326. package/.github/workflows/deploy.yml +0 -15
  327. package/.github/workflows/manual_release.yml +0 -11
  328. package/.github/workflows/merge_request.yml +0 -9
  329. package/.github/workflows/pr_update.yml +0 -11
  330. package/.github/workflows/prepare_deploy.yml +0 -9
  331. package/.github/workflows/schedule.yml +0 -18
  332. package/.github/workflows/test.yml +0 -14
  333. package/.github/workflows/test_pr.yml +0 -12
  334. package/.oxlintrc.json +0 -150
  335. package/.releaserc +0 -11
  336. package/app/components/Viewer/ObjectTree/Views/ModelComponents.vue +0 -224
  337. package/app/composables/clipping_planes_widget.js +0 -249
  338. package/app/composables/global_attribute_style.js +0 -181
  339. package/app/composables/hover_highlight.js +0 -91
  340. package/app/composables/responsive_middle_truncate.js +0 -34
  341. package/app/composables/stepper_tree.js +0 -56
  342. package/app/composables/tree_filter.js +0 -138
  343. package/app/composables/use_adaptive_styles.js +0 -120
  344. package/app/composables/use_overlapping_picker.js +0 -169
  345. package/app/composables/use_quick_colormap.js +0 -32
  346. package/app/composables/virtual_tree.js +0 -191
  347. package/app/stores/app.js +0 -326
  348. package/app/stores/camera_manager.js +0 -57
  349. package/app/stores/data.js +0 -278
  350. package/app/stores/data_helpers/collections.js +0 -96
  351. package/app/stores/data_helpers/mesh.js +0 -122
  352. package/app/stores/data_style.js +0 -116
  353. package/app/stores/infra.js +0 -95
  354. package/app/stores/treeview.js +0 -290
  355. package/app/utils/attributes.js +0 -23
  356. package/app/utils/clipping_planes.js +0 -110
  357. package/app/utils/colormap.js +0 -64
  358. package/app/utils/default_styles/meshes.js +0 -191
  359. package/app/utils/status.js +0 -10
  360. package/commitlint.config.js +0 -20
  361. package/internal/database/database.js +0 -80
  362. package/internal/database/tables/camera_positions.js +0 -4
  363. package/internal/database/tables/data_style.js +0 -4
  364. package/internal/database/tables/model_component_datastyle.js +0 -4
  365. package/internal/database/tables/model_component_type_datastyle.js +0 -4
  366. package/internal/database/tables/model_components.js +0 -4
  367. package/internal/database/tables/model_components_relation.js +0 -4
  368. package/internal/stores/data_style/mesh/cells/cell.js +0 -196
  369. package/internal/stores/data_style/mesh/cells/common.js +0 -39
  370. package/internal/stores/data_style/mesh/cells/index.js +0 -81
  371. package/internal/stores/data_style/mesh/cells/vertex.js +0 -193
  372. package/internal/stores/data_style/mesh/cells/visibility.js +0 -35
  373. package/internal/stores/data_style/mesh/edges/common.js +0 -32
  374. package/internal/stores/data_style/mesh/edges/edge.js +0 -195
  375. package/internal/stores/data_style/mesh/edges/index.js +0 -81
  376. package/internal/stores/data_style/mesh/edges/vertex.js +0 -196
  377. package/internal/stores/data_style/mesh/edges/visibility.js +0 -34
  378. package/internal/stores/data_style/mesh/edges/width.js +0 -34
  379. package/internal/stores/data_style/mesh/points/common.js +0 -37
  380. package/internal/stores/data_style/mesh/points/index.js +0 -82
  381. package/internal/stores/data_style/mesh/points/size.js +0 -35
  382. package/internal/stores/data_style/mesh/points/vertex.js +0 -193
  383. package/internal/stores/data_style/mesh/points/visibility.js +0 -37
  384. package/internal/stores/data_style/mesh/polygons/common.js +0 -32
  385. package/internal/stores/data_style/mesh/polygons/index.js +0 -107
  386. package/internal/stores/data_style/mesh/polygons/polygon.js +0 -196
  387. package/internal/stores/data_style/mesh/polygons/vertex.js +0 -196
  388. package/internal/stores/data_style/mesh/polygons/visibility.js +0 -38
  389. package/internal/stores/data_style/mesh/polyhedra/common.js +0 -32
  390. package/internal/stores/data_style/mesh/polyhedra/index.js +0 -98
  391. package/internal/stores/data_style/mesh/polyhedra/polyhedron.js +0 -196
  392. package/internal/stores/data_style/mesh/polyhedra/vertex.js +0 -196
  393. package/internal/stores/data_style/mesh/polyhedra/visibility.js +0 -38
  394. package/internal/stores/data_style/model/blocks/common.js +0 -51
  395. package/internal/stores/data_style/model/blocks/polyhedron.js +0 -215
  396. package/internal/stores/data_style/model/blocks/vertex.js +0 -204
  397. package/internal/stores/data_style/model/blocks/visibility.js +0 -20
  398. package/internal/stores/data_style/model/color.js +0 -218
  399. package/internal/stores/data_style/model/common.js +0 -141
  400. package/internal/stores/data_style/model/corners/common.js +0 -51
  401. package/internal/stores/data_style/model/corners/vertex.js +0 -204
  402. package/internal/stores/data_style/model/corners/visibility.js +0 -20
  403. package/internal/stores/data_style/model/edges/common.js +0 -20
  404. package/internal/stores/data_style/model/edges/visibility.js +0 -38
  405. package/internal/stores/data_style/model/lines/common.js +0 -51
  406. package/internal/stores/data_style/model/lines/edge.js +0 -203
  407. package/internal/stores/data_style/model/lines/vertex.js +0 -204
  408. package/internal/stores/data_style/model/lines/visibility.js +0 -20
  409. package/internal/stores/data_style/model/points/common.js +0 -20
  410. package/internal/stores/data_style/model/points/index.js +0 -25
  411. package/internal/stores/data_style/model/points/size.js +0 -36
  412. package/internal/stores/data_style/model/points/visibility.js +0 -36
  413. package/internal/stores/data_style/model/selection.js +0 -89
  414. package/internal/stores/data_style/model/surfaces/common.js +0 -51
  415. package/internal/stores/data_style/model/surfaces/polygon.js +0 -215
  416. package/internal/stores/data_style/model/surfaces/vertex.js +0 -215
  417. package/internal/stores/data_style/model/surfaces/visibility.js +0 -20
  418. package/internal/stores/data_style/state.js +0 -197
  419. package/internal/stores/hybrid_viewer/brightness.js +0 -82
  420. package/internal/stores/hybrid_viewer/camera.js +0 -274
  421. package/internal/stores/hybrid_viewer/highlight.js +0 -170
  422. package/internal/stores/hybrid_viewer/scene.js +0 -136
  423. package/internal/stores/hybrid_viewer/viewport.js +0 -140
  424. package/internal/utils/api_fetch.js +0 -52
  425. package/internal/utils/upload_file.js +0 -57
  426. package/internal/utils/viewer_call.js +0 -49
  427. package/internal/utils/ws_client.js +0 -29
  428. package/nuxt.config.js +0 -106
  429. package/scripts/generate_geode_objects.js +0 -24
  430. package/server/api/local/app/project_folder_path.post.js +0 -29
  431. package/server/api/local/app/run_back.post.js +0 -33
  432. package/server/api/local/app/run_viewer.post.js +0 -33
  433. package/server/api/local/extensions/upload.put.js +0 -72
  434. package/server/api/microservice/app/set_app_base_url.post.js +0 -25
  435. package/server/api/microservice/app/set_back_base_url.post.js +0 -22
  436. package/server/api/microservice/app/set_is_app_ready.post.js +0 -25
  437. package/server/api/microservice/app/set_viewer_base_url.post.js +0 -22
  438. package/server/api/serverless/run_cloud.post.js +0 -44
  439. package/server/utils/server_config.js +0 -58
  440. package/server/utils/ws_client.js +0 -112
  441. package/shared/utils/call_raw.js +0 -46
  442. package/shared/utils/fetch_raw.js +0 -61
  443. package/shared/utils/file.js +0 -16
  444. package/shared/utils/response_handlers/load.js +0 -74
  445. package/tests/integration/data/uploads/test.og_brep +0 -0
  446. package/tests/integration/data/uploads/test.og_edc2d +0 -0
  447. package/tests/integration/data/uploads/test.og_edc3d +0 -0
  448. package/tests/integration/data/uploads/test.og_psf3d +0 -0
  449. package/tests/integration/data/uploads/test.og_rgd2d +0 -0
  450. package/tests/integration/data/uploads/test.og_rgd3d +0 -0
  451. package/tests/integration/data/uploads/test.vtu +0 -22
  452. package/tests/integration/setup.js +0 -92
  453. package/tests/integration/stores/data_style/mesh/cells.nuxt.test.js +0 -343
  454. package/tests/integration/stores/data_style/mesh/edges.nuxt.test.js +0 -254
  455. package/tests/integration/stores/data_style/mesh/index.nuxt.test.js +0 -62
  456. package/tests/integration/stores/data_style/mesh/points.nuxt.test.js +0 -201
  457. package/tests/integration/stores/data_style/mesh/polygons.nuxt.test.js +0 -260
  458. package/tests/integration/stores/data_style/mesh/polyhedra.nuxt.test.js +0 -267
  459. package/tests/integration/stores/data_style/model/blocks.nuxt.test.js +0 -397
  460. package/tests/integration/stores/data_style/model/corners.nuxt.test.js +0 -264
  461. package/tests/integration/stores/data_style/model/edges.nuxt.test.js +0 -71
  462. package/tests/integration/stores/data_style/model/index.nuxt.test.js +0 -92
  463. package/tests/integration/stores/data_style/model/lines.nuxt.test.js +0 -379
  464. package/tests/integration/stores/data_style/model/points.nuxt.test.js +0 -95
  465. package/tests/integration/stores/data_style/model/surfaces.nuxt.test.js +0 -574
  466. package/tests/integration/stores/viewer.nuxt.test.js +0 -69
  467. package/tests/setup_indexeddb.js +0 -4
  468. package/tests/unit/components/CrsSelector.nuxt.test.js +0 -55
  469. package/tests/unit/components/DragAndDrop.nuxt.test.js +0 -89
  470. package/tests/unit/components/ExtensionSelector.nuxt.test.js +0 -65
  471. package/tests/unit/components/FeedBack/ErrorsBanner.nuxt.test.js +0 -41
  472. package/tests/unit/components/FeedBack/Snackers.nuxt.test.js +0 -49
  473. package/tests/unit/components/FileSelector.nuxt.test.js +0 -124
  474. package/tests/unit/components/FileUploader.nuxt.test.js +0 -69
  475. package/tests/unit/components/MissingFilesSelector.nuxt.test.js +0 -77
  476. package/tests/unit/components/ObjectSelector.nuxt.test.js +0 -118
  477. package/tests/unit/components/PackagesVersions.nuxt.test.js +0 -42
  478. package/tests/unit/components/Step.nuxt.test.js +0 -51
  479. package/tests/unit/components/Stepper.nuxt.test.js +0 -41
  480. package/tests/unit/components/ToolPanel.nuxt.test.js +0 -66
  481. package/tests/unit/composables/api_fetch.nuxt.test.js +0 -75
  482. package/tests/unit/composables/project_manager.nuxt.test.js +0 -299
  483. package/tests/unit/composables/run_function_when_microservices_connected.nuxt.test.js +0 -57
  484. package/tests/unit/composables/upload_file.nuxt.test.js +0 -45
  485. package/tests/unit/composables/virtual_tree.nuxt.test.js +0 -63
  486. package/tests/unit/plugins/project_load.nuxt.test.js +0 -98
  487. package/tests/unit/stores/app.nuxt.test.js +0 -189
  488. package/tests/unit/stores/back.nuxt.test.js +0 -147
  489. package/tests/unit/stores/cloud.nuxt.test.js +0 -90
  490. package/tests/unit/stores/data.nuxt.test.js +0 -162
  491. package/tests/unit/stores/feedback.nuxt.test.js +0 -90
  492. package/tests/unit/stores/infra.nuxt.test.js +0 -313
  493. package/tests/unit/stores/treeview.nuxt.test.js +0 -63
  494. package/tests/unit/stores/viewer.nuxt.test.js +0 -161
  495. package/tests/unit/utils/validate_schema.nuxt.test.js +0 -38
  496. package/tests/utils.js +0 -20
  497. package/tests/vitest.config.js +0 -67
  498. /package/server/api/local/app/{kill.post.js → kill.post.ts} +0 -0
  499. /package/shared/{app_mode.js → app_mode.ts} +0 -0
@@ -1,13 +1,13 @@
1
- <script setup>
2
- import ActionButton from "@ogw_front/components/ActionButton";
1
+ <script setup lang="ts">
2
+ import ActionButton from "@ogw_front/components/ActionButton.vue";
3
3
  import CameraBookmarkIcon from "@ogw_front/assets/viewer_svgs/camera-bookmark.svg";
4
- import CameraManager from "@ogw_front/components/CameraManager";
5
- import CameraOrientation from "@ogw_front/components/CameraOrientation";
6
- import ClippingPlanes from "@ogw_front/components/ClippingPlanes";
7
- import Ruler from "@ogw_front/components/Ruler";
8
- import Screenshot from "@ogw_front/components/Screenshot";
9
- import ShrinkFilter from "@ogw_front/components/ShrinkFilter";
10
- import ZScaling from "@ogw_front/components/ZScaling";
4
+ import CameraManager from "@ogw_front/components/CameraManager.vue";
5
+ import CameraOrientation from "@ogw_front/components/CameraOrientation.vue";
6
+ import ClippingPlanes from "@ogw_front/components/ClippingPlanes.vue";
7
+ import Ruler from "@ogw_front/components/Ruler.vue";
8
+ import Screenshot from "@ogw_front/components/Screenshot.vue";
9
+ import ShrinkFilter from "@ogw_front/components/ShrinkFilter.vue";
10
+ import ZScaling from "@ogw_front/components/ZScaling.vue";
11
11
  import { onKeyStroke } from "@vueuse/core";
12
12
  import schemas from "@geode/opengeodeweb-viewer/opengeodeweb_viewer_schemas.json";
13
13
  import { useHybridViewerStore } from "@ogw_front/stores/hybrid_viewer";
@@ -15,16 +15,27 @@ import { useViewerStore } from "@ogw_front/stores/viewer";
15
15
 
16
16
  const hybridViewerStore = useHybridViewerStore();
17
17
  const viewerStore = useViewerStore();
18
- const showScreenshot = ref(false);
19
- const showCameraManager = ref(false);
20
- const showCameraOrientation = ref(false);
21
- const showZScaling = ref(false);
22
- const showClippingPlanes = ref(false);
23
- const showShrinkFilter = ref(false);
24
- const showRuler = ref(false);
25
- const gridScale = ref(false);
26
- const zScale = ref(hybridViewerStore.zScale);
27
- const openSubMenus = ref({});
18
+ const showScreenshot = ref<boolean>(false);
19
+ const showCameraManager = ref<boolean>(false);
20
+ const showCameraOrientation = ref<boolean>(false);
21
+ const showZScaling = ref<boolean>(false);
22
+ const showClippingPlanes = ref<boolean>(false);
23
+ const showShrinkFilter = ref<boolean>(false);
24
+ const showRuler = ref<boolean>(false);
25
+ const gridScale = ref<boolean>(false);
26
+ const zScale = ref<number>(hybridViewerStore.zScale);
27
+ const openSubMenus = ref<Record<string, boolean>>({});
28
+
29
+ interface CameraOptionAction {
30
+ title?: string;
31
+ testId: string;
32
+ tooltip?: string;
33
+ icon: string;
34
+ iconSize?: number;
35
+ color?: string;
36
+ action?: () => void;
37
+ menu?: CameraOptionAction[];
38
+ }
28
39
 
29
40
  watch(
30
41
  () => hybridViewerStore.zScale,
@@ -33,7 +44,7 @@ watch(
33
44
  },
34
45
  );
35
46
 
36
- async function handleZScalingClose() {
47
+ async function handleZScalingClose(): Promise<void> {
37
48
  await hybridViewerStore.setZScaling(zScale.value);
38
49
  showZScaling.value = false;
39
50
  }
@@ -47,7 +58,7 @@ onKeyStroke("Escape", () => {
47
58
  }
48
59
  });
49
60
 
50
- function closeAllToolsExcept(toolRef) {
61
+ function closeAllToolsExcept(toolRef: Ref<boolean>): void {
51
62
  const tools = [
52
63
  showCameraOrientation,
53
64
  showCameraManager,
@@ -64,17 +75,17 @@ function closeAllToolsExcept(toolRef) {
64
75
  }
65
76
  }
66
77
 
67
- function toggleTool(toolRef) {
78
+ function toggleTool(toolRef: Ref<boolean>): void {
68
79
  closeAllToolsExcept(toolRef);
69
80
  toolRef.value = !toolRef.value;
70
81
  }
71
82
 
72
- const camera_options = computed(() => [
83
+ const camera_options = computed<CameraOptionAction[]>(() => [
73
84
  {
74
85
  testId: "resetCameraButton",
75
86
  tooltip: "Reset camera",
76
87
  icon: "mdi-cube-scan",
77
- action: () => {
88
+ action: (): void => {
78
89
  hybridViewerStore.resetCamera();
79
90
  },
80
91
  },
@@ -83,7 +94,7 @@ const camera_options = computed(() => [
83
94
  tooltip: "Center on click",
84
95
  icon: "mdi-crosshairs-question",
85
96
  color: hybridViewerStore.is_picking ? "primary" : undefined,
86
- action: () => {
97
+ action: (): void => {
87
98
  hybridViewerStore.is_picking = !hybridViewerStore.is_picking;
88
99
  },
89
100
  },
@@ -93,7 +104,7 @@ const camera_options = computed(() => [
93
104
  icon: "mdi-cursor-default-click",
94
105
  color: hybridViewerStore.is_hover_highlight ? "primary" : undefined,
95
106
  action: hybridViewerStore.is_hover_highlight
96
- ? () => {
107
+ ? (): void => {
97
108
  hybridViewerStore.is_hover_highlight = false;
98
109
  hybridViewerStore.clearHoverHighlight();
99
110
  }
@@ -103,7 +114,7 @@ const camera_options = computed(() => [
103
114
  title: "Cells",
104
115
  testId: "highlightOnHoverCellsButton",
105
116
  icon: "mdi-select-all",
106
- action: () => {
117
+ action: (): void => {
107
118
  if (
108
119
  hybridViewerStore.is_hover_highlight &&
109
120
  hybridViewerStore.hover_highlight_field_type === "CELL"
@@ -120,7 +131,7 @@ const camera_options = computed(() => [
120
131
  title: "Points",
121
132
  testId: "highlightOnHoverPointsButton",
122
133
  icon: "mdi-select-drag",
123
- action: () => {
134
+ action: (): void => {
124
135
  if (
125
136
  hybridViewerStore.is_hover_highlight &&
126
137
  hybridViewerStore.hover_highlight_field_type === "POINT"
@@ -139,7 +150,7 @@ const camera_options = computed(() => [
139
150
  testId: "cameraOrientationButton",
140
151
  tooltip: "Camera orientation",
141
152
  icon: "mdi-rotate-3d",
142
- action: () => {
153
+ action: (): void => {
143
154
  toggleTool(showCameraOrientation);
144
155
  },
145
156
  },
@@ -148,7 +159,7 @@ const camera_options = computed(() => [
148
159
  tooltip: "Manage camera positions",
149
160
  icon: CameraBookmarkIcon,
150
161
  iconSize: 34,
151
- action: () => {
162
+ action: (): void => {
152
163
  toggleTool(showCameraManager);
153
164
  },
154
165
  },
@@ -156,7 +167,7 @@ const camera_options = computed(() => [
156
167
  testId: "screenshotButton",
157
168
  tooltip: "Take a screenshot",
158
169
  icon: "mdi-camera",
159
- action: () => {
170
+ action: (): void => {
160
171
  toggleTool(showScreenshot);
161
172
  },
162
173
  },
@@ -165,7 +176,7 @@ const camera_options = computed(() => [
165
176
  tooltip: "Toggle grid scale",
166
177
  icon: "mdi-ruler-square",
167
178
  color: gridScale.value ? "primary" : undefined,
168
- action: () => {
179
+ action: (): void => {
169
180
  const schema = schemas.opengeodeweb_viewer.viewer.grid_scale;
170
181
  const params = { visibility: !gridScale.value };
171
182
  viewerStore.request(
@@ -186,7 +197,7 @@ const camera_options = computed(() => [
186
197
  testId: "zScalingButton",
187
198
  tooltip: "Z Scaling Control",
188
199
  icon: "mdi-sort",
189
- action: () => {
200
+ action: (): void => {
190
201
  toggleTool(showZScaling);
191
202
  },
192
203
  },
@@ -195,7 +206,7 @@ const camera_options = computed(() => [
195
206
  tooltip: "Clipping Planes",
196
207
  icon: "mdi-content-cut",
197
208
  color: showClippingPlanes.value ? "primary" : undefined,
198
- action: () => {
209
+ action: (): void => {
199
210
  toggleTool(showClippingPlanes);
200
211
  },
201
212
  },
@@ -204,7 +215,7 @@ const camera_options = computed(() => [
204
215
  tooltip: "Shrink Filter",
205
216
  icon: "mdi-arrow-collapse-all",
206
217
  color: showShrinkFilter.value ? "primary" : undefined,
207
- action: () => {
218
+ action: (): void => {
208
219
  toggleTool(showShrinkFilter);
209
220
  },
210
221
  },
@@ -213,7 +224,7 @@ const camera_options = computed(() => [
213
224
  tooltip: "Ruler",
214
225
  icon: "mdi-ruler",
215
226
  color: showRuler.value ? "primary" : undefined,
216
- action: () => {
227
+ action: (): void => {
217
228
  toggleTool(showRuler);
218
229
  },
219
230
  },
@@ -234,10 +245,8 @@ const camera_options = computed(() => [
234
245
  <ActionButton
235
246
  v-bind="props"
236
247
  :data-testid="camera_option.testId"
237
- :icon="
238
- typeof camera_option.icon === 'function' ? camera_option.icon() : camera_option.icon
239
- "
240
- :tooltip="camera_option.tooltip"
248
+ :icon="camera_option.icon"
249
+ :tooltip="camera_option.tooltip ?? ''"
241
250
  :color="camera_option.color"
242
251
  :icon-size="camera_option.iconSize"
243
252
  tooltip-location="left"
@@ -249,16 +258,16 @@ const camera_options = computed(() => [
249
258
  <ActionButton
250
259
  :data-testid="item.testId"
251
260
  :icon="item.icon"
252
- :tooltip="item.title"
261
+ :tooltip="item.title ?? ''"
253
262
  :color="
254
263
  hybridViewerStore.is_hover_highlight &&
255
264
  hybridViewerStore.hover_highlight_field_type ===
256
- item.title.toUpperCase().slice(0, -1)
265
+ item.title?.toUpperCase().slice(0, -1)
257
266
  ? 'primary'
258
267
  : undefined
259
268
  "
260
269
  tooltip-location="top"
261
- @click="item.action"
270
+ @click="item.action?.()"
262
271
  />
263
272
  </v-col>
264
273
  </v-row>
@@ -268,7 +277,7 @@ const camera_options = computed(() => [
268
277
  v-else
269
278
  :data-testid="camera_option.testId"
270
279
  :icon="camera_option.icon"
271
- :tooltip="camera_option.tooltip"
280
+ :tooltip="camera_option.tooltip ?? ''"
272
281
  :color="camera_option.color"
273
282
  :icon-size="camera_option.iconSize"
274
283
  tooltip-location="left"
@@ -1,13 +1,20 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
2
  import { useAdaptiveStyles } from "@ogw_front/composables/use_adaptive_styles";
3
3
  import { useMenuStore } from "@ogw_front/stores/menu";
4
4
 
5
- const { isOverTreeview, isOverToolbar } = defineProps({
6
- isOverTreeview: { type: Boolean, required: true },
7
- isOverToolbar: { type: Boolean, default: false },
8
- });
5
+ interface Props {
6
+ isOverTreeview: boolean;
7
+ isOverToolbar?: boolean;
8
+ }
9
+
10
+ const { isOverTreeview, isOverToolbar = false } = defineProps<Props>();
11
+
12
+ interface Emits {
13
+ drag: [event: MouseEvent];
14
+ click: [event: MouseEvent];
15
+ }
9
16
 
10
- const emit = defineEmits(["drag", "click"]);
17
+ const emit = defineEmits<Emits>();
11
18
 
12
19
  const ADAPTIVE_BLUR_VAL = "15px";
13
20
  const ADAPTIVE_OPACITY_VAL = 0.85;
@@ -46,14 +53,14 @@ let dragMoved = false;
46
53
  let dragStartClientX = 0;
47
54
  let dragStartClientY = 0;
48
55
 
49
- function onMouseDown(event) {
56
+ function onMouseDown(event: MouseEvent): void {
50
57
  dragMoved = false;
51
58
  dragStartClientX = event.clientX;
52
59
  dragStartClientY = event.clientY;
53
60
  emit("drag", event);
54
61
  }
55
62
 
56
- function onMouseUp(event) {
63
+ function onMouseUp(event: MouseEvent): void {
57
64
  const deltaX = event.clientX - dragStartClientX;
58
65
  const deltaY = event.clientY - dragStartClientY;
59
66
  if (Math.hypot(deltaX, deltaY) > dragThreshold) {
@@ -61,7 +68,7 @@ function onMouseUp(event) {
61
68
  }
62
69
  }
63
70
 
64
- function onCenterClick(event) {
71
+ function onCenterClick(event: MouseEvent): void {
65
72
  event.stopPropagation();
66
73
  if (!dragMoved) {
67
74
  emit("click", event);
@@ -1,12 +1,15 @@
1
- <script setup>
1
+ <script setup lang="ts">
2
+ import type { Component } from "vue";
2
3
  import { useMenuStore } from "@ogw_front/stores/menu";
3
4
 
4
- const { menuItems, id, metaData, menuItemCount } = defineProps({
5
- menuItems: { type: Array, required: true },
6
- id: { type: String, required: true },
7
- metaData: { type: Object, required: true },
8
- menuItemCount: { type: Number, required: true },
9
- });
5
+ interface Props {
6
+ menuItems: Component[];
7
+ id: string;
8
+ metaData: Record<string, unknown>;
9
+ menuItemCount: number;
10
+ }
11
+
12
+ const { menuItems, id, metaData, menuItemCount } = defineProps<Props>();
10
13
 
11
14
  const RADIUS = 80;
12
15
  const Z_INDEX_ACTIVE_ITEM = 10;
@@ -19,7 +22,7 @@ const ANGLE_315 = 315;
19
22
 
20
23
  const menuStore = useMenuStore();
21
24
 
22
- function getItemStyle(index) {
25
+ function getItemStyle(index: number): Record<string, string> {
23
26
  const angle = (index / menuItemCount) * 2 * Math.PI;
24
27
  return {
25
28
  transform: `translate(${Math.cos(angle) * RADIUS}px, ${Math.sin(angle) * RADIUS}px)`,
@@ -29,7 +32,7 @@ function getItemStyle(index) {
29
32
  };
30
33
  }
31
34
 
32
- function getTooltipLocation(index) {
35
+ function getTooltipLocation(index: number): string {
33
36
  const angle = (index / menuItemCount) * FULL_ANGLE;
34
37
  if (angle < ANGLE_45 || angle >= ANGLE_315) {
35
38
  return "right";
@@ -43,7 +46,7 @@ function getTooltipLocation(index) {
43
46
  return "bottom";
44
47
  }
45
48
 
46
- function getTooltipOrigin(index) {
49
+ function getTooltipOrigin(index: number): string {
47
50
  const angle = (index / menuItemCount) * FULL_ANGLE;
48
51
  if (angle < ANGLE_45 || angle >= ANGLE_315) {
49
52
  return "left";
@@ -1,18 +1,21 @@
1
- <script setup>
2
- import CenterButton from "@ogw_front/components/Viewer/ContextMenu/CenterButton";
3
- import CircularItems from "@ogw_front/components/Viewer/ContextMenu/CircularItems";
4
- import InfoCard from "@ogw_front/components/Viewer/ContextMenu/InfoCard";
1
+ <script setup lang="ts">
2
+ import CenterButton from "@ogw_front/components/Viewer/ContextMenu/CenterButton.vue";
3
+ import CircularItems from "@ogw_front/components/Viewer/ContextMenu/CircularItems.vue";
4
+ import type { Component } from "vue";
5
+ import InfoCard from "@ogw_front/components/Viewer/ContextMenu/InfoCard.vue";
5
6
  import { useEventListener } from "@vueuse/core";
6
7
  import { useMenuStore } from "@ogw_front/stores/menu";
7
8
  import { useTreeviewStore } from "@ogw_front/stores/treeview";
8
9
 
9
- const { id, x, y, containerWidth, containerHeight } = defineProps({
10
- id: { type: String, required: true },
11
- x: { type: Number, required: true },
12
- y: { type: Number, required: true },
13
- containerWidth: { type: Number, required: true },
14
- containerHeight: { type: Number, required: true },
15
- });
10
+ interface Props {
11
+ id: string;
12
+ x: number;
13
+ y: number;
14
+ containerWidth: number;
15
+ containerHeight: number;
16
+ }
17
+
18
+ const { id, x, y, containerWidth, containerHeight } = defineProps<Props>();
16
19
 
17
20
  const RADIUS = 80;
18
21
  const MARGIN_OFFSET = 40;
@@ -28,15 +31,20 @@ const treeviewStore = useTreeviewStore();
28
31
 
29
32
  const meta_data = computed(() => menuStore.current_meta_data || {});
30
33
 
31
- const show_menu = ref(true);
32
- const showName = ref(false);
33
- const isDragging = ref(false);
34
- const dragStartX = ref(0);
35
- const dragStartY = ref(0);
36
- const menuX = ref(x);
37
- const menuY = ref(y);
34
+ const show_menu = ref<boolean>(true);
35
+ const showName = ref<boolean>(false);
36
+ const isDragging = ref<boolean>(false);
37
+ const dragStartX = ref<number>(0);
38
+ const dragStartY = ref<number>(0);
39
+ const menuX = ref<number>(x);
40
+ const menuY = ref<number>(y);
41
+
42
+ interface Position {
43
+ x: number;
44
+ y: number;
45
+ }
38
46
 
39
- function clampPosition(posX, posY) {
47
+ function clampPosition(posX: number, posY: number): Position {
40
48
  const margin = RADIUS + MARGIN_OFFSET;
41
49
  return {
42
50
  x: Math.min(Math.max(posX, margin), containerWidth - margin),
@@ -44,13 +52,13 @@ function clampPosition(posX, posY) {
44
52
  };
45
53
  }
46
54
 
47
- function startDrag(event) {
55
+ function startDrag(event: MouseEvent): void {
48
56
  isDragging.value = true;
49
57
  dragStartX.value = event.clientX - menuX.value;
50
58
  dragStartY.value = event.clientY - menuY.value;
51
59
  }
52
60
 
53
- function handleDrag(event) {
61
+ function handleDrag(event: MouseEvent): void {
54
62
  const { x: clampedX, y: clampedY } = clampPosition(
55
63
  event.clientX - dragStartX.value,
56
64
  event.clientY - dragStartY.value,
@@ -60,7 +68,7 @@ function handleDrag(event) {
60
68
  menuStore.setMenuPosition(clampedX, clampedY);
61
69
  }
62
70
 
63
- function stopDrag(event) {
71
+ function stopDrag(event: MouseEvent): void {
64
72
  isDragging.value = false;
65
73
  event.stopPropagation();
66
74
  menuStore.setMenuPosition(menuX.value, menuY.value);
@@ -73,7 +81,7 @@ watch(show_menu, (newVal) => {
73
81
  });
74
82
 
75
83
  watch(
76
- () => [x, y, containerWidth, containerHeight],
84
+ () => [x, y, containerWidth, containerHeight] as const,
77
85
  ([newX, newY]) => {
78
86
  const { x: clampedX, y: clampedY } = clampPosition(newX, newY);
79
87
  menuX.value = clampedX;
@@ -86,7 +94,7 @@ watch(
86
94
  useEventListener(
87
95
  globalThis,
88
96
  "mousemove",
89
- (event) => {
97
+ (event: MouseEvent) => {
90
98
  if (!isDragging.value) {
91
99
  return;
92
100
  }
@@ -95,14 +103,14 @@ useEventListener(
95
103
  { passive: true },
96
104
  );
97
105
 
98
- useEventListener(globalThis, "mouseup", (event) => {
106
+ useEventListener(globalThis, "mouseup", (event: MouseEvent) => {
99
107
  if (!isDragging.value) {
100
108
  return;
101
109
  }
102
110
  stopDrag(event);
103
111
  });
104
112
 
105
- const menu_items = shallowRef([]);
113
+ const menu_items = shallowRef<Component[]>([]);
106
114
  watch(
107
115
  () => [meta_data.value.viewer_type, meta_data.value.geode_object_type],
108
116
  ([viewer_type, geode_object_type]) => {
@@ -111,9 +119,9 @@ watch(
111
119
  { immediate: true },
112
120
  );
113
121
 
114
- const menuItemCount = computed(() => menu_items.value.length);
122
+ const menuItemCount = computed<number>(() => menu_items.value.length);
115
123
 
116
- const isOverTreeview = computed(() => {
124
+ const isOverTreeview = computed<boolean>(() => {
117
125
  const hasAdditional = treeviewStore.opened_views.some((view) => view.id !== "main");
118
126
  const hasMain = treeviewStore.opened_views.some((view) => view.id === "main");
119
127
  const firstColWidth = hasMain ? treeviewStore.panelWidth : 0;
@@ -127,7 +135,7 @@ const isOverTreeview = computed(() => {
127
135
  return menuX.value < treeviewWidth;
128
136
  });
129
137
 
130
- const isOverToolbar = computed(() => {
138
+ const isOverToolbar = computed<boolean>(() => {
131
139
  const toolbarEl = document.querySelector(".view-toolbar");
132
140
  if (!toolbarEl) {
133
141
  return false;
@@ -145,15 +153,15 @@ const isOverToolbar = computed(() => {
145
153
  );
146
154
  });
147
155
 
148
- function getMenuStyle() {
156
+ function getMenuStyle(): Record<string, string> {
149
157
  return {
150
- position: "fixed",
158
+ position: "fixed" as const,
151
159
  left: `${menuStore.containerLeft + menuX.value - RADIUS}px`,
152
160
  top: `${menuStore.containerTop + menuY.value - RADIUS}px`,
153
161
  };
154
162
  }
155
163
 
156
- function toggleShowName() {
164
+ function toggleShowName(): void {
157
165
  showName.value = !showName.value;
158
166
  }
159
167
  </script>
@@ -1,5 +1,5 @@
1
- <script setup>
2
- import GlassCard from "@ogw_front/components/GlassCard";
1
+ <script setup lang="ts">
2
+ import GlassCard from "@ogw_front/components/GlassCard.vue";
3
3
  import { useAdaptiveStyles } from "@ogw_front/composables/use_adaptive_styles";
4
4
  import { useMenuStore } from "@ogw_front/stores/menu";
5
5
  import { useTheme } from "vuetify";
@@ -15,12 +15,22 @@ const menuStore = useMenuStore();
15
15
  const theme = useTheme();
16
16
  const primaryColor = computed(() => theme.current.value.colors.primary);
17
17
 
18
- const { index, itemProps, tooltip, btnImage } = defineProps({
19
- index: { type: Number, required: true },
20
- itemProps: { type: Object, required: true },
21
- tooltip: { type: String, required: true },
22
- btnImage: { type: String, required: true },
23
- });
18
+ interface ItemProps {
19
+ id: string;
20
+ meta_data: Record<string, unknown>;
21
+ tooltip_location: "right" | "top" | "left" | "bottom";
22
+ tooltip_origin: "right" | "top" | "left" | "bottom";
23
+ totalItems: number;
24
+ }
25
+
26
+ interface Props {
27
+ index: number;
28
+ itemProps: ItemProps;
29
+ tooltip: string;
30
+ btnImage: string;
31
+ }
32
+
33
+ const { index, itemProps, tooltip, btnImage } = defineProps<Props>();
24
34
 
25
35
  const buttonCoords = computed(() => {
26
36
  const angle = (index / itemProps.totalItems) * 2 * Math.PI;
@@ -45,7 +55,7 @@ const TREEVIEW_MARGIN_RIGHT = 20;
45
55
  const TREEVIEW_ICON_WIDTH = 48;
46
56
 
47
57
  const treeviewStore = useTreeviewStore();
48
- const isOverTreeview = computed(() => {
58
+ const isOverTreeview = computed<boolean>(() => {
49
59
  const hasAdditional = treeviewStore.opened_views.some((view) => view.id !== "main");
50
60
  const hasMain = treeviewStore.opened_views.some((view) => view.id === "main");
51
61
  const firstColWidth = hasMain ? treeviewStore.panelWidth : 0;
@@ -59,7 +69,7 @@ const isOverTreeview = computed(() => {
59
69
  return buttonCoords.value.x < treeviewWidth;
60
70
  });
61
71
 
62
- const isOverToolbar = computed(() => {
72
+ const isOverToolbar = computed<boolean>(() => {
63
73
  const toolbarEl = document.querySelector(".view-toolbar");
64
74
  if (!toolbarEl) {
65
75
  return false;
@@ -74,7 +84,7 @@ const isOverToolbar = computed(() => {
74
84
  );
75
85
  });
76
86
 
77
- const computedItemStyles = computed(() => {
87
+ const computedItemStyles = computed<Record<string, string>>(() => {
78
88
  if (isOverTreeview.value || isOverToolbar.value) {
79
89
  return {
80
90
  "--adaptive-blur": "15px",
@@ -85,13 +95,15 @@ const computedItemStyles = computed(() => {
85
95
  return adaptiveStyles.value;
86
96
  });
87
97
 
88
- const is_active = computed(() => menuStore.active_item_index === index);
89
- const optionsRef = ref(undefined);
98
+ const is_active = computed<boolean>(() => menuStore.active_item_index === index);
99
+ const optionsRef = ref<HTMLElement | undefined>(undefined);
90
100
  const { height: optionsHeight } = useElementSize(optionsRef);
91
101
 
92
- const maxCardHeight = computed(() => Math.min(CARD_HEIGHT, menuStore.containerHeight - OFFSET));
102
+ const maxCardHeight = computed<number>(() =>
103
+ Math.min(CARD_HEIGHT, menuStore.containerHeight - OFFSET),
104
+ );
93
105
 
94
- const optionsStyle = computed(() => {
106
+ const optionsStyle = computed<Record<string, string>>(() => {
95
107
  if (!is_active.value || !optionsHeight.value) {
96
108
  return {};
97
109
  }
@@ -110,7 +122,7 @@ const optionsStyle = computed(() => {
110
122
  return { top: `calc(50% + ${offsetY}px)` };
111
123
  });
112
124
 
113
- const optionsClass = computed(() => {
125
+ const optionsClass = computed<string>(() => {
114
126
  const loc = itemProps.tooltip_location;
115
127
  const margin = MARGIN;
116
128
  const radius = RADIUS;
@@ -122,9 +134,11 @@ const optionsClass = computed(() => {
122
134
  return menuStore.menuX - radius - margin - CARD_WIDTH < 0 ? "options-right" : "options-left";
123
135
  });
124
136
 
125
- function toggleOptions() {
137
+ function toggleOptions(): void {
126
138
  menuStore.toggleItemOptions(index);
127
139
  }
140
+
141
+ export type { ItemProps };
128
142
  </script>
129
143
  <template>
130
144
  <v-sheet class="menu-item-container transition-swing" color="transparent">