@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
@@ -17,10 +17,10 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { formatName, stripHtml } from "../utils";
21
20
  import { DataManagementSystem } from "../../../../../types/dbTypes";
22
- import { buildValidationKey, getCache, setCache, withCache } from "./cache";
23
21
  import { layerColorByName } from "../../utils/stringToColour";
22
+ import { formatName, stripHtml } from "../utils";
23
+ import { buildValidationKey, getCache, setCache, withCache } from "./cache";
24
24
  const inFlightFeatureRequests = /* @__PURE__ */ new Map();
25
25
  async function fetchWithTimeout(url, timeout = 1e4) {
26
26
  const controller = new AbortController();
@@ -53,19 +53,16 @@ async function withConcurrencyLimit(items, limit, fn) {
53
53
  return results;
54
54
  }
55
55
  async function fetchArcGISDatasets(portal, rowsPerPage) {
56
- var _a, _b;
57
56
  const { apiUrl, countrySubdivision, municipality, group } = portal;
58
57
  try {
59
58
  const baseUrl = (apiUrl || "").replace(/\/+$/, "");
60
59
  const servicesUrl = `${baseUrl}/services?f=pjson`;
61
- console.log(`[ArcGIS] Fetching services for portal "${portal.name}": ${servicesUrl}`);
62
60
  const response = await fetchWithTimeout(servicesUrl);
63
61
  if (!response.ok) {
64
62
  console.error(`[ArcGIS] "${portal.name}" services request failed \u2014 status ${response.status}`);
65
63
  throw new Error(`HTTP error! status: ${response.status}`);
66
64
  }
67
65
  const data = await response.json();
68
- console.log(`[ArcGIS] "${portal.name}" \u2014 ${(_b = (_a = data.services) == null ? void 0 : _a.length) != null ? _b : 0} services found`);
69
66
  const transformedDatasets = [];
70
67
  const processService = async (service) => {
71
68
  const url = `${baseUrl}/services/${service.name}/${service.type}`;
@@ -82,12 +79,12 @@ async function fetchArcGISDatasets(portal, rowsPerPage) {
82
79
  serviceInfo = await serviceRes.value.json();
83
80
  const layers = serviceInfo.layers && serviceInfo.layers.length > 0 ? serviceInfo.layers.filter((l) => l.type === "Feature Layer") : [{ id: 0, name: null, geometryType: null }];
84
81
  const hasNonNullGeometry = (featuresUrl, cacheKey) => withCache(cacheKey, 24 * 60 * 60 * 1e3, async () => {
85
- var _a2, _b2;
82
+ var _a, _b;
86
83
  try {
87
84
  const res = await fetchWithTimeout(`${featuresUrl}&resultRecordCount=1`);
88
85
  if (!res.ok) return false;
89
86
  const d = await res.json();
90
- if (((_a2 = d == null ? void 0 : d.error) == null ? void 0 : _a2.code) || ((_b2 = d == null ? void 0 : d.error) == null ? void 0 : _b2.message)) return false;
87
+ if (((_a = d == null ? void 0 : d.error) == null ? void 0 : _a.code) || ((_b = d == null ? void 0 : d.error) == null ? void 0 : _b.message)) return false;
91
88
  if (!d || d.type !== "FeatureCollection" || !Array.isArray(d.features)) return false;
92
89
  return d.features.some((f) => f && f.geometry);
93
90
  } catch (e) {
@@ -96,21 +93,21 @@ async function fetchArcGISDatasets(portal, rowsPerPage) {
96
93
  });
97
94
  const layerResults = await Promise.allSettled(
98
95
  layers.map(async (layer) => {
99
- var _a2, _b2, _c;
96
+ var _a, _b, _c;
100
97
  const layerIndex = layer.id;
101
98
  const featuresUrl = `${url}/${layerIndex}/query?outFields=*&where=1%3D1&f=geojson`;
102
99
  const featureInfoUrl = `${url}/${layerIndex}?f=pjson`;
103
100
  const validKey = buildValidationKey(
104
101
  "arcgis",
105
102
  `${service.name}_${layerIndex}`,
106
- ((_a2 = serviceInfo == null ? void 0 : serviceInfo.documentInfo) == null ? void 0 : _a2.ModifiedTime) || (extraInfo == null ? void 0 : extraInfo.modified) || void 0
103
+ ((_a = serviceInfo == null ? void 0 : serviceInfo.documentInfo) == null ? void 0 : _a.ModifiedTime) || (extraInfo == null ? void 0 : extraInfo.modified) || void 0
107
104
  );
108
105
  const hasGeom = await hasNonNullGeometry(featuresUrl, validKey);
109
106
  if (!hasGeom) return null;
110
- const modTime = ((_b2 = serviceInfo == null ? void 0 : serviceInfo.documentInfo) == null ? void 0 : _b2.ModifiedTime) || (extraInfo == null ? void 0 : extraInfo.modified) || "";
107
+ const modTime = ((_b = serviceInfo == null ? void 0 : serviceInfo.documentInfo) == null ? void 0 : _b.ModifiedTime) || (extraInfo == null ? void 0 : extraInfo.modified) || "";
111
108
  const getFeatures = async (options) => {
112
- var _a3;
113
- const zoom = (_a3 = options == null ? void 0 : options.zoom) != null ? _a3 : 10;
109
+ var _a2;
110
+ const zoom = (_a2 = options == null ? void 0 : options.zoom) != null ? _a2 : 10;
114
111
  const bbox = options == null ? void 0 : options.bbox;
115
112
  const pageSize = zoom < 6 ? 500 : zoom < 10 ? 1e3 : 2e3;
116
113
  let spatialFilter = "";
@@ -150,8 +147,8 @@ async function fetchArcGISDatasets(portal, rowsPerPage) {
150
147
  `${baseQuery}&resultOffset=${pageSize * (i + 1)}&resultRecordCount=${pageSize}`,
151
148
  15e3
152
149
  ).then((r) => r.ok ? r.json() : null).then((p) => {
153
- var _a4;
154
- return (_a4 = p == null ? void 0 : p.features) != null ? _a4 : [];
150
+ var _a3;
151
+ return (_a3 = p == null ? void 0 : p.features) != null ? _a3 : [];
155
152
  }).catch(() => [])
156
153
  )
157
154
  );
@@ -209,9 +206,9 @@ async function fetchArcGISDatasets(portal, rowsPerPage) {
209
206
  return "string";
210
207
  };
211
208
  const mapped = featureData.fields.map((field) => {
212
- var _a3;
209
+ var _a2;
213
210
  const rawEsriType = field.type;
214
- const inferred = nameBasedType(field) || ((_a3 = typeMap[rawEsriType]) == null ? void 0 : _a3.type) || inferFieldType(field);
211
+ const inferred = nameBasedType(field) || ((_a2 = typeMap[rawEsriType]) == null ? void 0 : _a2.type) || inferFieldType(field);
215
212
  return __spreadProps(__spreadValues({}, field), { esriType: rawEsriType, type: inferred });
216
213
  });
217
214
  setCache(fieldsKey, mapped, 24 * 60 * 60 * 1e3);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/arcGISDatasets.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Dataset, FieldType } from '../../../../../types/datasetTypes'\r\nimport { formatName, stripHtml } from '../utils'\r\nimport { type AllGeoJSON } from '@turf/turf'\r\nimport { DataManagementSystem, type OpenDataPortal } from '../../../../../types/dbTypes'\r\nimport { buildValidationKey, getCache, setCache, withCache } from './cache'\r\nimport { layerColorByName } from '../../utils/stringToColour'\r\n\r\nconst inFlightFeatureRequests = new Map<string, Promise<AllGeoJSON>>()\r\n\r\nexport type ViewportOptions = {\r\n bbox?: [number, number, number, number] // [west, south, east, north]\r\n zoom?: number\r\n}\r\n\r\nasync function fetchWithTimeout(url: string, timeout = 10_000): Promise<Response> {\r\n const controller = new AbortController()\r\n const timeoutId = setTimeout(() => controller.abort(), timeout)\r\n try {\r\n const response = await fetch(url, { signal: controller.signal })\r\n clearTimeout(timeoutId)\r\n return response\r\n }\r\n catch (error) {\r\n clearTimeout(timeoutId)\r\n throw error\r\n }\r\n}\r\n\r\n/**\r\n * Run `fn` over `items` with at most `limit` concurrent executions.\r\n * Preserves order of results matching input order.\r\n */\r\nasync function withConcurrencyLimit<T, R>(\r\n items: T[],\r\n limit: number,\r\n fn: (item: T) => Promise<R>,\r\n): Promise<PromiseSettledResult<R>[]> {\r\n const results: PromiseSettledResult<R>[] = new Array(items.length)\r\n let next = 0\r\n\r\n async function worker() {\r\n while (next < items.length) {\r\n const i = next++\r\n try {\r\n results[i] = { status: 'fulfilled', value: await fn(items[i]) }\r\n }\r\n catch (reason) {\r\n results[i] = { status: 'rejected', reason }\r\n }\r\n }\r\n }\r\n\r\n await Promise.all(\r\n Array.from({ length: Math.min(limit, items.length) }, worker),\r\n )\r\n return results\r\n}\r\n\r\nexport async function fetchArcGISDatasets(\r\n portal: OpenDataPortal,\r\n rowsPerPage: number,\r\n): Promise<Dataset[]> {\r\n const { apiUrl, countrySubdivision, municipality, group } = portal\r\n\r\n try {\r\n const baseUrl = (apiUrl || '').replace(/\\/+$/, '')\r\n const servicesUrl = `${baseUrl}/services?f=pjson`\r\n console.log(`[ArcGIS] Fetching services for portal \"${portal.name}\": ${servicesUrl}`)\r\n\r\n const response = await fetchWithTimeout(servicesUrl)\r\n if (!response.ok) {\r\n console.error(`[ArcGIS] \"${portal.name}\" services request failed — status ${response.status}`)\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data = await response.json()\r\n console.log(`[ArcGIS] \"${portal.name}\" — ${data.services?.length ?? 0} services found`)\r\n\r\n const transformedDatasets: Dataset[] = []\r\n\r\n const processService = async (service: any): Promise<Dataset[]> => {\r\n const url = `${baseUrl}/services/${service.name}/${service.type}`\r\n const infoUrl = `${url}/info/itemInfo?f=pjson`\r\n\r\n const [infoRes, serviceRes] = await Promise.allSettled([\r\n fetchWithTimeout(infoUrl),\r\n fetchWithTimeout(`${url}?f=pjson`),\r\n ])\r\n\r\n let extraInfo: any = {}\r\n let serviceInfo: any = {}\r\n\r\n if (infoRes.status === 'fulfilled' && infoRes.value.ok)\r\n extraInfo = await infoRes.value.json()\r\n if (serviceRes.status === 'fulfilled' && serviceRes.value.ok)\r\n serviceInfo = await serviceRes.value.json()\r\n\r\n const layers = serviceInfo.layers && serviceInfo.layers.length > 0\r\n ? serviceInfo.layers.filter((l: any) => l.type === 'Feature Layer')\r\n : [{ id: 0, name: null, geometryType: null }]\r\n\r\n const hasNonNullGeometry = (featuresUrl: string, cacheKey: string): Promise<boolean> =>\r\n withCache<boolean>(cacheKey, 24 * 60 * 60 * 1000, async () => {\r\n try {\r\n const res = await fetchWithTimeout(`${featuresUrl}&resultRecordCount=1`)\r\n if (!res.ok) return false\r\n const d = await res.json()\r\n if (d?.error?.code || d?.error?.message) return false\r\n if (!d || d.type !== 'FeatureCollection' || !Array.isArray(d.features)) return false\r\n return d.features.some((f: any) => f && f.geometry)\r\n }\r\n catch { return false }\r\n })\r\n\r\n // Layers within a service are few (2-5 typically) — parallel is fine here\r\n const layerResults = await Promise.allSettled(\r\n layers.map(async (layer: any): Promise<Dataset | null> => {\r\n const layerIndex = layer.id\r\n const featuresUrl = `${url}/${layerIndex}/query?outFields=*&where=1%3D1&f=geojson`\r\n const featureInfoUrl = `${url}/${layerIndex}?f=pjson`\r\n\r\n const validKey = buildValidationKey(\r\n 'arcgis',\r\n `${service.name}_${layerIndex}`,\r\n serviceInfo?.documentInfo?.ModifiedTime || extraInfo?.modified || undefined,\r\n )\r\n const hasGeom = await hasNonNullGeometry(featuresUrl, validKey)\r\n if (!hasGeom) return null\r\n\r\n const modTime = serviceInfo?.documentInfo?.ModifiedTime || extraInfo?.modified || ''\r\n\r\n /**\r\n * getFeatures — viewport-aware, paginated.\r\n * If `bbox` is provided, only features intersecting the viewport are fetched.\r\n * Automatically paginates beyond the per-page limit.\r\n */\r\n const getFeatures = async (options?: ViewportOptions): Promise<AllGeoJSON> => {\r\n const zoom = options?.zoom ?? 10\r\n const bbox = options?.bbox\r\n\r\n // Page size scales with zoom: fewer records at low zoom (overview), more at high zoom (detail)\r\n const pageSize = zoom < 6 ? 500 : zoom < 10 ? 1000 : 2000\r\n\r\n // Build spatial filter string for ArcGIS when viewport is available\r\n let spatialFilter = ''\r\n if (bbox) {\r\n const [west, south, east, north] = bbox\r\n const geomStr = encodeURIComponent(\r\n JSON.stringify({ xmin: west, ymin: south, xmax: east, ymax: north, spatialReference: { wkid: 4326 } }),\r\n )\r\n spatialFilter = `&geometry=${geomStr}&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelIntersects&inSR=4326`\r\n }\r\n\r\n // Round bbox to 0.1° grid to maximise cache hits while panning\r\n const bboxKey = bbox\r\n ? bbox.map(n => (Math.round(n * 10) / 10).toFixed(1)).join(',')\r\n : 'global'\r\n const zoomBucket = Math.floor(zoom / 2)\r\n const featuresKey = `features:arcgis:${service.name}_${layerIndex}:${bboxKey}:z${zoomBucket}:${modTime}`\r\n\r\n const cached = getCache<AllGeoJSON>(featuresKey)\r\n if (cached) return cached\r\n\r\n const inFlight = inFlightFeatureRequests.get(featuresKey)\r\n if (inFlight) return inFlight\r\n\r\n const baseQuery = `${url}/${layerIndex}/query?outFields=*&where=1%3D1&f=geojson${spatialFilter}`\r\n\r\n const request = (async () => {\r\n try {\r\n const firstRes = await fetchWithTimeout(`${baseQuery}&resultOffset=0&resultRecordCount=${pageSize}`, 15_000)\r\n if (!firstRes.ok) return { type: 'FeatureCollection', features: [] } as AllGeoJSON\r\n\r\n const firstPage = await firstRes.json()\r\n if (!firstPage?.features) return { type: 'FeatureCollection', features: [] } as AllGeoJSON\r\n\r\n const allFeatures = [...firstPage.features]\r\n\r\n // If the server returned fewer features than the requested page size, the first page is complete.\r\n // This avoids an unnecessary count request for small datasets that have already finished loading.\r\n if (firstPage.exceededTransferLimit && firstPage.features.length >= pageSize) {\r\n try {\r\n const countRes = await fetchWithTimeout(`${baseQuery}&returnCountOnly=true&f=json`, 5_000)\r\n if (countRes.ok) {\r\n const { count: total } = await countRes.json()\r\n if (total > pageSize) {\r\n // Cap at 10 additional pages (~20 000 records max) to avoid browser memory issues\r\n const numPages = Math.min(Math.ceil((total - pageSize) / pageSize), 10)\r\n const morePages = await Promise.all(\r\n Array.from({ length: numPages }, (_, i) =>\r\n fetchWithTimeout(\r\n `${baseQuery}&resultOffset=${pageSize * (i + 1)}&resultRecordCount=${pageSize}`,\r\n 15_000,\r\n )\r\n .then(r => r.ok ? r.json() : null)\r\n .then(p => p?.features ?? [])\r\n .catch(() => []),\r\n ),\r\n )\r\n for (const page of morePages) allFeatures.push(...page)\r\n }\r\n }\r\n }\r\n catch { /* use first page only */ }\r\n }\r\n\r\n const result = { type: 'FeatureCollection', features: allFeatures } as AllGeoJSON\r\n // Viewport-constrained results cached for 15 min; global results for 1 hr\r\n setCache(featuresKey, result, bbox ? 15 * 60 * 1000 : 60 * 60 * 1000)\r\n return result\r\n }\r\n catch (error) {\r\n console.error(`ArcGIS: Error fetching features for layer ${layerIndex}:`, error)\r\n return { type: 'FeatureCollection', features: [] } as AllGeoJSON\r\n }\r\n finally {\r\n inFlightFeatureRequests.delete(featuresKey)\r\n }\r\n })()\r\n\r\n inFlightFeatureRequests.set(featuresKey, request)\r\n return request\r\n }\r\n\r\n const getFeaturesData = async () => {\r\n try {\r\n const res = await fetchWithTimeout(`${url}/${layerIndex}?f=pjson`)\r\n return res.ok ? res.json() : undefined\r\n }\r\n catch { return undefined }\r\n }\r\n\r\n const getFields = async () => {\r\n try {\r\n const fieldsKey = `fields:arcgis:${service.name}:${layerIndex}:${modTime}`\r\n const cached = getCache<any[]>(fieldsKey)\r\n if (cached) return cached\r\n\r\n const res = await fetchWithTimeout(featureInfoUrl)\r\n if (!res.ok) return []\r\n const featureData = await res.json()\r\n if (!featureData.fields) return []\r\n\r\n const typeMap = esriFieldTypes()\r\n\r\n const nameBasedType = (raw: any): FieldType | undefined => {\r\n const lc = (raw.name || '').toLowerCase()\r\n if (/(percentage|percent|ratio|average)/.test(lc)) return 'number'\r\n if (/(date|year|month|day|time)/.test(lc)) return 'datetime'\r\n return undefined\r\n }\r\n\r\n const inferFieldType = (raw: any): FieldType => {\r\n const norm = ([raw.type, raw.actualType, raw.sqlType, raw.esriType] as (string | undefined)[])\r\n .filter(Boolean).map(v => String(v).toLowerCase())\r\n if (norm.some(v => v.includes('boolean') || v === 'bool' || v === 'esrifieldtypeboolean')) return 'boolean'\r\n if (norm.some(v => /(double|float|integer|smallint|single|numeric|number|decimal)/.test(v)\r\n || ['esrifieldtypeinteger', 'esrifieldtypesmallinteger', 'esrifieldtypedouble', 'esrifieldtypefloat', 'esrifieldtypesingle'].includes(v))) return 'number'\r\n if (norm.some(v => /(date|time|timestamp)/.test(v))) return 'datetime'\r\n if (norm.some(v => /(globalid|guid|objectid|^oid$|_id$|id$)/.test(v))) return 'id'\r\n if (norm.some(v => v.includes('blob'))) return 'blob'\r\n if (norm.some(v => v.includes('raster') || v.includes('geometry'))) return 'object'\r\n return 'string'\r\n }\r\n\r\n const mapped = featureData.fields.map((field: any) => {\r\n const rawEsriType = field.type\r\n const inferred = nameBasedType(field) || typeMap[rawEsriType]?.type || inferFieldType(field)\r\n return { ...field, esriType: rawEsriType, type: inferred }\r\n })\r\n setCache(fieldsKey, mapped, 24 * 60 * 60 * 1000)\r\n return mapped\r\n }\r\n catch { return [] }\r\n }\r\n\r\n const baseName = formatName(service.name)\r\n const layerName = layer.name || `Layer ${layerIndex}`\r\n const name = layers.length > 1 ? `${baseName} - ${layerName}` : baseName\r\n\r\n return {\r\n id: extraInfo.id ? `${extraInfo.id}_${layerIndex}` : `${service.name}_${layerIndex}`,\r\n name,\r\n type: Array.isArray(service.layers) && service.layers[0]?.geometryType\r\n ? service.layers[0].geometryType\r\n : extraInfo.type || 'Feature Layer',\r\n datasetType: 'GeoJSON',\r\n dataManagementSystem: DataManagementSystem.Arcgis,\r\n url,\r\n license: extraInfo.licenseInfo || 'Unknown',\r\n description: extraInfo.description ? stripHtml(extraInfo.description) : 'No description available',\r\n publisher: extraInfo.owner || 'Unknown',\r\n contact: extraInfo.contact || 'Unknown',\r\n keywords: extraInfo.tags || extraInfo.typedKeywords || [],\r\n subject: extraInfo.subject || [],\r\n countrySubdivision,\r\n municipality,\r\n getFields,\r\n getFeatures,\r\n getFeaturesData,\r\n group,\r\n portal,\r\n layerColor: layerColorByName(name),\r\n } satisfies Dataset\r\n }),\r\n )\r\n\r\n return layerResults\r\n .filter((r): r is PromiseFulfilledResult<Dataset> => r.status === 'fulfilled' && r.value !== null)\r\n .map(r => r.value)\r\n }\r\n\r\n // Process at most 5 services concurrently — prevents ArcGIS rate-limiting\r\n const serviceResults = await withConcurrencyLimit(data.services, 5, processService)\r\n\r\n for (const result of serviceResults) {\r\n if (result.status === 'fulfilled') transformedDatasets.push(...result.value)\r\n }\r\n\r\n return transformedDatasets\r\n }\r\n catch (error) {\r\n console.error(`[ArcGIS] Failed to fetch datasets for portal \"${portal.name}\":`, error)\r\n return []\r\n }\r\n}\r\n\r\nexport interface EsriFieldTypes {\r\n [key: string]: { description: string, type: FieldType }\r\n}\r\n\r\nexport function esriFieldTypes(): EsriFieldTypes {\r\n return {\r\n esriFieldTypeString: { description: 'Text Field', type: 'string' },\r\n esriFieldTypeGlobalID: { description: 'Global ID', type: 'id' },\r\n esriFieldTypeGUID: { description: 'Global UID', type: 'id' },\r\n esriFieldTypeSmallInteger: { description: '16-bit Integer', type: 'number' },\r\n esriFieldTypeInteger: { description: '32-bit Integer', type: 'number' },\r\n esriFieldTypeSingle: { description: 'Single Precision Float', type: 'number' },\r\n esriFieldTypeDouble: { description: 'Double Precision Float', type: 'number' },\r\n esriFieldTypeDate: { description: 'Date/Time', type: 'datetime' },\r\n esriFieldTypedOnly: { description: 'Date', type: 'datetime' },\r\n esriFieldTypeTimeOnly: { description: 'Time', type: 'string' },\r\n esriFieldTypeTimestampOffset: { description: 'Timestamp', type: 'string' },\r\n esriFieldTypeBlob: { description: 'Binary', type: 'blob' },\r\n esriFieldTypeRaster: { description: 'Raster', type: 'object' },\r\n esriFieldTypeXML: { description: 'XML', type: 'string' },\r\n esriFieldTypeGeometry: { description: 'Spatial Geometry', type: 'object' },\r\n esriFieldTypeOID: { description: 'Object ID', type: 'id' },\r\n }\r\n}\r\n"],"mappings":"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","names":["_a","_b"]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/arcGISDatasets.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { type AllGeoJSON } from '@turf/turf'\r\n\r\nimport { DataManagementSystem, type OpenDataPortal } from '../../../../../types/dbTypes'\r\nimport { layerColorByName } from '../../utils/stringToColour'\r\nimport { formatName, stripHtml } from '../utils'\r\n\r\nimport { buildValidationKey, getCache, setCache, withCache } from './cache'\r\n\r\nimport type { Dataset, FieldType } from '../../../../../types/datasetTypes'\r\n\r\nconst inFlightFeatureRequests = new Map<string, Promise<AllGeoJSON>>()\r\n\r\nexport type ViewportOptions = {\r\n bbox?: [number, number, number, number] // [west, south, east, north]\r\n zoom?: number\r\n}\r\n\r\nasync function fetchWithTimeout(url: string, timeout = 10_000): Promise<Response> {\r\n const controller = new AbortController()\r\n const timeoutId = setTimeout(() => controller.abort(), timeout)\r\n try {\r\n const response = await fetch(url, { signal: controller.signal })\r\n clearTimeout(timeoutId)\r\n return response\r\n }\r\n catch (error) {\r\n clearTimeout(timeoutId)\r\n throw error\r\n }\r\n}\r\n\r\n/**\r\n * Run `fn` over `items` with at most `limit` concurrent executions.\r\n * Preserves order of results matching input order.\r\n */\r\nasync function withConcurrencyLimit<T, R>(\r\n items: T[],\r\n limit: number,\r\n fn: (item: T) => Promise<R>,\r\n): Promise<PromiseSettledResult<R>[]> {\r\n const results: PromiseSettledResult<R>[] = new Array(items.length)\r\n let next = 0\r\n\r\n async function worker() {\r\n while (next < items.length) {\r\n const i = next++\r\n try {\r\n results[i] = { status: 'fulfilled', value: await fn(items[i]) }\r\n }\r\n catch (reason) {\r\n results[i] = { status: 'rejected', reason }\r\n }\r\n }\r\n }\r\n\r\n await Promise.all(\r\n Array.from({ length: Math.min(limit, items.length) }, worker),\r\n )\r\n return results\r\n}\r\n\r\nexport async function fetchArcGISDatasets(\r\n portal: OpenDataPortal,\r\n rowsPerPage: number,\r\n): Promise<Dataset[]> {\r\n const { apiUrl, countrySubdivision, municipality, group } = portal\r\n\r\n try {\r\n const baseUrl = (apiUrl || '').replace(/\\/+$/, '')\r\n const servicesUrl = `${baseUrl}/services?f=pjson`\r\n\r\n const response = await fetchWithTimeout(servicesUrl)\r\n if (!response.ok) {\r\n console.error(`[ArcGIS] \"${portal.name}\" services request failed — status ${response.status}`)\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n\r\n const data = await response.json()\r\n\r\n const transformedDatasets: Dataset[] = []\r\n\r\n const processService = async (service: any): Promise<Dataset[]> => {\r\n const url = `${baseUrl}/services/${service.name}/${service.type}`\r\n const infoUrl = `${url}/info/itemInfo?f=pjson`\r\n\r\n const [infoRes, serviceRes] = await Promise.allSettled([\r\n fetchWithTimeout(infoUrl),\r\n fetchWithTimeout(`${url}?f=pjson`),\r\n ])\r\n\r\n let extraInfo: any = {}\r\n let serviceInfo: any = {}\r\n\r\n if (infoRes.status === 'fulfilled' && infoRes.value.ok)\r\n extraInfo = await infoRes.value.json()\r\n if (serviceRes.status === 'fulfilled' && serviceRes.value.ok)\r\n serviceInfo = await serviceRes.value.json()\r\n\r\n const layers = serviceInfo.layers && serviceInfo.layers.length > 0\r\n ? serviceInfo.layers.filter((l: any) => l.type === 'Feature Layer')\r\n : [{ id: 0, name: null, geometryType: null }]\r\n\r\n const hasNonNullGeometry = (featuresUrl: string, cacheKey: string): Promise<boolean> =>\r\n withCache<boolean>(cacheKey, 24 * 60 * 60 * 1000, async () => {\r\n try {\r\n const res = await fetchWithTimeout(`${featuresUrl}&resultRecordCount=1`)\r\n if (!res.ok) return false\r\n const d = await res.json()\r\n if (d?.error?.code || d?.error?.message) return false\r\n if (!d || d.type !== 'FeatureCollection' || !Array.isArray(d.features)) return false\r\n return d.features.some((f: any) => f && f.geometry)\r\n }\r\n catch { return false }\r\n })\r\n\r\n // Layers within a service are few (2-5 typically) — parallel is fine here\r\n const layerResults = await Promise.allSettled(\r\n layers.map(async (layer: any): Promise<Dataset | null> => {\r\n const layerIndex = layer.id\r\n const featuresUrl = `${url}/${layerIndex}/query?outFields=*&where=1%3D1&f=geojson`\r\n const featureInfoUrl = `${url}/${layerIndex}?f=pjson`\r\n\r\n const validKey = buildValidationKey(\r\n 'arcgis',\r\n `${service.name}_${layerIndex}`,\r\n serviceInfo?.documentInfo?.ModifiedTime || extraInfo?.modified || undefined,\r\n )\r\n const hasGeom = await hasNonNullGeometry(featuresUrl, validKey)\r\n if (!hasGeom) return null\r\n\r\n const modTime = serviceInfo?.documentInfo?.ModifiedTime || extraInfo?.modified || ''\r\n\r\n /**\r\n * getFeatures — viewport-aware, paginated.\r\n * If `bbox` is provided, only features intersecting the viewport are fetched.\r\n * Automatically paginates beyond the per-page limit.\r\n */\r\n const getFeatures = async (options?: ViewportOptions): Promise<AllGeoJSON> => {\r\n const zoom = options?.zoom ?? 10\r\n const bbox = options?.bbox\r\n\r\n // Page size scales with zoom: fewer records at low zoom (overview), more at high zoom (detail)\r\n const pageSize = zoom < 6 ? 500 : zoom < 10 ? 1000 : 2000\r\n\r\n // Build spatial filter string for ArcGIS when viewport is available\r\n let spatialFilter = ''\r\n if (bbox) {\r\n const [west, south, east, north] = bbox\r\n const geomStr = encodeURIComponent(\r\n JSON.stringify({ xmin: west, ymin: south, xmax: east, ymax: north, spatialReference: { wkid: 4326 } }),\r\n )\r\n spatialFilter = `&geometry=${geomStr}&geometryType=esriGeometryEnvelope&spatialRel=esriSpatialRelIntersects&inSR=4326`\r\n }\r\n\r\n // Round bbox to 0.1° grid to maximise cache hits while panning\r\n const bboxKey = bbox\r\n ? bbox.map(n => (Math.round(n * 10) / 10).toFixed(1)).join(',')\r\n : 'global'\r\n const zoomBucket = Math.floor(zoom / 2)\r\n const featuresKey = `features:arcgis:${service.name}_${layerIndex}:${bboxKey}:z${zoomBucket}:${modTime}`\r\n\r\n const cached = getCache<AllGeoJSON>(featuresKey)\r\n if (cached) return cached\r\n\r\n const inFlight = inFlightFeatureRequests.get(featuresKey)\r\n if (inFlight) return inFlight\r\n\r\n const baseQuery = `${url}/${layerIndex}/query?outFields=*&where=1%3D1&f=geojson${spatialFilter}`\r\n\r\n const request = (async () => {\r\n try {\r\n const firstRes = await fetchWithTimeout(`${baseQuery}&resultOffset=0&resultRecordCount=${pageSize}`, 15_000)\r\n if (!firstRes.ok) return { type: 'FeatureCollection', features: [] } as AllGeoJSON\r\n\r\n const firstPage = await firstRes.json()\r\n if (!firstPage?.features) return { type: 'FeatureCollection', features: [] } as AllGeoJSON\r\n\r\n const allFeatures = [...firstPage.features]\r\n\r\n // If the server returned fewer features than the requested page size, the first page is complete.\r\n // This avoids an unnecessary count request for small datasets that have already finished loading.\r\n if (firstPage.exceededTransferLimit && firstPage.features.length >= pageSize) {\r\n try {\r\n const countRes = await fetchWithTimeout(`${baseQuery}&returnCountOnly=true&f=json`, 5_000)\r\n if (countRes.ok) {\r\n const { count: total } = await countRes.json()\r\n if (total > pageSize) {\r\n // Cap at 10 additional pages (~20 000 records max) to avoid browser memory issues\r\n const numPages = Math.min(Math.ceil((total - pageSize) / pageSize), 10)\r\n const morePages = await Promise.all(\r\n Array.from({ length: numPages }, (_, i) =>\r\n fetchWithTimeout(\r\n `${baseQuery}&resultOffset=${pageSize * (i + 1)}&resultRecordCount=${pageSize}`,\r\n 15_000,\r\n )\r\n .then(r => r.ok ? r.json() : null)\r\n .then(p => p?.features ?? [])\r\n .catch(() => []),\r\n ),\r\n )\r\n for (const page of morePages) allFeatures.push(...page)\r\n }\r\n }\r\n }\r\n catch { /* use first page only */ }\r\n }\r\n\r\n const result = { type: 'FeatureCollection', features: allFeatures } as AllGeoJSON\r\n // Viewport-constrained results cached for 15 min; global results for 1 hr\r\n setCache(featuresKey, result, bbox ? 15 * 60 * 1000 : 60 * 60 * 1000)\r\n return result\r\n }\r\n catch (error) {\r\n console.error(`ArcGIS: Error fetching features for layer ${layerIndex}:`, error)\r\n return { type: 'FeatureCollection', features: [] } as AllGeoJSON\r\n }\r\n finally {\r\n inFlightFeatureRequests.delete(featuresKey)\r\n }\r\n })()\r\n\r\n inFlightFeatureRequests.set(featuresKey, request)\r\n return request\r\n }\r\n\r\n const getFeaturesData = async () => {\r\n try {\r\n const res = await fetchWithTimeout(`${url}/${layerIndex}?f=pjson`)\r\n return res.ok ? res.json() : undefined\r\n }\r\n catch { return undefined }\r\n }\r\n\r\n const getFields = async () => {\r\n try {\r\n const fieldsKey = `fields:arcgis:${service.name}:${layerIndex}:${modTime}`\r\n const cached = getCache<any[]>(fieldsKey)\r\n if (cached) return cached\r\n\r\n const res = await fetchWithTimeout(featureInfoUrl)\r\n if (!res.ok) return []\r\n const featureData = await res.json()\r\n if (!featureData.fields) return []\r\n\r\n const typeMap = esriFieldTypes()\r\n\r\n const nameBasedType = (raw: any): FieldType | undefined => {\r\n const lc = (raw.name || '').toLowerCase()\r\n if (/(percentage|percent|ratio|average)/.test(lc)) return 'number'\r\n if (/(date|year|month|day|time)/.test(lc)) return 'datetime'\r\n return undefined\r\n }\r\n\r\n const inferFieldType = (raw: any): FieldType => {\r\n const norm = ([raw.type, raw.actualType, raw.sqlType, raw.esriType] as (string | undefined)[])\r\n .filter(Boolean).map(v => String(v).toLowerCase())\r\n if (norm.some(v => v.includes('boolean') || v === 'bool' || v === 'esrifieldtypeboolean')) return 'boolean'\r\n if (norm.some(v => /(double|float|integer|smallint|single|numeric|number|decimal)/.test(v)\r\n || ['esrifieldtypeinteger', 'esrifieldtypesmallinteger', 'esrifieldtypedouble', 'esrifieldtypefloat', 'esrifieldtypesingle'].includes(v))) return 'number'\r\n if (norm.some(v => /(date|time|timestamp)/.test(v))) return 'datetime'\r\n if (norm.some(v => /(globalid|guid|objectid|^oid$|_id$|id$)/.test(v))) return 'id'\r\n if (norm.some(v => v.includes('blob'))) return 'blob'\r\n if (norm.some(v => v.includes('raster') || v.includes('geometry'))) return 'object'\r\n return 'string'\r\n }\r\n\r\n const mapped = featureData.fields.map((field: any) => {\r\n const rawEsriType = field.type\r\n const inferred = nameBasedType(field) || typeMap[rawEsriType]?.type || inferFieldType(field)\r\n return { ...field, esriType: rawEsriType, type: inferred }\r\n })\r\n setCache(fieldsKey, mapped, 24 * 60 * 60 * 1000)\r\n return mapped\r\n }\r\n catch { return [] }\r\n }\r\n\r\n const baseName = formatName(service.name)\r\n const layerName = layer.name || `Layer ${layerIndex}`\r\n const name = layers.length > 1 ? `${baseName} - ${layerName}` : baseName\r\n\r\n return {\r\n id: extraInfo.id ? `${extraInfo.id}_${layerIndex}` : `${service.name}_${layerIndex}`,\r\n name,\r\n type: Array.isArray(service.layers) && service.layers[0]?.geometryType\r\n ? service.layers[0].geometryType\r\n : extraInfo.type || 'Feature Layer',\r\n datasetType: 'GeoJSON',\r\n dataManagementSystem: DataManagementSystem.Arcgis,\r\n url,\r\n license: extraInfo.licenseInfo || 'Unknown',\r\n description: extraInfo.description ? stripHtml(extraInfo.description) : 'No description available',\r\n publisher: extraInfo.owner || 'Unknown',\r\n contact: extraInfo.contact || 'Unknown',\r\n keywords: extraInfo.tags || extraInfo.typedKeywords || [],\r\n subject: extraInfo.subject || [],\r\n countrySubdivision,\r\n municipality,\r\n getFields,\r\n getFeatures,\r\n getFeaturesData,\r\n group,\r\n portal,\r\n layerColor: layerColorByName(name),\r\n } satisfies Dataset\r\n }),\r\n )\r\n\r\n return layerResults\r\n .filter((r): r is PromiseFulfilledResult<Dataset> => r.status === 'fulfilled' && r.value !== null)\r\n .map(r => r.value)\r\n }\r\n\r\n // Process at most 5 services concurrently — prevents ArcGIS rate-limiting\r\n const serviceResults = await withConcurrencyLimit(data.services, 5, processService)\r\n\r\n for (const result of serviceResults) {\r\n if (result.status === 'fulfilled') transformedDatasets.push(...result.value)\r\n }\r\n\r\n return transformedDatasets\r\n }\r\n catch (error) {\r\n console.error(`[ArcGIS] Failed to fetch datasets for portal \"${portal.name}\":`, error)\r\n return []\r\n }\r\n}\r\n\r\nexport interface EsriFieldTypes {\r\n [key: string]: { description: string, type: FieldType }\r\n}\r\n\r\nexport function esriFieldTypes(): EsriFieldTypes {\r\n return {\r\n esriFieldTypeString: { description: 'Text Field', type: 'string' },\r\n esriFieldTypeGlobalID: { description: 'Global ID', type: 'id' },\r\n esriFieldTypeGUID: { description: 'Global UID', type: 'id' },\r\n esriFieldTypeSmallInteger: { description: '16-bit Integer', type: 'number' },\r\n esriFieldTypeInteger: { description: '32-bit Integer', type: 'number' },\r\n esriFieldTypeSingle: { description: 'Single Precision Float', type: 'number' },\r\n esriFieldTypeDouble: { description: 'Double Precision Float', type: 'number' },\r\n esriFieldTypeDate: { description: 'Date/Time', type: 'datetime' },\r\n esriFieldTypedOnly: { description: 'Date', type: 'datetime' },\r\n esriFieldTypeTimeOnly: { description: 'Time', type: 'string' },\r\n esriFieldTypeTimestampOffset: { description: 'Timestamp', type: 'string' },\r\n esriFieldTypeBlob: { description: 'Binary', type: 'blob' },\r\n esriFieldTypeRaster: { description: 'Raster', type: 'object' },\r\n esriFieldTypeXML: { description: 'XML', type: 'string' },\r\n esriFieldTypeGeometry: { description: 'Spatial Geometry', type: 'object' },\r\n esriFieldTypeOID: { description: 'Object ID', type: 'id' },\r\n }\r\n}\r\n"],"mappings":"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","names":["_a"]}
@@ -1 +1 @@
1
- {"version":3,"file":"builtinLiveDatasets.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/src/builtinLiveDatasets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AA4DhE,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,EAAE,OAAO,EAAmB,CAAA"}
1
+ {"version":3,"file":"builtinLiveDatasets.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/src/builtinLiveDatasets.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAyDhE,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,EAAE,OAAO,EAAmB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/builtinLiveDatasets.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Dataset } from '../../../../../types/datasetTypes'\r\nimport { DatasetGroup, type OpenDataPortal } from '../../../../../types/dbTypes'\r\nimport { layerColorByName } from '../../utils/stringToColour'\r\nimport { buildWmsTileUrl } from './urlSources'\r\nimport type { AllGeoJSON } from '@turf/turf'\r\n\r\n/**\r\n * Curated \"live\" datasets surfaced in the dataset manager's Live Data tab.\r\n *\r\n * Unlike portal-fetched datasets these are defined in code: a small, known set\r\n * of always-current federated feeds. The first is Environment and Climate Change\r\n * Canada's precipitation radar (MSC GeoMet) — a WMS raster of rain rate, the\r\n * server always serving the latest frame (refreshed ~every 6 minutes). Federated\r\n * and Canadian-governed: nothing of ours egresses, the browser fetches GeoMet\r\n * raster tiles directly.\r\n *\r\n * Each entry carries `portal.live === true` — the only thing the Live Data tab\r\n * filters on — and renders through the WMS branch of OpenDataLayer.\r\n */\r\n\r\nconst GEOMET_WMS_URL =\r\n process.env.NEXT_PUBLIC_GEOMET_WMS_URL || 'https://geo.weather.gc.ca/geomet'\r\n\r\nconst liveWeatherPortal: OpenDataPortal = {\r\n id: -1001, // synthetic — built-in, never persisted\r\n name: 'ECCC · MSC GeoMet',\r\n group: DatasetGroup.National,\r\n dataManagementSystem: 'Other',\r\n apiUrl: GEOMET_WMS_URL,\r\n country: 'Canada',\r\n live: true,\r\n}\r\n\r\nconst emptyFeatures = async (): Promise<AllGeoJSON> =>\r\n ({ type: 'FeatureCollection', features: [] } as AllGeoJSON)\r\n\r\nconst weatherRadar: Dataset = {\r\n id: 'live-weather-radar',\r\n name: 'Live Weather Radar (Canada)',\r\n publisher: 'Environment and Climate Change Canada · MSC GeoMet',\r\n description: 'Live precipitation radar (RADAR_1KM_RRAI) — rain rate, latest frame served ~every 6 minutes.',\r\n dataManagementSystem: 'other',\r\n datasetType: 'WMS',\r\n type: 'WMS',\r\n countrySubdivision: '',\r\n municipality: '',\r\n group: DatasetGroup.National,\r\n clickable: false,\r\n // MapLibre raster tile template; {bbox-epsg-3857} stays literal (substituted per tile).\r\n url: buildWmsTileUrl(GEOMET_WMS_URL, 'RADAR_1KM_RRAI'),\r\n // Time-enabled: WMSDatasetLayer animates the WMS TIME dimension via the scrub/play control.\r\n timeEnabled: true,\r\n wms: { baseUrl: GEOMET_WMS_URL, layers: 'RADAR_1KM_RRAI' },\r\n information: 'https://eccc-msc.github.io/open-data/msc-geomet/readme_en/',\r\n portal: liveWeatherPortal,\r\n layerColor: layerColorByName('Live Weather Radar'),\r\n getFields: async () => [],\r\n getFeatures: emptyFeatures,\r\n}\r\n\r\n/** Built-in live datasets, injected into the manager so the Live Data tab has real content. */\r\nexport const builtinLiveDatasets: Dataset[] = [weatherRadar]\r\n"],"mappings":"AAIA,SAAS,oBAAyC;AAClD,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAiBhC,MAAM,iBACJ,QAAQ,IAAI,8BAA8B;AAE5C,MAAM,oBAAoC;AAAA,EACxC,IAAI;AAAA;AAAA,EACJ,MAAM;AAAA,EACN,OAAO,aAAa;AAAA,EACpB,sBAAsB;AAAA,EACtB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AACR;AAEA,MAAM,gBAAgB,aACnB,EAAE,MAAM,qBAAqB,UAAU,CAAC,EAAE;AAE7C,MAAM,eAAwB;AAAA,EAC5B,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,OAAO,aAAa;AAAA,EACpB,WAAW;AAAA;AAAA,EAEX,KAAK,gBAAgB,gBAAgB,gBAAgB;AAAA;AAAA,EAErD,aAAa;AAAA,EACb,KAAK,EAAE,SAAS,gBAAgB,QAAQ,iBAAiB;AAAA,EACzD,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY,iBAAiB,oBAAoB;AAAA,EACjD,WAAW,YAAY,CAAC;AAAA,EACxB,aAAa;AACf;AAGO,MAAM,sBAAiC,CAAC,YAAY;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/builtinLiveDatasets.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { DatasetGroup, type OpenDataPortal } from '../../../../../types/dbTypes'\r\nimport { layerColorByName } from '../../utils/stringToColour'\r\n\r\nimport { buildWmsTileUrl } from './urlSources'\r\n\r\nimport type { Dataset } from '../../../../../types/datasetTypes'\r\nimport type { AllGeoJSON } from '@turf/turf'\r\n\r\n/**\r\n * Curated \"live\" datasets surfaced in the dataset manager's Live Data tab.\r\n *\r\n * Unlike portal-fetched datasets these are defined in code: a small, known set\r\n * of always-current federated feeds. The first is Environment and Climate Change\r\n * Canada's precipitation radar (MSC GeoMet) — a WMS raster of rain rate, the\r\n * server always serving the latest frame (refreshed ~every 6 minutes). Federated\r\n * and Canadian-governed: nothing of ours egresses, the browser fetches GeoMet\r\n * raster tiles directly.\r\n *\r\n * Each entry carries `portal.live === true` — the only thing the Live Data tab\r\n * filters on — and renders through the WMS branch of OpenDataLayer.\r\n */\r\n\r\nconst GEOMET_WMS_URL =\r\n process.env.NEXT_PUBLIC_GEOMET_WMS_URL || 'https://geo.weather.gc.ca/geomet'\r\n\r\nconst liveWeatherPortal: OpenDataPortal = {\r\n id: -1001, // synthetic — built-in, never persisted\r\n name: 'ECCC · MSC GeoMet',\r\n group: DatasetGroup.National,\r\n dataManagementSystem: 'Other',\r\n apiUrl: GEOMET_WMS_URL,\r\n country: 'Canada',\r\n live: true,\r\n}\r\n\r\nconst emptyFeatures = async (): Promise<AllGeoJSON> =>\r\n ({ type: 'FeatureCollection', features: [] } as AllGeoJSON)\r\n\r\nconst weatherRadar: Dataset = {\r\n id: 'live-weather-radar',\r\n name: 'Live Weather Radar (Canada)',\r\n publisher: 'Environment and Climate Change Canada · MSC GeoMet',\r\n description: 'Live precipitation radar (RADAR_1KM_RRAI) — rain rate, latest frame served ~every 6 minutes.',\r\n dataManagementSystem: 'other',\r\n datasetType: 'WMS',\r\n type: 'WMS',\r\n countrySubdivision: '',\r\n municipality: '',\r\n group: DatasetGroup.National,\r\n clickable: false,\r\n // MapLibre raster tile template; {bbox-epsg-3857} stays literal (substituted per tile).\r\n url: buildWmsTileUrl(GEOMET_WMS_URL, 'RADAR_1KM_RRAI'),\r\n // Time-enabled: WMSDatasetLayer animates the WMS TIME dimension via the scrub/play control.\r\n timeEnabled: true,\r\n wms: { baseUrl: GEOMET_WMS_URL, layers: 'RADAR_1KM_RRAI' },\r\n information: 'https://eccc-msc.github.io/open-data/msc-geomet/readme_en/',\r\n portal: liveWeatherPortal,\r\n layerColor: layerColorByName('Live Weather Radar'),\r\n getFields: async () => [],\r\n getFeatures: emptyFeatures,\r\n}\r\n\r\n/** Built-in live datasets, injected into the manager so the Live Data tab has real content. */\r\nexport const builtinLiveDatasets: Dataset[] = [weatherRadar]\r\n"],"mappings":"AAGA,SAAS,oBAAyC;AAClD,SAAS,wBAAwB;AAEjC,SAAS,uBAAuB;AAmBhC,MAAM,iBACJ,QAAQ,IAAI,8BAA8B;AAE5C,MAAM,oBAAoC;AAAA,EACxC,IAAI;AAAA;AAAA,EACJ,MAAM;AAAA,EACN,OAAO,aAAa;AAAA,EACpB,sBAAsB;AAAA,EACtB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AACR;AAEA,MAAM,gBAAgB,aACnB,EAAE,MAAM,qBAAqB,UAAU,CAAC,EAAE;AAE7C,MAAM,eAAwB;AAAA,EAC5B,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,aAAa;AAAA,EACb,sBAAsB;AAAA,EACtB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,OAAO,aAAa;AAAA,EACpB,WAAW;AAAA;AAAA,EAEX,KAAK,gBAAgB,gBAAgB,gBAAgB;AAAA;AAAA,EAErD,aAAa;AAAA,EACb,KAAK,EAAE,SAAS,gBAAgB,QAAQ,iBAAiB;AAAA,EACzD,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY,iBAAiB,oBAAoB;AAAA,EACjD,WAAW,YAAY,CAAC;AAAA,EACxB,aAAa;AACf;AAGO,MAAM,sBAAiC,CAAC,YAAY;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/cache.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\ntype CacheValue<T> = {\r\n v: T\r\n e: number\r\n}\r\n\r\nconst NS = 'datasetCache:'\r\nconst mem = new Map<string, CacheValue<any>>()\r\n\r\nfunction now() {\r\n return Date.now()\r\n}\r\n\r\nexport function makeKey(parts: Array<string | number | null | undefined>) {\r\n return NS + parts.map((p) => String(p ?? '')).join('|')\r\n}\r\n\r\nexport function setCache<T>(key: string, value: T, ttlMs: number) {\r\n const rec: CacheValue<T> = { v: value, e: now() + ttlMs }\r\n try {\r\n mem.set(key, rec)\r\n if (typeof window !== 'undefined' && window.localStorage) {\r\n window.localStorage.setItem(key, JSON.stringify(rec))\r\n }\r\n } catch {}\r\n}\r\n\r\nexport function getCache<T>(key: string): T | undefined {\r\n try {\r\n const inMem = mem.get(key)\r\n if (inMem) {\r\n if (inMem.e > now()) return inMem.v as T\r\n mem.delete(key)\r\n }\r\n\r\n if (typeof window !== 'undefined' && window.localStorage) {\r\n const raw = window.localStorage.getItem(key)\r\n if (!raw) return undefined\r\n const parsed = JSON.parse(raw) as CacheValue<T>\r\n if (parsed?.e && parsed.e > now()) {\r\n mem.set(key, parsed)\r\n return parsed.v\r\n }\r\n // expired\r\n window.localStorage.removeItem(key)\r\n }\r\n } catch {}\r\n return undefined\r\n}\r\n\r\nexport function withCache<T>(key: string, ttlMs: number, fn: () => Promise<T>): Promise<T> {\r\n const existing = getCache<T>(key)\r\n if (existing !== undefined) return Promise.resolve(existing)\r\n return fn().then((res) => {\r\n setCache(key, res, ttlMs)\r\n return res\r\n })\r\n}\r\n\r\nexport async function withServerCache<T>(key: string, ttlMs: number, fn: () => Promise<T>): Promise<T> {\r\n if (typeof window === 'undefined') {\r\n const ttlSeconds = Math.floor(ttlMs / 1000)\r\n try {\r\n const { getMemcache, setMemcache } = await import('../../../../../utils/memcache')\r\n \r\n const cached = await getMemcache<T>(key)\r\n if (cached !== null) {\r\n setCache(key, cached, ttlMs)\r\n return cached\r\n }\r\n \r\n const localCached = getCache<T>(key)\r\n if (localCached !== undefined) {\r\n return localCached\r\n }\r\n\r\n const result = await fn()\r\n \r\n try {\r\n await setMemcache(key, result, ttlSeconds)\r\n } catch (error) {\r\n console.warn('Memcache write failed:', error)\r\n }\r\n setCache(key, result, ttlMs)\r\n \r\n return result\r\n } catch (error) {\r\n console.warn('Memcache operations failed, falling back to local cache:', error)\r\n \r\n const localCached = getCache<T>(key)\r\n if (localCached !== undefined) {\r\n return localCached\r\n }\r\n\r\n const result = await fn()\r\n setCache(key, result, ttlMs)\r\n return result\r\n }\r\n }\r\n\r\n return withCache(key, ttlMs, fn)\r\n}\r\n\r\nexport function buildValidationKey(source: string, id: string | number | undefined, version?: string | number | null) {\r\n return makeKey(['valid', source, id ?? '', version ?? ''])\r\n}\r\n"],"mappings":"AAQA,MAAM,KAAK;AACX,MAAM,MAAM,oBAAI,IAA6B;AAE7C,SAAS,MAAM;AACb,SAAO,KAAK,IAAI;AAClB;AAEO,SAAS,QAAQ,OAAkD;AACxE,SAAO,KAAK,MAAM,IAAI,CAAC,MAAM,OAAO,gBAAK,EAAE,CAAC,EAAE,KAAK,GAAG;AACxD;AAEO,SAAS,SAAY,KAAa,OAAU,OAAe;AAChE,QAAM,MAAqB,EAAE,GAAG,OAAO,GAAG,IAAI,IAAI,MAAM;AACxD,MAAI;AACF,QAAI,IAAI,KAAK,GAAG;AAChB,QAAI,OAAO,WAAW,eAAe,OAAO,cAAc;AACxD,aAAO,aAAa,QAAQ,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,IACtD;AAAA,EACF,SAAQ;AAAA,EAAC;AACX;AAEO,SAAS,SAAY,KAA4B;AACtD,MAAI;AACF,UAAM,QAAQ,IAAI,IAAI,GAAG;AACzB,QAAI,OAAO;AACT,UAAI,MAAM,IAAI,IAAI,EAAG,QAAO,MAAM;AAClC,UAAI,OAAO,GAAG;AAAA,IAChB;AAEA,QAAI,OAAO,WAAW,eAAe,OAAO,cAAc;AACxD,YAAM,MAAM,OAAO,aAAa,QAAQ,GAAG;AAC3C,UAAI,CAAC,IAAK,QAAO;AACjB,YAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,WAAI,iCAAQ,MAAK,OAAO,IAAI,IAAI,GAAG;AACjC,YAAI,IAAI,KAAK,MAAM;AACnB,eAAO,OAAO;AAAA,MAChB;AAEA,aAAO,aAAa,WAAW,GAAG;AAAA,IACpC;AAAA,EACF,SAAQ;AAAA,EAAC;AACT,SAAO;AACT;AAEO,SAAS,UAAa,KAAa,OAAe,IAAkC;AACzF,QAAM,WAAW,SAAY,GAAG;AAChC,MAAI,aAAa,OAAW,QAAO,QAAQ,QAAQ,QAAQ;AAC3D,SAAO,GAAG,EAAE,KAAK,CAAC,QAAQ;AACxB,aAAS,KAAK,KAAK,KAAK;AACxB,WAAO;AAAA,EACT,CAAC;AACH;AAEA,eAAsB,gBAAmB,KAAa,OAAe,IAAkC;AACrG,MAAI,OAAO,WAAW,aAAa;AACjC,UAAM,aAAa,KAAK,MAAM,QAAQ,GAAI;AAC1C,QAAI;AACF,YAAM,EAAE,aAAa,YAAY,IAAI,MAAM,OAAO,+BAA+B;AAEjF,YAAM,SAAS,MAAM,YAAe,GAAG;AACvC,UAAI,WAAW,MAAM;AACnB,iBAAS,KAAK,QAAQ,KAAK;AAC3B,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,SAAY,GAAG;AACnC,UAAI,gBAAgB,QAAW;AAC7B,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,MAAM,GAAG;AAExB,UAAI;AACF,cAAM,YAAY,KAAK,QAAQ,UAAU;AAAA,MAC3C,SAAS,OAAO;AACd,gBAAQ,KAAK,0BAA0B,KAAK;AAAA,MAC9C;AACA,eAAS,KAAK,QAAQ,KAAK;AAE3B,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,KAAK,4DAA4D,KAAK;AAE9E,YAAM,cAAc,SAAY,GAAG;AACnC,UAAI,gBAAgB,QAAW;AAC7B,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,MAAM,GAAG;AACxB,eAAS,KAAK,QAAQ,KAAK;AAC3B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,UAAU,KAAK,OAAO,EAAE;AACjC;AAEO,SAAS,mBAAmB,QAAgB,IAAiC,SAAkC;AACpH,SAAO,QAAQ,CAAC,SAAS,QAAQ,kBAAM,IAAI,4BAAW,EAAE,CAAC;AAC3D;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/cache.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\ntype CacheValue<T> = {\r\n v: T\r\n e: number\r\n}\r\n\r\nconst NS = 'datasetCache:'\r\nconst mem = new Map<string, CacheValue<any>>()\r\n\r\nfunction now() {\r\n return Date.now()\r\n}\r\n\r\nexport function makeKey(parts: Array<string | number | null | undefined>) {\r\n return NS + parts.map((p) => String(p ?? '')).join('|')\r\n}\r\n\r\nexport function setCache<T>(key: string, value: T, ttlMs: number) {\r\n const rec: CacheValue<T> = { v: value, e: now() + ttlMs }\r\n try {\r\n mem.set(key, rec)\r\n if (typeof window !== 'undefined' && window.localStorage) {\r\n window.localStorage.setItem(key, JSON.stringify(rec))\r\n }\r\n } catch {}\r\n}\r\n\r\nexport function getCache<T>(key: string): T | undefined {\r\n try {\r\n const inMem = mem.get(key)\r\n if (inMem) {\r\n if (inMem.e > now()) return inMem.v as T\r\n mem.delete(key)\r\n }\r\n\r\n if (typeof window !== 'undefined' && window.localStorage) {\r\n const raw = window.localStorage.getItem(key)\r\n if (!raw) return undefined\r\n const parsed = JSON.parse(raw) as CacheValue<T>\r\n if (parsed?.e && parsed.e > now()) {\r\n mem.set(key, parsed)\r\n return parsed.v\r\n }\r\n // expired\r\n window.localStorage.removeItem(key)\r\n }\r\n } catch {}\r\n return undefined\r\n}\r\n\r\nexport function withCache<T>(key: string, ttlMs: number, fn: () => Promise<T>): Promise<T> {\r\n const existing = getCache<T>(key)\r\n if (existing !== undefined) return Promise.resolve(existing)\r\n return fn().then((res) => {\r\n setCache(key, res, ttlMs)\r\n return res\r\n })\r\n}\r\n\r\nexport async function withServerCache<T>(key: string, ttlMs: number, fn: () => Promise<T>): Promise<T> {\r\n if (typeof window === 'undefined') {\r\n const ttlSeconds = Math.floor(ttlMs / 1000)\r\n try {\r\n const { getMemcache, setMemcache } = await import('../../../../../utils/memcache')\r\n\r\n const cached = await getMemcache<T>(key)\r\n if (cached !== null) {\r\n setCache(key, cached, ttlMs)\r\n return cached\r\n }\r\n\r\n const localCached = getCache<T>(key)\r\n if (localCached !== undefined) {\r\n return localCached\r\n }\r\n\r\n const result = await fn()\r\n\r\n try {\r\n await setMemcache(key, result, ttlSeconds)\r\n } catch (error) {\r\n console.warn('Memcache write failed:', error)\r\n }\r\n setCache(key, result, ttlMs)\r\n\r\n return result\r\n } catch (error) {\r\n console.warn('Memcache operations failed, falling back to local cache:', error)\r\n\r\n const localCached = getCache<T>(key)\r\n if (localCached !== undefined) {\r\n return localCached\r\n }\r\n\r\n const result = await fn()\r\n setCache(key, result, ttlMs)\r\n return result\r\n }\r\n }\r\n\r\n return withCache(key, ttlMs, fn)\r\n}\r\n\r\nexport function buildValidationKey(source: string, id: string | number | undefined, version?: string | number | null) {\r\n return makeKey(['valid', source, id ?? '', version ?? ''])\r\n}\r\n"],"mappings":"AAQA,MAAM,KAAK;AACX,MAAM,MAAM,oBAAI,IAA6B;AAE7C,SAAS,MAAM;AACb,SAAO,KAAK,IAAI;AAClB;AAEO,SAAS,QAAQ,OAAkD;AACxE,SAAO,KAAK,MAAM,IAAI,CAAC,MAAM,OAAO,gBAAK,EAAE,CAAC,EAAE,KAAK,GAAG;AACxD;AAEO,SAAS,SAAY,KAAa,OAAU,OAAe;AAChE,QAAM,MAAqB,EAAE,GAAG,OAAO,GAAG,IAAI,IAAI,MAAM;AACxD,MAAI;AACF,QAAI,IAAI,KAAK,GAAG;AAChB,QAAI,OAAO,WAAW,eAAe,OAAO,cAAc;AACxD,aAAO,aAAa,QAAQ,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,IACtD;AAAA,EACF,SAAQ;AAAA,EAAC;AACX;AAEO,SAAS,SAAY,KAA4B;AACtD,MAAI;AACF,UAAM,QAAQ,IAAI,IAAI,GAAG;AACzB,QAAI,OAAO;AACT,UAAI,MAAM,IAAI,IAAI,EAAG,QAAO,MAAM;AAClC,UAAI,OAAO,GAAG;AAAA,IAChB;AAEA,QAAI,OAAO,WAAW,eAAe,OAAO,cAAc;AACxD,YAAM,MAAM,OAAO,aAAa,QAAQ,GAAG;AAC3C,UAAI,CAAC,IAAK,QAAO;AACjB,YAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,WAAI,iCAAQ,MAAK,OAAO,IAAI,IAAI,GAAG;AACjC,YAAI,IAAI,KAAK,MAAM;AACnB,eAAO,OAAO;AAAA,MAChB;AAEA,aAAO,aAAa,WAAW,GAAG;AAAA,IACpC;AAAA,EACF,SAAQ;AAAA,EAAC;AACT,SAAO;AACT;AAEO,SAAS,UAAa,KAAa,OAAe,IAAkC;AACzF,QAAM,WAAW,SAAY,GAAG;AAChC,MAAI,aAAa,OAAW,QAAO,QAAQ,QAAQ,QAAQ;AAC3D,SAAO,GAAG,EAAE,KAAK,CAAC,QAAQ;AACxB,aAAS,KAAK,KAAK,KAAK;AACxB,WAAO;AAAA,EACT,CAAC;AACH;AAEA,eAAsB,gBAAmB,KAAa,OAAe,IAAkC;AACrG,MAAI,OAAO,WAAW,aAAa;AACjC,UAAM,aAAa,KAAK,MAAM,QAAQ,GAAI;AAC1C,QAAI;AACF,YAAM,EAAE,aAAa,YAAY,IAAI,MAAM,OAAO,+BAA+B;AAEjF,YAAM,SAAS,MAAM,YAAe,GAAG;AACvC,UAAI,WAAW,MAAM;AACnB,iBAAS,KAAK,QAAQ,KAAK;AAC3B,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,SAAY,GAAG;AACnC,UAAI,gBAAgB,QAAW;AAC7B,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,MAAM,GAAG;AAExB,UAAI;AACF,cAAM,YAAY,KAAK,QAAQ,UAAU;AAAA,MAC3C,SAAS,OAAO;AACd,gBAAQ,KAAK,0BAA0B,KAAK;AAAA,MAC9C;AACA,eAAS,KAAK,QAAQ,KAAK;AAE3B,aAAO;AAAA,IACT,SAAS,OAAO;AACd,cAAQ,KAAK,4DAA4D,KAAK;AAE9E,YAAM,cAAc,SAAY,GAAG;AACnC,UAAI,gBAAgB,QAAW;AAC7B,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,MAAM,GAAG;AACxB,eAAS,KAAK,QAAQ,KAAK;AAC3B,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,UAAU,KAAK,OAAO,EAAE;AACjC;AAEO,SAAS,mBAAmB,QAAgB,IAAiC,SAAkC;AACpH,SAAO,QAAQ,CAAC,SAAS,QAAQ,kBAAM,IAAI,4BAAW,EAAE,CAAC;AAC3D;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import type { Dataset, FieldType } from '../../../../../types/datasetTypes';
2
- import { OpenDataPortal } from '../../../../../types/dbTypes';
2
+ import type { OpenDataPortal } from '../../../../../types/dbTypes';
3
3
  export declare function fetchCkanDatasets(portal: OpenDataPortal): Promise<Dataset[]>;
4
4
  export interface CkanFieldTypes {
5
5
  [key: string]: {
@@ -1 +1 @@
1
- {"version":3,"file":"ckanDatasets.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/src/ckanDatasets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAK3E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,EAAE,CAAC,CA8QpB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAA;CACxD"}
1
+ {"version":3,"file":"ckanDatasets.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/src/ckanDatasets.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAOlE,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,EAAE,CAAC,CA4QpB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAA;CACxD"}
@@ -1,6 +1,6 @@
1
+ import { layerColorByName } from "../../utils/stringToColour";
1
2
  import { formatName, stripHtml } from "../utils";
2
3
  import { buildValidationKey, getCache, setCache, withCache } from "./cache";
3
- import { layerColorByName } from "../../utils/stringToColour";
4
4
  async function fetchCkanDatasets(portal) {
5
5
  const { apiUrl, countrySubdivision, municipality, group } = portal;
6
6
  const isServer = typeof window === "undefined";
@@ -122,12 +122,9 @@ async function fetchCkanDatasets(portal) {
122
122
  return [];
123
123
  };
124
124
  const getFeatures = async () => {
125
- var _a2, _b2;
126
125
  const featuresKey = `features:ckan:${geoJsonResource.id}:${pkg.metadata_modified || pkg.metadata_created || ""}`;
127
126
  const cached = getCache(featuresKey);
128
127
  if (cached) {
129
- const cachedCount = "features" in cached ? (_b2 = (_a2 = cached.features) == null ? void 0 : _a2.length) != null ? _b2 : 0 : 0;
130
- console.log(`\u2705 CKAN getFeatures: Returning ${cachedCount} cached features for "${pkg.name}"`);
131
128
  return cached;
132
129
  }
133
130
  const limit = 5e3;
@@ -145,10 +142,10 @@ async function fetchCkanDatasets(portal) {
145
142
  let featuresCollection;
146
143
  if (data2.result && Array.isArray(data2.result.records)) {
147
144
  const features = data2.result.records.map((properties) => {
148
- var _a3;
145
+ var _a2;
149
146
  try {
150
147
  let geometry;
151
- geometry = ((_a3 = properties.geometry) == null ? void 0 : _a3.type) ? properties.geometry : JSON.parse(properties.geometry);
148
+ geometry = ((_a2 = properties.geometry) == null ? void 0 : _a2.type) ? properties.geometry : JSON.parse(properties.geometry);
152
149
  return {
153
150
  type: "Feature",
154
151
  geometry,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/ckanDatasets.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport type { Dataset, FieldType } from '../../../../../types/datasetTypes'\r\nimport { formatName, stripHtml } from '../utils'\r\nimport type { AllGeoJSON } from '@turf/turf'\r\nimport { buildValidationKey, getCache, setCache, withCache } from './cache'\r\nimport { layerColorByName } from '../../utils/stringToColour'\r\nimport { OpenDataPortal } from '../../../../../types/dbTypes'\r\n\r\n// Fetch CKAN GeoJSON datasets and transform to Dataset array\r\nexport async function fetchCkanDatasets(\r\n portal: OpenDataPortal,\r\n): Promise<Dataset[]> {\r\n const { apiUrl, countrySubdivision, municipality, group } = portal\r\n const isServer = typeof window === 'undefined'\r\n\r\n const buildUrl = (target: string) => {\r\n if (isServer) {\r\n return target\r\n }\r\n\r\n const proxied = `/api/ckanProxy?url=${encodeURIComponent(target)}`\r\n return proxied\r\n }\r\n\r\n // https://www.donneesquebec.ca/recherche/dataset/?sort=metadata_created+desc&_organization_limit=0&res_format=GeoJSON\r\n\r\n try {\r\n // Use your local API route to proxy the CKAN request when on the client\r\n const geoJsonListTarget = `${apiUrl}/api/3/action/package_search?fq=res_format:(geojson OR GeoJSON)&rows=100000`\r\n const response = await fetch(buildUrl(geoJsonListTarget))\r\n\r\n if (!response.ok) {\r\n return []\r\n }\r\n\r\n const data = await response.json()\r\n\r\n if (!data.success || !data.result || !Array.isArray(data.result.results)) {\r\n throw new Error('Invalid CKAN response structure')\r\n }\r\n\r\n const transformedDatasets: Dataset[] = (\r\n await Promise.all(\r\n data.result.results.map(async (pkg: any) => {\r\n // Find first GeoJSON resource\r\n const geoJsonResource = pkg.resources?.find(\r\n (resource: any) => resource.format?.toLowerCase() === 'geojson',\r\n )\r\n\r\n // Exclude if no GeoJSON resource\r\n if (!geoJsonResource) return\r\n\r\n // Exclude if not active\r\n const datastore = geoJsonResource.datastore_active?.toString().toLowerCase() === 'true'\r\n const isActive = datastore || geoJsonResource.state === 'active'\r\n if (!(datastore && geoJsonResource.url && isActive)) return\r\n\r\n // Determine the correct URL based on your working method\r\n let resourceUrl: string | null = null\r\n let resourceTarget: string | null = null\r\n let fieldsUrl: string | null = null\r\n\r\n if (datastore) {\r\n resourceTarget = `${apiUrl}/api/3/action/datastore_search?resource_id=${geoJsonResource.id}&limit=1000000`\r\n resourceUrl = buildUrl(resourceTarget)\r\n fieldsUrl = buildUrl(`${apiUrl}/api/3/action/datastore_search?resource_id=${geoJsonResource.id}&limit=0`)\r\n }\r\n else {\r\n resourceTarget = geoJsonResource.url\r\n resourceUrl = resourceTarget ? buildUrl(resourceTarget) : null\r\n }\r\n\r\n try {\r\n const sampleTarget = resourceTarget?.includes('datastore_search')\r\n ? resourceTarget.replace('limit=1000000', 'limit=1')\r\n : resourceTarget\r\n const sampleUrl = sampleTarget\r\n ? (sampleTarget.includes('limit=') ? buildUrl(sampleTarget) : buildUrl(`${sampleTarget}?limit=1`))\r\n : null\r\n\r\n if (sampleUrl) {\r\n const validKey = buildValidationKey('ckan', pkg.id, pkg.metadata_modified || pkg.metadata_created || undefined)\r\n const isValid = await withCache<boolean>(validKey, 24 * 60 * 60 * 1000, async () => {\r\n const sampleRes = await fetch(sampleUrl)\r\n if (sampleRes.ok) {\r\n const sample = await sampleRes.json()\r\n if (sample?.error) {\r\n const code = sample.error.code\r\n const msg = `${sample.error.message || ''} ${sample.error.messageCode || ''}`\r\n if (code === 499 || code === 504 || /token required|unauthorized|forbidden|timed out/i.test(msg)) return false\r\n }\r\n let hasGeom = true\r\n if (sample?.result?.records) {\r\n const rec = sample.result.records[0]\r\n const geom = rec?.geometry || (typeof rec?.geometry === 'string' ? JSON.parse(rec.geometry) : undefined)\r\n hasGeom = !!geom\r\n }\r\n else if (Array.isArray(sample?.features)) {\r\n hasGeom = sample.features.some((f: any) => f && f.geometry)\r\n }\r\n return !!hasGeom\r\n } else if ([401, 403, 504].includes(sampleRes.status)) {\r\n return false\r\n }\r\n return false\r\n })\r\n if (!isValid) return\r\n }\r\n }\r\n catch {\r\n }\r\n\r\n const getFeaturesData = async () => {\r\n if (resourceUrl) {\r\n try {\r\n const response = await fetch(fieldsUrl ?? resourceUrl)\r\n if (!response.ok) {\r\n console.error('Network response was not ok:', response.status)\r\n return\r\n }\r\n return await response.json()\r\n }\r\n catch (error) {\r\n console.error('Error fetching features data:', error)\r\n return\r\n }\r\n }\r\n }\r\n\r\n const getFields = async () => {\r\n if (fieldsUrl) {\r\n try {\r\n const fieldsKey = `fields:ckan:${geoJsonResource.id}:${pkg.metadata_modified || pkg.metadata_created || ''}`\r\n const cached = getCache<any[]>(fieldsKey)\r\n if (cached) return cached\r\n const dsRes = await fetch(fieldsUrl)\r\n if (dsRes.ok) {\r\n const dsData = await dsRes.json()\r\n const fields = (\r\n dsData.result.fields?.map((field: any) => ({\r\n name: field.id,\r\n type: ckanFieldTypes[field.type]?.type || field.type,\r\n ckanType: field.type,\r\n description: field.info || '',\r\n })) || []\r\n )\r\n setCache(fieldsKey, fields, 24 * 60 * 60 * 1000)\r\n return fields\r\n }\r\n }\r\n catch {\r\n return []\r\n }\r\n }\r\n return []\r\n }\r\n\r\n const getFeatures: () => Promise<AllGeoJSON> = async () => {\r\n // Check cache first\r\n const featuresKey = `features:ckan:${geoJsonResource.id}:${pkg.metadata_modified || pkg.metadata_created || ''}`\r\n const cached = getCache<AllGeoJSON>(featuresKey)\r\n if (cached) {\r\n const cachedCount = 'features' in cached ? cached.features?.length ?? 0 : 0\r\n console.log(`✅ CKAN getFeatures: Returning ${cachedCount} cached features for \"${pkg.name}\"`)\r\n return cached\r\n }\r\n\r\n const limit = 5_000\r\n const url2 = resourceUrl?.includes('datastore_search')\r\n ? `${resourceUrl}&limit=${limit}`\r\n : resourceUrl\r\n\r\n try {\r\n const response = await fetch(url2)\r\n if (!response.ok) {\r\n console.error('CKAN: Network response was not ok:', response.status)\r\n return {\r\n type: 'FeatureCollection',\r\n features: [],\r\n } as AllGeoJSON\r\n }\r\n const data = await response.json()\r\n let featuresCollection: AllGeoJSON | undefined\r\n\r\n if (data.result && Array.isArray(data.result.records)) {\r\n // CKAN Datastore: build FeatureCollection from records\r\n const features = data.result.records\r\n .map((properties: any) => {\r\n try {\r\n let geometry\r\n geometry = properties.geometry?.type ? properties.geometry : JSON.parse(properties.geometry)\r\n\r\n return {\r\n type: 'Feature',\r\n geometry,\r\n properties,\r\n }\r\n }\r\n catch {\r\n return null\r\n }\r\n })\r\n .filter((f: any) => f !== null)\r\n\r\n featuresCollection = {\r\n type: 'FeatureCollection',\r\n features,\r\n }\r\n }\r\n else if (\r\n data.type === 'FeatureCollection'\r\n && Array.isArray(data.features)\r\n ) {\r\n // Already a FeatureCollection\r\n featuresCollection = data\r\n }\r\n else {\r\n console.error(\r\n 'CKAN: No features available or unexpected response:',\r\n data,\r\n )\r\n return {\r\n type: 'FeatureCollection',\r\n features: [],\r\n } as AllGeoJSON\r\n }\r\n\r\n // Cache the result for 1 hour\r\n if (featuresCollection) {\r\n setCache(featuresKey, featuresCollection, 60 * 60 * 1000)\r\n }\r\n\r\n return featuresCollection\r\n }\r\n catch (error) {\r\n console.error('CKAN: Error processing dataset:', error)\r\n return {\r\n type: 'FeatureCollection',\r\n features: [],\r\n } as AllGeoJSON\r\n }\r\n }\r\n\r\n const name = formatName(pkg.title || pkg.name)\r\n\r\n return {\r\n id: pkg.id,\r\n name,\r\n url: fieldsUrl,\r\n publisher:\r\n pkg.organization?.title || pkg.organization?.name || 'Unknown',\r\n dataManagementSystem: 'ckan',\r\n license: pkg.license_title || pkg.license_id || 'Unknown',\r\n contact: pkg.author || pkg.maintainer || 'Unknown',\r\n keywords: pkg.tags?.map((tag: any) => tag.name) || [],\r\n description: pkg.notes\r\n ? stripHtml(pkg.notes)\r\n : 'No description available',\r\n dateReleased: pkg.metadata_created || '',\r\n dateUpdated: pkg.metadata_modified || '',\r\n information: pkg.information_url || '',\r\n countrySubdivision,\r\n municipality,\r\n type: pkg.type || 'GeoJSON',\r\n portal,\r\n getFields,\r\n getFeatures,\r\n getFeaturesData,\r\n group,\r\n layerColor: layerColorByName(name),\r\n }\r\n }),\r\n )\r\n ).filter(Boolean) // Remove nulls (excluded datasets)\r\n\r\n return transformedDatasets\r\n }\r\n catch (error) {\r\n console.error('Error fetching CKAN GeoJSON datasets:', error)\r\n return []\r\n }\r\n}\r\n\r\nexport interface CkanFieldTypes {\r\n [key: string]: { description: string, type: FieldType }\r\n}\r\n\r\nfunction ckanFieldTypes(): CkanFieldTypes {\r\n return {\r\n text: { description: 'Text', type: 'string' },\r\n int: { description: 'Integer', type: 'number' },\r\n float: { description: 'Float', type: 'number' },\r\n bool: { description: 'Boolean', type: 'boolean' },\r\n date: { description: 'Date', type: 'datetime' },\r\n timestamp: { description: 'Timestamp', type: 'datetime' },\r\n json: { description: 'JSON', type: 'object' },\r\n // Add more CKAN field types as needed\r\n }\r\n}\r\n"],"mappings":"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","names":["_a","response","_b","data"]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/map/datasets/src/ckanDatasets.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { layerColorByName } from '../../utils/stringToColour'\r\nimport { formatName, stripHtml } from '../utils'\r\n\r\nimport { buildValidationKey, getCache, setCache, withCache } from './cache'\r\n\r\nimport type { Dataset, FieldType } from '../../../../../types/datasetTypes'\r\nimport type { OpenDataPortal } from '../../../../../types/dbTypes'\r\nimport type { AllGeoJSON } from '@turf/turf'\r\n\r\n\r\n\r\n\r\n// Fetch CKAN GeoJSON datasets and transform to Dataset array\r\nexport async function fetchCkanDatasets(\r\n portal: OpenDataPortal,\r\n): Promise<Dataset[]> {\r\n const { apiUrl, countrySubdivision, municipality, group } = portal\r\n const isServer = typeof window === 'undefined'\r\n\r\n const buildUrl = (target: string) => {\r\n if (isServer) {\r\n return target\r\n }\r\n\r\n const proxied = `/api/ckanProxy?url=${encodeURIComponent(target)}`\r\n return proxied\r\n }\r\n\r\n // https://www.donneesquebec.ca/recherche/dataset/?sort=metadata_created+desc&_organization_limit=0&res_format=GeoJSON\r\n\r\n try {\r\n // Use your local API route to proxy the CKAN request when on the client\r\n const geoJsonListTarget = `${apiUrl}/api/3/action/package_search?fq=res_format:(geojson OR GeoJSON)&rows=100000`\r\n const response = await fetch(buildUrl(geoJsonListTarget))\r\n\r\n if (!response.ok) {\r\n return []\r\n }\r\n\r\n const data = await response.json()\r\n\r\n if (!data.success || !data.result || !Array.isArray(data.result.results)) {\r\n throw new Error('Invalid CKAN response structure')\r\n }\r\n\r\n const transformedDatasets: Dataset[] = (\r\n await Promise.all(\r\n data.result.results.map(async (pkg: any) => {\r\n // Find first GeoJSON resource\r\n const geoJsonResource = pkg.resources?.find(\r\n (resource: any) => resource.format?.toLowerCase() === 'geojson',\r\n )\r\n\r\n // Exclude if no GeoJSON resource\r\n if (!geoJsonResource) return\r\n\r\n // Exclude if not active\r\n const datastore = geoJsonResource.datastore_active?.toString().toLowerCase() === 'true'\r\n const isActive = datastore || geoJsonResource.state === 'active'\r\n if (!(datastore && geoJsonResource.url && isActive)) return\r\n\r\n // Determine the correct URL based on your working method\r\n let resourceUrl: string | null = null\r\n let resourceTarget: string | null = null\r\n let fieldsUrl: string | null = null\r\n\r\n if (datastore) {\r\n resourceTarget = `${apiUrl}/api/3/action/datastore_search?resource_id=${geoJsonResource.id}&limit=1000000`\r\n resourceUrl = buildUrl(resourceTarget)\r\n fieldsUrl = buildUrl(`${apiUrl}/api/3/action/datastore_search?resource_id=${geoJsonResource.id}&limit=0`)\r\n }\r\n else {\r\n resourceTarget = geoJsonResource.url\r\n resourceUrl = resourceTarget ? buildUrl(resourceTarget) : null\r\n }\r\n\r\n try {\r\n const sampleTarget = resourceTarget?.includes('datastore_search')\r\n ? resourceTarget.replace('limit=1000000', 'limit=1')\r\n : resourceTarget\r\n const sampleUrl = sampleTarget\r\n ? (sampleTarget.includes('limit=') ? buildUrl(sampleTarget) : buildUrl(`${sampleTarget}?limit=1`))\r\n : null\r\n\r\n if (sampleUrl) {\r\n const validKey = buildValidationKey('ckan', pkg.id, pkg.metadata_modified || pkg.metadata_created || undefined)\r\n const isValid = await withCache<boolean>(validKey, 24 * 60 * 60 * 1000, async () => {\r\n const sampleRes = await fetch(sampleUrl)\r\n if (sampleRes.ok) {\r\n const sample = await sampleRes.json()\r\n if (sample?.error) {\r\n const code = sample.error.code\r\n const msg = `${sample.error.message || ''} ${sample.error.messageCode || ''}`\r\n if (code === 499 || code === 504 || /token required|unauthorized|forbidden|timed out/i.test(msg)) return false\r\n }\r\n let hasGeom = true\r\n if (sample?.result?.records) {\r\n const rec = sample.result.records[0]\r\n const geom = rec?.geometry || (typeof rec?.geometry === 'string' ? JSON.parse(rec.geometry) : undefined)\r\n hasGeom = !!geom\r\n }\r\n else if (Array.isArray(sample?.features)) {\r\n hasGeom = sample.features.some((f: any) => f && f.geometry)\r\n }\r\n return !!hasGeom\r\n } else if ([401, 403, 504].includes(sampleRes.status)) {\r\n return false\r\n }\r\n return false\r\n })\r\n if (!isValid) return\r\n }\r\n }\r\n catch {\r\n }\r\n\r\n const getFeaturesData = async () => {\r\n if (resourceUrl) {\r\n try {\r\n const response = await fetch(fieldsUrl ?? resourceUrl)\r\n if (!response.ok) {\r\n console.error('Network response was not ok:', response.status)\r\n return\r\n }\r\n return await response.json()\r\n }\r\n catch (error) {\r\n console.error('Error fetching features data:', error)\r\n return\r\n }\r\n }\r\n }\r\n\r\n const getFields = async () => {\r\n if (fieldsUrl) {\r\n try {\r\n const fieldsKey = `fields:ckan:${geoJsonResource.id}:${pkg.metadata_modified || pkg.metadata_created || ''}`\r\n const cached = getCache<any[]>(fieldsKey)\r\n if (cached) return cached\r\n const dsRes = await fetch(fieldsUrl)\r\n if (dsRes.ok) {\r\n const dsData = await dsRes.json()\r\n const fields = (\r\n dsData.result.fields?.map((field: any) => ({\r\n name: field.id,\r\n type: ckanFieldTypes[field.type]?.type || field.type,\r\n ckanType: field.type,\r\n description: field.info || '',\r\n })) || []\r\n )\r\n setCache(fieldsKey, fields, 24 * 60 * 60 * 1000)\r\n return fields\r\n }\r\n }\r\n catch {\r\n return []\r\n }\r\n }\r\n return []\r\n }\r\n\r\n const getFeatures: () => Promise<AllGeoJSON> = async () => {\r\n // Check cache first\r\n const featuresKey = `features:ckan:${geoJsonResource.id}:${pkg.metadata_modified || pkg.metadata_created || ''}`\r\n const cached = getCache<AllGeoJSON>(featuresKey)\r\n if (cached) {\r\n return cached\r\n }\r\n\r\n const limit = 5_000\r\n const url2 = resourceUrl?.includes('datastore_search')\r\n ? `${resourceUrl}&limit=${limit}`\r\n : resourceUrl\r\n\r\n try {\r\n const response = await fetch(url2)\r\n if (!response.ok) {\r\n console.error('CKAN: Network response was not ok:', response.status)\r\n return {\r\n type: 'FeatureCollection',\r\n features: [],\r\n } as AllGeoJSON\r\n }\r\n const data = await response.json()\r\n let featuresCollection: AllGeoJSON | undefined\r\n\r\n if (data.result && Array.isArray(data.result.records)) {\r\n // CKAN Datastore: build FeatureCollection from records\r\n const features = data.result.records\r\n .map((properties: any) => {\r\n try {\r\n let geometry\r\n geometry = properties.geometry?.type ? properties.geometry : JSON.parse(properties.geometry)\r\n\r\n return {\r\n type: 'Feature',\r\n geometry,\r\n properties,\r\n }\r\n }\r\n catch {\r\n return null\r\n }\r\n })\r\n .filter((f: any) => f !== null)\r\n\r\n featuresCollection = {\r\n type: 'FeatureCollection',\r\n features,\r\n }\r\n }\r\n else if (\r\n data.type === 'FeatureCollection'\r\n && Array.isArray(data.features)\r\n ) {\r\n // Already a FeatureCollection\r\n featuresCollection = data\r\n }\r\n else {\r\n console.error(\r\n 'CKAN: No features available or unexpected response:',\r\n data,\r\n )\r\n return {\r\n type: 'FeatureCollection',\r\n features: [],\r\n } as AllGeoJSON\r\n }\r\n\r\n // Cache the result for 1 hour\r\n if (featuresCollection) {\r\n setCache(featuresKey, featuresCollection, 60 * 60 * 1000)\r\n }\r\n\r\n return featuresCollection\r\n }\r\n catch (error) {\r\n console.error('CKAN: Error processing dataset:', error)\r\n return {\r\n type: 'FeatureCollection',\r\n features: [],\r\n } as AllGeoJSON\r\n }\r\n }\r\n\r\n const name = formatName(pkg.title || pkg.name)\r\n\r\n return {\r\n id: pkg.id,\r\n name,\r\n url: fieldsUrl,\r\n publisher:\r\n pkg.organization?.title || pkg.organization?.name || 'Unknown',\r\n dataManagementSystem: 'ckan',\r\n license: pkg.license_title || pkg.license_id || 'Unknown',\r\n contact: pkg.author || pkg.maintainer || 'Unknown',\r\n keywords: pkg.tags?.map((tag: any) => tag.name) || [],\r\n description: pkg.notes\r\n ? stripHtml(pkg.notes)\r\n : 'No description available',\r\n dateReleased: pkg.metadata_created || '',\r\n dateUpdated: pkg.metadata_modified || '',\r\n information: pkg.information_url || '',\r\n countrySubdivision,\r\n municipality,\r\n type: pkg.type || 'GeoJSON',\r\n portal,\r\n getFields,\r\n getFeatures,\r\n getFeaturesData,\r\n group,\r\n layerColor: layerColorByName(name),\r\n }\r\n }),\r\n )\r\n ).filter(Boolean) // Remove nulls (excluded datasets)\r\n\r\n return transformedDatasets\r\n }\r\n catch (error) {\r\n console.error('Error fetching CKAN GeoJSON datasets:', error)\r\n return []\r\n }\r\n}\r\n\r\nexport interface CkanFieldTypes {\r\n [key: string]: { description: string, type: FieldType }\r\n}\r\n\r\nfunction ckanFieldTypes(): CkanFieldTypes {\r\n return {\r\n text: { description: 'Text', type: 'string' },\r\n int: { description: 'Integer', type: 'number' },\r\n float: { description: 'Float', type: 'number' },\r\n bool: { description: 'Boolean', type: 'boolean' },\r\n date: { description: 'Date', type: 'datetime' },\r\n timestamp: { description: 'Timestamp', type: 'datetime' },\r\n json: { description: 'JSON', type: 'object' },\r\n // Add more CKAN field types as needed\r\n }\r\n}\r\n"],"mappings":"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","names":["_a","response","data"]}
@@ -1,4 +1,4 @@
1
- import type { Dataset } from '../../../../../types/datasetTypes';
2
1
  import { type OpenDataPortal } from '../../../../../types/dbTypes';
2
+ import type { Dataset } from '../../../../../types/datasetTypes';
3
3
  export declare function fetchLocalDatasets(portal: OpenDataPortal): Promise<Dataset[]>;
4
4
  //# sourceMappingURL=localDatasets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"localDatasets.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/src/localDatasets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,mCAAmC,CAAA;AAE9F,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAkahF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,EAAE,CAAC,CA+LpB"}
1
+ {"version":3,"file":"localDatasets.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/map/datasets/src/localDatasets.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAOhF,OAAO,KAAK,EAAE,OAAO,EAAgC,MAAM,mCAAmC,CAAA;AAuZ9F,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,OAAO,EAAE,CAAC,CA+LpB"}
@@ -17,11 +17,11 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { formatName } from "../utils";
20
+ import { VectorTile } from "@mapbox/vector-tile";
21
+ import Pbf from "pbf";
21
22
  import { DatasetGroup } from "../../../../../types/dbTypes";
22
23
  import { layerColorByName } from "../../utils/stringToColour";
23
- import Pbf from "pbf";
24
- import { VectorTile } from "@mapbox/vector-tile";
24
+ import { formatName } from "../utils";
25
25
  import { getCache, setCache } from "./cache";
26
26
  import { isPublishedOrgTable, buildPublishedTileDatasets } from "./publishedTiles";
27
27
  const ORGANIZATION_FIELD = "organization";
@@ -185,7 +185,6 @@ async function fetchMartinServerDatasets(portal) {
185
185
  return [];
186
186
  }
187
187
  try {
188
- console.log("Fetching Martin server catalog from:", martinServerUrl);
189
188
  const { indexUrl, tileBaseUrl, fallbackCatalogUrl } = resolveMartinUrls(martinServerUrl);
190
189
  const publishedLabels = await fetchPublishedTileLabels();
191
190
  let response = await fetch(indexUrl);
@@ -198,7 +197,6 @@ async function fetchMartinServerDatasets(portal) {
198
197
  }
199
198
  const catalog = await response.json();
200
199
  const tiles = normalizeMartinCatalog(catalog, tileBaseUrl).filter((t) => !isPublishedOrgTable(t.tileName) && t.tileName !== "cdt_tiles");
201
- console.log("Martin catalog received:", tiles.length, "tiles");
202
200
  const datasets = await Promise.all(tiles.map(async (tileInfo) => {
203
201
  const publishedLabel = publishedLabels.get(tileInfo.tileName);
204
202
  const cleanName = publishedLabel != null ? publishedLabel : formatName(
@@ -263,7 +261,6 @@ async function fetchMartinServerDatasets(portal) {
263
261
  };
264
262
  return dataset;
265
263
  }));
266
- console.log(`Transformed ${datasets.length} Martin datasets`);
267
264
  let publishedDatasets = [];
268
265
  try {
269
266
  const fileRes = await fetch("/api/files");