@collabdt/core 0.2.1 → 0.3.1

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 (1286) 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 -3
  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 +1 -1
  124. package/dist/core/components/ui/Comments/CollapsibleCommentItem.d.ts.map +1 -1
  125. package/dist/core/components/ui/Comments/CollapsibleCommentItem.js +9 -9
  126. package/dist/core/components/ui/Comments/CollapsibleCommentItem.js.map +1 -1
  127. package/dist/core/components/ui/Comments/Comment.d.ts.map +1 -1
  128. package/dist/core/components/ui/Comments/Comment.js +4 -4
  129. package/dist/core/components/ui/Comments/Comment.js.map +1 -1
  130. package/dist/core/components/ui/Comments/CommentInput.d.ts.map +1 -1
  131. package/dist/core/components/ui/Comments/CommentInput.js +6 -6
  132. package/dist/core/components/ui/Comments/CommentInput.js.map +1 -1
  133. package/dist/core/components/ui/Comments/CommentsSection.d.ts.map +1 -1
  134. package/dist/core/components/ui/Comments/CommentsSection.js +4 -4
  135. package/dist/core/components/ui/Comments/CommentsSection.js.map +1 -1
  136. package/dist/core/components/ui/Comments/commentUtils.d.ts +1 -1
  137. package/dist/core/components/ui/Comments/commentUtils.d.ts.map +1 -1
  138. package/dist/core/components/ui/Comments/commentUtils.js.map +1 -1
  139. package/dist/core/components/ui/Countdown.d.ts.map +1 -1
  140. package/dist/core/components/ui/Countdown.js +1 -1
  141. package/dist/core/components/ui/Countdown.js.map +1 -1
  142. package/dist/core/components/ui/DataTable.d.ts +1 -1
  143. package/dist/core/components/ui/DataTable.d.ts.map +1 -1
  144. package/dist/core/components/ui/DataTable.js +17 -17
  145. package/dist/core/components/ui/DataTable.js.map +1 -1
  146. package/dist/core/components/ui/DatePicker.d.ts.map +1 -1
  147. package/dist/core/components/ui/DatePicker.js +2 -2
  148. package/dist/core/components/ui/DatePicker.js.map +1 -1
  149. package/dist/core/components/ui/DescriptionList.d.ts.map +1 -1
  150. package/dist/core/components/ui/DescriptionList.js +2 -2
  151. package/dist/core/components/ui/DescriptionList.js.map +1 -1
  152. package/dist/core/components/ui/Dialog.d.ts +1 -1
  153. package/dist/core/components/ui/Dialog.d.ts.map +1 -1
  154. package/dist/core/components/ui/Dialog.js +1 -1
  155. package/dist/core/components/ui/Dialog.js.map +1 -1
  156. package/dist/core/components/ui/DropdownMenu.d.ts +1 -1
  157. package/dist/core/components/ui/DropdownMenu.d.ts.map +1 -1
  158. package/dist/core/components/ui/DropdownMenu.js +1 -1
  159. package/dist/core/components/ui/DropdownMenu.js.map +1 -1
  160. package/dist/core/components/ui/ExportData.d.ts +2 -2
  161. package/dist/core/components/ui/ExportData.d.ts.map +1 -1
  162. package/dist/core/components/ui/ExportData.js +5 -5
  163. package/dist/core/components/ui/ExportData.js.map +1 -1
  164. package/dist/core/components/ui/FilesManager/src/FileItemComponent.d.ts.map +1 -1
  165. package/dist/core/components/ui/FilesManager/src/FileItemComponent.js +3 -3
  166. package/dist/core/components/ui/FilesManager/src/FileItemComponent.js.map +1 -1
  167. package/dist/core/components/ui/FilesManager/src/FileMarker.d.ts.map +1 -1
  168. package/dist/core/components/ui/FilesManager/src/FileMarker.js +2 -2
  169. package/dist/core/components/ui/FilesManager/src/FileMarker.js.map +1 -1
  170. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.d.ts.map +1 -1
  171. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js +1 -1
  172. package/dist/core/components/ui/FilesManager/src/ViewerContextMenu.js.map +1 -1
  173. package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.d.ts.map +1 -1
  174. package/dist/core/components/ui/FilesManager/src/convertIfcToFragmentsFile.js.map +1 -1
  175. package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts +1 -1
  176. package/dist/core/components/ui/FilesManager/src/downloadUtils.d.ts.map +1 -1
  177. package/dist/core/components/ui/FilesManager/src/downloadUtils.js.map +1 -1
  178. package/dist/core/components/ui/FilesManager/src/useCommonFileUpload.js.map +1 -1
  179. package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts +2 -2
  180. package/dist/core/components/ui/FilesManager/src/useFileActions.d.ts.map +1 -1
  181. package/dist/core/components/ui/FilesManager/src/useFileActions.js +2 -2
  182. package/dist/core/components/ui/FilesManager/src/useFileActions.js.map +1 -1
  183. package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js +1 -1
  184. package/dist/core/components/ui/FilesManager/src/useFileDeleteHandler.js.map +1 -1
  185. package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js +3 -3
  186. package/dist/core/components/ui/FilesManager/src/useFileUploadHandler.js.map +1 -1
  187. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.d.ts.map +1 -1
  188. package/dist/core/components/ui/FilesManager/src/useFileUploadWithProgress.js.map +1 -1
  189. package/dist/core/components/ui/GenericTool.d.ts +1 -1
  190. package/dist/core/components/ui/GenericTool.d.ts.map +1 -1
  191. package/dist/core/components/ui/GenericTool.js +2 -2
  192. package/dist/core/components/ui/GenericTool.js.map +1 -1
  193. package/dist/core/components/ui/Icons/FloorPlanIcon.js +1 -1
  194. package/dist/core/components/ui/Icons/FloorPlanIcon.js.map +1 -1
  195. package/dist/core/components/ui/InfoSidebar/Container.d.ts.map +1 -1
  196. package/dist/core/components/ui/InfoSidebar/Container.js.map +1 -1
  197. package/dist/core/components/ui/InfoSidebar/Header.d.ts.map +1 -1
  198. package/dist/core/components/ui/InfoSidebar/Header.js +4 -4
  199. package/dist/core/components/ui/InfoSidebar/Header.js.map +1 -1
  200. package/dist/core/components/ui/InfoSidebar/index.d.ts +1 -1
  201. package/dist/core/components/ui/InfoSidebar/index.d.ts.map +1 -1
  202. package/dist/core/components/ui/InfoSidebar/index.js +1 -1
  203. package/dist/core/components/ui/InfoSidebar/index.js.map +1 -1
  204. package/dist/core/components/ui/Label.d.ts +1 -1
  205. package/dist/core/components/ui/Label.d.ts.map +1 -1
  206. package/dist/core/components/ui/Label.js +1 -1
  207. package/dist/core/components/ui/Label.js.map +1 -1
  208. package/dist/core/components/ui/LanguageToggle.d.ts +1 -1
  209. package/dist/core/components/ui/LanguageToggle.d.ts.map +1 -1
  210. package/dist/core/components/ui/LanguageToggle.js +1 -1
  211. package/dist/core/components/ui/LanguageToggle.js.map +1 -1
  212. package/dist/core/components/ui/Menubar.d.ts +1 -1
  213. package/dist/core/components/ui/Menubar.d.ts.map +1 -1
  214. package/dist/core/components/ui/Menubar.js +1 -1
  215. package/dist/core/components/ui/Menubar.js.map +1 -1
  216. package/dist/core/components/ui/NavUser.js +7 -7
  217. package/dist/core/components/ui/NavUser.js.map +1 -1
  218. package/dist/core/components/ui/Navbar.d.ts.map +1 -1
  219. package/dist/core/components/ui/Navbar.js +2 -2
  220. package/dist/core/components/ui/Navbar.js.map +1 -1
  221. package/dist/core/components/ui/Popover.d.ts +1 -1
  222. package/dist/core/components/ui/Popover.d.ts.map +1 -1
  223. package/dist/core/components/ui/Popover.js +1 -1
  224. package/dist/core/components/ui/Popover.js.map +1 -1
  225. package/dist/core/components/ui/Progress.d.ts +1 -1
  226. package/dist/core/components/ui/Progress.d.ts.map +1 -1
  227. package/dist/core/components/ui/Progress.js +1 -1
  228. package/dist/core/components/ui/Progress.js.map +1 -1
  229. package/dist/core/components/ui/ScrollArea.d.ts +1 -1
  230. package/dist/core/components/ui/ScrollArea.d.ts.map +1 -1
  231. package/dist/core/components/ui/ScrollArea.js +1 -1
  232. package/dist/core/components/ui/ScrollArea.js.map +1 -1
  233. package/dist/core/components/ui/SearchInput.d.ts.map +1 -1
  234. package/dist/core/components/ui/SearchInput.js +2 -2
  235. package/dist/core/components/ui/SearchInput.js.map +1 -1
  236. package/dist/core/components/ui/Select.d.ts +1 -1
  237. package/dist/core/components/ui/Select.d.ts.map +1 -1
  238. package/dist/core/components/ui/Select.js +3 -3
  239. package/dist/core/components/ui/Select.js.map +1 -1
  240. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts +1 -1
  241. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
  242. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js +10 -10
  243. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
  244. package/dist/core/components/ui/Sensors/Sensor.d.ts +2 -1
  245. package/dist/core/components/ui/Sensors/Sensor.d.ts.map +1 -1
  246. package/dist/core/components/ui/Sensors/Sensor.js +3 -3
  247. package/dist/core/components/ui/Sensors/Sensor.js.map +1 -1
  248. package/dist/core/components/ui/Sensors/SensorChart.d.ts +1 -1
  249. package/dist/core/components/ui/Sensors/SensorChart.d.ts.map +1 -1
  250. package/dist/core/components/ui/Sensors/SensorChart.js +1 -1
  251. package/dist/core/components/ui/Sensors/SensorChart.js.map +1 -1
  252. package/dist/core/components/ui/Sensors/SensorInput.d.ts.map +1 -1
  253. package/dist/core/components/ui/Sensors/SensorInput.js +9 -9
  254. package/dist/core/components/ui/Sensors/SensorInput.js.map +1 -1
  255. package/dist/core/components/ui/Sensors/SensorTagsSection.d.ts.map +1 -1
  256. package/dist/core/components/ui/Sensors/SensorTagsSection.js +3 -3
  257. package/dist/core/components/ui/Sensors/SensorTagsSection.js.map +1 -1
  258. package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
  259. package/dist/core/components/ui/Sensors/SensorsSection.js +7 -7
  260. package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
  261. package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.d.ts.map +1 -1
  262. package/dist/core/components/ui/Sensors/SensorsSectionSkeleton.js.map +1 -1
  263. package/dist/core/components/ui/Sensors/sensorUtils.d.ts +1 -1
  264. package/dist/core/components/ui/Sensors/sensorUtils.d.ts.map +1 -1
  265. package/dist/core/components/ui/Sensors/sensorUtils.js.map +1 -1
  266. package/dist/core/components/ui/Separator.d.ts +1 -1
  267. package/dist/core/components/ui/Separator.d.ts.map +1 -1
  268. package/dist/core/components/ui/Separator.js +1 -1
  269. package/dist/core/components/ui/Separator.js.map +1 -1
  270. package/dist/core/components/ui/SettingsButton.d.ts.map +1 -1
  271. package/dist/core/components/ui/SettingsButton.js +4 -4
  272. package/dist/core/components/ui/SettingsButton.js.map +1 -1
  273. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts +1 -1
  274. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.d.ts.map +1 -1
  275. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js +14 -14
  276. package/dist/core/components/ui/ShareFeature/ShareToolSubmenu.js.map +1 -1
  277. package/dist/core/components/ui/Sheet.d.ts +1 -1
  278. package/dist/core/components/ui/Sheet.d.ts.map +1 -1
  279. package/dist/core/components/ui/Sheet.js +1 -1
  280. package/dist/core/components/ui/Sheet.js.map +1 -1
  281. package/dist/core/components/ui/Sidebar.d.ts +1 -1
  282. package/dist/core/components/ui/Sidebar.d.ts.map +1 -1
  283. package/dist/core/components/ui/Sidebar.js +6 -6
  284. package/dist/core/components/ui/Sidebar.js.map +1 -1
  285. package/dist/core/components/ui/Slider.d.ts +1 -1
  286. package/dist/core/components/ui/Slider.d.ts.map +1 -1
  287. package/dist/core/components/ui/Slider.js +1 -1
  288. package/dist/core/components/ui/Slider.js.map +1 -1
  289. package/dist/core/components/ui/Switch.d.ts +1 -1
  290. package/dist/core/components/ui/Switch.d.ts.map +1 -1
  291. package/dist/core/components/ui/Switch.js +1 -1
  292. package/dist/core/components/ui/Switch.js.map +1 -1
  293. package/dist/core/components/ui/Tabs.d.ts +1 -1
  294. package/dist/core/components/ui/Tabs.d.ts.map +1 -1
  295. package/dist/core/components/ui/Tabs.js +1 -1
  296. package/dist/core/components/ui/Tabs.js.map +1 -1
  297. package/dist/core/components/ui/Toggle.d.ts +1 -1
  298. package/dist/core/components/ui/Toggle.d.ts.map +1 -1
  299. package/dist/core/components/ui/Toggle.js +1 -1
  300. package/dist/core/components/ui/Toggle.js.map +1 -1
  301. package/dist/core/components/ui/ToggleGroup.d.ts +1 -1
  302. package/dist/core/components/ui/ToggleGroup.d.ts.map +1 -1
  303. package/dist/core/components/ui/ToggleGroup.js +1 -1
  304. package/dist/core/components/ui/ToggleGroup.js.map +1 -1
  305. package/dist/core/components/ui/ToolbarButton.d.ts +1 -1
  306. package/dist/core/components/ui/ToolbarButton.d.ts.map +1 -1
  307. package/dist/core/components/ui/ToolbarButton.js +1 -1
  308. package/dist/core/components/ui/ToolbarButton.js.map +1 -1
  309. package/dist/core/components/ui/Tooltip.d.ts +1 -1
  310. package/dist/core/components/ui/Tooltip.d.ts.map +1 -1
  311. package/dist/core/components/ui/Tooltip.js +1 -1
  312. package/dist/core/components/ui/Tooltip.js.map +1 -1
  313. package/dist/core/components/ui/UserAvatar.d.ts.map +1 -1
  314. package/dist/core/components/ui/UserAvatar.js +1 -1
  315. package/dist/core/components/ui/UserAvatar.js.map +1 -1
  316. package/dist/core/components/ui/downloadUtils.d.ts.map +1 -1
  317. package/dist/core/components/ui/downloadUtils.js.map +1 -1
  318. package/dist/core/components/ui/stats.d.ts.map +1 -1
  319. package/dist/core/components/ui/stats.js.map +1 -1
  320. package/dist/core/components/ui/uploadFile.js +1 -1
  321. package/dist/core/components/ui/uploadFile.js.map +1 -1
  322. package/dist/core/components/viewers/Data/DataMenu.d.ts +1 -1
  323. package/dist/core/components/viewers/Data/DataMenu.d.ts.map +1 -1
  324. package/dist/core/components/viewers/Data/DataMenu.js +11 -11
  325. package/dist/core/components/viewers/Data/DataMenu.js.map +1 -1
  326. package/dist/core/components/viewers/Data/FilterButtons.d.ts +1 -1
  327. package/dist/core/components/viewers/Data/FilterButtons.d.ts.map +1 -1
  328. package/dist/core/components/viewers/Data/FilterButtons.js +7 -7
  329. package/dist/core/components/viewers/Data/FilterButtons.js.map +1 -1
  330. package/dist/core/components/viewers/Data/HeaderButtons.d.ts +1 -1
  331. package/dist/core/components/viewers/Data/HeaderButtons.d.ts.map +1 -1
  332. package/dist/core/components/viewers/Data/HeaderButtons.js +9 -9
  333. package/dist/core/components/viewers/Data/HeaderButtons.js.map +1 -1
  334. package/dist/core/components/viewers/Data/MoreOptions.d.ts +1 -1
  335. package/dist/core/components/viewers/Data/MoreOptions.d.ts.map +1 -1
  336. package/dist/core/components/viewers/Data/MoreOptions.js +16 -16
  337. package/dist/core/components/viewers/Data/MoreOptions.js.map +1 -1
  338. package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts +1 -1
  339. package/dist/core/components/viewers/Data/advancedFilter/Filters.d.ts.map +1 -1
  340. package/dist/core/components/viewers/Data/advancedFilter/Filters.js +2 -2
  341. package/dist/core/components/viewers/Data/advancedFilter/Filters.js.map +1 -1
  342. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts +1 -1
  343. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.d.ts.map +1 -1
  344. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js +6 -6
  345. package/dist/core/components/viewers/Data/advancedFilter/FiltersDialog.js.map +1 -1
  346. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.d.ts.map +1 -1
  347. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js +3 -3
  348. package/dist/core/components/viewers/Data/buildingDetails/AddBuilding.js.map +1 -1
  349. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.d.ts.map +1 -1
  350. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js +10 -10
  351. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js.map +1 -1
  352. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.d.ts.map +1 -1
  353. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js +11 -11
  354. package/dist/core/components/viewers/Data/buildingDetails/BuildingsMoreOptions.js.map +1 -1
  355. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.d.ts.map +1 -1
  356. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js +10 -10
  357. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js.map +1 -1
  358. package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.d.ts.map +1 -1
  359. package/dist/core/components/viewers/Data/buildingDetails/GeocoderInput.js.map +1 -1
  360. package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.d.ts.map +1 -1
  361. package/dist/core/components/viewers/Data/buildingDetails/buildingSchemaTemplate.js.map +1 -1
  362. package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts +1 -1
  363. package/dist/core/components/viewers/Data/details/AttachedFiles.d.ts.map +1 -1
  364. package/dist/core/components/viewers/Data/details/AttachedFiles.js +3 -3
  365. package/dist/core/components/viewers/Data/details/AttachedFiles.js.map +1 -1
  366. package/dist/core/components/viewers/Data/details/DetailActions.d.ts +1 -1
  367. package/dist/core/components/viewers/Data/details/DetailActions.d.ts.map +1 -1
  368. package/dist/core/components/viewers/Data/details/DetailActions.js +2 -2
  369. package/dist/core/components/viewers/Data/details/DetailActions.js.map +1 -1
  370. package/dist/core/components/viewers/Data/details/DetailHeader.d.ts.map +1 -1
  371. package/dist/core/components/viewers/Data/details/DetailHeader.js.map +1 -1
  372. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.d.ts.map +1 -1
  373. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js +4 -4
  374. package/dist/core/components/viewers/Data/details/EnergySourcesGrid.js.map +1 -1
  375. package/dist/core/components/viewers/Data/details/FieldValue.d.ts.map +1 -1
  376. package/dist/core/components/viewers/Data/details/FieldValue.js +2 -2
  377. package/dist/core/components/viewers/Data/details/FieldValue.js.map +1 -1
  378. package/dist/core/components/viewers/Data/details/FileUpload.d.ts.map +1 -1
  379. package/dist/core/components/viewers/Data/details/FileUpload.js +2 -2
  380. package/dist/core/components/viewers/Data/details/FileUpload.js.map +1 -1
  381. package/dist/core/components/viewers/Data/details/FilterFiles.d.ts.map +1 -1
  382. package/dist/core/components/viewers/Data/details/FilterFiles.js +2 -2
  383. package/dist/core/components/viewers/Data/details/FilterFiles.js.map +1 -1
  384. package/dist/core/components/viewers/Data/details/TabSidebar.d.ts.map +1 -1
  385. package/dist/core/components/viewers/Data/details/TabSidebar.js +3 -3
  386. package/dist/core/components/viewers/Data/details/TabSidebar.js.map +1 -1
  387. package/dist/core/components/viewers/Data/files/DatatableFileAdder.d.ts.map +1 -1
  388. package/dist/core/components/viewers/Data/files/DatatableFileAdder.js +3 -3
  389. package/dist/core/components/viewers/Data/files/DatatableFileAdder.js.map +1 -1
  390. package/dist/core/components/viewers/Data/files/FileDetails.d.ts.map +1 -1
  391. package/dist/core/components/viewers/Data/files/FileDetails.js +8 -8
  392. package/dist/core/components/viewers/Data/files/FileDetails.js.map +1 -1
  393. package/dist/core/components/viewers/Data/files/FileMoreOptions.d.ts.map +1 -1
  394. package/dist/core/components/viewers/Data/files/FileMoreOptions.js +8 -8
  395. package/dist/core/components/viewers/Data/files/FileMoreOptions.js.map +1 -1
  396. package/dist/core/components/viewers/Data/files/FilePreview.d.ts +1 -1
  397. package/dist/core/components/viewers/Data/files/FilePreview.d.ts.map +1 -1
  398. package/dist/core/components/viewers/Data/files/FilePreview.js +1 -1
  399. package/dist/core/components/viewers/Data/files/FilePreview.js.map +1 -1
  400. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.d.ts.map +1 -1
  401. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js +3 -3
  402. package/dist/core/components/viewers/Data/infrastructureDetails/AddInfrastructure.js.map +1 -1
  403. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.d.ts.map +1 -1
  404. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js +2 -2
  405. package/dist/core/components/viewers/Data/infrastructureDetails/FieldRenderer.js.map +1 -1
  406. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.d.ts.map +1 -1
  407. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js +6 -6
  408. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js.map +1 -1
  409. package/dist/core/components/viewers/Data/siteDetails/AddSite.d.ts.map +1 -1
  410. package/dist/core/components/viewers/Data/siteDetails/AddSite.js +5 -5
  411. package/dist/core/components/viewers/Data/siteDetails/AddSite.js.map +1 -1
  412. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.d.ts.map +1 -1
  413. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js +10 -10
  414. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js.map +1 -1
  415. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.d.ts.map +1 -1
  416. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js +9 -9
  417. package/dist/core/components/viewers/Data/siteDetails/FieldRenderer.js.map +1 -1
  418. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.d.ts.map +1 -1
  419. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js +11 -11
  420. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js.map +1 -1
  421. package/dist/core/components/viewers/Data/userDetails/AddUser.d.ts.map +1 -1
  422. package/dist/core/components/viewers/Data/userDetails/AddUser.js +3 -3
  423. package/dist/core/components/viewers/Data/userDetails/AddUser.js.map +1 -1
  424. package/dist/core/components/viewers/Data/userDetails/UserDetails.d.ts.map +1 -1
  425. package/dist/core/components/viewers/Data/userDetails/UserDetails.js +12 -12
  426. package/dist/core/components/viewers/Data/userDetails/UserDetails.js.map +1 -1
  427. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.d.ts.map +1 -1
  428. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js +12 -12
  429. package/dist/core/components/viewers/Data/userDetails/UserMoreOptions.js.map +1 -1
  430. package/dist/core/components/viewers/Data/utils/Columns.d.ts +2 -2
  431. package/dist/core/components/viewers/Data/utils/Columns.d.ts.map +1 -1
  432. package/dist/core/components/viewers/Data/utils/Columns.js +7 -7
  433. package/dist/core/components/viewers/Data/utils/Columns.js.map +1 -1
  434. package/dist/core/components/viewers/Data/utils/Headers.d.ts.map +1 -1
  435. package/dist/core/components/viewers/Data/utils/Headers.js.map +1 -1
  436. package/dist/core/components/viewers/Data/utils/csvUtils.js.map +1 -1
  437. package/dist/core/components/viewers/Data/utils/positionParser.js.map +1 -1
  438. package/dist/core/components/viewers/Data/utils/useViewerData.d.ts +2 -2
  439. package/dist/core/components/viewers/Data/utils/useViewerData.d.ts.map +1 -1
  440. package/dist/core/components/viewers/Data/utils/useViewerData.js.map +1 -1
  441. package/dist/core/components/viewers/Viewer.d.ts +1 -1
  442. package/dist/core/components/viewers/Viewer.d.ts.map +1 -1
  443. package/dist/core/components/viewers/Viewer.js +6 -6
  444. package/dist/core/components/viewers/Viewer.js.map +1 -1
  445. package/dist/core/components/viewers/bim/BimToolbar.d.ts.map +1 -1
  446. package/dist/core/components/viewers/bim/BimToolbar.js +1 -1
  447. package/dist/core/components/viewers/bim/BimToolbar.js.map +1 -1
  448. package/dist/core/components/viewers/bim/BimViewer.d.ts.map +1 -1
  449. package/dist/core/components/viewers/bim/BimViewer.js +7 -7
  450. package/dist/core/components/viewers/bim/BimViewer.js.map +1 -1
  451. package/dist/core/components/viewers/bim/src/BCFTopicsManager.d.ts.map +1 -1
  452. package/dist/core/components/viewers/bim/src/BCFTopicsManager.js.map +1 -1
  453. package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts +2 -2
  454. package/dist/core/components/viewers/bim/src/BIMManager/index.d.ts.map +1 -1
  455. package/dist/core/components/viewers/bim/src/BIMManager/index.js.map +1 -1
  456. package/dist/core/components/viewers/bim/src/BimLoadingState/index.d.ts.map +1 -1
  457. package/dist/core/components/viewers/bim/src/BimLoadingState/index.js +9 -9
  458. package/dist/core/components/viewers/bim/src/BimLoadingState/index.js.map +1 -1
  459. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.d.ts.map +1 -1
  460. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js +1 -1
  461. package/dist/core/components/viewers/bim/src/BimMeasurements/LenghtMeasurement.js.map +1 -1
  462. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts +1 -1
  463. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.d.ts.map +1 -1
  464. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js +1 -1
  465. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/index.js.map +1 -1
  466. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts +1 -1
  467. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.d.ts.map +1 -1
  468. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js +5 -5
  469. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CollapsibleTopicItem.js.map +1 -1
  470. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts +1 -1
  471. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.d.ts.map +1 -1
  472. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.js +9 -9
  473. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/CreateTopicDialog.js.map +1 -1
  474. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.d.ts.map +1 -1
  475. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js +6 -6
  476. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js.map +1 -1
  477. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.d.ts.map +1 -1
  478. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js +4 -4
  479. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/index.js.map +1 -1
  480. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  481. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  482. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js +10 -10
  483. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  484. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
  485. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js +9 -9
  486. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
  487. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.d.ts.map +1 -1
  488. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js +1 -1
  489. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/index.js.map +1 -1
  490. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.d.ts.map +1 -1
  491. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js +2 -2
  492. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/ElevationsSection.js.map +1 -1
  493. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.d.ts.map +1 -1
  494. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js +1 -1
  495. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/FloorplanSection.js.map +1 -1
  496. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.d.ts.map +1 -1
  497. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js +6 -6
  498. package/dist/core/components/viewers/bim/src/BimSidebar/src/LayersTab/src/SpatialStructureSection.js.map +1 -1
  499. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts +1 -1
  500. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.d.ts.map +1 -1
  501. package/dist/core/components/viewers/bim/src/BimSidebar/src/SensorsTab/index.js.map +1 -1
  502. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.d.ts.map +1 -1
  503. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js +2 -2
  504. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/index.js.map +1 -1
  505. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
  506. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js +5 -5
  507. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
  508. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.d.ts.map +1 -1
  509. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js +3 -3
  510. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/LightingManagement.js.map +1 -1
  511. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.d.ts.map +1 -1
  512. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js +3 -3
  513. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/RenderMode.js.map +1 -1
  514. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.d.ts.map +1 -1
  515. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js +4 -4
  516. package/dist/core/components/viewers/bim/src/BimSidebar/src/SettingsTab/src/ToggleProjection.js.map +1 -1
  517. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts +1 -1
  518. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.d.ts.map +1 -1
  519. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js +1 -1
  520. package/dist/core/components/viewers/bim/src/BimSidebar/src/TabSelector.js.map +1 -1
  521. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.d.ts.map +1 -1
  522. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js +5 -5
  523. package/dist/core/components/viewers/bim/src/BimSidebar/src/index.js.map +1 -1
  524. package/dist/core/components/viewers/bim/src/CameraProjection.d.ts.map +1 -1
  525. package/dist/core/components/viewers/bim/src/CameraProjection.js.map +1 -1
  526. package/dist/core/components/viewers/bim/src/ClippingPlane.d.ts.map +1 -1
  527. package/dist/core/components/viewers/bim/src/ClippingPlane.js +1 -1
  528. package/dist/core/components/viewers/bim/src/ClippingPlane.js.map +1 -1
  529. package/dist/core/components/viewers/bim/src/Cursor.d.ts +1 -1
  530. package/dist/core/components/viewers/bim/src/Cursor.d.ts.map +1 -1
  531. package/dist/core/components/viewers/bim/src/Cursor.js.map +1 -1
  532. package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts +1 -1
  533. package/dist/core/components/viewers/bim/src/DXFLoader/index.d.ts.map +1 -1
  534. package/dist/core/components/viewers/bim/src/DXFLoader/index.js +1 -1
  535. package/dist/core/components/viewers/bim/src/DXFLoader/index.js.map +1 -1
  536. package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts +1 -1
  537. package/dist/core/components/viewers/bim/src/ElevationsTool/index.d.ts.map +1 -1
  538. package/dist/core/components/viewers/bim/src/ElevationsTool/index.js +1 -1
  539. package/dist/core/components/viewers/bim/src/ElevationsTool/index.js.map +1 -1
  540. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts +1 -1
  541. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.d.ts.map +1 -1
  542. package/dist/core/components/viewers/bim/src/ElevationsTool/src/ElevationProjector.js.map +1 -1
  543. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts +4 -4
  544. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.d.ts.map +1 -1
  545. package/dist/core/components/viewers/bim/src/ElevationsTool/src/types.js.map +1 -1
  546. package/dist/core/components/viewers/bim/src/FitCamera.d.ts.map +1 -1
  547. package/dist/core/components/viewers/bim/src/FitCamera.js +1 -1
  548. package/dist/core/components/viewers/bim/src/FitCamera.js.map +1 -1
  549. package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts +3 -3
  550. package/dist/core/components/viewers/bim/src/FloorplanTool/index.d.ts.map +1 -1
  551. package/dist/core/components/viewers/bim/src/FloorplanTool/index.js +1 -1
  552. package/dist/core/components/viewers/bim/src/FloorplanTool/index.js.map +1 -1
  553. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts +3 -3
  554. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.d.ts.map +1 -1
  555. package/dist/core/components/viewers/bim/src/FloorplanTool/src/FloorplanRenderer.js.map +1 -1
  556. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts +1 -1
  557. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.d.ts.map +1 -1
  558. package/dist/core/components/viewers/bim/src/FloorplanTool/src/StoreyProjector.js.map +1 -1
  559. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts +2 -2
  560. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.d.ts.map +1 -1
  561. package/dist/core/components/viewers/bim/src/FloorplanTool/src/types.js.map +1 -1
  562. package/dist/core/components/viewers/bim/src/GhostMode.d.ts +1 -1
  563. package/dist/core/components/viewers/bim/src/GhostMode.d.ts.map +1 -1
  564. package/dist/core/components/viewers/bim/src/GhostMode.js.map +1 -1
  565. package/dist/core/components/viewers/bim/src/Highlighter/index.d.ts.map +1 -1
  566. package/dist/core/components/viewers/bim/src/Highlighter/index.js +1 -1
  567. package/dist/core/components/viewers/bim/src/Highlighter/index.js.map +1 -1
  568. package/dist/core/components/viewers/bim/src/IDSManager/index.d.ts.map +1 -1
  569. package/dist/core/components/viewers/bim/src/IDSManager/index.js +3 -3
  570. package/dist/core/components/viewers/bim/src/IDSManager/index.js.map +1 -1
  571. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.d.ts.map +1 -1
  572. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js +2 -2
  573. package/dist/core/components/viewers/bim/src/IDSManager/src/IDSLegend.js.map +1 -1
  574. package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.d.ts.map +1 -1
  575. package/dist/core/components/viewers/bim/src/LoadIfcAsFragments.js.map +1 -1
  576. package/dist/core/components/viewers/bim/src/LoadModels.d.ts +1 -1
  577. package/dist/core/components/viewers/bim/src/LoadModels.d.ts.map +1 -1
  578. package/dist/core/components/viewers/bim/src/LoadModels.js +1 -1
  579. package/dist/core/components/viewers/bim/src/LoadModels.js.map +1 -1
  580. package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts +1 -1
  581. package/dist/core/components/viewers/bim/src/ModelManager/index.d.ts.map +1 -1
  582. package/dist/core/components/viewers/bim/src/ModelManager/index.js +4 -4
  583. package/dist/core/components/viewers/bim/src/ModelManager/index.js.map +1 -1
  584. package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts +1 -1
  585. package/dist/core/components/viewers/bim/src/SimpleBimViewer.d.ts.map +1 -1
  586. package/dist/core/components/viewers/bim/src/SimpleBimViewer.js +8 -8
  587. package/dist/core/components/viewers/bim/src/SimpleBimViewer.js.map +1 -1
  588. package/dist/core/components/viewers/bim/src/SpatialStructure.js.map +1 -1
  589. package/dist/core/components/viewers/bim/src/ViewportGizmo.d.ts.map +1 -1
  590. package/dist/core/components/viewers/bim/src/ViewportGizmo.js +2 -2
  591. package/dist/core/components/viewers/bim/src/ViewportGizmo.js.map +1 -1
  592. package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts +1 -1
  593. package/dist/core/components/viewers/bim/src/lib/CameraController.d.ts.map +1 -1
  594. package/dist/core/components/viewers/bim/src/lib/CameraController.js.map +1 -1
  595. package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts +1 -1
  596. package/dist/core/components/viewers/bim/src/lib/ChromeController.d.ts.map +1 -1
  597. package/dist/core/components/viewers/bim/src/lib/ChromeController.js.map +1 -1
  598. package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts +1 -1
  599. package/dist/core/components/viewers/bim/src/lib/ClipController.d.ts.map +1 -1
  600. package/dist/core/components/viewers/bim/src/lib/ClipController.js.map +1 -1
  601. package/dist/core/components/viewers/bim/src/lib/GridController.d.ts.map +1 -1
  602. package/dist/core/components/viewers/bim/src/lib/GridController.js.map +1 -1
  603. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.d.ts.map +1 -1
  604. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js +1 -1
  605. package/dist/core/components/viewers/bim/src/lib/TrueNorthPopover.js.map +1 -1
  606. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts +2 -2
  607. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.d.ts.map +1 -1
  608. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js +1 -1
  609. package/dist/core/components/viewers/bim/src/lib/ViewSectionList.js.map +1 -1
  610. package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts +1 -1
  611. package/dist/core/components/viewers/bim/src/lib/drawingProjection.d.ts.map +1 -1
  612. package/dist/core/components/viewers/bim/src/lib/drawingProjection.js.map +1 -1
  613. package/dist/core/components/viewers/bim/src/lib/useBuildingName.d.ts.map +1 -1
  614. package/dist/core/components/viewers/bim/src/lib/useBuildingName.js.map +1 -1
  615. package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js +1 -1
  616. package/dist/core/components/viewers/bim/src/lib/useFriendlyIfcClassName.js.map +1 -1
  617. package/dist/core/components/viewers/bim/src/propertiesMenu/index.d.ts.map +1 -1
  618. package/dist/core/components/viewers/bim/src/propertiesMenu/index.js +4 -4
  619. package/dist/core/components/viewers/bim/src/propertiesMenu/index.js.map +1 -1
  620. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.d.ts.map +1 -1
  621. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js +1 -1
  622. package/dist/core/components/viewers/bim/src/propertiesMenu/src/ElementList.js.map +1 -1
  623. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.d.ts.map +1 -1
  624. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js +2 -2
  625. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertiesMenuHeader.js.map +1 -1
  626. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.d.ts.map +1 -1
  627. package/dist/core/components/viewers/bim/src/propertiesMenu/src/PropertyGroup.js.map +1 -1
  628. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts +1 -1
  629. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.d.ts.map +1 -1
  630. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js +2 -2
  631. package/dist/core/components/viewers/bim/src/propertiesMenu/src/useElementProperties.js.map +1 -1
  632. package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.d.ts.map +1 -1
  633. package/dist/core/components/viewers/bim/src/propertiesMenu/src/utils.js.map +1 -1
  634. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.d.ts.map +1 -1
  635. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js +9 -9
  636. package/dist/core/components/viewers/bim/src/tools/AddToBim/index.js.map +1 -1
  637. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts +1 -1
  638. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.d.ts.map +1 -1
  639. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js +2 -2
  640. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddDxf.js.map +1 -1
  641. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.d.ts.map +1 -1
  642. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js +2 -2
  643. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddFile.js.map +1 -1
  644. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts +1 -1
  645. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.d.ts.map +1 -1
  646. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddSensor.js.map +1 -1
  647. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.d.ts.map +1 -1
  648. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js +3 -3
  649. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/AddToBimToolbar.js.map +1 -1
  650. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts +1 -1
  651. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.d.ts.map +1 -1
  652. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimComment.js.map +1 -1
  653. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts +2 -2
  654. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.d.ts.map +1 -1
  655. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/BimSensor.js.map +1 -1
  656. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts +5 -5
  657. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.d.ts.map +1 -1
  658. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileHandler.js.map +1 -1
  659. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.d.ts.map +1 -1
  660. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js +2 -2
  661. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/FileMarkerUtils.js.map +1 -1
  662. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.d.ts.map +1 -1
  663. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js +1 -1
  664. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/Position3DCard.js.map +1 -1
  665. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts +1 -1
  666. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.d.ts.map +1 -1
  667. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js +1 -1
  668. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/renderCSS2DMarkers.js.map +1 -1
  669. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.d.ts.map +1 -1
  670. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js +4 -4
  671. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useCommentMarkers.js.map +1 -1
  672. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts +2 -2
  673. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.d.ts.map +1 -1
  674. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js +4 -4
  675. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useFilePlacement.js.map +1 -1
  676. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.d.ts.map +1 -1
  677. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js +6 -6
  678. package/dist/core/components/viewers/bim/src/tools/AddToBim/src/useSensorMarkers.js.map +1 -1
  679. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.d.ts.map +1 -1
  680. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js +2 -2
  681. package/dist/core/components/viewers/bim/src/tools/BIMSearchTool.js.map +1 -1
  682. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts +1 -1
  683. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.d.ts.map +1 -1
  684. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js +6 -6
  685. package/dist/core/components/viewers/bim/src/tools/ClippingTool/ClippingTool.js.map +1 -1
  686. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts +1 -1
  687. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.d.ts.map +1 -1
  688. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js +3 -3
  689. package/dist/core/components/viewers/bim/src/tools/ExplodeByLevelTool.js.map +1 -1
  690. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts +1 -1
  691. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.d.ts.map +1 -1
  692. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js +2 -2
  693. package/dist/core/components/viewers/bim/src/tools/FitCameraTool.js.map +1 -1
  694. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts +1 -1
  695. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.d.ts.map +1 -1
  696. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js +4 -4
  697. package/dist/core/components/viewers/bim/src/tools/InspectBimTool.js.map +1 -1
  698. package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts +1 -1
  699. package/dist/core/components/viewers/bim/src/tools/bimToolbar.d.ts.map +1 -1
  700. package/dist/core/components/viewers/bim/src/tools/bimToolbar.js +4 -4
  701. package/dist/core/components/viewers/bim/src/tools/bimToolbar.js.map +1 -1
  702. package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts +1 -1
  703. package/dist/core/components/viewers/bim/src/tools/measureBimTool.d.ts.map +1 -1
  704. package/dist/core/components/viewers/bim/src/tools/measureBimTool.js +5 -5
  705. package/dist/core/components/viewers/bim/src/tools/measureBimTool.js.map +1 -1
  706. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts +1 -1
  707. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.d.ts.map +1 -1
  708. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js +5 -5
  709. package/dist/core/components/viewers/bim/src/tools/selectionBimTool.js.map +1 -1
  710. package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts +1 -1
  711. package/dist/core/components/viewers/bim/src/tools/shareBimTool.d.ts.map +1 -1
  712. package/dist/core/components/viewers/bim/src/tools/shareBimTool.js.map +1 -1
  713. package/dist/core/components/viewers/bim/utils/GizmoController.d.ts +1 -1
  714. package/dist/core/components/viewers/bim/utils/GizmoController.d.ts.map +1 -1
  715. package/dist/core/components/viewers/bim/utils/GizmoController.js.map +1 -1
  716. package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts +1 -1
  717. package/dist/core/components/viewers/bim/utils/setCameraLookAt.d.ts.map +1 -1
  718. package/dist/core/components/viewers/bim/utils/setCameraLookAt.js.map +1 -1
  719. package/dist/core/components/viewers/map/MapViewer.d.ts +1 -1
  720. package/dist/core/components/viewers/map/MapViewer.d.ts.map +1 -1
  721. package/dist/core/components/viewers/map/MapViewer.js +7 -7
  722. package/dist/core/components/viewers/map/MapViewer.js.map +1 -1
  723. package/dist/core/components/viewers/map/datasets/AddPortalDialog.d.ts.map +1 -1
  724. package/dist/core/components/viewers/map/datasets/AddPortalDialog.js +4 -4
  725. package/dist/core/components/viewers/map/datasets/AddPortalDialog.js.map +1 -1
  726. package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts +1 -1
  727. package/dist/core/components/viewers/map/datasets/DatasetDetails.d.ts.map +1 -1
  728. package/dist/core/components/viewers/map/datasets/DatasetDetails.js +4 -4
  729. package/dist/core/components/viewers/map/datasets/DatasetDetails.js.map +1 -1
  730. package/dist/core/components/viewers/map/datasets/DatasetManager/index.d.ts.map +1 -1
  731. package/dist/core/components/viewers/map/datasets/DatasetManager/index.js +13 -13
  732. package/dist/core/components/viewers/map/datasets/DatasetManager/index.js.map +1 -1
  733. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.d.ts.map +1 -1
  734. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js +2 -2
  735. package/dist/core/components/viewers/map/datasets/DatasetManager/src/FieldsTable.js.map +1 -1
  736. package/dist/core/components/viewers/map/datasets/DatasetSkeleton.d.ts.map +1 -1
  737. package/dist/core/components/viewers/map/datasets/DatasetSkeleton.js.map +1 -1
  738. package/dist/core/components/viewers/map/datasets/Filters.d.ts.map +1 -1
  739. package/dist/core/components/viewers/map/datasets/Filters.js +2 -2
  740. package/dist/core/components/viewers/map/datasets/Filters.js.map +1 -1
  741. package/dist/core/components/viewers/map/datasets/NestedFilter.d.ts.map +1 -1
  742. package/dist/core/components/viewers/map/datasets/NestedFilter.js +1 -1
  743. package/dist/core/components/viewers/map/datasets/NestedFilter.js.map +1 -1
  744. package/dist/core/components/viewers/map/datasets/RowActions.d.ts.map +1 -1
  745. package/dist/core/components/viewers/map/datasets/RowActions.js +3 -3
  746. package/dist/core/components/viewers/map/datasets/RowActions.js.map +1 -1
  747. package/dist/core/components/viewers/map/datasets/data.d.ts +1 -1
  748. package/dist/core/components/viewers/map/datasets/data.d.ts.map +1 -1
  749. package/dist/core/components/viewers/map/datasets/data.js +2 -2
  750. package/dist/core/components/viewers/map/datasets/data.js.map +1 -1
  751. package/dist/core/components/viewers/map/datasets/index.d.ts +1 -1
  752. package/dist/core/components/viewers/map/datasets/index.d.ts.map +1 -1
  753. package/dist/core/components/viewers/map/datasets/index.js +11 -11
  754. package/dist/core/components/viewers/map/datasets/index.js.map +1 -1
  755. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts +1 -1
  756. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.d.ts.map +1 -1
  757. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js +2 -2
  758. package/dist/core/components/viewers/map/datasets/src/arcGISDatasets.js.map +1 -1
  759. package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.d.ts.map +1 -1
  760. package/dist/core/components/viewers/map/datasets/src/builtinLiveDatasets.js.map +1 -1
  761. package/dist/core/components/viewers/map/datasets/src/cache.js.map +1 -1
  762. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts +1 -1
  763. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.d.ts.map +1 -1
  764. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js +1 -1
  765. package/dist/core/components/viewers/map/datasets/src/ckanDatasets.js.map +1 -1
  766. package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts +1 -1
  767. package/dist/core/components/viewers/map/datasets/src/localDatasets.d.ts.map +1 -1
  768. package/dist/core/components/viewers/map/datasets/src/localDatasets.js +3 -3
  769. package/dist/core/components/viewers/map/datasets/src/localDatasets.js.map +1 -1
  770. package/dist/core/components/viewers/map/datasets/src/minioDatasets.d.ts.map +1 -1
  771. package/dist/core/components/viewers/map/datasets/src/minioDatasets.js.map +1 -1
  772. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts +1 -1
  773. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.d.ts.map +1 -1
  774. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js +1 -1
  775. package/dist/core/components/viewers/map/datasets/src/opendatasoftDatasets.js.map +1 -1
  776. package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts +1 -1
  777. package/dist/core/components/viewers/map/datasets/src/publishedTiles.d.ts.map +1 -1
  778. package/dist/core/components/viewers/map/datasets/src/publishedTiles.js.map +1 -1
  779. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.d.ts.map +1 -1
  780. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js +1 -1
  781. package/dist/core/components/viewers/map/datasets/src/socrataDatasets.js.map +1 -1
  782. package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts +1 -12
  783. package/dist/core/components/viewers/map/datasets/src/urlSources.d.ts.map +1 -1
  784. package/dist/core/components/viewers/map/datasets/src/urlSources.js +1 -1
  785. package/dist/core/components/viewers/map/datasets/src/urlSources.js.map +1 -1
  786. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.d.ts.map +1 -1
  787. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js +1 -1
  788. package/dist/core/components/viewers/map/datasets/src/useDatasetsForPortals.js.map +1 -1
  789. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts +1 -1
  790. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.d.ts.map +1 -1
  791. package/dist/core/components/viewers/map/datasets/src/useFastDatasetCache.js.map +1 -1
  792. package/dist/core/components/viewers/map/datasets/utils.d.ts +1 -1
  793. package/dist/core/components/viewers/map/datasets/utils.d.ts.map +1 -1
  794. package/dist/core/components/viewers/map/datasets/utils.js.map +1 -1
  795. package/dist/core/components/viewers/map/legends/MapLegendHost.d.ts.map +1 -1
  796. package/dist/core/components/viewers/map/legends/MapLegendHost.js +3 -3
  797. package/dist/core/components/viewers/map/legends/MapLegendHost.js.map +1 -1
  798. package/dist/core/components/viewers/map/src/Geocoder.d.ts.map +1 -1
  799. package/dist/core/components/viewers/map/src/Geocoder.js +8 -8
  800. package/dist/core/components/viewers/map/src/Geocoder.js.map +1 -1
  801. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts +1 -1
  802. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.d.ts.map +1 -1
  803. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/index.js.map +1 -1
  804. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts +1 -1
  805. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.d.ts.map +1 -1
  806. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js +3 -3
  807. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/index.js.map +1 -1
  808. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts +1 -1
  809. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.d.ts.map +1 -1
  810. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js +11 -10
  811. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/DatabaseBuildingPopover/src/BuildingsTools.js.map +1 -1
  812. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.d.ts.map +1 -1
  813. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js +23 -55
  814. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/NonDatabaseBuildingPopover.js.map +1 -1
  815. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.d.ts.map +1 -1
  816. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js +4 -4
  817. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/OpenDataFeaturePopover.js.map +1 -1
  818. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.d.ts.map +1 -1
  819. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js +2 -2
  820. package/dist/core/components/viewers/map/src/MapFeaturePopoverMenu/src/PopoverSkeleton.js.map +1 -1
  821. package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
  822. package/dist/core/components/viewers/map/src/MapLayers/index.js +5 -5
  823. package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
  824. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.d.ts.map +1 -1
  825. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js +5 -5
  826. package/dist/core/components/viewers/map/src/MapLayers/src/BimLayer/index.js.map +1 -1
  827. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.d.ts.map +1 -1
  828. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js +4 -4
  829. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/index.js.map +1 -1
  830. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts +1 -1
  831. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.d.ts.map +1 -1
  832. package/dist/core/components/viewers/map/src/MapLayers/src/BuildingLayers/src/databaseBuildings.js.map +1 -1
  833. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.d.ts.map +1 -1
  834. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js +9 -9
  835. package/dist/core/components/viewers/map/src/MapLayers/src/CommentLayer/index.js.map +1 -1
  836. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.d.ts.map +1 -1
  837. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js +1 -1
  838. package/dist/core/components/viewers/map/src/MapLayers/src/CountryLayer/index.js.map +1 -1
  839. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.d.ts.map +1 -1
  840. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js +3 -3
  841. package/dist/core/components/viewers/map/src/MapLayers/src/EditPosition.js.map +1 -1
  842. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts +1 -1
  843. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.d.ts.map +1 -1
  844. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js +1 -1
  845. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/FileModelLayer/FileModelLayer.js.map +1 -1
  846. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.d.ts.map +1 -1
  847. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileIcon.js.map +1 -1
  848. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts +1 -1
  849. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.d.ts.map +1 -1
  850. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.js +3 -3
  851. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/FileManagerRow.js.map +1 -1
  852. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.d.ts.map +1 -1
  853. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js +2 -2
  854. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileManager.js.map +1 -1
  855. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileMarker.d.ts.map +1 -1
  856. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/components/MapFileMarker.js.map +1 -1
  857. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.d.ts.map +1 -1
  858. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js +6 -6
  859. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/index.js.map +1 -1
  860. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts +1 -1
  861. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.d.ts.map +1 -1
  862. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/CustomModelLayer.js.map +1 -1
  863. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts +1 -1
  864. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.d.ts.map +1 -1
  865. package/dist/core/components/viewers/map/src/MapLayers/src/FileLayer/utils/openFileInPopUpWindow.js.map +1 -1
  866. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.d.ts.map +1 -1
  867. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/WmsTimeControl.js.map +1 -1
  868. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.d.ts.map +1 -1
  869. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js +3 -3
  870. package/dist/core/components/viewers/map/src/MapLayers/src/OpenDataLayer/src/index.js.map +1 -1
  871. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.d.ts.map +1 -1
  872. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js +3 -3
  873. package/dist/core/components/viewers/map/src/MapLayers/src/PlaceOnMap.js.map +1 -1
  874. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.d.ts.map +1 -1
  875. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js +11 -11
  876. package/dist/core/components/viewers/map/src/MapLayers/src/SensorsLayer/index.js.map +1 -1
  877. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.d.ts.map +1 -1
  878. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js +2 -2
  879. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js.map +1 -1
  880. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.d.ts.map +1 -1
  881. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js +4 -4
  882. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js.map +1 -1
  883. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts +1 -1
  884. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.d.ts.map +1 -1
  885. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/index.js.map +1 -1
  886. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.d.ts.map +1 -1
  887. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.js.map +1 -1
  888. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.d.ts.map +1 -1
  889. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.js.map +1 -1
  890. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts +1 -1
  891. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.d.ts.map +1 -1
  892. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js +1 -1
  893. package/dist/core/components/viewers/map/src/MapSidebar/TabSelector.js.map +1 -1
  894. package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts +1 -1
  895. package/dist/core/components/viewers/map/src/MapSidebar/index.d.ts.map +1 -1
  896. package/dist/core/components/viewers/map/src/MapSidebar/index.js +4 -4
  897. package/dist/core/components/viewers/map/src/MapSidebar/index.js.map +1 -1
  898. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts +1 -1
  899. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.d.ts.map +1 -1
  900. package/dist/core/components/viewers/map/src/MapSidebar/src/CommunicationTab/index.js.map +1 -1
  901. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.d.ts.map +1 -1
  902. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js +2 -2
  903. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/index.js.map +1 -1
  904. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  905. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  906. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js +5 -5
  907. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  908. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.d.ts.map +1 -1
  909. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js +5 -5
  910. package/dist/core/components/viewers/map/src/MapSidebar/src/FileTab/src/ModelsSection.js.map +1 -1
  911. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts +1 -1
  912. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.d.ts.map +1 -1
  913. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js +4 -4
  914. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/index.js.map +1 -1
  915. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.d.ts.map +1 -1
  916. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js +4 -4
  917. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AppliedDatasetsSection.js.map +1 -1
  918. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.d.ts.map +1 -1
  919. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js +2 -2
  920. package/dist/core/components/viewers/map/src/MapSidebar/src/LayersTab/src/AvailableDatasetsSection.js.map +1 -1
  921. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts +1 -1
  922. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.d.ts.map +1 -1
  923. package/dist/core/components/viewers/map/src/MapSidebar/src/SensorsTab/index.js.map +1 -1
  924. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.d.ts.map +1 -1
  925. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/index.js.map +1 -1
  926. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.d.ts.map +1 -1
  927. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js +3 -3
  928. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/LocationSettings.js.map +1 -1
  929. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.d.ts.map +1 -1
  930. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js +3 -3
  931. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapCustomization.js.map +1 -1
  932. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.d.ts.map +1 -1
  933. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js +3 -3
  934. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/MapProjection.js.map +1 -1
  935. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.d.ts.map +1 -1
  936. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js +3 -3
  937. package/dist/core/components/viewers/map/src/MapSidebar/src/SettingsTab/src/TerrainLevel.js.map +1 -1
  938. package/dist/core/components/viewers/map/src/SimpleMap.d.ts.map +1 -1
  939. package/dist/core/components/viewers/map/src/SimpleMap.js +1 -1
  940. package/dist/core/components/viewers/map/src/SimpleMap.js.map +1 -1
  941. package/dist/core/components/viewers/map/src/compare/AddItem.d.ts +1 -1
  942. package/dist/core/components/viewers/map/src/compare/AddItem.d.ts.map +1 -1
  943. package/dist/core/components/viewers/map/src/compare/AddItem.js +6 -6
  944. package/dist/core/components/viewers/map/src/compare/AddItem.js.map +1 -1
  945. package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts +2 -2
  946. package/dist/core/components/viewers/map/src/compare/CompareDialog.d.ts.map +1 -1
  947. package/dist/core/components/viewers/map/src/compare/CompareDialog.js +5 -5
  948. package/dist/core/components/viewers/map/src/compare/CompareDialog.js.map +1 -1
  949. package/dist/core/components/viewers/map/src/compare/index.d.ts +1 -1
  950. package/dist/core/components/viewers/map/src/compare/index.d.ts.map +1 -1
  951. package/dist/core/components/viewers/map/src/compare/index.js +6 -6
  952. package/dist/core/components/viewers/map/src/compare/index.js.map +1 -1
  953. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.d.ts.map +1 -1
  954. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js +3 -3
  955. package/dist/core/components/viewers/map/src/tools/AddTools/AddDataset/DatasetAdder.js.map +1 -1
  956. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.d.ts.map +1 -1
  957. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js +5 -5
  958. package/dist/core/components/viewers/map/src/tools/AddTools/AddFile/FileAdder.js.map +1 -1
  959. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.d.ts.map +1 -1
  960. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js +3 -3
  961. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js.map +1 -1
  962. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.d.ts.map +1 -1
  963. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js +7 -7
  964. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js.map +1 -1
  965. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.d.ts.map +1 -1
  966. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js +1 -1
  967. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js.map +1 -1
  968. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts +2 -2
  969. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.d.ts.map +1 -1
  970. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js +8 -8
  971. package/dist/core/components/viewers/map/src/tools/AddTools/AddToMap.js.map +1 -1
  972. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts +2 -2
  973. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.d.ts.map +1 -1
  974. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js +1 -1
  975. package/dist/core/components/viewers/map/src/tools/DatasetMapTool.js.map +1 -1
  976. package/dist/core/components/viewers/map/src/tools/mapTools.d.ts +2 -2
  977. package/dist/core/components/viewers/map/src/tools/mapTools.d.ts.map +1 -1
  978. package/dist/core/components/viewers/map/src/tools/mapTools.js +4 -4
  979. package/dist/core/components/viewers/map/src/tools/mapTools.js.map +1 -1
  980. package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts +1 -1
  981. package/dist/core/components/viewers/map/src/tools/measureMapTool.d.ts.map +1 -1
  982. package/dist/core/components/viewers/map/src/tools/measureMapTool.js +3 -3
  983. package/dist/core/components/viewers/map/src/tools/measureMapTool.js.map +1 -1
  984. package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts +1 -1
  985. package/dist/core/components/viewers/map/src/tools/shareMapTool.d.ts.map +1 -1
  986. package/dist/core/components/viewers/map/src/tools/shareMapTool.js.map +1 -1
  987. package/dist/core/components/viewers/map/utils/ClusterManager.d.ts +1 -1
  988. package/dist/core/components/viewers/map/utils/ClusterManager.d.ts.map +1 -1
  989. package/dist/core/components/viewers/map/utils/ClusterManager.js.map +1 -1
  990. package/dist/core/components/viewers/map/utils/MarkerManager.d.ts +1 -1
  991. package/dist/core/components/viewers/map/utils/MarkerManager.d.ts.map +1 -1
  992. package/dist/core/components/viewers/map/utils/MarkerManager.js.map +1 -1
  993. package/dist/core/components/viewers/map/utils/extractCoordinates.js.map +1 -1
  994. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts +1 -1
  995. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.d.ts.map +1 -1
  996. package/dist/core/components/viewers/map/utils/fitBuildingsBounds.js.map +1 -1
  997. package/dist/core/components/viewers/map/utils/flyToEach.d.ts +1 -1
  998. package/dist/core/components/viewers/map/utils/flyToEach.d.ts.map +1 -1
  999. package/dist/core/components/viewers/map/utils/flyToEach.js.map +1 -1
  1000. package/dist/core/components/viewers/map/utils/geocoder.d.ts +1 -1
  1001. package/dist/core/components/viewers/map/utils/geocoder.d.ts.map +1 -1
  1002. package/dist/core/components/viewers/map/utils/geocoder.js +1 -1
  1003. package/dist/core/components/viewers/map/utils/geocoder.js.map +1 -1
  1004. package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts +1 -1
  1005. package/dist/core/components/viewers/map/utils/geocoding/adapters.d.ts.map +1 -1
  1006. package/dist/core/components/viewers/map/utils/geocoding/adapters.js.map +1 -1
  1007. package/dist/core/components/viewers/map/utils/geocoding/index.d.ts +1 -1
  1008. package/dist/core/components/viewers/map/utils/geocoding/index.d.ts.map +1 -1
  1009. package/dist/core/components/viewers/map/utils/geocoding/index.js +1 -1
  1010. package/dist/core/components/viewers/map/utils/geocoding/index.js.map +1 -1
  1011. package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts +1 -1
  1012. package/dist/core/components/viewers/map/utils/geocoding/osm.d.ts.map +1 -1
  1013. package/dist/core/components/viewers/map/utils/geocoding/osm.js +1 -1
  1014. package/dist/core/components/viewers/map/utils/geocoding/osm.js.map +1 -1
  1015. package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts +1 -1
  1016. package/dist/core/components/viewers/map/utils/geocoding/pelias.d.ts.map +1 -1
  1017. package/dist/core/components/viewers/map/utils/geocoding/pelias.js.map +1 -1
  1018. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts +1 -1
  1019. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.d.ts.map +1 -1
  1020. package/dist/core/components/viewers/map/utils/getOsmIdFromMartin.js.map +1 -1
  1021. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.d.ts.map +1 -1
  1022. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js +1 -1
  1023. package/dist/core/components/viewers/pointcloud/PointCloudToolbar.js.map +1 -1
  1024. package/dist/core/components/viewers/pointcloud/PointCloudViewer.d.ts.map +1 -1
  1025. package/dist/core/components/viewers/pointcloud/PointCloudViewer.js +5 -5
  1026. package/dist/core/components/viewers/pointcloud/PointCloudViewer.js.map +1 -1
  1027. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.d.ts.map +1 -1
  1028. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js +7 -7
  1029. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js.map +1 -1
  1030. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.d.ts.map +1 -1
  1031. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudManagementTable.js.map +1 -1
  1032. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.d.ts.map +1 -1
  1033. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js +15 -15
  1034. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudTable.js.map +1 -1
  1035. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.d.ts.map +1 -1
  1036. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js +3 -3
  1037. package/dist/core/components/viewers/pointcloud/src/PointCloudManagement/PointCloudUploadPanel.js.map +1 -1
  1038. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts +1 -1
  1039. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.d.ts.map +1 -1
  1040. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js +1 -1
  1041. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/TabSelector.js.map +1 -1
  1042. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.d.ts.map +1 -1
  1043. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js +2 -2
  1044. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/index.js.map +1 -1
  1045. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.d.ts.map +1 -1
  1046. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js +3 -3
  1047. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js.map +1 -1
  1048. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts +1 -1
  1049. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  1050. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js +4 -4
  1051. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  1052. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts +1 -1
  1053. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts.map +1 -1
  1054. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js +5 -5
  1055. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js.map +1 -1
  1056. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.d.ts.map +1 -1
  1057. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js +1 -1
  1058. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/index.js.map +1 -1
  1059. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.d.ts.map +1 -1
  1060. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js +3 -3
  1061. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/CameraSettings.js.map +1 -1
  1062. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.d.ts.map +1 -1
  1063. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js +4 -4
  1064. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/GridManagement.js.map +1 -1
  1065. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.d.ts.map +1 -1
  1066. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js +10 -10
  1067. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/SettingsTab/src/PerformanceSettings.js.map +1 -1
  1068. package/dist/core/components/viewers/pointcloud/src/ViewportGizmo.js.map +1 -1
  1069. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts +1 -1
  1070. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.d.ts.map +1 -1
  1071. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js +3 -3
  1072. package/dist/core/components/viewers/pointcloud/src/tools/ClippingTools/ClippingTool.js.map +1 -1
  1073. package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.d.ts.map +1 -1
  1074. package/dist/core/components/viewers/pointcloud/src/tools/FitToScreen.js.map +1 -1
  1075. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.d.ts.map +1 -1
  1076. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AngleMeasurement.js.map +1 -1
  1077. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.d.ts.map +1 -1
  1078. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/AreaMeasurement.js.map +1 -1
  1079. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.d.ts.map +1 -1
  1080. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/LineMeasurement.js.map +1 -1
  1081. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts +1 -1
  1082. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.d.ts.map +1 -1
  1083. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js +6 -6
  1084. package/dist/core/components/viewers/pointcloud/src/tools/MeasureTools/MeasurePointCloudTool.js.map +1 -1
  1085. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.d.ts.map +1 -1
  1086. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js +2 -2
  1087. package/dist/core/components/viewers/pointcloud/src/tools/PCSearchTool.js.map +1 -1
  1088. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.d.ts.map +1 -1
  1089. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js +2 -2
  1090. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/NodeSizeSelectionTool.js.map +1 -1
  1091. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.d.ts.map +1 -1
  1092. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js +3 -3
  1093. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PerformanceSettingTools.js.map +1 -1
  1094. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.d.ts.map +1 -1
  1095. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js +1 -1
  1096. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/PointBudgetTool.js.map +1 -1
  1097. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.d.ts.map +1 -1
  1098. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js +1 -1
  1099. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/ShowOctreeBoxTool.js.map +1 -1
  1100. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.d.ts.map +1 -1
  1101. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js +1 -1
  1102. package/dist/core/components/viewers/pointcloud/src/tools/PerformanceSettingsTools/SplatQualitySelection.js.map +1 -1
  1103. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.d.ts.map +1 -1
  1104. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js +4 -4
  1105. package/dist/core/components/viewers/pointcloud/src/tools/SetCameraOption.js.map +1 -1
  1106. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts +1 -1
  1107. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.d.ts.map +1 -1
  1108. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js +1 -1
  1109. package/dist/core/components/viewers/pointcloud/src/tools/SharePointCloudTool/index.js.map +1 -1
  1110. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts +1 -1
  1111. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.d.ts.map +1 -1
  1112. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js +2 -2
  1113. package/dist/core/components/viewers/pointcloud/src/tools/pointcloudToolbarTools.js.map +1 -1
  1114. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts +1 -1
  1115. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.d.ts.map +1 -1
  1116. package/dist/core/components/viewers/pointcloud/utils/restoreCameraFromUrl.js.map +1 -1
  1117. package/dist/core/hooks/buildings/createBuildingHooks.d.ts +1 -1
  1118. package/dist/core/hooks/buildings/createBuildingHooks.d.ts.map +1 -1
  1119. package/dist/core/hooks/buildings/createBuildingHooks.js.map +1 -1
  1120. package/dist/core/hooks/comments/createCommentHooks.d.ts +1 -1
  1121. package/dist/core/hooks/comments/createCommentHooks.d.ts.map +1 -1
  1122. package/dist/core/hooks/comments/createCommentHooks.js +1 -1
  1123. package/dist/core/hooks/comments/createCommentHooks.js.map +1 -1
  1124. package/dist/core/hooks/files/createFileHooks.d.ts +1 -1
  1125. package/dist/core/hooks/files/createFileHooks.d.ts.map +1 -1
  1126. package/dist/core/hooks/files/createFileHooks.js.map +1 -1
  1127. package/dist/core/hooks/files/files.d.ts.map +1 -1
  1128. package/dist/core/hooks/files/files.js +1 -1
  1129. package/dist/core/hooks/files/files.js.map +1 -1
  1130. package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts +1 -1
  1131. package/dist/core/hooks/infrastructures/createInfrastructureHooks.d.ts.map +1 -1
  1132. package/dist/core/hooks/infrastructures/createInfrastructureHooks.js.map +1 -1
  1133. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts +1 -1
  1134. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.d.ts.map +1 -1
  1135. package/dist/core/hooks/openDataPortals/createOpenDataPortalHooks.js.map +1 -1
  1136. package/dist/core/hooks/organizations/createOrganizationHooks.d.ts +1 -1
  1137. package/dist/core/hooks/organizations/createOrganizationHooks.d.ts.map +1 -1
  1138. package/dist/core/hooks/organizations/createOrganizationHooks.js.map +1 -1
  1139. package/dist/core/hooks/provider.d.ts +5 -5
  1140. package/dist/core/hooks/provider.d.ts.map +1 -1
  1141. package/dist/core/hooks/provider.js +4 -4
  1142. package/dist/core/hooks/provider.js.map +1 -1
  1143. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts +1 -1
  1144. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.d.ts.map +1 -1
  1145. package/dist/core/hooks/sensorTypes/createSensorTypeHooks.js.map +1 -1
  1146. package/dist/core/hooks/sensors/createSensorHooks.d.ts +1 -1
  1147. package/dist/core/hooks/sensors/createSensorHooks.d.ts.map +1 -1
  1148. package/dist/core/hooks/sensors/createSensorHooks.js +1 -1
  1149. package/dist/core/hooks/sensors/createSensorHooks.js.map +1 -1
  1150. package/dist/core/hooks/sites/createSiteHooks.d.ts +1 -1
  1151. package/dist/core/hooks/sites/createSiteHooks.d.ts.map +1 -1
  1152. package/dist/core/hooks/sites/createSiteHooks.js.map +1 -1
  1153. package/dist/core/hooks/sites/sites.d.ts.map +1 -1
  1154. package/dist/core/hooks/useCaptureScreenshot.d.ts.map +1 -1
  1155. package/dist/core/hooks/useCaptureScreenshot.js.map +1 -1
  1156. package/dist/core/hooks/useCurrentViewerPosition.d.ts.map +1 -1
  1157. package/dist/core/hooks/useCurrentViewerPosition.js +1 -1
  1158. package/dist/core/hooks/useCurrentViewerPosition.js.map +1 -1
  1159. package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts +1 -1
  1160. package/dist/core/hooks/useGeocodingRuntimeConfig.d.ts.map +1 -1
  1161. package/dist/core/hooks/useGeocodingRuntimeConfig.js.map +1 -1
  1162. package/dist/core/hooks/useShareUrl.d.ts.map +1 -1
  1163. package/dist/core/hooks/useShareUrl.js +1 -1
  1164. package/dist/core/hooks/useShareUrl.js.map +1 -1
  1165. package/dist/core/hooks/users/createUserHooks.d.ts +1 -1
  1166. package/dist/core/hooks/users/createUserHooks.d.ts.map +1 -1
  1167. package/dist/core/hooks/users/createUserHooks.js.map +1 -1
  1168. package/dist/core/i18n/index.d.ts +8 -0
  1169. package/dist/core/i18n/index.d.ts.map +1 -0
  1170. package/dist/core/i18n/index.js +8 -0
  1171. package/dist/core/i18n/index.js.map +1 -0
  1172. package/dist/core/i18n/messages/en.json +1873 -0
  1173. package/dist/core/i18n/messages/es.json +1870 -0
  1174. package/dist/core/i18n/messages/fr.json +1870 -0
  1175. package/dist/core/plugins/host/context.d.ts +1 -1
  1176. package/dist/core/plugins/host/context.d.ts.map +1 -1
  1177. package/dist/core/plugins/host/context.js.map +1 -1
  1178. package/dist/core/plugins/host/host.d.ts +1 -1
  1179. package/dist/core/plugins/host/host.d.ts.map +1 -1
  1180. package/dist/core/plugins/host/host.js.map +1 -1
  1181. package/dist/core/plugins/host/provider.d.ts.map +1 -1
  1182. package/dist/core/plugins/host/provider.js +2 -2
  1183. package/dist/core/plugins/host/provider.js.map +1 -1
  1184. package/dist/core/store/AppConfig/context.d.ts +1 -1
  1185. package/dist/core/store/AppConfig/context.d.ts.map +1 -1
  1186. package/dist/core/store/AppConfig/context.js.map +1 -1
  1187. package/dist/core/store/AppConfig/reducer.d.ts +2 -2
  1188. package/dist/core/store/AppConfig/reducer.d.ts.map +1 -1
  1189. package/dist/core/store/AppConfig/reducer.js.map +1 -1
  1190. package/dist/core/store/BIM/context.d.ts +1 -1
  1191. package/dist/core/store/BIM/context.d.ts.map +1 -1
  1192. package/dist/core/store/BIM/context.js.map +1 -1
  1193. package/dist/core/store/BIM/reducer.d.ts +3 -3
  1194. package/dist/core/store/BIM/reducer.d.ts.map +1 -1
  1195. package/dist/core/store/BIM/reducer.js.map +1 -1
  1196. package/dist/core/store/Buildings/context.d.ts +1 -1
  1197. package/dist/core/store/Buildings/context.d.ts.map +1 -1
  1198. package/dist/core/store/Buildings/context.js.map +1 -1
  1199. package/dist/core/store/Buildings/reducer.d.ts +2 -2
  1200. package/dist/core/store/Buildings/reducer.d.ts.map +1 -1
  1201. package/dist/core/store/Buildings/reducer.js.map +1 -1
  1202. package/dist/core/store/CombineProviders.d.ts.map +1 -1
  1203. package/dist/core/store/CombineProviders.js +7 -7
  1204. package/dist/core/store/CombineProviders.js.map +1 -1
  1205. package/dist/core/store/Content/context.d.ts +1 -1
  1206. package/dist/core/store/Content/context.d.ts.map +1 -1
  1207. package/dist/core/store/Content/context.js.map +1 -1
  1208. package/dist/core/store/Datasets/context.d.ts +1 -1
  1209. package/dist/core/store/Datasets/context.d.ts.map +1 -1
  1210. package/dist/core/store/Datasets/context.js.map +1 -1
  1211. package/dist/core/store/Datasets/reducer.d.ts +1 -1
  1212. package/dist/core/store/Datasets/reducer.d.ts.map +1 -1
  1213. package/dist/core/store/Datasets/reducer.js.map +1 -1
  1214. package/dist/core/store/Files/context.d.ts +1 -1
  1215. package/dist/core/store/Files/context.d.ts.map +1 -1
  1216. package/dist/core/store/Files/context.js.map +1 -1
  1217. package/dist/core/store/Files/reducer.d.ts +3 -3
  1218. package/dist/core/store/Files/reducer.d.ts.map +1 -1
  1219. package/dist/core/store/Files/reducer.js.map +1 -1
  1220. package/dist/core/store/Map/context.d.ts +1 -1
  1221. package/dist/core/store/Map/context.d.ts.map +1 -1
  1222. package/dist/core/store/Map/context.js +1 -1
  1223. package/dist/core/store/Map/context.js.map +1 -1
  1224. package/dist/core/store/Map/reducer.d.ts +6 -5
  1225. package/dist/core/store/Map/reducer.d.ts.map +1 -1
  1226. package/dist/core/store/Map/reducer.js.map +1 -1
  1227. package/dist/core/store/MapSites/context.d.ts +1 -1
  1228. package/dist/core/store/MapSites/context.d.ts.map +1 -1
  1229. package/dist/core/store/MapSites/context.js.map +1 -1
  1230. package/dist/core/store/MapSites/reducer.d.ts +1 -1
  1231. package/dist/core/store/MapSites/reducer.d.ts.map +1 -1
  1232. package/dist/core/store/MapSites/reducer.js.map +1 -1
  1233. package/dist/core/store/Menus/context.d.ts +1 -1
  1234. package/dist/core/store/Menus/context.d.ts.map +1 -1
  1235. package/dist/core/store/Menus/context.js +2 -2
  1236. package/dist/core/store/Menus/context.js.map +1 -1
  1237. package/dist/core/store/Menus/reducer.d.ts +1 -1
  1238. package/dist/core/store/Menus/reducer.d.ts.map +1 -1
  1239. package/dist/core/store/Menus/reducer.js.map +1 -1
  1240. package/dist/core/store/Permissions/context.d.ts +1 -1
  1241. package/dist/core/store/Permissions/context.d.ts.map +1 -1
  1242. package/dist/core/store/Permissions/context.js +2 -2
  1243. package/dist/core/store/Permissions/context.js.map +1 -1
  1244. package/dist/core/store/PointCloud/context.d.ts +1 -1
  1245. package/dist/core/store/PointCloud/context.d.ts.map +1 -1
  1246. package/dist/core/store/PointCloud/context.js.map +1 -1
  1247. package/dist/core/store/PointCloud/reducer.d.ts +1 -1
  1248. package/dist/core/store/PointCloud/reducer.d.ts.map +1 -1
  1249. package/dist/core/store/PointCloud/reducer.js.map +1 -1
  1250. package/dist/core/store/Tools/context.d.ts +1 -1
  1251. package/dist/core/store/Tools/context.d.ts.map +1 -1
  1252. package/dist/core/store/Tools/context.js.map +1 -1
  1253. package/dist/core/store/Tools/reducer.d.ts +1 -1
  1254. package/dist/core/store/Tools/reducer.d.ts.map +1 -1
  1255. package/dist/core/store/Tools/reducer.js.map +1 -1
  1256. package/dist/core/styles/globals.css +17 -16
  1257. package/dist/core/styles/tailwindMerge.d.ts +1 -1
  1258. package/dist/core/styles/tailwindMerge.d.ts.map +1 -1
  1259. package/dist/core/styles/tailwindMerge.js.map +1 -1
  1260. package/dist/core/types/datasetTypes.d.ts +2 -2
  1261. package/dist/core/types/datasetTypes.d.ts.map +1 -1
  1262. package/dist/core/types/dbTypes.d.ts +1 -1
  1263. package/dist/core/types/dbTypes.d.ts.map +1 -1
  1264. package/dist/core/types/dbTypes.js.map +1 -1
  1265. package/dist/core/types/files.d.ts +2 -2
  1266. package/dist/core/types/files.d.ts.map +1 -1
  1267. package/dist/core/types/global.d.ts +3 -3
  1268. package/dist/core/types/global.d.ts.map +1 -1
  1269. package/dist/core/types/global.js.map +1 -1
  1270. package/dist/core/types/map.d.ts +2 -2
  1271. package/dist/core/types/map.d.ts.map +1 -1
  1272. package/dist/core/types/tools.d.ts +3 -3
  1273. package/dist/core/types/tools.d.ts.map +1 -1
  1274. package/dist/core/types/users.d.ts +2 -2
  1275. package/dist/core/types/users.d.ts.map +1 -1
  1276. package/dist/core/utils/getFileIcon.d.ts +1 -1
  1277. package/dist/core/utils/getFileIcon.d.ts.map +1 -1
  1278. package/dist/core/utils/getFileIcon.js.map +1 -1
  1279. package/dist/core/utils/memcache.js.map +1 -1
  1280. package/dist/core/utils/roles.d.ts.map +1 -1
  1281. package/dist/core/utils/roles.js.map +1 -1
  1282. package/dist/core/utils/timeUtils.js.map +1 -1
  1283. package/dist/core/utils/utils.d.ts +1 -1
  1284. package/dist/core/utils/utils.d.ts.map +1 -1
  1285. package/dist/core/utils/utils.js.map +1 -1
  1286. package/package.json +13 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/components/viewers/Viewer.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\n// Dependencies\r\nimport * as React from 'react'\r\nimport dynamic from 'next/dynamic'\r\nimport { Loader2 } from 'lucide-react'\r\nimport { useSearchParams, useRouter, usePathname } from 'next/navigation'\r\nimport { ViewerNames } from '../../types'\r\nimport { BuildingsContext, MenusContext } from '../../store'\r\nimport { MapViewer } from './map/MapViewer'\r\n// Deep file import (not the ui barrel): the barrel re-exports heavy modules\r\n// (InfoSidebar, useFileUploadHandler, …) that would land in the eager map-route bundle.\r\nimport { SidebarTrigger } from '../ui/Sidebar'\r\nimport { UserSettings } from '../settings'\r\nimport { Toolbar } from '../Toolbar'\r\nimport { switchLanguage } from '../../utils/utils'\r\nimport { Organization } from '../../types/dbTypes'\r\n\r\n// Code-split the heavy viewers: BimViewer pulls in ~456 KB gzipped of\r\n// @thatopen/*, PointCloudViewer the Potree loader stack — loaded only when\r\n// selected, so map-only sessions never pay their cost. MapViewer stays static\r\n// because every user lands on it.\r\nconst BimViewer = dynamic(\r\n () => import('./bim/BimViewer').then(m => ({ default: m.BimViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading BIM viewer…\" /> },\r\n)\r\nconst PointCloudViewer = dynamic(\r\n () => import('./pointcloud/PointCloudViewer').then(m => ({ default: m.PointCloudViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading point cloud viewer…\" /> },\r\n)\r\n\r\n// DataMenu transitively imports BimViewer (via FilePreview), so keep it lazy\r\n// too — a static import would pull @thatopen + three/webgpu back into the eager\r\n// bundle. Only rendered for the data viewers, so map-only sessions skip it.\r\nconst DataMenu = dynamic(\r\n () => import('./Data/DataMenu').then(m => ({ default: m.DataMenu })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading data…\" /> },\r\n)\r\n\r\n// Styled to match the in-viewer loading card (see BimLoadingState): a soft\r\n// backdrop-blurred overlay with a bordered card, spinner + label. Uses only\r\n// Tailwind tokens + one lucide icon, so it adds no meaningful weight to the\r\n// eager map-route bundle (Viewer.tsx is statically imported).\r\nfunction ViewerLoadingFallback({ label }: { label: string }) {\r\n return (\r\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-background/50 backdrop-blur-[1px]\">\r\n <div className=\"flex items-center gap-3 rounded-md border border-border bg-card px-5 py-4 shadow-sm\">\r\n <Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\r\n <span className=\"text-foreground text-base font-medium font-['Inter'] leading-7\">{label}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\ninterface ViewerProps {\r\n organization: Organization\r\n minioBaseUrl?: string\r\n martinBaseUrl?: string\r\n pointcloudApiUrl?: string\r\n maptilerKey?: string\r\n geocodeEarthApiKey?: string\r\n geocoderUrl?: string\r\n}\r\n\r\nexport function Viewer({ organization, minioBaseUrl, martinBaseUrl, pointcloudApiUrl, maptilerKey, geocodeEarthApiKey, geocoderUrl }: ViewerProps) {\r\n\r\n const searchParams = useSearchParams()\r\n const viewer = (searchParams.get('viewer') as ViewerNames) || ViewerNames.map\r\n\r\n const { dispatch: menusDispatch, state: menusState } = React.useContext(MenusContext)\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n // const { dispatch: appConfigDispatch } = React.useContext(AppConfigContext)\r\n const { building } = buildingState.buildings\r\n const { currentViewer } = menusState.menus\r\n const router = useRouter()\r\n const pathname = usePathname()\r\n const [isMounted, setIsMounted] = React.useState(false)\r\n\r\n // Use a ref to track if we're currently updating -> prevent circular updates\r\n const isUpdatingRef = React.useRef(false)\r\n\r\n const { appContent } = organization\r\n\r\n // Check if viewer is valid based on appContent\r\n const isViewerValid = appContent.length === 0 || appContent.includes(viewer)\r\n \r\n // Use default viewer (map) if current viewer is not valid\r\n const validViewer = isViewerValid ? viewer : ViewerNames.map\r\n\r\n // Update URL if viewer was not available for the organization\r\n React.useEffect(() => {\r\n if (isMounted && !isViewerValid && viewer !== ViewerNames.map) {\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.delete('viewer')\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n }\r\n }, [isMounted, isViewerValid, viewer, searchParams, pathname, router, building?.id])\r\n\r\n // On first mount, respond to URL\r\n React.useEffect(() => {\r\n if (!isMounted) {\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n setIsMounted(true)\r\n }\r\n }, [isMounted, validViewer, menusDispatch])\r\n\r\n React.useEffect(() => {\r\n if (!organization) return\r\n const defaultLanguage = organization.languages?.[0] || 'En'\r\n if (defaultLanguage) switchLanguage(defaultLanguage)\r\n }, [organization])\r\n\r\n // Handle context changes (from sidebar, HeaderButtons, etc.)\r\n React.useEffect(() => {\r\n if (!isMounted || !currentViewer || currentViewer === validViewer || isUpdatingRef.current) {\r\n return\r\n }\r\n\r\n isUpdatingRef.current = true\r\n\r\n // Create URLSearchParams to preserve existing search params\r\n\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.set('viewer', currentViewer)\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n\r\n\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n\r\n // Reset the flag after a brief delay to allow the navigation to complete\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }, [currentViewer, isMounted, pathname, router, viewer, searchParams])\r\n\r\n // Handle URL changes (direct navigation)\r\n React.useEffect(() => {\r\n if (isMounted && currentViewer !== validViewer && !isUpdatingRef.current) {\r\n isUpdatingRef.current = true\r\n\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n\r\n // Reset the flag after a brief delay\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }\r\n }, [validViewer, menusDispatch, isMounted, currentViewer])\r\n\r\n const selectedViewer = (\r\n <>\r\n {[ViewerNames.map, ViewerNames.bim, ViewerNames.pointcloud].includes(validViewer) && <SidebarTrigger />}\r\n <div style={{ height: '100%', width: '100%', position: 'relative' }}>\r\n <div style={{ display: validViewer === ViewerNames.map ? 'block' : 'none', width: '100%', height: '100%' }}>\r\n <MapViewer organization={organization} minioBaseUrl={minioBaseUrl} maptilerKey={maptilerKey} />\r\n </div>\r\n {validViewer === ViewerNames.bim && <BimViewer />}\r\n {validViewer === ViewerNames.pointcloud && <PointCloudViewer pointcloudApiUrl={pointcloudApiUrl} />}\r\n {[ViewerNames.buildings, ViewerNames.sites, ViewerNames.files, ViewerNames.land, ViewerNames.infrastructure, ViewerNames.extensions, ViewerNames.users].includes(validViewer) && (\r\n <DataMenu currentViewer={validViewer} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n )}\r\n {[ViewerNames.settings].includes(validViewer) && (\r\n <UserSettings minioBaseUrl={minioBaseUrl} />\r\n )}\r\n </div>\r\n </>\r\n )\r\n\r\n return (\r\n <>\r\n {selectedViewer}\r\n <Toolbar viewer={validViewer} minioBaseUrl={minioBaseUrl} martinBaseUrl={martinBaseUrl} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n </>\r\n )\r\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/components/viewers/Viewer.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\n// Dependencies\r\nimport { Loader2 } from 'lucide-react'\r\nimport dynamic from 'next/dynamic'\r\nimport { useSearchParams, useRouter, usePathname } from 'next/navigation'\r\nimport * as React from 'react'\r\n\r\nimport { BuildingsContext, MenusContext } from '../../store'\r\nimport { ViewerNames } from '../../types'\r\n\r\n// Deep file import (not the ui barrel): the barrel re-exports heavy modules\r\n// (InfoSidebar, useFileUploadHandler, …) that would land in the eager map-route bundle.\r\nimport { switchLanguage } from '../../utils/utils'\r\nimport { UserSettings } from '../settings'\r\nimport { Toolbar } from '../Toolbar'\r\nimport { SidebarTrigger } from '../ui/Sidebar'\r\n\r\nimport { MapViewer } from './map/MapViewer'\r\n\r\nimport type { Organization } from '../../types/dbTypes'\r\n\r\n// Code-split the heavy viewers: BimViewer pulls in ~456 KB gzipped of\r\n// @thatopen/*, PointCloudViewer the Potree loader stack — loaded only when\r\n// selected, so map-only sessions never pay their cost. MapViewer stays static\r\n// because every user lands on it.\r\nconst BimViewer = dynamic(\r\n () => import('./bim/BimViewer').then(m => ({ default: m.BimViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading BIM viewer…\" /> },\r\n)\r\nconst PointCloudViewer = dynamic(\r\n () => import('./pointcloud/PointCloudViewer').then(m => ({ default: m.PointCloudViewer })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading point cloud viewer…\" /> },\r\n)\r\n\r\n// DataMenu transitively imports BimViewer (via FilePreview), so keep it lazy\r\n// too — a static import would pull @thatopen + three/webgpu back into the eager\r\n// bundle. Only rendered for the data viewers, so map-only sessions skip it.\r\nconst DataMenu = dynamic(\r\n () => import('./Data/DataMenu').then(m => ({ default: m.DataMenu })),\r\n { ssr: false, loading: () => <ViewerLoadingFallback label=\"Loading data…\" /> },\r\n)\r\n\r\n// Styled to match the in-viewer loading card (see BimLoadingState): a soft\r\n// backdrop-blurred overlay with a bordered card, spinner + label. Uses only\r\n// Tailwind tokens + one lucide icon, so it adds no meaningful weight to the\r\n// eager map-route bundle (Viewer.tsx is statically imported).\r\nfunction ViewerLoadingFallback({ label }: { label: string }) {\r\n return (\r\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-background/50 backdrop-blur-[1px]\">\r\n <div className=\"flex items-center gap-3 rounded-md border border-border bg-card px-5 py-4 shadow-sm\">\r\n <Loader2 className=\"h-5 w-5 animate-spin text-muted-foreground\" />\r\n <span className=\"text-foreground text-base font-medium font-['Inter'] leading-7\">{label}</span>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\ninterface ViewerProps {\r\n organization: Organization\r\n minioBaseUrl?: string\r\n martinBaseUrl?: string\r\n pointcloudApiUrl?: string\r\n maptilerKey?: string\r\n geocodeEarthApiKey?: string\r\n geocoderUrl?: string\r\n}\r\n\r\nexport function Viewer({ organization, minioBaseUrl, martinBaseUrl, pointcloudApiUrl, maptilerKey, geocodeEarthApiKey, geocoderUrl }: ViewerProps) {\r\n\r\n const searchParams = useSearchParams()\r\n const viewer = (searchParams.get('viewer') as ViewerNames) || ViewerNames.map\r\n\r\n const { dispatch: menusDispatch, state: menusState } = React.useContext(MenusContext)\r\n const { state: buildingState } = React.useContext(BuildingsContext)\r\n // const { dispatch: appConfigDispatch } = React.useContext(AppConfigContext)\r\n const { building } = buildingState.buildings\r\n const { currentViewer } = menusState.menus\r\n const router = useRouter()\r\n const pathname = usePathname()\r\n const [isMounted, setIsMounted] = React.useState(false)\r\n\r\n // Use a ref to track if we're currently updating -> prevent circular updates\r\n const isUpdatingRef = React.useRef(false)\r\n\r\n const { appContent } = organization\r\n\r\n // Check if viewer is valid based on appContent\r\n const isViewerValid = appContent.length === 0 || appContent.includes(viewer)\r\n\r\n // Use default viewer (map) if current viewer is not valid\r\n const validViewer = isViewerValid ? viewer : ViewerNames.map\r\n\r\n // Update URL if viewer was not available for the organization\r\n React.useEffect(() => {\r\n if (isMounted && !isViewerValid && viewer !== ViewerNames.map) {\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.delete('viewer')\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n }\r\n }, [isMounted, isViewerValid, viewer, searchParams, pathname, router, building?.id])\r\n\r\n // On first mount, respond to URL\r\n React.useEffect(() => {\r\n if (!isMounted) {\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n setIsMounted(true)\r\n }\r\n }, [isMounted, validViewer, menusDispatch])\r\n\r\n React.useEffect(() => {\r\n if (!organization) return\r\n const defaultLanguage = organization.languages?.[0] || 'En'\r\n if (defaultLanguage) switchLanguage(defaultLanguage)\r\n }, [organization])\r\n\r\n // Handle context changes (from sidebar, HeaderButtons, etc.)\r\n React.useEffect(() => {\r\n if (!isMounted || !currentViewer || currentViewer === validViewer || isUpdatingRef.current) {\r\n return\r\n }\r\n\r\n isUpdatingRef.current = true\r\n\r\n // Create URLSearchParams to preserve existing search params\r\n\r\n const newSearchParams = new URLSearchParams(searchParams.toString())\r\n newSearchParams.set('viewer', currentViewer)\r\n if (building?.id) {\r\n newSearchParams.set('buildingId', String(building.id))\r\n }\r\n\r\n\r\n router.replace(`${pathname}?${newSearchParams.toString()}`, { scroll: false })\r\n\r\n // Reset the flag after a brief delay to allow the navigation to complete\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }, [currentViewer, isMounted, pathname, router, viewer, searchParams])\r\n\r\n // Handle URL changes (direct navigation)\r\n React.useEffect(() => {\r\n if (isMounted && currentViewer !== validViewer && !isUpdatingRef.current) {\r\n isUpdatingRef.current = true\r\n\r\n menusDispatch({\r\n type: 'SET_VIEWER',\r\n payload: { currentViewer: validViewer },\r\n })\r\n\r\n // Reset the flag after a brief delay\r\n setTimeout(() => {\r\n isUpdatingRef.current = false\r\n }, 100)\r\n }\r\n }, [validViewer, menusDispatch, isMounted, currentViewer])\r\n\r\n const selectedViewer = (\r\n <>\r\n {[ViewerNames.map, ViewerNames.bim, ViewerNames.pointcloud].includes(validViewer) && <SidebarTrigger />}\r\n <div style={{ height: '100%', width: '100%', position: 'relative' }}>\r\n <div style={{ display: validViewer === ViewerNames.map ? 'block' : 'none', width: '100%', height: '100%' }}>\r\n <MapViewer organization={organization} minioBaseUrl={minioBaseUrl} maptilerKey={maptilerKey} />\r\n </div>\r\n {validViewer === ViewerNames.bim && <BimViewer />}\r\n {validViewer === ViewerNames.pointcloud && <PointCloudViewer pointcloudApiUrl={pointcloudApiUrl} />}\r\n {[ViewerNames.buildings, ViewerNames.sites, ViewerNames.files, ViewerNames.land, ViewerNames.infrastructure, ViewerNames.extensions, ViewerNames.users].includes(validViewer) && (\r\n <DataMenu currentViewer={validViewer} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n )}\r\n {[ViewerNames.settings].includes(validViewer) && (\r\n <UserSettings minioBaseUrl={minioBaseUrl} />\r\n )}\r\n </div>\r\n </>\r\n )\r\n\r\n return (\r\n <>\r\n {selectedViewer}\r\n <Toolbar viewer={validViewer} minioBaseUrl={minioBaseUrl} martinBaseUrl={martinBaseUrl} organization={organization} geocodeEarthApiKey={geocodeEarthApiKey} geocoderUrl={geocoderUrl} />\r\n </>\r\n )\r\n}"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BimToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimToolbar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,wBAAgB,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,qBAErE"}
1
+ {"version":3,"file":"BimToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimToolbar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,wBAAgB,UAAU,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,qBAErE"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { bimToolbarTools } from "./src/tools/bimToolbar";
4
3
  import { ToolbarBody } from "../../ToolbarBody";
4
+ import { bimToolbarTools } from "./src/tools/bimToolbar";
5
5
  function BimToolbar({ minioBaseUrl }) {
6
6
  return /* @__PURE__ */ jsx(ToolbarBody, { viewer: "bim", tools: bimToolbarTools({ minioBaseUrl }) });
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimToolbar.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 { bimToolbarTools } from './src/tools/bimToolbar'\r\nimport { ToolbarBody } from '../../ToolbarBody'\r\n\r\nexport function BimToolbar({ minioBaseUrl }: { minioBaseUrl?: string }) {\r\n return <ToolbarBody viewer=\"bim\" tools={bimToolbarTools({ minioBaseUrl })} />\r\n}\r\n"],"mappings":";AAUS;AAJT,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAErB,SAAS,WAAW,EAAE,aAAa,GAA8B;AACtE,SAAO,oBAAC,eAAY,QAAO,OAAM,OAAO,gBAAgB,EAAE,aAAa,CAAC,GAAG;AAC7E;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimToolbar.tsx"],"sourcesContent":["'use client'\r\n\r\n// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as React from 'react'\r\n\r\nimport { ToolbarBody } from '../../ToolbarBody'\r\n\r\nimport { bimToolbarTools } from './src/tools/bimToolbar'\r\n\r\nexport function BimToolbar({ minioBaseUrl }: { minioBaseUrl?: string }) {\r\n return <ToolbarBody viewer=\"bim\" tools={bimToolbarTools({ minioBaseUrl })} />\r\n}\r\n"],"mappings":";AAYS;AALT,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAEzB,SAAS,WAAW,EAAE,aAAa,GAA8B;AACtE,SAAO,oBAAC,eAAY,QAAO,OAAM,OAAO,gBAAgB,EAAE,aAAa,CAAC,GAAG;AAC7E;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BimViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimViewer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAmB/B,wBAAgB,SAAS,sBA2PxB"}
1
+ {"version":3,"file":"BimViewer.d.ts","sourceRoot":"","sources":["../../../../../src/core/components/viewers/bim/BimViewer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,wBAAgB,SAAS,sBA2PxB"}
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
3
  import * as OBC from "@thatopen/components";
5
4
  import * as OBF from "@thatopen/components-front";
6
- import * as THREE from "three";
7
5
  import { useTranslations, useLocale } from "next-intl";
6
+ import * as React from "react";
7
+ import * as THREE from "three";
8
8
  import { ToolsContext, BimContext, MenusContext } from "../../../store";
9
- import { CurrentWorld } from "./src/CurrentWorld";
9
+ import { useBimCoordinateSystem } from "../useCoordinateSystem";
10
+ import { BimLoadingState } from "./src/BimLoadingState";
10
11
  import { CurrentCamera } from "./src/CurrentCamera";
11
- import { Highlighter } from "./src/Highlighter";
12
- import { FloorplanTool } from "./src/FloorplanTool";
12
+ import { CurrentWorld } from "./src/CurrentWorld";
13
13
  import { ElevationsTool } from "./src/ElevationsTool";
14
+ import { FloorplanTool } from "./src/FloorplanTool";
15
+ import { Highlighter } from "./src/Highlighter";
14
16
  import { ViewModeCoordinator } from "./src/lib/ViewModeCoordinator";
15
17
  import { PropertiesMenu } from "./src/propertiesMenu";
16
- import { BimLoadingState } from "./src/BimLoadingState";
17
18
  import { ViewportGizmo } from "./src/ViewportGizmo";
18
- import { useBimCoordinateSystem } from "../useCoordinateSystem";
19
19
  function BimViewer() {
20
20
  var _a, _b, _c;
21
21
  const t = useTranslations("ViewportGizmo");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimViewer.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 * as OBF from \"@thatopen/components-front\"\r\nimport * as THREE from \"three\";\r\nimport { useTranslations, useLocale } from 'next-intl';\r\nimport { ToolsContext, BimContext, MenusContext } from \"../../../store\";\r\n\r\nimport { CurrentWorld } from \"./src/CurrentWorld\";\r\nimport { CurrentCamera } from './src/CurrentCamera';\r\nimport { Highlighter } from \"./src/Highlighter\";\r\nimport { FloorplanTool } from \"./src/FloorplanTool\";\r\nimport { ElevationsTool } from \"./src/ElevationsTool\";\r\nimport { ViewModeCoordinator } from \"./src/lib/ViewModeCoordinator\";\r\n\r\nimport { PropertiesMenu } from \"./src/propertiesMenu\";\r\nimport { BimLoadingState } from \"./src/BimLoadingState\";\r\nimport { ViewportGizmo } from \"./src/ViewportGizmo\";\r\nimport { useBimCoordinateSystem } from \"../useCoordinateSystem\";\r\n\r\nexport function BimViewer() {\r\n\r\n const t = useTranslations('ViewportGizmo');\r\n const locale = useLocale();\r\n\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext);\r\n const { bimComponents } = bimState.bim;\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext);\r\n const { currentToolId } = toolsState.tools;\r\n\r\n const { state: menusState } = React.useContext(MenusContext);\r\n const { currentViewer } = menusState.menus;\r\n \r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const workerUrlRef = React.useRef<string | null>(null);\r\n const resizeObserverRef = React.useRef<ResizeObserver | null>(null);\r\n // Tracks the Components instance THIS mount created, so cleanup disposes the\r\n // real one and the create-guard can't be defeated by a stale [] closure.\r\n const componentsRef = React.useRef<OBC.Components | null>(null);\r\n\r\n const createViewer = React.useCallback(\r\n async (isCancelled: () => boolean) => {\r\n // Re-entrancy guard keyed to the ref we actually set — NOT the stale\r\n // `bimComponents` from this useCallback's [] closure (always null on\r\n // first run, so it could never stop a second init). Without this,\r\n // React StrictMode (dev) and rapid viewer remounts (prod) build a\r\n // second Components + PostproductionRenderer — a second <canvas> —\r\n // and whichever instance wins the SET_COMPONENTS race may be the one\r\n // whose canvas was detached on remount. Models then load into a scene\r\n // that is never painted: the spatial tree builds (metadata) but no\r\n // geometry shows and floorplan nav drives the dead world's camera.\r\n if (!containerRef.current || componentsRef.current) return;\r\n\r\n const container = containerRef.current;\r\n const components = new OBC.Components();\r\n const worlds = components.get(OBC.Worlds);\r\n const world = worlds.create<\r\n OBC.ShadowedScene,\r\n OBC.OrthoPerspectiveCamera,\r\n OBF.PostproductionRenderer\r\n >();\r\n\r\n world.scene = new OBC.ShadowedScene(components);\r\n\r\n world.renderer = new OBF.PostproductionRenderer(components, container);\r\n world.camera = new OBC.OrthoPerspectiveCamera(components);\r\n\r\n components.init();\r\n\r\n world.scene.setup();\r\n world.scene.three.background = null;\r\n\r\n const grids = components.get(OBC.Grids);\r\n const grid = grids.create(world);\r\n\r\n if (grid) {\r\n bimDispatch({\r\n \"type\": \"SET_GRID\",\r\n \"payload\": { grid }\r\n });\r\n }\r\n\r\n const axesHelper = new THREE.AxesHelper(5);\r\n world.scene.three.add(axesHelper);\r\n\r\n const fragments = components.get(OBC.FragmentsManager);\r\n\r\n const githubUrl =\r\n \"https://thatopen.github.io/engine_fragment/resources/worker.mjs\";\r\n const fetchedUrl = await fetch(githubUrl);\r\n const workerBlob = await fetchedUrl.blob();\r\n const workerFile = new File([workerBlob], \"worker.mjs\", {\r\n type: \"text/javascript\",\r\n });\r\n const workerUrl = URL.createObjectURL(workerFile);\r\n workerUrlRef.current = workerUrl; // Store reference for cleanup\r\n fragments.init(workerUrl);\r\n\r\n world.camera.controls.addEventListener(\"control\", () =>\r\n fragments.core.update(),\r\n );\r\n\r\n world.camera.controls.restThreshold = 0.005;\r\n world.camera.controls.addEventListener(\"rest\", () =>\r\n fragments.core.update(true)\r\n );\r\n\r\n components.get(CurrentWorld).world = world;\r\n components.get(CurrentCamera).camera = world.camera;\r\n components.get(Highlighter);\r\n components.get(ViewModeCoordinator);\r\n components.get(FloorplanTool);\r\n components.get(ElevationsTool);\r\n\r\n // Grid injection is safe here — fragments.core is initialized.\r\n if (grid) {\r\n components.get(FloorplanTool).setGrid(grid);\r\n components.get(ElevationsTool).setGrid(grid);\r\n }\r\n\r\n // Enable shadows\r\n world.renderer.three.shadowMap.enabled = true;\r\n world.renderer.three.shadowMap.type = THREE.PCFSoftShadowMap;\r\n world.scene.setup({\r\n shadows: {\r\n cascade: 1,\r\n resolution: 1024,\r\n },\r\n });\r\n\r\n world.scene.distanceRenderer.excludedObjects.add(grid.three);\r\n\r\n await world.scene.updateShadows();\r\n\r\n world.camera.controls.addEventListener(\"rest\", async () => {\r\n await world.scene.updateShadows();\r\n });\r\n\r\n world.scene.three.background = null;\r\n\r\n // If this init was superseded (StrictMode re-run) or the viewer\r\n // unmounted while we awaited the worker fetch / shadow update, throw\r\n // this instance away instead of publishing it. Prevents an orphaned\r\n // world (whose canvas is detached) from winning the store and starving\r\n // the visible canvas of geometry.\r\n if (isCancelled()) {\r\n components.dispose();\r\n return;\r\n }\r\n componentsRef.current = components;\r\n bimDispatch({\r\n type: \"SET_COMPONENTS\",\r\n payload: { bimComponents: components, world, fragments }\r\n });\r\n\r\n // Ensure canvas takes full container size\r\n const canvas = container.querySelector('canvas');\r\n if (canvas) {\r\n canvas.style.width = '100%';\r\n canvas.style.height = '100%';\r\n canvas.style.display = 'block';\r\n }\r\n\r\n // Handle resize using container dimensions\r\n const handleResize = () => {\r\n const width = container.clientWidth;\r\n const height = container.clientHeight;\r\n if (width && height) {\r\n world.renderer?.resize(new THREE.Vector2(width, height));\r\n }\r\n };\r\n \r\n // Initial resize\r\n handleResize();\r\n \r\n // Watch for container size changes using ResizeObserver. This\r\n // already covers the window-resize case: when the window resizes,\r\n // the flex layout reshapes this container, and ResizeObserver\r\n // fires.\r\n const resizeObserver = new ResizeObserver(() => {\r\n handleResize();\r\n });\r\n resizeObserver.observe(container);\r\n resizeObserverRef.current = resizeObserver;\r\n\r\n // The ResizeObserver above is sufficient for redraws. A window\r\n // 'resize' listener here previously leaked on every mount (no matching\r\n // removeEventListener), so it was removed.\r\n }, []\r\n );\r\n\r\n React.useEffect(() => {\r\n let cancelled = false;\r\n createViewer(() => cancelled);\r\n\r\n // Cleanup: mark this init cancelled (so an in-flight createViewer disposes\r\n // itself instead of publishing), and dispose the instance we actually\r\n // created (componentsRef). The old `if (bimComponents)` read the stale []\r\n // closure value (null at mount), so the real Components was never disposed\r\n // — leaking its renderer/canvas and letting orphans race the store.\r\n return () => {\r\n cancelled = true;\r\n if (resizeObserverRef.current) {\r\n resizeObserverRef.current.disconnect();\r\n }\r\n if (componentsRef.current) {\r\n componentsRef.current.dispose();\r\n componentsRef.current = null;\r\n }\r\n bimDispatch({\r\n type: \"DISPOSE-BIM\"\r\n });\r\n };\r\n }, []);\r\n\r\n // Enforce Y-up coordinate system for Three.js / camera-controls.\r\n // Runs whenever the world (and its controls) becomes available, and resets on unmount.\r\n useBimCoordinateSystem(bimState.bim.world?.camera?.controls ?? null);\r\n\r\n // Control ViewportGizmo based on current viewer\r\n React.useEffect(() => {\r\n if (!bimComponents) return;\r\n\r\n const viewportGizmo = bimComponents.get(ViewportGizmo);\r\n\r\n viewportGizmo.setLabels({\r\n top: t('top'),\r\n right: t('right'),\r\n bottom: t('bottom'),\r\n left: t('left'),\r\n front: t('front'),\r\n back: t('back')\r\n });\r\n\r\n if (!viewportGizmo) return;\r\n\r\n if (currentViewer === 'bim') {\r\n viewportGizmo.enabled = true;\r\n viewportGizmo.add();\r\n } else {\r\n viewportGizmo.enabled = false;\r\n viewportGizmo.remove();\r\n }\r\n }, [bimComponents, currentViewer, locale, t]);\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n overflow: \"hidden\"\r\n }}\r\n >\r\n <BimLoadingState />\r\n <div\r\n className=\"bim-container\"\r\n id=\"bim-viewer-container\"\r\n ref={containerRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"relative\",\r\n background: \"radial-gradient(circle, rgba(255, 255, 255, 1) 50%, rgba(220, 220, 220, 1) 100%)\",\r\n }}\r\n />\r\n <PropertiesMenu />\r\n </div>\r\n );\r\n}"],"mappings":"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","names":["_a"]}
1
+ {"version":3,"sources":["../../../../../src/core/components/viewers/bim/BimViewer.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 OBC from \"@thatopen/components\";\r\nimport * as OBF from \"@thatopen/components-front\"\r\nimport { useTranslations, useLocale } from 'next-intl';\r\nimport * as React from \"react\";\r\nimport * as THREE from \"three\";\r\n\r\nimport { ToolsContext, BimContext, MenusContext } from \"../../../store\";\r\nimport { useBimCoordinateSystem } from \"../useCoordinateSystem\";\r\n\r\nimport { BimLoadingState } from \"./src/BimLoadingState\";\r\nimport { CurrentCamera } from './src/CurrentCamera';\r\nimport { CurrentWorld } from \"./src/CurrentWorld\";\r\nimport { ElevationsTool } from \"./src/ElevationsTool\";\r\nimport { FloorplanTool } from \"./src/FloorplanTool\";\r\nimport { Highlighter } from \"./src/Highlighter\";\r\nimport { ViewModeCoordinator } from \"./src/lib/ViewModeCoordinator\";\r\nimport { PropertiesMenu } from \"./src/propertiesMenu\";\r\nimport { ViewportGizmo } from \"./src/ViewportGizmo\";\r\n\r\n\r\nexport function BimViewer() {\r\n\r\n const t = useTranslations('ViewportGizmo');\r\n const locale = useLocale();\r\n\r\n const { dispatch: bimDispatch, state: bimState } = React.useContext(BimContext);\r\n const { bimComponents } = bimState.bim;\r\n\r\n const { dispatch: toolsDispatch, state: toolsState } = React.useContext(ToolsContext);\r\n const { currentToolId } = toolsState.tools;\r\n\r\n const { state: menusState } = React.useContext(MenusContext);\r\n const { currentViewer } = menusState.menus;\r\n\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const workerUrlRef = React.useRef<string | null>(null);\r\n const resizeObserverRef = React.useRef<ResizeObserver | null>(null);\r\n // Tracks the Components instance THIS mount created, so cleanup disposes the\r\n // real one and the create-guard can't be defeated by a stale [] closure.\r\n const componentsRef = React.useRef<OBC.Components | null>(null);\r\n\r\n const createViewer = React.useCallback(\r\n async (isCancelled: () => boolean) => {\r\n // Re-entrancy guard keyed to the ref we actually set — NOT the stale\r\n // `bimComponents` from this useCallback's [] closure (always null on\r\n // first run, so it could never stop a second init). Without this,\r\n // React StrictMode (dev) and rapid viewer remounts (prod) build a\r\n // second Components + PostproductionRenderer — a second <canvas> —\r\n // and whichever instance wins the SET_COMPONENTS race may be the one\r\n // whose canvas was detached on remount. Models then load into a scene\r\n // that is never painted: the spatial tree builds (metadata) but no\r\n // geometry shows and floorplan nav drives the dead world's camera.\r\n if (!containerRef.current || componentsRef.current) return;\r\n\r\n const container = containerRef.current;\r\n const components = new OBC.Components();\r\n const worlds = components.get(OBC.Worlds);\r\n const world = worlds.create<\r\n OBC.ShadowedScene,\r\n OBC.OrthoPerspectiveCamera,\r\n OBF.PostproductionRenderer\r\n >();\r\n\r\n world.scene = new OBC.ShadowedScene(components);\r\n\r\n world.renderer = new OBF.PostproductionRenderer(components, container);\r\n world.camera = new OBC.OrthoPerspectiveCamera(components);\r\n\r\n components.init();\r\n\r\n world.scene.setup();\r\n world.scene.three.background = null;\r\n\r\n const grids = components.get(OBC.Grids);\r\n const grid = grids.create(world);\r\n\r\n if (grid) {\r\n bimDispatch({\r\n \"type\": \"SET_GRID\",\r\n \"payload\": { grid }\r\n });\r\n }\r\n\r\n const axesHelper = new THREE.AxesHelper(5);\r\n world.scene.three.add(axesHelper);\r\n\r\n const fragments = components.get(OBC.FragmentsManager);\r\n\r\n const githubUrl =\r\n \"https://thatopen.github.io/engine_fragment/resources/worker.mjs\";\r\n const fetchedUrl = await fetch(githubUrl);\r\n const workerBlob = await fetchedUrl.blob();\r\n const workerFile = new File([workerBlob], \"worker.mjs\", {\r\n type: \"text/javascript\",\r\n });\r\n const workerUrl = URL.createObjectURL(workerFile);\r\n workerUrlRef.current = workerUrl; // Store reference for cleanup\r\n fragments.init(workerUrl);\r\n\r\n world.camera.controls.addEventListener(\"control\", () =>\r\n fragments.core.update(),\r\n );\r\n\r\n world.camera.controls.restThreshold = 0.005;\r\n world.camera.controls.addEventListener(\"rest\", () =>\r\n fragments.core.update(true)\r\n );\r\n\r\n components.get(CurrentWorld).world = world;\r\n components.get(CurrentCamera).camera = world.camera;\r\n components.get(Highlighter);\r\n components.get(ViewModeCoordinator);\r\n components.get(FloorplanTool);\r\n components.get(ElevationsTool);\r\n\r\n // Grid injection is safe here — fragments.core is initialized.\r\n if (grid) {\r\n components.get(FloorplanTool).setGrid(grid);\r\n components.get(ElevationsTool).setGrid(grid);\r\n }\r\n\r\n // Enable shadows\r\n world.renderer.three.shadowMap.enabled = true;\r\n world.renderer.three.shadowMap.type = THREE.PCFSoftShadowMap;\r\n world.scene.setup({\r\n shadows: {\r\n cascade: 1,\r\n resolution: 1024,\r\n },\r\n });\r\n\r\n world.scene.distanceRenderer.excludedObjects.add(grid.three);\r\n\r\n await world.scene.updateShadows();\r\n\r\n world.camera.controls.addEventListener(\"rest\", async () => {\r\n await world.scene.updateShadows();\r\n });\r\n\r\n world.scene.three.background = null;\r\n\r\n // If this init was superseded (StrictMode re-run) or the viewer\r\n // unmounted while we awaited the worker fetch / shadow update, throw\r\n // this instance away instead of publishing it. Prevents an orphaned\r\n // world (whose canvas is detached) from winning the store and starving\r\n // the visible canvas of geometry.\r\n if (isCancelled()) {\r\n components.dispose();\r\n return;\r\n }\r\n componentsRef.current = components;\r\n bimDispatch({\r\n type: \"SET_COMPONENTS\",\r\n payload: { bimComponents: components, world, fragments }\r\n });\r\n\r\n // Ensure canvas takes full container size\r\n const canvas = container.querySelector('canvas');\r\n if (canvas) {\r\n canvas.style.width = '100%';\r\n canvas.style.height = '100%';\r\n canvas.style.display = 'block';\r\n }\r\n\r\n // Handle resize using container dimensions\r\n const handleResize = () => {\r\n const width = container.clientWidth;\r\n const height = container.clientHeight;\r\n if (width && height) {\r\n world.renderer?.resize(new THREE.Vector2(width, height));\r\n }\r\n };\r\n\r\n // Initial resize\r\n handleResize();\r\n\r\n // Watch for container size changes using ResizeObserver. This\r\n // already covers the window-resize case: when the window resizes,\r\n // the flex layout reshapes this container, and ResizeObserver\r\n // fires.\r\n const resizeObserver = new ResizeObserver(() => {\r\n handleResize();\r\n });\r\n resizeObserver.observe(container);\r\n resizeObserverRef.current = resizeObserver;\r\n\r\n // The ResizeObserver above is sufficient for redraws. A window\r\n // 'resize' listener here previously leaked on every mount (no matching\r\n // removeEventListener), so it was removed.\r\n }, []\r\n );\r\n\r\n React.useEffect(() => {\r\n let cancelled = false;\r\n createViewer(() => cancelled);\r\n\r\n // Cleanup: mark this init cancelled (so an in-flight createViewer disposes\r\n // itself instead of publishing), and dispose the instance we actually\r\n // created (componentsRef). The old `if (bimComponents)` read the stale []\r\n // closure value (null at mount), so the real Components was never disposed\r\n // — leaking its renderer/canvas and letting orphans race the store.\r\n return () => {\r\n cancelled = true;\r\n if (resizeObserverRef.current) {\r\n resizeObserverRef.current.disconnect();\r\n }\r\n if (componentsRef.current) {\r\n componentsRef.current.dispose();\r\n componentsRef.current = null;\r\n }\r\n bimDispatch({\r\n type: \"DISPOSE-BIM\"\r\n });\r\n };\r\n }, []);\r\n\r\n // Enforce Y-up coordinate system for Three.js / camera-controls.\r\n // Runs whenever the world (and its controls) becomes available, and resets on unmount.\r\n useBimCoordinateSystem(bimState.bim.world?.camera?.controls ?? null);\r\n\r\n // Control ViewportGizmo based on current viewer\r\n React.useEffect(() => {\r\n if (!bimComponents) return;\r\n\r\n const viewportGizmo = bimComponents.get(ViewportGizmo);\r\n\r\n viewportGizmo.setLabels({\r\n top: t('top'),\r\n right: t('right'),\r\n bottom: t('bottom'),\r\n left: t('left'),\r\n front: t('front'),\r\n back: t('back')\r\n });\r\n\r\n if (!viewportGizmo) return;\r\n\r\n if (currentViewer === 'bim') {\r\n viewportGizmo.enabled = true;\r\n viewportGizmo.add();\r\n } else {\r\n viewportGizmo.enabled = false;\r\n viewportGizmo.remove();\r\n }\r\n }, [bimComponents, currentViewer, locale, t]);\r\n\r\n return (\r\n <div\r\n style={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n overflow: \"hidden\"\r\n }}\r\n >\r\n <BimLoadingState />\r\n <div\r\n className=\"bim-container\"\r\n id=\"bim-viewer-container\"\r\n ref={containerRef}\r\n style={{\r\n width: \"100%\",\r\n height: \"100%\",\r\n position: \"relative\",\r\n background: \"radial-gradient(circle, rgba(255, 255, 255, 1) 50%, rgba(220, 220, 220, 1) 100%)\",\r\n }}\r\n />\r\n <PropertiesMenu />\r\n </div>\r\n );\r\n}"],"mappings":"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","names":["_a"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BCFTopicsManager.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAG3C,qBAAa,gBAAiB,SAAQ,GAAG,CAAC,SAAS;IAE/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAEtE,OAAO,UAAQ;IAEf,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAyB;gBAE1B,UAAU,EAAE,GAAG,CAAC,UAAU;IA2BtC,OAAO,CAAC,kBAAkB;IAkB1B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK;IAKzB,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,GAAG,CAAC,KAAK;IAyBxE,IAAI,CAAC,OAAO,EAAE,MAAM;IAY1B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAO1C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAgBhC,SAAS,IAAI,GAAG,CAAC,KAAK,EAAE;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,SAAS;IAIpD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO;IAUlE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI;IAoB9C,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IAYlF,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IAgB1F,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IA2BhF,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IASjE,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE;CAOvD"}
1
+ {"version":3,"file":"BCFTopicsManager.d.ts","sourceRoot":"","sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAI3C,qBAAa,gBAAiB,SAAQ,GAAG,CAAC,SAAS;IAE/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAEtE,OAAO,UAAQ;IAEf,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAyB;gBAE1B,UAAU,EAAE,GAAG,CAAC,UAAU;IA2BtC,OAAO,CAAC,kBAAkB;IAkB1B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK;IAKzB,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,GAAG,CAAC,KAAK;IAyBxE,IAAI,CAAC,OAAO,EAAE,MAAM;IAY1B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IAO1C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAgBhC,SAAS,IAAI,GAAG,CAAC,KAAK,EAAE;IAIxB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,SAAS;IAIpD,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO;IAUlE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI;IAoB9C,SAAS,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IAYlF,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IAgB1F,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;QAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,CAAA;KAAE,CAAC;IA2BhF,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IASjE,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE;CAOvD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.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 { CurrentWorld } from './CurrentWorld'\r\n\r\nexport class BCFTopicsManager extends OBC.Component {\r\n\r\n static readonly uuid = '00a7396c-2903-4ad7-b941-f8eca39746ab' as const\r\n\r\n enabled = false\r\n\r\n private bcfTopics: OBC.BCFTopics\r\n private viewpoints: OBC.Viewpoints\r\n private world: OBC.World | null = null\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BCFTopicsManager.uuid, this)\r\n \r\n // Initialize BCF components\r\n this.bcfTopics = components.get(OBC.BCFTopics)\r\n this.viewpoints = components.get(OBC.Viewpoints)\r\n \r\n // Get world from CurrentWorld component\r\n this.world = components.get(CurrentWorld).world\r\n if (this.world) {\r\n this.viewpoints.world = this.world\r\n }\r\n \r\n // Setup BCF Topics with default configuration\r\n this.bcfTopics.setup({\r\n author: \"info@collabdigitaltwins.com\", // This will be overridden when creating topics\r\n types: new Set([...this.bcfTopics.config.types, \"Information\", \"Coordination\", \"Issue\", \"Clash\", \"Error\"]),\r\n statuses: new Set([\"Active\", \"In Progress\", \"Done\", \"In Review\", \"Closed\"]),\r\n users: new Set([\"info@collabdigitaltwins.com\"]),\r\n version: \"3\"\r\n })\r\n\r\n // Setup event handlers\r\n this.setupEventHandlers()\r\n }\r\n\r\n private setupEventHandlers() {\r\n // Create a viewpoint whenever a topic is created\r\n this.bcfTopics.list.onItemSet.add(async ({ value: topic }) => {\r\n if (this.world) {\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = `Viewpoint for ${topic.title}`\r\n \r\n // Update camera and take snapshot\r\n await viewpoint.updateCamera()\r\n viewpoint.takeSnapshot()\r\n \r\n // Link viewpoint to topic\r\n topic.viewpoints.add(viewpoint.guid)\r\n }\r\n })\r\n }\r\n\r\n setWorld(world: OBC.World) {\r\n this.world = world\r\n this.viewpoints.world = world\r\n }\r\n\r\n create(topicData: Partial<OBC.Topic> & { creationAuthor?: string }): OBC.Topic {\r\n // Override the author if provided\r\n if (topicData.creationAuthor) {\r\n this.bcfTopics.config.author = topicData.creationAuthor\r\n }\r\n\r\n const topic = this.bcfTopics.create({\r\n title: topicData.title || 'New Topic',\r\n description: topicData.description || '',\r\n type: topicData.type || 'Issue',\r\n status: topicData.status || 'Active',\r\n priority: topicData.priority,\r\n stage: topicData.stage,\r\n assignedTo: topicData.assignedTo,\r\n dueDate: topicData.dueDate,\r\n labels: topicData.labels || new Set()\r\n })\r\n \r\n const viewpoint = this.createViewpoint(`viewpoint-${topic.title}`)\r\n\r\n if (viewpoint) topic.viewpoints.add(viewpoint.guid)\r\n\r\n return topic\r\n }\r\n\r\n async view(topicId: string) {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic && topic.viewpoints.size > 0) {\r\n // Get the first viewpoint and navigate to it\r\n const viewpointId = Array.from(topic.viewpoints)[0]\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint) {\r\n await viewpoint.go()\r\n }\r\n }\r\n }\r\n\r\n edit(topic: OBC.Topic | Partial<OBC.Topic>) {\r\n const existingTopic = this.bcfTopics.list.get(topic.guid)\r\n if (existingTopic) {\r\n existingTopic.set(topic)\r\n }\r\n }\r\n\r\n remove(topicId: string): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n // Remove associated viewpoints\r\n for (const viewpointId of topic.viewpoints) {\r\n this.viewpoints.list.delete(viewpointId)\r\n }\r\n \r\n // Remove the topic\r\n const success = this.bcfTopics.list.delete(topicId)\r\n return success\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n getTopics(): OBC.Topic[] {\r\n return Array.from(this.bcfTopics.list.values())\r\n }\r\n\r\n getTopicById(topicId: string): OBC.Topic | undefined {\r\n return this.bcfTopics.list.get(topicId)\r\n }\r\n\r\n updateTopic(topicId: string, updates: Partial<OBC.Topic>): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n topic.set(updates)\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Create a viewpoint for the current camera position\r\n createViewpoint(title: string): OBC.Viewpoint | null {\r\n if (!this.world) {\r\n return null\r\n }\r\n\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = title\r\n \r\n // const highlighter = this.components.get(OBF.Highlighter)\r\n // const selection = highlighter?.selection\r\n // console.log('Viewpoint selection:', selection)\r\n \r\n // Update camera and take snapshot\r\n // viewpoint.updateCamera()\r\n // viewpoint.takeSnapshot()\r\n\r\n }\r\n\r\n // Export BCF file\r\n async exportBCF(buildingName?: string): Promise<File> {\r\n try {\r\n // Export all topics\r\n const bcfBuffer = await this.bcfTopics.export()\r\n \r\n // Create filename with date and building name\r\n const currentDate = new Date().toISOString().split('T')[0] // YYYY-MM-DD format\r\n const sanitizedBuildingName = buildingName \r\n ? buildingName.replace(/[^a-zA-Z0-9-_]/g, '_') // Replace invalid filename chars with underscore\r\n : 'UnknownBuilding'\r\n const filename = `${currentDate}_${sanitizedBuildingName}.bcf`\r\n \r\n const bcfFile = new File([bcfBuffer], filename, { type: \"application/octet-stream\" })\r\n \r\n return bcfFile\r\n } catch (error) {\r\n console.error('Failed to export BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Load BCF file\r\n async loadBCF(file: File): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const buffer = await file.arrayBuffer()\r\n const result = await this.bcfTopics.load(new Uint8Array(buffer))\r\n \r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n async loadBCFFromUrl(url: string): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const response = await fetch(url)\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n const blob = await response.blob()\r\n const result = await this.bcfTopics.load(new Uint8Array(await blob.arrayBuffer()))\r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF from URL:', error)\r\n throw error\r\n } \r\n }\r\n\r\n // Download BCF file\r\n async downloadBCF(buildingName?: string): Promise<void> {\r\n try {\r\n const bcfFile = await this.exportBCF(buildingName)\r\n \r\n // Create download link\r\n const a = document.createElement(\"a\")\r\n a.href = URL.createObjectURL(bcfFile)\r\n a.download = bcfFile.name\r\n a.click()\r\n URL.revokeObjectURL(a.href)\r\n } catch (error) {\r\n console.error('Failed to download BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Upload and load BCF file\r\n async uploadBCF(): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n return new Promise((resolve, reject) => {\r\n const input = document.createElement(\"input\")\r\n input.multiple = false\r\n input.accept = \".bcf\"\r\n input.type = \"file\"\r\n \r\n input.addEventListener(\"change\", async () => {\r\n const file = input.files?.[0]\r\n if (!file) {\r\n reject(new Error('No file selected'))\r\n return\r\n }\r\n \r\n try {\r\n const result = await this.loadBCF(file)\r\n resolve(result)\r\n } catch (error) {\r\n reject(error)\r\n }\r\n })\r\n \r\n input.click()\r\n })\r\n }\r\n\r\n // Get viewpoint data (including snapshot)\r\n getViewpointSnapshot(viewpointId: string): Uint8Array | undefined {\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint && viewpoint.snapshot) {\r\n return this.viewpoints.snapshots.get(viewpoint.snapshot)\r\n }\r\n return undefined\r\n }\r\n\r\n // Get all viewpoints for a topic\r\n getTopicViewpoints(topicId: string): OBC.Viewpoint[] {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n return Array.from(topic.viewpoints).map(id => this.viewpoints.list.get(id)).filter(Boolean) as OBC.Viewpoint[]\r\n }\r\n return []\r\n }\r\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/core/components/viewers/bim/src/BCFTopicsManager.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\n\r\nimport { CurrentWorld } from './CurrentWorld'\r\n\r\nexport class BCFTopicsManager extends OBC.Component {\r\n\r\n static readonly uuid = '00a7396c-2903-4ad7-b941-f8eca39746ab' as const\r\n\r\n enabled = false\r\n\r\n private bcfTopics: OBC.BCFTopics\r\n private viewpoints: OBC.Viewpoints\r\n private world: OBC.World | null = null\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BCFTopicsManager.uuid, this)\r\n\r\n // Initialize BCF components\r\n this.bcfTopics = components.get(OBC.BCFTopics)\r\n this.viewpoints = components.get(OBC.Viewpoints)\r\n\r\n // Get world from CurrentWorld component\r\n this.world = components.get(CurrentWorld).world\r\n if (this.world) {\r\n this.viewpoints.world = this.world\r\n }\r\n\r\n // Setup BCF Topics with default configuration\r\n this.bcfTopics.setup({\r\n author: \"info@collabdigitaltwins.com\", // This will be overridden when creating topics\r\n types: new Set([...this.bcfTopics.config.types, \"Information\", \"Coordination\", \"Issue\", \"Clash\", \"Error\"]),\r\n statuses: new Set([\"Active\", \"In Progress\", \"Done\", \"In Review\", \"Closed\"]),\r\n users: new Set([\"info@collabdigitaltwins.com\"]),\r\n version: \"3\"\r\n })\r\n\r\n // Setup event handlers\r\n this.setupEventHandlers()\r\n }\r\n\r\n private setupEventHandlers() {\r\n // Create a viewpoint whenever a topic is created\r\n this.bcfTopics.list.onItemSet.add(async ({ value: topic }) => {\r\n if (this.world) {\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = `Viewpoint for ${topic.title}`\r\n\r\n // Update camera and take snapshot\r\n await viewpoint.updateCamera()\r\n viewpoint.takeSnapshot()\r\n\r\n // Link viewpoint to topic\r\n topic.viewpoints.add(viewpoint.guid)\r\n }\r\n })\r\n }\r\n\r\n setWorld(world: OBC.World) {\r\n this.world = world\r\n this.viewpoints.world = world\r\n }\r\n\r\n create(topicData: Partial<OBC.Topic> & { creationAuthor?: string }): OBC.Topic {\r\n // Override the author if provided\r\n if (topicData.creationAuthor) {\r\n this.bcfTopics.config.author = topicData.creationAuthor\r\n }\r\n\r\n const topic = this.bcfTopics.create({\r\n title: topicData.title || 'New Topic',\r\n description: topicData.description || '',\r\n type: topicData.type || 'Issue',\r\n status: topicData.status || 'Active',\r\n priority: topicData.priority,\r\n stage: topicData.stage,\r\n assignedTo: topicData.assignedTo,\r\n dueDate: topicData.dueDate,\r\n labels: topicData.labels || new Set()\r\n })\r\n\r\n const viewpoint = this.createViewpoint(`viewpoint-${topic.title}`)\r\n\r\n if (viewpoint) topic.viewpoints.add(viewpoint.guid)\r\n\r\n return topic\r\n }\r\n\r\n async view(topicId: string) {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic && topic.viewpoints.size > 0) {\r\n // Get the first viewpoint and navigate to it\r\n const viewpointId = Array.from(topic.viewpoints)[0]\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint) {\r\n await viewpoint.go()\r\n }\r\n }\r\n }\r\n\r\n edit(topic: OBC.Topic | Partial<OBC.Topic>) {\r\n const existingTopic = this.bcfTopics.list.get(topic.guid)\r\n if (existingTopic) {\r\n existingTopic.set(topic)\r\n }\r\n }\r\n\r\n remove(topicId: string): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n // Remove associated viewpoints\r\n for (const viewpointId of topic.viewpoints) {\r\n this.viewpoints.list.delete(viewpointId)\r\n }\r\n\r\n // Remove the topic\r\n const success = this.bcfTopics.list.delete(topicId)\r\n return success\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n getTopics(): OBC.Topic[] {\r\n return Array.from(this.bcfTopics.list.values())\r\n }\r\n\r\n getTopicById(topicId: string): OBC.Topic | undefined {\r\n return this.bcfTopics.list.get(topicId)\r\n }\r\n\r\n updateTopic(topicId: string, updates: Partial<OBC.Topic>): boolean {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n topic.set(updates)\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Create a viewpoint for the current camera position\r\n createViewpoint(title: string): OBC.Viewpoint | null {\r\n if (!this.world) {\r\n return null\r\n }\r\n\r\n const viewpoint = this.viewpoints.create()\r\n viewpoint.world = this.world\r\n viewpoint.title = title\r\n\r\n // const highlighter = this.components.get(OBF.Highlighter)\r\n // const selection = highlighter?.selection\r\n // console.log('Viewpoint selection:', selection)\r\n\r\n // Update camera and take snapshot\r\n // viewpoint.updateCamera()\r\n // viewpoint.takeSnapshot()\r\n\r\n }\r\n\r\n // Export BCF file\r\n async exportBCF(buildingName?: string): Promise<File> {\r\n try {\r\n // Export all topics\r\n const bcfBuffer = await this.bcfTopics.export()\r\n\r\n // Create filename with date and building name\r\n const currentDate = new Date().toISOString().split('T')[0] // YYYY-MM-DD format\r\n const sanitizedBuildingName = buildingName\r\n ? buildingName.replace(/[^a-zA-Z0-9-_]/g, '_') // Replace invalid filename chars with underscore\r\n : 'UnknownBuilding'\r\n const filename = `${currentDate}_${sanitizedBuildingName}.bcf`\r\n\r\n const bcfFile = new File([bcfBuffer], filename, { type: \"application/octet-stream\" })\r\n\r\n return bcfFile\r\n } catch (error) {\r\n console.error('Failed to export BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Load BCF file\r\n async loadBCF(file: File): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const buffer = await file.arrayBuffer()\r\n const result = await this.bcfTopics.load(new Uint8Array(buffer))\r\n\r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n async loadBCFFromUrl(url: string): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n try {\r\n const response = await fetch(url)\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`)\r\n }\r\n const blob = await response.blob()\r\n const result = await this.bcfTopics.load(new Uint8Array(await blob.arrayBuffer()))\r\n return result\r\n } catch (error) {\r\n console.error('Failed to load BCF from URL:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Download BCF file\r\n async downloadBCF(buildingName?: string): Promise<void> {\r\n try {\r\n const bcfFile = await this.exportBCF(buildingName)\r\n\r\n // Create download link\r\n const a = document.createElement(\"a\")\r\n a.href = URL.createObjectURL(bcfFile)\r\n a.download = bcfFile.name\r\n a.click()\r\n URL.revokeObjectURL(a.href)\r\n } catch (error) {\r\n console.error('Failed to download BCF:', error)\r\n throw error\r\n }\r\n }\r\n\r\n // Upload and load BCF file\r\n async uploadBCF(): Promise<{ topics: OBC.Topic[], viewpoints: OBC.Viewpoint[] }> {\r\n return new Promise((resolve, reject) => {\r\n const input = document.createElement(\"input\")\r\n input.multiple = false\r\n input.accept = \".bcf\"\r\n input.type = \"file\"\r\n\r\n input.addEventListener(\"change\", async () => {\r\n const file = input.files?.[0]\r\n if (!file) {\r\n reject(new Error('No file selected'))\r\n return\r\n }\r\n\r\n try {\r\n const result = await this.loadBCF(file)\r\n resolve(result)\r\n } catch (error) {\r\n reject(error)\r\n }\r\n })\r\n\r\n input.click()\r\n })\r\n }\r\n\r\n // Get viewpoint data (including snapshot)\r\n getViewpointSnapshot(viewpointId: string): Uint8Array | undefined {\r\n const viewpoint = this.viewpoints.list.get(viewpointId)\r\n if (viewpoint && viewpoint.snapshot) {\r\n return this.viewpoints.snapshots.get(viewpoint.snapshot)\r\n }\r\n return undefined\r\n }\r\n\r\n // Get all viewpoints for a topic\r\n getTopicViewpoints(topicId: string): OBC.Viewpoint[] {\r\n const topic = this.bcfTopics.list.get(topicId)\r\n if (topic) {\r\n return Array.from(topic.viewpoints).map(id => this.viewpoints.list.get(id)).filter(Boolean) as OBC.Viewpoint[]\r\n }\r\n return []\r\n }\r\n}"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
- import * as THREE from 'three';
2
1
  import * as OBC from '@thatopen/components';
3
- import * as FRAGS from '@thatopen/fragments';
2
+ import type * as FRAGS from '@thatopen/fragments';
3
+ import type * as THREE from 'three';
4
4
  export interface BimModelInfo {
5
5
  id: string;
6
6
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAG5C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;CAC/B;AAED,qBAAa,UAAW,SAAQ,GAAG,CAAC,SAAS;IAC3C,MAAM,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAE7D,OAAO,UAAO;IAEd,6DAA6D;IAC7D,YAAY,0BAAgC;IAE5C,8EAA8E;IAC9E,kBAAkB,0BAAgC;IAElD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,cAAc,CAAiC;gBAE3C,UAAU,EAAE,GAAG,CAAC,UAAU;IAQtC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAwB1B,gFAAgF;IAChF,OAAO,CAAC,kBAAkB;IAW1B;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQvC,GAAG,CACD,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,YAAY;IA0Bf,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9C,sCAAsC;IACtC,YAAY,IAAI,YAAY,EAAE;IAIxB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAMhE,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB3D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAerD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI;IAQ3C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAWzD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAWpD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO;IAWvD;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAiBnC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAYpD,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,sBAAsB,CAAA;AAI3C,OAAO,KAAK,KAAK,KAAK,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAC,cAAc,CAAA;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;CAC/B;AAED,qBAAa,UAAW,SAAQ,GAAG,CAAC,SAAS;IAC3C,MAAM,CAAC,IAAI,EAAG,sCAAsC,CAAS;IAE7D,OAAO,UAAO;IAEd,6DAA6D;IAC7D,YAAY,0BAAgC;IAE5C,8EAA8E;IAC9E,kBAAkB,0BAAgC;IAElD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,cAAc,CAAiC;gBAE3C,UAAU,EAAE,GAAG,CAAC,UAAU;IAQtC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAwB1B,gFAAgF;IAChF,OAAO,CAAC,kBAAkB;IAW1B;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQvC,GAAG,CACD,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,YAAY;IA0Bf,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9C,sCAAsC;IACtC,YAAY,IAAI,YAAY,EAAE;IAIxB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAMhE,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB3D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAerD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI;IAQ3C,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAWzD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO;IAWpD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO;IAWvD;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAiBnC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAYpD,OAAO,IAAI,IAAI;CAGhB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport * as THREE from 'three'\r\nimport * as OBC from '@thatopen/components'\r\nimport * as FRAGS from '@thatopen/fragments'\r\nimport { CurrentWorld } from '../CurrentWorld'\r\n\r\nexport interface BimModelInfo {\r\n id: string\r\n name: string\r\n model: FRAGS.FragmentsModel\r\n}\r\n\r\nexport interface BimTransformOptions {\r\n position?: THREE.Vector3\r\n rotation?: THREE.Euler\r\n scale?: number | THREE.Vector3\r\n}\r\n\r\nexport class BIMManager extends OBC.Component {\r\n static uuid = 'b2c1a0f9-3d4e-4c8b-9a7d-1e5f6g7h8i9j' as const\r\n\r\n enabled = true\r\n\r\n /** Triggered when a model is registered with the manager. */\r\n onModelAdded = new OBC.Event<BimModelInfo>()\r\n\r\n /** Triggered whenever a model's transform is changed through this manager. */\r\n onModelTransformed = new OBC.Event<BimModelInfo>()\r\n\r\n private _components: OBC.Components\r\n private _world: OBC.World | null = null\r\n private _models: Map<string, BimModelInfo> = new Map()\r\n private _nameOverrides: Map<string, string> = new Map()\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BIMManager.uuid, this)\r\n this._components = components\r\n this._world = components.get(CurrentWorld).world\r\n this._syncWithFragments(components)\r\n }\r\n\r\n /**\r\n * Retroactively registers all models already in the fragments list and\r\n * subscribes to future loads so BIMManager stays in sync regardless of\r\n * when it is first instantiated.\r\n */\r\n private _syncWithFragments(components: OBC.Components): void {\r\n let fragManager: OBC.FragmentsManager\r\n try {\r\n fragManager = components.get(OBC.FragmentsManager)\r\n }\r\n catch {\r\n return\r\n }\r\n\r\n // Register models that are already loaded\r\n for (const [modelId, model] of fragManager.core.models.list) {\r\n if (!this._models.has(modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n }\r\n\r\n // Listen for future loads\r\n fragManager.core.onModelLoaded.add((model: FRAGS.FragmentsModel) => {\r\n if (!this._models.has(model.modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n })\r\n }\r\n\r\n /** Low-level helper: register a FragmentsModel using its own modelId as key. */\r\n private _registerFragModel(model: FRAGS.FragmentsModel): void {\r\n const id = model.modelId\r\n const info: BimModelInfo = {\r\n id,\r\n name: this._nameOverrides.get(id) ?? id,\r\n model,\r\n }\r\n this._models.set(id, info)\r\n this.onModelAdded.trigger(info)\r\n }\r\n\r\n /**\r\n * Update the display name for a registered model.\r\n * Useful when the DbFile name becomes known after the model was auto-registered.\r\n */\r\n setName(id: string, name: string): void {\r\n this._nameOverrides.set(id, name)\r\n const info = this._models.get(id)\r\n if (info) {\r\n info.name = name\r\n }\r\n }\r\n\r\n add(\r\n model: FRAGS.FragmentsModel,\r\n id: string,\r\n name: string,\r\n options: BimTransformOptions = {},\r\n ): BimModelInfo {\r\n if (options.position) {\r\n model.object.position.copy(options.position)\r\n }\r\n\r\n if (options.rotation) {\r\n model.object.rotation.copy(options.rotation)\r\n }\r\n\r\n if (options.scale) {\r\n if (typeof options.scale === 'number') {\r\n model.object.scale.setScalar(options.scale)\r\n }\r\n else {\r\n model.object.scale.copy(options.scale)\r\n }\r\n }\r\n\r\n const modelInfo: BimModelInfo = { id, name, model }\r\n this._models.set(id, modelInfo)\r\n ;(model.object as any).bimModelId = id\r\n\r\n this.onModelAdded.trigger(modelInfo)\r\n return modelInfo\r\n }\r\n\r\n remove(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n this._models.delete(id)\r\n return true\r\n }\r\n\r\n getModel(id: string): BimModelInfo | undefined {\r\n return this._models.get(id)\r\n }\r\n\r\n /** Get all registered model infos. */\r\n getAllModels(): BimModelInfo[] {\r\n return [...this._models.values()]\r\n }\r\n\r\n async getCoordinationMatrix(id: string): Promise<THREE.Matrix4 | null> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n return modelInfo.model.getCoordinationMatrix()\r\n }\r\n\r\n async applyCoordinationMatrix(id: string): Promise<boolean> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n const coordMatrix = await modelInfo.model.getCoordinationMatrix()\r\n coordMatrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n setMatrix(id: string, matrix: THREE.Matrix4): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n matrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n getMatrix(id: string): THREE.Matrix4 | null {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n return modelInfo.model.object.matrixWorld.clone()\r\n }\r\n\r\n setPosition(id: string, position: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.copy(position)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Translate (offset) the model relative to its current position.\r\n */\r\n translate(id: string, delta: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.add(delta)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Set the absolute rotation of the model.\r\n */\r\n setRotation(id: string, rotation: THREE.Euler): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.rotation.copy(rotation)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Reset position, rotation, and scale to identity (origin, no rotation, unit scale).\r\n */\r\n resetTransform(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.set(0, 0, 0)\r\n modelInfo.model.object.rotation.set(0, 0, 0)\r\n modelInfo.model.object.scale.set(1, 1, 1)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Visibility\r\n // ---------------------------------------------------------------------------\r\n\r\n /**\r\n * Show or hide the model.\r\n */\r\n setVisibility(id: string, visible: boolean): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.visible = visible\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Cleanup\r\n // ---------------------------------------------------------------------------\r\n\r\n dispose(): void {\r\n this._models.clear()\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../../../../src/core/components/viewers/bim/src/BIMManager/index.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\n\r\nimport { CurrentWorld } from '../CurrentWorld'\r\n\r\nimport type * as FRAGS from '@thatopen/fragments'\r\nimport type * as THREE from 'three'\r\n\r\nexport interface BimModelInfo {\r\n id: string\r\n name: string\r\n model: FRAGS.FragmentsModel\r\n}\r\n\r\nexport interface BimTransformOptions {\r\n position?: THREE.Vector3\r\n rotation?: THREE.Euler\r\n scale?: number | THREE.Vector3\r\n}\r\n\r\nexport class BIMManager extends OBC.Component {\r\n static uuid = 'b2c1a0f9-3d4e-4c8b-9a7d-1e5f6g7h8i9j' as const\r\n\r\n enabled = true\r\n\r\n /** Triggered when a model is registered with the manager. */\r\n onModelAdded = new OBC.Event<BimModelInfo>()\r\n\r\n /** Triggered whenever a model's transform is changed through this manager. */\r\n onModelTransformed = new OBC.Event<BimModelInfo>()\r\n\r\n private _components: OBC.Components\r\n private _world: OBC.World | null = null\r\n private _models: Map<string, BimModelInfo> = new Map()\r\n private _nameOverrides: Map<string, string> = new Map()\r\n\r\n constructor(components: OBC.Components) {\r\n super(components)\r\n components.add(BIMManager.uuid, this)\r\n this._components = components\r\n this._world = components.get(CurrentWorld).world\r\n this._syncWithFragments(components)\r\n }\r\n\r\n /**\r\n * Retroactively registers all models already in the fragments list and\r\n * subscribes to future loads so BIMManager stays in sync regardless of\r\n * when it is first instantiated.\r\n */\r\n private _syncWithFragments(components: OBC.Components): void {\r\n let fragManager: OBC.FragmentsManager\r\n try {\r\n fragManager = components.get(OBC.FragmentsManager)\r\n }\r\n catch {\r\n return\r\n }\r\n\r\n // Register models that are already loaded\r\n for (const [modelId, model] of fragManager.core.models.list) {\r\n if (!this._models.has(modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n }\r\n\r\n // Listen for future loads\r\n fragManager.core.onModelLoaded.add((model: FRAGS.FragmentsModel) => {\r\n if (!this._models.has(model.modelId)) {\r\n this._registerFragModel(model)\r\n }\r\n })\r\n }\r\n\r\n /** Low-level helper: register a FragmentsModel using its own modelId as key. */\r\n private _registerFragModel(model: FRAGS.FragmentsModel): void {\r\n const id = model.modelId\r\n const info: BimModelInfo = {\r\n id,\r\n name: this._nameOverrides.get(id) ?? id,\r\n model,\r\n }\r\n this._models.set(id, info)\r\n this.onModelAdded.trigger(info)\r\n }\r\n\r\n /**\r\n * Update the display name for a registered model.\r\n * Useful when the DbFile name becomes known after the model was auto-registered.\r\n */\r\n setName(id: string, name: string): void {\r\n this._nameOverrides.set(id, name)\r\n const info = this._models.get(id)\r\n if (info) {\r\n info.name = name\r\n }\r\n }\r\n\r\n add(\r\n model: FRAGS.FragmentsModel,\r\n id: string,\r\n name: string,\r\n options: BimTransformOptions = {},\r\n ): BimModelInfo {\r\n if (options.position) {\r\n model.object.position.copy(options.position)\r\n }\r\n\r\n if (options.rotation) {\r\n model.object.rotation.copy(options.rotation)\r\n }\r\n\r\n if (options.scale) {\r\n if (typeof options.scale === 'number') {\r\n model.object.scale.setScalar(options.scale)\r\n }\r\n else {\r\n model.object.scale.copy(options.scale)\r\n }\r\n }\r\n\r\n const modelInfo: BimModelInfo = { id, name, model }\r\n this._models.set(id, modelInfo)\r\n ;(model.object as any).bimModelId = id\r\n\r\n this.onModelAdded.trigger(modelInfo)\r\n return modelInfo\r\n }\r\n\r\n remove(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n this._models.delete(id)\r\n return true\r\n }\r\n\r\n getModel(id: string): BimModelInfo | undefined {\r\n return this._models.get(id)\r\n }\r\n\r\n /** Get all registered model infos. */\r\n getAllModels(): BimModelInfo[] {\r\n return [...this._models.values()]\r\n }\r\n\r\n async getCoordinationMatrix(id: string): Promise<THREE.Matrix4 | null> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n return modelInfo.model.getCoordinationMatrix()\r\n }\r\n\r\n async applyCoordinationMatrix(id: string): Promise<boolean> {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n const coordMatrix = await modelInfo.model.getCoordinationMatrix()\r\n coordMatrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n setMatrix(id: string, matrix: THREE.Matrix4): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n matrix.decompose(\r\n modelInfo.model.object.position,\r\n modelInfo.model.object.quaternion,\r\n modelInfo.model.object.scale,\r\n )\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n getMatrix(id: string): THREE.Matrix4 | null {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return null\r\n\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n return modelInfo.model.object.matrixWorld.clone()\r\n }\r\n\r\n setPosition(id: string, position: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.copy(position)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Translate (offset) the model relative to its current position.\r\n */\r\n translate(id: string, delta: THREE.Vector3): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.add(delta)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Set the absolute rotation of the model.\r\n */\r\n setRotation(id: string, rotation: THREE.Euler): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.rotation.copy(rotation)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n /**\r\n * Reset position, rotation, and scale to identity (origin, no rotation, unit scale).\r\n */\r\n resetTransform(id: string): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.position.set(0, 0, 0)\r\n modelInfo.model.object.rotation.set(0, 0, 0)\r\n modelInfo.model.object.scale.set(1, 1, 1)\r\n modelInfo.model.object.updateMatrixWorld(true)\r\n\r\n this.onModelTransformed.trigger(modelInfo)\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Visibility\r\n // ---------------------------------------------------------------------------\r\n\r\n /**\r\n * Show or hide the model.\r\n */\r\n setVisibility(id: string, visible: boolean): boolean {\r\n const modelInfo = this._models.get(id)\r\n if (!modelInfo) return false\r\n\r\n modelInfo.model.object.visible = visible\r\n return true\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n // Cleanup\r\n // ---------------------------------------------------------------------------\r\n\r\n dispose(): void {\r\n this._models.clear()\r\n }\r\n}\r\n"],"mappings":"AAGA,YAAY,SAAS;AAErB,SAAS,oBAAoB;AAiBtB,MAAM,cAAN,MAAM,oBAAmB,IAAI,UAAU;AAAA,EAgB5C,YAAY,YAA4B;AACtC,UAAM,UAAU;AAdlB,mBAAU;AAGV;AAAA,wBAAe,IAAI,IAAI,MAAoB;AAG3C;AAAA,8BAAqB,IAAI,IAAI,MAAoB;AAGjD,SAAQ,SAA2B;AACnC,SAAQ,UAAqC,oBAAI,IAAI;AACrD,SAAQ,iBAAsC,oBAAI,IAAI;AAIpD,eAAW,IAAI,YAAW,MAAM,IAAI;AACpC,SAAK,cAAc;AACnB,SAAK,SAAS,WAAW,IAAI,YAAY,EAAE;AAC3C,SAAK,mBAAmB,UAAU;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,mBAAmB,YAAkC;AAC3D,QAAI;AACJ,QAAI;AACF,oBAAc,WAAW,IAAI,IAAI,gBAAgB;AAAA,IACnD,SACM;AACJ;AAAA,IACF;AAGA,eAAW,CAAC,SAAS,KAAK,KAAK,YAAY,KAAK,OAAO,MAAM;AAC3D,UAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,GAAG;AAC9B,aAAK,mBAAmB,KAAK;AAAA,MAC/B;AAAA,IACF;AAGA,gBAAY,KAAK,cAAc,IAAI,CAAC,UAAgC;AAClE,UAAI,CAAC,KAAK,QAAQ,IAAI,MAAM,OAAO,GAAG;AACpC,aAAK,mBAAmB,KAAK;AAAA,MAC/B;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA,EAGQ,mBAAmB,OAAmC;AA5EhE;AA6EI,UAAM,KAAK,MAAM;AACjB,UAAM,OAAqB;AAAA,MACzB;AAAA,MACA,OAAM,UAAK,eAAe,IAAI,EAAE,MAA1B,YAA+B;AAAA,MACrC;AAAA,IACF;AACA,SAAK,QAAQ,IAAI,IAAI,IAAI;AACzB,SAAK,aAAa,QAAQ,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,IAAY,MAAoB;AACtC,SAAK,eAAe,IAAI,IAAI,IAAI;AAChC,UAAM,OAAO,KAAK,QAAQ,IAAI,EAAE;AAChC,QAAI,MAAM;AACR,WAAK,OAAO;AAAA,IACd;AAAA,EACF;AAAA,EAEA,IACE,OACA,IACA,MACA,UAA+B,CAAC,GAClB;AACd,QAAI,QAAQ,UAAU;AACpB,YAAM,OAAO,SAAS,KAAK,QAAQ,QAAQ;AAAA,IAC7C;AAEA,QAAI,QAAQ,UAAU;AACpB,YAAM,OAAO,SAAS,KAAK,QAAQ,QAAQ;AAAA,IAC7C;AAEA,QAAI,QAAQ,OAAO;AACjB,UAAI,OAAO,QAAQ,UAAU,UAAU;AACrC,cAAM,OAAO,MAAM,UAAU,QAAQ,KAAK;AAAA,MAC5C,OACK;AACH,cAAM,OAAO,MAAM,KAAK,QAAQ,KAAK;AAAA,MACvC;AAAA,IACF;AAEA,UAAM,YAA0B,EAAE,IAAI,MAAM,MAAM;AAClD,SAAK,QAAQ,IAAI,IAAI,SAAS;AAC7B,IAAC,MAAM,OAAe,aAAa;AAEpC,SAAK,aAAa,QAAQ,SAAS;AACnC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,IAAqB;AAC1B,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AACvB,SAAK,QAAQ,OAAO,EAAE;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,IAAsC;AAC7C,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC5B;AAAA;AAAA,EAGA,eAA+B;AAC7B,WAAO,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC;AAAA,EAClC;AAAA,EAEA,MAAM,sBAAsB,IAA2C;AACrE,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AACvB,WAAO,UAAU,MAAM,sBAAsB;AAAA,EAC/C;AAAA,EAEA,MAAM,wBAAwB,IAA8B;AAC1D,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,UAAM,cAAc,MAAM,UAAU,MAAM,sBAAsB;AAChE,gBAAY;AAAA,MACV,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,IACzB;AACA,cAAU,MAAM,OAAO,kBAAkB,IAAI;AAE7C,SAAK,mBAAmB,QAAQ,SAAS;AACzC,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,IAAY,QAAgC;AACpD,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,WAAO;AAAA,MACL,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,MACvB,UAAU,MAAM,OAAO;AAAA,IACzB;AACA,cAAU,MAAM,OAAO,kBAAkB,IAAI;AAE7C,SAAK,mBAAmB,QAAQ,SAAS;AACzC,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,IAAkC;AAC1C,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,cAAU,MAAM,OAAO,kBAAkB,IAAI;AAC7C,WAAO,UAAU,MAAM,OAAO,YAAY,MAAM;AAAA,EAClD;AAAA,EAEA,YAAY,IAAY,UAAkC;AACxD,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,cAAU,MAAM,OAAO,SAAS,KAAK,QAAQ;AAC7C,cAAU,MAAM,OAAO,kBAAkB,IAAI;AAE7C,SAAK,mBAAmB,QAAQ,SAAS;AACzC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,IAAY,OAA+B;AACnD,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,cAAU,MAAM,OAAO,SAAS,IAAI,KAAK;AACzC,cAAU,MAAM,OAAO,kBAAkB,IAAI;AAE7C,SAAK,mBAAmB,QAAQ,SAAS;AACzC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY,IAAY,UAAgC;AACtD,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,cAAU,MAAM,OAAO,SAAS,KAAK,QAAQ;AAC7C,cAAU,MAAM,OAAO,kBAAkB,IAAI;AAE7C,SAAK,mBAAmB,QAAQ,SAAS;AACzC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,IAAqB;AAClC,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,cAAU,MAAM,OAAO,SAAS,IAAI,GAAG,GAAG,CAAC;AAC3C,cAAU,MAAM,OAAO,SAAS,IAAI,GAAG,GAAG,CAAC;AAC3C,cAAU,MAAM,OAAO,MAAM,IAAI,GAAG,GAAG,CAAC;AACxC,cAAU,MAAM,OAAO,kBAAkB,IAAI;AAE7C,SAAK,mBAAmB,QAAQ,SAAS;AACzC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,IAAY,SAA2B;AACnD,UAAM,YAAY,KAAK,QAAQ,IAAI,EAAE;AACrC,QAAI,CAAC,UAAW,QAAO;AAEvB,cAAU,MAAM,OAAO,UAAU;AACjC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAMA,UAAgB;AACd,SAAK,QAAQ,MAAM;AAAA,EACrB;AACF;AAtPa,YACJ,OAAO;AADT,IAAM,aAAN;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BimLoadingState/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;AAEpG,wBAAgB,eAAe,sBAoa9B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/components/viewers/bim/src/BimLoadingState/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;AAEpG,wBAAgB,eAAe,sBAoa9B"}
@@ -19,21 +19,21 @@ 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 { Upload, Box, Building2, Search, X, SquareArrowOutUpRight } from "lucide-react";
23
+ import { useSearchParams, useRouter } from "next/navigation";
24
+ import { useTranslations } from "next-intl";
22
25
  import React from "react";
26
+ import { useBuilding, useBuildings } from "../../../../../hooks/buildings/buildings";
27
+ import { useFilesByBuildingId, useUploadFileToBuilding } from "../../../../../hooks/files/files";
28
+ import { BimContext, BuildingsContext, usePermissions } from "../../../../../store";
29
+ import { cn } from "../../../../../utils/utils";
23
30
  import { Button } from "../../../../ui/Button";
24
31
  import { Card, CardContent, CardHeader } from "../../../../ui/Card";
32
+ import { useFileUploadHandler } from "../../../../ui/FilesManager/src/useFileUploadHandler";
25
33
  import { Input } from "../../../../ui/Input";
26
34
  import { LoadingSpinner } from "../../../../ui/LoadingSpinner";
27
- import { Upload, Box, Building2, Search, X, SquareArrowOutUpRight } from "lucide-react";
28
- import { BimContext, BuildingsContext, usePermissions } from "../../../../../store";
29
- import { LoadModels } from "../LoadModels";
30
- import { useTranslations } from "next-intl";
31
- import { useFilesByBuildingId, useUploadFileToBuilding } from "../../../../../hooks/files/files";
32
- import { useFileUploadHandler } from "../../../../ui/FilesManager/src/useFileUploadHandler";
33
- import { cn } from "../../../../../utils/utils";
34
- import { useSearchParams, useRouter } from "next/navigation";
35
- import { useBuilding, useBuildings } from "../../../../../hooks/buildings/buildings";
36
35
  import { setCameraLookAt } from "../../utils/setCameraLookAt";
36
+ import { LoadModels } from "../LoadModels";
37
37
  function BimLoadingState() {
38
38
  const t = useTranslations("BimLoadingState");
39
39
  const { ability } = usePermissions();
@@ -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);