@collabdt/core 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1338) hide show
  1. package/dist/core/components/AppSidebarContent.d.ts +1 -1
  2. package/dist/core/components/AppSidebarContent.d.ts.map +1 -1
  3. package/dist/core/components/AppSidebarContent.js +9 -9
  4. package/dist/core/components/AppSidebarContent.js.map +1 -1
  5. package/dist/core/components/ConfirmDialog.js.map +1 -1
  6. package/dist/core/components/DataTableSkeleton.d.ts.map +1 -1
  7. package/dist/core/components/DataTableSkeleton.js.map +1 -1
  8. package/dist/core/components/LanguageSwitch.d.ts.map +1 -1
  9. package/dist/core/components/LanguageSwitch.js +4 -4
  10. package/dist/core/components/LanguageSwitch.js.map +1 -1
  11. package/dist/core/components/Logo.js +1 -1
  12. package/dist/core/components/Logo.js.map +1 -1
  13. package/dist/core/components/Toolbar.d.ts +1 -1
  14. package/dist/core/components/Toolbar.d.ts.map +1 -1
  15. package/dist/core/components/Toolbar.js +1 -1
  16. package/dist/core/components/Toolbar.js.map +1 -1
  17. package/dist/core/components/ToolbarBody.d.ts +1 -1
  18. package/dist/core/components/ToolbarBody.d.ts.map +1 -1
  19. package/dist/core/components/ToolbarBody.js +1 -1
  20. package/dist/core/components/ToolbarBody.js.map +1 -1
  21. package/dist/core/components/ToolbarSubmenu.d.ts +1 -1
  22. package/dist/core/components/ToolbarSubmenu.d.ts.map +1 -1
  23. package/dist/core/components/ToolbarSubmenu.js +2 -2
  24. package/dist/core/components/ToolbarSubmenu.js.map +1 -1
  25. package/dist/core/components/TopNavigationBar.d.ts.map +1 -1
  26. package/dist/core/components/TopNavigationBar.js +5 -5
  27. package/dist/core/components/TopNavigationBar.js.map +1 -1
  28. package/dist/core/components/authentication/AuthPage.d.ts.map +1 -1
  29. package/dist/core/components/authentication/AuthPage.js +5 -5
  30. package/dist/core/components/authentication/AuthPage.js.map +1 -1
  31. package/dist/core/components/authentication/ForgotPassword.d.ts.map +1 -1
  32. package/dist/core/components/authentication/ForgotPassword.js +3 -4
  33. package/dist/core/components/authentication/ForgotPassword.js.map +1 -1
  34. package/dist/core/components/authentication/Signin.d.ts.map +1 -1
  35. package/dist/core/components/authentication/Signin.js +5 -5
  36. package/dist/core/components/authentication/Signin.js.map +1 -1
  37. package/dist/core/components/authentication/Signup.d.ts.map +1 -1
  38. package/dist/core/components/authentication/Signup.js +7 -7
  39. package/dist/core/components/authentication/Signup.js.map +1 -1
  40. package/dist/core/components/instance-not-found/index.d.ts.map +1 -1
  41. package/dist/core/components/instance-not-found/index.js +4 -4
  42. package/dist/core/components/instance-not-found/index.js.map +1 -1
  43. package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.d.ts.map +1 -1
  44. package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.js +3 -3
  45. package/dist/core/components/instance-not-found/src/OrganizationNotFoundSection.js.map +1 -1
  46. package/dist/core/components/organizationConfig/index.d.ts.map +1 -1
  47. package/dist/core/components/organizationConfig/index.js +4 -4
  48. package/dist/core/components/organizationConfig/index.js.map +1 -1
  49. package/dist/core/components/organizationConfig/src/organizationConfigContent.js +2 -2
  50. package/dist/core/components/organizationConfig/src/organizationConfigContent.js.map +1 -1
  51. package/dist/core/components/settings/index.d.ts.map +1 -1
  52. package/dist/core/components/settings/index.js +2 -2
  53. package/dist/core/components/settings/index.js.map +1 -1
  54. package/dist/core/components/settings/src/AccountSettingsPanel.d.ts.map +1 -1
  55. package/dist/core/components/settings/src/AccountSettingsPanel.js +8 -8
  56. package/dist/core/components/settings/src/AccountSettingsPanel.js.map +1 -1
  57. package/dist/core/components/settings/src/ChangePassword.d.ts.map +1 -1
  58. package/dist/core/components/settings/src/ChangePassword.js +5 -5
  59. package/dist/core/components/settings/src/ChangePassword.js.map +1 -1
  60. package/dist/core/components/settings/src/OrganizationSettingsPanel.d.ts.map +1 -1
  61. package/dist/core/components/settings/src/OrganizationSettingsPanel.js +7 -7
  62. package/dist/core/components/settings/src/OrganizationSettingsPanel.js.map +1 -1
  63. package/dist/core/components/settings/src/SettingsContent.d.ts.map +1 -1
  64. package/dist/core/components/settings/src/SettingsContent.js +1 -1
  65. package/dist/core/components/settings/src/SettingsContent.js.map +1 -1
  66. package/dist/core/components/settings/src/SettingsSidebar.d.ts.map +1 -1
  67. package/dist/core/components/settings/src/SettingsSidebar.js +3 -3
  68. package/dist/core/components/settings/src/SettingsSidebar.js.map +1 -1
  69. package/dist/core/components/settings/src/UsersSettingsPanel.js +1 -1
  70. package/dist/core/components/settings/src/UsersSettingsPanel.js.map +1 -1
  71. package/dist/core/components/support/BugReportDialog.d.ts.map +1 -1
  72. package/dist/core/components/support/BugReportDialog.js +8 -8
  73. package/dist/core/components/support/BugReportDialog.js.map +1 -1
  74. package/dist/core/components/support/FeatureRequestDialog.d.ts.map +1 -1
  75. package/dist/core/components/support/FeatureRequestDialog.js +6 -6
  76. package/dist/core/components/support/FeatureRequestDialog.js.map +1 -1
  77. package/dist/core/components/support/SupportMenu.d.ts.map +1 -1
  78. package/dist/core/components/support/SupportMenu.js +1 -1
  79. package/dist/core/components/support/SupportMenu.js.map +1 -1
  80. package/dist/core/components/ui/Accordion.d.ts +1 -1
  81. package/dist/core/components/ui/Accordion.d.ts.map +1 -1
  82. package/dist/core/components/ui/Accordion.js +1 -1
  83. package/dist/core/components/ui/Accordion.js.map +1 -1
  84. package/dist/core/components/ui/AddItemDialog.d.ts.map +1 -1
  85. package/dist/core/components/ui/AddItemDialog.js +1 -1
  86. package/dist/core/components/ui/AddItemDialog.js.map +1 -1
  87. package/dist/core/components/ui/AlertDialog.d.ts +1 -1
  88. package/dist/core/components/ui/AlertDialog.d.ts.map +1 -1
  89. package/dist/core/components/ui/AlertDialog.js +1 -1
  90. package/dist/core/components/ui/AlertDialog.js.map +1 -1
  91. package/dist/core/components/ui/AnimatedBackground.js +1 -1
  92. package/dist/core/components/ui/AnimatedBackground.js.map +1 -1
  93. package/dist/core/components/ui/AppSidebar.d.ts.map +1 -1
  94. package/dist/core/components/ui/AppSidebar.js +7 -7
  95. package/dist/core/components/ui/AppSidebar.js.map +1 -1
  96. package/dist/core/components/ui/Avatar.d.ts +1 -1
  97. package/dist/core/components/ui/Avatar.d.ts.map +1 -1
  98. package/dist/core/components/ui/Avatar.js +1 -1
  99. package/dist/core/components/ui/Avatar.js.map +1 -1
  100. package/dist/core/components/ui/Badge.d.ts.map +1 -1
  101. package/dist/core/components/ui/Badge.js.map +1 -1
  102. package/dist/core/components/ui/Breadcrumb.d.ts.map +1 -1
  103. package/dist/core/components/ui/Breadcrumb.js +2 -2
  104. package/dist/core/components/ui/Breadcrumb.js.map +1 -1
  105. package/dist/core/components/ui/Button.d.ts.map +1 -1
  106. package/dist/core/components/ui/Button.js +1 -1
  107. package/dist/core/components/ui/Button.js.map +1 -1
  108. package/dist/core/components/ui/Calendar.d.ts +2 -1
  109. package/dist/core/components/ui/Calendar.d.ts.map +1 -1
  110. package/dist/core/components/ui/Calendar.js +1 -1
  111. package/dist/core/components/ui/Calendar.js.map +1 -1
  112. package/dist/core/components/ui/Checkbox.d.ts +1 -1
  113. package/dist/core/components/ui/Checkbox.d.ts.map +1 -1
  114. package/dist/core/components/ui/Checkbox.js +1 -1
  115. package/dist/core/components/ui/Checkbox.js.map +1 -1
  116. package/dist/core/components/ui/CollapsibleSection.d.ts.map +1 -1
  117. package/dist/core/components/ui/CollapsibleSection.js +2 -2
  118. package/dist/core/components/ui/CollapsibleSection.js.map +1 -1
  119. package/dist/core/components/ui/Command.d.ts +8 -8
  120. package/dist/core/components/ui/Command.d.ts.map +1 -1
  121. package/dist/core/components/ui/Command.js +1 -1
  122. package/dist/core/components/ui/Command.js.map +1 -1
  123. package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts +13 -3
  124. package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
  125. package/dist/core/components/ui/Comments/CollapsibleCommentItem.js +144 -146
  126. package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
  127. package/dist/core/components/ui/Comments/Comment.d.ts +18 -1
  128. package/dist/core/components/ui/Comments/Comment.d.ts.map +1 -1
  129. package/dist/core/components/ui/Comments/Comment.js +97 -26
  130. package/dist/core/components/ui/Comments/Comment.js.map +1 -1
  131. package/dist/core/components/ui/Comments/CommentActionButtons.d.ts +34 -0
  132. package/dist/core/components/ui/Comments/CommentActionButtons.d.ts.map +1 -0
  133. package/dist/core/components/ui/Comments/CommentActionButtons.js +106 -0
  134. package/dist/core/components/ui/Comments/CommentActionButtons.js.map +1 -0
  135. package/dist/core/components/ui/Comments/CommentInput.d.ts.map +1 -1
  136. package/dist/core/components/ui/Comments/CommentInput.js +11 -8
  137. package/dist/core/components/ui/Comments/CommentInput.js.map +1 -1
  138. package/dist/core/components/ui/Comments/CommentsSection.d.ts.map +1 -1
  139. package/dist/core/components/ui/Comments/CommentsSection.js +89 -45
  140. package/dist/core/components/ui/Comments/CommentsSection.js.map +1 -1
  141. package/dist/core/components/ui/Comments/commentUtils.d.ts +1 -1
  142. package/dist/core/components/ui/Comments/commentUtils.d.ts.map +1 -1
  143. package/dist/core/components/ui/Comments/commentUtils.js +2 -1
  144. package/dist/core/components/ui/Comments/commentUtils.js.map +1 -1
  145. package/dist/core/components/ui/Countdown.d.ts.map +1 -1
  146. package/dist/core/components/ui/Countdown.js +1 -1
  147. package/dist/core/components/ui/Countdown.js.map +1 -1
  148. package/dist/core/components/ui/DataTable.d.ts +1 -1
  149. package/dist/core/components/ui/DataTable.d.ts.map +1 -1
  150. package/dist/core/components/ui/DataTable.js +17 -17
  151. package/dist/core/components/ui/DataTable.js.map +1 -1
  152. package/dist/core/components/ui/DatePicker.d.ts.map +1 -1
  153. package/dist/core/components/ui/DatePicker.js +2 -2
  154. package/dist/core/components/ui/DatePicker.js.map +1 -1
  155. package/dist/core/components/ui/DescriptionList.d.ts.map +1 -1
  156. package/dist/core/components/ui/DescriptionList.js +2 -2
  157. package/dist/core/components/ui/DescriptionList.js.map +1 -1
  158. package/dist/core/components/ui/Dialog.d.ts +1 -1
  159. package/dist/core/components/ui/Dialog.d.ts.map +1 -1
  160. package/dist/core/components/ui/Dialog.js +1 -1
  161. package/dist/core/components/ui/Dialog.js.map +1 -1
  162. package/dist/core/components/ui/DropdownMenu.d.ts +1 -1
  163. package/dist/core/components/ui/DropdownMenu.d.ts.map +1 -1
  164. package/dist/core/components/ui/DropdownMenu.js +1 -1
  165. package/dist/core/components/ui/DropdownMenu.js.map +1 -1
  166. package/dist/core/components/ui/ExportData.d.ts +2 -2
  167. package/dist/core/components/ui/ExportData.d.ts.map +1 -1
  168. package/dist/core/components/ui/ExportData.js +5 -5
  169. package/dist/core/components/ui/ExportData.js.map +1 -1
  170. package/dist/core/components/ui/FilesManager/src/FileItemComponent.d.ts.map +1 -1
  171. package/dist/core/components/ui/FilesManager/src/FileItemComponent.js +3 -3
  172. package/dist/core/components/ui/FilesManager/src/FileItemComponent.js.map +1 -1
  173. package/dist/core/components/ui/FilesManager/src/FileMarker.d.ts.map +1 -1
  174. package/dist/core/components/ui/FilesManager/src/FileMarker.js +2 -2
  175. package/dist/core/components/ui/FilesManager/src/FileMarker.js.map +1 -1
  176. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.d.ts.map +1 -1
  177. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js +1 -1
  178. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js.map +1 -1
  179. package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.d.ts.map +1 -1
  180. package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.js.map +1 -1
  181. package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts +1 -1
  182. package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts.map +1 -1
  183. package/dist/core/components/ui/FilesManager/src/downloadUtils.js.map +1 -1
  184. package/dist/core/components/ui/FilesManager/src/useCommonFileUpload.js.map +1 -1
  185. package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts +2 -2
  186. package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts.map +1 -1
  187. package/dist/core/components/ui/FilesManager/src/useFileActions.js +2 -2
  188. package/dist/core/components/ui/FilesManager/src/useFileActions.js.map +1 -1
  189. package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js +1 -1
  190. package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js.map +1 -1
  191. package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js +3 -3
  192. package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js.map +1 -1
  193. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.d.ts.map +1 -1
  194. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js +0 -1
  195. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js.map +1 -1
  196. package/dist/core/components/ui/GenericTool.d.ts +1 -1
  197. package/dist/core/components/ui/GenericTool.d.ts.map +1 -1
  198. package/dist/core/components/ui/GenericTool.js +2 -2
  199. package/dist/core/components/ui/GenericTool.js.map +1 -1
  200. package/dist/core/components/ui/Icons/FloorPlanIcon.js +1 -1
  201. package/dist/core/components/ui/Icons/FloorPlanIcon.js.map +1 -1
  202. package/dist/core/components/ui/InfoSidebar/Container.d.ts.map +1 -1
  203. package/dist/core/components/ui/InfoSidebar/Container.js +16 -12
  204. package/dist/core/components/ui/InfoSidebar/Container.js.map +1 -1
  205. package/dist/core/components/ui/InfoSidebar/Header.d.ts.map +1 -1
  206. package/dist/core/components/ui/InfoSidebar/Header.js +4 -4
  207. package/dist/core/components/ui/InfoSidebar/Header.js.map +1 -1
  208. package/dist/core/components/ui/InfoSidebar/index.d.ts +1 -1
  209. package/dist/core/components/ui/InfoSidebar/index.d.ts.map +1 -1
  210. package/dist/core/components/ui/InfoSidebar/index.js +1 -1
  211. package/dist/core/components/ui/InfoSidebar/index.js.map +1 -1
  212. package/dist/core/components/ui/Label.d.ts +1 -1
  213. package/dist/core/components/ui/Label.d.ts.map +1 -1
  214. package/dist/core/components/ui/Label.js +1 -1
  215. package/dist/core/components/ui/Label.js.map +1 -1
  216. package/dist/core/components/ui/LanguageToggle.d.ts +1 -1
  217. package/dist/core/components/ui/LanguageToggle.d.ts.map +1 -1
  218. package/dist/core/components/ui/LanguageToggle.js +1 -1
  219. package/dist/core/components/ui/LanguageToggle.js.map +1 -1
  220. package/dist/core/components/ui/Menubar.d.ts +1 -1
  221. package/dist/core/components/ui/Menubar.d.ts.map +1 -1
  222. package/dist/core/components/ui/Menubar.js +1 -1
  223. package/dist/core/components/ui/Menubar.js.map +1 -1
  224. package/dist/core/components/ui/NavUser.js +7 -7
  225. package/dist/core/components/ui/NavUser.js.map +1 -1
  226. package/dist/core/components/ui/Navbar.d.ts.map +1 -1
  227. package/dist/core/components/ui/Navbar.js +2 -2
  228. package/dist/core/components/ui/Navbar.js.map +1 -1
  229. package/dist/core/components/ui/Popover.d.ts +1 -1
  230. package/dist/core/components/ui/Popover.d.ts.map +1 -1
  231. package/dist/core/components/ui/Popover.js +1 -1
  232. package/dist/core/components/ui/Popover.js.map +1 -1
  233. package/dist/core/components/ui/Progress.d.ts +1 -1
  234. package/dist/core/components/ui/Progress.d.ts.map +1 -1
  235. package/dist/core/components/ui/Progress.js +1 -1
  236. package/dist/core/components/ui/Progress.js.map +1 -1
  237. package/dist/core/components/ui/ScrollArea.d.ts +1 -1
  238. package/dist/core/components/ui/ScrollArea.d.ts.map +1 -1
  239. package/dist/core/components/ui/ScrollArea.js +1 -1
  240. package/dist/core/components/ui/ScrollArea.js.map +1 -1
  241. package/dist/core/components/ui/SearchInput.d.ts.map +1 -1
  242. package/dist/core/components/ui/SearchInput.js +2 -2
  243. package/dist/core/components/ui/SearchInput.js.map +1 -1
  244. package/dist/core/components/ui/Select.d.ts +1 -1
  245. package/dist/core/components/ui/Select.d.ts.map +1 -1
  246. package/dist/core/components/ui/Select.js +3 -3
  247. package/dist/core/components/ui/Select.js.map +1 -1
  248. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts +1 -1
  249. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
  250. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js +10 -10
  251. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
  252. package/dist/core/components/ui/Sensors/Sensor.d.ts +2 -1
  253. package/dist/core/components/ui/Sensors/Sensor.d.ts.map +1 -1
  254. package/dist/core/components/ui/Sensors/Sensor.js +3 -3
  255. package/dist/core/components/ui/Sensors/Sensor.js.map +1 -1
  256. package/dist/core/components/ui/Sensors/SensorChart.d.ts +1 -1
  257. package/dist/core/components/ui/Sensors/SensorChart.d.ts.map +1 -1
  258. package/dist/core/components/ui/Sensors/SensorChart.js +1 -1
  259. package/dist/core/components/ui/Sensors/SensorChart.js.map +1 -1
  260. package/dist/core/components/ui/Sensors/SensorInput.d.ts.map +1 -1
  261. package/dist/core/components/ui/Sensors/SensorInput.js +9 -10
  262. package/dist/core/components/ui/Sensors/SensorInput.js.map +1 -1
  263. package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts.map +1 -1
  264. package/dist/core/components/ui/Sensors/SensorTagsSection.js +3 -3
  265. package/dist/core/components/ui/Sensors/SensorTagsSection.js.map +1 -1
  266. package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
  267. package/dist/core/components/ui/Sensors/SensorsSection.js +7 -9
  268. package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
  269. package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.d.ts.map +1 -1
  270. package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.js.map +1 -1
  271. package/dist/core/components/ui/Sensors/sensorUtils.d.ts +1 -1
  272. package/dist/core/components/ui/Sensors/sensorUtils.d.ts.map +1 -1
  273. package/dist/core/components/ui/Sensors/sensorUtils.js.map +1 -1
  274. package/dist/core/components/ui/Separator.d.ts +1 -1
  275. package/dist/core/components/ui/Separator.d.ts.map +1 -1
  276. package/dist/core/components/ui/Separator.js +1 -1
  277. package/dist/core/components/ui/Separator.js.map +1 -1
  278. package/dist/core/components/ui/SettingsButton.d.ts.map +1 -1
  279. package/dist/core/components/ui/SettingsButton.js +4 -4
  280. package/dist/core/components/ui/SettingsButton.js.map +1 -1
  281. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts +1 -1
  282. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts.map +1 -1
  283. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js +14 -14
  284. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js.map +1 -1
  285. package/dist/core/components/ui/Sheet.d.ts +1 -1
  286. package/dist/core/components/ui/Sheet.d.ts.map +1 -1
  287. package/dist/core/components/ui/Sheet.js +1 -1
  288. package/dist/core/components/ui/Sheet.js.map +1 -1
  289. package/dist/core/components/ui/Sidebar.d.ts +1 -1
  290. package/dist/core/components/ui/Sidebar.d.ts.map +1 -1
  291. package/dist/core/components/ui/Sidebar.js +33 -10
  292. package/dist/core/components/ui/Sidebar.js.map +1 -1
  293. package/dist/core/components/ui/Slider.d.ts +1 -1
  294. package/dist/core/components/ui/Slider.d.ts.map +1 -1
  295. package/dist/core/components/ui/Slider.js +1 -1
  296. package/dist/core/components/ui/Slider.js.map +1 -1
  297. package/dist/core/components/ui/Switch.d.ts +1 -1
  298. package/dist/core/components/ui/Switch.d.ts.map +1 -1
  299. package/dist/core/components/ui/Switch.js +1 -1
  300. package/dist/core/components/ui/Switch.js.map +1 -1
  301. package/dist/core/components/ui/Tabs.d.ts +1 -1
  302. package/dist/core/components/ui/Tabs.d.ts.map +1 -1
  303. package/dist/core/components/ui/Tabs.js +1 -1
  304. package/dist/core/components/ui/Tabs.js.map +1 -1
  305. package/dist/core/components/ui/Toggle.d.ts +1 -1
  306. package/dist/core/components/ui/Toggle.d.ts.map +1 -1
  307. package/dist/core/components/ui/Toggle.js +1 -1
  308. package/dist/core/components/ui/Toggle.js.map +1 -1
  309. package/dist/core/components/ui/ToggleGroup.d.ts +1 -1
  310. package/dist/core/components/ui/ToggleGroup.d.ts.map +1 -1
  311. package/dist/core/components/ui/ToggleGroup.js +1 -1
  312. package/dist/core/components/ui/ToggleGroup.js.map +1 -1
  313. package/dist/core/components/ui/ToolbarButton.d.ts +1 -1
  314. package/dist/core/components/ui/ToolbarButton.d.ts.map +1 -1
  315. package/dist/core/components/ui/ToolbarButton.js +1 -2
  316. package/dist/core/components/ui/ToolbarButton.js.map +1 -1
  317. package/dist/core/components/ui/Tooltip.d.ts +1 -1
  318. package/dist/core/components/ui/Tooltip.d.ts.map +1 -1
  319. package/dist/core/components/ui/Tooltip.js +1 -1
  320. package/dist/core/components/ui/Tooltip.js.map +1 -1
  321. package/dist/core/components/ui/UserAvatar.d.ts.map +1 -1
  322. package/dist/core/components/ui/UserAvatar.js +1 -1
  323. package/dist/core/components/ui/UserAvatar.js.map +1 -1
  324. package/dist/core/components/ui/downloadUtils.d.ts.map +1 -1
  325. package/dist/core/components/ui/downloadUtils.js.map +1 -1
  326. package/dist/core/components/ui/stats.d.ts.map +1 -1
  327. package/dist/core/components/ui/stats.js.map +1 -1
  328. package/dist/core/components/ui/uploadFile.js +1 -1
  329. package/dist/core/components/ui/uploadFile.js.map +1 -1
  330. package/dist/core/components/viewers/Data/DataMenu.d.ts +1 -1
  331. package/dist/core/components/viewers/Data/DataMenu.d.ts.map +1 -1
  332. package/dist/core/components/viewers/Data/DataMenu.js +11 -11
  333. package/dist/core/components/viewers/Data/DataMenu.js.map +1 -1
  334. package/dist/core/components/viewers/Data/FilterButtons.d.ts +1 -1
  335. package/dist/core/components/viewers/Data/FilterButtons.d.ts.map +1 -1
  336. package/dist/core/components/viewers/Data/FilterButtons.js +7 -7
  337. package/dist/core/components/viewers/Data/FilterButtons.js.map +1 -1
  338. package/dist/core/components/viewers/Data/HeaderButtons.d.ts +1 -1
  339. package/dist/core/components/viewers/Data/HeaderButtons.d.ts.map +1 -1
  340. package/dist/core/components/viewers/Data/HeaderButtons.js +9 -9
  341. package/dist/core/components/viewers/Data/HeaderButtons.js.map +1 -1
  342. package/dist/core/components/viewers/Data/MoreOptions.d.ts +1 -1
  343. package/dist/core/components/viewers/Data/MoreOptions.d.ts.map +1 -1
  344. package/dist/core/components/viewers/Data/MoreOptions.js +16 -16
  345. package/dist/core/components/viewers/Data/MoreOptions.js.map +1 -1
  346. package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts +1 -1
  347. package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts.map +1 -1
  348. package/dist/core/components/viewers/Data/advancedFilter/Filters.js +2 -2
  349. package/dist/core/components/viewers/Data/advancedFilter/Filters.js.map +1 -1
  350. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts +1 -1
  351. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts.map +1 -1
  352. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js +6 -8
  353. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js.map +1 -1
  354. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.d.ts.map +1 -1
  355. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js +3 -3
  356. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js.map +1 -1
  357. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.d.ts.map +1 -1
  358. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js +10 -10
  359. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js.map +1 -1
  360. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.d.ts.map +1 -1
  361. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js +11 -11
  362. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js.map +1 -1
  363. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.d.ts.map +1 -1
  364. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js +10 -10
  365. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js.map +1 -1
  366. package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.d.ts.map +1 -1
  367. package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.js.map +1 -1
  368. package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.d.ts.map +1 -1
  369. package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.js.map +1 -1
  370. package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts +1 -1
  371. package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts.map +1 -1
  372. package/dist/core/components/viewers/Data/details/AttachedFiles.js +3 -3
  373. package/dist/core/components/viewers/Data/details/AttachedFiles.js.map +1 -1
  374. package/dist/core/components/viewers/Data/details/DetailActions.d.ts +1 -1
  375. package/dist/core/components/viewers/Data/details/DetailActions.d.ts.map +1 -1
  376. package/dist/core/components/viewers/Data/details/DetailActions.js +2 -2
  377. package/dist/core/components/viewers/Data/details/DetailActions.js.map +1 -1
  378. package/dist/core/components/viewers/Data/details/DetailHeader.d.ts.map +1 -1
  379. package/dist/core/components/viewers/Data/details/DetailHeader.js.map +1 -1
  380. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.d.ts.map +1 -1
  381. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js +4 -14
  382. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js.map +1 -1
  383. package/dist/core/components/viewers/Data/details/FieldValue.d.ts.map +1 -1
  384. package/dist/core/components/viewers/Data/details/FieldValue.js +2 -2
  385. package/dist/core/components/viewers/Data/details/FieldValue.js.map +1 -1
  386. package/dist/core/components/viewers/Data/details/FileUpload.d.ts.map +1 -1
  387. package/dist/core/components/viewers/Data/details/FileUpload.js +2 -2
  388. package/dist/core/components/viewers/Data/details/FileUpload.js.map +1 -1
  389. package/dist/core/components/viewers/Data/details/FilterFiles.d.ts.map +1 -1
  390. package/dist/core/components/viewers/Data/details/FilterFiles.js +2 -2
  391. package/dist/core/components/viewers/Data/details/FilterFiles.js.map +1 -1
  392. package/dist/core/components/viewers/Data/details/TabSidebar.d.ts.map +1 -1
  393. package/dist/core/components/viewers/Data/details/TabSidebar.js +3 -3
  394. package/dist/core/components/viewers/Data/details/TabSidebar.js.map +1 -1
  395. package/dist/core/components/viewers/Data/files/DatatableFileAdder.d.ts.map +1 -1
  396. package/dist/core/components/viewers/Data/files/DatatableFileAdder.js +3 -4
  397. package/dist/core/components/viewers/Data/files/DatatableFileAdder.js.map +1 -1
  398. package/dist/core/components/viewers/Data/files/FileDetails.d.ts.map +1 -1
  399. package/dist/core/components/viewers/Data/files/FileDetails.js +8 -8
  400. package/dist/core/components/viewers/Data/files/FileDetails.js.map +1 -1
  401. package/dist/core/components/viewers/Data/files/FileMoreOptions.d.ts.map +1 -1
  402. package/dist/core/components/viewers/Data/files/FileMoreOptions.js +8 -8
  403. package/dist/core/components/viewers/Data/files/FileMoreOptions.js.map +1 -1
  404. package/dist/core/components/viewers/Data/files/FilePreview.d.ts +1 -1
  405. package/dist/core/components/viewers/Data/files/FilePreview.d.ts.map +1 -1
  406. package/dist/core/components/viewers/Data/files/FilePreview.js +1 -1
  407. package/dist/core/components/viewers/Data/files/FilePreview.js.map +1 -1
  408. package/dist/core/components/viewers/Data/files/utils/fuzzySearch.d.ts.map +1 -1
  409. package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js +0 -1
  410. package/dist/core/components/viewers/Data/files/utils/fuzzySearch.js.map +1 -1
  411. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.d.ts.map +1 -1
  412. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js +3 -3
  413. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js.map +1 -1
  414. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.d.ts.map +1 -1
  415. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js +2 -2
  416. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js.map +1 -1
  417. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.d.ts.map +1 -1
  418. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js +6 -6
  419. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js.map +1 -1
  420. package/dist/core/components/viewers/Data/siteDetails/AddSite.d.ts.map +1 -1
  421. package/dist/core/components/viewers/Data/siteDetails/AddSite.js +5 -5
  422. package/dist/core/components/viewers/Data/siteDetails/AddSite.js.map +1 -1
  423. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.d.ts.map +1 -1
  424. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js +10 -10
  425. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js.map +1 -1
  426. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.d.ts.map +1 -1
  427. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js +9 -9
  428. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js.map +1 -1
  429. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.d.ts.map +1 -1
  430. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js +11 -11
  431. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js.map +1 -1
  432. package/dist/core/components/viewers/Data/userDetails/AddUser.d.ts.map +1 -1
  433. package/dist/core/components/viewers/Data/userDetails/AddUser.js +3 -3
  434. package/dist/core/components/viewers/Data/userDetails/AddUser.js.map +1 -1
  435. package/dist/core/components/viewers/Data/userDetails/UserDetails.d.ts.map +1 -1
  436. package/dist/core/components/viewers/Data/userDetails/UserDetails.js +12 -12
  437. package/dist/core/components/viewers/Data/userDetails/UserDetails.js.map +1 -1
  438. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.d.ts.map +1 -1
  439. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js +12 -13
  440. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js.map +1 -1
  441. package/dist/core/components/viewers/Data/utils/Columns.d.ts +2 -2
  442. package/dist/core/components/viewers/Data/utils/Columns.d.ts.map +1 -1
  443. package/dist/core/components/viewers/Data/utils/Columns.js +7 -7
  444. package/dist/core/components/viewers/Data/utils/Columns.js.map +1 -1
  445. package/dist/core/components/viewers/Data/utils/Headers.d.ts.map +1 -1
  446. package/dist/core/components/viewers/Data/utils/Headers.js.map +1 -1
  447. package/dist/core/components/viewers/Data/utils/csvUtils.js.map +1 -1
  448. package/dist/core/components/viewers/Data/utils/filterHelper.d.ts.map +1 -1
  449. package/dist/core/components/viewers/Data/utils/filterHelper.js +0 -2
  450. package/dist/core/components/viewers/Data/utils/filterHelper.js.map +1 -1
  451. package/dist/core/components/viewers/Data/utils/positionParser.js.map +1 -1
  452. package/dist/core/components/viewers/Data/utils/useViewerData.d.ts +2 -2
  453. package/dist/core/components/viewers/Data/utils/useViewerData.d.ts.map +1 -1
  454. package/dist/core/components/viewers/Data/utils/useViewerData.js.map +1 -1
  455. package/dist/core/components/viewers/Viewer.d.ts +1 -1
  456. package/dist/core/components/viewers/Viewer.d.ts.map +1 -1
  457. package/dist/core/components/viewers/Viewer.js +6 -6
  458. package/dist/core/components/viewers/Viewer.js.map +1 -1
  459. package/dist/core/components/viewers/bim/BimToolbar.d.ts.map +1 -1
  460. package/dist/core/components/viewers/bim/BimToolbar.js +1 -1
  461. package/dist/core/components/viewers/bim/BimToolbar.js.map +1 -1
  462. package/dist/core/components/viewers/bim/BimViewer.d.ts.map +1 -1
  463. package/dist/core/components/viewers/bim/BimViewer.js +7 -7
  464. package/dist/core/components/viewers/bim/BimViewer.js.map +1 -1
  465. package/dist/core/components/viewers/bim/src/BCFTopicsManager.d.ts.map +1 -1
  466. package/dist/core/components/viewers/bim/src/BCFTopicsManager.js.map +1 -1
  467. package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts +2 -2
  468. package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts.map +1 -1
  469. package/dist/core/components/viewers/bim/src/BIMManager/index.js.map +1 -1
  470. package/dist/core/components/viewers/bim/src/BimLoadingState/index.d.ts.map +1 -1
  471. package/dist/core/components/viewers/bim/src/BimLoadingState/index.js +9 -9
  472. package/dist/core/components/viewers/bim/src/BimLoadingState/index.js.map +1 -1
  473. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.d.ts.map +1 -1
  474. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js +1 -1
  475. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js.map +1 -1
  476. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts +1 -1
  477. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts.map +1 -1
  478. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js +1 -1
  479. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js.map +1 -1
  480. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts +1 -1
  481. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts.map +1 -1
  482. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js +5 -5
  483. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js.map +1 -1
  484. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts +1 -1
  485. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts.map +1 -1
  486. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.js +9 -9
  487. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.js.map +1 -1
  488. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.d.ts.map +1 -1
  489. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js +6 -9
  490. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js.map +1 -1
  491. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.d.ts.map +1 -1
  492. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js +4 -4
  493. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js.map +1 -1
  494. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  495. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  496. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js +11 -17
  497. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  498. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
  499. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js +10 -18
  500. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
  501. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.d.ts.map +1 -1
  502. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js +1 -1
  503. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js.map +1 -1
  504. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.d.ts.map +1 -1
  505. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js +2 -2
  506. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js.map +1 -1
  507. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.d.ts.map +1 -1
  508. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js +1 -1
  509. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js.map +1 -1
  510. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.d.ts.map +1 -1
  511. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js +6 -6
  512. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js.map +1 -1
  513. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts +1 -1
  514. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts.map +1 -1
  515. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.js.map +1 -1
  516. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.d.ts.map +1 -1
  517. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js +2 -2
  518. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js.map +1 -1
  519. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
  520. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js +5 -5
  521. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
  522. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.d.ts.map +1 -1
  523. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js +3 -3
  524. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js.map +1 -1
  525. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.d.ts.map +1 -1
  526. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js +3 -3
  527. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js.map +1 -1
  528. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.d.ts.map +1 -1
  529. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js +4 -4
  530. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js.map +1 -1
  531. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts +1 -1
  532. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts.map +1 -1
  533. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js +5 -4
  534. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js.map +1 -1
  535. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.d.ts.map +1 -1
  536. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js +5 -5
  537. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js.map +1 -1
  538. package/dist/core/components/viewers/bim/src/CameraProjection.d.ts.map +1 -1
  539. package/dist/core/components/viewers/bim/src/CameraProjection.js.map +1 -1
  540. package/dist/core/components/viewers/bim/src/ClippingPlane.d.ts.map +1 -1
  541. package/dist/core/components/viewers/bim/src/ClippingPlane.js +1 -2
  542. package/dist/core/components/viewers/bim/src/ClippingPlane.js.map +1 -1
  543. package/dist/core/components/viewers/bim/src/Cursor.d.ts +1 -1
  544. package/dist/core/components/viewers/bim/src/Cursor.d.ts.map +1 -1
  545. package/dist/core/components/viewers/bim/src/Cursor.js.map +1 -1
  546. package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts +1 -1
  547. package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts.map +1 -1
  548. package/dist/core/components/viewers/bim/src/DXFLoader/index.js +1 -1
  549. package/dist/core/components/viewers/bim/src/DXFLoader/index.js.map +1 -1
  550. package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts +1 -1
  551. package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts.map +1 -1
  552. package/dist/core/components/viewers/bim/src/ElevationsTool/index.js +1 -1
  553. package/dist/core/components/viewers/bim/src/ElevationsTool/index.js.map +1 -1
  554. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts +1 -1
  555. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts.map +1 -1
  556. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.js.map +1 -1
  557. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts +4 -4
  558. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts.map +1 -1
  559. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.js.map +1 -1
  560. package/dist/core/components/viewers/bim/src/FitCamera.d.ts.map +1 -1
  561. package/dist/core/components/viewers/bim/src/FitCamera.js +1 -1
  562. package/dist/core/components/viewers/bim/src/FitCamera.js.map +1 -1
  563. package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts +3 -3
  564. package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts.map +1 -1
  565. package/dist/core/components/viewers/bim/src/FloorplanTool/index.js +1 -1
  566. package/dist/core/components/viewers/bim/src/FloorplanTool/index.js.map +1 -1
  567. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts +3 -3
  568. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts.map +1 -1
  569. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.js.map +1 -1
  570. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts +1 -1
  571. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts.map +1 -1
  572. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.js.map +1 -1
  573. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts +2 -2
  574. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts.map +1 -1
  575. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.js.map +1 -1
  576. package/dist/core/components/viewers/bim/src/GhostMode.d.ts +1 -1
  577. package/dist/core/components/viewers/bim/src/GhostMode.d.ts.map +1 -1
  578. package/dist/core/components/viewers/bim/src/GhostMode.js.map +1 -1
  579. package/dist/core/components/viewers/bim/src/Highlighter/index.d.ts.map +1 -1
  580. package/dist/core/components/viewers/bim/src/Highlighter/index.js +1 -1
  581. package/dist/core/components/viewers/bim/src/Highlighter/index.js.map +1 -1
  582. package/dist/core/components/viewers/bim/src/IDSManager/index.d.ts.map +1 -1
  583. package/dist/core/components/viewers/bim/src/IDSManager/index.js +3 -3
  584. package/dist/core/components/viewers/bim/src/IDSManager/index.js.map +1 -1
  585. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.d.ts.map +1 -1
  586. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js +2 -2
  587. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js.map +1 -1
  588. package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.d.ts.map +1 -1
  589. package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.js.map +1 -1
  590. package/dist/core/components/viewers/bim/src/LoadModels.d.ts +1 -1
  591. package/dist/core/components/viewers/bim/src/LoadModels.d.ts.map +1 -1
  592. package/dist/core/components/viewers/bim/src/LoadModels.js +1 -1
  593. package/dist/core/components/viewers/bim/src/LoadModels.js.map +1 -1
  594. package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts +1 -1
  595. package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts.map +1 -1
  596. package/dist/core/components/viewers/bim/src/ModelManager/index.js +4 -4
  597. package/dist/core/components/viewers/bim/src/ModelManager/index.js.map +1 -1
  598. package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts +1 -1
  599. package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts.map +1 -1
  600. package/dist/core/components/viewers/bim/src/SimpleBimViewer.js +8 -8
  601. package/dist/core/components/viewers/bim/src/SimpleBimViewer.js.map +1 -1
  602. package/dist/core/components/viewers/bim/src/SpatialStructure.js.map +1 -1
  603. package/dist/core/components/viewers/bim/src/ViewportGizmo.d.ts.map +1 -1
  604. package/dist/core/components/viewers/bim/src/ViewportGizmo.js +2 -2
  605. package/dist/core/components/viewers/bim/src/ViewportGizmo.js.map +1 -1
  606. package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts +1 -1
  607. package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts.map +1 -1
  608. package/dist/core/components/viewers/bim/src/lib/CameraController.js.map +1 -1
  609. package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts +1 -1
  610. package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts.map +1 -1
  611. package/dist/core/components/viewers/bim/src/lib/ChromeController.js.map +1 -1
  612. package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts +1 -1
  613. package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts.map +1 -1
  614. package/dist/core/components/viewers/bim/src/lib/ClipController.js.map +1 -1
  615. package/dist/core/components/viewers/bim/src/lib/GridController.d.ts.map +1 -1
  616. package/dist/core/components/viewers/bim/src/lib/GridController.js.map +1 -1
  617. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.d.ts.map +1 -1
  618. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js +1 -1
  619. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js.map +1 -1
  620. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts +2 -2
  621. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts.map +1 -1
  622. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js +1 -1
  623. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js.map +1 -1
  624. package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts +1 -1
  625. package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts.map +1 -1
  626. package/dist/core/components/viewers/bim/src/lib/drawingProjection.js.map +1 -1
  627. package/dist/core/components/viewers/bim/src/lib/useBuildingName.d.ts.map +1 -1
  628. package/dist/core/components/viewers/bim/src/lib/useBuildingName.js.map +1 -1
  629. package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js +1 -1
  630. package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js.map +1 -1
  631. package/dist/core/components/viewers/bim/src/propertiesMenu/index.d.ts.map +1 -1
  632. package/dist/core/components/viewers/bim/src/propertiesMenu/index.js +4 -4
  633. package/dist/core/components/viewers/bim/src/propertiesMenu/index.js.map +1 -1
  634. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.d.ts.map +1 -1
  635. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js +1 -1
  636. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js.map +1 -1
  637. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.d.ts.map +1 -1
  638. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js +2 -2
  639. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js.map +1 -1
  640. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.d.ts.map +1 -1
  641. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.js.map +1 -1
  642. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts +1 -1
  643. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts.map +1 -1
  644. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js +2 -2
  645. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js.map +1 -1
  646. package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.d.ts.map +1 -1
  647. package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.js.map +1 -1
  648. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.d.ts.map +1 -1
  649. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js +9 -9
  650. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js.map +1 -1
  651. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts +1 -1
  652. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts.map +1 -1
  653. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js +2 -2
  654. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js.map +1 -1
  655. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.d.ts.map +1 -1
  656. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js +2 -2
  657. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js.map +1 -1
  658. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts +1 -1
  659. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts.map +1 -1
  660. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.js.map +1 -1
  661. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.d.ts.map +1 -1
  662. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js +3 -3
  663. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js.map +1 -1
  664. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts +16 -10
  665. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts.map +1 -1
  666. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js +26 -6
  667. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js.map +1 -1
  668. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts +23 -0
  669. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.d.ts.map +1 -0
  670. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js +108 -0
  671. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimCommentCluster.js.map +1 -0
  672. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts +2 -2
  673. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts.map +1 -1
  674. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.js.map +1 -1
  675. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts +5 -5
  676. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts.map +1 -1
  677. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.js.map +1 -1
  678. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.d.ts.map +1 -1
  679. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js +2 -2
  680. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js.map +1 -1
  681. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.d.ts.map +1 -1
  682. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js +1 -1
  683. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js.map +1 -1
  684. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.d.ts +44 -0
  685. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.d.ts.map +1 -0
  686. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js +77 -0
  687. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/clusterMarkersByScreenSpace.js.map +1 -0
  688. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts +24 -0
  689. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.d.ts.map +1 -0
  690. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js +27 -0
  691. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/commentCameraUtils.js.map +1 -0
  692. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts +1 -1
  693. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts.map +1 -1
  694. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js +3 -3
  695. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js.map +1 -1
  696. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.d.ts.map +1 -1
  697. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js +244 -63
  698. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js.map +1 -1
  699. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts +2 -2
  700. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts.map +1 -1
  701. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js +4 -4
  702. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js.map +1 -1
  703. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.d.ts.map +1 -1
  704. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js +6 -6
  705. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js.map +1 -1
  706. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.d.ts.map +1 -1
  707. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js +2 -2
  708. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js.map +1 -1
  709. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts +1 -1
  710. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts.map +1 -1
  711. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js +6 -10
  712. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js.map +1 -1
  713. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts +1 -1
  714. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts.map +1 -1
  715. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js +3 -4
  716. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js.map +1 -1
  717. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts +1 -1
  718. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts.map +1 -1
  719. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js +2 -2
  720. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js.map +1 -1
  721. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts +1 -1
  722. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts.map +1 -1
  723. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js +4 -4
  724. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js.map +1 -1
  725. package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts +1 -1
  726. package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts.map +1 -1
  727. package/dist/core/components/viewers/bim/src/tools/bimToolbar.js +4 -4
  728. package/dist/core/components/viewers/bim/src/tools/bimToolbar.js.map +1 -1
  729. package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts +1 -1
  730. package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts.map +1 -1
  731. package/dist/core/components/viewers/bim/src/tools/measureBimTool.js +6 -7
  732. package/dist/core/components/viewers/bim/src/tools/measureBimTool.js.map +1 -1
  733. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts +1 -1
  734. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts.map +1 -1
  735. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js +5 -5
  736. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js.map +1 -1
  737. package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts +1 -1
  738. package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts.map +1 -1
  739. package/dist/core/components/viewers/bim/src/tools/shareBimTool.js.map +1 -1
  740. package/dist/core/components/viewers/bim/utils/GizmoController.d.ts +1 -1
  741. package/dist/core/components/viewers/bim/utils/GizmoController.d.ts.map +1 -1
  742. package/dist/core/components/viewers/bim/utils/GizmoController.js.map +1 -1
  743. package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts +1 -1
  744. package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts.map +1 -1
  745. package/dist/core/components/viewers/bim/utils/setCameraLookAt.js.map +1 -1
  746. package/dist/core/components/viewers/map/MapViewer.d.ts +1 -1
  747. package/dist/core/components/viewers/map/MapViewer.d.ts.map +1 -1
  748. package/dist/core/components/viewers/map/MapViewer.js +7 -7
  749. package/dist/core/components/viewers/map/MapViewer.js.map +1 -1
  750. package/dist/core/components/viewers/map/datasets/AddPortalDialog.d.ts.map +1 -1
  751. package/dist/core/components/viewers/map/datasets/AddPortalDialog.js +4 -4
  752. package/dist/core/components/viewers/map/datasets/AddPortalDialog.js.map +1 -1
  753. package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts +1 -1
  754. package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts.map +1 -1
  755. package/dist/core/components/viewers/map/datasets/DatasetDetails.js +4 -4
  756. package/dist/core/components/viewers/map/datasets/DatasetDetails.js.map +1 -1
  757. package/dist/core/components/viewers/map/datasets/DatasetManager/index.d.ts.map +1 -1
  758. package/dist/core/components/viewers/map/datasets/DatasetManager/index.js +13 -13
  759. package/dist/core/components/viewers/map/datasets/DatasetManager/index.js.map +1 -1
  760. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.d.ts.map +1 -1
  761. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js +2 -2
  762. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js.map +1 -1
  763. package/dist/core/components/viewers/map/datasets/DatasetSkeleton.d.ts.map +1 -1
  764. package/dist/core/components/viewers/map/datasets/DatasetSkeleton.js.map +1 -1
  765. package/dist/core/components/viewers/map/datasets/Filters.d.ts.map +1 -1
  766. package/dist/core/components/viewers/map/datasets/Filters.js +2 -2
  767. package/dist/core/components/viewers/map/datasets/Filters.js.map +1 -1
  768. package/dist/core/components/viewers/map/datasets/NestedFilter.d.ts.map +1 -1
  769. package/dist/core/components/viewers/map/datasets/NestedFilter.js +1 -1
  770. package/dist/core/components/viewers/map/datasets/NestedFilter.js.map +1 -1
  771. package/dist/core/components/viewers/map/datasets/RowActions.d.ts.map +1 -1
  772. package/dist/core/components/viewers/map/datasets/RowActions.js +3 -3
  773. package/dist/core/components/viewers/map/datasets/RowActions.js.map +1 -1
  774. package/dist/core/components/viewers/map/datasets/data.d.ts +1 -1
  775. package/dist/core/components/viewers/map/datasets/data.d.ts.map +1 -1
  776. package/dist/core/components/viewers/map/datasets/data.js +2 -2
  777. package/dist/core/components/viewers/map/datasets/data.js.map +1 -1
  778. package/dist/core/components/viewers/map/datasets/index.d.ts +1 -1
  779. package/dist/core/components/viewers/map/datasets/index.d.ts.map +1 -1
  780. package/dist/core/components/viewers/map/datasets/index.js +11 -11
  781. package/dist/core/components/viewers/map/datasets/index.js.map +1 -1
  782. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts +1 -1
  783. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts.map +1 -1
  784. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js +13 -16
  785. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js.map +1 -1
  786. package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.d.ts.map +1 -1
  787. package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.js.map +1 -1
  788. package/dist/core/components/viewers/map/datasets/src/cache.js.map +1 -1
  789. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts +1 -1
  790. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts.map +1 -1
  791. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js +3 -6
  792. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js.map +1 -1
  793. package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts +1 -1
  794. package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts.map +1 -1
  795. package/dist/core/components/viewers/map/datasets/src/localDatasets.js +3 -6
  796. package/dist/core/components/viewers/map/datasets/src/localDatasets.js.map +1 -1
  797. package/dist/core/components/viewers/map/datasets/src/minioDatasets.d.ts.map +1 -1
  798. package/dist/core/components/viewers/map/datasets/src/minioDatasets.js.map +1 -1
  799. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts +1 -1
  800. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts.map +1 -1
  801. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js +1 -12
  802. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js.map +1 -1
  803. package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts +1 -1
  804. package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts.map +1 -1
  805. package/dist/core/components/viewers/map/datasets/src/publishedTiles.js.map +1 -1
  806. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.d.ts.map +1 -1
  807. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js +1 -1
  808. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js.map +1 -1
  809. package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts +1 -12
  810. package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts.map +1 -1
  811. package/dist/core/components/viewers/map/datasets/src/urlSources.js +1 -1
  812. package/dist/core/components/viewers/map/datasets/src/urlSources.js.map +1 -1
  813. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.d.ts.map +1 -1
  814. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js +1 -1
  815. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js.map +1 -1
  816. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts +1 -1
  817. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts.map +1 -1
  818. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.js.map +1 -1
  819. package/dist/core/components/viewers/map/datasets/utils.d.ts +1 -1
  820. package/dist/core/components/viewers/map/datasets/utils.d.ts.map +1 -1
  821. package/dist/core/components/viewers/map/datasets/utils.js.map +1 -1
  822. package/dist/core/components/viewers/map/legends/MapLegendHost.d.ts.map +1 -1
  823. package/dist/core/components/viewers/map/legends/MapLegendHost.js +3 -3
  824. package/dist/core/components/viewers/map/legends/MapLegendHost.js.map +1 -1
  825. package/dist/core/components/viewers/map/src/Geocoder.d.ts.map +1 -1
  826. package/dist/core/components/viewers/map/src/Geocoder.js +8 -8
  827. package/dist/core/components/viewers/map/src/Geocoder.js.map +1 -1
  828. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts +1 -1
  829. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts.map +1 -1
  830. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.js.map +1 -1
  831. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts +1 -1
  832. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts.map +1 -1
  833. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js +3 -3
  834. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js.map +1 -1
  835. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts +1 -1
  836. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts.map +1 -1
  837. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js +11 -11
  838. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js.map +1 -1
  839. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.d.ts.map +1 -1
  840. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js +23 -56
  841. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js.map +1 -1
  842. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.d.ts.map +1 -1
  843. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js +4 -5
  844. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js.map +1 -1
  845. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.d.ts.map +1 -1
  846. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js +2 -2
  847. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js.map +1 -1
  848. package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
  849. package/dist/core/components/viewers/map/src/MapLayers/index.js +5 -5
  850. package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
  851. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.d.ts.map +1 -1
  852. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js +5 -5
  853. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js.map +1 -1
  854. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.d.ts.map +1 -1
  855. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js +4 -4
  856. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js.map +1 -1
  857. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts +1 -1
  858. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts.map +1 -1
  859. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.js.map +1 -1
  860. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.d.ts.map +1 -1
  861. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js +182 -61
  862. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js.map +1 -1
  863. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.d.ts.map +1 -1
  864. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js +1 -1
  865. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js.map +1 -1
  866. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.d.ts.map +1 -1
  867. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js +3 -3
  868. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js.map +1 -1
  869. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts +1 -1
  870. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts.map +1 -1
  871. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js +1 -1
  872. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js.map +1 -1
  873. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.d.ts.map +1 -1
  874. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.js.map +1 -1
  875. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts +1 -1
  876. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts.map +1 -1
  877. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.js +3 -3
  878. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.js.map +1 -1
  879. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.d.ts.map +1 -1
  880. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js +4 -3
  881. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js.map +1 -1
  882. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileMarker.d.ts.map +1 -1
  883. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileMarker.js.map +1 -1
  884. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.d.ts.map +1 -1
  885. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js +6 -6
  886. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js.map +1 -1
  887. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts +1 -1
  888. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts.map +1 -1
  889. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.js.map +1 -1
  890. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts +1 -1
  891. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts.map +1 -1
  892. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.js.map +1 -1
  893. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.d.ts.map +1 -1
  894. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.js.map +1 -1
  895. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.d.ts.map +1 -1
  896. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js +3 -3
  897. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js.map +1 -1
  898. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.d.ts.map +1 -1
  899. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js +3 -3
  900. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js.map +1 -1
  901. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.d.ts.map +1 -1
  902. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js +11 -14
  903. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js.map +1 -1
  904. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.d.ts.map +1 -1
  905. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js +2 -2
  906. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js.map +1 -1
  907. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.d.ts.map +1 -1
  908. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js +4 -4
  909. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js.map +1 -1
  910. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts +1 -1
  911. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts.map +1 -1
  912. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.js.map +1 -1
  913. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.d.ts.map +1 -1
  914. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.js.map +1 -1
  915. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.d.ts.map +1 -1
  916. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.js.map +1 -1
  917. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts +1 -1
  918. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts.map +1 -1
  919. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js +5 -4
  920. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js.map +1 -1
  921. package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts +1 -1
  922. package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts.map +1 -1
  923. package/dist/core/components/viewers/map/src/MapSidebar/index.js +4 -4
  924. package/dist/core/components/viewers/map/src/MapSidebar/index.js.map +1 -1
  925. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts +1 -1
  926. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts.map +1 -1
  927. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.js.map +1 -1
  928. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.d.ts.map +1 -1
  929. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js +2 -2
  930. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js.map +1 -1
  931. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  932. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  933. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js +5 -6
  934. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  935. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
  936. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js +6 -10
  937. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
  938. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts +1 -1
  939. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts.map +1 -1
  940. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js +4 -4
  941. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js.map +1 -1
  942. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.d.ts.map +1 -1
  943. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js +4 -4
  944. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js.map +1 -1
  945. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.d.ts.map +1 -1
  946. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js +2 -2
  947. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js.map +1 -1
  948. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts +1 -1
  949. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts.map +1 -1
  950. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.js.map +1 -1
  951. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.d.ts.map +1 -1
  952. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.js.map +1 -1
  953. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.d.ts.map +1 -1
  954. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js +3 -3
  955. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js.map +1 -1
  956. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.d.ts.map +1 -1
  957. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js +3 -3
  958. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js.map +1 -1
  959. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.d.ts.map +1 -1
  960. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js +3 -3
  961. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js.map +1 -1
  962. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.d.ts.map +1 -1
  963. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js +3 -3
  964. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js.map +1 -1
  965. package/dist/core/components/viewers/map/src/SimpleMap.d.ts.map +1 -1
  966. package/dist/core/components/viewers/map/src/SimpleMap.js +1 -1
  967. package/dist/core/components/viewers/map/src/SimpleMap.js.map +1 -1
  968. package/dist/core/components/viewers/map/src/compare/AddItem.d.ts +1 -1
  969. package/dist/core/components/viewers/map/src/compare/AddItem.d.ts.map +1 -1
  970. package/dist/core/components/viewers/map/src/compare/AddItem.js +6 -6
  971. package/dist/core/components/viewers/map/src/compare/AddItem.js.map +1 -1
  972. package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts +2 -2
  973. package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts.map +1 -1
  974. package/dist/core/components/viewers/map/src/compare/CompareDialog.js +5 -5
  975. package/dist/core/components/viewers/map/src/compare/CompareDialog.js.map +1 -1
  976. package/dist/core/components/viewers/map/src/compare/index.d.ts +1 -1
  977. package/dist/core/components/viewers/map/src/compare/index.d.ts.map +1 -1
  978. package/dist/core/components/viewers/map/src/compare/index.js +6 -6
  979. package/dist/core/components/viewers/map/src/compare/index.js.map +1 -1
  980. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.d.ts.map +1 -1
  981. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js +3 -3
  982. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js.map +1 -1
  983. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.d.ts.map +1 -1
  984. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js +5 -5
  985. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js.map +1 -1
  986. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.d.ts.map +1 -1
  987. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js +1 -3
  988. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/utils/uploadToPresignedURLS.js.map +1 -1
  989. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.d.ts.map +1 -1
  990. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js +3 -3
  991. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js.map +1 -1
  992. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.d.ts.map +1 -1
  993. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js +7 -7
  994. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js.map +1 -1
  995. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.d.ts.map +1 -1
  996. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js +1 -1
  997. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js.map +1 -1
  998. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts +2 -2
  999. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts.map +1 -1
  1000. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js +8 -8
  1001. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js.map +1 -1
  1002. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts +2 -2
  1003. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts.map +1 -1
  1004. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js +1 -1
  1005. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js.map +1 -1
  1006. package/dist/core/components/viewers/map/src/tools/mapTools.d.ts +2 -2
  1007. package/dist/core/components/viewers/map/src/tools/mapTools.d.ts.map +1 -1
  1008. package/dist/core/components/viewers/map/src/tools/mapTools.js +4 -4
  1009. package/dist/core/components/viewers/map/src/tools/mapTools.js.map +1 -1
  1010. package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts +1 -1
  1011. package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts.map +1 -1
  1012. package/dist/core/components/viewers/map/src/tools/measureMapTool.js +3 -3
  1013. package/dist/core/components/viewers/map/src/tools/measureMapTool.js.map +1 -1
  1014. package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts +1 -1
  1015. package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts.map +1 -1
  1016. package/dist/core/components/viewers/map/src/tools/shareMapTool.js.map +1 -1
  1017. package/dist/core/components/viewers/map/utils/ClusterManager.d.ts +1 -1
  1018. package/dist/core/components/viewers/map/utils/ClusterManager.d.ts.map +1 -1
  1019. package/dist/core/components/viewers/map/utils/ClusterManager.js.map +1 -1
  1020. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.d.ts.map +1 -1
  1021. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js +0 -1
  1022. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js.map +1 -1
  1023. package/dist/core/components/viewers/map/utils/MarkerManager.d.ts +1 -1
  1024. package/dist/core/components/viewers/map/utils/MarkerManager.d.ts.map +1 -1
  1025. package/dist/core/components/viewers/map/utils/MarkerManager.js.map +1 -1
  1026. package/dist/core/components/viewers/map/utils/extractCoordinates.js.map +1 -1
  1027. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts +1 -1
  1028. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts.map +1 -1
  1029. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.js.map +1 -1
  1030. package/dist/core/components/viewers/map/utils/flyToEach.d.ts +1 -1
  1031. package/dist/core/components/viewers/map/utils/flyToEach.d.ts.map +1 -1
  1032. package/dist/core/components/viewers/map/utils/flyToEach.js +0 -1
  1033. package/dist/core/components/viewers/map/utils/flyToEach.js.map +1 -1
  1034. package/dist/core/components/viewers/map/utils/geocoder.d.ts +1 -1
  1035. package/dist/core/components/viewers/map/utils/geocoder.d.ts.map +1 -1
  1036. package/dist/core/components/viewers/map/utils/geocoder.js +1 -1
  1037. package/dist/core/components/viewers/map/utils/geocoder.js.map +1 -1
  1038. package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts +1 -1
  1039. package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts.map +1 -1
  1040. package/dist/core/components/viewers/map/utils/geocoding/adapters.js.map +1 -1
  1041. package/dist/core/components/viewers/map/utils/geocoding/index.d.ts +1 -1
  1042. package/dist/core/components/viewers/map/utils/geocoding/index.d.ts.map +1 -1
  1043. package/dist/core/components/viewers/map/utils/geocoding/index.js +1 -1
  1044. package/dist/core/components/viewers/map/utils/geocoding/index.js.map +1 -1
  1045. package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts +1 -1
  1046. package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts.map +1 -1
  1047. package/dist/core/components/viewers/map/utils/geocoding/osm.js +1 -1
  1048. package/dist/core/components/viewers/map/utils/geocoding/osm.js.map +1 -1
  1049. package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts +1 -1
  1050. package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts.map +1 -1
  1051. package/dist/core/components/viewers/map/utils/geocoding/pelias.js.map +1 -1
  1052. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts +1 -1
  1053. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts.map +1 -1
  1054. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.js.map +1 -1
  1055. package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.d.ts.map +1 -1
  1056. package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js +0 -2
  1057. package/dist/core/components/viewers/map/utils/getOsmIdbyCoordinates.js.map +1 -1
  1058. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.d.ts.map +1 -1
  1059. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js +1 -1
  1060. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js.map +1 -1
  1061. package/dist/core/components/viewers/pointcloud/PointCloudViewer.d.ts.map +1 -1
  1062. package/dist/core/components/viewers/pointcloud/PointCloudViewer.js +5 -5
  1063. package/dist/core/components/viewers/pointcloud/PointCloudViewer.js.map +1 -1
  1064. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.d.ts.map +1 -1
  1065. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js +7 -7
  1066. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js.map +1 -1
  1067. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.d.ts.map +1 -1
  1068. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.js.map +1 -1
  1069. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.d.ts.map +1 -1
  1070. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js +15 -15
  1071. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js.map +1 -1
  1072. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.d.ts.map +1 -1
  1073. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js +3 -3
  1074. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js.map +1 -1
  1075. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts +1 -1
  1076. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts.map +1 -1
  1077. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js +1 -1
  1078. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js.map +1 -1
  1079. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.d.ts.map +1 -1
  1080. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js +2 -2
  1081. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js.map +1 -1
  1082. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.d.ts.map +1 -1
  1083. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js +3 -3
  1084. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js.map +1 -1
  1085. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  1086. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  1087. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js +4 -4
  1088. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  1089. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts +1 -1
  1090. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts.map +1 -1
  1091. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js +5 -5
  1092. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js.map +1 -1
  1093. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.d.ts.map +1 -1
  1094. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js +1 -1
  1095. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js.map +1 -1
  1096. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.d.ts.map +1 -1
  1097. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js +3 -3
  1098. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js.map +1 -1
  1099. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
  1100. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js +4 -4
  1101. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
  1102. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.d.ts.map +1 -1
  1103. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js +10 -10
  1104. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js.map +1 -1
  1105. package/dist/core/components/viewers/pointcloud/src/ViewportGizmo.js.map +1 -1
  1106. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts +1 -1
  1107. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts.map +1 -1
  1108. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js +3 -3
  1109. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js.map +1 -1
  1110. package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.d.ts.map +1 -1
  1111. package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.js.map +1 -1
  1112. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.d.ts.map +1 -1
  1113. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.js.map +1 -1
  1114. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.d.ts.map +1 -1
  1115. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.js.map +1 -1
  1116. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.d.ts.map +1 -1
  1117. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.js.map +1 -1
  1118. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts +1 -1
  1119. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts.map +1 -1
  1120. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js +6 -6
  1121. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js.map +1 -1
  1122. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.d.ts.map +1 -1
  1123. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js +2 -2
  1124. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js.map +1 -1
  1125. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.d.ts.map +1 -1
  1126. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js +2 -2
  1127. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js.map +1 -1
  1128. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.d.ts.map +1 -1
  1129. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js +3 -3
  1130. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js.map +1 -1
  1131. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.d.ts.map +1 -1
  1132. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js +1 -1
  1133. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js.map +1 -1
  1134. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.d.ts.map +1 -1
  1135. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js +1 -1
  1136. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js.map +1 -1
  1137. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.d.ts.map +1 -1
  1138. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js +1 -1
  1139. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js.map +1 -1
  1140. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.d.ts.map +1 -1
  1141. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js +4 -4
  1142. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js.map +1 -1
  1143. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts +1 -1
  1144. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts.map +1 -1
  1145. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js +1 -1
  1146. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js.map +1 -1
  1147. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts +1 -1
  1148. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts.map +1 -1
  1149. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js +2 -2
  1150. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js.map +1 -1
  1151. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts +1 -1
  1152. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts.map +1 -1
  1153. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.js.map +1 -1
  1154. package/dist/core/hooks/buildings/createBuildingHooks.d.ts +1 -1
  1155. package/dist/core/hooks/buildings/createBuildingHooks.d.ts.map +1 -1
  1156. package/dist/core/hooks/buildings/createBuildingHooks.js.map +1 -1
  1157. package/dist/core/hooks/comments/comments.d.ts +11 -0
  1158. package/dist/core/hooks/comments/comments.d.ts.map +1 -1
  1159. package/dist/core/hooks/comments/comments.js +3 -1
  1160. package/dist/core/hooks/comments/comments.js.map +1 -1
  1161. package/dist/core/hooks/comments/createCommentHooks.d.ts +12 -1
  1162. package/dist/core/hooks/comments/createCommentHooks.d.ts.map +1 -1
  1163. package/dist/core/hooks/comments/createCommentHooks.js +31 -2
  1164. package/dist/core/hooks/comments/createCommentHooks.js.map +1 -1
  1165. package/dist/core/hooks/files/createFileHooks.d.ts +1 -1
  1166. package/dist/core/hooks/files/createFileHooks.d.ts.map +1 -1
  1167. package/dist/core/hooks/files/createFileHooks.js.map +1 -1
  1168. package/dist/core/hooks/files/files.d.ts.map +1 -1
  1169. package/dist/core/hooks/files/files.js +1 -2
  1170. package/dist/core/hooks/files/files.js.map +1 -1
  1171. package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts +1 -1
  1172. package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts.map +1 -1
  1173. package/dist/core/hooks/infrastructures/createInfrastructureHooks.js.map +1 -1
  1174. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts +1 -1
  1175. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts.map +1 -1
  1176. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.js.map +1 -1
  1177. package/dist/core/hooks/organizations/createOrganizationHooks.d.ts +1 -1
  1178. package/dist/core/hooks/organizations/createOrganizationHooks.d.ts.map +1 -1
  1179. package/dist/core/hooks/organizations/createOrganizationHooks.js.map +1 -1
  1180. package/dist/core/hooks/provider.d.ts +5 -5
  1181. package/dist/core/hooks/provider.d.ts.map +1 -1
  1182. package/dist/core/hooks/provider.js +4 -4
  1183. package/dist/core/hooks/provider.js.map +1 -1
  1184. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts +1 -1
  1185. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts.map +1 -1
  1186. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.js.map +1 -1
  1187. package/dist/core/hooks/sensors/createSensorHooks.d.ts +1 -1
  1188. package/dist/core/hooks/sensors/createSensorHooks.d.ts.map +1 -1
  1189. package/dist/core/hooks/sensors/createSensorHooks.js +1 -1
  1190. package/dist/core/hooks/sensors/createSensorHooks.js.map +1 -1
  1191. package/dist/core/hooks/sites/createSiteHooks.d.ts +1 -1
  1192. package/dist/core/hooks/sites/createSiteHooks.d.ts.map +1 -1
  1193. package/dist/core/hooks/sites/createSiteHooks.js.map +1 -1
  1194. package/dist/core/hooks/sites/sites.d.ts.map +1 -1
  1195. package/dist/core/hooks/ui/useResizableSidebarWidth.d.ts +30 -0
  1196. package/dist/core/hooks/ui/useResizableSidebarWidth.d.ts.map +1 -0
  1197. package/dist/core/hooks/ui/useResizableSidebarWidth.js +75 -0
  1198. package/dist/core/hooks/ui/useResizableSidebarWidth.js.map +1 -0
  1199. package/dist/core/hooks/useCaptureScreenshot.d.ts.map +1 -1
  1200. package/dist/core/hooks/useCaptureScreenshot.js.map +1 -1
  1201. package/dist/core/hooks/useCurrentViewerPosition.d.ts.map +1 -1
  1202. package/dist/core/hooks/useCurrentViewerPosition.js +1 -1
  1203. package/dist/core/hooks/useCurrentViewerPosition.js.map +1 -1
  1204. package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts +1 -1
  1205. package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts.map +1 -1
  1206. package/dist/core/hooks/useGeocodingRuntimeConfig.js.map +1 -1
  1207. package/dist/core/hooks/useShareUrl.d.ts.map +1 -1
  1208. package/dist/core/hooks/useShareUrl.js +1 -1
  1209. package/dist/core/hooks/useShareUrl.js.map +1 -1
  1210. package/dist/core/hooks/users/createUserHooks.d.ts +1 -1
  1211. package/dist/core/hooks/users/createUserHooks.d.ts.map +1 -1
  1212. package/dist/core/hooks/users/createUserHooks.js.map +1 -1
  1213. package/dist/core/i18n/index.js +1 -1
  1214. package/dist/core/i18n/index.js.map +1 -1
  1215. package/dist/core/i18n/messages/en.json +1877 -1872
  1216. package/dist/core/i18n/messages/es.json +1875 -1870
  1217. package/dist/core/i18n/messages/fr.json +1875 -1870
  1218. package/dist/core/plugins/host/context.d.ts +1 -1
  1219. package/dist/core/plugins/host/context.d.ts.map +1 -1
  1220. package/dist/core/plugins/host/context.js.map +1 -1
  1221. package/dist/core/plugins/host/host.d.ts +1 -1
  1222. package/dist/core/plugins/host/host.d.ts.map +1 -1
  1223. package/dist/core/plugins/host/host.js.map +1 -1
  1224. package/dist/core/plugins/host/provider.d.ts.map +1 -1
  1225. package/dist/core/plugins/host/provider.js +2 -2
  1226. package/dist/core/plugins/host/provider.js.map +1 -1
  1227. package/dist/core/store/AppConfig/context.d.ts +1 -1
  1228. package/dist/core/store/AppConfig/context.d.ts.map +1 -1
  1229. package/dist/core/store/AppConfig/context.js.map +1 -1
  1230. package/dist/core/store/AppConfig/reducer.d.ts +2 -2
  1231. package/dist/core/store/AppConfig/reducer.d.ts.map +1 -1
  1232. package/dist/core/store/AppConfig/reducer.js.map +1 -1
  1233. package/dist/core/store/BIM/context.d.ts +1 -1
  1234. package/dist/core/store/BIM/context.d.ts.map +1 -1
  1235. package/dist/core/store/BIM/context.js.map +1 -1
  1236. package/dist/core/store/BIM/reducer.d.ts +3 -3
  1237. package/dist/core/store/BIM/reducer.d.ts.map +1 -1
  1238. package/dist/core/store/BIM/reducer.js.map +1 -1
  1239. package/dist/core/store/Buildings/context.d.ts +1 -1
  1240. package/dist/core/store/Buildings/context.d.ts.map +1 -1
  1241. package/dist/core/store/Buildings/context.js.map +1 -1
  1242. package/dist/core/store/Buildings/reducer.d.ts +2 -2
  1243. package/dist/core/store/Buildings/reducer.d.ts.map +1 -1
  1244. package/dist/core/store/Buildings/reducer.js.map +1 -1
  1245. package/dist/core/store/CombineProviders.d.ts.map +1 -1
  1246. package/dist/core/store/CombineProviders.js +7 -7
  1247. package/dist/core/store/CombineProviders.js.map +1 -1
  1248. package/dist/core/store/Content/context.d.ts +1 -1
  1249. package/dist/core/store/Content/context.d.ts.map +1 -1
  1250. package/dist/core/store/Content/context.js.map +1 -1
  1251. package/dist/core/store/Datasets/context.d.ts +1 -1
  1252. package/dist/core/store/Datasets/context.d.ts.map +1 -1
  1253. package/dist/core/store/Datasets/context.js.map +1 -1
  1254. package/dist/core/store/Datasets/reducer.d.ts +1 -1
  1255. package/dist/core/store/Datasets/reducer.d.ts.map +1 -1
  1256. package/dist/core/store/Datasets/reducer.js +0 -2
  1257. package/dist/core/store/Datasets/reducer.js.map +1 -1
  1258. package/dist/core/store/Files/context.d.ts +1 -1
  1259. package/dist/core/store/Files/context.d.ts.map +1 -1
  1260. package/dist/core/store/Files/context.js.map +1 -1
  1261. package/dist/core/store/Files/reducer.d.ts +3 -3
  1262. package/dist/core/store/Files/reducer.d.ts.map +1 -1
  1263. package/dist/core/store/Files/reducer.js +0 -1
  1264. package/dist/core/store/Files/reducer.js.map +1 -1
  1265. package/dist/core/store/Map/context.d.ts +1 -1
  1266. package/dist/core/store/Map/context.d.ts.map +1 -1
  1267. package/dist/core/store/Map/context.js +1 -1
  1268. package/dist/core/store/Map/context.js.map +1 -1
  1269. package/dist/core/store/Map/reducer.d.ts +6 -5
  1270. package/dist/core/store/Map/reducer.d.ts.map +1 -1
  1271. package/dist/core/store/Map/reducer.js.map +1 -1
  1272. package/dist/core/store/MapSites/context.d.ts +1 -1
  1273. package/dist/core/store/MapSites/context.d.ts.map +1 -1
  1274. package/dist/core/store/MapSites/context.js.map +1 -1
  1275. package/dist/core/store/MapSites/reducer.d.ts +1 -1
  1276. package/dist/core/store/MapSites/reducer.d.ts.map +1 -1
  1277. package/dist/core/store/MapSites/reducer.js.map +1 -1
  1278. package/dist/core/store/Menus/context.d.ts +1 -1
  1279. package/dist/core/store/Menus/context.d.ts.map +1 -1
  1280. package/dist/core/store/Menus/context.js +6 -3
  1281. package/dist/core/store/Menus/context.js.map +1 -1
  1282. package/dist/core/store/Menus/reducer.d.ts +21 -1
  1283. package/dist/core/store/Menus/reducer.d.ts.map +1 -1
  1284. package/dist/core/store/Menus/reducer.js +21 -3
  1285. package/dist/core/store/Menus/reducer.js.map +1 -1
  1286. package/dist/core/store/Permissions/context.d.ts +1 -1
  1287. package/dist/core/store/Permissions/context.d.ts.map +1 -1
  1288. package/dist/core/store/Permissions/context.js +2 -2
  1289. package/dist/core/store/Permissions/context.js.map +1 -1
  1290. package/dist/core/store/PointCloud/context.d.ts +1 -1
  1291. package/dist/core/store/PointCloud/context.d.ts.map +1 -1
  1292. package/dist/core/store/PointCloud/context.js.map +1 -1
  1293. package/dist/core/store/PointCloud/reducer.d.ts +1 -1
  1294. package/dist/core/store/PointCloud/reducer.d.ts.map +1 -1
  1295. package/dist/core/store/PointCloud/reducer.js.map +1 -1
  1296. package/dist/core/store/Tools/context.d.ts +1 -1
  1297. package/dist/core/store/Tools/context.d.ts.map +1 -1
  1298. package/dist/core/store/Tools/context.js.map +1 -1
  1299. package/dist/core/store/Tools/reducer.d.ts +1 -1
  1300. package/dist/core/store/Tools/reducer.d.ts.map +1 -1
  1301. package/dist/core/store/Tools/reducer.js.map +1 -1
  1302. package/dist/core/styles/globals.css +17 -16
  1303. package/dist/core/styles/tailwindMerge.d.ts +1 -1
  1304. package/dist/core/styles/tailwindMerge.d.ts.map +1 -1
  1305. package/dist/core/styles/tailwindMerge.js.map +1 -1
  1306. package/dist/core/types/datasetTypes.d.ts +2 -2
  1307. package/dist/core/types/datasetTypes.d.ts.map +1 -1
  1308. package/dist/core/types/dbTypes.d.ts +1 -1
  1309. package/dist/core/types/dbTypes.d.ts.map +1 -1
  1310. package/dist/core/types/dbTypes.js.map +1 -1
  1311. package/dist/core/types/files.d.ts +2 -2
  1312. package/dist/core/types/files.d.ts.map +1 -1
  1313. package/dist/core/types/global.d.ts +3 -3
  1314. package/dist/core/types/global.d.ts.map +1 -1
  1315. package/dist/core/types/global.js.map +1 -1
  1316. package/dist/core/types/map.d.ts +2 -2
  1317. package/dist/core/types/map.d.ts.map +1 -1
  1318. package/dist/core/types/tools.d.ts +3 -3
  1319. package/dist/core/types/tools.d.ts.map +1 -1
  1320. package/dist/core/types/users.d.ts +2 -2
  1321. package/dist/core/types/users.d.ts.map +1 -1
  1322. package/dist/core/utils/getFileIcon.d.ts +1 -1
  1323. package/dist/core/utils/getFileIcon.d.ts.map +1 -1
  1324. package/dist/core/utils/getFileIcon.js.map +1 -1
  1325. package/dist/core/utils/markerUtils.d.ts +10 -0
  1326. package/dist/core/utils/markerUtils.d.ts.map +1 -1
  1327. package/dist/core/utils/markerUtils.js +9 -1
  1328. package/dist/core/utils/markerUtils.js.map +1 -1
  1329. package/dist/core/utils/memcache.d.ts.map +1 -1
  1330. package/dist/core/utils/memcache.js +0 -7
  1331. package/dist/core/utils/memcache.js.map +1 -1
  1332. package/dist/core/utils/roles.d.ts.map +1 -1
  1333. package/dist/core/utils/roles.js.map +1 -1
  1334. package/dist/core/utils/timeUtils.js.map +1 -1
  1335. package/dist/core/utils/utils.d.ts +1 -1
  1336. package/dist/core/utils/utils.d.ts.map +1 -1
  1337. package/dist/core/utils/utils.js.map +1 -1
  1338. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BimLoadingState/index.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport React from 'react'\r\nimport { Button } from '../../../../ui/Button'\r\nimport { Card, CardContent, CardHeader } from '../../../../ui/Card'\r\nimport { Input } from '../../../../ui/Input'\r\nimport { LoadingSpinner } from '../../../../ui/LoadingSpinner'\r\nimport { Upload, Box, Building2, Search, X, SquareArrowOutUpRight } from 'lucide-react'\r\nimport { BimContext, BuildingsContext, usePermissions } from '../../../../../store'\r\nimport { LoadModels } from '../LoadModels'\r\nimport { useTranslations } from 'next-intl'\r\nimport { useFilesByBuildingId, useUploadFileToBuilding } from '../../../../../hooks/files/files'\r\nimport { useFileUploadHandler } from '../../../../ui/FilesManager/src/useFileUploadHandler'\r\nimport type { DbFile as DbFile } from '../../../../../types/dbTypes'\r\nimport { cn } from '../../../../../utils/utils'\r\nimport { useSearchParams, useRouter } from 'next/navigation'\r\nimport { useBuilding, useBuildings } from '../../../../../hooks/buildings/buildings'\r\nimport { setCameraLookAt } from '../../utils/setCameraLookAt'\r\n\r\nexport type bimViewerState = 'opening' | 'loading' | 'ready' | 'error' | 'noBimFiles' | 'noBuilding'\r\n\r\nexport function BimLoadingState() {\r\n const t = useTranslations('BimLoadingState')\r\n // Permissions\r\n const { ability } = usePermissions()\r\n\r\n const { state: bimState, dispatch: bimDispatch } = React.useContext(BimContext)\r\n const { bimComponents, world, fragments } = bimState.bim\r\n const { state: buildingState, dispatch: buildingDispatch } = React.useContext(BuildingsContext)\r\n const { building: storeBuilding } = buildingState.buildings\r\n\r\n const searchParams = useSearchParams()\r\n const buildingId = searchParams.get(\"buildingId\")\r\n const { building: urlBuilding, isLoading: buildingLoading, isError: buildingError } = useBuilding(buildingId ? Number(buildingId) : null)\r\n const { buildings, isLoading: buildingsLoading } = useBuildings()\r\n\r\n // Determine the current building to use\r\n const building = storeBuilding || urlBuilding\r\n\r\n React.useEffect(() => {\r\n if (!storeBuilding && urlBuilding ) {\r\n buildingDispatch({ type: \"SET-CURRENT-BUILDING\", payload: { building: urlBuilding } })\r\n }\r\n }, [urlBuilding, storeBuilding, buildingDispatch])\r\n\r\n const router = useRouter()\r\n const fileInputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n // Upload file hooks\r\n const { uploadFile } = useUploadFileToBuilding(building?.id)\r\n\r\n // Use the reusable upload handler\r\n const { handleFileUpload } = useFileUploadHandler({\r\n buildingId: building?.id,\r\n tag: 'bim-file',\r\n isVisible: true,\r\n uploadFile,\r\n })\r\n\r\n const [currentState, setCurrentState] = React.useState<bimViewerState>('opening')\r\n const [hasLoadedModels, setHasLoadedModels] = React.useState(false)\r\n const [cameraHasMoved, setCameraHasMoved] = React.useState(false)\r\n const isLoadingModelsRef = React.useRef(false)\r\n const [searchTerm, setSearchTerm] = React.useState('')\r\n const [searchResults, setSearchResults] = React.useState<any[]>([])\r\n const [selectedBuilding, setSelectedBuilding] = React.useState<any>(null)\r\n \r\n const { files, isLoading: filesLoading } = useFilesByBuildingId(building?.id)\r\n const bimFiles: DbFile[] = React.useMemo(() => (\r\n files.filter(file => {\r\n const ext = file?.extension?.toLowerCase()\r\n return ext === 'frag' || ext === 'ifc'\r\n })\r\n ), [files])\r\n\r\n // Fuzzy search function for buildings\r\n const fuzzySearchBuildings = React.useCallback((buildings: any[], searchTerm: string) => {\r\n if (!searchTerm.trim()) return buildings.slice(0, 10)\r\n \r\n const fuzzySearchScore = (search: string, text: string): number => {\r\n if (!search || !text) return 0\r\n const searchLower = search.toLowerCase()\r\n const textLower = text.toLowerCase()\r\n \r\n // Exact match gets highest score\r\n if (textLower === searchLower) return 1000\r\n // Starts with search term gets high score\r\n if (textLower.startsWith(searchLower)) return 800\r\n // Contains search term gets medium score\r\n if (textLower.includes(searchLower)) return 600\r\n \r\n return 0\r\n }\r\n\r\n return buildings\r\n .map((building) => {\r\n const address = building.buildingAddress || ''\r\n const name = building.buildingName || ''\r\n const id = building.id.toString()\r\n \r\n const addressScore = fuzzySearchScore(searchTerm, address)\r\n const nameScore = fuzzySearchScore(searchTerm, name)\r\n const idScore = fuzzySearchScore(searchTerm, id)\r\n \r\n const maxScore = Math.max(addressScore, nameScore, idScore)\r\n return { ...building, searchScore: maxScore }\r\n })\r\n .filter(building => building.searchScore > 0)\r\n .sort((a, b) => b.searchScore - a.searchScore)\r\n .slice(0, 10)\r\n }, [])\r\n\r\n // Handle search\r\n const handleSearch = React.useCallback((term: string) => {\r\n setSearchTerm(term)\r\n if (buildings) {\r\n setSearchResults(fuzzySearchBuildings(buildings, term))\r\n }\r\n }, [buildings, fuzzySearchBuildings])\r\n\r\n const shouldShow = (currentState === 'opening' || currentState === 'noBimFiles' || currentState === 'loading' || currentState === 'noBuilding') && !cameraHasMoved\r\n\r\n // Once models have loaded, start a fallback timer to dismiss the card if camera doesn't move\r\n React.useEffect(() => {\r\n if (currentState === 'loading' && hasLoadedModels) {\r\n const fallbackTimer = setTimeout(() => {\r\n setCameraHasMoved(true)\r\n setCurrentState('ready')\r\n }, 5000)\r\n\r\n return () => clearTimeout(fallbackTimer)\r\n }\r\n }, [currentState, hasLoadedModels])\r\n\r\n // Set up camera movement detection\r\n React.useEffect(() => {\r\n if (bimState.bim.world?.camera?.controls) {\r\n const controls = bimState.bim.world.camera.controls\r\n\r\n const handleCameraChange = () => {\r\n setCameraHasMoved(true)\r\n if (hasLoadedModels) {\r\n setCurrentState('ready')\r\n }\r\n }\r\n\r\n // Listen for camera control event (when user moves the camera)\r\n controls.addEventListener('control', handleCameraChange)\r\n\r\n return () => {\r\n controls.removeEventListener('control', handleCameraChange)\r\n }\r\n }\r\n }, [bimState.bim.world, hasLoadedModels])\r\n\r\n const loadBimModels = React.useCallback(async () => {\r\n if (!bimComponents || bimFiles.length === 0) return\r\n if (isLoadingModelsRef.current) return\r\n\r\n isLoadingModelsRef.current = true\r\n\r\n try {\r\n // State should already be 'loading' when this is called\r\n const loadModels = bimComponents.get(LoadModels)\r\n\r\n const {sharing} = setCameraLookAt(world, searchParams)\r\n loadModels.sharing = sharing\r\n\r\n let loadedCount = 0\r\n for (const bimFile of bimFiles) {\r\n try {\r\n await loadModels.load(bimFile.url, bimFile.name)\r\n loadedCount++\r\n // Apply saved 3D position after load (setupModel resets to origin)\r\n if ((bimFile.x != null || bimFile.y != null || bimFile.z != null) && fragments) {\r\n const fragModel = fragments.core.models.list.get(bimFile.name)\r\n if (fragModel) {\r\n fragModel.object.position.set(bimFile.x ?? 0, bimFile.y ?? 0, bimFile.z ?? 0)\r\n if (bimFile.rotation != null) fragModel.object.rotation.y = bimFile.rotation\r\n fragModel.object.updateMatrixWorld(true)\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"Error loading BIM file\", bimFile.name, e)\r\n }\r\n }\r\n\r\n // Force update the fragments to render geometry immediately\r\n if (fragments) {\r\n fragments.core.update(true)\r\n }\r\n\r\n // If every file failed to load, surface an error instead of silently\r\n // dismissing the card as though the models were there.\r\n if (loadedCount === 0) {\r\n setCurrentState('error')\r\n return\r\n }\r\n\r\n // Mark each loaded file as visible in the BIM store so ModelsSection reflects it\r\n for (const bimFile of bimFiles) {\r\n bimDispatch({ type: 'SET_MODEL_UI_STATE', payload: { fileId: bimFile.id, isVisible: true } })\r\n }\r\n\r\n // Signal that models have loaded — the fallback timer will dismiss the card\r\n setHasLoadedModels(true)\r\n } catch (error) {\r\n console.error('Error loading BIM models:', error)\r\n setCurrentState('error')\r\n } finally {\r\n isLoadingModelsRef.current = false\r\n }\r\n }, [bimComponents, bimFiles, fragments])\r\n\r\n // Handle initial state transitions\r\n React.useEffect(() => {\r\n // If no bimComponents available, stay in opening state\r\n if (!bimComponents) {\r\n setCurrentState('opening')\r\n setHasLoadedModels(false)\r\n return\r\n }\r\n\r\n // If building is loading, stay in opening state\r\n if (buildingLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If building failed to load or no buildingId provided, show noBuilding state\r\n if (buildingError || (!buildingId && !building)) {\r\n setCurrentState('noBuilding')\r\n setHasLoadedModels(false)\r\n return\r\n }\r\n\r\n // If we have a building but files are still loading, stay in opening state\r\n if (building && filesLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If we've already loaded models (or are currently loading), don't reload\r\n if (hasLoadedModels) {\r\n return\r\n }\r\n\r\n // If we have a building but no BIM files, show noBimFiles state\r\n if (building && bimFiles.length === 0) {\r\n setCurrentState('noBimFiles')\r\n return\r\n }\r\n\r\n // We have BIM files, set to loading and start loading them\r\n if (building && bimFiles.length > 0) {\r\n setCurrentState('loading')\r\n setCameraHasMoved(false) // Reset camera moved state for new model\r\n loadBimModels()\r\n }\r\n }, [bimComponents, building, buildingLoading, buildingError, buildingId, filesLoading, bimFiles.length, loadBimModels, hasLoadedModels])\r\n\r\n // Don't render if not visible\r\n if (!shouldShow) {\r\n return null\r\n }\r\n\r\n const handleUploadClick = () => {\r\n fileInputRef.current?.click()\r\n }\r\n\r\n const handleBuildingSelect = (building: any) => {\r\n const url = new URL(window.location.href)\r\n url.searchParams.set('buildingId', building.id.toString())\r\n buildingDispatch({ type: 'SET-CURRENT-BUILDING', payload: { building } })\r\n setSelectedBuilding(building)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n router.push(url.toString())\r\n }\r\n\r\n const handleFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.target.files\r\n if (!files || files.length === 0) return\r\n\r\n const file = files[0]\r\n\r\n try {\r\n const modelId = file.name\r\n setCurrentState('loading')\r\n setCameraHasMoved(false) // Reset camera moved state for new upload\r\n await handleFileUpload(file)\r\n\r\n window.dispatchEvent(new CustomEvent('bim-model-loaded-from-file', { detail: { modelId } }))\r\n bimDispatch({\r\n type: 'SET_MODEL', payload: { modelId },\r\n })\r\n setCurrentState('ready')\r\n }\r\n catch (error) {\r\n console.error('Error uploading file:', error)\r\n setCurrentState('error')\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"absolute z-10 inset-0 bg-background/50 backdrop-blur-[1px] flex items-center justify-center pointer-events-none\">\r\n <Card className={cn(\"w-[536px] pointer-events-auto flex flex-col justify-start items-center gap-2\")}>\r\n <CardHeader className=\"flex justify-center items-center\">\r\n <div className=\"w-12 h-12 p-2 bg-card rounded-md shadow-sm border border-border flex justify-center items-center\">\r\n {currentState === 'noBuilding' ? (\r\n <Building2 className={cn(\"w-4 h-5 text-foreground\", buildingsLoading && \"animate-pulse\")} strokeWidth={2} />\r\n ) : (\r\n <Box className={cn(\"w-4 h-5 text-foreground\", currentState === 'opening' && \"animate-pulse\")} strokeWidth={2} />\r\n )}\r\n </div>\r\n </CardHeader>\r\n\r\n <CardContent className=\"self-stretch flex flex-col justify-start items-center gap-6 pt-0\">\r\n <div className=\"self-stretch flex flex-col justify-start items-center gap-2\">\r\n <div className=\"self-stretch text-center text-foreground text-xl font-semibold font-['Inter'] leading-7 flex items-center justify-center gap-2\">\r\n {currentState === 'opening' ? (\r\n <>\r\n {t('openingText')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : currentState === 'loading' ? (\r\n <>\r\n {t('loadingBimModel')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : currentState === 'noBuilding' ? (\r\n <>\r\n {t('noBuilding')}\r\n </>\r\n ) : (\r\n t('noBIMLoaded')\r\n )}\r\n </div>\r\n {(currentState === 'noBimFiles' || currentState === 'noBuilding') && (\r\n <div className=\"self-stretch text-center text-muted-foreground text-sm font-normal font-['Inter'] leading-tight\">\r\n {currentState === 'noBuilding' ? t('selectBuildingHelpText') : t('helpText')}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {currentState === 'noBuilding' && (\r\n <div className=\"self-stretch flex flex-col gap-3 justify-centre items-center\">\r\n {buildingsLoading ? (\r\n <div className=\"flex items-center justify-center gap-2 text-muted-foreground\">\r\n <LoadingSpinner size={16} />\r\n <span>{t('loadingBuildings') || 'Loading buildings...'}</span>\r\n </div>\r\n ) : buildings && buildings.length > 0 ? (\r\n <div className=\"w-full relative\">\r\n {selectedBuilding ? (\r\n <div className=\"relative flex justify-end items-center\">\r\n <Input\r\n type=\"text\"\r\n value={\r\n 'Building: '\r\n + (selectedBuilding.buildingName && selectedBuilding.buildingAddress\r\n ? `${selectedBuilding.buildingName}, ${selectedBuilding.buildingAddress}`\r\n : selectedBuilding.buildingName || selectedBuilding.buildingAddress || `Building ${selectedBuilding.id}`)\r\n }\r\n readOnly\r\n className=\"w-full\"\r\n />\r\n <X \r\n className=\"absolute right-2 cursor-pointer w-4 h-4 text-muted-foreground hover:text-foreground\" \r\n onClick={() => {\r\n setSelectedBuilding(null)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n }} \r\n />\r\n </div>\r\n ) : (\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4\" />\r\n <Input\r\n placeholder={t('searchBuildings') || 'Search buildings...'}\r\n value={searchTerm}\r\n onChange={(e) => handleSearch(e.target.value)}\r\n className=\"w-full pl-10\"\r\n disabled={!ability.can('read', 'Building')}\r\n />\r\n </div>\r\n )}\r\n \r\n {/* Search results dropdown */}\r\n {searchResults.length > 0 && searchTerm !== '' && !selectedBuilding && (\r\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-background border border-border rounded-md shadow-lg max-h-60 overflow-y-auto z-20\">\r\n {searchResults.map(building => (\r\n <div\r\n key={building.id}\r\n className=\"px-3 py-2 text-sm cursor-pointer hover:bg-muted transition-colors flex gap-2 items-center\"\r\n onClick={() => handleBuildingSelect(building)}\r\n >\r\n <SquareArrowOutUpRight className=\"w-3 h-3\" />\r\n {building.buildingName\r\n ? `${building.buildingName}, ${building.buildingAddress}`\r\n : building.buildingAddress || `Building ${building.id}`}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"text-muted-foreground text-center\">\r\n {t('noBuildings') || 'No buildings available'}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {currentState === 'noBimFiles' && (\r\n <div className=\"self-stretch flex justify-center items-center gap-3\">\r\n <Input\r\n ref={fileInputRef}\r\n type=\"file\"\r\n accept=\".ifc,.frag\"\r\n onChange={handleFileChange}\r\n className=\"hidden\"\r\n />\r\n <Button\r\n onClick={handleUploadClick}\r\n size=\"sm\"\r\n className=\"gap-2\"\r\n disabled={!ability.can('create', 'File')}\r\n >\r\n <Upload className=\"w-4 h-4\" />\r\n {t('uploadButton')}\r\n </Button>\r\n </div>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["buildings","searchTerm","building","files"]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BimLoadingState/index.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { Upload, Box, Building2, Search, X, SquareArrowOutUpRight } from 'lucide-react'\r\nimport { useSearchParams, useRouter } from 'next/navigation'\r\nimport { useTranslations } from 'next-intl'\r\nimport React from 'react'\r\n\r\nimport { useBuilding, useBuildings } from '../../../../../hooks/buildings/buildings'\r\nimport { useFilesByBuildingId, useUploadFileToBuilding } from '../../../../../hooks/files/files'\r\nimport { BimContext, BuildingsContext, usePermissions } from '../../../../../store'\r\nimport { cn } from '../../../../../utils/utils'\r\nimport { Button } from '../../../../ui/Button'\r\nimport { Card, CardContent, CardHeader } from '../../../../ui/Card'\r\nimport { useFileUploadHandler } from '../../../../ui/FilesManager/src/useFileUploadHandler'\r\nimport { Input } from '../../../../ui/Input'\r\nimport { LoadingSpinner } from '../../../../ui/LoadingSpinner'\r\nimport { setCameraLookAt } from '../../utils/setCameraLookAt'\r\nimport { LoadModels } from '../LoadModels'\r\n\r\nimport type { DbFile as DbFile } from '../../../../../types/dbTypes'\r\n\r\n\r\nexport type bimViewerState = 'opening' | 'loading' | 'ready' | 'error' | 'noBimFiles' | 'noBuilding'\r\n\r\nexport function BimLoadingState() {\r\n const t = useTranslations('BimLoadingState')\r\n // Permissions\r\n const { ability } = usePermissions()\r\n\r\n const { state: bimState, dispatch: bimDispatch } = React.useContext(BimContext)\r\n const { bimComponents, world, fragments } = bimState.bim\r\n const { state: buildingState, dispatch: buildingDispatch } = React.useContext(BuildingsContext)\r\n const { building: storeBuilding } = buildingState.buildings\r\n\r\n const searchParams = useSearchParams()\r\n const buildingId = searchParams.get(\"buildingId\")\r\n const { building: urlBuilding, isLoading: buildingLoading, isError: buildingError } = useBuilding(buildingId ? Number(buildingId) : null)\r\n const { buildings, isLoading: buildingsLoading } = useBuildings()\r\n\r\n // Determine the current building to use\r\n const building = storeBuilding || urlBuilding\r\n\r\n React.useEffect(() => {\r\n if (!storeBuilding && urlBuilding ) {\r\n buildingDispatch({ type: \"SET-CURRENT-BUILDING\", payload: { building: urlBuilding } })\r\n }\r\n }, [urlBuilding, storeBuilding, buildingDispatch])\r\n\r\n const router = useRouter()\r\n const fileInputRef = React.useRef<HTMLInputElement>(null)\r\n\r\n // Upload file hooks\r\n const { uploadFile } = useUploadFileToBuilding(building?.id)\r\n\r\n // Use the reusable upload handler\r\n const { handleFileUpload } = useFileUploadHandler({\r\n buildingId: building?.id,\r\n tag: 'bim-file',\r\n isVisible: true,\r\n uploadFile,\r\n })\r\n\r\n const [currentState, setCurrentState] = React.useState<bimViewerState>('opening')\r\n const [hasLoadedModels, setHasLoadedModels] = React.useState(false)\r\n const [cameraHasMoved, setCameraHasMoved] = React.useState(false)\r\n const isLoadingModelsRef = React.useRef(false)\r\n const [searchTerm, setSearchTerm] = React.useState('')\r\n const [searchResults, setSearchResults] = React.useState<any[]>([])\r\n const [selectedBuilding, setSelectedBuilding] = React.useState<any>(null)\r\n\r\n const { files, isLoading: filesLoading } = useFilesByBuildingId(building?.id)\r\n const bimFiles: DbFile[] = React.useMemo(() => (\r\n files.filter(file => {\r\n const ext = file?.extension?.toLowerCase()\r\n return ext === 'frag' || ext === 'ifc'\r\n })\r\n ), [files])\r\n\r\n // Fuzzy search function for buildings\r\n const fuzzySearchBuildings = React.useCallback((buildings: any[], searchTerm: string) => {\r\n if (!searchTerm.trim()) return buildings.slice(0, 10)\r\n\r\n const fuzzySearchScore = (search: string, text: string): number => {\r\n if (!search || !text) return 0\r\n const searchLower = search.toLowerCase()\r\n const textLower = text.toLowerCase()\r\n\r\n // Exact match gets highest score\r\n if (textLower === searchLower) return 1000\r\n // Starts with search term gets high score\r\n if (textLower.startsWith(searchLower)) return 800\r\n // Contains search term gets medium score\r\n if (textLower.includes(searchLower)) return 600\r\n\r\n return 0\r\n }\r\n\r\n return buildings\r\n .map((building) => {\r\n const address = building.buildingAddress || ''\r\n const name = building.buildingName || ''\r\n const id = building.id.toString()\r\n\r\n const addressScore = fuzzySearchScore(searchTerm, address)\r\n const nameScore = fuzzySearchScore(searchTerm, name)\r\n const idScore = fuzzySearchScore(searchTerm, id)\r\n\r\n const maxScore = Math.max(addressScore, nameScore, idScore)\r\n return { ...building, searchScore: maxScore }\r\n })\r\n .filter(building => building.searchScore > 0)\r\n .sort((a, b) => b.searchScore - a.searchScore)\r\n .slice(0, 10)\r\n }, [])\r\n\r\n // Handle search\r\n const handleSearch = React.useCallback((term: string) => {\r\n setSearchTerm(term)\r\n if (buildings) {\r\n setSearchResults(fuzzySearchBuildings(buildings, term))\r\n }\r\n }, [buildings, fuzzySearchBuildings])\r\n\r\n const shouldShow = (currentState === 'opening' || currentState === 'noBimFiles' || currentState === 'loading' || currentState === 'noBuilding') && !cameraHasMoved\r\n\r\n // Once models have loaded, start a fallback timer to dismiss the card if camera doesn't move\r\n React.useEffect(() => {\r\n if (currentState === 'loading' && hasLoadedModels) {\r\n const fallbackTimer = setTimeout(() => {\r\n setCameraHasMoved(true)\r\n setCurrentState('ready')\r\n }, 5000)\r\n\r\n return () => clearTimeout(fallbackTimer)\r\n }\r\n }, [currentState, hasLoadedModels])\r\n\r\n // Set up camera movement detection\r\n React.useEffect(() => {\r\n if (bimState.bim.world?.camera?.controls) {\r\n const controls = bimState.bim.world.camera.controls\r\n\r\n const handleCameraChange = () => {\r\n setCameraHasMoved(true)\r\n if (hasLoadedModels) {\r\n setCurrentState('ready')\r\n }\r\n }\r\n\r\n // Listen for camera control event (when user moves the camera)\r\n controls.addEventListener('control', handleCameraChange)\r\n\r\n return () => {\r\n controls.removeEventListener('control', handleCameraChange)\r\n }\r\n }\r\n }, [bimState.bim.world, hasLoadedModels])\r\n\r\n const loadBimModels = React.useCallback(async () => {\r\n if (!bimComponents || bimFiles.length === 0) return\r\n if (isLoadingModelsRef.current) return\r\n\r\n isLoadingModelsRef.current = true\r\n\r\n try {\r\n // State should already be 'loading' when this is called\r\n const loadModels = bimComponents.get(LoadModels)\r\n\r\n const {sharing} = setCameraLookAt(world, searchParams)\r\n loadModels.sharing = sharing\r\n\r\n let loadedCount = 0\r\n for (const bimFile of bimFiles) {\r\n try {\r\n await loadModels.load(bimFile.url, bimFile.name)\r\n loadedCount++\r\n // Apply saved 3D position after load (setupModel resets to origin)\r\n if ((bimFile.x != null || bimFile.y != null || bimFile.z != null) && fragments) {\r\n const fragModel = fragments.core.models.list.get(bimFile.name)\r\n if (fragModel) {\r\n fragModel.object.position.set(bimFile.x ?? 0, bimFile.y ?? 0, bimFile.z ?? 0)\r\n if (bimFile.rotation != null) fragModel.object.rotation.y = bimFile.rotation\r\n fragModel.object.updateMatrixWorld(true)\r\n }\r\n }\r\n } catch (e) {\r\n console.error(\"Error loading BIM file\", bimFile.name, e)\r\n }\r\n }\r\n\r\n // Force update the fragments to render geometry immediately\r\n if (fragments) {\r\n fragments.core.update(true)\r\n }\r\n\r\n // If every file failed to load, surface an error instead of silently\r\n // dismissing the card as though the models were there.\r\n if (loadedCount === 0) {\r\n setCurrentState('error')\r\n return\r\n }\r\n\r\n // Mark each loaded file as visible in the BIM store so ModelsSection reflects it\r\n for (const bimFile of bimFiles) {\r\n bimDispatch({ type: 'SET_MODEL_UI_STATE', payload: { fileId: bimFile.id, isVisible: true } })\r\n }\r\n\r\n // Signal that models have loaded — the fallback timer will dismiss the card\r\n setHasLoadedModels(true)\r\n } catch (error) {\r\n console.error('Error loading BIM models:', error)\r\n setCurrentState('error')\r\n } finally {\r\n isLoadingModelsRef.current = false\r\n }\r\n }, [bimComponents, bimFiles, fragments])\r\n\r\n // Handle initial state transitions\r\n React.useEffect(() => {\r\n // If no bimComponents available, stay in opening state\r\n if (!bimComponents) {\r\n setCurrentState('opening')\r\n setHasLoadedModels(false)\r\n return\r\n }\r\n\r\n // If building is loading, stay in opening state\r\n if (buildingLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If building failed to load or no buildingId provided, show noBuilding state\r\n if (buildingError || (!buildingId && !building)) {\r\n setCurrentState('noBuilding')\r\n setHasLoadedModels(false)\r\n return\r\n }\r\n\r\n // If we have a building but files are still loading, stay in opening state\r\n if (building && filesLoading) {\r\n setCurrentState('opening')\r\n return\r\n }\r\n\r\n // If we've already loaded models (or are currently loading), don't reload\r\n if (hasLoadedModels) {\r\n return\r\n }\r\n\r\n // If we have a building but no BIM files, show noBimFiles state\r\n if (building && bimFiles.length === 0) {\r\n setCurrentState('noBimFiles')\r\n return\r\n }\r\n\r\n // We have BIM files, set to loading and start loading them\r\n if (building && bimFiles.length > 0) {\r\n setCurrentState('loading')\r\n setCameraHasMoved(false) // Reset camera moved state for new model\r\n loadBimModels()\r\n }\r\n }, [bimComponents, building, buildingLoading, buildingError, buildingId, filesLoading, bimFiles.length, loadBimModels, hasLoadedModels])\r\n\r\n // Don't render if not visible\r\n if (!shouldShow) {\r\n return null\r\n }\r\n\r\n const handleUploadClick = () => {\r\n fileInputRef.current?.click()\r\n }\r\n\r\n const handleBuildingSelect = (building: any) => {\r\n const url = new URL(window.location.href)\r\n url.searchParams.set('buildingId', building.id.toString())\r\n buildingDispatch({ type: 'SET-CURRENT-BUILDING', payload: { building } })\r\n setSelectedBuilding(building)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n router.push(url.toString())\r\n }\r\n\r\n const handleFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.target.files\r\n if (!files || files.length === 0) return\r\n\r\n const file = files[0]\r\n\r\n try {\r\n const modelId = file.name\r\n setCurrentState('loading')\r\n setCameraHasMoved(false) // Reset camera moved state for new upload\r\n await handleFileUpload(file)\r\n\r\n window.dispatchEvent(new CustomEvent('bim-model-loaded-from-file', { detail: { modelId } }))\r\n bimDispatch({\r\n type: 'SET_MODEL', payload: { modelId },\r\n })\r\n setCurrentState('ready')\r\n }\r\n catch (error) {\r\n console.error('Error uploading file:', error)\r\n setCurrentState('error')\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"absolute z-10 inset-0 bg-background/50 backdrop-blur-[1px] flex items-center justify-center pointer-events-none\">\r\n <Card className={cn(\"w-[536px] pointer-events-auto flex flex-col justify-start items-center gap-2\")}>\r\n <CardHeader className=\"flex justify-center items-center\">\r\n <div className=\"w-12 h-12 p-2 bg-card rounded-md shadow-sm border border-border flex justify-center items-center\">\r\n {currentState === 'noBuilding' ? (\r\n <Building2 className={cn(\"w-4 h-5 text-foreground\", buildingsLoading && \"animate-pulse\")} strokeWidth={2} />\r\n ) : (\r\n <Box className={cn(\"w-4 h-5 text-foreground\", currentState === 'opening' && \"animate-pulse\")} strokeWidth={2} />\r\n )}\r\n </div>\r\n </CardHeader>\r\n\r\n <CardContent className=\"self-stretch flex flex-col justify-start items-center gap-6 pt-0\">\r\n <div className=\"self-stretch flex flex-col justify-start items-center gap-2\">\r\n <div className=\"self-stretch text-center text-foreground text-xl font-semibold font-['Inter'] leading-7 flex items-center justify-center gap-2\">\r\n {currentState === 'opening' ? (\r\n <>\r\n {t('openingText')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : currentState === 'loading' ? (\r\n <>\r\n {t('loadingBimModel')}\r\n <LoadingSpinner size={20} />\r\n </>\r\n ) : currentState === 'noBuilding' ? (\r\n <>\r\n {t('noBuilding')}\r\n </>\r\n ) : (\r\n t('noBIMLoaded')\r\n )}\r\n </div>\r\n {(currentState === 'noBimFiles' || currentState === 'noBuilding') && (\r\n <div className=\"self-stretch text-center text-muted-foreground text-sm font-normal font-['Inter'] leading-tight\">\r\n {currentState === 'noBuilding' ? t('selectBuildingHelpText') : t('helpText')}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {currentState === 'noBuilding' && (\r\n <div className=\"self-stretch flex flex-col gap-3 justify-centre items-center\">\r\n {buildingsLoading ? (\r\n <div className=\"flex items-center justify-center gap-2 text-muted-foreground\">\r\n <LoadingSpinner size={16} />\r\n <span>{t('loadingBuildings') || 'Loading buildings...'}</span>\r\n </div>\r\n ) : buildings && buildings.length > 0 ? (\r\n <div className=\"w-full relative\">\r\n {selectedBuilding ? (\r\n <div className=\"relative flex justify-end items-center\">\r\n <Input\r\n type=\"text\"\r\n value={\r\n 'Building: '\r\n + (selectedBuilding.buildingName && selectedBuilding.buildingAddress\r\n ? `${selectedBuilding.buildingName}, ${selectedBuilding.buildingAddress}`\r\n : selectedBuilding.buildingName || selectedBuilding.buildingAddress || `Building ${selectedBuilding.id}`)\r\n }\r\n readOnly\r\n className=\"w-full\"\r\n />\r\n <X\r\n className=\"absolute right-2 cursor-pointer w-4 h-4 text-muted-foreground hover:text-foreground\"\r\n onClick={() => {\r\n setSelectedBuilding(null)\r\n setSearchTerm('')\r\n setSearchResults([])\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground w-4 h-4\" />\r\n <Input\r\n placeholder={t('searchBuildings') || 'Search buildings...'}\r\n value={searchTerm}\r\n onChange={(e) => handleSearch(e.target.value)}\r\n className=\"w-full pl-10\"\r\n disabled={!ability.can('read', 'Building')}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Search results dropdown */}\r\n {searchResults.length > 0 && searchTerm !== '' && !selectedBuilding && (\r\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-background border border-border rounded-md shadow-lg max-h-60 overflow-y-auto z-20\">\r\n {searchResults.map(building => (\r\n <div\r\n key={building.id}\r\n className=\"px-3 py-2 text-sm cursor-pointer hover:bg-muted transition-colors flex gap-2 items-center\"\r\n onClick={() => handleBuildingSelect(building)}\r\n >\r\n <SquareArrowOutUpRight className=\"w-3 h-3\" />\r\n {building.buildingName\r\n ? `${building.buildingName}, ${building.buildingAddress}`\r\n : building.buildingAddress || `Building ${building.id}`}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"text-muted-foreground text-center\">\r\n {t('noBuildings') || 'No buildings available'}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {currentState === 'noBimFiles' && (\r\n <div className=\"self-stretch flex justify-center items-center gap-3\">\r\n <Input\r\n ref={fileInputRef}\r\n type=\"file\"\r\n accept=\".ifc,.frag\"\r\n onChange={handleFileChange}\r\n className=\"hidden\"\r\n />\r\n <Button\r\n onClick={handleUploadClick}\r\n size=\"sm\"\r\n className=\"gap-2\"\r\n disabled={!ability.can('create', 'File')}\r\n >\r\n <Upload className=\"w-4 h-4\" />\r\n {t('uploadButton')}\r\n </Button>\r\n </div>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </>\r\n )\r\n}\r\n"],"mappings":"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","names":["buildings","searchTerm","building","files"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LenghtMeasurement.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAK3C,qBAAa,iBAAkB,SAAQ,GAAG,CAAC,SAAS;IAEhD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAEtE,OAAO,UAAQ;IAEf,OAAO,CAAC,QAAQ,CAAqC;IAErD,OAAO,CAAC,KAAK,CAAyB;IAEtC,QAAQ,CAAC,iBAAiB;gBAA2B,MAAM;OAAK;gBAEpD,UAAU,EAAE,GAAG,CAAC,UAAU;IActC,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,wBAAwB;IAahC,sBAAsB;IAStB,sBAAsB;IAStB,MAAM;IAQN,MAAM;IAQN,SAAS;IAST,YAAY;IAUZ,OAAO;CAUV"}
1
+ {"version":3,"file":"LenghtMeasurement.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAM3C,qBAAa,iBAAkB,SAAQ,GAAG,CAAC,SAAS;IAEhD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAEtE,OAAO,UAAQ;IAEf,OAAO,CAAC,QAAQ,CAAqC;IAErD,OAAO,CAAC,KAAK,CAAyB;IAEtC,QAAQ,CAAC,iBAAiB;gBAA2B,MAAM;OAAK;gBAEpD,UAAU,EAAE,GAAG,CAAC,UAAU;IActC,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,wBAAwB;IAahC,sBAAsB;IAStB,sBAAsB;IAStB,MAAM;IAQN,MAAM;IAQN,SAAS;IAST,YAAY;IAUZ,OAAO;CAUV"}
@@ -1,7 +1,7 @@
1
1
  import * as OBC from "@thatopen/components";
2
2
  import * as OBF from "@thatopen/components-front";
3
- import { CurrentWorld } from "../CurrentWorld";
4
3
  import * as THREE from "three";
4
+ import { CurrentWorld } from "../CurrentWorld";
5
5
  const _LengthMeasurement = class _LengthMeasurement extends OBC.Component {
6
6
  constructor(components) {
7
7
  super(components);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as OBC from '@thatopen/components'\r\nimport * as OBF from '@thatopen/components-front'\r\nimport { CurrentWorld } from '../CurrentWorld'\r\nimport * as THREE from 'three'\r\n\r\nexport class LengthMeasurement extends OBC.Component {\r\n\r\n static readonly uuid = \"5f8da1b7-6023-4a21-acc7-569127cdde54\" as const\r\n\r\n enabled = false\r\n\r\n private measurer: OBF.LengthMeasurement | null = null\r\n\r\n private world: OBC.World | null = null\r\n\r\n readonly onDimensionCreate = new OBC.Event<{ length: number }>()\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(LengthMeasurement.uuid, this)\r\n this.measurer = components.get(OBF.LengthMeasurement)\r\n this.world = components.get(CurrentWorld).world\r\n\r\n if (this.measurer && this.world) {\r\n this.measurer.world = this.world\r\n this.measurer.color = new THREE.Color(0x73cee2)\r\n this.setupEventListeners()\r\n }\r\n this.enabled = true\r\n }\r\n\r\n private setupEventListeners() {\r\n if (!this.measurer) return\r\n\r\n // Listen for when measurements are created\r\n this.measurer.list.onItemAdded.add((dimension) => {\r\n this.onDimensionCreate.trigger({ length: dimension.value })\r\n })\r\n\r\n // Set up double-click event for creating measurements\r\n this.setupDoubleClickListener()\r\n }\r\n\r\n private setupDoubleClickListener() {\r\n if (!this.world) return\r\n\r\n const container = this.world.renderer?.three.domElement\r\n if (!container) return\r\n\r\n container.ondblclick = () => {\r\n if (this.measurer?.enabled) {\r\n this.measurer.create()\r\n }\r\n }\r\n }\r\n\r\n createFreeMeasurements() {\r\n if (!this.measurer || !this.world) return\r\n\r\n \r\n this.enabled = true\r\n this.measurer.enabled = true\r\n this.measurer.mode = 'free'\r\n }\r\n\r\n createEdgeMeasurements() {\r\n if (!this.measurer || !this.world) return\r\n\r\n // Enable the component and edge measurement mode with snapping\r\n this.enabled = true\r\n this.measurer.enabled = true\r\n this.measurer.mode = 'edge'\r\n }\r\n\r\n create() {\r\n if (!this.measurer) return\r\n \r\n // Create a measurement programmatically \r\n // This will start the measurement creation process\r\n this.measurer.create()\r\n }\r\n\r\n delete() {\r\n if (!this.measurer) return\r\n \r\n // Delete the last created measurement\r\n this.measurer.delete()\r\n this.measurer.endCreation()\r\n }\r\n\r\n deleteAll() {\r\n if (!this.measurer) return\r\n \r\n // Delete all measurements using the list\r\n this.measurer.list.clear()\r\n this.measurer.endCreation()\r\n this.measurer.enabled = false\r\n }\r\n\r\n getAllValues() {\r\n if (!this.measurer) return []\r\n \r\n const lengths: number[] = []\r\n for (const line of this.measurer.list) {\r\n lengths.push(line.value)\r\n }\r\n return lengths\r\n }\r\n\r\n dispose() {\r\n if (this.measurer) {\r\n this.measurer.enabled = false\r\n this.measurer.list.clear()\r\n }\r\n this.enabled = false\r\n this.measurer = null\r\n this.world = null\r\n this.onDimensionCreate.reset()\r\n }\r\n}"],"mappings":"AAGA,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,SAAS,oBAAoB;AAC7B,YAAY,WAAW;AAEhB,MAAM,qBAAN,MAAM,2BAA0B,IAAI,UAAU;AAAA,EAYjD,YAAY,YAA4B;AACpC,UAAM,UAAU;AATpB,mBAAU;AAEV,SAAQ,WAAyC;AAEjD,SAAQ,QAA0B;AAElC,SAAS,oBAAoB,IAAI,IAAI,MAA0B;AAI3D,eAAW,IAAI,mBAAkB,MAAM,IAAI;AAC3C,SAAK,WAAW,WAAW,IAAI,IAAI,iBAAiB;AACpD,SAAK,QAAQ,WAAW,IAAI,YAAY,EAAE;AAE1C,QAAI,KAAK,YAAY,KAAK,OAAO;AAC7B,WAAK,SAAS,QAAQ,KAAK;AAC3B,WAAK,SAAS,QAAQ,IAAI,MAAM,MAAM,OAAQ;AAC9C,WAAK,oBAAoB;AAAA,IAC7B;AACA,SAAK,UAAU;AAAA,EACnB;AAAA,EAEQ,sBAAsB;AAC1B,QAAI,CAAC,KAAK,SAAU;AAGpB,SAAK,SAAS,KAAK,YAAY,IAAI,CAAC,cAAc;AAC9C,WAAK,kBAAkB,QAAQ,EAAE,QAAQ,UAAU,MAAM,CAAC;AAAA,IAC9D,CAAC;AAGD,SAAK,yBAAyB;AAAA,EAClC;AAAA,EAEQ,2BAA2B;AA9CvC;AA+CQ,QAAI,CAAC,KAAK,MAAO;AAEjB,UAAM,aAAY,UAAK,MAAM,aAAX,mBAAqB,MAAM;AAC7C,QAAI,CAAC,UAAW;AAEhB,cAAU,aAAa,MAAM;AApDrC,UAAAA;AAqDY,WAAIA,MAAA,KAAK,aAAL,gBAAAA,IAAe,SAAS;AACxB,aAAK,SAAS,OAAO;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBAAyB;AACrB,QAAI,CAAC,KAAK,YAAY,CAAC,KAAK,MAAO;AAGnC,SAAK,UAAU;AACf,SAAK,SAAS,UAAU;AACxB,SAAK,SAAS,OAAO;AAAA,EACzB;AAAA,EAEA,yBAAyB;AACrB,QAAI,CAAC,KAAK,YAAY,CAAC,KAAK,MAAO;AAGnC,SAAK,UAAU;AACf,SAAK,SAAS,UAAU;AACxB,SAAK,SAAS,OAAO;AAAA,EACzB;AAAA,EAEA,SAAS;AACL,QAAI,CAAC,KAAK,SAAU;AAIpB,SAAK,SAAS,OAAO;AAAA,EACzB;AAAA,EAEA,SAAS;AACL,QAAI,CAAC,KAAK,SAAU;AAGpB,SAAK,SAAS,OAAO;AACrB,SAAK,SAAS,YAAY;AAAA,EAC9B;AAAA,EAEA,YAAY;AACR,QAAI,CAAC,KAAK,SAAU;AAGpB,SAAK,SAAS,KAAK,MAAM;AACzB,SAAK,SAAS,YAAY;AAC1B,SAAK,SAAS,UAAU;AAAA,EAC5B;AAAA,EAEA,eAAe;AACX,QAAI,CAAC,KAAK,SAAU,QAAO,CAAC;AAE5B,UAAM,UAAoB,CAAC;AAC3B,eAAW,QAAQ,KAAK,SAAS,MAAM;AACnC,cAAQ,KAAK,KAAK,KAAK;AAAA,IAC3B;AACA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU;AACN,QAAI,KAAK,UAAU;AACf,WAAK,SAAS,UAAU;AACxB,WAAK,SAAS,KAAK,MAAM;AAAA,IAC7B;AACA,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,QAAQ;AACb,SAAK,kBAAkB,MAAM;AAAA,EACjC;AACJ;AAlHa,mBAEO,OAAO;AAFpB,IAAM,oBAAN;","names":["_a"]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as OBC from '@thatopen/components'\r\nimport * as OBF from '@thatopen/components-front'\r\nimport * as THREE from 'three'\r\n\r\nimport { CurrentWorld } from '../CurrentWorld'\r\n\r\nexport class LengthMeasurement extends OBC.Component {\r\n\r\n static readonly uuid = \"5f8da1b7-6023-4a21-acc7-569127cdde54\" as const\r\n\r\n enabled = false\r\n\r\n private measurer: OBF.LengthMeasurement | null = null\r\n\r\n private world: OBC.World | null = null\r\n\r\n readonly onDimensionCreate = new OBC.Event<{ length: number }>()\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(LengthMeasurement.uuid, this)\r\n this.measurer = components.get(OBF.LengthMeasurement)\r\n this.world = components.get(CurrentWorld).world\r\n\r\n if (this.measurer && this.world) {\r\n this.measurer.world = this.world\r\n this.measurer.color = new THREE.Color(0x73cee2)\r\n this.setupEventListeners()\r\n }\r\n this.enabled = true\r\n }\r\n\r\n private setupEventListeners() {\r\n if (!this.measurer) return\r\n\r\n // Listen for when measurements are created\r\n this.measurer.list.onItemAdded.add((dimension) => {\r\n this.onDimensionCreate.trigger({ length: dimension.value })\r\n })\r\n\r\n // Set up double-click event for creating measurements\r\n this.setupDoubleClickListener()\r\n }\r\n\r\n private setupDoubleClickListener() {\r\n if (!this.world) return\r\n\r\n const container = this.world.renderer?.three.domElement\r\n if (!container) return\r\n\r\n container.ondblclick = () => {\r\n if (this.measurer?.enabled) {\r\n this.measurer.create()\r\n }\r\n }\r\n }\r\n\r\n createFreeMeasurements() {\r\n if (!this.measurer || !this.world) return\r\n\r\n\r\n this.enabled = true\r\n this.measurer.enabled = true\r\n this.measurer.mode = 'free'\r\n }\r\n\r\n createEdgeMeasurements() {\r\n if (!this.measurer || !this.world) return\r\n\r\n // Enable the component and edge measurement mode with snapping\r\n this.enabled = true\r\n this.measurer.enabled = true\r\n this.measurer.mode = 'edge'\r\n }\r\n\r\n create() {\r\n if (!this.measurer) return\r\n\r\n // Create a measurement programmatically\r\n // This will start the measurement creation process\r\n this.measurer.create()\r\n }\r\n\r\n delete() {\r\n if (!this.measurer) return\r\n\r\n // Delete the last created measurement\r\n this.measurer.delete()\r\n this.measurer.endCreation()\r\n }\r\n\r\n deleteAll() {\r\n if (!this.measurer) return\r\n\r\n // Delete all measurements using the list\r\n this.measurer.list.clear()\r\n this.measurer.endCreation()\r\n this.measurer.enabled = false\r\n }\r\n\r\n getAllValues() {\r\n if (!this.measurer) return []\r\n\r\n const lengths: number[] = []\r\n for (const line of this.measurer.list) {\r\n lengths.push(line.value)\r\n }\r\n return lengths\r\n }\r\n\r\n dispose() {\r\n if (this.measurer) {\r\n this.measurer.enabled = false\r\n this.measurer.list.clear()\r\n }\r\n this.enabled = false\r\n this.measurer = null\r\n this.world = null\r\n this.onDimensionCreate.reset()\r\n }\r\n}"],"mappings":"AAGA,YAAY,SAAS;AACrB,YAAY,SAAS;AACrB,YAAY,WAAW;AAEvB,SAAS,oBAAoB;AAEtB,MAAM,qBAAN,MAAM,2BAA0B,IAAI,UAAU;AAAA,EAYjD,YAAY,YAA4B;AACpC,UAAM,UAAU;AATpB,mBAAU;AAEV,SAAQ,WAAyC;AAEjD,SAAQ,QAA0B;AAElC,SAAS,oBAAoB,IAAI,IAAI,MAA0B;AAI3D,eAAW,IAAI,mBAAkB,MAAM,IAAI;AAC3C,SAAK,WAAW,WAAW,IAAI,IAAI,iBAAiB;AACpD,SAAK,QAAQ,WAAW,IAAI,YAAY,EAAE;AAE1C,QAAI,KAAK,YAAY,KAAK,OAAO;AAC7B,WAAK,SAAS,QAAQ,KAAK;AAC3B,WAAK,SAAS,QAAQ,IAAI,MAAM,MAAM,OAAQ;AAC9C,WAAK,oBAAoB;AAAA,IAC7B;AACA,SAAK,UAAU;AAAA,EACnB;AAAA,EAEQ,sBAAsB;AAC1B,QAAI,CAAC,KAAK,SAAU;AAGpB,SAAK,SAAS,KAAK,YAAY,IAAI,CAAC,cAAc;AAC9C,WAAK,kBAAkB,QAAQ,EAAE,QAAQ,UAAU,MAAM,CAAC;AAAA,IAC9D,CAAC;AAGD,SAAK,yBAAyB;AAAA,EAClC;AAAA,EAEQ,2BAA2B;AA/CvC;AAgDQ,QAAI,CAAC,KAAK,MAAO;AAEjB,UAAM,aAAY,UAAK,MAAM,aAAX,mBAAqB,MAAM;AAC7C,QAAI,CAAC,UAAW;AAEhB,cAAU,aAAa,MAAM;AArDrC,UAAAA;AAsDY,WAAIA,MAAA,KAAK,aAAL,gBAAAA,IAAe,SAAS;AACxB,aAAK,SAAS,OAAO;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,yBAAyB;AACrB,QAAI,CAAC,KAAK,YAAY,CAAC,KAAK,MAAO;AAGnC,SAAK,UAAU;AACf,SAAK,SAAS,UAAU;AACxB,SAAK,SAAS,OAAO;AAAA,EACzB;AAAA,EAEA,yBAAyB;AACrB,QAAI,CAAC,KAAK,YAAY,CAAC,KAAK,MAAO;AAGnC,SAAK,UAAU;AACf,SAAK,SAAS,UAAU;AACxB,SAAK,SAAS,OAAO;AAAA,EACzB;AAAA,EAEA,SAAS;AACL,QAAI,CAAC,KAAK,SAAU;AAIpB,SAAK,SAAS,OAAO;AAAA,EACzB;AAAA,EAEA,SAAS;AACL,QAAI,CAAC,KAAK,SAAU;AAGpB,SAAK,SAAS,OAAO;AACrB,SAAK,SAAS,YAAY;AAAA,EAC9B;AAAA,EAEA,YAAY;AACR,QAAI,CAAC,KAAK,SAAU;AAGpB,SAAK,SAAS,KAAK,MAAM;AACzB,SAAK,SAAS,YAAY;AAC1B,SAAK,SAAS,UAAU;AAAA,EAC5B;AAAA,EAEA,eAAe;AACX,QAAI,CAAC,KAAK,SAAU,QAAO,CAAC;AAE5B,UAAM,UAAoB,CAAC;AAC3B,eAAW,QAAQ,KAAK,SAAS,MAAM;AACnC,cAAQ,KAAK,KAAK,KAAK;AAAA,IAC3B;AACA,WAAO;AAAA,EACX;AAAA,EAEA,UAAU;AACN,QAAI,KAAK,UAAU;AACf,WAAK,SAAS,UAAU;AACxB,WAAK,SAAS,KAAK,MAAM;AAAA,IAC7B;AACA,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,QAAQ;AACb,SAAK,kBAAkB,MAAM;AAAA,EACjC;AACJ;AAlHa,mBAEO,OAAO;AAFpB,IAAM,oBAAN;","names":["_a"]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { DbFile } from '../../../../../../../types/dbTypes';
2
+ import type { DbFile } from '../../../../../../../types/dbTypes';
3
3
  export interface FileItem {
4
4
  task: DbFile;
5
5
  icon: React.ElementType;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAA;AAE3D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,CAAC,WAAW,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,gBAAgB,sBAO/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAA;AAChE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,KAAK,CAAC,WAAW,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,gBAAgB,sBAO/B"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { TopicsSection } from "./src/TopicsSection";
4
3
  import { CommentsSection } from "../../../../../../ui/Comments/CommentsSection";
4
+ import { TopicsSection } from "./src/TopicsSection";
5
5
  function CommunicationTab() {
6
6
  return /* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-col space-y-6 py-4 overflow-hidden", children: [
7
7
  /* @__PURE__ */ jsx(TopicsSection, {}),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\nimport { TopicsSection } from './src/TopicsSection'\r\nimport { DbFile } from '../../../../../../../types/dbTypes'\r\nimport { CommentsSection } from '../../../../../../ui/Comments/CommentsSection'\r\nexport interface FileItem {\r\n task: DbFile\r\n icon: React.ElementType\r\n visible: boolean\r\n}\r\n\r\nexport function CommunicationTab() {\r\n return (\r\n <div className=\"flex-1 flex flex-col space-y-6 py-4 overflow-hidden\">\r\n <TopicsSection />\r\n <CommentsSection />\r\n </div>\r\n )\r\n}\r\n"],"mappings":";AAiBI,SACE,KADF;AAXJ,SAAS,qBAAqB;AAE9B,SAAS,uBAAuB;AAOzB,SAAS,mBAAmB;AACjC,SACE,qBAAC,SAAI,WAAU,uDACb;AAAA,wBAAC,iBAAc;AAAA,IACf,oBAAC,mBAAgB;AAAA,KACnB;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\n\r\nimport { CommentsSection } from '../../../../../../ui/Comments/CommentsSection'\r\n\r\nimport { TopicsSection } from './src/TopicsSection'\r\n\r\nimport type { DbFile } from '../../../../../../../types/dbTypes'\r\nexport interface FileItem {\r\n task: DbFile\r\n icon: React.ElementType\r\n visible: boolean\r\n}\r\n\r\nexport function CommunicationTab() {\r\n return (\r\n <div className=\"flex-1 flex flex-col space-y-6 py-4 overflow-hidden\">\r\n <TopicsSection />\r\n <CommentsSection />\r\n </div>\r\n )\r\n}\r\n"],"mappings":";AAoBI,SACE,KADF;AAbJ,SAAS,uBAAuB;AAEhC,SAAS,qBAAqB;AASvB,SAAS,mBAAmB;AACjC,SACE,qBAAC,SAAI,WAAU,uDACb;AAAA,wBAAC,iBAAc;AAAA,IACf,oBAAC,mBAAgB;AAAA,KACnB;AAEJ;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import * as OBC from '@thatopen/components';
2
+ import type * as OBC from '@thatopen/components';
3
3
  type TopicAction = 'view' | 'edit' | 'delete';
4
4
  interface CollapsibleTopicItemProps {
5
5
  topic: OBC.Topic;
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleTopicItem.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAE3C,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE7C,UAAU,yBAAyB;IACjC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAA;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACpD;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,yBAAyB,qBAqNlF"}
1
+ {"version":3,"file":"CollapsibleTopicItem.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAEhD,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;AAE7C,UAAU,yBAAyB;IACjC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAA;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACpD;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,yBAAyB,qBAqNlF"}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
- import { Button } from "../../../../../../../ui/Button";
5
- import { Badge } from "../../../../../../../ui/Badge";
6
- import { Separator } from "../../../../../../../ui/Separator";
3
+ import { format } from "date-fns";
7
4
  import * as LR from "lucide-react";
8
5
  import { useTranslations } from "next-intl";
9
- import { format } from "date-fns";
6
+ import * as React from "react";
10
7
  import { cn } from "../../../../../../../../utils/utils";
8
+ import { Badge } from "../../../../../../../ui/Badge";
9
+ import { Button } from "../../../../../../../ui/Button";
10
+ import { Separator } from "../../../../../../../ui/Separator";
11
11
  function CollapsibleTopicItem({ topic, onAction }) {
12
12
  const t = useTranslations("TopicsSection");
13
13
  const [isExpanded, setIsExpanded] = React.useState(false);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\nimport { Button } from '../../../../../../../ui/Button'\r\nimport { Badge } from '../../../../../../../ui/Badge'\r\nimport { Separator } from '../../../../../../../ui/Separator'\r\nimport * as LR from 'lucide-react'\r\nimport { useTranslations } from 'next-intl'\r\nimport { format } from 'date-fns'\r\nimport { cn } from '../../../../../../../../utils/utils'\r\nimport * as OBC from '@thatopen/components'\r\n\r\ntype TopicAction = 'view' | 'edit' | 'delete'\r\n\r\ninterface CollapsibleTopicItemProps {\r\n topic: OBC.Topic\r\n onAction: (action: TopicAction, id: string) => void\r\n}\r\n\r\nexport function CollapsibleTopicItem({ topic, onAction }: CollapsibleTopicItemProps) {\r\n const t = useTranslations('TopicsSection')\r\n const [isExpanded, setIsExpanded] = React.useState(false)\r\n\r\n const getPriorityColor = (priority?: string) => {\r\n switch (priority?.toLowerCase()) {\r\n case 'critical':\r\n case 'high':\r\n return 'destructive'\r\n case 'major':\r\n return 'default'\r\n case 'normal':\r\n return 'secondary'\r\n case 'minor':\r\n case 'low':\r\n return 'outline'\r\n default:\r\n return 'secondary'\r\n }\r\n }\r\n\r\n const getStatusColor = (status?: string) => {\r\n switch (status?.toLowerCase()) {\r\n case 'active':\r\n case 'open':\r\n return 'default'\r\n case 'in progress':\r\n return 'secondary'\r\n case 'resolved':\r\n case 'done':\r\n return 'outline'\r\n case 'closed':\r\n return 'destructive'\r\n default:\r\n return 'secondary'\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"border rounded-md overflow-hidden\">\r\n {/* Collapsed Header */}\r\n <div className=\"flex items-center justify-between p-3 hover:bg-accent/50 transition-colors\">\r\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"h-6 w-6 p-0\"\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n >\r\n <LR.ChevronRight \r\n className={cn(\r\n \"h-4 w-4 transition-transform\",\r\n isExpanded && \"rotate-90\"\r\n )} \r\n />\r\n </Button>\r\n \r\n <div className=\"flex-1 min-w-0\">\r\n <h4 className=\"text-sm font-medium text-foreground truncate\">\r\n {topic.title}\r\n </h4>\r\n <div className=\"flex items-center gap-2 mt-1\">\r\n <Badge variant={getStatusColor(topic.status)} className=\"text-xs\">\r\n {topic.status}\r\n </Badge>\r\n <Badge variant={getPriorityColor(topic.priority)} className=\"text-xs\">\r\n {topic.priority || 'Normal'}\r\n </Badge>\r\n <span className=\"text-xs text-muted-foreground\">\r\n {topic.type}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Action Buttons - Always Visible */}\r\n <div className=\"flex items-center gap-1 flex-shrink-0\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => onAction('view', topic.guid)}\r\n title={t('viewTopicTitle')}\r\n >\r\n <LR.Eye className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => onAction('edit', topic.guid)}\r\n title={t('editTopicTitle')}\r\n >\r\n <LR.Pencil className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => onAction('delete', topic.guid)}\r\n title={t('deleteTopicTitle')}\r\n >\r\n <LR.Trash2 className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n\r\n {/* Expanded Content */}\r\n {isExpanded && (\r\n <div className=\"border-t bg-muted/30\">\r\n <div className=\"p-4 space-y-4\">\r\n {/* Description */}\r\n {topic.description && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-2\">\r\n {t('topicDescription')}\r\n </h5>\r\n <p className=\"text-sm text-foreground whitespace-pre-wrap\">\r\n {topic.description}\r\n </p>\r\n </div>\r\n )}\r\n\r\n {/* Topic Details Grid */}\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {/* Basic Info */}\r\n <div className=\"space-y-3\">\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicType')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.type}</p>\r\n </div>\r\n\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicStage')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.stage || t('notSpecified')}</p>\r\n </div>\r\n\r\n {topic.assignedTo && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicAssignedTo')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.assignedTo}</p>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Dates and Status */}\r\n <div className=\"space-y-3\">\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicCreationDate')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">\r\n {topic.creationDate ? format(topic.creationDate, 'PPP') : t('notSpecified')}\r\n </p>\r\n </div>\r\n\r\n {topic.dueDate && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicDueDate')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">\r\n {format(topic.dueDate, 'PPP')}\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicCreationAuthor')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.creationAuthor || t('notSpecified')}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Labels */}\r\n {topic.labels && topic.labels.size > 0 && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-2\">\r\n {t('topicLabels')}\r\n </h5>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {Array.from(topic.labels).map((label) => (\r\n <Badge key={label} variant=\"outline\" className=\"text-xs\">\r\n {label}\r\n </Badge>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Topic GUID (for debugging/reference) */}\r\n <Separator />\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicDescription')}\r\n </h5>\r\n <p className=\"text-xs text-muted-foreground font-mono\">\r\n {topic.description || t('notSpecified')}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { format } from 'date-fns'\r\nimport * as LR from 'lucide-react'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as React from 'react'\r\n\r\nimport { cn } from '../../../../../../../../utils/utils'\r\nimport { Badge } from '../../../../../../../ui/Badge'\r\nimport { Button } from '../../../../../../../ui/Button'\r\nimport { Separator } from '../../../../../../../ui/Separator'\r\n\r\nimport type * as OBC from '@thatopen/components'\r\n\r\ntype TopicAction = 'view' | 'edit' | 'delete'\r\n\r\ninterface CollapsibleTopicItemProps {\r\n topic: OBC.Topic\r\n onAction: (action: TopicAction, id: string) => void\r\n}\r\n\r\nexport function CollapsibleTopicItem({ topic, onAction }: CollapsibleTopicItemProps) {\r\n const t = useTranslations('TopicsSection')\r\n const [isExpanded, setIsExpanded] = React.useState(false)\r\n\r\n const getPriorityColor = (priority?: string) => {\r\n switch (priority?.toLowerCase()) {\r\n case 'critical':\r\n case 'high':\r\n return 'destructive'\r\n case 'major':\r\n return 'default'\r\n case 'normal':\r\n return 'secondary'\r\n case 'minor':\r\n case 'low':\r\n return 'outline'\r\n default:\r\n return 'secondary'\r\n }\r\n }\r\n\r\n const getStatusColor = (status?: string) => {\r\n switch (status?.toLowerCase()) {\r\n case 'active':\r\n case 'open':\r\n return 'default'\r\n case 'in progress':\r\n return 'secondary'\r\n case 'resolved':\r\n case 'done':\r\n return 'outline'\r\n case 'closed':\r\n return 'destructive'\r\n default:\r\n return 'secondary'\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"border rounded-md overflow-hidden\">\r\n {/* Collapsed Header */}\r\n <div className=\"flex items-center justify-between p-3 hover:bg-accent/50 transition-colors\">\r\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n className=\"h-6 w-6 p-0\"\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n >\r\n <LR.ChevronRight\r\n className={cn(\r\n \"h-4 w-4 transition-transform\",\r\n isExpanded && \"rotate-90\"\r\n )}\r\n />\r\n </Button>\r\n\r\n <div className=\"flex-1 min-w-0\">\r\n <h4 className=\"text-sm font-medium text-foreground truncate\">\r\n {topic.title}\r\n </h4>\r\n <div className=\"flex items-center gap-2 mt-1\">\r\n <Badge variant={getStatusColor(topic.status)} className=\"text-xs\">\r\n {topic.status}\r\n </Badge>\r\n <Badge variant={getPriorityColor(topic.priority)} className=\"text-xs\">\r\n {topic.priority || 'Normal'}\r\n </Badge>\r\n <span className=\"text-xs text-muted-foreground\">\r\n {topic.type}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Action Buttons - Always Visible */}\r\n <div className=\"flex items-center gap-1 flex-shrink-0\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => onAction('view', topic.guid)}\r\n title={t('viewTopicTitle')}\r\n >\r\n <LR.Eye className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => onAction('edit', topic.guid)}\r\n title={t('editTopicTitle')}\r\n >\r\n <LR.Pencil className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"h-8 w-8 p-0\"\r\n onClick={() => onAction('delete', topic.guid)}\r\n title={t('deleteTopicTitle')}\r\n >\r\n <LR.Trash2 className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n\r\n {/* Expanded Content */}\r\n {isExpanded && (\r\n <div className=\"border-t bg-muted/30\">\r\n <div className=\"p-4 space-y-4\">\r\n {/* Description */}\r\n {topic.description && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-2\">\r\n {t('topicDescription')}\r\n </h5>\r\n <p className=\"text-sm text-foreground whitespace-pre-wrap\">\r\n {topic.description}\r\n </p>\r\n </div>\r\n )}\r\n\r\n {/* Topic Details Grid */}\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {/* Basic Info */}\r\n <div className=\"space-y-3\">\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicType')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.type}</p>\r\n </div>\r\n\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicStage')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.stage || t('notSpecified')}</p>\r\n </div>\r\n\r\n {topic.assignedTo && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicAssignedTo')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.assignedTo}</p>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Dates and Status */}\r\n <div className=\"space-y-3\">\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicCreationDate')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">\r\n {topic.creationDate ? format(topic.creationDate, 'PPP') : t('notSpecified')}\r\n </p>\r\n </div>\r\n\r\n {topic.dueDate && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicDueDate')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">\r\n {format(topic.dueDate, 'PPP')}\r\n </p>\r\n </div>\r\n )}\r\n\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicCreationAuthor')}\r\n </h5>\r\n <p className=\"text-sm text-foreground\">{topic.creationAuthor || t('notSpecified')}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Labels */}\r\n {topic.labels && topic.labels.size > 0 && (\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-2\">\r\n {t('topicLabels')}\r\n </h5>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {Array.from(topic.labels).map((label) => (\r\n <Badge key={label} variant=\"outline\" className=\"text-xs\">\r\n {label}\r\n </Badge>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Topic GUID (for debugging/reference) */}\r\n <Separator />\r\n <div>\r\n <h5 className=\"text-xs font-medium text-muted-foreground uppercase tracking-wide mb-1\">\r\n {t('topicDescription')}\r\n </h5>\r\n <p className=\"text-xs text-muted-foreground font-mono\">\r\n {topic.description || t('notSpecified')}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n"],"mappings":";AAyEY,cAYA,YAZA;AApEZ,SAAS,cAAc;AACvB,YAAY,QAAQ;AACpB,SAAS,uBAAuB;AAChC,YAAY,WAAW;AAEvB,SAAS,UAAU;AACnB,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAWnB,SAAS,qBAAqB,EAAE,OAAO,SAAS,GAA8B;AACnF,QAAM,IAAI,gBAAgB,eAAe;AACzC,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,KAAK;AAExD,QAAM,mBAAmB,CAAC,aAAsB;AAC9C,YAAQ,qCAAU,eAAe;AAAA,MAC/B,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEA,QAAM,iBAAiB,CAAC,WAAoB;AAC1C,YAAQ,iCAAQ,eAAe;AAAA,MAC7B,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEA,SACE,qBAAC,SAAI,WAAU,qCAEb;AAAA,yBAAC,SAAI,WAAU,8EACb;AAAA,2BAAC,SAAI,WAAU,0CACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS,MAAM,cAAc,CAAC,UAAU;AAAA,YAExC;AAAA,cAAC,GAAG;AAAA,cAAH;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,cAAc;AAAA,gBAChB;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QAEA,qBAAC,SAAI,WAAU,kBACb;AAAA,8BAAC,QAAG,WAAU,gDACX,gBAAM,OACT;AAAA,UACA,qBAAC,SAAI,WAAU,gCACb;AAAA,gCAAC,SAAM,SAAS,eAAe,MAAM,MAAM,GAAG,WAAU,WACrD,gBAAM,QACT;AAAA,YACA,oBAAC,SAAM,SAAS,iBAAiB,MAAM,QAAQ,GAAG,WAAU,WACzD,gBAAM,YAAY,UACrB;AAAA,YACA,oBAAC,UAAK,WAAU,iCACb,gBAAM,MACT;AAAA,aACF;AAAA,WACF;AAAA,SACF;AAAA,MAGA,qBAAC,SAAI,WAAU,yCACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS,MAAM,SAAS,QAAQ,MAAM,IAAI;AAAA,YAC1C,OAAO,EAAE,gBAAgB;AAAA,YAEzB,8BAAC,GAAG,KAAH,EAAO,WAAU,WAAU;AAAA;AAAA,QAC9B;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS,MAAM,SAAS,QAAQ,MAAM,IAAI;AAAA,YAC1C,OAAO,EAAE,gBAAgB;AAAA,YAEzB,8BAAC,GAAG,QAAH,EAAU,WAAU,WAAU;AAAA;AAAA,QACjC;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS,MAAM,SAAS,UAAU,MAAM,IAAI;AAAA,YAC5C,OAAO,EAAE,kBAAkB;AAAA,YAE3B,8BAAC,GAAG,QAAH,EAAU,WAAU,WAAU;AAAA;AAAA,QACjC;AAAA,SACF;AAAA,OACF;AAAA,IAGC,cACC,oBAAC,SAAI,WAAU,wBACb,+BAAC,SAAI,WAAU,iBAEZ;AAAA,YAAM,eACL,qBAAC,SACC;AAAA,4BAAC,QAAG,WAAU,0EACX,YAAE,kBAAkB,GACvB;AAAA,QACA,oBAAC,OAAE,WAAU,+CACV,gBAAM,aACT;AAAA,SACF;AAAA,MAIF,qBAAC,SAAI,WAAU,yCAEb;AAAA,6BAAC,SAAI,WAAU,aACb;AAAA,+BAAC,SACC;AAAA,gCAAC,QAAG,WAAU,0EACX,YAAE,WAAW,GAChB;AAAA,YACA,oBAAC,OAAE,WAAU,2BAA2B,gBAAM,MAAK;AAAA,aACrD;AAAA,UAEA,qBAAC,SACC;AAAA,gCAAC,QAAG,WAAU,0EACX,YAAE,YAAY,GACjB;AAAA,YACA,oBAAC,OAAE,WAAU,2BAA2B,gBAAM,SAAS,EAAE,cAAc,GAAE;AAAA,aAC3E;AAAA,UAEC,MAAM,cACL,qBAAC,SACC;AAAA,gCAAC,QAAG,WAAU,0EACX,YAAE,iBAAiB,GACtB;AAAA,YACA,oBAAC,OAAE,WAAU,2BAA2B,gBAAM,YAAW;AAAA,aAC3D;AAAA,WAEJ;AAAA,QAGA,qBAAC,SAAI,WAAU,aACb;AAAA,+BAAC,SACC;AAAA,gCAAC,QAAG,WAAU,0EACX,YAAE,mBAAmB,GACxB;AAAA,YACA,oBAAC,OAAE,WAAU,2BACV,gBAAM,eAAe,OAAO,MAAM,cAAc,KAAK,IAAI,EAAE,cAAc,GAC5E;AAAA,aACF;AAAA,UAEC,MAAM,WACL,qBAAC,SACC;AAAA,gCAAC,QAAG,WAAU,0EACX,YAAE,cAAc,GACnB;AAAA,YACA,oBAAC,OAAE,WAAU,2BACV,iBAAO,MAAM,SAAS,KAAK,GAC9B;AAAA,aACF;AAAA,UAGF,qBAAC,SACC;AAAA,gCAAC,QAAG,WAAU,0EACX,YAAE,qBAAqB,GAC1B;AAAA,YACA,oBAAC,OAAE,WAAU,2BAA2B,gBAAM,kBAAkB,EAAE,cAAc,GAAE;AAAA,aACpF;AAAA,WACF;AAAA,SACF;AAAA,MAGC,MAAM,UAAU,MAAM,OAAO,OAAO,KACnC,qBAAC,SACC;AAAA,4BAAC,QAAG,WAAU,0EACX,YAAE,aAAa,GAClB;AAAA,QACA,oBAAC,SAAI,WAAU,wBACZ,gBAAM,KAAK,MAAM,MAAM,EAAE,IAAI,CAAC,UAC7B,oBAAC,SAAkB,SAAQ,WAAU,WAAU,WAC5C,mBADS,KAEZ,CACD,GACH;AAAA,SACF;AAAA,MAIF,oBAAC,aAAU;AAAA,MACX,qBAAC,SACC;AAAA,4BAAC,QAAG,WAAU,0EACX,YAAE,kBAAkB,GACvB;AAAA,QACA,oBAAC,OAAE,WAAU,2CACV,gBAAM,eAAe,EAAE,cAAc,GACxC;AAAA,SACF;AAAA,OACF,GACF;AAAA,KAEJ;AAEJ;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import * as OBC from '@thatopen/components';
2
+ import type * as OBC from '@thatopen/components';
3
3
  export interface BCFTopicFormData {
4
4
  title: string;
5
5
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"CreateTopicDialog.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAgB3C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC1C,aAAa,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CACtD;AA6DD,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,sBAAsB,qBAsZxG"}
1
+ {"version":3,"file":"CreateTopicDialog.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,OAAO,KAAK,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC1C,aAAa,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CACtD;AA6DD,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,sBAAsB,qBAsZxG"}
@@ -19,20 +19,20 @@ var __spreadValues = (a, b) => {
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
21
  import { jsx, jsxs } from "react/jsx-runtime";
22
+ import { format } from "date-fns";
23
+ import * as LR from "lucide-react";
24
+ import { useTranslations } from "next-intl";
22
25
  import * as React from "react";
23
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "../../../../../../../ui/Dialog";
26
+ import { cn } from "../../../../../../../../utils/utils";
27
+ import { Badge } from "../../../../../../../ui/Badge";
24
28
  import { Button } from "../../../../../../../ui/Button";
29
+ import { Calendar } from "../../../../../../../ui/Calendar";
30
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "../../../../../../../ui/Dialog";
25
31
  import { Input } from "../../../../../../../ui/Input";
26
32
  import { Label } from "../../../../../../../ui/Label";
27
- import { Textarea } from "../../../../../../../ui/Textarea";
28
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../../../../../../../ui/Select";
29
- import { Calendar } from "../../../../../../../ui/Calendar";
30
33
  import { Popover, PopoverContent, PopoverTrigger } from "../../../../../../../ui/Popover";
31
- import { Badge } from "../../../../../../../ui/Badge";
32
- import * as LR from "lucide-react";
33
- import { useTranslations } from "next-intl";
34
- import { format } from "date-fns";
35
- import { cn } from "../../../../../../../../utils/utils";
34
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../../../../../../../ui/Select";
35
+ import { Textarea } from "../../../../../../../ui/Textarea";
36
36
  const TOPIC_TYPES = [
37
37
  "Clash",
38
38
  "Issue",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\nimport * as OBC from '@thatopen/components'\r\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from '../../../../../../../ui/Dialog'\r\nimport { Button } from '../../../../../../../ui/Button'\r\nimport { Input } from '../../../../../../../ui/Input'\r\nimport { Label } from '../../../../../../../ui/Label'\r\nimport { Textarea } from '../../../../../../../ui/Textarea'\r\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../../../../../../ui/Select'\r\nimport { Calendar } from '../../../../../../../ui/Calendar'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../../../../../../../ui/Popover'\r\nimport { Checkbox } from '../../../../../../../ui/Checkbox'\r\nimport { Badge } from '../../../../../../../ui/Badge'\r\nimport * as LR from 'lucide-react'\r\nimport { useTranslations } from 'next-intl'\r\nimport { format } from 'date-fns'\r\nimport { cn } from '../../../../../../../../utils/utils'\r\n\r\nexport interface BCFTopicFormData {\r\n title: string\r\n description: string\r\n topicType: string\r\n topicStatus: string\r\n priority: string\r\n stage: string\r\n assignedTo: string\r\n dueDate: Date | null\r\n labels: string[]\r\n referenceLinks: string[]\r\n}\r\n\r\ninterface CreateTopicDialogProps {\r\n open: boolean\r\n onOpenChange: (open: boolean) => void\r\n onSubmit: (data: BCFTopicFormData) => void\r\n existingTopic?: OBC.Topic | Partial<OBC.Topic> | null // Optional topic for edit mode\r\n}\r\n\r\n// Predefined options based on BCF standards and common usage\r\nconst TOPIC_TYPES = [\r\n 'Clash',\r\n 'Issue',\r\n 'Request',\r\n 'Information',\r\n 'Coordination',\r\n 'Design',\r\n 'Error',\r\n 'Remark',\r\n 'Question',\r\n 'Warning'\r\n]\r\n\r\nconst TOPIC_STATUSES = [\r\n 'Active',\r\n 'Open',\r\n 'In Progress',\r\n 'Resolved',\r\n 'Closed',\r\n 'Done',\r\n 'In Review',\r\n 'Rejected'\r\n]\r\n\r\nconst PRIORITIES = [\r\n 'Low',\r\n 'Normal',\r\n 'High',\r\n 'Critical',\r\n 'Major',\r\n 'Minor'\r\n]\r\n\r\nconst STAGES = [\r\n 'Design',\r\n 'Construction',\r\n 'Operations',\r\n 'Planning',\r\n 'Tender',\r\n 'Preconstruction',\r\n 'Handover'\r\n]\r\n\r\nconst COMMON_LABELS = [\r\n 'Architecture',\r\n 'Structure',\r\n 'MEP',\r\n 'Electrical',\r\n 'Plumbing',\r\n 'HVAC',\r\n 'Cost Estimation',\r\n 'Safety',\r\n 'Quality',\r\n 'Schedule',\r\n 'Coordination',\r\n 'RFI'\r\n]\r\n\r\nexport function CreateTopicDialog({ open, onOpenChange, onSubmit, existingTopic }: CreateTopicDialogProps) {\r\n const t = useTranslations('TopicsSection')\r\n \r\n const [formData, setFormData] = React.useState<BCFTopicFormData>({\r\n title: '',\r\n description: '',\r\n topicType: 'Issue',\r\n topicStatus: 'Active',\r\n priority: 'Normal',\r\n stage: 'Design',\r\n assignedTo: '',\r\n dueDate: null,\r\n labels: [],\r\n referenceLinks: []\r\n })\r\n\r\n const [newLabel, setNewLabel] = React.useState('')\r\n const [newReferenceLink, setNewReferenceLink] = React.useState('')\r\n const [dueDateOpen, setDueDateOpen] = React.useState(false)\r\n\r\n // Pre-populate form data when editing\r\n React.useEffect(() => {\r\n if (existingTopic) {\r\n const topic = existingTopic\r\n \r\n // Handle date conversion more robustly\r\n let parsedDueDate: Date | null = null\r\n if (topic.dueDate) {\r\n try {\r\n if (topic.dueDate instanceof Date) {\r\n parsedDueDate = topic.dueDate\r\n } else if (typeof topic.dueDate === 'string') {\r\n parsedDueDate = new Date(topic.dueDate)\r\n } else {\r\n parsedDueDate = new Date(topic.dueDate as any)\r\n }\r\n // Check if date is valid\r\n if (isNaN(parsedDueDate.getTime())) {\r\n parsedDueDate = null\r\n }\r\n } catch (error) {\r\n parsedDueDate = null\r\n }\r\n }\r\n\r\n setFormData({\r\n title: String(topic.title || ''),\r\n description: String(topic.description || ''),\r\n topicType: String(topic.type || 'Issue'),\r\n topicStatus: String(topic.status || 'Active'),\r\n priority: String(topic.priority || 'Normal'),\r\n stage: String(topic.stage || 'Design'),\r\n assignedTo: String(topic.assignedTo || ''),\r\n dueDate: parsedDueDate,\r\n labels: topic.labels ? (Array.isArray(topic.labels) ? topic.labels : Array.from(topic.labels)) : [],\r\n referenceLinks: []\r\n })\r\n } else {\r\n // Reset form for create mode\r\n setFormData({\r\n title: '',\r\n description: '',\r\n topicType: 'Issue',\r\n topicStatus: 'Active',\r\n priority: 'Normal',\r\n stage: 'Design',\r\n assignedTo: '',\r\n dueDate: null,\r\n labels: [],\r\n referenceLinks: []\r\n })\r\n }\r\n }, [existingTopic, open])\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault()\r\n \r\n // Validate required fields - ensure title is a string before calling trim\r\n const title = String(formData.title || '')\r\n if (!title.trim()) {\r\n return\r\n }\r\n\r\n onSubmit(formData)\r\n \r\n // Reset form\r\n setFormData({\r\n title: '',\r\n description: '',\r\n topicType: 'Issue',\r\n topicStatus: 'Active',\r\n priority: 'Normal',\r\n stage: 'Design',\r\n assignedTo: '',\r\n dueDate: null,\r\n labels: [],\r\n referenceLinks: []\r\n })\r\n setNewLabel('')\r\n setNewReferenceLink('')\r\n onOpenChange(false)\r\n }\r\n\r\n const handleInputChange = (field: keyof BCFTopicFormData, value: any) => {\r\n setFormData(prev => ({\r\n ...prev,\r\n [field]: value\r\n }))\r\n }\r\n\r\n const addLabel = (label: string) => {\r\n if (label && !formData.labels.includes(label)) {\r\n handleInputChange('labels', [...formData.labels, label])\r\n }\r\n }\r\n\r\n const removeLabel = (labelToRemove: string) => {\r\n handleInputChange('labels', formData.labels.filter(label => label !== labelToRemove))\r\n }\r\n\r\n const addReferenceLink = () => {\r\n if (newReferenceLink && !formData.referenceLinks.includes(newReferenceLink)) {\r\n handleInputChange('referenceLinks', [...formData.referenceLinks, newReferenceLink])\r\n setNewReferenceLink('')\r\n }\r\n }\r\n\r\n const removeReferenceLink = (linkToRemove: string) => {\r\n handleInputChange('referenceLinks', formData.referenceLinks.filter(link => link !== linkToRemove))\r\n }\r\n\r\n return (\r\n <Dialog open={open} onOpenChange={onOpenChange}>\r\n <DialogContent className=\"max-w-2xl max-h-[90vh] overflow-y-auto\">\r\n <DialogHeader>\r\n <DialogTitle>\r\n {existingTopic ? t('editTopicTitle') : t('createTopicTitle')}\r\n </DialogTitle>\r\n </DialogHeader>\r\n \r\n <form onSubmit={handleSubmit} className=\"space-y-6\">\r\n {/* Required Fields */}\r\n <div className=\"space-y-4\">\r\n <h3 className=\"text-sm font-medium text-foreground\">{t('requiredFields')}</h3>\r\n \r\n {/* Title - Required */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"title\">{t('topicTitle')} *</Label>\r\n <Input\r\n id=\"title\"\r\n value={formData.title}\r\n onChange={(e) => handleInputChange('title', e.target.value)}\r\n placeholder={t('topicTitlePlaceholder')}\r\n required\r\n />\r\n </div>\r\n\r\n {/* Type - Required */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"type\">{t('topicType')} *</Label>\r\n <Select value={formData.topicType} onValueChange={(value) => handleInputChange('topicType', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {TOPIC_TYPES.map(type => (\r\n <SelectItem key={type} value={type}>{type}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n\r\n {/* Status - Required */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"status\">{t('topicStatus')} *</Label>\r\n <Select value={formData.topicStatus} onValueChange={(value) => handleInputChange('topicStatus', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {TOPIC_STATUSES.map(status => (\r\n <SelectItem key={status} value={status}>{status}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n </div>\r\n\r\n {/* Optional Fields */}\r\n <div className=\"space-y-4\">\r\n <h3 className=\"text-sm font-medium text-foreground\">{t('optionalFields')}</h3>\r\n \r\n {/* Description */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"description\">{t('topicDescription')}</Label>\r\n <Textarea\r\n id=\"description\"\r\n value={formData.description}\r\n onChange={(e) => handleInputChange('description', e.target.value)}\r\n placeholder={t('topicDescriptionPlaceholder')}\r\n rows={3}\r\n />\r\n </div>\r\n\r\n {/* Priority */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"priority\">{t('topicPriority')}</Label>\r\n <Select value={formData.priority} onValueChange={(value) => handleInputChange('priority', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {PRIORITIES.map(priority => (\r\n <SelectItem key={priority} value={priority}>{priority}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n\r\n {/* Stage */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"stage\">{t('topicStage')}</Label>\r\n <Select value={formData.stage} onValueChange={(value) => handleInputChange('stage', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {STAGES.map(stage => (\r\n <SelectItem key={stage} value={stage}>{stage}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n\r\n {/* Assigned To */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"assignedTo\">{t('topicAssignedTo')}</Label>\r\n <Input\r\n id=\"assignedTo\"\r\n type=\"email\"\r\n value={formData.assignedTo}\r\n onChange={(e) => handleInputChange('assignedTo', e.target.value)}\r\n placeholder={t('topicAssignedToPlaceholder')}\r\n />\r\n </div>\r\n\r\n {/* Due Date */}\r\n <div className=\"space-y-2\">\r\n <Label>{t('topicDueDate')}</Label>\r\n <Popover open={dueDateOpen} onOpenChange={setDueDateOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n className={cn(\r\n \"w-full justify-start text-left font-normal\",\r\n !formData.dueDate && \"text-muted-foreground\"\r\n )}\r\n >\r\n <LR.Calendar className=\"mr-2 h-4 w-4\" />\r\n {formData.dueDate ? format(formData.dueDate, 'PPP') : t('topicDueDatePlaceholder')}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n <Calendar\r\n mode=\"single\"\r\n selected={formData.dueDate || undefined}\r\n onSelect={(date) => {\r\n handleInputChange('dueDate', date || null)\r\n setDueDateOpen(false)\r\n }}\r\n initialFocus\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n </div>\r\n\r\n {/* Labels */}\r\n <div className=\"space-y-2\">\r\n <Label>{t('topicLabels')}</Label>\r\n <div className=\"space-y-2\">\r\n {/* Current labels */}\r\n {formData.labels.length > 0 && (\r\n <div className=\"flex flex-wrap gap-2\">\r\n {formData.labels.map((label) => (\r\n <Badge key={label} variant=\"secondary\" className=\"flex items-center gap-1\">\r\n {label}\r\n <button\r\n type=\"button\"\r\n onClick={() => removeLabel(label)}\r\n className=\"ml-1 hover:text-destructive\"\r\n >\r\n <LR.X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n ))}\r\n </div>\r\n )}\r\n \r\n {/* Quick add common labels */}\r\n <div className=\"flex flex-wrap gap-2\">\r\n {COMMON_LABELS\r\n .filter(label => !formData.labels.includes(label))\r\n .slice(0, 6)\r\n .map((label) => (\r\n <Button\r\n key={label}\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => addLabel(label)}\r\n >\r\n <LR.Plus className=\"h-3 w-3 mr-1\" />\r\n {label}\r\n </Button>\r\n ))}\r\n </div>\r\n\r\n {/* Custom label input */}\r\n <div className=\"flex gap-2\">\r\n <Input\r\n value={newLabel}\r\n onChange={(e) => setNewLabel(e.target.value)}\r\n placeholder={t('topicLabelsPlaceholder')}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault()\r\n addLabel(newLabel)\r\n setNewLabel('')\r\n }\r\n }}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={() => {\r\n addLabel(newLabel)\r\n setNewLabel('')\r\n }}\r\n >\r\n <LR.Plus className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Reference Links */}\r\n <div className=\"space-y-2\">\r\n <Label>{t('topicReferenceLinks')}</Label>\r\n <div className=\"space-y-2\">\r\n {/* Current links */}\r\n {formData.referenceLinks.length > 0 && (\r\n <div className=\"space-y-2\">\r\n {formData.referenceLinks.map((link, index) => (\r\n <div key={index} className=\"flex items-center gap-2 p-2 border rounded\">\r\n <LR.Link className=\"h-4 w-4 text-muted-foreground\" />\r\n <span className=\"flex-1 text-sm truncate\">{link}</span>\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => removeReferenceLink(link)}\r\n >\r\n <LR.X className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Add new link */}\r\n <div className=\"flex gap-2\">\r\n <Input\r\n value={newReferenceLink}\r\n onChange={(e) => setNewReferenceLink(e.target.value)}\r\n placeholder={t('topicReferenceLinksPlaceholder')}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault()\r\n addReferenceLink()\r\n }\r\n }}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={addReferenceLink}\r\n >\r\n <LR.Plus className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <DialogFooter>\r\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)}>\r\n {t('cancel')}\r\n </Button>\r\n <Button type=\"submit\" disabled={!String(formData.title || '').trim()}>\r\n {existingTopic ? t('updateTopic') : t('createTopic')}\r\n </Button>\r\n </DialogFooter>\r\n </form>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { format } from 'date-fns'\r\nimport * as LR from 'lucide-react'\r\nimport { useTranslations } from 'next-intl'\r\nimport * as React from 'react'\r\n\r\nimport { cn } from '../../../../../../../../utils/utils'\r\nimport { Badge } from '../../../../../../../ui/Badge'\r\nimport { Button } from '../../../../../../../ui/Button'\r\nimport { Calendar } from '../../../../../../../ui/Calendar'\r\nimport { Checkbox } from '../../../../../../../ui/Checkbox'\r\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from '../../../../../../../ui/Dialog'\r\nimport { Input } from '../../../../../../../ui/Input'\r\nimport { Label } from '../../../../../../../ui/Label'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '../../../../../../../ui/Popover'\r\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../../../../../../ui/Select'\r\nimport { Textarea } from '../../../../../../../ui/Textarea'\r\n\r\nimport type * as OBC from '@thatopen/components'\r\n\r\nexport interface BCFTopicFormData {\r\n title: string\r\n description: string\r\n topicType: string\r\n topicStatus: string\r\n priority: string\r\n stage: string\r\n assignedTo: string\r\n dueDate: Date | null\r\n labels: string[]\r\n referenceLinks: string[]\r\n}\r\n\r\ninterface CreateTopicDialogProps {\r\n open: boolean\r\n onOpenChange: (open: boolean) => void\r\n onSubmit: (data: BCFTopicFormData) => void\r\n existingTopic?: OBC.Topic | Partial<OBC.Topic> | null // Optional topic for edit mode\r\n}\r\n\r\n// Predefined options based on BCF standards and common usage\r\nconst TOPIC_TYPES = [\r\n 'Clash',\r\n 'Issue',\r\n 'Request',\r\n 'Information',\r\n 'Coordination',\r\n 'Design',\r\n 'Error',\r\n 'Remark',\r\n 'Question',\r\n 'Warning'\r\n]\r\n\r\nconst TOPIC_STATUSES = [\r\n 'Active',\r\n 'Open',\r\n 'In Progress',\r\n 'Resolved',\r\n 'Closed',\r\n 'Done',\r\n 'In Review',\r\n 'Rejected'\r\n]\r\n\r\nconst PRIORITIES = [\r\n 'Low',\r\n 'Normal',\r\n 'High',\r\n 'Critical',\r\n 'Major',\r\n 'Minor'\r\n]\r\n\r\nconst STAGES = [\r\n 'Design',\r\n 'Construction',\r\n 'Operations',\r\n 'Planning',\r\n 'Tender',\r\n 'Preconstruction',\r\n 'Handover'\r\n]\r\n\r\nconst COMMON_LABELS = [\r\n 'Architecture',\r\n 'Structure',\r\n 'MEP',\r\n 'Electrical',\r\n 'Plumbing',\r\n 'HVAC',\r\n 'Cost Estimation',\r\n 'Safety',\r\n 'Quality',\r\n 'Schedule',\r\n 'Coordination',\r\n 'RFI'\r\n]\r\n\r\nexport function CreateTopicDialog({ open, onOpenChange, onSubmit, existingTopic }: CreateTopicDialogProps) {\r\n const t = useTranslations('TopicsSection')\r\n\r\n const [formData, setFormData] = React.useState<BCFTopicFormData>({\r\n title: '',\r\n description: '',\r\n topicType: 'Issue',\r\n topicStatus: 'Active',\r\n priority: 'Normal',\r\n stage: 'Design',\r\n assignedTo: '',\r\n dueDate: null,\r\n labels: [],\r\n referenceLinks: []\r\n })\r\n\r\n const [newLabel, setNewLabel] = React.useState('')\r\n const [newReferenceLink, setNewReferenceLink] = React.useState('')\r\n const [dueDateOpen, setDueDateOpen] = React.useState(false)\r\n\r\n // Pre-populate form data when editing\r\n React.useEffect(() => {\r\n if (existingTopic) {\r\n const topic = existingTopic\r\n\r\n // Handle date conversion more robustly\r\n let parsedDueDate: Date | null = null\r\n if (topic.dueDate) {\r\n try {\r\n if (topic.dueDate instanceof Date) {\r\n parsedDueDate = topic.dueDate\r\n } else if (typeof topic.dueDate === 'string') {\r\n parsedDueDate = new Date(topic.dueDate)\r\n } else {\r\n parsedDueDate = new Date(topic.dueDate as any)\r\n }\r\n // Check if date is valid\r\n if (isNaN(parsedDueDate.getTime())) {\r\n parsedDueDate = null\r\n }\r\n } catch (error) {\r\n parsedDueDate = null\r\n }\r\n }\r\n\r\n setFormData({\r\n title: String(topic.title || ''),\r\n description: String(topic.description || ''),\r\n topicType: String(topic.type || 'Issue'),\r\n topicStatus: String(topic.status || 'Active'),\r\n priority: String(topic.priority || 'Normal'),\r\n stage: String(topic.stage || 'Design'),\r\n assignedTo: String(topic.assignedTo || ''),\r\n dueDate: parsedDueDate,\r\n labels: topic.labels ? (Array.isArray(topic.labels) ? topic.labels : Array.from(topic.labels)) : [],\r\n referenceLinks: []\r\n })\r\n } else {\r\n // Reset form for create mode\r\n setFormData({\r\n title: '',\r\n description: '',\r\n topicType: 'Issue',\r\n topicStatus: 'Active',\r\n priority: 'Normal',\r\n stage: 'Design',\r\n assignedTo: '',\r\n dueDate: null,\r\n labels: [],\r\n referenceLinks: []\r\n })\r\n }\r\n }, [existingTopic, open])\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault()\r\n\r\n // Validate required fields - ensure title is a string before calling trim\r\n const title = String(formData.title || '')\r\n if (!title.trim()) {\r\n return\r\n }\r\n\r\n onSubmit(formData)\r\n\r\n // Reset form\r\n setFormData({\r\n title: '',\r\n description: '',\r\n topicType: 'Issue',\r\n topicStatus: 'Active',\r\n priority: 'Normal',\r\n stage: 'Design',\r\n assignedTo: '',\r\n dueDate: null,\r\n labels: [],\r\n referenceLinks: []\r\n })\r\n setNewLabel('')\r\n setNewReferenceLink('')\r\n onOpenChange(false)\r\n }\r\n\r\n const handleInputChange = (field: keyof BCFTopicFormData, value: any) => {\r\n setFormData(prev => ({\r\n ...prev,\r\n [field]: value\r\n }))\r\n }\r\n\r\n const addLabel = (label: string) => {\r\n if (label && !formData.labels.includes(label)) {\r\n handleInputChange('labels', [...formData.labels, label])\r\n }\r\n }\r\n\r\n const removeLabel = (labelToRemove: string) => {\r\n handleInputChange('labels', formData.labels.filter(label => label !== labelToRemove))\r\n }\r\n\r\n const addReferenceLink = () => {\r\n if (newReferenceLink && !formData.referenceLinks.includes(newReferenceLink)) {\r\n handleInputChange('referenceLinks', [...formData.referenceLinks, newReferenceLink])\r\n setNewReferenceLink('')\r\n }\r\n }\r\n\r\n const removeReferenceLink = (linkToRemove: string) => {\r\n handleInputChange('referenceLinks', formData.referenceLinks.filter(link => link !== linkToRemove))\r\n }\r\n\r\n return (\r\n <Dialog open={open} onOpenChange={onOpenChange}>\r\n <DialogContent className=\"max-w-2xl max-h-[90vh] overflow-y-auto\">\r\n <DialogHeader>\r\n <DialogTitle>\r\n {existingTopic ? t('editTopicTitle') : t('createTopicTitle')}\r\n </DialogTitle>\r\n </DialogHeader>\r\n\r\n <form onSubmit={handleSubmit} className=\"space-y-6\">\r\n {/* Required Fields */}\r\n <div className=\"space-y-4\">\r\n <h3 className=\"text-sm font-medium text-foreground\">{t('requiredFields')}</h3>\r\n\r\n {/* Title - Required */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"title\">{t('topicTitle')} *</Label>\r\n <Input\r\n id=\"title\"\r\n value={formData.title}\r\n onChange={(e) => handleInputChange('title', e.target.value)}\r\n placeholder={t('topicTitlePlaceholder')}\r\n required\r\n />\r\n </div>\r\n\r\n {/* Type - Required */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"type\">{t('topicType')} *</Label>\r\n <Select value={formData.topicType} onValueChange={(value) => handleInputChange('topicType', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {TOPIC_TYPES.map(type => (\r\n <SelectItem key={type} value={type}>{type}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n\r\n {/* Status - Required */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"status\">{t('topicStatus')} *</Label>\r\n <Select value={formData.topicStatus} onValueChange={(value) => handleInputChange('topicStatus', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {TOPIC_STATUSES.map(status => (\r\n <SelectItem key={status} value={status}>{status}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n </div>\r\n\r\n {/* Optional Fields */}\r\n <div className=\"space-y-4\">\r\n <h3 className=\"text-sm font-medium text-foreground\">{t('optionalFields')}</h3>\r\n\r\n {/* Description */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"description\">{t('topicDescription')}</Label>\r\n <Textarea\r\n id=\"description\"\r\n value={formData.description}\r\n onChange={(e) => handleInputChange('description', e.target.value)}\r\n placeholder={t('topicDescriptionPlaceholder')}\r\n rows={3}\r\n />\r\n </div>\r\n\r\n {/* Priority */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"priority\">{t('topicPriority')}</Label>\r\n <Select value={formData.priority} onValueChange={(value) => handleInputChange('priority', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {PRIORITIES.map(priority => (\r\n <SelectItem key={priority} value={priority}>{priority}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n\r\n {/* Stage */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"stage\">{t('topicStage')}</Label>\r\n <Select value={formData.stage} onValueChange={(value) => handleInputChange('stage', value)}>\r\n <SelectTrigger>\r\n <SelectValue />\r\n </SelectTrigger>\r\n <SelectContent>\r\n {STAGES.map(stage => (\r\n <SelectItem key={stage} value={stage}>{stage}</SelectItem>\r\n ))}\r\n </SelectContent>\r\n </Select>\r\n </div>\r\n\r\n {/* Assigned To */}\r\n <div className=\"space-y-2\">\r\n <Label htmlFor=\"assignedTo\">{t('topicAssignedTo')}</Label>\r\n <Input\r\n id=\"assignedTo\"\r\n type=\"email\"\r\n value={formData.assignedTo}\r\n onChange={(e) => handleInputChange('assignedTo', e.target.value)}\r\n placeholder={t('topicAssignedToPlaceholder')}\r\n />\r\n </div>\r\n\r\n {/* Due Date */}\r\n <div className=\"space-y-2\">\r\n <Label>{t('topicDueDate')}</Label>\r\n <Popover open={dueDateOpen} onOpenChange={setDueDateOpen}>\r\n <PopoverTrigger asChild>\r\n <Button\r\n variant=\"outline\"\r\n className={cn(\r\n \"w-full justify-start text-left font-normal\",\r\n !formData.dueDate && \"text-muted-foreground\"\r\n )}\r\n >\r\n <LR.Calendar className=\"mr-2 h-4 w-4\" />\r\n {formData.dueDate ? format(formData.dueDate, 'PPP') : t('topicDueDatePlaceholder')}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n <Calendar\r\n mode=\"single\"\r\n selected={formData.dueDate || undefined}\r\n onSelect={(date) => {\r\n handleInputChange('dueDate', date || null)\r\n setDueDateOpen(false)\r\n }}\r\n initialFocus\r\n />\r\n </PopoverContent>\r\n </Popover>\r\n </div>\r\n\r\n {/* Labels */}\r\n <div className=\"space-y-2\">\r\n <Label>{t('topicLabels')}</Label>\r\n <div className=\"space-y-2\">\r\n {/* Current labels */}\r\n {formData.labels.length > 0 && (\r\n <div className=\"flex flex-wrap gap-2\">\r\n {formData.labels.map((label) => (\r\n <Badge key={label} variant=\"secondary\" className=\"flex items-center gap-1\">\r\n {label}\r\n <button\r\n type=\"button\"\r\n onClick={() => removeLabel(label)}\r\n className=\"ml-1 hover:text-destructive\"\r\n >\r\n <LR.X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Quick add common labels */}\r\n <div className=\"flex flex-wrap gap-2\">\r\n {COMMON_LABELS\r\n .filter(label => !formData.labels.includes(label))\r\n .slice(0, 6)\r\n .map((label) => (\r\n <Button\r\n key={label}\r\n type=\"button\"\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => addLabel(label)}\r\n >\r\n <LR.Plus className=\"h-3 w-3 mr-1\" />\r\n {label}\r\n </Button>\r\n ))}\r\n </div>\r\n\r\n {/* Custom label input */}\r\n <div className=\"flex gap-2\">\r\n <Input\r\n value={newLabel}\r\n onChange={(e) => setNewLabel(e.target.value)}\r\n placeholder={t('topicLabelsPlaceholder')}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault()\r\n addLabel(newLabel)\r\n setNewLabel('')\r\n }\r\n }}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={() => {\r\n addLabel(newLabel)\r\n setNewLabel('')\r\n }}\r\n >\r\n <LR.Plus className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Reference Links */}\r\n <div className=\"space-y-2\">\r\n <Label>{t('topicReferenceLinks')}</Label>\r\n <div className=\"space-y-2\">\r\n {/* Current links */}\r\n {formData.referenceLinks.length > 0 && (\r\n <div className=\"space-y-2\">\r\n {formData.referenceLinks.map((link, index) => (\r\n <div key={index} className=\"flex items-center gap-2 p-2 border rounded\">\r\n <LR.Link className=\"h-4 w-4 text-muted-foreground\" />\r\n <span className=\"flex-1 text-sm truncate\">{link}</span>\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => removeReferenceLink(link)}\r\n >\r\n <LR.X className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Add new link */}\r\n <div className=\"flex gap-2\">\r\n <Input\r\n value={newReferenceLink}\r\n onChange={(e) => setNewReferenceLink(e.target.value)}\r\n placeholder={t('topicReferenceLinksPlaceholder')}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault()\r\n addReferenceLink()\r\n }\r\n }}\r\n />\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n onClick={addReferenceLink}\r\n >\r\n <LR.Plus className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <DialogFooter>\r\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)}>\r\n {t('cancel')}\r\n </Button>\r\n <Button type=\"submit\" disabled={!String(formData.title || '').trim()}>\r\n {existingTopic ? t('updateTopic') : t('createTopic')}\r\n </Button>\r\n </DialogFooter>\r\n </form>\r\n </DialogContent>\r\n </Dialog>\r\n )\r\n}\r\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"TopicsSection.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAe9B,wBAAgB,aAAa,sBA0O5B"}
1
+ {"version":3,"file":"TopicsSection.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAgB9B,wBAAgB,aAAa,sBAsO5B"}
@@ -19,17 +19,17 @@ var __spreadValues = (a, b) => {
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
21
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
22
- import * as React from "react";
23
- import { Button } from "../../../../../../../ui/Button";
24
22
  import * as LR from "lucide-react";
23
+ import { useSession } from "next-auth/react";
24
+ import { useTranslations } from "next-intl";
25
+ import * as React from "react";
25
26
  import { BimContext, BuildingsContext, usePermissions } from "../../../../../../../../store";
27
+ import { Button } from "../../../../../../../ui/Button";
26
28
  import { CollapsibleSection } from "../../../../../../../ui/CollapsibleSection";
27
- import { useTranslations } from "next-intl";
28
- import { useSession } from "next-auth/react";
29
+ import { BcfIcon } from "../../../../../../../ui/Icons";
29
30
  import { BCFTopicsManager } from "../../../../BCFTopicsManager";
30
- import { CreateTopicDialog } from "./CreateTopicDialog";
31
31
  import { CollapsibleTopicItem } from "./CollapsibleTopicItem";
32
- import { BcfIcon } from "../../../../../../../ui/Icons";
32
+ import { CreateTopicDialog } from "./CreateTopicDialog";
33
33
  function TopicsSection() {
34
34
  const t = useTranslations("TopicsSection");
35
35
  const { ability } = usePermissions();
@@ -90,15 +90,12 @@ function TopicsSection() {
90
90
  creationAuthor: (user == null ? void 0 : user.email) || "anonymous@example.com"
91
91
  }));
92
92
  const topicToAdd = createdTopic || newTopic;
93
- console.log("New topic to add:", topicToAdd);
94
93
  const existingTopic = bcfTopics.find((existingTopic2) => existingTopic2.guid === topicToAdd.guid);
95
94
  if (!existingTopic) {
96
95
  bimDispatch({
97
96
  type: "ADD_BCF_TOPIC",
98
97
  payload: { bcfTopic: topicToAdd }
99
98
  });
100
- } else {
101
- console.log(`BCF topic with ID ${topicToAdd.guid} already exists, skipping...`);
102
99
  }
103
100
  }, [bcfTopicsManager, bimDispatch, user == null ? void 0 : user.email, bcfTopics]);
104
101
  const handleEditTopic = React.useCallback((formData) => {