@collabdt/core 0.3.0 → 0.3.2

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 (1338) hide show
  1. package/dist/core/components/AppSidebarContent.d.ts +1 -1
  2. package/dist/core/components/AppSidebarContent.d.ts.map +1 -1
  3. package/dist/core/components/AppSidebarContent.js +9 -9
  4. package/dist/core/components/AppSidebarContent.js.map +1 -1
  5. package/dist/core/components/ConfirmDialog.js.map +1 -1
  6. package/dist/core/components/DataTableSkeleton.d.ts.map +1 -1
  7. package/dist/core/components/DataTableSkeleton.js.map +1 -1
  8. package/dist/core/components/LanguageSwitch.d.ts.map +1 -1
  9. package/dist/core/components/LanguageSwitch.js +4 -4
  10. package/dist/core/components/LanguageSwitch.js.map +1 -1
  11. package/dist/core/components/Logo.js +1 -1
  12. package/dist/core/components/Logo.js.map +1 -1
  13. package/dist/core/components/Toolbar.d.ts +1 -1
  14. package/dist/core/components/Toolbar.d.ts.map +1 -1
  15. package/dist/core/components/Toolbar.js +1 -1
  16. package/dist/core/components/Toolbar.js.map +1 -1
  17. package/dist/core/components/ToolbarBody.d.ts +1 -1
  18. package/dist/core/components/ToolbarBody.d.ts.map +1 -1
  19. package/dist/core/components/ToolbarBody.js +1 -1
  20. package/dist/core/components/ToolbarBody.js.map +1 -1
  21. package/dist/core/components/ToolbarSubmenu.d.ts +1 -1
  22. package/dist/core/components/ToolbarSubmenu.d.ts.map +1 -1
  23. package/dist/core/components/ToolbarSubmenu.js +2 -2
  24. package/dist/core/components/ToolbarSubmenu.js.map +1 -1
  25. package/dist/core/components/TopNavigationBar.d.ts.map +1 -1
  26. package/dist/core/components/TopNavigationBar.js +5 -5
  27. package/dist/core/components/TopNavigationBar.js.map +1 -1
  28. package/dist/core/components/authentication/AuthPage.d.ts.map +1 -1
  29. package/dist/core/components/authentication/AuthPage.js +5 -5
  30. package/dist/core/components/authentication/AuthPage.js.map +1 -1
  31. package/dist/core/components/authentication/ForgotPassword.d.ts.map +1 -1
  32. package/dist/core/components/authentication/ForgotPassword.js +3 -4
  33. package/dist/core/components/authentication/ForgotPassword.js.map +1 -1
  34. package/dist/core/components/authentication/Signin.d.ts.map +1 -1
  35. package/dist/core/components/authentication/Signin.js +5 -5
  36. package/dist/core/components/authentication/Signin.js.map +1 -1
  37. package/dist/core/components/authentication/Signup.d.ts.map +1 -1
  38. package/dist/core/components/authentication/Signup.js +7 -7
  39. package/dist/core/components/authentication/Signup.js.map +1 -1
  40. package/dist/core/components/instance-not-found/index.d.ts.map +1 -1
  41. package/dist/core/components/instance-not-found/index.js +4 -4
  42. package/dist/core/components/instance-not-found/index.js.map +1 -1
  43. package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.d.ts.map +1 -1
  44. package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.js +3 -3
  45. package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.js.map +1 -1
  46. package/dist/core/components/organizationConfig/index.d.ts.map +1 -1
  47. package/dist/core/components/organizationConfig/index.js +4 -4
  48. package/dist/core/components/organizationConfig/index.js.map +1 -1
  49. package/dist/core/components/organizationConfig/src/organizationConfigContent.js +2 -2
  50. package/dist/core/components/organizationConfig/src/organizationConfigContent.js.map +1 -1
  51. package/dist/core/components/settings/index.d.ts.map +1 -1
  52. package/dist/core/components/settings/index.js +2 -2
  53. package/dist/core/components/settings/index.js.map +1 -1
  54. package/dist/core/components/settings/src/AccountSettingsPanel.d.ts.map +1 -1
  55. package/dist/core/components/settings/src/AccountSettingsPanel.js +8 -8
  56. package/dist/core/components/settings/src/AccountSettingsPanel.js.map +1 -1
  57. package/dist/core/components/settings/src/ChangePassword.d.ts.map +1 -1
  58. package/dist/core/components/settings/src/ChangePassword.js +5 -5
  59. package/dist/core/components/settings/src/ChangePassword.js.map +1 -1
  60. package/dist/core/components/settings/src/OrganizationSettingsPanel.d.ts.map +1 -1
  61. package/dist/core/components/settings/src/OrganizationSettingsPanel.js +7 -7
  62. package/dist/core/components/settings/src/OrganizationSettingsPanel.js.map +1 -1
  63. package/dist/core/components/settings/src/SettingsContent.d.ts.map +1 -1
  64. package/dist/core/components/settings/src/SettingsContent.js +1 -1
  65. package/dist/core/components/settings/src/SettingsContent.js.map +1 -1
  66. package/dist/core/components/settings/src/SettingsSidebar.d.ts.map +1 -1
  67. package/dist/core/components/settings/src/SettingsSidebar.js +3 -3
  68. package/dist/core/components/settings/src/SettingsSidebar.js.map +1 -1
  69. package/dist/core/components/settings/src/UsersSettingsPanel.js +1 -1
  70. package/dist/core/components/settings/src/UsersSettingsPanel.js.map +1 -1
  71. package/dist/core/components/support/BugReportDialog.d.ts.map +1 -1
  72. package/dist/core/components/support/BugReportDialog.js +8 -8
  73. package/dist/core/components/support/BugReportDialog.js.map +1 -1
  74. package/dist/core/components/support/FeatureRequestDialog.d.ts.map +1 -1
  75. package/dist/core/components/support/FeatureRequestDialog.js +6 -6
  76. package/dist/core/components/support/FeatureRequestDialog.js.map +1 -1
  77. package/dist/core/components/support/SupportMenu.d.ts.map +1 -1
  78. package/dist/core/components/support/SupportMenu.js +1 -1
  79. package/dist/core/components/support/SupportMenu.js.map +1 -1
  80. package/dist/core/components/ui/Accordion.d.ts +1 -1
  81. package/dist/core/components/ui/Accordion.d.ts.map +1 -1
  82. package/dist/core/components/ui/Accordion.js +1 -1
  83. package/dist/core/components/ui/Accordion.js.map +1 -1
  84. package/dist/core/components/ui/AddItemDialog.d.ts.map +1 -1
  85. package/dist/core/components/ui/AddItemDialog.js +1 -1
  86. package/dist/core/components/ui/AddItemDialog.js.map +1 -1
  87. package/dist/core/components/ui/AlertDialog.d.ts +1 -1
  88. package/dist/core/components/ui/AlertDialog.d.ts.map +1 -1
  89. package/dist/core/components/ui/AlertDialog.js +1 -1
  90. package/dist/core/components/ui/AlertDialog.js.map +1 -1
  91. package/dist/core/components/ui/AnimatedBackground.js +1 -1
  92. package/dist/core/components/ui/AnimatedBackground.js.map +1 -1
  93. package/dist/core/components/ui/AppSidebar.d.ts.map +1 -1
  94. package/dist/core/components/ui/AppSidebar.js +7 -7
  95. package/dist/core/components/ui/AppSidebar.js.map +1 -1
  96. package/dist/core/components/ui/Avatar.d.ts +1 -1
  97. package/dist/core/components/ui/Avatar.d.ts.map +1 -1
  98. package/dist/core/components/ui/Avatar.js +1 -1
  99. package/dist/core/components/ui/Avatar.js.map +1 -1
  100. package/dist/core/components/ui/Badge.d.ts.map +1 -1
  101. package/dist/core/components/ui/Badge.js.map +1 -1
  102. package/dist/core/components/ui/Breadcrumb.d.ts.map +1 -1
  103. package/dist/core/components/ui/Breadcrumb.js +2 -2
  104. package/dist/core/components/ui/Breadcrumb.js.map +1 -1
  105. package/dist/core/components/ui/Button.d.ts.map +1 -1
  106. package/dist/core/components/ui/Button.js +1 -1
  107. package/dist/core/components/ui/Button.js.map +1 -1
  108. package/dist/core/components/ui/Calendar.d.ts +2 -1
  109. package/dist/core/components/ui/Calendar.d.ts.map +1 -1
  110. package/dist/core/components/ui/Calendar.js +1 -1
  111. package/dist/core/components/ui/Calendar.js.map +1 -1
  112. package/dist/core/components/ui/Checkbox.d.ts +1 -1
  113. package/dist/core/components/ui/Checkbox.d.ts.map +1 -1
  114. package/dist/core/components/ui/Checkbox.js +1 -1
  115. package/dist/core/components/ui/Checkbox.js.map +1 -1
  116. package/dist/core/components/ui/CollapsibleSection.d.ts.map +1 -1
  117. package/dist/core/components/ui/CollapsibleSection.js +2 -2
  118. package/dist/core/components/ui/CollapsibleSection.js.map +1 -1
  119. package/dist/core/components/ui/Command.d.ts +8 -8
  120. package/dist/core/components/ui/Command.d.ts.map +1 -1
  121. package/dist/core/components/ui/Command.js +1 -1
  122. package/dist/core/components/ui/Command.js.map +1 -1
  123. package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts +13 -3
  124. package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
  125. package/dist/core/components/ui/Comments/CollapsibleCommentItem.js +144 -146
  126. package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
  127. package/dist/core/components/ui/Comments/Comment.d.ts +18 -1
  128. package/dist/core/components/ui/Comments/Comment.d.ts.map +1 -1
  129. package/dist/core/components/ui/Comments/Comment.js +97 -26
  130. package/dist/core/components/ui/Comments/Comment.js.map +1 -1
  131. package/dist/core/components/ui/Comments/CommentActionButtons.d.ts +34 -0
  132. package/dist/core/components/ui/Comments/CommentActionButtons.d.ts.map +1 -0
  133. package/dist/core/components/ui/Comments/CommentActionButtons.js +106 -0
  134. package/dist/core/components/ui/Comments/CommentActionButtons.js.map +1 -0
  135. package/dist/core/components/ui/Comments/CommentInput.d.ts.map +1 -1
  136. package/dist/core/components/ui/Comments/CommentInput.js +11 -8
  137. package/dist/core/components/ui/Comments/CommentInput.js.map +1 -1
  138. package/dist/core/components/ui/Comments/CommentsSection.d.ts.map +1 -1
  139. package/dist/core/components/ui/Comments/CommentsSection.js +89 -45
  140. package/dist/core/components/ui/Comments/CommentsSection.js.map +1 -1
  141. package/dist/core/components/ui/Comments/commentUtils.d.ts +1 -1
  142. package/dist/core/components/ui/Comments/commentUtils.d.ts.map +1 -1
  143. package/dist/core/components/ui/Comments/commentUtils.js +2 -1
  144. package/dist/core/components/ui/Comments/commentUtils.js.map +1 -1
  145. package/dist/core/components/ui/Countdown.d.ts.map +1 -1
  146. package/dist/core/components/ui/Countdown.js +1 -1
  147. package/dist/core/components/ui/Countdown.js.map +1 -1
  148. package/dist/core/components/ui/DataTable.d.ts +1 -1
  149. package/dist/core/components/ui/DataTable.d.ts.map +1 -1
  150. package/dist/core/components/ui/DataTable.js +17 -17
  151. package/dist/core/components/ui/DataTable.js.map +1 -1
  152. package/dist/core/components/ui/DatePicker.d.ts.map +1 -1
  153. package/dist/core/components/ui/DatePicker.js +2 -2
  154. package/dist/core/components/ui/DatePicker.js.map +1 -1
  155. package/dist/core/components/ui/DescriptionList.d.ts.map +1 -1
  156. package/dist/core/components/ui/DescriptionList.js +2 -2
  157. package/dist/core/components/ui/DescriptionList.js.map +1 -1
  158. package/dist/core/components/ui/Dialog.d.ts +1 -1
  159. package/dist/core/components/ui/Dialog.d.ts.map +1 -1
  160. package/dist/core/components/ui/Dialog.js +1 -1
  161. package/dist/core/components/ui/Dialog.js.map +1 -1
  162. package/dist/core/components/ui/DropdownMenu.d.ts +1 -1
  163. package/dist/core/components/ui/DropdownMenu.d.ts.map +1 -1
  164. package/dist/core/components/ui/DropdownMenu.js +1 -1
  165. package/dist/core/components/ui/DropdownMenu.js.map +1 -1
  166. package/dist/core/components/ui/ExportData.d.ts +2 -2
  167. package/dist/core/components/ui/ExportData.d.ts.map +1 -1
  168. package/dist/core/components/ui/ExportData.js +5 -5
  169. package/dist/core/components/ui/ExportData.js.map +1 -1
  170. package/dist/core/components/ui/FilesManager/src/FileItemComponent.d.ts.map +1 -1
  171. package/dist/core/components/ui/FilesManager/src/FileItemComponent.js +3 -3
  172. package/dist/core/components/ui/FilesManager/src/FileItemComponent.js.map +1 -1
  173. package/dist/core/components/ui/FilesManager/src/FileMarker.d.ts.map +1 -1
  174. package/dist/core/components/ui/FilesManager/src/FileMarker.js +2 -2
  175. package/dist/core/components/ui/FilesManager/src/FileMarker.js.map +1 -1
  176. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.d.ts.map +1 -1
  177. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js +1 -1
  178. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js.map +1 -1
  179. package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.d.ts.map +1 -1
  180. package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.js.map +1 -1
  181. package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts +1 -1
  182. package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts.map +1 -1
  183. package/dist/core/components/ui/FilesManager/src/downloadUtils.js.map +1 -1
  184. package/dist/core/components/ui/FilesManager/src/useCommonFileUpload.js.map +1 -1
  185. package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts +2 -2
  186. package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts.map +1 -1
  187. package/dist/core/components/ui/FilesManager/src/useFileActions.js +2 -2
  188. package/dist/core/components/ui/FilesManager/src/useFileActions.js.map +1 -1
  189. package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js +1 -1
  190. package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js.map +1 -1
  191. package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js +3 -3
  192. package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js.map +1 -1
  193. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.d.ts.map +1 -1
  194. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js +0 -1
  195. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js.map +1 -1
  196. package/dist/core/components/ui/GenericTool.d.ts +1 -1
  197. package/dist/core/components/ui/GenericTool.d.ts.map +1 -1
  198. package/dist/core/components/ui/GenericTool.js +2 -2
  199. package/dist/core/components/ui/GenericTool.js.map +1 -1
  200. package/dist/core/components/ui/Icons/FloorPlanIcon.js +1 -1
  201. package/dist/core/components/ui/Icons/FloorPlanIcon.js.map +1 -1
  202. package/dist/core/components/ui/InfoSidebar/Container.d.ts.map +1 -1
  203. package/dist/core/components/ui/InfoSidebar/Container.js +16 -12
  204. package/dist/core/components/ui/InfoSidebar/Container.js.map +1 -1
  205. package/dist/core/components/ui/InfoSidebar/Header.d.ts.map +1 -1
  206. package/dist/core/components/ui/InfoSidebar/Header.js +4 -4
  207. package/dist/core/components/ui/InfoSidebar/Header.js.map +1 -1
  208. package/dist/core/components/ui/InfoSidebar/index.d.ts +1 -1
  209. package/dist/core/components/ui/InfoSidebar/index.d.ts.map +1 -1
  210. package/dist/core/components/ui/InfoSidebar/index.js +1 -1
  211. package/dist/core/components/ui/InfoSidebar/index.js.map +1 -1
  212. package/dist/core/components/ui/Label.d.ts +1 -1
  213. package/dist/core/components/ui/Label.d.ts.map +1 -1
  214. package/dist/core/components/ui/Label.js +1 -1
  215. package/dist/core/components/ui/Label.js.map +1 -1
  216. package/dist/core/components/ui/LanguageToggle.d.ts +1 -1
  217. package/dist/core/components/ui/LanguageToggle.d.ts.map +1 -1
  218. package/dist/core/components/ui/LanguageToggle.js +1 -1
  219. package/dist/core/components/ui/LanguageToggle.js.map +1 -1
  220. package/dist/core/components/ui/Menubar.d.ts +1 -1
  221. package/dist/core/components/ui/Menubar.d.ts.map +1 -1
  222. package/dist/core/components/ui/Menubar.js +1 -1
  223. package/dist/core/components/ui/Menubar.js.map +1 -1
  224. package/dist/core/components/ui/NavUser.js +7 -7
  225. package/dist/core/components/ui/NavUser.js.map +1 -1
  226. package/dist/core/components/ui/Navbar.d.ts.map +1 -1
  227. package/dist/core/components/ui/Navbar.js +2 -2
  228. package/dist/core/components/ui/Navbar.js.map +1 -1
  229. package/dist/core/components/ui/Popover.d.ts +1 -1
  230. package/dist/core/components/ui/Popover.d.ts.map +1 -1
  231. package/dist/core/components/ui/Popover.js +1 -1
  232. package/dist/core/components/ui/Popover.js.map +1 -1
  233. package/dist/core/components/ui/Progress.d.ts +1 -1
  234. package/dist/core/components/ui/Progress.d.ts.map +1 -1
  235. package/dist/core/components/ui/Progress.js +1 -1
  236. package/dist/core/components/ui/Progress.js.map +1 -1
  237. package/dist/core/components/ui/ScrollArea.d.ts +1 -1
  238. package/dist/core/components/ui/ScrollArea.d.ts.map +1 -1
  239. package/dist/core/components/ui/ScrollArea.js +1 -1
  240. package/dist/core/components/ui/ScrollArea.js.map +1 -1
  241. package/dist/core/components/ui/SearchInput.d.ts.map +1 -1
  242. package/dist/core/components/ui/SearchInput.js +2 -2
  243. package/dist/core/components/ui/SearchInput.js.map +1 -1
  244. package/dist/core/components/ui/Select.d.ts +1 -1
  245. package/dist/core/components/ui/Select.d.ts.map +1 -1
  246. package/dist/core/components/ui/Select.js +3 -3
  247. package/dist/core/components/ui/Select.js.map +1 -1
  248. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts +1 -1
  249. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
  250. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js +10 -10
  251. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
  252. package/dist/core/components/ui/Sensors/Sensor.d.ts +2 -1
  253. package/dist/core/components/ui/Sensors/Sensor.d.ts.map +1 -1
  254. package/dist/core/components/ui/Sensors/Sensor.js +3 -3
  255. package/dist/core/components/ui/Sensors/Sensor.js.map +1 -1
  256. package/dist/core/components/ui/Sensors/SensorChart.d.ts +1 -1
  257. package/dist/core/components/ui/Sensors/SensorChart.d.ts.map +1 -1
  258. package/dist/core/components/ui/Sensors/SensorChart.js +1 -1
  259. package/dist/core/components/ui/Sensors/SensorChart.js.map +1 -1
  260. package/dist/core/components/ui/Sensors/SensorInput.d.ts.map +1 -1
  261. package/dist/core/components/ui/Sensors/SensorInput.js +9 -10
  262. package/dist/core/components/ui/Sensors/SensorInput.js.map +1 -1
  263. package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts.map +1 -1
  264. package/dist/core/components/ui/Sensors/SensorTagsSection.js +3 -3
  265. package/dist/core/components/ui/Sensors/SensorTagsSection.js.map +1 -1
  266. package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
  267. package/dist/core/components/ui/Sensors/SensorsSection.js +7 -9
  268. package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
  269. package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.d.ts.map +1 -1
  270. package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.js.map +1 -1
  271. package/dist/core/components/ui/Sensors/sensorUtils.d.ts +1 -1
  272. package/dist/core/components/ui/Sensors/sensorUtils.d.ts.map +1 -1
  273. package/dist/core/components/ui/Sensors/sensorUtils.js.map +1 -1
  274. package/dist/core/components/ui/Separator.d.ts +1 -1
  275. package/dist/core/components/ui/Separator.d.ts.map +1 -1
  276. package/dist/core/components/ui/Separator.js +1 -1
  277. package/dist/core/components/ui/Separator.js.map +1 -1
  278. package/dist/core/components/ui/SettingsButton.d.ts.map +1 -1
  279. package/dist/core/components/ui/SettingsButton.js +4 -4
  280. package/dist/core/components/ui/SettingsButton.js.map +1 -1
  281. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts +1 -1
  282. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts.map +1 -1
  283. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js +14 -14
  284. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js.map +1 -1
  285. package/dist/core/components/ui/Sheet.d.ts +1 -1
  286. package/dist/core/components/ui/Sheet.d.ts.map +1 -1
  287. package/dist/core/components/ui/Sheet.js +1 -1
  288. package/dist/core/components/ui/Sheet.js.map +1 -1
  289. package/dist/core/components/ui/Sidebar.d.ts +1 -1
  290. package/dist/core/components/ui/Sidebar.d.ts.map +1 -1
  291. package/dist/core/components/ui/Sidebar.js +33 -10
  292. package/dist/core/components/ui/Sidebar.js.map +1 -1
  293. package/dist/core/components/ui/Slider.d.ts +1 -1
  294. package/dist/core/components/ui/Slider.d.ts.map +1 -1
  295. package/dist/core/components/ui/Slider.js +1 -1
  296. package/dist/core/components/ui/Slider.js.map +1 -1
  297. package/dist/core/components/ui/Switch.d.ts +1 -1
  298. package/dist/core/components/ui/Switch.d.ts.map +1 -1
  299. package/dist/core/components/ui/Switch.js +1 -1
  300. package/dist/core/components/ui/Switch.js.map +1 -1
  301. package/dist/core/components/ui/Tabs.d.ts +1 -1
  302. package/dist/core/components/ui/Tabs.d.ts.map +1 -1
  303. package/dist/core/components/ui/Tabs.js +1 -1
  304. package/dist/core/components/ui/Tabs.js.map +1 -1
  305. package/dist/core/components/ui/Toggle.d.ts +1 -1
  306. package/dist/core/components/ui/Toggle.d.ts.map +1 -1
  307. package/dist/core/components/ui/Toggle.js +1 -1
  308. package/dist/core/components/ui/Toggle.js.map +1 -1
  309. package/dist/core/components/ui/ToggleGroup.d.ts +1 -1
  310. package/dist/core/components/ui/ToggleGroup.d.ts.map +1 -1
  311. package/dist/core/components/ui/ToggleGroup.js +1 -1
  312. package/dist/core/components/ui/ToggleGroup.js.map +1 -1
  313. package/dist/core/components/ui/ToolbarButton.d.ts +1 -1
  314. package/dist/core/components/ui/ToolbarButton.d.ts.map +1 -1
  315. package/dist/core/components/ui/ToolbarButton.js +1 -2
  316. package/dist/core/components/ui/ToolbarButton.js.map +1 -1
  317. package/dist/core/components/ui/Tooltip.d.ts +1 -1
  318. package/dist/core/components/ui/Tooltip.d.ts.map +1 -1
  319. package/dist/core/components/ui/Tooltip.js +1 -1
  320. package/dist/core/components/ui/Tooltip.js.map +1 -1
  321. package/dist/core/components/ui/UserAvatar.d.ts.map +1 -1
  322. package/dist/core/components/ui/UserAvatar.js +1 -1
  323. package/dist/core/components/ui/UserAvatar.js.map +1 -1
  324. package/dist/core/components/ui/downloadUtils.d.ts.map +1 -1
  325. package/dist/core/components/ui/downloadUtils.js.map +1 -1
  326. package/dist/core/components/ui/stats.d.ts.map +1 -1
  327. package/dist/core/components/ui/stats.js.map +1 -1
  328. package/dist/core/components/ui/uploadFile.js +1 -1
  329. package/dist/core/components/ui/uploadFile.js.map +1 -1
  330. package/dist/core/components/viewers/Data/DataMenu.d.ts +1 -1
  331. package/dist/core/components/viewers/Data/DataMenu.d.ts.map +1 -1
  332. package/dist/core/components/viewers/Data/DataMenu.js +11 -11
  333. package/dist/core/components/viewers/Data/DataMenu.js.map +1 -1
  334. package/dist/core/components/viewers/Data/FilterButtons.d.ts +1 -1
  335. package/dist/core/components/viewers/Data/FilterButtons.d.ts.map +1 -1
  336. package/dist/core/components/viewers/Data/FilterButtons.js +7 -7
  337. package/dist/core/components/viewers/Data/FilterButtons.js.map +1 -1
  338. package/dist/core/components/viewers/Data/HeaderButtons.d.ts +1 -1
  339. package/dist/core/components/viewers/Data/HeaderButtons.d.ts.map +1 -1
  340. package/dist/core/components/viewers/Data/HeaderButtons.js +9 -9
  341. package/dist/core/components/viewers/Data/HeaderButtons.js.map +1 -1
  342. package/dist/core/components/viewers/Data/MoreOptions.d.ts +1 -1
  343. package/dist/core/components/viewers/Data/MoreOptions.d.ts.map +1 -1
  344. package/dist/core/components/viewers/Data/MoreOptions.js +16 -16
  345. package/dist/core/components/viewers/Data/MoreOptions.js.map +1 -1
  346. package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts +1 -1
  347. package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts.map +1 -1
  348. package/dist/core/components/viewers/Data/advancedFilter/Filters.js +2 -2
  349. package/dist/core/components/viewers/Data/advancedFilter/Filters.js.map +1 -1
  350. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts +1 -1
  351. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts.map +1 -1
  352. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js +6 -8
  353. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js.map +1 -1
  354. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.d.ts.map +1 -1
  355. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js +3 -3
  356. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js.map +1 -1
  357. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.d.ts.map +1 -1
  358. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js +10 -10
  359. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js.map +1 -1
  360. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.d.ts.map +1 -1
  361. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js +11 -11
  362. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js.map +1 -1
  363. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.d.ts.map +1 -1
  364. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js +10 -10
  365. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js.map +1 -1
  366. package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.d.ts.map +1 -1
  367. package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.js.map +1 -1
  368. package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.d.ts.map +1 -1
  369. package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.js.map +1 -1
  370. package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts +1 -1
  371. package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts.map +1 -1
  372. package/dist/core/components/viewers/Data/details/AttachedFiles.js +3 -3
  373. package/dist/core/components/viewers/Data/details/AttachedFiles.js.map +1 -1
  374. package/dist/core/components/viewers/Data/details/DetailActions.d.ts +1 -1
  375. package/dist/core/components/viewers/Data/details/DetailActions.d.ts.map +1 -1
  376. package/dist/core/components/viewers/Data/details/DetailActions.js +2 -2
  377. package/dist/core/components/viewers/Data/details/DetailActions.js.map +1 -1
  378. package/dist/core/components/viewers/Data/details/DetailHeader.d.ts.map +1 -1
  379. package/dist/core/components/viewers/Data/details/DetailHeader.js.map +1 -1
  380. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.d.ts.map +1 -1
  381. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js +4 -14
  382. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js.map +1 -1
  383. package/dist/core/components/viewers/Data/details/FieldValue.d.ts.map +1 -1
  384. package/dist/core/components/viewers/Data/details/FieldValue.js +2 -2
  385. package/dist/core/components/viewers/Data/details/FieldValue.js.map +1 -1
  386. package/dist/core/components/viewers/Data/details/FileUpload.d.ts.map +1 -1
  387. package/dist/core/components/viewers/Data/details/FileUpload.js +2 -2
  388. package/dist/core/components/viewers/Data/details/FileUpload.js.map +1 -1
  389. package/dist/core/components/viewers/Data/details/FilterFiles.d.ts.map +1 -1
  390. package/dist/core/components/viewers/Data/details/FilterFiles.js +2 -2
  391. package/dist/core/components/viewers/Data/details/FilterFiles.js.map +1 -1
  392. package/dist/core/components/viewers/Data/details/TabSidebar.d.ts.map +1 -1
  393. package/dist/core/components/viewers/Data/details/TabSidebar.js +3 -3
  394. package/dist/core/components/viewers/Data/details/TabSidebar.js.map +1 -1
  395. package/dist/core/components/viewers/Data/files/DatatableFileAdder.d.ts.map +1 -1
  396. package/dist/core/components/viewers/Data/files/DatatableFileAdder.js +3 -4
  397. package/dist/core/components/viewers/Data/files/DatatableFileAdder.js.map +1 -1
  398. package/dist/core/components/viewers/Data/files/FileDetails.d.ts.map +1 -1
  399. package/dist/core/components/viewers/Data/files/FileDetails.js +8 -8
  400. package/dist/core/components/viewers/Data/files/FileDetails.js.map +1 -1
  401. package/dist/core/components/viewers/Data/files/FileMoreOptions.d.ts.map +1 -1
  402. package/dist/core/components/viewers/Data/files/FileMoreOptions.js +8 -8
  403. package/dist/core/components/viewers/Data/files/FileMoreOptions.js.map +1 -1
  404. package/dist/core/components/viewers/Data/files/FilePreview.d.ts +1 -1
  405. package/dist/core/components/viewers/Data/files/FilePreview.d.ts.map +1 -1
  406. package/dist/core/components/viewers/Data/files/FilePreview.js +1 -1
  407. package/dist/core/components/viewers/Data/files/FilePreview.js.map +1 -1
  408. package/dist/core/components/viewers/Data/files/utils/fuzzySearch.d.ts.map +1 -1
  409. package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js +0 -1
  410. package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js.map +1 -1
  411. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.d.ts.map +1 -1
  412. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js +3 -3
  413. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js.map +1 -1
  414. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.d.ts.map +1 -1
  415. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js +2 -2
  416. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js.map +1 -1
  417. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.d.ts.map +1 -1
  418. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js +6 -6
  419. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js.map +1 -1
  420. package/dist/core/components/viewers/Data/siteDetails/AddSite.d.ts.map +1 -1
  421. package/dist/core/components/viewers/Data/siteDetails/AddSite.js +5 -5
  422. package/dist/core/components/viewers/Data/siteDetails/AddSite.js.map +1 -1
  423. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.d.ts.map +1 -1
  424. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js +10 -10
  425. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js.map +1 -1
  426. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.d.ts.map +1 -1
  427. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js +9 -9
  428. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js.map +1 -1
  429. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.d.ts.map +1 -1
  430. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js +11 -11
  431. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js.map +1 -1
  432. package/dist/core/components/viewers/Data/userDetails/AddUser.d.ts.map +1 -1
  433. package/dist/core/components/viewers/Data/userDetails/AddUser.js +3 -3
  434. package/dist/core/components/viewers/Data/userDetails/AddUser.js.map +1 -1
  435. package/dist/core/components/viewers/Data/userDetails/UserDetails.d.ts.map +1 -1
  436. package/dist/core/components/viewers/Data/userDetails/UserDetails.js +12 -12
  437. package/dist/core/components/viewers/Data/userDetails/UserDetails.js.map +1 -1
  438. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.d.ts.map +1 -1
  439. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js +12 -13
  440. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js.map +1 -1
  441. package/dist/core/components/viewers/Data/utils/Columns.d.ts +2 -2
  442. package/dist/core/components/viewers/Data/utils/Columns.d.ts.map +1 -1
  443. package/dist/core/components/viewers/Data/utils/Columns.js +7 -7
  444. package/dist/core/components/viewers/Data/utils/Columns.js.map +1 -1
  445. package/dist/core/components/viewers/Data/utils/Headers.d.ts.map +1 -1
  446. package/dist/core/components/viewers/Data/utils/Headers.js.map +1 -1
  447. package/dist/core/components/viewers/Data/utils/csvUtils.js.map +1 -1
  448. package/dist/core/components/viewers/Data/utils/filterHelper.d.ts.map +1 -1
  449. package/dist/core/components/viewers/Data/utils/filterHelper.js +0 -2
  450. package/dist/core/components/viewers/Data/utils/filterHelper.js.map +1 -1
  451. package/dist/core/components/viewers/Data/utils/positionParser.js.map +1 -1
  452. package/dist/core/components/viewers/Data/utils/useViewerData.d.ts +2 -2
  453. package/dist/core/components/viewers/Data/utils/useViewerData.d.ts.map +1 -1
  454. package/dist/core/components/viewers/Data/utils/useViewerData.js.map +1 -1
  455. package/dist/core/components/viewers/Viewer.d.ts +1 -1
  456. package/dist/core/components/viewers/Viewer.d.ts.map +1 -1
  457. package/dist/core/components/viewers/Viewer.js +6 -6
  458. package/dist/core/components/viewers/Viewer.js.map +1 -1
  459. package/dist/core/components/viewers/bim/BimToolbar.d.ts.map +1 -1
  460. package/dist/core/components/viewers/bim/BimToolbar.js +1 -1
  461. package/dist/core/components/viewers/bim/BimToolbar.js.map +1 -1
  462. package/dist/core/components/viewers/bim/BimViewer.d.ts.map +1 -1
  463. package/dist/core/components/viewers/bim/BimViewer.js +7 -7
  464. package/dist/core/components/viewers/bim/BimViewer.js.map +1 -1
  465. package/dist/core/components/viewers/bim/src/BCFTopicsManager.d.ts.map +1 -1
  466. package/dist/core/components/viewers/bim/src/BCFTopicsManager.js.map +1 -1
  467. package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts +2 -2
  468. package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts.map +1 -1
  469. package/dist/core/components/viewers/bim/src/BIMManager/index.js.map +1 -1
  470. package/dist/core/components/viewers/bim/src/BimLoadingState/index.d.ts.map +1 -1
  471. package/dist/core/components/viewers/bim/src/BimLoadingState/index.js +9 -9
  472. package/dist/core/components/viewers/bim/src/BimLoadingState/index.js.map +1 -1
  473. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.d.ts.map +1 -1
  474. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js +1 -1
  475. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js.map +1 -1
  476. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts +1 -1
  477. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts.map +1 -1
  478. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js +1 -1
  479. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js.map +1 -1
  480. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts +1 -1
  481. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts.map +1 -1
  482. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js +5 -5
  483. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js.map +1 -1
  484. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts +1 -1
  485. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts.map +1 -1
  486. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.js +9 -9
  487. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.js.map +1 -1
  488. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.d.ts.map +1 -1
  489. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js +6 -9
  490. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js.map +1 -1
  491. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.d.ts.map +1 -1
  492. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js +4 -4
  493. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js.map +1 -1
  494. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  495. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  496. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js +11 -17
  497. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  498. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
  499. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js +10 -18
  500. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
  501. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.d.ts.map +1 -1
  502. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js +1 -1
  503. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js.map +1 -1
  504. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.d.ts.map +1 -1
  505. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js +2 -2
  506. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js.map +1 -1
  507. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.d.ts.map +1 -1
  508. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js +1 -1
  509. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js.map +1 -1
  510. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.d.ts.map +1 -1
  511. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js +6 -6
  512. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js.map +1 -1
  513. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts +1 -1
  514. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts.map +1 -1
  515. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.js.map +1 -1
  516. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.d.ts.map +1 -1
  517. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js +2 -2
  518. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js.map +1 -1
  519. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
  520. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js +5 -5
  521. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
  522. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.d.ts.map +1 -1
  523. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js +3 -3
  524. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js.map +1 -1
  525. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.d.ts.map +1 -1
  526. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js +3 -3
  527. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js.map +1 -1
  528. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.d.ts.map +1 -1
  529. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js +4 -4
  530. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js.map +1 -1
  531. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts +1 -1
  532. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts.map +1 -1
  533. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js +5 -4
  534. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js.map +1 -1
  535. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.d.ts.map +1 -1
  536. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js +5 -5
  537. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js.map +1 -1
  538. package/dist/core/components/viewers/bim/src/CameraProjection.d.ts.map +1 -1
  539. package/dist/core/components/viewers/bim/src/CameraProjection.js.map +1 -1
  540. package/dist/core/components/viewers/bim/src/ClippingPlane.d.ts.map +1 -1
  541. package/dist/core/components/viewers/bim/src/ClippingPlane.js +1 -2
  542. package/dist/core/components/viewers/bim/src/ClippingPlane.js.map +1 -1
  543. package/dist/core/components/viewers/bim/src/Cursor.d.ts +1 -1
  544. package/dist/core/components/viewers/bim/src/Cursor.d.ts.map +1 -1
  545. package/dist/core/components/viewers/bim/src/Cursor.js.map +1 -1
  546. package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts +1 -1
  547. package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts.map +1 -1
  548. package/dist/core/components/viewers/bim/src/DXFLoader/index.js +1 -1
  549. package/dist/core/components/viewers/bim/src/DXFLoader/index.js.map +1 -1
  550. package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts +1 -1
  551. package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts.map +1 -1
  552. package/dist/core/components/viewers/bim/src/ElevationsTool/index.js +1 -1
  553. package/dist/core/components/viewers/bim/src/ElevationsTool/index.js.map +1 -1
  554. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts +1 -1
  555. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts.map +1 -1
  556. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.js.map +1 -1
  557. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts +4 -4
  558. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts.map +1 -1
  559. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.js.map +1 -1
  560. package/dist/core/components/viewers/bim/src/FitCamera.d.ts.map +1 -1
  561. package/dist/core/components/viewers/bim/src/FitCamera.js +1 -1
  562. package/dist/core/components/viewers/bim/src/FitCamera.js.map +1 -1
  563. package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts +3 -3
  564. package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts.map +1 -1
  565. package/dist/core/components/viewers/bim/src/FloorplanTool/index.js +1 -1
  566. package/dist/core/components/viewers/bim/src/FloorplanTool/index.js.map +1 -1
  567. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts +3 -3
  568. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts.map +1 -1
  569. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.js.map +1 -1
  570. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts +1 -1
  571. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts.map +1 -1
  572. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.js.map +1 -1
  573. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts +2 -2
  574. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts.map +1 -1
  575. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.js.map +1 -1
  576. package/dist/core/components/viewers/bim/src/GhostMode.d.ts +1 -1
  577. package/dist/core/components/viewers/bim/src/GhostMode.d.ts.map +1 -1
  578. package/dist/core/components/viewers/bim/src/GhostMode.js.map +1 -1
  579. package/dist/core/components/viewers/bim/src/Highlighter/index.d.ts.map +1 -1
  580. package/dist/core/components/viewers/bim/src/Highlighter/index.js +1 -1
  581. package/dist/core/components/viewers/bim/src/Highlighter/index.js.map +1 -1
  582. package/dist/core/components/viewers/bim/src/IDSManager/index.d.ts.map +1 -1
  583. package/dist/core/components/viewers/bim/src/IDSManager/index.js +3 -3
  584. package/dist/core/components/viewers/bim/src/IDSManager/index.js.map +1 -1
  585. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.d.ts.map +1 -1
  586. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js +2 -2
  587. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js.map +1 -1
  588. package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.d.ts.map +1 -1
  589. package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.js.map +1 -1
  590. package/dist/core/components/viewers/bim/src/LoadModels.d.ts +1 -1
  591. package/dist/core/components/viewers/bim/src/LoadModels.d.ts.map +1 -1
  592. package/dist/core/components/viewers/bim/src/LoadModels.js +1 -1
  593. package/dist/core/components/viewers/bim/src/LoadModels.js.map +1 -1
  594. package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts +1 -1
  595. package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts.map +1 -1
  596. package/dist/core/components/viewers/bim/src/ModelManager/index.js +4 -4
  597. package/dist/core/components/viewers/bim/src/ModelManager/index.js.map +1 -1
  598. package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts +1 -1
  599. package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts.map +1 -1
  600. package/dist/core/components/viewers/bim/src/SimpleBimViewer.js +8 -8
  601. package/dist/core/components/viewers/bim/src/SimpleBimViewer.js.map +1 -1
  602. package/dist/core/components/viewers/bim/src/SpatialStructure.js.map +1 -1
  603. package/dist/core/components/viewers/bim/src/ViewportGizmo.d.ts.map +1 -1
  604. package/dist/core/components/viewers/bim/src/ViewportGizmo.js +2 -2
  605. package/dist/core/components/viewers/bim/src/ViewportGizmo.js.map +1 -1
  606. package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts +1 -1
  607. package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts.map +1 -1
  608. package/dist/core/components/viewers/bim/src/lib/CameraController.js.map +1 -1
  609. package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts +1 -1
  610. package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts.map +1 -1
  611. package/dist/core/components/viewers/bim/src/lib/ChromeController.js.map +1 -1
  612. package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts +1 -1
  613. package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts.map +1 -1
  614. package/dist/core/components/viewers/bim/src/lib/ClipController.js.map +1 -1
  615. package/dist/core/components/viewers/bim/src/lib/GridController.d.ts.map +1 -1
  616. package/dist/core/components/viewers/bim/src/lib/GridController.js.map +1 -1
  617. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.d.ts.map +1 -1
  618. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js +1 -1
  619. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js.map +1 -1
  620. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts +2 -2
  621. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts.map +1 -1
  622. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js +1 -1
  623. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js.map +1 -1
  624. package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts +1 -1
  625. package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts.map +1 -1
  626. package/dist/core/components/viewers/bim/src/lib/drawingProjection.js.map +1 -1
  627. package/dist/core/components/viewers/bim/src/lib/useBuildingName.d.ts.map +1 -1
  628. package/dist/core/components/viewers/bim/src/lib/useBuildingName.js.map +1 -1
  629. package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js +1 -1
  630. package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js.map +1 -1
  631. package/dist/core/components/viewers/bim/src/propertiesMenu/index.d.ts.map +1 -1
  632. package/dist/core/components/viewers/bim/src/propertiesMenu/index.js +4 -4
  633. package/dist/core/components/viewers/bim/src/propertiesMenu/index.js.map +1 -1
  634. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.d.ts.map +1 -1
  635. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js +1 -1
  636. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js.map +1 -1
  637. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.d.ts.map +1 -1
  638. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js +2 -2
  639. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js.map +1 -1
  640. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.d.ts.map +1 -1
  641. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.js.map +1 -1
  642. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts +1 -1
  643. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts.map +1 -1
  644. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js +2 -2
  645. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js.map +1 -1
  646. package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.d.ts.map +1 -1
  647. package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.js.map +1 -1
  648. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.d.ts.map +1 -1
  649. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js +9 -9
  650. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js.map +1 -1
  651. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts +1 -1
  652. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts.map +1 -1
  653. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js +2 -2
  654. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js.map +1 -1
  655. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.d.ts.map +1 -1
  656. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js +2 -2
  657. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js.map +1 -1
  658. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts +1 -1
  659. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts.map +1 -1
  660. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.js.map +1 -1
  661. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.d.ts.map +1 -1
  662. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js +3 -3
  663. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js.map +1 -1
  664. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts +16 -10
  665. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts.map +1 -1
  666. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js +26 -6
  667. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js.map +1 -1
  668. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts +23 -0
  669. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts.map +1 -0
  670. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js +108 -0
  671. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js.map +1 -0
  672. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts +2 -2
  673. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts.map +1 -1
  674. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.js.map +1 -1
  675. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts +5 -5
  676. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts.map +1 -1
  677. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.js.map +1 -1
  678. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.d.ts.map +1 -1
  679. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js +2 -2
  680. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js.map +1 -1
  681. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.d.ts.map +1 -1
  682. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js +1 -1
  683. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js.map +1 -1
  684. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.d.ts +44 -0
  685. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.d.ts.map +1 -0
  686. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js +77 -0
  687. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js.map +1 -0
  688. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts +24 -0
  689. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts.map +1 -0
  690. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js +27 -0
  691. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js.map +1 -0
  692. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts +1 -1
  693. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts.map +1 -1
  694. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js +3 -3
  695. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js.map +1 -1
  696. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.d.ts.map +1 -1
  697. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js +244 -63
  698. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js.map +1 -1
  699. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts +2 -2
  700. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts.map +1 -1
  701. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js +4 -4
  702. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js.map +1 -1
  703. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.d.ts.map +1 -1
  704. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js +6 -6
  705. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js.map +1 -1
  706. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.d.ts.map +1 -1
  707. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js +2 -2
  708. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js.map +1 -1
  709. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts +1 -1
  710. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts.map +1 -1
  711. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js +6 -10
  712. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js.map +1 -1
  713. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts +1 -1
  714. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts.map +1 -1
  715. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js +3 -4
  716. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js.map +1 -1
  717. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts +1 -1
  718. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts.map +1 -1
  719. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js +2 -2
  720. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js.map +1 -1
  721. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts +1 -1
  722. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts.map +1 -1
  723. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js +4 -4
  724. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js.map +1 -1
  725. package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts +1 -1
  726. package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts.map +1 -1
  727. package/dist/core/components/viewers/bim/src/tools/bimToolbar.js +4 -4
  728. package/dist/core/components/viewers/bim/src/tools/bimToolbar.js.map +1 -1
  729. package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts +1 -1
  730. package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts.map +1 -1
  731. package/dist/core/components/viewers/bim/src/tools/measureBimTool.js +6 -7
  732. package/dist/core/components/viewers/bim/src/tools/measureBimTool.js.map +1 -1
  733. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts +1 -1
  734. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts.map +1 -1
  735. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js +5 -5
  736. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js.map +1 -1
  737. package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts +1 -1
  738. package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts.map +1 -1
  739. package/dist/core/components/viewers/bim/src/tools/shareBimTool.js.map +1 -1
  740. package/dist/core/components/viewers/bim/utils/GizmoController.d.ts +1 -1
  741. package/dist/core/components/viewers/bim/utils/GizmoController.d.ts.map +1 -1
  742. package/dist/core/components/viewers/bim/utils/GizmoController.js.map +1 -1
  743. package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts +1 -1
  744. package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts.map +1 -1
  745. package/dist/core/components/viewers/bim/utils/setCameraLookAt.js.map +1 -1
  746. package/dist/core/components/viewers/map/MapViewer.d.ts +1 -1
  747. package/dist/core/components/viewers/map/MapViewer.d.ts.map +1 -1
  748. package/dist/core/components/viewers/map/MapViewer.js +7 -7
  749. package/dist/core/components/viewers/map/MapViewer.js.map +1 -1
  750. package/dist/core/components/viewers/map/datasets/AddPortalDialog.d.ts.map +1 -1
  751. package/dist/core/components/viewers/map/datasets/AddPortalDialog.js +4 -4
  752. package/dist/core/components/viewers/map/datasets/AddPortalDialog.js.map +1 -1
  753. package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts +1 -1
  754. package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts.map +1 -1
  755. package/dist/core/components/viewers/map/datasets/DatasetDetails.js +4 -4
  756. package/dist/core/components/viewers/map/datasets/DatasetDetails.js.map +1 -1
  757. package/dist/core/components/viewers/map/datasets/DatasetManager/index.d.ts.map +1 -1
  758. package/dist/core/components/viewers/map/datasets/DatasetManager/index.js +13 -13
  759. package/dist/core/components/viewers/map/datasets/DatasetManager/index.js.map +1 -1
  760. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.d.ts.map +1 -1
  761. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js +2 -2
  762. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js.map +1 -1
  763. package/dist/core/components/viewers/map/datasets/DatasetSkeleton.d.ts.map +1 -1
  764. package/dist/core/components/viewers/map/datasets/DatasetSkeleton.js.map +1 -1
  765. package/dist/core/components/viewers/map/datasets/Filters.d.ts.map +1 -1
  766. package/dist/core/components/viewers/map/datasets/Filters.js +2 -2
  767. package/dist/core/components/viewers/map/datasets/Filters.js.map +1 -1
  768. package/dist/core/components/viewers/map/datasets/NestedFilter.d.ts.map +1 -1
  769. package/dist/core/components/viewers/map/datasets/NestedFilter.js +1 -1
  770. package/dist/core/components/viewers/map/datasets/NestedFilter.js.map +1 -1
  771. package/dist/core/components/viewers/map/datasets/RowActions.d.ts.map +1 -1
  772. package/dist/core/components/viewers/map/datasets/RowActions.js +3 -3
  773. package/dist/core/components/viewers/map/datasets/RowActions.js.map +1 -1
  774. package/dist/core/components/viewers/map/datasets/data.d.ts +1 -1
  775. package/dist/core/components/viewers/map/datasets/data.d.ts.map +1 -1
  776. package/dist/core/components/viewers/map/datasets/data.js +2 -2
  777. package/dist/core/components/viewers/map/datasets/data.js.map +1 -1
  778. package/dist/core/components/viewers/map/datasets/index.d.ts +1 -1
  779. package/dist/core/components/viewers/map/datasets/index.d.ts.map +1 -1
  780. package/dist/core/components/viewers/map/datasets/index.js +11 -11
  781. package/dist/core/components/viewers/map/datasets/index.js.map +1 -1
  782. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts +1 -1
  783. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts.map +1 -1
  784. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js +13 -16
  785. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js.map +1 -1
  786. package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.d.ts.map +1 -1
  787. package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.js.map +1 -1
  788. package/dist/core/components/viewers/map/datasets/src/cache.js.map +1 -1
  789. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts +1 -1
  790. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts.map +1 -1
  791. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js +3 -6
  792. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js.map +1 -1
  793. package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts +1 -1
  794. package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts.map +1 -1
  795. package/dist/core/components/viewers/map/datasets/src/localDatasets.js +3 -6
  796. package/dist/core/components/viewers/map/datasets/src/localDatasets.js.map +1 -1
  797. package/dist/core/components/viewers/map/datasets/src/minioDatasets.d.ts.map +1 -1
  798. package/dist/core/components/viewers/map/datasets/src/minioDatasets.js.map +1 -1
  799. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts +1 -1
  800. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts.map +1 -1
  801. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js +1 -12
  802. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js.map +1 -1
  803. package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts +1 -1
  804. package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts.map +1 -1
  805. package/dist/core/components/viewers/map/datasets/src/publishedTiles.js.map +1 -1
  806. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.d.ts.map +1 -1
  807. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js +1 -1
  808. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js.map +1 -1
  809. package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts +1 -12
  810. package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts.map +1 -1
  811. package/dist/core/components/viewers/map/datasets/src/urlSources.js +1 -1
  812. package/dist/core/components/viewers/map/datasets/src/urlSources.js.map +1 -1
  813. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.d.ts.map +1 -1
  814. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js +1 -1
  815. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js.map +1 -1
  816. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts +1 -1
  817. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts.map +1 -1
  818. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.js.map +1 -1
  819. package/dist/core/components/viewers/map/datasets/utils.d.ts +1 -1
  820. package/dist/core/components/viewers/map/datasets/utils.d.ts.map +1 -1
  821. package/dist/core/components/viewers/map/datasets/utils.js.map +1 -1
  822. package/dist/core/components/viewers/map/legends/MapLegendHost.d.ts.map +1 -1
  823. package/dist/core/components/viewers/map/legends/MapLegendHost.js +3 -3
  824. package/dist/core/components/viewers/map/legends/MapLegendHost.js.map +1 -1
  825. package/dist/core/components/viewers/map/src/Geocoder.d.ts.map +1 -1
  826. package/dist/core/components/viewers/map/src/Geocoder.js +8 -8
  827. package/dist/core/components/viewers/map/src/Geocoder.js.map +1 -1
  828. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts +1 -1
  829. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts.map +1 -1
  830. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.js.map +1 -1
  831. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts +1 -1
  832. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts.map +1 -1
  833. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js +3 -3
  834. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js.map +1 -1
  835. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts +1 -1
  836. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts.map +1 -1
  837. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js +11 -11
  838. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js.map +1 -1
  839. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.d.ts.map +1 -1
  840. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js +23 -56
  841. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js.map +1 -1
  842. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.d.ts.map +1 -1
  843. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js +4 -5
  844. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js.map +1 -1
  845. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.d.ts.map +1 -1
  846. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js +2 -2
  847. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js.map +1 -1
  848. package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
  849. package/dist/core/components/viewers/map/src/MapLayers/index.js +5 -5
  850. package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
  851. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.d.ts.map +1 -1
  852. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js +5 -5
  853. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js.map +1 -1
  854. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.d.ts.map +1 -1
  855. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js +4 -4
  856. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js.map +1 -1
  857. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts +1 -1
  858. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts.map +1 -1
  859. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.js.map +1 -1
  860. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.d.ts.map +1 -1
  861. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js +182 -61
  862. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js.map +1 -1
  863. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.d.ts.map +1 -1
  864. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js +1 -1
  865. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js.map +1 -1
  866. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.d.ts.map +1 -1
  867. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js +3 -3
  868. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js.map +1 -1
  869. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts +1 -1
  870. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts.map +1 -1
  871. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js +1 -1
  872. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js.map +1 -1
  873. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.d.ts.map +1 -1
  874. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.js.map +1 -1
  875. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts +1 -1
  876. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts.map +1 -1
  877. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.js +3 -3
  878. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.js.map +1 -1
  879. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.d.ts.map +1 -1
  880. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js +4 -3
  881. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js.map +1 -1
  882. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileMarker.d.ts.map +1 -1
  883. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileMarker.js.map +1 -1
  884. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.d.ts.map +1 -1
  885. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js +6 -6
  886. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js.map +1 -1
  887. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts +1 -1
  888. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts.map +1 -1
  889. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.js.map +1 -1
  890. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts +1 -1
  891. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts.map +1 -1
  892. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.js.map +1 -1
  893. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.d.ts.map +1 -1
  894. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.js.map +1 -1
  895. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.d.ts.map +1 -1
  896. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js +3 -3
  897. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js.map +1 -1
  898. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.d.ts.map +1 -1
  899. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js +3 -3
  900. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js.map +1 -1
  901. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.d.ts.map +1 -1
  902. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js +11 -14
  903. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js.map +1 -1
  904. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.d.ts.map +1 -1
  905. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js +2 -2
  906. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js.map +1 -1
  907. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.d.ts.map +1 -1
  908. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js +4 -4
  909. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js.map +1 -1
  910. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts +1 -1
  911. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts.map +1 -1
  912. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.js.map +1 -1
  913. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.d.ts.map +1 -1
  914. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.js.map +1 -1
  915. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.d.ts.map +1 -1
  916. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.js.map +1 -1
  917. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts +1 -1
  918. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts.map +1 -1
  919. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js +5 -4
  920. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js.map +1 -1
  921. package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts +1 -1
  922. package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts.map +1 -1
  923. package/dist/core/components/viewers/map/src/MapSidebar/index.js +4 -4
  924. package/dist/core/components/viewers/map/src/MapSidebar/index.js.map +1 -1
  925. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts +1 -1
  926. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts.map +1 -1
  927. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.js.map +1 -1
  928. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.d.ts.map +1 -1
  929. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js +2 -2
  930. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js.map +1 -1
  931. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  932. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  933. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js +5 -6
  934. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  935. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
  936. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js +6 -10
  937. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
  938. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts +1 -1
  939. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts.map +1 -1
  940. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js +4 -4
  941. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js.map +1 -1
  942. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.d.ts.map +1 -1
  943. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js +4 -4
  944. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js.map +1 -1
  945. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.d.ts.map +1 -1
  946. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js +2 -2
  947. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js.map +1 -1
  948. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts +1 -1
  949. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts.map +1 -1
  950. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.js.map +1 -1
  951. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.d.ts.map +1 -1
  952. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.js.map +1 -1
  953. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.d.ts.map +1 -1
  954. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js +3 -3
  955. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js.map +1 -1
  956. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.d.ts.map +1 -1
  957. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js +3 -3
  958. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js.map +1 -1
  959. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.d.ts.map +1 -1
  960. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js +3 -3
  961. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js.map +1 -1
  962. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.d.ts.map +1 -1
  963. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js +3 -3
  964. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js.map +1 -1
  965. package/dist/core/components/viewers/map/src/SimpleMap.d.ts.map +1 -1
  966. package/dist/core/components/viewers/map/src/SimpleMap.js +1 -1
  967. package/dist/core/components/viewers/map/src/SimpleMap.js.map +1 -1
  968. package/dist/core/components/viewers/map/src/compare/AddItem.d.ts +1 -1
  969. package/dist/core/components/viewers/map/src/compare/AddItem.d.ts.map +1 -1
  970. package/dist/core/components/viewers/map/src/compare/AddItem.js +6 -6
  971. package/dist/core/components/viewers/map/src/compare/AddItem.js.map +1 -1
  972. package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts +2 -2
  973. package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts.map +1 -1
  974. package/dist/core/components/viewers/map/src/compare/CompareDialog.js +5 -5
  975. package/dist/core/components/viewers/map/src/compare/CompareDialog.js.map +1 -1
  976. package/dist/core/components/viewers/map/src/compare/index.d.ts +1 -1
  977. package/dist/core/components/viewers/map/src/compare/index.d.ts.map +1 -1
  978. package/dist/core/components/viewers/map/src/compare/index.js +6 -6
  979. package/dist/core/components/viewers/map/src/compare/index.js.map +1 -1
  980. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.d.ts.map +1 -1
  981. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js +3 -3
  982. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js.map +1 -1
  983. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.d.ts.map +1 -1
  984. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js +5 -5
  985. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js.map +1 -1
  986. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.d.ts.map +1 -1
  987. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js +1 -3
  988. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js.map +1 -1
  989. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.d.ts.map +1 -1
  990. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js +3 -3
  991. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js.map +1 -1
  992. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.d.ts.map +1 -1
  993. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js +7 -7
  994. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js.map +1 -1
  995. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.d.ts.map +1 -1
  996. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js +1 -1
  997. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js.map +1 -1
  998. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts +2 -2
  999. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts.map +1 -1
  1000. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js +8 -8
  1001. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js.map +1 -1
  1002. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts +2 -2
  1003. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts.map +1 -1
  1004. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js +1 -1
  1005. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js.map +1 -1
  1006. package/dist/core/components/viewers/map/src/tools/mapTools.d.ts +2 -2
  1007. package/dist/core/components/viewers/map/src/tools/mapTools.d.ts.map +1 -1
  1008. package/dist/core/components/viewers/map/src/tools/mapTools.js +4 -4
  1009. package/dist/core/components/viewers/map/src/tools/mapTools.js.map +1 -1
  1010. package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts +1 -1
  1011. package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts.map +1 -1
  1012. package/dist/core/components/viewers/map/src/tools/measureMapTool.js +3 -3
  1013. package/dist/core/components/viewers/map/src/tools/measureMapTool.js.map +1 -1
  1014. package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts +1 -1
  1015. package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts.map +1 -1
  1016. package/dist/core/components/viewers/map/src/tools/shareMapTool.js.map +1 -1
  1017. package/dist/core/components/viewers/map/utils/ClusterManager.d.ts +1 -1
  1018. package/dist/core/components/viewers/map/utils/ClusterManager.d.ts.map +1 -1
  1019. package/dist/core/components/viewers/map/utils/ClusterManager.js.map +1 -1
  1020. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.d.ts.map +1 -1
  1021. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js +0 -1
  1022. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js.map +1 -1
  1023. package/dist/core/components/viewers/map/utils/MarkerManager.d.ts +1 -1
  1024. package/dist/core/components/viewers/map/utils/MarkerManager.d.ts.map +1 -1
  1025. package/dist/core/components/viewers/map/utils/MarkerManager.js.map +1 -1
  1026. package/dist/core/components/viewers/map/utils/extractCoordinates.js.map +1 -1
  1027. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts +1 -1
  1028. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts.map +1 -1
  1029. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.js.map +1 -1
  1030. package/dist/core/components/viewers/map/utils/flyToEach.d.ts +1 -1
  1031. package/dist/core/components/viewers/map/utils/flyToEach.d.ts.map +1 -1
  1032. package/dist/core/components/viewers/map/utils/flyToEach.js +0 -1
  1033. package/dist/core/components/viewers/map/utils/flyToEach.js.map +1 -1
  1034. package/dist/core/components/viewers/map/utils/geocoder.d.ts +1 -1
  1035. package/dist/core/components/viewers/map/utils/geocoder.d.ts.map +1 -1
  1036. package/dist/core/components/viewers/map/utils/geocoder.js +1 -1
  1037. package/dist/core/components/viewers/map/utils/geocoder.js.map +1 -1
  1038. package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts +1 -1
  1039. package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts.map +1 -1
  1040. package/dist/core/components/viewers/map/utils/geocoding/adapters.js.map +1 -1
  1041. package/dist/core/components/viewers/map/utils/geocoding/index.d.ts +1 -1
  1042. package/dist/core/components/viewers/map/utils/geocoding/index.d.ts.map +1 -1
  1043. package/dist/core/components/viewers/map/utils/geocoding/index.js +1 -1
  1044. package/dist/core/components/viewers/map/utils/geocoding/index.js.map +1 -1
  1045. package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts +1 -1
  1046. package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts.map +1 -1
  1047. package/dist/core/components/viewers/map/utils/geocoding/osm.js +1 -1
  1048. package/dist/core/components/viewers/map/utils/geocoding/osm.js.map +1 -1
  1049. package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts +1 -1
  1050. package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts.map +1 -1
  1051. package/dist/core/components/viewers/map/utils/geocoding/pelias.js.map +1 -1
  1052. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts +1 -1
  1053. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts.map +1 -1
  1054. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.js.map +1 -1
  1055. package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.d.ts.map +1 -1
  1056. package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js +0 -2
  1057. package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js.map +1 -1
  1058. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.d.ts.map +1 -1
  1059. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js +1 -1
  1060. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js.map +1 -1
  1061. package/dist/core/components/viewers/pointcloud/PointCloudViewer.d.ts.map +1 -1
  1062. package/dist/core/components/viewers/pointcloud/PointCloudViewer.js +5 -5
  1063. package/dist/core/components/viewers/pointcloud/PointCloudViewer.js.map +1 -1
  1064. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.d.ts.map +1 -1
  1065. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js +7 -7
  1066. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js.map +1 -1
  1067. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.d.ts.map +1 -1
  1068. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.js.map +1 -1
  1069. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.d.ts.map +1 -1
  1070. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js +15 -15
  1071. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js.map +1 -1
  1072. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.d.ts.map +1 -1
  1073. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js +3 -3
  1074. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js.map +1 -1
  1075. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts +1 -1
  1076. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts.map +1 -1
  1077. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js +1 -1
  1078. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js.map +1 -1
  1079. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.d.ts.map +1 -1
  1080. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js +2 -2
  1081. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js.map +1 -1
  1082. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.d.ts.map +1 -1
  1083. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js +3 -3
  1084. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js.map +1 -1
  1085. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  1086. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  1087. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js +4 -4
  1088. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  1089. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts +1 -1
  1090. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts.map +1 -1
  1091. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js +5 -5
  1092. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js.map +1 -1
  1093. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.d.ts.map +1 -1
  1094. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js +1 -1
  1095. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js.map +1 -1
  1096. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.d.ts.map +1 -1
  1097. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js +3 -3
  1098. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js.map +1 -1
  1099. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
  1100. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js +4 -4
  1101. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
  1102. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.d.ts.map +1 -1
  1103. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js +10 -10
  1104. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js.map +1 -1
  1105. package/dist/core/components/viewers/pointcloud/src/ViewportGizmo.js.map +1 -1
  1106. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts +1 -1
  1107. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts.map +1 -1
  1108. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js +3 -3
  1109. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js.map +1 -1
  1110. package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.d.ts.map +1 -1
  1111. package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.js.map +1 -1
  1112. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.d.ts.map +1 -1
  1113. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.js.map +1 -1
  1114. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.d.ts.map +1 -1
  1115. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.js.map +1 -1
  1116. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.d.ts.map +1 -1
  1117. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.js.map +1 -1
  1118. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts +1 -1
  1119. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts.map +1 -1
  1120. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js +6 -6
  1121. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js.map +1 -1
  1122. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.d.ts.map +1 -1
  1123. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js +2 -2
  1124. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js.map +1 -1
  1125. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.d.ts.map +1 -1
  1126. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js +2 -2
  1127. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js.map +1 -1
  1128. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.d.ts.map +1 -1
  1129. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js +3 -3
  1130. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js.map +1 -1
  1131. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.d.ts.map +1 -1
  1132. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js +1 -1
  1133. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js.map +1 -1
  1134. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.d.ts.map +1 -1
  1135. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js +1 -1
  1136. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js.map +1 -1
  1137. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.d.ts.map +1 -1
  1138. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js +1 -1
  1139. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js.map +1 -1
  1140. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.d.ts.map +1 -1
  1141. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js +4 -4
  1142. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js.map +1 -1
  1143. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts +1 -1
  1144. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts.map +1 -1
  1145. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js +1 -1
  1146. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js.map +1 -1
  1147. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts +1 -1
  1148. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts.map +1 -1
  1149. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js +2 -2
  1150. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js.map +1 -1
  1151. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts +1 -1
  1152. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts.map +1 -1
  1153. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.js.map +1 -1
  1154. package/dist/core/hooks/buildings/createBuildingHooks.d.ts +1 -1
  1155. package/dist/core/hooks/buildings/createBuildingHooks.d.ts.map +1 -1
  1156. package/dist/core/hooks/buildings/createBuildingHooks.js.map +1 -1
  1157. package/dist/core/hooks/comments/comments.d.ts +11 -0
  1158. package/dist/core/hooks/comments/comments.d.ts.map +1 -1
  1159. package/dist/core/hooks/comments/comments.js +3 -1
  1160. package/dist/core/hooks/comments/comments.js.map +1 -1
  1161. package/dist/core/hooks/comments/createCommentHooks.d.ts +12 -1
  1162. package/dist/core/hooks/comments/createCommentHooks.d.ts.map +1 -1
  1163. package/dist/core/hooks/comments/createCommentHooks.js +31 -2
  1164. package/dist/core/hooks/comments/createCommentHooks.js.map +1 -1
  1165. package/dist/core/hooks/files/createFileHooks.d.ts +1 -1
  1166. package/dist/core/hooks/files/createFileHooks.d.ts.map +1 -1
  1167. package/dist/core/hooks/files/createFileHooks.js.map +1 -1
  1168. package/dist/core/hooks/files/files.d.ts.map +1 -1
  1169. package/dist/core/hooks/files/files.js +1 -2
  1170. package/dist/core/hooks/files/files.js.map +1 -1
  1171. package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts +1 -1
  1172. package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts.map +1 -1
  1173. package/dist/core/hooks/infrastructures/createInfrastructureHooks.js.map +1 -1
  1174. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts +1 -1
  1175. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts.map +1 -1
  1176. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.js.map +1 -1
  1177. package/dist/core/hooks/organizations/createOrganizationHooks.d.ts +1 -1
  1178. package/dist/core/hooks/organizations/createOrganizationHooks.d.ts.map +1 -1
  1179. package/dist/core/hooks/organizations/createOrganizationHooks.js.map +1 -1
  1180. package/dist/core/hooks/provider.d.ts +5 -5
  1181. package/dist/core/hooks/provider.d.ts.map +1 -1
  1182. package/dist/core/hooks/provider.js +4 -4
  1183. package/dist/core/hooks/provider.js.map +1 -1
  1184. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts +1 -1
  1185. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts.map +1 -1
  1186. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.js.map +1 -1
  1187. package/dist/core/hooks/sensors/createSensorHooks.d.ts +1 -1
  1188. package/dist/core/hooks/sensors/createSensorHooks.d.ts.map +1 -1
  1189. package/dist/core/hooks/sensors/createSensorHooks.js +1 -1
  1190. package/dist/core/hooks/sensors/createSensorHooks.js.map +1 -1
  1191. package/dist/core/hooks/sites/createSiteHooks.d.ts +1 -1
  1192. package/dist/core/hooks/sites/createSiteHooks.d.ts.map +1 -1
  1193. package/dist/core/hooks/sites/createSiteHooks.js.map +1 -1
  1194. package/dist/core/hooks/sites/sites.d.ts.map +1 -1
  1195. package/dist/core/hooks/ui/useResizableSidebarWidth.d.ts +30 -0
  1196. package/dist/core/hooks/ui/useResizableSidebarWidth.d.ts.map +1 -0
  1197. package/dist/core/hooks/ui/useResizableSidebarWidth.js +75 -0
  1198. package/dist/core/hooks/ui/useResizableSidebarWidth.js.map +1 -0
  1199. package/dist/core/hooks/useCaptureScreenshot.d.ts.map +1 -1
  1200. package/dist/core/hooks/useCaptureScreenshot.js.map +1 -1
  1201. package/dist/core/hooks/useCurrentViewerPosition.d.ts.map +1 -1
  1202. package/dist/core/hooks/useCurrentViewerPosition.js +1 -1
  1203. package/dist/core/hooks/useCurrentViewerPosition.js.map +1 -1
  1204. package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts +1 -1
  1205. package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts.map +1 -1
  1206. package/dist/core/hooks/useGeocodingRuntimeConfig.js.map +1 -1
  1207. package/dist/core/hooks/useShareUrl.d.ts.map +1 -1
  1208. package/dist/core/hooks/useShareUrl.js +1 -1
  1209. package/dist/core/hooks/useShareUrl.js.map +1 -1
  1210. package/dist/core/hooks/users/createUserHooks.d.ts +1 -1
  1211. package/dist/core/hooks/users/createUserHooks.d.ts.map +1 -1
  1212. package/dist/core/hooks/users/createUserHooks.js.map +1 -1
  1213. package/dist/core/i18n/index.js +1 -1
  1214. package/dist/core/i18n/index.js.map +1 -1
  1215. package/dist/core/i18n/messages/en.json +1877 -1872
  1216. package/dist/core/i18n/messages/es.json +1875 -1870
  1217. package/dist/core/i18n/messages/fr.json +1875 -1870
  1218. package/dist/core/plugins/host/context.d.ts +1 -1
  1219. package/dist/core/plugins/host/context.d.ts.map +1 -1
  1220. package/dist/core/plugins/host/context.js.map +1 -1
  1221. package/dist/core/plugins/host/host.d.ts +1 -1
  1222. package/dist/core/plugins/host/host.d.ts.map +1 -1
  1223. package/dist/core/plugins/host/host.js.map +1 -1
  1224. package/dist/core/plugins/host/provider.d.ts.map +1 -1
  1225. package/dist/core/plugins/host/provider.js +2 -2
  1226. package/dist/core/plugins/host/provider.js.map +1 -1
  1227. package/dist/core/store/AppConfig/context.d.ts +1 -1
  1228. package/dist/core/store/AppConfig/context.d.ts.map +1 -1
  1229. package/dist/core/store/AppConfig/context.js.map +1 -1
  1230. package/dist/core/store/AppConfig/reducer.d.ts +2 -2
  1231. package/dist/core/store/AppConfig/reducer.d.ts.map +1 -1
  1232. package/dist/core/store/AppConfig/reducer.js.map +1 -1
  1233. package/dist/core/store/BIM/context.d.ts +1 -1
  1234. package/dist/core/store/BIM/context.d.ts.map +1 -1
  1235. package/dist/core/store/BIM/context.js.map +1 -1
  1236. package/dist/core/store/BIM/reducer.d.ts +3 -3
  1237. package/dist/core/store/BIM/reducer.d.ts.map +1 -1
  1238. package/dist/core/store/BIM/reducer.js.map +1 -1
  1239. package/dist/core/store/Buildings/context.d.ts +1 -1
  1240. package/dist/core/store/Buildings/context.d.ts.map +1 -1
  1241. package/dist/core/store/Buildings/context.js.map +1 -1
  1242. package/dist/core/store/Buildings/reducer.d.ts +2 -2
  1243. package/dist/core/store/Buildings/reducer.d.ts.map +1 -1
  1244. package/dist/core/store/Buildings/reducer.js.map +1 -1
  1245. package/dist/core/store/CombineProviders.d.ts.map +1 -1
  1246. package/dist/core/store/CombineProviders.js +7 -7
  1247. package/dist/core/store/CombineProviders.js.map +1 -1
  1248. package/dist/core/store/Content/context.d.ts +1 -1
  1249. package/dist/core/store/Content/context.d.ts.map +1 -1
  1250. package/dist/core/store/Content/context.js.map +1 -1
  1251. package/dist/core/store/Datasets/context.d.ts +1 -1
  1252. package/dist/core/store/Datasets/context.d.ts.map +1 -1
  1253. package/dist/core/store/Datasets/context.js.map +1 -1
  1254. package/dist/core/store/Datasets/reducer.d.ts +1 -1
  1255. package/dist/core/store/Datasets/reducer.d.ts.map +1 -1
  1256. package/dist/core/store/Datasets/reducer.js +0 -2
  1257. package/dist/core/store/Datasets/reducer.js.map +1 -1
  1258. package/dist/core/store/Files/context.d.ts +1 -1
  1259. package/dist/core/store/Files/context.d.ts.map +1 -1
  1260. package/dist/core/store/Files/context.js.map +1 -1
  1261. package/dist/core/store/Files/reducer.d.ts +3 -3
  1262. package/dist/core/store/Files/reducer.d.ts.map +1 -1
  1263. package/dist/core/store/Files/reducer.js +0 -1
  1264. package/dist/core/store/Files/reducer.js.map +1 -1
  1265. package/dist/core/store/Map/context.d.ts +1 -1
  1266. package/dist/core/store/Map/context.d.ts.map +1 -1
  1267. package/dist/core/store/Map/context.js +1 -1
  1268. package/dist/core/store/Map/context.js.map +1 -1
  1269. package/dist/core/store/Map/reducer.d.ts +6 -5
  1270. package/dist/core/store/Map/reducer.d.ts.map +1 -1
  1271. package/dist/core/store/Map/reducer.js.map +1 -1
  1272. package/dist/core/store/MapSites/context.d.ts +1 -1
  1273. package/dist/core/store/MapSites/context.d.ts.map +1 -1
  1274. package/dist/core/store/MapSites/context.js.map +1 -1
  1275. package/dist/core/store/MapSites/reducer.d.ts +1 -1
  1276. package/dist/core/store/MapSites/reducer.d.ts.map +1 -1
  1277. package/dist/core/store/MapSites/reducer.js.map +1 -1
  1278. package/dist/core/store/Menus/context.d.ts +1 -1
  1279. package/dist/core/store/Menus/context.d.ts.map +1 -1
  1280. package/dist/core/store/Menus/context.js +6 -3
  1281. package/dist/core/store/Menus/context.js.map +1 -1
  1282. package/dist/core/store/Menus/reducer.d.ts +21 -1
  1283. package/dist/core/store/Menus/reducer.d.ts.map +1 -1
  1284. package/dist/core/store/Menus/reducer.js +21 -3
  1285. package/dist/core/store/Menus/reducer.js.map +1 -1
  1286. package/dist/core/store/Permissions/context.d.ts +1 -1
  1287. package/dist/core/store/Permissions/context.d.ts.map +1 -1
  1288. package/dist/core/store/Permissions/context.js +2 -2
  1289. package/dist/core/store/Permissions/context.js.map +1 -1
  1290. package/dist/core/store/PointCloud/context.d.ts +1 -1
  1291. package/dist/core/store/PointCloud/context.d.ts.map +1 -1
  1292. package/dist/core/store/PointCloud/context.js.map +1 -1
  1293. package/dist/core/store/PointCloud/reducer.d.ts +1 -1
  1294. package/dist/core/store/PointCloud/reducer.d.ts.map +1 -1
  1295. package/dist/core/store/PointCloud/reducer.js.map +1 -1
  1296. package/dist/core/store/Tools/context.d.ts +1 -1
  1297. package/dist/core/store/Tools/context.d.ts.map +1 -1
  1298. package/dist/core/store/Tools/context.js.map +1 -1
  1299. package/dist/core/store/Tools/reducer.d.ts +1 -1
  1300. package/dist/core/store/Tools/reducer.d.ts.map +1 -1
  1301. package/dist/core/store/Tools/reducer.js.map +1 -1
  1302. package/dist/core/styles/globals.css +17 -16
  1303. package/dist/core/styles/tailwindMerge.d.ts +1 -1
  1304. package/dist/core/styles/tailwindMerge.d.ts.map +1 -1
  1305. package/dist/core/styles/tailwindMerge.js.map +1 -1
  1306. package/dist/core/types/datasetTypes.d.ts +2 -2
  1307. package/dist/core/types/datasetTypes.d.ts.map +1 -1
  1308. package/dist/core/types/dbTypes.d.ts +1 -1
  1309. package/dist/core/types/dbTypes.d.ts.map +1 -1
  1310. package/dist/core/types/dbTypes.js.map +1 -1
  1311. package/dist/core/types/files.d.ts +2 -2
  1312. package/dist/core/types/files.d.ts.map +1 -1
  1313. package/dist/core/types/global.d.ts +3 -3
  1314. package/dist/core/types/global.d.ts.map +1 -1
  1315. package/dist/core/types/global.js.map +1 -1
  1316. package/dist/core/types/map.d.ts +2 -2
  1317. package/dist/core/types/map.d.ts.map +1 -1
  1318. package/dist/core/types/tools.d.ts +3 -3
  1319. package/dist/core/types/tools.d.ts.map +1 -1
  1320. package/dist/core/types/users.d.ts +2 -2
  1321. package/dist/core/types/users.d.ts.map +1 -1
  1322. package/dist/core/utils/getFileIcon.d.ts +1 -1
  1323. package/dist/core/utils/getFileIcon.d.ts.map +1 -1
  1324. package/dist/core/utils/getFileIcon.js.map +1 -1
  1325. package/dist/core/utils/markerUtils.d.ts +10 -0
  1326. package/dist/core/utils/markerUtils.d.ts.map +1 -1
  1327. package/dist/core/utils/markerUtils.js +9 -1
  1328. package/dist/core/utils/markerUtils.js.map +1 -1
  1329. package/dist/core/utils/memcache.d.ts.map +1 -1
  1330. package/dist/core/utils/memcache.js +0 -7
  1331. package/dist/core/utils/memcache.js.map +1 -1
  1332. package/dist/core/utils/roles.d.ts.map +1 -1
  1333. package/dist/core/utils/roles.js.map +1 -1
  1334. package/dist/core/utils/timeUtils.js.map +1 -1
  1335. package/dist/core/utils/utils.d.ts +1 -1
  1336. package/dist/core/utils/utils.d.ts.map +1 -1
  1337. package/dist/core/utils/utils.js.map +1 -1
  1338. package/package.json +8 -2
@@ -1,4 +1,4 @@
1
- import { Feature } from 'geojson';
1
+ import type { Feature } from 'geojson';
2
2
  export declare const osmCategoryToLayer: (category?: string) => string;
3
3
  export declare const normalizePhotonFeature: (feature: any) => Feature;
4
4
  export declare const normalizeNominatimResult: (data: any) => Feature;
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/adapters.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,KAAG,MAoBtD,CAAA;AAkCD,eAAO,MAAM,sBAAsB,GAAI,SAAS,GAAG,KAAG,OAuCrD,CAAA;AAGD,eAAO,MAAM,wBAAwB,GAAI,MAAM,GAAG,KAAG,OAkCpD,CAAA"}
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/adapters.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC,eAAO,MAAM,kBAAkB,GAAI,WAAW,MAAM,KAAG,MAoBtD,CAAA;AAkCD,eAAO,MAAM,sBAAsB,GAAI,SAAS,GAAG,KAAG,OAuCrD,CAAA;AAGD,eAAO,MAAM,wBAAwB,GAAI,MAAM,GAAG,KAAG,OAkCpD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/adapters.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { Feature } from 'geojson'\r\n\r\n// Map OSM place categories onto Pelias-style layer names (best effort, display-only).\r\nexport const osmCategoryToLayer = (category?: string): string => {\r\n switch (category) {\r\n case 'house':\r\n case 'building': return 'address'\r\n case 'street':\r\n case 'road': return 'street'\r\n case 'city':\r\n case 'town':\r\n case 'village':\r\n case 'hamlet':\r\n case 'locality': return 'locality'\r\n case 'district':\r\n case 'suburb':\r\n case 'neighbourhood': return 'neighbourhood'\r\n case 'county': return 'county'\r\n case 'state':\r\n case 'region': return 'region'\r\n case 'country': return 'country'\r\n default: return category || 'venue'\r\n }\r\n}\r\n\r\n// Photon (OSM) returns full subdivision names (\"Ontario\"); the rest of the app expects\r\n// Pelias-style abbreviations (\"ON\"). Map common North American ones so the public\r\n// fallback populates region_a the way Geocode Earth / Pelias do.\r\nconst SUBDIVISION_ABBREVIATIONS: Record<string, Record<string, string>> = {\r\n CA: {\r\n 'alberta': 'AB', 'british columbia': 'BC', 'manitoba': 'MB', 'new brunswick': 'NB',\r\n 'newfoundland and labrador': 'NL', 'northwest territories': 'NT', 'nova scotia': 'NS',\r\n 'nunavut': 'NU', 'ontario': 'ON', 'prince edward island': 'PE', 'quebec': 'QC',\r\n 'québec': 'QC', 'saskatchewan': 'SK', 'yukon': 'YT',\r\n },\r\n US: {\r\n 'alabama': 'AL', 'alaska': 'AK', 'arizona': 'AZ', 'arkansas': 'AR', 'california': 'CA',\r\n 'colorado': 'CO', 'connecticut': 'CT', 'delaware': 'DE', 'district of columbia': 'DC',\r\n 'florida': 'FL', 'georgia': 'GA', 'hawaii': 'HI', 'idaho': 'ID', 'illinois': 'IL',\r\n 'indiana': 'IN', 'iowa': 'IA', 'kansas': 'KS', 'kentucky': 'KY', 'louisiana': 'LA',\r\n 'maine': 'ME', 'maryland': 'MD', 'massachusetts': 'MA', 'michigan': 'MI', 'minnesota': 'MN',\r\n 'mississippi': 'MS', 'missouri': 'MO', 'montana': 'MT', 'nebraska': 'NE', 'nevada': 'NV',\r\n 'new hampshire': 'NH', 'new jersey': 'NJ', 'new mexico': 'NM', 'new york': 'NY',\r\n 'north carolina': 'NC', 'north dakota': 'ND', 'ohio': 'OH', 'oklahoma': 'OK', 'oregon': 'OR',\r\n 'pennsylvania': 'PA', 'rhode island': 'RI', 'south carolina': 'SC', 'south dakota': 'SD',\r\n 'tennessee': 'TN', 'texas': 'TX', 'utah': 'UT', 'vermont': 'VT', 'virginia': 'VA',\r\n 'washington': 'WA', 'west virginia': 'WV', 'wisconsin': 'WI', 'wyoming': 'WY',\r\n },\r\n}\r\n\r\nconst subdivisionAbbreviation = (countryCode: string, state?: string): string => {\r\n if (!state) return ''\r\n const table = SUBDIVISION_ABBREVIATIONS[(countryCode || '').toUpperCase()]\r\n return (table && table[state.trim().toLowerCase()]) || ''\r\n}\r\n\r\n// Normalize a Photon autocomplete feature into the Pelias feature shape.\r\nexport const normalizePhotonFeature = (feature: any): Feature => {\r\n const p = feature.properties || {}\r\n const region = p.state || ''\r\n const country = p.country || ''\r\n const country_a = (p.countrycode || '').toUpperCase()\r\n const region_a = subdivisionAbbreviation(country_a, region)\r\n const locality = p.city || p.town || p.village || p.district || ''\r\n const name = p.name || [p.housenumber, p.street].filter(Boolean).join(' ') || locality\r\n // Match the Pelias label shape (\"Name, City, ON, Country\") so label-parsing consumers work.\r\n const label = [name, locality && locality !== name ? locality : null, region_a || region, country]\r\n .filter(Boolean)\r\n .join(', ')\r\n\r\n // Photon `extent` is [west, north, east, south]; Pelias bbox is [west, south, east, north].\r\n const bbox: [number, number, number, number] | undefined = Array.isArray(p.extent) && p.extent.length === 4\r\n ? [p.extent[0], p.extent[3], p.extent[2], p.extent[1]]\r\n : undefined\r\n\r\n return {\r\n type: 'Feature',\r\n geometry: feature.geometry,\r\n ...(bbox ? { bbox } : {}),\r\n properties: {\r\n name,\r\n label,\r\n housenumber: p.housenumber,\r\n street: p.street,\r\n locality,\r\n neighbourhood: p.district,\r\n county: p.county,\r\n region,\r\n region_a, // mapped from the full subdivision name where known (SUBDIVISION_ABBREVIATIONS)\r\n country,\r\n country_a,\r\n postalcode: p.postcode,\r\n gid: p.osm_id != null ? `osm:${p.osm_type}:${p.osm_id}` : undefined,\r\n layer: osmCategoryToLayer(p.type),\r\n },\r\n } as Feature\r\n}\r\n\r\n// Normalize a Nominatim reverse result into the Pelias feature shape.\r\nexport const normalizeNominatimResult = (data: any): Feature => {\r\n const a = data.address || {}\r\n // ISO3166-2-lvl4 looks like \"CA-ON\"; the suffix is the Pelias region_a abbreviation.\r\n const region_a = (a['ISO3166-2-lvl4'] || '').split('-')[1] || ''\r\n const locality = a.city || a.town || a.village || a.municipality || a.suburb || a.neighbourhood || a.county || ''\r\n const name = a.road ? [a.house_number, a.road].filter(Boolean).join(' ') : (locality || (data.display_name || '').split(',')[0])\r\n\r\n // Nominatim boundingbox is [minlat, maxlat, minlon, maxlon]; Pelias bbox is [west, south, east, north].\r\n const bb = data.boundingbox\r\n const bbox: [number, number, number, number] | undefined = Array.isArray(bb) && bb.length === 4\r\n ? [Number(bb[2]), Number(bb[0]), Number(bb[3]), Number(bb[1])]\r\n : undefined\r\n\r\n return {\r\n type: 'Feature',\r\n geometry: { type: 'Point', coordinates: [Number(data.lon), Number(data.lat)] },\r\n ...(bbox ? { bbox } : {}),\r\n properties: {\r\n name,\r\n label: data.display_name || '',\r\n housenumber: a.house_number,\r\n street: a.road,\r\n locality,\r\n neighbourhood: a.neighbourhood || a.suburb,\r\n county: a.county,\r\n region: a.state,\r\n region_a,\r\n country: a.country,\r\n country_a: (a.country_code || '').toUpperCase(),\r\n postalcode: a.postcode,\r\n gid: data.osm_id != null ? `osm:${data.osm_type}:${data.osm_id}` : undefined,\r\n layer: osmCategoryToLayer(data.addresstype || data.type),\r\n },\r\n } as Feature\r\n}\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/adapters.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Feature } from 'geojson'\r\n\r\n// Map OSM place categories onto Pelias-style layer names (best effort, display-only).\r\nexport const osmCategoryToLayer = (category?: string): string => {\r\n switch (category) {\r\n case 'house':\r\n case 'building': return 'address'\r\n case 'street':\r\n case 'road': return 'street'\r\n case 'city':\r\n case 'town':\r\n case 'village':\r\n case 'hamlet':\r\n case 'locality': return 'locality'\r\n case 'district':\r\n case 'suburb':\r\n case 'neighbourhood': return 'neighbourhood'\r\n case 'county': return 'county'\r\n case 'state':\r\n case 'region': return 'region'\r\n case 'country': return 'country'\r\n default: return category || 'venue'\r\n }\r\n}\r\n\r\n// Photon (OSM) returns full subdivision names (\"Ontario\"); the rest of the app expects\r\n// Pelias-style abbreviations (\"ON\"). Map common North American ones so the public\r\n// fallback populates region_a the way Geocode Earth / Pelias do.\r\nconst SUBDIVISION_ABBREVIATIONS: Record<string, Record<string, string>> = {\r\n CA: {\r\n 'alberta': 'AB', 'british columbia': 'BC', 'manitoba': 'MB', 'new brunswick': 'NB',\r\n 'newfoundland and labrador': 'NL', 'northwest territories': 'NT', 'nova scotia': 'NS',\r\n 'nunavut': 'NU', 'ontario': 'ON', 'prince edward island': 'PE', 'quebec': 'QC',\r\n 'québec': 'QC', 'saskatchewan': 'SK', 'yukon': 'YT',\r\n },\r\n US: {\r\n 'alabama': 'AL', 'alaska': 'AK', 'arizona': 'AZ', 'arkansas': 'AR', 'california': 'CA',\r\n 'colorado': 'CO', 'connecticut': 'CT', 'delaware': 'DE', 'district of columbia': 'DC',\r\n 'florida': 'FL', 'georgia': 'GA', 'hawaii': 'HI', 'idaho': 'ID', 'illinois': 'IL',\r\n 'indiana': 'IN', 'iowa': 'IA', 'kansas': 'KS', 'kentucky': 'KY', 'louisiana': 'LA',\r\n 'maine': 'ME', 'maryland': 'MD', 'massachusetts': 'MA', 'michigan': 'MI', 'minnesota': 'MN',\r\n 'mississippi': 'MS', 'missouri': 'MO', 'montana': 'MT', 'nebraska': 'NE', 'nevada': 'NV',\r\n 'new hampshire': 'NH', 'new jersey': 'NJ', 'new mexico': 'NM', 'new york': 'NY',\r\n 'north carolina': 'NC', 'north dakota': 'ND', 'ohio': 'OH', 'oklahoma': 'OK', 'oregon': 'OR',\r\n 'pennsylvania': 'PA', 'rhode island': 'RI', 'south carolina': 'SC', 'south dakota': 'SD',\r\n 'tennessee': 'TN', 'texas': 'TX', 'utah': 'UT', 'vermont': 'VT', 'virginia': 'VA',\r\n 'washington': 'WA', 'west virginia': 'WV', 'wisconsin': 'WI', 'wyoming': 'WY',\r\n },\r\n}\r\n\r\nconst subdivisionAbbreviation = (countryCode: string, state?: string): string => {\r\n if (!state) return ''\r\n const table = SUBDIVISION_ABBREVIATIONS[(countryCode || '').toUpperCase()]\r\n return (table && table[state.trim().toLowerCase()]) || ''\r\n}\r\n\r\n// Normalize a Photon autocomplete feature into the Pelias feature shape.\r\nexport const normalizePhotonFeature = (feature: any): Feature => {\r\n const p = feature.properties || {}\r\n const region = p.state || ''\r\n const country = p.country || ''\r\n const country_a = (p.countrycode || '').toUpperCase()\r\n const region_a = subdivisionAbbreviation(country_a, region)\r\n const locality = p.city || p.town || p.village || p.district || ''\r\n const name = p.name || [p.housenumber, p.street].filter(Boolean).join(' ') || locality\r\n // Match the Pelias label shape (\"Name, City, ON, Country\") so label-parsing consumers work.\r\n const label = [name, locality && locality !== name ? locality : null, region_a || region, country]\r\n .filter(Boolean)\r\n .join(', ')\r\n\r\n // Photon `extent` is [west, north, east, south]; Pelias bbox is [west, south, east, north].\r\n const bbox: [number, number, number, number] | undefined = Array.isArray(p.extent) && p.extent.length === 4\r\n ? [p.extent[0], p.extent[3], p.extent[2], p.extent[1]]\r\n : undefined\r\n\r\n return {\r\n type: 'Feature',\r\n geometry: feature.geometry,\r\n ...(bbox ? { bbox } : {}),\r\n properties: {\r\n name,\r\n label,\r\n housenumber: p.housenumber,\r\n street: p.street,\r\n locality,\r\n neighbourhood: p.district,\r\n county: p.county,\r\n region,\r\n region_a, // mapped from the full subdivision name where known (SUBDIVISION_ABBREVIATIONS)\r\n country,\r\n country_a,\r\n postalcode: p.postcode,\r\n gid: p.osm_id != null ? `osm:${p.osm_type}:${p.osm_id}` : undefined,\r\n layer: osmCategoryToLayer(p.type),\r\n },\r\n } as Feature\r\n}\r\n\r\n// Normalize a Nominatim reverse result into the Pelias feature shape.\r\nexport const normalizeNominatimResult = (data: any): Feature => {\r\n const a = data.address || {}\r\n // ISO3166-2-lvl4 looks like \"CA-ON\"; the suffix is the Pelias region_a abbreviation.\r\n const region_a = (a['ISO3166-2-lvl4'] || '').split('-')[1] || ''\r\n const locality = a.city || a.town || a.village || a.municipality || a.suburb || a.neighbourhood || a.county || ''\r\n const name = a.road ? [a.house_number, a.road].filter(Boolean).join(' ') : (locality || (data.display_name || '').split(',')[0])\r\n\r\n // Nominatim boundingbox is [minlat, maxlat, minlon, maxlon]; Pelias bbox is [west, south, east, north].\r\n const bb = data.boundingbox\r\n const bbox: [number, number, number, number] | undefined = Array.isArray(bb) && bb.length === 4\r\n ? [Number(bb[2]), Number(bb[0]), Number(bb[3]), Number(bb[1])]\r\n : undefined\r\n\r\n return {\r\n type: 'Feature',\r\n geometry: { type: 'Point', coordinates: [Number(data.lon), Number(data.lat)] },\r\n ...(bbox ? { bbox } : {}),\r\n properties: {\r\n name,\r\n label: data.display_name || '',\r\n housenumber: a.house_number,\r\n street: a.road,\r\n locality,\r\n neighbourhood: a.neighbourhood || a.suburb,\r\n county: a.county,\r\n region: a.state,\r\n region_a,\r\n country: a.country,\r\n country_a: (a.country_code || '').toUpperCase(),\r\n postalcode: a.postcode,\r\n gid: data.osm_id != null ? `osm:${data.osm_type}:${data.osm_id}` : undefined,\r\n layer: osmCategoryToLayer(data.addresstype || data.type),\r\n },\r\n } as Feature\r\n}\r\n"],"mappings":"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","names":[]}
@@ -1,4 +1,4 @@
1
- import { Feature } from 'geojson';
1
+ import type { Feature } from 'geojson';
2
2
  export declare const autocompleteGeocode: (text: string, countryCode: string, size: number) => Promise<Feature[]>;
3
3
  export declare const reverseGeocode: (latitude: string, longitude: string, countryCode: string, { size, coarse, layers }?: {
4
4
  size?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAkCjC,eAAO,MAAM,mBAAmB,GAAU,MAAM,MAAM,EAAE,aAAa,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAU5G,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,2BAAsC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,KAC9F,OAAO,CAAC,OAAO,EAAE,CAUnB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AA+BtC,eAAO,MAAM,mBAAmB,GAAU,MAAM,MAAM,EAAE,aAAa,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAU5G,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,2BAAsC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,KAC9F,OAAO,CAAC,OAAO,EAAE,CAUnB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { getGeocodingConfig } from "./config";
2
- import { peliasAutocomplete, peliasReverse } from "./pelias";
3
2
  import { photonAutocomplete, nominatimReverse } from "./osm";
3
+ import { peliasAutocomplete, peliasReverse } from "./pelias";
4
4
  let peliasAuthFailed = false;
5
5
  const peliasActive = () => getGeocodingConfig().usePelias && !peliasAuthFailed;
6
6
  const isAuthError = (error) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { Feature } from 'geojson'\r\nimport { getGeocodingConfig } from './config'\r\nimport { peliasAutocomplete, peliasReverse } from './pelias'\r\nimport { photonAutocomplete, nominatimReverse } from './osm'\r\n\r\n// Provider-agnostic entry points. The preferred provider (Geocode Earth or a\r\n// self-hosted Pelias) is resolved in ./config from runtime-injected values;\r\n// if it fails we fall back to the free public OSM services so address search\r\n// keeps working.\r\n//\r\n// A bad/expired/origin-restricted key surfaces as a 401/403. Autocomplete fires\r\n// on every keystroke, so once we see an auth failure we stop retrying the keyed\r\n// provider for the rest of the session and serve results directly from public OSM.\r\nlet peliasAuthFailed = false\r\n\r\nconst peliasActive = (): boolean => getGeocodingConfig().usePelias && !peliasAuthFailed\r\n\r\nconst isAuthError = (error: unknown): boolean => {\r\n const message = error instanceof Error ? error.message : String(error)\r\n return message.includes('401') || message.includes('403')\r\n}\r\n\r\nconst handlePeliasFailure = (error: unknown, fallbackName: string): void => {\r\n if (isAuthError(error)) {\r\n peliasAuthFailed = true\r\n console.warn(\r\n `Geocoder: the configured provider rejected the API key (auth error). ` +\r\n `Falling back to public OSM services (Photon/Nominatim) for the rest of this session.`,\r\n )\r\n } else {\r\n console.warn(`Geocoder: provider request failed; falling back to ${fallbackName}.`, error)\r\n }\r\n}\r\n\r\nexport const autocompleteGeocode = async (text: string, countryCode: string, size: number): Promise<Feature[]> => {\r\n if (peliasActive()) {\r\n try {\r\n return await peliasAutocomplete(text, countryCode, size)\r\n }\r\n catch (error) {\r\n handlePeliasFailure(error, 'Photon')\r\n }\r\n }\r\n return photonAutocomplete(text, countryCode, size)\r\n}\r\n\r\nexport const reverseGeocode = async (\r\n latitude: string,\r\n longitude: string,\r\n countryCode: string,\r\n { size = 1, coarse = false, layers }: { size?: number; coarse?: boolean; layers?: string } = {},\r\n): Promise<Feature[]> => {\r\n if (peliasActive()) {\r\n try {\r\n return await peliasReverse(latitude, longitude, countryCode, { size, coarse, layers })\r\n }\r\n catch (error) {\r\n handlePeliasFailure(error, 'Nominatim')\r\n }\r\n }\r\n return nominatimReverse(latitude, longitude, { coarse })\r\n}\r\n"],"mappings":"AAIA,SAAS,0BAA0B;AACnC,SAAS,oBAAoB,qBAAqB;AAClD,SAAS,oBAAoB,wBAAwB;AAUrD,IAAI,mBAAmB;AAEvB,MAAM,eAAe,MAAe,mBAAmB,EAAE,aAAa,CAAC;AAEvE,MAAM,cAAc,CAAC,UAA4B;AAC/C,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK;AAC1D;AAEA,MAAM,sBAAsB,CAAC,OAAgB,iBAA+B;AAC1E,MAAI,YAAY,KAAK,GAAG;AACtB,uBAAmB;AACnB,YAAQ;AAAA,MACN;AAAA,IAEF;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,sDAAsD,YAAY,KAAK,KAAK;AAAA,EAC3F;AACF;AAEO,MAAM,sBAAsB,OAAO,MAAc,aAAqB,SAAqC;AAChH,MAAI,aAAa,GAAG;AAClB,QAAI;AACF,aAAO,MAAM,mBAAmB,MAAM,aAAa,IAAI;AAAA,IACzD,SACO,OAAO;AACZ,0BAAoB,OAAO,QAAQ;AAAA,IACrC;AAAA,EACF;AACA,SAAO,mBAAmB,MAAM,aAAa,IAAI;AACnD;AAEO,MAAM,iBAAiB,OAC5B,UACA,WACA,aACA,EAAE,OAAO,GAAG,SAAS,OAAO,OAAO,IAA0D,CAAC,MACvE;AACvB,MAAI,aAAa,GAAG;AAClB,QAAI;AACF,aAAO,MAAM,cAAc,UAAU,WAAW,aAAa,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,IACvF,SACO,OAAO;AACZ,0BAAoB,OAAO,WAAW;AAAA,IACxC;AAAA,EACF;AACA,SAAO,iBAAiB,UAAU,WAAW,EAAE,OAAO,CAAC;AACzD;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { getGeocodingConfig } from './config'\r\nimport { photonAutocomplete, nominatimReverse } from './osm'\r\nimport { peliasAutocomplete, peliasReverse } from './pelias'\r\n\r\nimport type { Feature } from 'geojson'\r\n\r\n// Provider-agnostic entry points. The preferred provider (Geocode Earth or a\r\n// self-hosted Pelias) is resolved in ./config from runtime-injected values;\r\n// if it fails we fall back to the free public OSM services so address search\r\n// keeps working.\r\n//\r\n// A bad/expired/origin-restricted key surfaces as a 401/403. Autocomplete fires\r\n// on every keystroke, so once we see an auth failure we stop retrying the keyed\r\n// provider for the rest of the session and serve results directly from public OSM.\r\nlet peliasAuthFailed = false\r\n\r\nconst peliasActive = (): boolean => getGeocodingConfig().usePelias && !peliasAuthFailed\r\n\r\nconst isAuthError = (error: unknown): boolean => {\r\n const message = error instanceof Error ? error.message : String(error)\r\n return message.includes('401') || message.includes('403')\r\n}\r\n\r\nconst handlePeliasFailure = (error: unknown, fallbackName: string): void => {\r\n if (isAuthError(error)) {\r\n peliasAuthFailed = true\r\n console.warn(\r\n `Geocoder: the configured provider rejected the API key (auth error). ` +\r\n `Falling back to public OSM services (Photon/Nominatim) for the rest of this session.`,\r\n )\r\n } else {\r\n console.warn(`Geocoder: provider request failed; falling back to ${fallbackName}.`, error)\r\n }\r\n}\r\n\r\nexport const autocompleteGeocode = async (text: string, countryCode: string, size: number): Promise<Feature[]> => {\r\n if (peliasActive()) {\r\n try {\r\n return await peliasAutocomplete(text, countryCode, size)\r\n }\r\n catch (error) {\r\n handlePeliasFailure(error, 'Photon')\r\n }\r\n }\r\n return photonAutocomplete(text, countryCode, size)\r\n}\r\n\r\nexport const reverseGeocode = async (\r\n latitude: string,\r\n longitude: string,\r\n countryCode: string,\r\n { size = 1, coarse = false, layers }: { size?: number; coarse?: boolean; layers?: string } = {},\r\n): Promise<Feature[]> => {\r\n if (peliasActive()) {\r\n try {\r\n return await peliasReverse(latitude, longitude, countryCode, { size, coarse, layers })\r\n }\r\n catch (error) {\r\n handlePeliasFailure(error, 'Nominatim')\r\n }\r\n }\r\n return nominatimReverse(latitude, longitude, { coarse })\r\n}\r\n"],"mappings":"AAGA,SAAS,0BAA0B;AACnC,SAAS,oBAAoB,wBAAwB;AACrD,SAAS,oBAAoB,qBAAqB;AAYlD,IAAI,mBAAmB;AAEvB,MAAM,eAAe,MAAe,mBAAmB,EAAE,aAAa,CAAC;AAEvE,MAAM,cAAc,CAAC,UAA4B;AAC/C,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAO,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK;AAC1D;AAEA,MAAM,sBAAsB,CAAC,OAAgB,iBAA+B;AAC1E,MAAI,YAAY,KAAK,GAAG;AACtB,uBAAmB;AACnB,YAAQ;AAAA,MACN;AAAA,IAEF;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,sDAAsD,YAAY,KAAK,KAAK;AAAA,EAC3F;AACF;AAEO,MAAM,sBAAsB,OAAO,MAAc,aAAqB,SAAqC;AAChH,MAAI,aAAa,GAAG;AAClB,QAAI;AACF,aAAO,MAAM,mBAAmB,MAAM,aAAa,IAAI;AAAA,IACzD,SACO,OAAO;AACZ,0BAAoB,OAAO,QAAQ;AAAA,IACrC;AAAA,EACF;AACA,SAAO,mBAAmB,MAAM,aAAa,IAAI;AACnD;AAEO,MAAM,iBAAiB,OAC5B,UACA,WACA,aACA,EAAE,OAAO,GAAG,SAAS,OAAO,OAAO,IAA0D,CAAC,MACvE;AACvB,MAAI,aAAa,GAAG;AAClB,QAAI;AACF,aAAO,MAAM,cAAc,UAAU,WAAW,aAAa,EAAE,MAAM,QAAQ,OAAO,CAAC;AAAA,IACvF,SACO,OAAO;AACZ,0BAAoB,OAAO,WAAW;AAAA,IACxC;AAAA,EACF;AACA,SAAO,iBAAiB,UAAU,WAAW,EAAE,OAAO,CAAC;AACzD;","names":[]}
@@ -1,4 +1,4 @@
1
- import { Feature } from 'geojson';
1
+ import type { Feature } from 'geojson';
2
2
  export declare const photonAutocomplete: (text: string, countryCode: string | undefined, size: number) => Promise<Feature[]>;
3
3
  export declare const nominatimReverse: (latitude: string, longitude: string, { coarse }: {
4
4
  coarse: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"osm.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/osm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAOjC,eAAO,MAAM,kBAAkB,GAAU,MAAM,MAAM,EAAE,aAAa,MAAM,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAsBvH,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,YAAY;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,KAC9B,OAAO,CAAC,OAAO,EAAE,CAiBnB,CAAA"}
1
+ {"version":3,"file":"osm.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/osm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC,eAAO,MAAM,kBAAkB,GAAU,MAAM,MAAM,EAAE,aAAa,MAAM,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAsBvH,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,YAAY;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,KAC9B,OAAO,CAAC,OAAO,EAAE,CAiBnB,CAAA"}
@@ -1,5 +1,5 @@
1
- import { getGeocodingConfig } from "./config";
2
1
  import { normalizePhotonFeature, normalizeNominatimResult } from "./adapters";
2
+ import { getGeocodingConfig } from "./config";
3
3
  const photonAutocomplete = async (text, countryCode, size) => {
4
4
  const { photonUrl } = getGeocodingConfig();
5
5
  const params = new URLSearchParams({ q: text, limit: String(size * 2), lang: "en" });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/osm.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { Feature } from 'geojson'\r\nimport { getGeocodingConfig } from './config'\r\nimport { normalizePhotonFeature, normalizeNominatimResult } from './adapters'\r\n\r\n// Free, no-key public OSM fallbacks. Photon serves autocomplete (it is built for\r\n// per-keystroke search); Nominatim serves reverse lookups (occasional, single point).\r\n\r\nexport const photonAutocomplete = async (text: string, countryCode: string | undefined, size: number): Promise<Feature[]> => {\r\n const { photonUrl } = getGeocodingConfig()\r\n\r\n // Photon has no country filter, so over-fetch and post-filter by country code.\r\n const params = new URLSearchParams({ q: text, limit: String(size * 2), lang: 'en' })\r\n\r\n const response = await fetch(`${photonUrl}/api?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const data = await response.json()\r\n let features: Feature[] = (data.features || []).map(normalizePhotonFeature)\r\n\r\n if (countryCode) {\r\n const cc = countryCode.toUpperCase()\r\n const inCountry = features.filter(f => {\r\n const ca = (f.properties as any)?.country_a\r\n return !ca || ca === cc\r\n })\r\n if (inCountry.length) features = inCountry\r\n }\r\n\r\n return features.slice(0, size)\r\n}\r\n\r\nexport const nominatimReverse = async (\r\n latitude: string,\r\n longitude: string,\r\n { coarse }: { coarse: boolean },\r\n): Promise<Feature[]> => {\r\n const { nominatimUrl } = getGeocodingConfig()\r\n\r\n const params = new URLSearchParams({\r\n format: 'jsonv2',\r\n lat: latitude,\r\n lon: longitude,\r\n addressdetails: '1',\r\n zoom: coarse ? '10' : '18',\r\n })\r\n\r\n const response = await fetch(`${nominatimUrl}/reverse?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const data = await response.json()\r\n if (!data || data.error || data.lat == null) return []\r\n return [normalizeNominatimResult(data)]\r\n}\r\n"],"mappings":"AAIA,SAAS,0BAA0B;AACnC,SAAS,wBAAwB,gCAAgC;AAK1D,MAAM,qBAAqB,OAAO,MAAc,aAAiC,SAAqC;AAC3H,QAAM,EAAE,UAAU,IAAI,mBAAmB;AAGzC,QAAM,SAAS,IAAI,gBAAgB,EAAE,GAAG,MAAM,OAAO,OAAO,OAAO,CAAC,GAAG,MAAM,KAAK,CAAC;AAEnF,QAAM,WAAW,MAAM,MAAM,GAAG,SAAS,QAAQ,MAAM,EAAE;AACzD,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,YAAuB,KAAK,YAAY,CAAC,GAAG,IAAI,sBAAsB;AAE1E,MAAI,aAAa;AACf,UAAM,KAAK,YAAY,YAAY;AACnC,UAAM,YAAY,SAAS,OAAO,OAAK;AAxB3C;AAyBM,YAAM,MAAM,OAAE,eAAF,mBAAsB;AAClC,aAAO,CAAC,MAAM,OAAO;AAAA,IACvB,CAAC;AACD,QAAI,UAAU,OAAQ,YAAW;AAAA,EACnC;AAEA,SAAO,SAAS,MAAM,GAAG,IAAI;AAC/B;AAEO,MAAM,mBAAmB,OAC9B,UACA,WACA,EAAE,OAAO,MACc;AACvB,QAAM,EAAE,aAAa,IAAI,mBAAmB;AAE5C,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,KAAK;AAAA,IACL,gBAAgB;AAAA,IAChB,MAAM,SAAS,OAAO;AAAA,EACxB,CAAC;AAED,QAAM,WAAW,MAAM,MAAM,GAAG,YAAY,YAAY,MAAM,EAAE;AAChE,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAAC,QAAQ,KAAK,SAAS,KAAK,OAAO,KAAM,QAAO,CAAC;AACrD,SAAO,CAAC,yBAAyB,IAAI,CAAC;AACxC;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/osm.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { normalizePhotonFeature, normalizeNominatimResult } from './adapters'\r\nimport { getGeocodingConfig } from './config'\r\n\r\nimport type { Feature } from 'geojson'\r\n\r\n// Free, no-key public OSM fallbacks. Photon serves autocomplete (it is built for\r\n// per-keystroke search); Nominatim serves reverse lookups (occasional, single point).\r\n\r\nexport const photonAutocomplete = async (text: string, countryCode: string | undefined, size: number): Promise<Feature[]> => {\r\n const { photonUrl } = getGeocodingConfig()\r\n\r\n // Photon has no country filter, so over-fetch and post-filter by country code.\r\n const params = new URLSearchParams({ q: text, limit: String(size * 2), lang: 'en' })\r\n\r\n const response = await fetch(`${photonUrl}/api?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const data = await response.json()\r\n let features: Feature[] = (data.features || []).map(normalizePhotonFeature)\r\n\r\n if (countryCode) {\r\n const cc = countryCode.toUpperCase()\r\n const inCountry = features.filter(f => {\r\n const ca = (f.properties as any)?.country_a\r\n return !ca || ca === cc\r\n })\r\n if (inCountry.length) features = inCountry\r\n }\r\n\r\n return features.slice(0, size)\r\n}\r\n\r\nexport const nominatimReverse = async (\r\n latitude: string,\r\n longitude: string,\r\n { coarse }: { coarse: boolean },\r\n): Promise<Feature[]> => {\r\n const { nominatimUrl } = getGeocodingConfig()\r\n\r\n const params = new URLSearchParams({\r\n format: 'jsonv2',\r\n lat: latitude,\r\n lon: longitude,\r\n addressdetails: '1',\r\n zoom: coarse ? '10' : '18',\r\n })\r\n\r\n const response = await fetch(`${nominatimUrl}/reverse?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const data = await response.json()\r\n if (!data || data.error || data.lat == null) return []\r\n return [normalizeNominatimResult(data)]\r\n}\r\n"],"mappings":"AAGA,SAAS,wBAAwB,gCAAgC;AACjE,SAAS,0BAA0B;AAO5B,MAAM,qBAAqB,OAAO,MAAc,aAAiC,SAAqC;AAC3H,QAAM,EAAE,UAAU,IAAI,mBAAmB;AAGzC,QAAM,SAAS,IAAI,gBAAgB,EAAE,GAAG,MAAM,OAAO,OAAO,OAAO,CAAC,GAAG,MAAM,KAAK,CAAC;AAEnF,QAAM,WAAW,MAAM,MAAM,GAAG,SAAS,QAAQ,MAAM,EAAE;AACzD,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,YAAuB,KAAK,YAAY,CAAC,GAAG,IAAI,sBAAsB;AAE1E,MAAI,aAAa;AACf,UAAM,KAAK,YAAY,YAAY;AACnC,UAAM,YAAY,SAAS,OAAO,OAAK;AAzB3C;AA0BM,YAAM,MAAM,OAAE,eAAF,mBAAsB;AAClC,aAAO,CAAC,MAAM,OAAO;AAAA,IACvB,CAAC;AACD,QAAI,UAAU,OAAQ,YAAW;AAAA,EACnC;AAEA,SAAO,SAAS,MAAM,GAAG,IAAI;AAC/B;AAEO,MAAM,mBAAmB,OAC9B,UACA,WACA,EAAE,OAAO,MACc;AACvB,QAAM,EAAE,aAAa,IAAI,mBAAmB;AAE5C,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,KAAK;AAAA,IACL,gBAAgB;AAAA,IAChB,MAAM,SAAS,OAAO;AAAA,EACxB,CAAC;AAED,QAAM,WAAW,MAAM,MAAM,GAAG,YAAY,YAAY,MAAM,EAAE;AAChE,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAAC,QAAQ,KAAK,SAAS,KAAK,OAAO,KAAM,QAAO,CAAC;AACrD,SAAO,CAAC,yBAAyB,IAAI,CAAC;AACxC;","names":[]}
@@ -1,4 +1,4 @@
1
- import { Feature } from 'geojson';
1
+ import type { Feature } from 'geojson';
2
2
  export declare const peliasAutocomplete: (text: string, countryCode: string | undefined, size: number) => Promise<Feature[]>;
3
3
  export declare const peliasReverse: (latitude: string, longitude: string, countryCode: string | undefined, { size, coarse, layers }: {
4
4
  size: number;
@@ -1 +1 @@
1
- {"version":3,"file":"pelias.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/pelias.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMjC,eAAO,MAAM,kBAAkB,GAAU,MAAM,MAAM,EAAE,aAAa,MAAM,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAevH,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,aAAa,MAAM,GAAG,SAAS,EAC/B,0BAA0B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAC3E,OAAO,CAAC,OAAO,EAAE,CAkBnB,CAAA"}
1
+ {"version":3,"file":"pelias.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/pelias.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC,eAAO,MAAM,kBAAkB,GAAU,MAAM,MAAM,EAAE,aAAa,MAAM,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,EAAE,CAevH,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,aAAa,MAAM,GAAG,SAAS,EAC/B,0BAA0B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAC3E,OAAO,CAAC,OAAO,EAAE,CAkBnB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/pelias.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { Feature } from 'geojson'\r\nimport { getGeocodingConfig } from './config'\r\n\r\n// Geocode Earth and self-hosted Pelias share this dialect; only the base URL and\r\n// the (optional) api_key differ. Responses already match the shape the app expects.\r\n\r\nexport const peliasAutocomplete = async (text: string, countryCode: string | undefined, size: number): Promise<Feature[]> => {\r\n const { geocodeEarthApiKey, peliasBase } = getGeocodingConfig()\r\n\r\n const params = new URLSearchParams({\r\n 'text': text,\r\n 'size': String(size),\r\n })\r\n if (countryCode) params.set('boundary.country', countryCode.toUpperCase())\r\n if (geocodeEarthApiKey) params.set('api_key', geocodeEarthApiKey)\r\n\r\n const response = await fetch(`${peliasBase}/v1/autocomplete?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const geojson = await response.json()\r\n return geojson.features?.length ? geojson.features : []\r\n}\r\n\r\nexport const peliasReverse = async (\r\n latitude: string,\r\n longitude: string,\r\n countryCode: string | undefined,\r\n { size, coarse, layers }: { size: number; coarse: boolean; layers?: string },\r\n): Promise<Feature[]> => {\r\n const { geocodeEarthApiKey, peliasBase } = getGeocodingConfig()\r\n\r\n const params = new URLSearchParams({\r\n 'point.lat': latitude,\r\n 'point.lon': longitude,\r\n 'size': String(size),\r\n })\r\n if (countryCode) params.set('boundary.country', countryCode.toUpperCase())\r\n if (coarse) params.set('layers', 'coarse')\r\n else if (layers) params.set('layers', layers)\r\n if (geocodeEarthApiKey) params.set('api_key', geocodeEarthApiKey)\r\n\r\n const response = await fetch(`${peliasBase}/v1/reverse?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const data = await response.json()\r\n return data.features?.length ? data.features : []\r\n}\r\n"],"mappings":"AAIA,SAAS,0BAA0B;AAK5B,MAAM,qBAAqB,OAAO,MAAc,aAAiC,SAAqC;AAT7H;AAUE,QAAM,EAAE,oBAAoB,WAAW,IAAI,mBAAmB;AAE9D,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,QAAQ;AAAA,IACR,QAAQ,OAAO,IAAI;AAAA,EACrB,CAAC;AACD,MAAI,YAAa,QAAO,IAAI,oBAAoB,YAAY,YAAY,CAAC;AACzE,MAAI,mBAAoB,QAAO,IAAI,WAAW,kBAAkB;AAEhE,QAAM,WAAW,MAAM,MAAM,GAAG,UAAU,oBAAoB,MAAM,EAAE;AACtE,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,UAAU,MAAM,SAAS,KAAK;AACpC,WAAO,aAAQ,aAAR,mBAAkB,UAAS,QAAQ,WAAW,CAAC;AACxD;AAEO,MAAM,gBAAgB,OAC3B,UACA,WACA,aACA,EAAE,MAAM,QAAQ,OAAO,MACA;AA/BzB;AAgCE,QAAM,EAAE,oBAAoB,WAAW,IAAI,mBAAmB;AAE9D,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,aAAa;AAAA,IACb,aAAa;AAAA,IACb,QAAQ,OAAO,IAAI;AAAA,EACrB,CAAC;AACD,MAAI,YAAa,QAAO,IAAI,oBAAoB,YAAY,YAAY,CAAC;AACzE,MAAI,OAAQ,QAAO,IAAI,UAAU,QAAQ;AAAA,WAChC,OAAQ,QAAO,IAAI,UAAU,MAAM;AAC5C,MAAI,mBAAoB,QAAO,IAAI,WAAW,kBAAkB;AAEhE,QAAM,WAAW,MAAM,MAAM,GAAG,UAAU,eAAe,MAAM,EAAE;AACjE,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,WAAO,UAAK,aAAL,mBAAe,UAAS,KAAK,WAAW,CAAC;AAClD;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/utils/geocoding/pelias.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { getGeocodingConfig } from './config'\r\n\r\nimport type { Feature } from 'geojson'\r\n\r\n// Geocode Earth and self-hosted Pelias share this dialect; only the base URL and\r\n// the (optional) api_key differ. Responses already match the shape the app expects.\r\n\r\nexport const peliasAutocomplete = async (text: string, countryCode: string | undefined, size: number): Promise<Feature[]> => {\r\n const { geocodeEarthApiKey, peliasBase } = getGeocodingConfig()\r\n\r\n const params = new URLSearchParams({\r\n 'text': text,\r\n 'size': String(size),\r\n })\r\n if (countryCode) params.set('boundary.country', countryCode.toUpperCase())\r\n if (geocodeEarthApiKey) params.set('api_key', geocodeEarthApiKey)\r\n\r\n const response = await fetch(`${peliasBase}/v1/autocomplete?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const geojson = await response.json()\r\n return geojson.features?.length ? geojson.features : []\r\n}\r\n\r\nexport const peliasReverse = async (\r\n latitude: string,\r\n longitude: string,\r\n countryCode: string | undefined,\r\n { size, coarse, layers }: { size: number; coarse: boolean; layers?: string },\r\n): Promise<Feature[]> => {\r\n const { geocodeEarthApiKey, peliasBase } = getGeocodingConfig()\r\n\r\n const params = new URLSearchParams({\r\n 'point.lat': latitude,\r\n 'point.lon': longitude,\r\n 'size': String(size),\r\n })\r\n if (countryCode) params.set('boundary.country', countryCode.toUpperCase())\r\n if (coarse) params.set('layers', 'coarse')\r\n else if (layers) params.set('layers', layers)\r\n if (geocodeEarthApiKey) params.set('api_key', geocodeEarthApiKey)\r\n\r\n const response = await fetch(`${peliasBase}/v1/reverse?${params}`)\r\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`)\r\n\r\n const data = await response.json()\r\n return data.features?.length ? data.features : []\r\n}\r\n"],"mappings":"AAGA,SAAS,0BAA0B;AAO5B,MAAM,qBAAqB,OAAO,MAAc,aAAiC,SAAqC;AAV7H;AAWE,QAAM,EAAE,oBAAoB,WAAW,IAAI,mBAAmB;AAE9D,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,QAAQ;AAAA,IACR,QAAQ,OAAO,IAAI;AAAA,EACrB,CAAC;AACD,MAAI,YAAa,QAAO,IAAI,oBAAoB,YAAY,YAAY,CAAC;AACzE,MAAI,mBAAoB,QAAO,IAAI,WAAW,kBAAkB;AAEhE,QAAM,WAAW,MAAM,MAAM,GAAG,UAAU,oBAAoB,MAAM,EAAE;AACtE,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,UAAU,MAAM,SAAS,KAAK;AACpC,WAAO,aAAQ,aAAR,mBAAkB,UAAS,QAAQ,WAAW,CAAC;AACxD;AAEO,MAAM,gBAAgB,OAC3B,UACA,WACA,aACA,EAAE,MAAM,QAAQ,OAAO,MACA;AAhCzB;AAiCE,QAAM,EAAE,oBAAoB,WAAW,IAAI,mBAAmB;AAE9D,QAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,aAAa;AAAA,IACb,aAAa;AAAA,IACb,QAAQ,OAAO,IAAI;AAAA,EACrB,CAAC;AACD,MAAI,YAAa,QAAO,IAAI,oBAAoB,YAAY,YAAY,CAAC;AACzE,MAAI,OAAQ,QAAO,IAAI,UAAU,QAAQ;AAAA,WAChC,OAAQ,QAAO,IAAI,UAAU,MAAM;AAC5C,MAAI,mBAAoB,QAAO,IAAI,WAAW,kBAAkB;AAEhE,QAAM,WAAW,MAAM,MAAM,GAAG,UAAU,eAAe,MAAM,EAAE;AACjE,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAE1E,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,WAAO,UAAK,aAAL,mBAAe,UAAS,KAAK,WAAW,CAAC;AAClD;","names":[]}
@@ -1,3 +1,3 @@
1
- import maplibregl from 'maplibre-gl';
1
+ import type maplibregl from 'maplibre-gl';
2
2
  export declare function getOsmIdFromLatLng(map: maplibregl.Map, lat: number, lng: number): Promise<number>;
3
3
  //# sourceMappingURL=getOsmIdFromMartin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getOsmIdFromMartin.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdFromMartin.ts"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,aAAa,CAAA;AAEpC,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,UAAU,CAAC,GAAG,EACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
1
+ {"version":3,"file":"getOsmIdFromMartin.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdFromMartin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,UAAU,MAAM,aAAa,CAAA;AAEzC,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,UAAU,CAAC,GAAG,EACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdFromMartin.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport maplibregl from 'maplibre-gl' // or 'mapbox-gl'\r\n\r\nexport async function getOsmIdFromLatLng(\r\n map: maplibregl.Map,\r\n lat: number,\r\n lng: number,\r\n): Promise<number> {\r\n // Fly to the location with 1 second duration\r\n map.flyTo({ center: [lng, lat], zoom: 18, duration: 1000 })\r\n\r\n // Wait 2 seconds before querying features\r\n await new Promise(resolve => setTimeout(resolve, 2000))\r\n\r\n // Convert lat/lng to pixel coordinates\r\n const point = map.project([lng, lat])\r\n // Query features at the point\r\n const features = map.queryRenderedFeatures(point)\r\n\r\n // Find the first feature with osm_id\r\n const feature = features.find(f => f.properties && f.properties.osm_id)\r\n\r\n if (feature) {\r\n // Ensure osm_id is a number\r\n const osmId = Number(feature.properties.osm_id)\r\n if (isNaN(osmId)) {\r\n throw new TypeError('osm_id is not a valid number')\r\n }\r\n else {\r\n return osmId\r\n }\r\n }\r\n else {\r\n throw new Error('No feature with osm_id found at the given location')\r\n }\r\n}\r\n"],"mappings":"AAKA,eAAsB,mBACpB,KACA,KACA,KACiB;AAEjB,MAAI,MAAM,EAAE,QAAQ,CAAC,KAAK,GAAG,GAAG,MAAM,IAAI,UAAU,IAAK,CAAC;AAG1D,QAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,GAAI,CAAC;AAGtD,QAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;AAEpC,QAAM,WAAW,IAAI,sBAAsB,KAAK;AAGhD,QAAM,UAAU,SAAS,KAAK,OAAK,EAAE,cAAc,EAAE,WAAW,MAAM;AAEtE,MAAI,SAAS;AAEX,UAAM,QAAQ,OAAO,QAAQ,WAAW,MAAM;AAC9C,QAAI,MAAM,KAAK,GAAG;AAChB,YAAM,IAAI,UAAU,8BAA8B;AAAA,IACpD,OACK;AACH,aAAO;AAAA,IACT;AAAA,EACF,OACK;AACH,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdFromMartin.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type maplibregl from 'maplibre-gl' // or 'mapbox-gl'\r\n\r\nexport async function getOsmIdFromLatLng(\r\n map: maplibregl.Map,\r\n lat: number,\r\n lng: number,\r\n): Promise<number> {\r\n // Fly to the location with 1 second duration\r\n map.flyTo({ center: [lng, lat], zoom: 18, duration: 1000 })\r\n\r\n // Wait 2 seconds before querying features\r\n await new Promise(resolve => setTimeout(resolve, 2000))\r\n\r\n // Convert lat/lng to pixel coordinates\r\n const point = map.project([lng, lat])\r\n // Query features at the point\r\n const features = map.queryRenderedFeatures(point)\r\n\r\n // Find the first feature with osm_id\r\n const feature = features.find(f => f.properties && f.properties.osm_id)\r\n\r\n if (feature) {\r\n // Ensure osm_id is a number\r\n const osmId = Number(feature.properties.osm_id)\r\n if (isNaN(osmId)) {\r\n throw new TypeError('osm_id is not a valid number')\r\n }\r\n else {\r\n return osmId\r\n }\r\n }\r\n else {\r\n throw new Error('No feature with osm_id found at the given location')\r\n }\r\n}\r\n"],"mappings":"AAKA,eAAsB,mBACpB,KACA,KACA,KACiB;AAEjB,MAAI,MAAM,EAAE,QAAQ,CAAC,KAAK,GAAG,GAAG,MAAM,IAAI,UAAU,IAAK,CAAC;AAG1D,QAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,GAAI,CAAC;AAGtD,QAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;AAEpC,QAAM,WAAW,IAAI,sBAAsB,KAAK;AAGhD,QAAM,UAAU,SAAS,KAAK,OAAK,EAAE,cAAc,EAAE,WAAW,MAAM;AAEtE,MAAI,SAAS;AAEX,UAAM,QAAQ,OAAO,QAAQ,WAAW,MAAM;AAC9C,QAAI,MAAM,KAAK,GAAG;AAChB,YAAM,IAAI,UAAU,8BAA8B;AAAA,IACpD,OACK;AACH,aAAO;AAAA,IACT;AAAA,EACF,OACK;AACH,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"getOsmIdbyCoordinates.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdbyCoordinates.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgDxB"}
1
+ {"version":3,"file":"getOsmIdbyCoordinates.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdbyCoordinates.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6CxB"}
@@ -7,7 +7,6 @@ async function getOsmId(latitude, longitude) {
7
7
  const headers = {
8
8
  "User-Agent": "CDT-NA/1.0 (narellano@cims.carleton.ca)"
9
9
  };
10
- console.log(url.toString());
11
10
  await new Promise((resolve) => setTimeout(resolve, 2e3));
12
11
  try {
13
12
  const response = await fetch(url.toString(), { headers });
@@ -16,7 +15,6 @@ async function getOsmId(latitude, longitude) {
16
15
  return null;
17
16
  }
18
17
  const data = await response.json();
19
- console.log("Nominatim response:", data);
20
18
  if (data && (typeof data.osm_id === "string" || typeof data.osm_id === "number")) {
21
19
  const osmIdNum = Number(data.osm_id);
22
20
  if (isNaN(osmIdNum)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdbyCoordinates.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nexport async function getOsmId(\r\n latitude: number,\r\n longitude: number,\r\n): Promise<number | null> {\r\n const nominatimApiUrl = 'https://nominatim.openstreetmap.org/reverse'\r\n\r\n const url = new URL(nominatimApiUrl)\r\n url.searchParams.append('format', 'json')\r\n url.searchParams.append('lat', latitude.toString())\r\n url.searchParams.append('lon', longitude.toString())\r\n\r\n // Set User-Agent and Referer headers\r\n const headers = {\r\n 'User-Agent': 'CDT-NA/1.0 (narellano@cims.carleton.ca)',\r\n }\r\n\r\n console.log(url.toString())\r\n\r\n // Wait at least 1000ms between requests\r\n await new Promise(resolve => setTimeout(resolve, 2000))\r\n\r\n try {\r\n const response = await fetch(url.toString(), { headers })\r\n\r\n if (!response.ok) {\r\n console.error(`HTTP error! Status: ${response.status}`)\r\n return null\r\n }\r\n\r\n const data = await response.json()\r\n console.log('Nominatim response:', data) // Debug: see full response\r\n\r\n if (data && (typeof data.osm_id === 'string' || typeof data.osm_id === 'number')) {\r\n const osmIdNum = Number(data.osm_id)\r\n if (isNaN(osmIdNum)) {\r\n console.warn('OSM ID is not a valid number:', data.osm_id)\r\n return null\r\n }\r\n else {\r\n return osmIdNum\r\n }\r\n }\r\n else {\r\n console.warn('No OSM ID found for the given coordinates in the response:', data)\r\n return null\r\n }\r\n }\r\n catch (error) {\r\n console.error('Error fetching OSM ID:', error)\r\n return null\r\n }\r\n}\r\n\r\n// Attribution: Data © OpenStreetMap contributors, ODbL license.\r\n"],"mappings":"AAGA,eAAsB,SACpB,UACA,WACwB;AACxB,QAAM,kBAAkB;AAExB,QAAM,MAAM,IAAI,IAAI,eAAe;AACnC,MAAI,aAAa,OAAO,UAAU,MAAM;AACxC,MAAI,aAAa,OAAO,OAAO,SAAS,SAAS,CAAC;AAClD,MAAI,aAAa,OAAO,OAAO,UAAU,SAAS,CAAC;AAGnD,QAAM,UAAU;AAAA,IACd,cAAc;AAAA,EAChB;AAEA,UAAQ,IAAI,IAAI,SAAS,CAAC;AAG1B,QAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,GAAI,CAAC;AAEtD,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,IAAI,SAAS,GAAG,EAAE,QAAQ,CAAC;AAExD,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,uBAAuB,SAAS,MAAM,EAAE;AACtD,aAAO;AAAA,IACT;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAQ,IAAI,uBAAuB,IAAI;AAEvC,QAAI,SAAS,OAAO,KAAK,WAAW,YAAY,OAAO,KAAK,WAAW,WAAW;AAChF,YAAM,WAAW,OAAO,KAAK,MAAM;AACnC,UAAI,MAAM,QAAQ,GAAG;AACnB,gBAAQ,KAAK,iCAAiC,KAAK,MAAM;AACzD,eAAO;AAAA,MACT,OACK;AACH,eAAO;AAAA,MACT;AAAA,IACF,OACK;AACH,cAAQ,KAAK,8DAA8D,IAAI;AAC/E,aAAO;AAAA,IACT;AAAA,EACF,SACO,OAAO;AACZ,YAAQ,MAAM,0BAA0B,KAAK;AAC7C,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/core/components/viewers/map/utils/getOsmIdbyCoordinates.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nexport async function getOsmId(\r\n latitude: number,\r\n longitude: number,\r\n): Promise<number | null> {\r\n const nominatimApiUrl = 'https://nominatim.openstreetmap.org/reverse'\r\n\r\n const url = new URL(nominatimApiUrl)\r\n url.searchParams.append('format', 'json')\r\n url.searchParams.append('lat', latitude.toString())\r\n url.searchParams.append('lon', longitude.toString())\r\n\r\n // Set User-Agent and Referer headers\r\n const headers = {\r\n 'User-Agent': 'CDT-NA/1.0 (narellano@cims.carleton.ca)',\r\n }\r\n\r\n // Wait at least 1000ms between requests\r\n await new Promise(resolve => setTimeout(resolve, 2000))\r\n\r\n try {\r\n const response = await fetch(url.toString(), { headers })\r\n\r\n if (!response.ok) {\r\n console.error(`HTTP error! Status: ${response.status}`)\r\n return null\r\n }\r\n\r\n const data = await response.json()\r\n\r\n if (data && (typeof data.osm_id === 'string' || typeof data.osm_id === 'number')) {\r\n const osmIdNum = Number(data.osm_id)\r\n if (isNaN(osmIdNum)) {\r\n console.warn('OSM ID is not a valid number:', data.osm_id)\r\n return null\r\n }\r\n else {\r\n return osmIdNum\r\n }\r\n }\r\n else {\r\n console.warn('No OSM ID found for the given coordinates in the response:', data)\r\n return null\r\n }\r\n }\r\n catch (error) {\r\n console.error('Error fetching OSM ID:', error)\r\n return null\r\n }\r\n}\r\n\r\n// Attribution: Data © OpenStreetMap contributors, ODbL license.\r\n"],"mappings":"AAGA,eAAsB,SACpB,UACA,WACwB;AACxB,QAAM,kBAAkB;AAExB,QAAM,MAAM,IAAI,IAAI,eAAe;AACnC,MAAI,aAAa,OAAO,UAAU,MAAM;AACxC,MAAI,aAAa,OAAO,OAAO,SAAS,SAAS,CAAC;AAClD,MAAI,aAAa,OAAO,OAAO,UAAU,SAAS,CAAC;AAGnD,QAAM,UAAU;AAAA,IACd,cAAc;AAAA,EAChB;AAGA,QAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,GAAI,CAAC;AAEtD,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,IAAI,SAAS,GAAG,EAAE,QAAQ,CAAC;AAExD,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,uBAAuB,SAAS,MAAM,EAAE;AACtD,aAAO;AAAA,IACT;AAEA,UAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,QAAI,SAAS,OAAO,KAAK,WAAW,YAAY,OAAO,KAAK,WAAW,WAAW;AAChF,YAAM,WAAW,OAAO,KAAK,MAAM;AACnC,UAAI,MAAM,QAAQ,GAAG;AACnB,gBAAQ,KAAK,iCAAiC,KAAK,MAAM;AACzD,eAAO;AAAA,MACT,OACK;AACH,eAAO;AAAA,MACT;AAAA,IACF,OACK;AACH,cAAQ,KAAK,8DAA8D,IAAI;AAC/E,aAAO;AAAA,IACT;AAAA,EACF,SACO,OAAO;AACZ,YAAQ,MAAM,0BAA0B,KAAK;AAC7C,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloudToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudToolbar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,wBAAgB,iBAAiB,sBAEhC"}
1
+ {"version":3,"file":"PointCloudToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudToolbar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,wBAAgB,iBAAiB,sBAEhC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { pointcloudToolbarTools } from "./src/tools";
4
3
  import { ToolbarBody } from "../../ToolbarBody";
4
+ import { pointcloudToolbarTools } from "./src/tools";
5
5
  function PointCloudToolbar() {
6
6
  return /* @__PURE__ */ jsx(ToolbarBody, { viewer: "pointcloud", tools: pointcloudToolbarTools() });
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudToolbar.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\nimport { pointcloudToolbarTools } from './src/tools'\r\nimport { ToolbarBody } from '../../ToolbarBody'\r\n\r\nexport function PointCloudToolbar() {\r\n return <ToolbarBody viewer=\"pointcloud\" tools={pointcloudToolbarTools()} />\r\n}\r\n"],"mappings":";AAUS;AAJT,SAAS,8BAA8B;AACvC,SAAS,mBAAmB;AAErB,SAAS,oBAAoB;AAClC,SAAO,oBAAC,eAAY,QAAO,cAAa,OAAO,uBAAuB,GAAG;AAC3E;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudToolbar.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\n\r\nimport { ToolbarBody } from '../../ToolbarBody'\r\n\r\nimport { pointcloudToolbarTools } from './src/tools'\r\n\r\nexport function PointCloudToolbar() {\r\n return <ToolbarBody viewer=\"pointcloud\" tools={pointcloudToolbarTools()} />\r\n}\r\n"],"mappings":";AAYS;AALT,SAAS,mBAAmB;AAE5B,SAAS,8BAA8B;AAEhC,SAAS,oBAAoB;AAClC,SAAO,oBAAC,eAAY,QAAO,cAAa,OAAO,uBAAuB,GAAG;AAC3E;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloudViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudViewer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,wBAAgB,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,qBAuOnF"}
1
+ {"version":3,"file":"PointCloudViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudViewer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B,wBAAgB,gBAAgB,CAAC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,qBAuOnF"}
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
3
  import { useSearchParams } from "next/navigation";
5
- import { loadAllAssets } from "./utils/potreeLoader";
4
+ import * as React from "react";
5
+ import { useFilesByBuildingId } from "../../../hooks/files/files";
6
6
  import { BuildingsContext, PointCloudContext } from "../../../store";
7
- import { restoreCameraFromUrl } from "./utils/restoreCameraFromUrl";
7
+ import { usePointCloudCoordinateSystem } from "../useCoordinateSystem";
8
8
  import { PointCloudLoadingState } from "./src/PointCloudLoadingState";
9
- import { useFilesByBuildingId } from "../../../hooks/files/files";
10
9
  import { ViewportGizmo } from "./src/ViewportGizmo";
11
- import { usePointCloudCoordinateSystem } from "../useCoordinateSystem";
10
+ import { loadAllAssets } from "./utils/potreeLoader";
11
+ import { restoreCameraFromUrl } from "./utils/restoreCameraFromUrl";
12
12
  function PointCloudViewer({ pointcloudApiUrl }) {
13
13
  usePointCloudCoordinateSystem();
14
14
  const API_BASE = pointcloudApiUrl != null ? pointcloudApiUrl : "http://localhost:5101";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudViewer.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from \"react\";\r\nimport * as THREE from \"three\";\r\nimport { useSearchParams } from \"next/navigation\";\r\nimport { loadAllAssets } from \"./utils/potreeLoader\";\r\nimport { BuildingsContext, PointCloudContext } from '../../../store'\r\n// import { useAppConfigContext } from '../../../store/AppConfig/context'\r\nimport { restoreCameraFromUrl } from \"./utils/restoreCameraFromUrl\";\r\nimport { PointCloudLoadingState } from \"./src/PointCloudLoadingState\";\r\nimport { useFilesByBuildingId } from '../../../hooks/files/files'\r\nimport { ViewportGizmo } from './src/ViewportGizmo';\r\nimport { usePointCloudCoordinateSystem } from '../useCoordinateSystem';\r\n\r\n\r\nexport function PointCloudViewer({ pointcloudApiUrl }: { pointcloudApiUrl?: string }) {\r\n // Enforce Z-up coordinate system for Potree. Resets to Y-up on unmount\r\n // so the BIM viewer doesn't inherit Z-up when switching viewers.\r\n usePointCloudCoordinateSystem();\r\n const API_BASE = pointcloudApiUrl ?? 'http://localhost:5101'\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const viewerRef = React.useRef<any | null>(null);\r\n const gizmoRef = React.useRef<ViewportGizmo | null>(null);\r\n // Tracks Potree point cloud objects keyed by point cloud ID\r\n const loadedCloudsRef = React.useRef<Map<string, any>>(new Map());\r\n // IDs currently being fetched/loaded — prevents duplicate loads while async is in-flight\r\n const pendingIdsRef = React.useRef<Set<string>>(new Set());\r\n const cameraRestoredRef = React.useRef(false);\r\n\r\n const { state: pointCloudState, dispatch: pointCloudDispatch } = React.useContext(PointCloudContext)\r\n const PointCloudGlobalState = pointCloudState.pointcloud\r\n\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n const { building } = buildingState.buildings\r\n\r\n const searchParams = useSearchParams()\r\n\r\n // Get files for the building to check if there are LAZ/LAS files\r\n const { files, isError: filesError } = useFilesByBuildingId(building?.id)\r\n const hasPointCloudFiles = React.useMemo(() =>\r\n !filesError && files.some(file => {\r\n const ext = file.extension?.toLowerCase()\r\n if (!ext) return false\r\n return ext === \"laz\" || ext === \"las\"\r\n }),\r\n [files, filesError])\r\n\r\n // --- Load CSS/JS assets once\r\n React.useEffect(() => {\r\n (async () => {\r\n try {\r\n await loadAllAssets()\r\n pointCloudDispatch({ type: \"SET_READY\", payload: { ready: true } })\r\n }\r\n catch (err) {\r\n console.error(\"PointCloudViewer - Failed to load assets\", err)\r\n }\r\n })();\r\n }, []);\r\n\r\n // --- Init viewer once when ready. Separate from cloud loading so the viewer\r\n // persists across toggle on/off of individual point clouds.\r\n React.useEffect(() => {\r\n if (!PointCloudGlobalState.ready || !containerRef.current || !(window as any)?.Potree) return;\r\n\r\n const Potree = (window as any).Potree;\r\n const el = containerRef.current;\r\n\r\n // Clear tracking state since we're creating a fresh viewer\r\n loadedCloudsRef.current.clear();\r\n pendingIdsRef.current.clear();\r\n cameraRestoredRef.current = false;\r\n\r\n const viewer = new Potree.Viewer(el);\r\n viewerRef.current = viewer;\r\n\r\n viewer.setEDLEnabled(true);\r\n viewer.setFOV(60);\r\n viewer.setPointBudget(10_000_000);\r\n viewer.loadSettingsFromURL();\r\n viewer.setBackground(\"white\");\r\n\r\n const gizmo = new ViewportGizmo(viewer);\r\n gizmoRef.current = gizmo;\r\n gizmo.enabled = true;\r\n\r\n pointCloudDispatch({\r\n type: \"INIT\",\r\n payload: {\r\n initialState: {\r\n ready: true,\r\n viewer: viewerRef.current,\r\n }\r\n }\r\n })\r\n\r\n return () => {\r\n try {\r\n if (gizmoRef.current) {\r\n gizmoRef.current.dispose();\r\n gizmoRef.current = null;\r\n }\r\n const v = viewerRef.current;\r\n // Potree's render loop re-schedules itself via requestAnimationFrame with no stop API;\r\n // shadow it with a no-op so it halts on unmount instead of running forever against a\r\n // disposed renderer (otherwise a new loop accumulates on every visit).\r\n if (v) {\r\n v.loop = () => { };\r\n v.update = () => { };\r\n }\r\n if (v?.scene?.pointclouds) {\r\n v.scene.pointclouds.forEach((pc: any) => {\r\n v.scene.removePointCloud?.(pc) ?? v.scene.scene?.remove?.(pc);\r\n });\r\n }\r\n v?.renderer?.dispose?.();\r\n } catch { }\r\n loadedCloudsRef.current.clear();\r\n pendingIdsRef.current.clear();\r\n viewerRef.current = null;\r\n el.innerHTML = \"\";\r\n };\r\n }, [PointCloudGlobalState.ready]);\r\n\r\n // --- Add/remove point clouds whenever loadedPointCloudIds changes or the\r\n // viewer is (re)initialized (PointCloudGlobalState.viewer updates on INIT).\r\n React.useEffect(() => {\r\n const viewer = viewerRef.current;\r\n if (!PointCloudGlobalState.ready || !viewer) return;\r\n\r\n const Potree = (window as any).Potree;\r\n if (!Potree) return;\r\n\r\n const currentIds = new Set(PointCloudGlobalState.loadedPointCloudIds);\r\n const alreadyLoadedIds = new Set(loadedCloudsRef.current.keys());\r\n\r\n // Remove point clouds no longer in the list.\r\n // Potree classic has no removePointCloud() — splice from the internal\r\n // pointclouds array and remove from the Three.js scene separately.\r\n for (const id of alreadyLoadedIds) {\r\n if (!currentIds.has(id)) {\r\n const pc = loadedCloudsRef.current.get(id);\r\n if (pc) {\r\n try {\r\n const pcs: any[] = viewer.scene.pointclouds ?? [];\r\n const idx = pcs.indexOf(pc);\r\n if (idx !== -1) pcs.splice(idx, 1);\r\n viewer.scene.scene?.remove(pc);\r\n } catch { }\r\n loadedCloudsRef.current.delete(id);\r\n pendingIdsRef.current.delete(id);\r\n try { viewer.fitToScreen(); } catch { }\r\n }\r\n }\r\n }\r\n\r\n // Add newly requested point clouds.\r\n // Skip if already tracked in loadedCloudsRef OR still in-flight in pendingIdsRef\r\n // — prevents duplicate loads when Effect 2 fires again before the callback runs.\r\n for (const id of currentIds) {\r\n if (alreadyLoadedIds.has(id) || pendingIdsRef.current.has(id)) continue;\r\n\r\n pendingIdsRef.current.add(id);\r\n ; (async () => {\r\n try {\r\n const res = await fetch(`${API_BASE}/point-cloud/${encodeURIComponent(id)}`);\r\n const data = await res.json();\r\n const url = `${API_BASE}/private/${data.bucket}/${data.potreeMetadataFileKey}`;\r\n\r\n Potree.loadPointCloud(url, id, (e: any) => {\r\n pendingIdsRef.current.delete(id);\r\n // Bail if the viewer was torn down (or re-init'd) while this load was in flight —\r\n // the init-effect cleanup nulls viewerRef, so this guard avoids attaching to a dead viewer.\r\n if (viewerRef.current !== viewer) return;\r\n try {\r\n viewer.scene.addPointCloud(e.pointcloud);\r\n loadedCloudsRef.current.set(id, e.pointcloud);\r\n\r\n const mat = e.pointcloud.material;\r\n mat.size = 1;\r\n mat.pointSizeType = Potree.PointSizeType.ADAPTIVE;\r\n\r\n const restored = !cameraRestoredRef.current && restoreCameraFromUrl(viewer, searchParams)\r\n cameraRestoredRef.current = true;\r\n if (!restored) viewer.fitToScreen();\r\n\r\n if (gizmoRef.current) {\r\n gizmoRef.current.add();\r\n }\r\n } catch (err) {\r\n console.error(\"[PointCloudViewer] Error adding point cloud\", err);\r\n }\r\n });\r\n } catch (err) {\r\n pendingIdsRef.current.delete(id);\r\n console.error(\"[PointCloudViewer] Error fetching point cloud metadata\", err);\r\n }\r\n })();\r\n }\r\n }, [PointCloudGlobalState.loadedPointCloudIds, PointCloudGlobalState.viewer, PointCloudGlobalState.ready]);\r\n\r\n const { loadedPointCloudIds } = PointCloudGlobalState;\r\n const hasLoadedClouds = loadedPointCloudIds.length > 0;\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n left: 0,\r\n top: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n >\r\n {/* Potree container — always rendered so the viewer can measure its dimensions on init.\r\n PointCloudLoadingState sits above it via z-index when no clouds are loaded. */}\r\n <div>\r\n <div\r\n className={`pointer-events-none absolute inset-0 `}\r\n style={{\r\n zIndex: 9,\r\n background: 'radial-gradient(circle at center, rgba(220,220,220,0) 0%, rgba(220,220,220,0) 50%, rgba(220,220,220,0.9) 100%)',\r\n mixBlendMode: 'multiply'\r\n }}\r\n />\r\n <div\r\n ref={containerRef}\r\n className=\"potree_container\"\r\n style={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundSize: \"cover\",\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Show PointCloudLoadingState only when there are no point cloud files uploaded at all.\r\n Rendered after the container so it layers on top (higher DOM order = higher paint order). */}\r\n {!hasPointCloudFiles && !hasLoadedClouds && (\r\n <div className=\"absolute inset-0\" style={{ zIndex: 10 }}>\r\n <PointCloudLoadingState pointcloudApiUrl={pointcloudApiUrl} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
1
+ {"version":3,"sources":["../../../../../src/core/components/viewers/pointcloud/PointCloudViewer.tsx"],"sourcesContent":["\"use client\"\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { useSearchParams } from \"next/navigation\";\r\nimport * as React from \"react\";\r\nimport * as THREE from \"three\";\r\n\r\nimport { useFilesByBuildingId } from '../../../hooks/files/files'\r\nimport { BuildingsContext, PointCloudContext } from '../../../store'\r\nimport { usePointCloudCoordinateSystem } from '../useCoordinateSystem';\r\n\r\nimport { PointCloudLoadingState } from \"./src/PointCloudLoadingState\";\r\nimport { ViewportGizmo } from './src/ViewportGizmo';\r\nimport { loadAllAssets } from \"./utils/potreeLoader\";\r\n\r\n\r\n// import { useAppConfigContext } from '../../../store/AppConfig/context'\r\nimport { restoreCameraFromUrl } from \"./utils/restoreCameraFromUrl\";\r\n\r\n\r\n\r\n\r\n\r\nexport function PointCloudViewer({ pointcloudApiUrl }: { pointcloudApiUrl?: string }) {\r\n // Enforce Z-up coordinate system for Potree. Resets to Y-up on unmount\r\n // so the BIM viewer doesn't inherit Z-up when switching viewers.\r\n usePointCloudCoordinateSystem();\r\n const API_BASE = pointcloudApiUrl ?? 'http://localhost:5101'\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const viewerRef = React.useRef<any | null>(null);\r\n const gizmoRef = React.useRef<ViewportGizmo | null>(null);\r\n // Tracks Potree point cloud objects keyed by point cloud ID\r\n const loadedCloudsRef = React.useRef<Map<string, any>>(new Map());\r\n // IDs currently being fetched/loaded — prevents duplicate loads while async is in-flight\r\n const pendingIdsRef = React.useRef<Set<string>>(new Set());\r\n const cameraRestoredRef = React.useRef(false);\r\n\r\n const { state: pointCloudState, dispatch: pointCloudDispatch } = React.useContext(PointCloudContext)\r\n const PointCloudGlobalState = pointCloudState.pointcloud\r\n\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n const { building } = buildingState.buildings\r\n\r\n const searchParams = useSearchParams()\r\n\r\n // Get files for the building to check if there are LAZ/LAS files\r\n const { files, isError: filesError } = useFilesByBuildingId(building?.id)\r\n const hasPointCloudFiles = React.useMemo(() =>\r\n !filesError && files.some(file => {\r\n const ext = file.extension?.toLowerCase()\r\n if (!ext) return false\r\n return ext === \"laz\" || ext === \"las\"\r\n }),\r\n [files, filesError])\r\n\r\n // --- Load CSS/JS assets once\r\n React.useEffect(() => {\r\n (async () => {\r\n try {\r\n await loadAllAssets()\r\n pointCloudDispatch({ type: \"SET_READY\", payload: { ready: true } })\r\n }\r\n catch (err) {\r\n console.error(\"PointCloudViewer - Failed to load assets\", err)\r\n }\r\n })();\r\n }, []);\r\n\r\n // --- Init viewer once when ready. Separate from cloud loading so the viewer\r\n // persists across toggle on/off of individual point clouds.\r\n React.useEffect(() => {\r\n if (!PointCloudGlobalState.ready || !containerRef.current || !(window as any)?.Potree) return;\r\n\r\n const Potree = (window as any).Potree;\r\n const el = containerRef.current;\r\n\r\n // Clear tracking state since we're creating a fresh viewer\r\n loadedCloudsRef.current.clear();\r\n pendingIdsRef.current.clear();\r\n cameraRestoredRef.current = false;\r\n\r\n const viewer = new Potree.Viewer(el);\r\n viewerRef.current = viewer;\r\n\r\n viewer.setEDLEnabled(true);\r\n viewer.setFOV(60);\r\n viewer.setPointBudget(10_000_000);\r\n viewer.loadSettingsFromURL();\r\n viewer.setBackground(\"white\");\r\n\r\n const gizmo = new ViewportGizmo(viewer);\r\n gizmoRef.current = gizmo;\r\n gizmo.enabled = true;\r\n\r\n pointCloudDispatch({\r\n type: \"INIT\",\r\n payload: {\r\n initialState: {\r\n ready: true,\r\n viewer: viewerRef.current,\r\n }\r\n }\r\n })\r\n\r\n return () => {\r\n try {\r\n if (gizmoRef.current) {\r\n gizmoRef.current.dispose();\r\n gizmoRef.current = null;\r\n }\r\n const v = viewerRef.current;\r\n // Potree's render loop re-schedules itself via requestAnimationFrame with no stop API;\r\n // shadow it with a no-op so it halts on unmount instead of running forever against a\r\n // disposed renderer (otherwise a new loop accumulates on every visit).\r\n if (v) {\r\n v.loop = () => { };\r\n v.update = () => { };\r\n }\r\n if (v?.scene?.pointclouds) {\r\n v.scene.pointclouds.forEach((pc: any) => {\r\n v.scene.removePointCloud?.(pc) ?? v.scene.scene?.remove?.(pc);\r\n });\r\n }\r\n v?.renderer?.dispose?.();\r\n } catch { }\r\n loadedCloudsRef.current.clear();\r\n pendingIdsRef.current.clear();\r\n viewerRef.current = null;\r\n el.innerHTML = \"\";\r\n };\r\n }, [PointCloudGlobalState.ready]);\r\n\r\n // --- Add/remove point clouds whenever loadedPointCloudIds changes or the\r\n // viewer is (re)initialized (PointCloudGlobalState.viewer updates on INIT).\r\n React.useEffect(() => {\r\n const viewer = viewerRef.current;\r\n if (!PointCloudGlobalState.ready || !viewer) return;\r\n\r\n const Potree = (window as any).Potree;\r\n if (!Potree) return;\r\n\r\n const currentIds = new Set(PointCloudGlobalState.loadedPointCloudIds);\r\n const alreadyLoadedIds = new Set(loadedCloudsRef.current.keys());\r\n\r\n // Remove point clouds no longer in the list.\r\n // Potree classic has no removePointCloud() — splice from the internal\r\n // pointclouds array and remove from the Three.js scene separately.\r\n for (const id of alreadyLoadedIds) {\r\n if (!currentIds.has(id)) {\r\n const pc = loadedCloudsRef.current.get(id);\r\n if (pc) {\r\n try {\r\n const pcs: any[] = viewer.scene.pointclouds ?? [];\r\n const idx = pcs.indexOf(pc);\r\n if (idx !== -1) pcs.splice(idx, 1);\r\n viewer.scene.scene?.remove(pc);\r\n } catch { }\r\n loadedCloudsRef.current.delete(id);\r\n pendingIdsRef.current.delete(id);\r\n try { viewer.fitToScreen(); } catch { }\r\n }\r\n }\r\n }\r\n\r\n // Add newly requested point clouds.\r\n // Skip if already tracked in loadedCloudsRef OR still in-flight in pendingIdsRef\r\n // — prevents duplicate loads when Effect 2 fires again before the callback runs.\r\n for (const id of currentIds) {\r\n if (alreadyLoadedIds.has(id) || pendingIdsRef.current.has(id)) continue;\r\n\r\n pendingIdsRef.current.add(id);\r\n ; (async () => {\r\n try {\r\n const res = await fetch(`${API_BASE}/point-cloud/${encodeURIComponent(id)}`);\r\n const data = await res.json();\r\n const url = `${API_BASE}/private/${data.bucket}/${data.potreeMetadataFileKey}`;\r\n\r\n Potree.loadPointCloud(url, id, (e: any) => {\r\n pendingIdsRef.current.delete(id);\r\n // Bail if the viewer was torn down (or re-init'd) while this load was in flight —\r\n // the init-effect cleanup nulls viewerRef, so this guard avoids attaching to a dead viewer.\r\n if (viewerRef.current !== viewer) return;\r\n try {\r\n viewer.scene.addPointCloud(e.pointcloud);\r\n loadedCloudsRef.current.set(id, e.pointcloud);\r\n\r\n const mat = e.pointcloud.material;\r\n mat.size = 1;\r\n mat.pointSizeType = Potree.PointSizeType.ADAPTIVE;\r\n\r\n const restored = !cameraRestoredRef.current && restoreCameraFromUrl(viewer, searchParams)\r\n cameraRestoredRef.current = true;\r\n if (!restored) viewer.fitToScreen();\r\n\r\n if (gizmoRef.current) {\r\n gizmoRef.current.add();\r\n }\r\n } catch (err) {\r\n console.error(\"[PointCloudViewer] Error adding point cloud\", err);\r\n }\r\n });\r\n } catch (err) {\r\n pendingIdsRef.current.delete(id);\r\n console.error(\"[PointCloudViewer] Error fetching point cloud metadata\", err);\r\n }\r\n })();\r\n }\r\n }, [PointCloudGlobalState.loadedPointCloudIds, PointCloudGlobalState.viewer, PointCloudGlobalState.ready]);\r\n\r\n const { loadedPointCloudIds } = PointCloudGlobalState;\r\n const hasLoadedClouds = loadedPointCloudIds.length > 0;\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"absolute\",\r\n left: 0,\r\n top: 0,\r\n width: \"100%\",\r\n height: \"100%\",\r\n }}\r\n >\r\n {/* Potree container — always rendered so the viewer can measure its dimensions on init.\r\n PointCloudLoadingState sits above it via z-index when no clouds are loaded. */}\r\n <div>\r\n <div\r\n className={`pointer-events-none absolute inset-0 `}\r\n style={{\r\n zIndex: 9,\r\n background: 'radial-gradient(circle at center, rgba(220,220,220,0) 0%, rgba(220,220,220,0) 50%, rgba(220,220,220,0.9) 100%)',\r\n mixBlendMode: 'multiply'\r\n }}\r\n />\r\n <div\r\n ref={containerRef}\r\n className=\"potree_container\"\r\n style={{\r\n position: \"absolute\",\r\n inset: 0,\r\n backgroundSize: \"cover\",\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Show PointCloudLoadingState only when there are no point cloud files uploaded at all.\r\n Rendered after the container so it layers on top (higher DOM order = higher paint order). */}\r\n {!hasPointCloudFiles && !hasLoadedClouds && (\r\n <div className=\"absolute inset-0\" style={{ zIndex: 10 }}>\r\n <PointCloudLoadingState pointcloudApiUrl={pointcloudApiUrl} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"mappings":"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","names":["_a","_b","_c"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AA0BzB,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,mBAAmB,GAAG,YAAY,CAAA;AAElH,wBAAgB,sBAAsB,CAAC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,qBAsXzF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,MAAM,OAAO,CAAA;AA4BzB,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,mBAAmB,GAAG,YAAY,CAAA;AAElH,wBAAgB,sBAAsB,CAAC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,qBAsXzF"}
@@ -19,18 +19,18 @@ var __spreadValues = (a, b) => {
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
21
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
22
+ import * as LR from "lucide-react";
23
+ import { useSearchParams, useRouter } from "next/navigation";
24
+ import { useTranslations } from "next-intl";
22
25
  import React from "react";
26
+ import { useBuilding, useBuildings } from "../../../../../hooks/buildings/buildings";
27
+ import { useFilesByBuildingId } from "../../../../../hooks/files/files";
28
+ import { BuildingsContext, usePermissions } from "../../../../../store";
29
+ import { cn } from "../../../../../utils/utils";
23
30
  import { Button } from "../../../../ui/Button";
24
31
  import { Card, CardContent, CardHeader } from "../../../../ui/Card";
25
32
  import { Input } from "../../../../ui/Input";
26
33
  import { LoadingSpinner } from "../../../../ui/LoadingSpinner";
27
- import * as LR from "lucide-react";
28
- import { BuildingsContext, usePermissions } from "../../../../../store";
29
- import { useTranslations } from "next-intl";
30
- import { useFilesByBuildingId } from "../../../../../hooks/files/files";
31
- import { cn } from "../../../../../utils/utils";
32
- import { useSearchParams, useRouter } from "next/navigation";
33
- import { useBuilding, useBuildings } from "../../../../../hooks/buildings/buildings";
34
34
  function PointCloudLoadingState({ pointcloudApiUrl }) {
35
35
  const t = useTranslations("PointCloudLoadingState");
36
36
  const API_BASE = pointcloudApiUrl != null ? pointcloudApiUrl : "http://localhost:5101";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport React from 'react'\r\nimport { Button } from '../../../../ui/Button'\r\nimport { Card, CardContent, CardHeader } from '../../../../ui/Card'\r\nimport { Input } from '../../../../ui/Input'\r\nimport { LoadingSpinner } from '../../../../ui/LoadingSpinner'\r\nimport * as LR from 'lucide-react'\r\nimport { BuildingsContext, usePermissions } from '../../../../../store'\r\n// import { useAppConfigContext } from '../../../../../store/AppConfig/context'\r\nimport { useTranslations } from 'next-intl'\r\nimport { useFilesByBuildingId } from '../../../../../hooks/files/files'\r\nimport type { DbFile } from '../../../../../types/dbTypes'\r\nimport { cn } from '../../../../../utils/utils'\r\nimport { useSearchParams, useRouter } from 'next/navigation'\r\nimport { useBuilding, useBuildings } from '../../../../../hooks/buildings/buildings'\r\nimport { SquareArrowOutUpRight } from 'lucide-react'\r\n\r\ntype CreatePointCloudResponse = {\r\n pointCloud: {\r\n id: string\r\n name: string\r\n }\r\n upload: {\r\n uploadUrl: string\r\n }\r\n}\r\n\r\nexport type pointCloudViewerState = 'opening' | 'loading' | 'ready' | 'error' | 'noPointCloudFiles' | 'noBuilding'\r\n\r\nexport function PointCloudLoadingState({ pointcloudApiUrl }: { pointcloudApiUrl?: string }) {\r\n const t = useTranslations('PointCloudLoadingState')\r\n const API_BASE = pointcloudApiUrl ?? 'http://localhost:5101'\r\n // Permissions\r\n const { ability } = usePermissions()\r\n\r\n const { state: buildingState, dispatch: buildingDispatch } = React.useContext(BuildingsContext)\r\n const { building: storeBuilding } = buildingState.buildings\r\n\r\n const searchParams = useSearchParams()\r\n const buildingId = searchParams.get(\"buildingId\")\r\n const { building: urlBuilding, isLoading: buildingLoading, isError: buildingError } = useBuilding(buildingId ? Number(buildingId) : 0)\r\n const { buildings, isLoading: buildingsLoading } = useBuildings()\r\n\r\n // Determine the current building to use\r\n const building = storeBuilding || urlBuilding\r\n\r\n React.useEffect(() => {\r\n if (!storeBuilding && urlBuilding) {\r\n buildingDispatch({ type: \"SET-CURRENT-BUILDING\", payload: { building: urlBuilding } })\r\n }\r\n }, [urlBuilding, storeBuilding, buildingDispatch])\r\n\r\n const router = useRouter()\r\n const fileInputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n const [currentState, setCurrentState] = React.useState<pointCloudViewerState>('opening')\r\n const [uploading, setUploading] = React.useState(false)\r\n const [searchTerm, setSearchTerm] = React.useState('')\r\n const [searchResults, setSearchResults] = React.useState<any[]>([])\r\n const [selectedBuilding, setSelectedBuilding] = React.useState<any>(null)\r\n \r\n const { files, isLoading: filesLoading } = useFilesByBuildingId(building?.id)\r\n const pointCloudFiles: DbFile[] = React.useMemo(() => (\r\n files.filter(file => {\r\n const ext = file.extension?.toLowerCase()\r\n if (!ext) return false\r\n return ext === \"laz\" || ext === \"las\"\r\n })\r\n ), [files])\r\n\r\n // Fuzzy search function for buildings\r\n const fuzzySearchBuildings = React.useCallback((buildings: any[], searchTerm: string) => {\r\n if (!searchTerm.trim()) return buildings.slice(0, 10)\r\n \r\n const fuzzySearchScore = (search: string, text: string): number => {\r\n if (!search || !text) return 0\r\n const searchLower = search.toLowerCase()\r\n const textLower = text.toLowerCase()\r\n \r\n if (textLower === searchLower) return 1000\r\n if (textLower.startsWith(searchLower)) return 800\r\n if (textLower.includes(searchLower)) return 600\r\n \r\n return 0\r\n }\r\n\r\n return buildings\r\n .map((building) => {\r\n const address = building.buildingAddress || ''\r\n const name = building.buildingName || ''\r\n const id = building.id.toString()\r\n \r\n const addressScore = fuzzySearchScore(searchTerm, address)\r\n const nameScore = fuzzySearchScore(searchTerm, name)\r\n const idScore = fuzzySearchScore(searchTerm, id)\r\n \r\n const maxScore = Math.max(addressScore, nameScore, idScore)\r\n return { ...building, searchScore: maxScore }\r\n })\r\n .filter(building => building.searchScore > 0)\r\n .sort((a, b) => b.searchScore - a.searchScore)\r\n .slice(0, 10)\r\n }, [])\r\n\r\n // Handle search\r\n const handleSearch = React.useCallback((term: string) => {\r\n setSearchTerm(term)\r\n if (buildings) {\r\n setSearchResults(fuzzySearchBuildings(buildings, term))\r\n }\r\n }, [buildings, fuzzySearchBuildings])\r\n\r\n const shouldShow = (currentState === 'opening' || currentState === 'noPointCloudFiles' || currentState === 'noBuilding')\r\n\r\n // Handle initial state transitions\r\n React.useEffect(() => {\r\n // If building is loading, stay in opening state\r\n if (buildingLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If building failed to load or no buildingId provided, show noBuilding state\r\n if (buildingError || (!buildingId && !building)) {\r\n setCurrentState('noBuilding')\r\n return\r\n }\r\n\r\n // If we have a building but files are still loading, stay in opening state\r\n if (building && filesLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If we have a building but no point cloud files, show noPointCloudFiles state\r\n if (building && pointCloudFiles.length === 0) {\r\n setCurrentState('noPointCloudFiles')\r\n return\r\n }\r\n\r\n // We have point cloud files, hide the loading state\r\n if (building && pointCloudFiles.length > 0) {\r\n setCurrentState('ready')\r\n }\r\n }, [building, buildingLoading, buildingError, buildingId, filesLoading, pointCloudFiles.length])\r\n\r\n // Don't render if not visible\r\n if (!shouldShow) {\r\n return null\r\n }\r\n\r\n const handleBuildingSelect = (building: any) => {\r\n const url = new URL(window.location.href)\r\n url.searchParams.set('buildingId', building.id.toString())\r\n buildingDispatch({ type: 'SET-CURRENT-BUILDING', payload: { building } })\r\n setSelectedBuilding(building)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n router.push(url.toString())\r\n }\r\n\r\n // Create point cloud entry\r\n async function createPointCloud(name: string, buildingId: number): Promise<CreatePointCloudResponse> {\r\n const res = await fetch('/api/point-cloud', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ name, buildingId }),\r\n })\r\n\r\n if (!res.ok) {\r\n const msg = await res.text()\r\n throw new Error(`Create point-cloud failed: ${msg || res.status}`)\r\n }\r\n\r\n return res.json()\r\n }\r\n\r\n // Upload to presigned URL\r\n function uploadToPresignedUrl(\r\n url: string,\r\n file: File,\r\n onProgress?: (pct: number) => void\r\n ): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const xhr = new XMLHttpRequest()\r\n xhr.open('PUT', url, true)\r\n\r\n if (onProgress) {\r\n xhr.upload.onprogress = (evt) => {\r\n if (evt.lengthComputable) {\r\n const pct = Math.round((evt.loaded / evt.total) * 100)\r\n onProgress(pct)\r\n }\r\n }\r\n }\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) resolve()\r\n else reject(new Error(`Upload failed with status ${xhr.status}`))\r\n }\r\n\r\n xhr.onerror = () => reject(new Error('Network error during upload'))\r\n xhr.send(file)\r\n } catch (err) {\r\n reject(err)\r\n }\r\n })\r\n }\r\n\r\n const handleFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.target.files\r\n if (!files || files.length === 0) return\r\n\r\n const file = files[0]\r\n const fileName = file.name\r\n const fileExt = fileName.toLowerCase()\r\n\r\n // Validate file extension\r\n if (!fileExt.endsWith('.laz') && !fileExt.endsWith('.las')) {\r\n alert('Please select a LAZ or LAS file.')\r\n return\r\n }\r\n\r\n setUploading(true)\r\n\r\n try {\r\n console.log('Creating point cloud entry...')\r\n const { pointCloud, upload } = await createPointCloud(fileName, building.id)\r\n console.log('Point cloud created:', pointCloud.id)\r\n\r\n console.log('Uploading file...')\r\n await uploadToPresignedUrl(upload.uploadUrl, file, (pct) => {\r\n console.log(`Upload progress: ${pct}%`)\r\n })\r\n console.log('Upload complete!')\r\n\r\n console.log('Starting conversion...')\r\n const convertRes = await fetch(\r\n `${API_BASE}/point-cloud/${encodeURIComponent(String(pointCloud.id))}/convert-to-potree`,\r\n {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ options: { sampling_method: 'poisson' } }),\r\n }\r\n )\r\n if (!convertRes.ok) throw new Error('Failed to start conversion')\r\n console.log('Conversion started!')\r\n\r\n window.location.reload()\r\n }\r\n catch (error) {\r\n console.error('Error uploading point cloud:', error)\r\n alert(\r\n error instanceof Error\r\n ? `Failed to upload: ${error.message}`\r\n : 'Failed to upload point cloud'\r\n )\r\n setUploading(false)\r\n }\r\n }\r\n\r\n const handleUploadClick = () => {\r\n fileInputRef.current?.click()\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"absolute z-10 inset-0 bg-background/50 backdrop-blur-[1px] flex items-center justify-center pointer-events-none\">\r\n <Card className={cn(\"w-[536px] pointer-events-auto flex flex-col justify-start items-center gap-2\")}>\r\n <CardHeader className=\"flex justify-center items-center\">\r\n <div className=\"w-12 h-12 p-2 bg-card rounded-md shadow-sm border border-border flex justify-center items-center\">\r\n {currentState === 'noBuilding' ? (\r\n <LR.Building2 className={cn(\"w-4 h-5 text-foreground\", buildingsLoading && \"animate-pulse\")} strokeWidth={2} />\r\n ) : (\r\n <LR.Grip className={cn(\"w-4 h-5 text-foreground\", currentState === 'opening' && \"animate-pulse\")} strokeWidth={2} />\r\n )}\r\n </div>\r\n </CardHeader>\r\n\r\n <CardContent className=\"self-stretch flex flex-col justify-start items-center gap-6 pt-0\">\r\n <div className=\"self-stretch flex flex-col justify-start items-center gap-2\">\r\n <div className=\"self-stretch text-center text-foreground text-xl font-semibold font-['Inter'] leading-7 flex items-center justify-center gap-2\">\r\n {currentState === 'opening' ? (\r\n <>\r\n {t('openingText')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : currentState === 'noBuilding' ? (\r\n <>\r\n {t('noBuilding')}\r\n </>\r\n ) : uploading ? (\r\n <>\r\n {t('uploading')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : (\r\n t('noPointCloudLoaded')\r\n )}\r\n </div>\r\n {(currentState === 'noPointCloudFiles' || currentState === 'noBuilding') && !uploading && (\r\n <div className=\"self-stretch text-center text-muted-foreground text-sm font-normal font-['Inter'] leading-tight\">\r\n {currentState === 'noBuilding' ? t('selectBuildingHelpText') : t('helpText')}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {currentState === 'noBuilding' && (\r\n <div className=\"self-stretch flex flex-col gap-3 justify-centre items-center\">\r\n {buildingsLoading ? (\r\n <div className=\"flex items-center justify-center gap-2 text-muted-foreground\">\r\n <LoadingSpinner size={16} />\r\n <span>{t('loadingBuildings') || 'Loading buildings...'}</span>\r\n </div>\r\n ) : buildings && buildings.length > 0 ? (\r\n <div className=\"w-full relative\">\r\n {selectedBuilding ? (\r\n <div className=\"relative flex justify-end items-center\">\r\n <Input\r\n type=\"text\"\r\n value={\r\n 'Building: '\r\n + (selectedBuilding.buildingName && selectedBuilding.buildingAddress\r\n ? `${selectedBuilding.buildingName}, ${selectedBuilding.buildingAddress}`\r\n : selectedBuilding.buildingName || selectedBuilding.buildingAddress || `Building ${selectedBuilding.id}`)\r\n }\r\n readOnly\r\n className=\"w-full\"\r\n />\r\n <LR.X \r\n className=\"absolute right-2 cursor-pointer w-4 h-4 text-muted-foreground hover:text-foreground\" \r\n onClick={() => {\r\n setSelectedBuilding(null)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n }} \r\n />\r\n </div>\r\n ) : (\r\n <div className=\"relative\">\r\n <LR.Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4\" />\r\n <Input\r\n placeholder={t('searchBuildings') || 'Search buildings...'}\r\n value={searchTerm}\r\n onChange={(e) => handleSearch(e.target.value)}\r\n className=\"w-full pl-10\"\r\n disabled={!ability.can('read', 'File')}\r\n />\r\n </div>\r\n )}\r\n \r\n {/* Search results dropdown */}\r\n {searchResults.length > 0 && searchTerm !== '' && !selectedBuilding && (\r\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-background border border-border rounded-md shadow-lg max-h-60 overflow-y-auto z-20\">\r\n {searchResults.map(building => (\r\n <div\r\n key={building.id}\r\n className=\"px-3 py-2 text-sm cursor-pointer hover:bg-muted transition-colors flex gap-2 items-center\"\r\n onClick={() => handleBuildingSelect(building)}\r\n >\r\n <LR.SquareArrowOutUpRight className=\"w-3 h-3\" />\r\n {building.buildingName\r\n ? `${building.buildingName}, ${building.buildingAddress}`\r\n : building.buildingAddress || `Building ${building.id}`}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"text-muted-foreground text-center\">\r\n {t('noBuildings') || 'No buildings available'}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {currentState === 'noPointCloudFiles' && (\r\n <div className=\"self-stretch flex justify-center items-center gap-3\">\r\n <Input\r\n ref={fileInputRef}\r\n type=\"file\"\r\n accept=\".laz,.las\"\r\n onChange={handleFileChange}\r\n className=\"hidden\"\r\n />\r\n <Button\r\n onClick={handleUploadClick}\r\n size=\"sm\"\r\n className=\"gap-2\"\r\n disabled={uploading || !ability.can('create', 'File')}\r\n >\r\n <LR.Upload className=\"w-4 h-4\" />\r\n {uploading ? t('uploading') : t('uploadButton')}\r\n </Button>\r\n </div>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["buildings","searchTerm","building","buildingId","files"]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as LR from 'lucide-react'\r\nimport { SquareArrowOutUpRight } from 'lucide-react'\r\nimport { useSearchParams, useRouter } from 'next/navigation'\r\nimport { useTranslations } from 'next-intl'\r\nimport React from 'react'\r\n\r\nimport { useBuilding, useBuildings } from '../../../../../hooks/buildings/buildings'\r\nimport { useFilesByBuildingId } from '../../../../../hooks/files/files'\r\nimport { BuildingsContext, usePermissions } from '../../../../../store'\r\nimport { cn } from '../../../../../utils/utils'\r\nimport { Button } from '../../../../ui/Button'\r\nimport { Card, CardContent, CardHeader } from '../../../../ui/Card'\r\nimport { Input } from '../../../../ui/Input'\r\nimport { LoadingSpinner } from '../../../../ui/LoadingSpinner'\r\n\r\n// import { useAppConfigContext } from '../../../../../store/AppConfig/context'\r\n\r\n\r\nimport type { DbFile } from '../../../../../types/dbTypes'\r\n\r\n\r\n\r\ntype CreatePointCloudResponse = {\r\n pointCloud: {\r\n id: string\r\n name: string\r\n }\r\n upload: {\r\n uploadUrl: string\r\n }\r\n}\r\n\r\nexport type pointCloudViewerState = 'opening' | 'loading' | 'ready' | 'error' | 'noPointCloudFiles' | 'noBuilding'\r\n\r\nexport function PointCloudLoadingState({ pointcloudApiUrl }: { pointcloudApiUrl?: string }) {\r\n const t = useTranslations('PointCloudLoadingState')\r\n const API_BASE = pointcloudApiUrl ?? 'http://localhost:5101'\r\n // Permissions\r\n const { ability } = usePermissions()\r\n\r\n const { state: buildingState, dispatch: buildingDispatch } = React.useContext(BuildingsContext)\r\n const { building: storeBuilding } = buildingState.buildings\r\n\r\n const searchParams = useSearchParams()\r\n const buildingId = searchParams.get(\"buildingId\")\r\n const { building: urlBuilding, isLoading: buildingLoading, isError: buildingError } = useBuilding(buildingId ? Number(buildingId) : 0)\r\n const { buildings, isLoading: buildingsLoading } = useBuildings()\r\n\r\n // Determine the current building to use\r\n const building = storeBuilding || urlBuilding\r\n\r\n React.useEffect(() => {\r\n if (!storeBuilding && urlBuilding) {\r\n buildingDispatch({ type: \"SET-CURRENT-BUILDING\", payload: { building: urlBuilding } })\r\n }\r\n }, [urlBuilding, storeBuilding, buildingDispatch])\r\n\r\n const router = useRouter()\r\n const fileInputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n const [currentState, setCurrentState] = React.useState<pointCloudViewerState>('opening')\r\n const [uploading, setUploading] = React.useState(false)\r\n const [searchTerm, setSearchTerm] = React.useState('')\r\n const [searchResults, setSearchResults] = React.useState<any[]>([])\r\n const [selectedBuilding, setSelectedBuilding] = React.useState<any>(null)\r\n\r\n const { files, isLoading: filesLoading } = useFilesByBuildingId(building?.id)\r\n const pointCloudFiles: DbFile[] = React.useMemo(() => (\r\n files.filter(file => {\r\n const ext = file.extension?.toLowerCase()\r\n if (!ext) return false\r\n return ext === \"laz\" || ext === \"las\"\r\n })\r\n ), [files])\r\n\r\n // Fuzzy search function for buildings\r\n const fuzzySearchBuildings = React.useCallback((buildings: any[], searchTerm: string) => {\r\n if (!searchTerm.trim()) return buildings.slice(0, 10)\r\n\r\n const fuzzySearchScore = (search: string, text: string): number => {\r\n if (!search || !text) return 0\r\n const searchLower = search.toLowerCase()\r\n const textLower = text.toLowerCase()\r\n\r\n if (textLower === searchLower) return 1000\r\n if (textLower.startsWith(searchLower)) return 800\r\n if (textLower.includes(searchLower)) return 600\r\n\r\n return 0\r\n }\r\n\r\n return buildings\r\n .map((building) => {\r\n const address = building.buildingAddress || ''\r\n const name = building.buildingName || ''\r\n const id = building.id.toString()\r\n\r\n const addressScore = fuzzySearchScore(searchTerm, address)\r\n const nameScore = fuzzySearchScore(searchTerm, name)\r\n const idScore = fuzzySearchScore(searchTerm, id)\r\n\r\n const maxScore = Math.max(addressScore, nameScore, idScore)\r\n return { ...building, searchScore: maxScore }\r\n })\r\n .filter(building => building.searchScore > 0)\r\n .sort((a, b) => b.searchScore - a.searchScore)\r\n .slice(0, 10)\r\n }, [])\r\n\r\n // Handle search\r\n const handleSearch = React.useCallback((term: string) => {\r\n setSearchTerm(term)\r\n if (buildings) {\r\n setSearchResults(fuzzySearchBuildings(buildings, term))\r\n }\r\n }, [buildings, fuzzySearchBuildings])\r\n\r\n const shouldShow = (currentState === 'opening' || currentState === 'noPointCloudFiles' || currentState === 'noBuilding')\r\n\r\n // Handle initial state transitions\r\n React.useEffect(() => {\r\n // If building is loading, stay in opening state\r\n if (buildingLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If building failed to load or no buildingId provided, show noBuilding state\r\n if (buildingError || (!buildingId && !building)) {\r\n setCurrentState('noBuilding')\r\n return\r\n }\r\n\r\n // If we have a building but files are still loading, stay in opening state\r\n if (building && filesLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If we have a building but no point cloud files, show noPointCloudFiles state\r\n if (building && pointCloudFiles.length === 0) {\r\n setCurrentState('noPointCloudFiles')\r\n return\r\n }\r\n\r\n // We have point cloud files, hide the loading state\r\n if (building && pointCloudFiles.length > 0) {\r\n setCurrentState('ready')\r\n }\r\n }, [building, buildingLoading, buildingError, buildingId, filesLoading, pointCloudFiles.length])\r\n\r\n // Don't render if not visible\r\n if (!shouldShow) {\r\n return null\r\n }\r\n\r\n const handleBuildingSelect = (building: any) => {\r\n const url = new URL(window.location.href)\r\n url.searchParams.set('buildingId', building.id.toString())\r\n buildingDispatch({ type: 'SET-CURRENT-BUILDING', payload: { building } })\r\n setSelectedBuilding(building)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n router.push(url.toString())\r\n }\r\n\r\n // Create point cloud entry\r\n async function createPointCloud(name: string, buildingId: number): Promise<CreatePointCloudResponse> {\r\n const res = await fetch('/api/point-cloud', {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ name, buildingId }),\r\n })\r\n\r\n if (!res.ok) {\r\n const msg = await res.text()\r\n throw new Error(`Create point-cloud failed: ${msg || res.status}`)\r\n }\r\n\r\n return res.json()\r\n }\r\n\r\n // Upload to presigned URL\r\n function uploadToPresignedUrl(\r\n url: string,\r\n file: File,\r\n onProgress?: (pct: number) => void\r\n ): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const xhr = new XMLHttpRequest()\r\n xhr.open('PUT', url, true)\r\n\r\n if (onProgress) {\r\n xhr.upload.onprogress = (evt) => {\r\n if (evt.lengthComputable) {\r\n const pct = Math.round((evt.loaded / evt.total) * 100)\r\n onProgress(pct)\r\n }\r\n }\r\n }\r\n\r\n xhr.onload = () => {\r\n if (xhr.status >= 200 && xhr.status < 300) resolve()\r\n else reject(new Error(`Upload failed with status ${xhr.status}`))\r\n }\r\n\r\n xhr.onerror = () => reject(new Error('Network error during upload'))\r\n xhr.send(file)\r\n } catch (err) {\r\n reject(err)\r\n }\r\n })\r\n }\r\n\r\n const handleFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.target.files\r\n if (!files || files.length === 0) return\r\n\r\n const file = files[0]\r\n const fileName = file.name\r\n const fileExt = fileName.toLowerCase()\r\n\r\n // Validate file extension\r\n if (!fileExt.endsWith('.laz') && !fileExt.endsWith('.las')) {\r\n alert('Please select a LAZ or LAS file.')\r\n return\r\n }\r\n\r\n setUploading(true)\r\n\r\n try {\r\n console.log('Creating point cloud entry...')\r\n const { pointCloud, upload } = await createPointCloud(fileName, building.id)\r\n console.log('Point cloud created:', pointCloud.id)\r\n\r\n console.log('Uploading file...')\r\n await uploadToPresignedUrl(upload.uploadUrl, file, (pct) => {\r\n console.log(`Upload progress: ${pct}%`)\r\n })\r\n console.log('Upload complete!')\r\n\r\n console.log('Starting conversion...')\r\n const convertRes = await fetch(\r\n `${API_BASE}/point-cloud/${encodeURIComponent(String(pointCloud.id))}/convert-to-potree`,\r\n {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ options: { sampling_method: 'poisson' } }),\r\n }\r\n )\r\n if (!convertRes.ok) throw new Error('Failed to start conversion')\r\n console.log('Conversion started!')\r\n\r\n window.location.reload()\r\n }\r\n catch (error) {\r\n console.error('Error uploading point cloud:', error)\r\n alert(\r\n error instanceof Error\r\n ? `Failed to upload: ${error.message}`\r\n : 'Failed to upload point cloud'\r\n )\r\n setUploading(false)\r\n }\r\n }\r\n\r\n const handleUploadClick = () => {\r\n fileInputRef.current?.click()\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"absolute z-10 inset-0 bg-background/50 backdrop-blur-[1px] flex items-center justify-center pointer-events-none\">\r\n <Card className={cn(\"w-[536px] pointer-events-auto flex flex-col justify-start items-center gap-2\")}>\r\n <CardHeader className=\"flex justify-center items-center\">\r\n <div className=\"w-12 h-12 p-2 bg-card rounded-md shadow-sm border border-border flex justify-center items-center\">\r\n {currentState === 'noBuilding' ? (\r\n <LR.Building2 className={cn(\"w-4 h-5 text-foreground\", buildingsLoading && \"animate-pulse\")} strokeWidth={2} />\r\n ) : (\r\n <LR.Grip className={cn(\"w-4 h-5 text-foreground\", currentState === 'opening' && \"animate-pulse\")} strokeWidth={2} />\r\n )}\r\n </div>\r\n </CardHeader>\r\n\r\n <CardContent className=\"self-stretch flex flex-col justify-start items-center gap-6 pt-0\">\r\n <div className=\"self-stretch flex flex-col justify-start items-center gap-2\">\r\n <div className=\"self-stretch text-center text-foreground text-xl font-semibold font-['Inter'] leading-7 flex items-center justify-center gap-2\">\r\n {currentState === 'opening' ? (\r\n <>\r\n {t('openingText')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : currentState === 'noBuilding' ? (\r\n <>\r\n {t('noBuilding')}\r\n </>\r\n ) : uploading ? (\r\n <>\r\n {t('uploading')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : (\r\n t('noPointCloudLoaded')\r\n )}\r\n </div>\r\n {(currentState === 'noPointCloudFiles' || currentState === 'noBuilding') && !uploading && (\r\n <div className=\"self-stretch text-center text-muted-foreground text-sm font-normal font-['Inter'] leading-tight\">\r\n {currentState === 'noBuilding' ? t('selectBuildingHelpText') : t('helpText')}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {currentState === 'noBuilding' && (\r\n <div className=\"self-stretch flex flex-col gap-3 justify-centre items-center\">\r\n {buildingsLoading ? (\r\n <div className=\"flex items-center justify-center gap-2 text-muted-foreground\">\r\n <LoadingSpinner size={16} />\r\n <span>{t('loadingBuildings') || 'Loading buildings...'}</span>\r\n </div>\r\n ) : buildings && buildings.length > 0 ? (\r\n <div className=\"w-full relative\">\r\n {selectedBuilding ? (\r\n <div className=\"relative flex justify-end items-center\">\r\n <Input\r\n type=\"text\"\r\n value={\r\n 'Building: '\r\n + (selectedBuilding.buildingName && selectedBuilding.buildingAddress\r\n ? `${selectedBuilding.buildingName}, ${selectedBuilding.buildingAddress}`\r\n : selectedBuilding.buildingName || selectedBuilding.buildingAddress || `Building ${selectedBuilding.id}`)\r\n }\r\n readOnly\r\n className=\"w-full\"\r\n />\r\n <LR.X\r\n className=\"absolute right-2 cursor-pointer w-4 h-4 text-muted-foreground hover:text-foreground\"\r\n onClick={() => {\r\n setSelectedBuilding(null)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <div className=\"relative\">\r\n <LR.Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4\" />\r\n <Input\r\n placeholder={t('searchBuildings') || 'Search buildings...'}\r\n value={searchTerm}\r\n onChange={(e) => handleSearch(e.target.value)}\r\n className=\"w-full pl-10\"\r\n disabled={!ability.can('read', 'File')}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Search results dropdown */}\r\n {searchResults.length > 0 && searchTerm !== '' && !selectedBuilding && (\r\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-background border border-border rounded-md shadow-lg max-h-60 overflow-y-auto z-20\">\r\n {searchResults.map(building => (\r\n <div\r\n key={building.id}\r\n className=\"px-3 py-2 text-sm cursor-pointer hover:bg-muted transition-colors flex gap-2 items-center\"\r\n onClick={() => handleBuildingSelect(building)}\r\n >\r\n <LR.SquareArrowOutUpRight className=\"w-3 h-3\" />\r\n {building.buildingName\r\n ? `${building.buildingName}, ${building.buildingAddress}`\r\n : building.buildingAddress || `Building ${building.id}`}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"text-muted-foreground text-center\">\r\n {t('noBuildings') || 'No buildings available'}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {currentState === 'noPointCloudFiles' && (\r\n <div className=\"self-stretch flex justify-center items-center gap-3\">\r\n <Input\r\n ref={fileInputRef}\r\n type=\"file\"\r\n accept=\".laz,.las\"\r\n onChange={handleFileChange}\r\n className=\"hidden\"\r\n />\r\n <Button\r\n onClick={handleUploadClick}\r\n size=\"sm\"\r\n className=\"gap-2\"\r\n disabled={uploading || !ability.can('create', 'File')}\r\n >\r\n <LR.Upload className=\"w-4 h-4\" />\r\n {uploading ? t('uploading') : t('uploadButton')}\r\n </Button>\r\n </div>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["buildings","searchTerm","building","buildingId","files"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloudManagementTable.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,wBAAgB,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,qBAkB5F"}
1
+ {"version":3,"file":"PointCloudManagementTable.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,wBAAgB,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,qBAkB5F"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.tsx"],"sourcesContent":["\"use client\";\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from \"react\";\r\nimport { PointCloudTable } from \"./PointCloudTable\";\r\nimport UploadPointCloudPage from \"./PointCloudUploadPanel\";\r\n\r\ntype StatusFilter = \"all\" | \"uploaded\" | \"converted\" | \"not-converted\";\r\n\r\nenum PAGE {\r\n TABLE = \"table\",\r\n UPLOAD = \"upload\",\r\n}\r\n\r\nexport function PointCloudManagementTable({ pointcloudApiUrl }: { pointcloudApiUrl?: string }) {\r\n const [currentPage, setCurrentPage] = React.useState<PAGE>(PAGE.TABLE)\r\n\r\n return(\r\n <div>\r\n {currentPage == PAGE.TABLE ?\r\n <PointCloudTable\r\n onUploadButtonClick = {() => setCurrentPage(PAGE.UPLOAD)}\r\n pointcloudApiUrl={pointcloudApiUrl}\r\n />\r\n :\r\n <UploadPointCloudPage\r\n onGoBackButtonClick = {() => setCurrentPage(PAGE.TABLE)}\r\n pointcloudApiUrl={pointcloudApiUrl}\r\n />\r\n }\r\n </div>\r\n )\r\n}\r\n\r\n"],"mappings":";AAsBQ;AAjBR,YAAY,WAAW;AACvB,SAAS,uBAAuB;AAChC,OAAO,0BAA0B;AAIjC,IAAK,OAAL,kBAAKA,UAAL;AACE,EAAAA,MAAA,WAAQ;AACR,EAAAA,MAAA,YAAS;AAFN,SAAAA;AAAA,GAAA;AAKE,SAAS,0BAA0B,EAAE,iBAAiB,GAAkC;AAC7F,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAe,mBAAU;AAErE,SACE,oBAAC,SACE,yBAAe,sBACd;AAAA,IAAC;AAAA;AAAA,MACC,qBAAuB,MAAM,eAAe,qBAAW;AAAA,MACvD;AAAA;AAAA,EACF,IAEA;AAAA,IAAC;AAAA;AAAA,MACC,qBAAuB,MAAM,eAAe,mBAAU;AAAA,MACtD;AAAA;AAAA,EACF,GAEJ;AAEJ;","names":["PAGE"]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.tsx"],"sourcesContent":["\"use client\";\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { PointCloudTable } from \"./PointCloudTable\";\r\nimport UploadPointCloudPage from \"./PointCloudUploadPanel\";\r\n\r\ntype StatusFilter = \"all\" | \"uploaded\" | \"converted\" | \"not-converted\";\r\n\r\nenum PAGE {\r\n TABLE = \"table\",\r\n UPLOAD = \"upload\",\r\n}\r\n\r\nexport function PointCloudManagementTable({ pointcloudApiUrl }: { pointcloudApiUrl?: string }) {\r\n const [currentPage, setCurrentPage] = React.useState<PAGE>(PAGE.TABLE)\r\n\r\n return(\r\n <div>\r\n {currentPage == PAGE.TABLE ?\r\n <PointCloudTable\r\n onUploadButtonClick = {() => setCurrentPage(PAGE.UPLOAD)}\r\n pointcloudApiUrl={pointcloudApiUrl}\r\n />\r\n :\r\n <UploadPointCloudPage\r\n onGoBackButtonClick = {() => setCurrentPage(PAGE.TABLE)}\r\n pointcloudApiUrl={pointcloudApiUrl}\r\n />\r\n }\r\n </div>\r\n )\r\n}\r\n\r\n"],"mappings":";AAuBQ;AAlBR,YAAY,WAAW;AAEvB,SAAS,uBAAuB;AAChC,OAAO,0BAA0B;AAIjC,IAAK,OAAL,kBAAKA,UAAL;AACE,EAAAA,MAAA,WAAQ;AACR,EAAAA,MAAA,YAAS;AAFN,SAAAA;AAAA,GAAA;AAKE,SAAS,0BAA0B,EAAE,iBAAiB,GAAkC;AAC7F,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAe,mBAAU;AAErE,SACE,oBAAC,SACE,yBAAe,sBACd;AAAA,IAAC;AAAA;AAAA,MACC,qBAAuB,MAAM,eAAe,qBAAW;AAAA,MACvD;AAAA;AAAA,EACF,IAEA;AAAA,IAAC;AAAA;AAAA,MACC,qBAAuB,MAAM,eAAe,mBAAU;AAAA,MACtD;AAAA;AAAA,EACF,GAEJ;AAEJ;","names":["PAGE"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloudTable.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgD/B,KAAK,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC/D,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,GAAG,QAAQ,EACd,EAAE,oBAAoB,qBAmZtB"}
1
+ {"version":3,"file":"PointCloudTable.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoC/B,KAAK,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC/D,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC5B,mBAAmB,EACnB,gBAAgB,EAChB,GAAG,QAAQ,EACd,EAAE,oBAAoB,qBAmZtB"}