@collabdt/core 0.0.57 → 0.2.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 (178) hide show
  1. package/README.md +29 -43
  2. package/dist/core/components/AppSidebarContent.d.ts.map +1 -1
  3. package/dist/core/components/AppSidebarContent.js +21 -27
  4. package/dist/core/components/AppSidebarContent.js.map +1 -1
  5. package/dist/core/components/authentication/AuthPage.d.ts.map +1 -1
  6. package/dist/core/components/authentication/AuthPage.js +32 -7
  7. package/dist/core/components/authentication/AuthPage.js.map +1 -1
  8. package/dist/core/components/authentication/SignInAuthHeader.d.ts +7 -0
  9. package/dist/core/components/authentication/SignInAuthHeader.d.ts.map +1 -0
  10. package/dist/core/components/authentication/SignInAuthHeader.js +32 -0
  11. package/dist/core/components/authentication/SignInAuthHeader.js.map +1 -0
  12. package/dist/core/components/authentication/Signin.d.ts.map +1 -1
  13. package/dist/core/components/authentication/Signin.js +308 -10
  14. package/dist/core/components/authentication/Signin.js.map +1 -1
  15. package/dist/core/components/settings/index.js +3 -3
  16. package/dist/core/components/settings/index.js.map +1 -1
  17. package/dist/core/components/settings/src/OrganizationSettingsPanel.d.ts.map +1 -1
  18. package/dist/core/components/settings/src/OrganizationSettingsPanel.js +5 -4
  19. package/dist/core/components/settings/src/OrganizationSettingsPanel.js.map +1 -1
  20. package/dist/core/components/settings/src/SettingsSidebar.d.ts.map +1 -1
  21. package/dist/core/components/settings/src/SettingsSidebar.js +12 -2
  22. package/dist/core/components/settings/src/SettingsSidebar.js.map +1 -1
  23. package/dist/core/components/support/BugReportDialog.d.ts.map +1 -1
  24. package/dist/core/components/support/BugReportDialog.js +122 -9
  25. package/dist/core/components/support/BugReportDialog.js.map +1 -1
  26. package/dist/core/components/support/FeatureRequestDialog.d.ts.map +1 -1
  27. package/dist/core/components/support/FeatureRequestDialog.js +61 -2
  28. package/dist/core/components/support/FeatureRequestDialog.js.map +1 -1
  29. package/dist/core/components/ui/AppSidebar.d.ts.map +1 -1
  30. package/dist/core/components/ui/AppSidebar.js +52 -9
  31. package/dist/core/components/ui/AppSidebar.js.map +1 -1
  32. package/dist/core/components/ui/DataTable.js +3 -3
  33. package/dist/core/components/ui/DataTable.js.map +1 -1
  34. package/dist/core/components/ui/Dialog.js +1 -1
  35. package/dist/core/components/ui/Dialog.js.map +1 -1
  36. package/dist/core/components/ui/InfoSidebar/Container.js +1 -1
  37. package/dist/core/components/ui/InfoSidebar/Container.js.map +1 -1
  38. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.d.ts.map +1 -1
  39. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js +2 -2
  40. package/dist/core/components/ui/Sensors/CollapsibleSensorItem.js.map +1 -1
  41. package/dist/core/components/ui/Sensors/SensorsSection.d.ts.map +1 -1
  42. package/dist/core/components/ui/Sensors/SensorsSection.js +2 -1
  43. package/dist/core/components/ui/Sensors/SensorsSection.js.map +1 -1
  44. package/dist/core/components/ui/Sensors/sensorUtils.d.ts +9 -0
  45. package/dist/core/components/ui/Sensors/sensorUtils.d.ts.map +1 -1
  46. package/dist/core/components/ui/Sensors/sensorUtils.js +6 -0
  47. package/dist/core/components/ui/Sensors/sensorUtils.js.map +1 -1
  48. package/dist/core/components/ui/Sidebar.d.ts +4 -0
  49. package/dist/core/components/ui/Sidebar.d.ts.map +1 -1
  50. package/dist/core/components/ui/Sidebar.js +11 -5
  51. package/dist/core/components/ui/Sidebar.js.map +1 -1
  52. package/dist/core/components/ui/Table.js +2 -2
  53. package/dist/core/components/ui/Table.js.map +1 -1
  54. package/dist/core/components/viewers/Data/DataMenu.d.ts.map +1 -1
  55. package/dist/core/components/viewers/Data/DataMenu.js +17 -9
  56. package/dist/core/components/viewers/Data/DataMenu.js.map +1 -1
  57. package/dist/core/components/viewers/Data/HeaderButtons.d.ts.map +1 -1
  58. package/dist/core/components/viewers/Data/HeaderButtons.js +5 -12
  59. package/dist/core/components/viewers/Data/HeaderButtons.js.map +1 -1
  60. package/dist/core/components/viewers/Data/MoreOptions.d.ts.map +1 -1
  61. package/dist/core/components/viewers/Data/MoreOptions.js +14 -27
  62. package/dist/core/components/viewers/Data/MoreOptions.js.map +1 -1
  63. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.d.ts.map +1 -1
  64. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js +26 -0
  65. package/dist/core/components/viewers/Data/buildingDetails/BuildingDetails.js.map +1 -1
  66. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.d.ts.map +1 -1
  67. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js +13 -18
  68. package/dist/core/components/viewers/Data/buildingDetails/FieldRenderer.js.map +1 -1
  69. package/dist/core/components/viewers/Data/details/DetailHeader.js +14 -14
  70. package/dist/core/components/viewers/Data/details/DetailHeader.js.map +1 -1
  71. package/dist/core/components/viewers/Data/details/FieldValue.d.ts.map +1 -1
  72. package/dist/core/components/viewers/Data/details/FieldValue.js +13 -3
  73. package/dist/core/components/viewers/Data/details/FieldValue.js.map +1 -1
  74. package/dist/core/components/viewers/Data/details/TabSidebar.d.ts.map +1 -1
  75. package/dist/core/components/viewers/Data/details/TabSidebar.js +22 -0
  76. package/dist/core/components/viewers/Data/details/TabSidebar.js.map +1 -1
  77. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.d.ts.map +1 -1
  78. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js +19 -0
  79. package/dist/core/components/viewers/Data/infrastructureDetails/InfrastructureDetails.js.map +1 -1
  80. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.d.ts +2 -0
  81. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.d.ts.map +1 -1
  82. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js +84 -3
  83. package/dist/core/components/viewers/Data/siteDetails/AssociatedBuildings.js.map +1 -1
  84. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.d.ts.map +1 -1
  85. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js +42 -2
  86. package/dist/core/components/viewers/Data/siteDetails/SiteDetails.js.map +1 -1
  87. package/dist/core/components/viewers/Data/utils/Columns.js +2 -2
  88. package/dist/core/components/viewers/Data/utils/Columns.js.map +1 -1
  89. package/dist/core/components/viewers/Data/utils/positionParser.d.ts.map +1 -1
  90. package/dist/core/components/viewers/Data/utils/positionParser.js +6 -5
  91. package/dist/core/components/viewers/Data/utils/positionParser.js.map +1 -1
  92. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.d.ts.map +1 -1
  93. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js +8 -1
  94. package/dist/core/components/viewers/bim/src/BimSidebar/src/CommunicationTab/src/TopicsSection.js.map +1 -1
  95. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.d.ts.map +1 -1
  96. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js +7 -1
  97. package/dist/core/components/viewers/bim/src/BimSidebar/src/FileTab/src/FilesSection.js.map +1 -1
  98. package/dist/core/components/viewers/map/datasets/RowActions.js +6 -6
  99. package/dist/core/components/viewers/map/datasets/RowActions.js.map +1 -1
  100. package/dist/core/components/viewers/map/datasets/data.js +1 -1
  101. package/dist/core/components/viewers/map/datasets/data.js.map +1 -1
  102. package/dist/core/components/viewers/map/datasets/index.d.ts.map +1 -1
  103. package/dist/core/components/viewers/map/datasets/index.js +28 -9
  104. package/dist/core/components/viewers/map/datasets/index.js.map +1 -1
  105. package/dist/core/components/viewers/map/src/MapLayers/index.d.ts.map +1 -1
  106. package/dist/core/components/viewers/map/src/MapLayers/index.js +2 -0
  107. package/dist/core/components/viewers/map/src/MapLayers/index.js.map +1 -1
  108. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.d.ts +19 -0
  109. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.d.ts.map +1 -0
  110. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js +163 -0
  111. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteContextMenu.js.map +1 -0
  112. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.d.ts +3 -0
  113. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.d.ts.map +1 -0
  114. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js +310 -0
  115. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/SiteLayer.js.map +1 -0
  116. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.d.ts +30 -0
  117. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.d.ts.map +1 -0
  118. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.js +122 -0
  119. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/siteGeometry.js.map +1 -0
  120. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.d.ts +13 -0
  121. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.d.ts.map +1 -0
  122. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.js +58 -0
  123. package/dist/core/components/viewers/map/src/MapLayers/src/SiteLayer/useShowSitesOnMap.js.map +1 -0
  124. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.d.ts +18 -0
  125. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.d.ts.map +1 -0
  126. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js +102 -0
  127. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/AssociateBuildingsDialog.js.map +1 -0
  128. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.d.ts.map +1 -1
  129. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js +243 -176
  130. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/SiteAdder.js.map +1 -1
  131. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.d.ts +24 -0
  132. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.d.ts.map +1 -0
  133. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js +46 -0
  134. package/dist/core/components/viewers/map/src/tools/AddTools/AddSite/persistSite.js.map +1 -0
  135. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.d.ts +1 -0
  136. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.d.ts.map +1 -1
  137. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js +1 -0
  138. package/dist/core/components/viewers/map/utils/MapEventManager/MapClickManager.js.map +1 -1
  139. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.d.ts.map +1 -1
  140. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js +54 -31
  141. package/dist/core/components/viewers/pointcloud/src/PointCloudLoadingState/index.js.map +1 -1
  142. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js +1 -1
  143. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/index.js.map +1 -1
  144. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts +2 -1
  145. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.d.ts.map +1 -1
  146. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js +5 -4
  147. package/dist/core/components/viewers/pointcloud/src/PointCloudSidebar/src/FileTab/src/PointCloudSection.js.map +1 -1
  148. package/dist/core/hooks/sites/createSiteHooks.d.ts.map +1 -1
  149. package/dist/core/hooks/sites/createSiteHooks.js +0 -1
  150. package/dist/core/hooks/sites/createSiteHooks.js.map +1 -1
  151. package/dist/core/hooks/useCaptureScreenshot.d.ts.map +1 -1
  152. package/dist/core/hooks/useCaptureScreenshot.js +111 -33
  153. package/dist/core/hooks/useCaptureScreenshot.js.map +1 -1
  154. package/dist/core/hooks/useCurrentViewerPosition.d.ts +18 -0
  155. package/dist/core/hooks/useCurrentViewerPosition.d.ts.map +1 -0
  156. package/dist/core/hooks/useCurrentViewerPosition.js +66 -0
  157. package/dist/core/hooks/useCurrentViewerPosition.js.map +1 -0
  158. package/dist/core/hooks/useShareUrl.d.ts +2 -0
  159. package/dist/core/hooks/useShareUrl.d.ts.map +1 -0
  160. package/dist/core/hooks/useShareUrl.js +74 -0
  161. package/dist/core/hooks/useShareUrl.js.map +1 -0
  162. package/dist/core/store/CombineProviders.d.ts.map +1 -1
  163. package/dist/core/store/CombineProviders.js +2 -0
  164. package/dist/core/store/CombineProviders.js.map +1 -1
  165. package/dist/core/store/MapSites/context.d.ts +16 -0
  166. package/dist/core/store/MapSites/context.d.ts.map +1 -0
  167. package/dist/core/store/MapSites/context.js +29 -0
  168. package/dist/core/store/MapSites/context.js.map +1 -0
  169. package/dist/core/store/MapSites/reducer.d.ts +52 -0
  170. package/dist/core/store/MapSites/reducer.d.ts.map +1 -0
  171. package/dist/core/store/MapSites/reducer.js +70 -0
  172. package/dist/core/store/MapSites/reducer.js.map +1 -0
  173. package/dist/core/store/index.d.ts +1 -0
  174. package/dist/core/store/index.d.ts.map +1 -1
  175. package/dist/core/store/index.js +1 -0
  176. package/dist/core/store/index.js.map +1 -1
  177. package/dist/core/styles/globals.css +46 -33
  178. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ import { MapSitesActions, MapSitesState } from './reducer';
3
+ type InitialStateType = {
4
+ mapSites: MapSitesState;
5
+ };
6
+ export declare const MapSitesContext: React.Context<{
7
+ state: InitialStateType;
8
+ dispatch: React.Dispatch<MapSitesActions>;
9
+ }>;
10
+ export declare const MapSitesProvider: React.FC<React.PropsWithChildren>;
11
+ export declare const useMapSitesContext: () => {
12
+ state: InitialStateType;
13
+ dispatch: React.Dispatch<MapSitesActions>;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/core/store/MapSites/context.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,eAAe,EACf,aAAa,EAEd,MAAM,WAAW,CAAA;AAElB,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,aAAa,CAAA;CACxB,CAAA;AAUD,eAAO,MAAM,eAAe;WACnB,gBAAgB;cACb,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;EAIzC,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAQ9D,CAAA;AAED,eAAO,MAAM,kBAAkB;WAjBtB,gBAAgB;cACb,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;CAgB8B,CAAA"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import {
5
+ MapSitesReducer,
6
+ initialMapSitesState
7
+ } from "./reducer";
8
+ const initialState = {
9
+ mapSites: initialMapSitesState
10
+ };
11
+ const reducer = ({ mapSites }, action) => ({
12
+ mapSites: MapSitesReducer(mapSites, action)
13
+ });
14
+ const MapSitesContext = React.createContext({
15
+ state: initialState,
16
+ dispatch: () => null
17
+ });
18
+ const MapSitesProvider = ({ children }) => {
19
+ const [state, dispatch] = React.useReducer(reducer, initialState);
20
+ const value = React.useMemo(() => ({ state, dispatch }), [state]);
21
+ return /* @__PURE__ */ jsx(MapSitesContext.Provider, { value, children });
22
+ };
23
+ const useMapSitesContext = () => React.useContext(MapSitesContext);
24
+ export {
25
+ MapSitesContext,
26
+ MapSitesProvider,
27
+ useMapSitesContext
28
+ };
29
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/store/MapSites/context.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 {\r\n MapSitesReducer,\r\n MapSitesActions,\r\n MapSitesState,\r\n initialMapSitesState,\r\n} from './reducer'\r\n\r\ntype InitialStateType = {\r\n mapSites: MapSitesState\r\n}\r\n\r\nconst initialState: InitialStateType = {\r\n mapSites: initialMapSitesState,\r\n}\r\n\r\nconst reducer = ({ mapSites }: InitialStateType, action: MapSitesActions) => ({\r\n mapSites: MapSitesReducer(mapSites, action),\r\n})\r\n\r\nexport const MapSitesContext = React.createContext<{\r\n state: InitialStateType\r\n dispatch: React.Dispatch<MapSitesActions>\r\n}>({\r\n state: initialState,\r\n dispatch: () => null,\r\n})\r\n\r\nexport const MapSitesProvider: React.FC<React.PropsWithChildren> = ({ children }) => {\r\n const [state, dispatch] = React.useReducer(reducer, initialState)\r\n const value = React.useMemo(() => ({ state, dispatch }), [state])\r\n return (\r\n <MapSitesContext.Provider value={value}>\r\n {children}\r\n </MapSitesContext.Provider>\r\n )\r\n}\r\n\r\nexport const useMapSitesContext = () => React.useContext(MapSitesContext)\r\n"],"mappings":";AAqCI;AAhCJ,YAAY,WAAW;AACvB;AAAA,EACE;AAAA,EAGA;AAAA,OACK;AAMP,MAAM,eAAiC;AAAA,EACrC,UAAU;AACZ;AAEA,MAAM,UAAU,CAAC,EAAE,SAAS,GAAqB,YAA6B;AAAA,EAC5E,UAAU,gBAAgB,UAAU,MAAM;AAC5C;AAEO,MAAM,kBAAkB,MAAM,cAGlC;AAAA,EACD,OAAO;AAAA,EACP,UAAU,MAAM;AAClB,CAAC;AAEM,MAAM,mBAAsD,CAAC,EAAE,SAAS,MAAM;AACnF,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,WAAW,SAAS,YAAY;AAChE,QAAM,QAAQ,MAAM,QAAQ,OAAO,EAAE,OAAO,SAAS,IAAI,CAAC,KAAK,CAAC;AAChE,SACE,oBAAC,gBAAgB,UAAhB,EAAyB,OACvB,UACH;AAEJ;AAEO,MAAM,qBAAqB,MAAM,MAAM,WAAW,eAAe;","names":[]}
@@ -0,0 +1,52 @@
1
+ import { ActionMap } from '../ActionMap';
2
+ /**
3
+ * A site polygon currently shown on the map. The polygon geometry itself is
4
+ * persisted as a GeoJSON file in minio (referenced by `assetId`/`fileId`); this
5
+ * is the in-memory representation that drives the SiteLayer rendering.
6
+ */
7
+ export interface ShownSite {
8
+ /** DB site id */
9
+ id: number;
10
+ name: string;
11
+ /** Outer ring vertices [lng, lat], open (no repeated closing point) */
12
+ ring: [number, number][];
13
+ /** minio object key of the geometry geojson, for re-upload when edited */
14
+ assetId?: string;
15
+ /** DB file id of the geometry geojson, for deletion */
16
+ fileId?: number;
17
+ }
18
+ export interface MapSitesState {
19
+ /** Sites currently rendered on the map. */
20
+ sites: ShownSite[];
21
+ /** Site whose vertices are currently being dragged/edited, if any. */
22
+ editingSiteId: number | null;
23
+ }
24
+ export type MapSitesPayload = {
25
+ ['SHOW_SITE']: {
26
+ site: ShownSite;
27
+ };
28
+ ['HIDE_SITE']: {
29
+ id: number;
30
+ };
31
+ ['UPDATE_SITE_RING']: {
32
+ id: number;
33
+ ring: [number, number][];
34
+ };
35
+ ['UPDATE_SITE_NAME']: {
36
+ id: number;
37
+ name: string;
38
+ };
39
+ ['SET_SITE_GEOMETRY_REF']: {
40
+ id: number;
41
+ assetId?: string;
42
+ fileId?: number;
43
+ };
44
+ ['SET_EDITING_SITE']: {
45
+ id: number | null;
46
+ };
47
+ ['CLEAR_SITES']: undefined;
48
+ };
49
+ export type MapSitesActions = ActionMap<MapSitesPayload>[keyof ActionMap<MapSitesPayload>];
50
+ export declare const initialMapSitesState: MapSitesState;
51
+ export declare const MapSitesReducer: (state: MapSitesState, action: MapSitesActions) => MapSitesState;
52
+ //# sourceMappingURL=reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../../src/core/store/MapSites/reducer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;IACxB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,sEAAsE;IACtE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAA;IAClC,CAAC,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7B,CAAC,kBAAkB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;KAAE,CAAA;IAC9D,CAAC,kBAAkB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,CAAC,uBAAuB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5E,CAAC,kBAAkB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC3C,CAAC,aAAa,CAAC,EAAE,SAAS,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,eAAe,GACvB,SAAS,CAAC,eAAe,CAAC,CAAC,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC,CAAA;AAEhE,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,OAAO,aAAa,EACpB,QAAQ,eAAe,KACtB,aA6CF,CAAA"}
@@ -0,0 +1,70 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ const initialMapSitesState = {
21
+ sites: [],
22
+ editingSiteId: null
23
+ };
24
+ const MapSitesReducer = (state, action) => {
25
+ switch (action.type) {
26
+ case "SHOW_SITE": {
27
+ const { site } = action.payload;
28
+ const others = state.sites.filter((s) => s.id !== site.id);
29
+ return __spreadProps(__spreadValues({}, state), { sites: [...others, site] });
30
+ }
31
+ case "HIDE_SITE": {
32
+ const { id } = action.payload;
33
+ return __spreadProps(__spreadValues({}, state), {
34
+ sites: state.sites.filter((s) => s.id !== id),
35
+ editingSiteId: state.editingSiteId === id ? null : state.editingSiteId
36
+ });
37
+ }
38
+ case "UPDATE_SITE_RING": {
39
+ const { id, ring } = action.payload;
40
+ return __spreadProps(__spreadValues({}, state), {
41
+ sites: state.sites.map((s) => s.id === id ? __spreadProps(__spreadValues({}, s), { ring }) : s)
42
+ });
43
+ }
44
+ case "UPDATE_SITE_NAME": {
45
+ const { id, name } = action.payload;
46
+ return __spreadProps(__spreadValues({}, state), {
47
+ sites: state.sites.map((s) => s.id === id ? __spreadProps(__spreadValues({}, s), { name }) : s)
48
+ });
49
+ }
50
+ case "SET_SITE_GEOMETRY_REF": {
51
+ const { id, assetId, fileId } = action.payload;
52
+ return __spreadProps(__spreadValues({}, state), {
53
+ sites: state.sites.map((s) => s.id === id ? __spreadProps(__spreadValues({}, s), { assetId, fileId }) : s)
54
+ });
55
+ }
56
+ case "SET_EDITING_SITE": {
57
+ const { id } = action.payload;
58
+ return __spreadProps(__spreadValues({}, state), { editingSiteId: id });
59
+ }
60
+ case "CLEAR_SITES":
61
+ return __spreadProps(__spreadValues({}, state), { sites: [], editingSiteId: null });
62
+ default:
63
+ return state;
64
+ }
65
+ };
66
+ export {
67
+ MapSitesReducer,
68
+ initialMapSitesState
69
+ };
70
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/core/store/MapSites/reducer.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nimport { ActionMap } from '../ActionMap'\r\n\r\n/**\r\n * A site polygon currently shown on the map. The polygon geometry itself is\r\n * persisted as a GeoJSON file in minio (referenced by `assetId`/`fileId`); this\r\n * is the in-memory representation that drives the SiteLayer rendering.\r\n */\r\nexport interface ShownSite {\r\n /** DB site id */\r\n id: number\r\n name: string\r\n /** Outer ring vertices [lng, lat], open (no repeated closing point) */\r\n ring: [number, number][]\r\n /** minio object key of the geometry geojson, for re-upload when edited */\r\n assetId?: string\r\n /** DB file id of the geometry geojson, for deletion */\r\n fileId?: number\r\n}\r\n\r\nexport interface MapSitesState {\r\n /** Sites currently rendered on the map. */\r\n sites: ShownSite[]\r\n /** Site whose vertices are currently being dragged/edited, if any. */\r\n editingSiteId: number | null\r\n}\r\n\r\nexport type MapSitesPayload = {\r\n ['SHOW_SITE']: { site: ShownSite }\r\n ['HIDE_SITE']: { id: number }\r\n ['UPDATE_SITE_RING']: { id: number, ring: [number, number][] }\r\n ['UPDATE_SITE_NAME']: { id: number, name: string }\r\n ['SET_SITE_GEOMETRY_REF']: { id: number, assetId?: string, fileId?: number }\r\n ['SET_EDITING_SITE']: { id: number | null }\r\n ['CLEAR_SITES']: undefined\r\n}\r\n\r\nexport type MapSitesActions\r\n = ActionMap<MapSitesPayload>[keyof ActionMap<MapSitesPayload>]\r\n\r\nexport const initialMapSitesState: MapSitesState = {\r\n sites: [],\r\n editingSiteId: null,\r\n}\r\n\r\nexport const MapSitesReducer = (\r\n state: MapSitesState,\r\n action: MapSitesActions,\r\n): MapSitesState => {\r\n switch (action.type) {\r\n case 'SHOW_SITE': {\r\n const { site } = action.payload!\r\n const others = state.sites.filter(s => s.id !== site.id)\r\n return { ...state, sites: [...others, site] }\r\n }\r\n case 'HIDE_SITE': {\r\n const { id } = action.payload!\r\n return {\r\n ...state,\r\n sites: state.sites.filter(s => s.id !== id),\r\n editingSiteId: state.editingSiteId === id ? null : state.editingSiteId,\r\n }\r\n }\r\n case 'UPDATE_SITE_RING': {\r\n const { id, ring } = action.payload!\r\n return {\r\n ...state,\r\n sites: state.sites.map(s => (s.id === id ? { ...s, ring } : s)),\r\n }\r\n }\r\n case 'UPDATE_SITE_NAME': {\r\n const { id, name } = action.payload!\r\n return {\r\n ...state,\r\n sites: state.sites.map(s => (s.id === id ? { ...s, name } : s)),\r\n }\r\n }\r\n case 'SET_SITE_GEOMETRY_REF': {\r\n const { id, assetId, fileId } = action.payload!\r\n return {\r\n ...state,\r\n sites: state.sites.map(s => (s.id === id ? { ...s, assetId, fileId } : s)),\r\n }\r\n }\r\n case 'SET_EDITING_SITE': {\r\n const { id } = action.payload!\r\n return { ...state, editingSiteId: id }\r\n }\r\n case 'CLEAR_SITES':\r\n return { ...state, sites: [], editingSiteId: null }\r\n default:\r\n return state\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA0CO,MAAM,uBAAsC;AAAA,EACjD,OAAO,CAAC;AAAA,EACR,eAAe;AACjB;AAEO,MAAM,kBAAkB,CAC7B,OACA,WACkB;AAClB,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,aAAa;AAChB,YAAM,EAAE,KAAK,IAAI,OAAO;AACxB,YAAM,SAAS,MAAM,MAAM,OAAO,OAAK,EAAE,OAAO,KAAK,EAAE;AACvD,aAAO,iCAAK,QAAL,EAAY,OAAO,CAAC,GAAG,QAAQ,IAAI,EAAE;AAAA,IAC9C;AAAA,IACA,KAAK,aAAa;AAChB,YAAM,EAAE,GAAG,IAAI,OAAO;AACtB,aAAO,iCACF,QADE;AAAA,QAEL,OAAO,MAAM,MAAM,OAAO,OAAK,EAAE,OAAO,EAAE;AAAA,QAC1C,eAAe,MAAM,kBAAkB,KAAK,OAAO,MAAM;AAAA,MAC3D;AAAA,IACF;AAAA,IACA,KAAK,oBAAoB;AACvB,YAAM,EAAE,IAAI,KAAK,IAAI,OAAO;AAC5B,aAAO,iCACF,QADE;AAAA,QAEL,OAAO,MAAM,MAAM,IAAI,OAAM,EAAE,OAAO,KAAK,iCAAK,IAAL,EAAQ,KAAK,KAAI,CAAE;AAAA,MAChE;AAAA,IACF;AAAA,IACA,KAAK,oBAAoB;AACvB,YAAM,EAAE,IAAI,KAAK,IAAI,OAAO;AAC5B,aAAO,iCACF,QADE;AAAA,QAEL,OAAO,MAAM,MAAM,IAAI,OAAM,EAAE,OAAO,KAAK,iCAAK,IAAL,EAAQ,KAAK,KAAI,CAAE;AAAA,MAChE;AAAA,IACF;AAAA,IACA,KAAK,yBAAyB;AAC5B,YAAM,EAAE,IAAI,SAAS,OAAO,IAAI,OAAO;AACvC,aAAO,iCACF,QADE;AAAA,QAEL,OAAO,MAAM,MAAM,IAAI,OAAM,EAAE,OAAO,KAAK,iCAAK,IAAL,EAAQ,SAAS,OAAO,KAAI,CAAE;AAAA,MAC3E;AAAA,IACF;AAAA,IACA,KAAK,oBAAoB;AACvB,YAAM,EAAE,GAAG,IAAI,OAAO;AACtB,aAAO,iCAAK,QAAL,EAAY,eAAe,GAAG;AAAA,IACvC;AAAA,IACA,KAAK;AACH,aAAO,iCAAK,QAAL,EAAY,OAAO,CAAC,GAAG,eAAe,KAAK;AAAA,IACpD;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
@@ -6,6 +6,7 @@ export * from './BIM/context';
6
6
  export * from './Files/context';
7
7
  export * from './Buildings/context';
8
8
  export * from './Datasets/context';
9
+ export * from './MapSites/context';
9
10
  export * from './PointCloud/context';
10
11
  export * from './Permissions/context';
11
12
  export * from './CombineProviders';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/store/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/store/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA"}
@@ -6,6 +6,7 @@ export * from "./BIM/context";
6
6
  export * from "./Files/context";
7
7
  export * from "./Buildings/context";
8
8
  export * from "./Datasets/context";
9
+ export * from "./MapSites/context";
9
10
  export * from "./PointCloud/context";
10
11
  export * from "./Permissions/context";
11
12
  export * from "./CombineProviders";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/store/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nexport * from './AppConfig/context'\r\nexport * from './Map/context'\r\nexport * from './Menus/context'\r\nexport * from './Tools/context'\r\nexport * from './BIM/context'\r\nexport * from './Files/context'\r\nexport * from './Buildings/context'\r\nexport * from './Datasets/context'\r\nexport * from './PointCloud/context'\r\nexport * from './Permissions/context'\r\nexport * from './CombineProviders'"],"mappings":"AAGA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/core/store/index.ts"],"sourcesContent":["// SPDX-License-Identifier: AGPL-3.0-or-later\r\n// Copyright (C) 2025 Collab Digital Twins\r\n\r\nexport * from './AppConfig/context'\r\nexport * from './Map/context'\r\nexport * from './Menus/context'\r\nexport * from './Tools/context'\r\nexport * from './BIM/context'\r\nexport * from './Files/context'\r\nexport * from './Buildings/context'\r\nexport * from './Datasets/context'\r\nexport * from './MapSites/context'\r\nexport * from './PointCloud/context'\r\nexport * from './Permissions/context'\r\nexport * from './CombineProviders'"],"mappings":"AAGA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -963,29 +963,6 @@ ul {
963
963
  color: white;
964
964
  }
965
965
 
966
- /* smooths any reverse transitions */
967
- .maplibregl-ctrl-bottom-left,
968
- .maplibregl-ctrl-bottom-right {
969
- transform: translateY(-75px);
970
- transition: transform 400ms ease-in-out;
971
- }
972
-
973
- .map-ctrls-init {
974
- transform: translateY(0px);
975
- transition: transform 400ms ease-in-out;
976
- }
977
-
978
- /* sliding to match toolbar behavior */
979
- .mobile-map-ctrls {
980
- transform: translateY(-75px);
981
- transition: transform 300ms ease-in-out;
982
- }
983
-
984
- .mobile-map-ctrls-expanded {
985
- transform: translateY(-255px);
986
- transition: transform 250ms ease-in-out;
987
- }
988
-
989
966
  .center-align {
990
967
  display: flex;
991
968
  flex-direction: column;
@@ -998,7 +975,6 @@ ul {
998
975
  white-space: nowrap !important;
999
976
  overflow: hidden !important;
1000
977
  text-overflow: ellipsis !important;
1001
- z-index: -1 !important;
1002
978
  }
1003
979
 
1004
980
  .maplibregl-ctrl-bottom-right details:hover {
@@ -1010,15 +986,6 @@ ul {
1010
986
  background-color: white !important;
1011
987
  }
1012
988
 
1013
- @media only screen and (min-width: 475px) {
1014
- /* smooths any reverse transitions */
1015
- .maplibregl-ctrl-bottom-left,
1016
- .maplibregl-ctrl-bottom-right {
1017
- transform: translateY(0px);
1018
- transition: transform 400ms ease-in-out;
1019
- }
1020
- }
1021
-
1022
989
  @media only screen and (max-width: 600px) {
1023
990
  .maplibregl-ctrl-zoom-in {
1024
991
  opacity: 0;
@@ -1052,6 +1019,52 @@ ul {
1052
1019
  }
1053
1020
  }
1054
1021
 
1022
+ @media (max-width: 768px) {
1023
+ .maplibregl-ctrl-bottom-right {
1024
+ margin-bottom: 48px !important;
1025
+ font-size: 10px !important;
1026
+ /* The floating map toolbar (bottom, centered) sits at z-10 — without
1027
+ this, it renders on top of (hides) the attribution popup instead of
1028
+ the popup coming forward/in front of it when tapped open. This
1029
+ container is already `position: absolute` via MapLibre's own base
1030
+ CSS, so z-index applies directly here. */
1031
+ z-index: 30 !important;
1032
+ }
1033
+
1034
+ /* MapLibre auto-adds `open` + `.maplibregl-compact-show` together once on
1035
+ mount for narrow viewports (attribution_control.ts _updateCompact()).
1036
+ Trying to distinguish that from a genuine tap via those same
1037
+ classes/attributes is unreliable — tapping <summary> fires BOTH the
1038
+ browser's native <details> toggle AND MapLibre's own JS toggle at once,
1039
+ which can reproduce the same "both present" combination on a real tap
1040
+ too. Side-step MapLibre's class bookkeeping entirely: force hidden
1041
+ always, reveal only on real, live interaction (:hover for pointer
1042
+ devices, :focus-within once tapped/focused, :active as a fallback for
1043
+ iOS Safari's unreliable tap-to-focus on button-like elements). */
1044
+ .maplibregl-ctrl-bottom-right .maplibregl-ctrl-attrib-inner {
1045
+ display: none !important;
1046
+ }
1047
+
1048
+ .maplibregl-ctrl-bottom-right details:hover .maplibregl-ctrl-attrib-inner,
1049
+ .maplibregl-ctrl-bottom-right details:focus-within .maplibregl-ctrl-attrib-inner,
1050
+ .maplibregl-ctrl-bottom-right details:active .maplibregl-ctrl-attrib-inner {
1051
+ display: block !important;
1052
+ max-width: calc(100vw - 20px) !important;
1053
+ width: auto !important;
1054
+ white-space: normal !important;
1055
+ word-break: break-word !important;
1056
+ overflow-wrap: break-word !important;
1057
+ font-size: 10px !important;
1058
+ box-sizing: border-box !important;
1059
+ }
1060
+
1061
+ .maplibregl-ctrl-bottom-right details:hover,
1062
+ .maplibregl-ctrl-bottom-right details:focus-within,
1063
+ .maplibregl-ctrl-bottom-right details:active {
1064
+ overflow: visible !important;
1065
+ }
1066
+ }
1067
+
1055
1068
  /* Home page styles */
1056
1069
  @layer utilities {
1057
1070
  .gradient-button {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@collabdt/core",
3
- "version": "0.0.57",
3
+ "version": "0.2.1",
4
4
  "description": "CDT Core contains all the core technology for your CDT platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",