@terraware/web-components 5.0.26-rc.1 → 5.0.27-rc.0

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 (296) hide show
  1. package/components/AntSwitch/index.js +19 -22
  2. package/components/Autocomplete/Autocomplete.js +106 -130
  3. package/components/Badge/index.js +28 -29
  4. package/components/BusySpinner/index.js +40 -45
  5. package/components/Button/Button.js +41 -47
  6. package/components/Checkbox.js +64 -63
  7. package/components/Confirm/index.js +74 -83
  8. package/components/DatePicker/DatePicker.js +138 -141
  9. package/components/DialogBox/DialogBox.js +111 -118
  10. package/components/Divisor.js +18 -18
  11. package/components/Dropdown.js +66 -94
  12. package/components/EditableTable/index.js +211 -271
  13. package/components/ErrorBox/ErrorBox.js +47 -49
  14. package/components/FileChooser/index.js +117 -135
  15. package/components/FormBottomBar/index.js +75 -84
  16. package/components/Icon/Icon.js +12 -20
  17. package/components/Icon/icons/index.js +256 -256
  18. package/components/IconTooltip/index.js +49 -60
  19. package/components/Map/MapBox.js +545 -452
  20. package/components/Map/MapContainer.js +25 -29
  21. package/components/Map/MapDateSliderControl.js +64 -64
  22. package/components/Map/MapDrawer.js +41 -47
  23. package/components/Map/MapLegend.js +176 -172
  24. package/components/Map/MapViewStyleControl.js +59 -63
  25. package/components/Map/ReactMapboxWrapper.js +3 -2
  26. package/components/Map/index.js +161 -180
  27. package/components/Map/types.js +12 -17
  28. package/components/Map/useMaintainLayerOrder.js +16 -26
  29. package/components/Markdown/index.js +25 -26
  30. package/components/Message/Message.js +73 -76
  31. package/components/MultiSelect/index.js +112 -124
  32. package/components/Navbar/NavFooter.js +9 -13
  33. package/components/Navbar/NavItem.js +70 -76
  34. package/components/Navbar/NavSection.js +17 -19
  35. package/components/Navbar/Navbar.js +39 -46
  36. package/components/Navbar/SubNavbar.js +9 -13
  37. package/components/Note.js +18 -22
  38. package/components/OverlayModal/OverlayModal.js +56 -63
  39. package/components/PageForm/index.js +33 -41
  40. package/components/PhotoChooser/index.js +165 -173
  41. package/components/PhotosCarousel/PhotoSlide.js +32 -35
  42. package/components/PhotosCarousel/index.js +80 -85
  43. package/components/PhotosCarousel/usePhotosCarousel.js +69 -76
  44. package/components/Pill/index.js +41 -45
  45. package/components/PillList/index.js +17 -24
  46. package/components/PlacementWrapper/index.js +38 -59
  47. package/components/PopoverMenu/Popover.js +68 -85
  48. package/components/PopoverMenu/index.js +51 -56
  49. package/components/PopoverMultiSelect/index.js +52 -59
  50. package/components/ProgressCircle/ProgressCircle.js +28 -32
  51. package/components/RadioButton.js +17 -19
  52. package/components/Select/Select.js +13 -15
  53. package/components/Select/SelectT.js +235 -250
  54. package/components/Separator/index.js +14 -17
  55. package/components/Size.js +0 -1
  56. package/components/Slider/index.js +43 -56
  57. package/components/SummaryBox.js +70 -72
  58. package/components/Tabs/index.js +133 -135
  59. package/components/TextTruncated/index.js +117 -130
  60. package/components/Textfield/Textfield.js +158 -190
  61. package/components/Textfield/TruncatedTextArea.js +70 -84
  62. package/components/TimelineSlider/TimelineMarker.js +25 -30
  63. package/components/TimelineSlider/TimelineRail.js +8 -11
  64. package/components/TimelineSlider/index.js +64 -66
  65. package/components/TimelineSliderV2/ClusterBadge.js +25 -29
  66. package/components/TimelineSliderV2/TimelineDot.js +31 -35
  67. package/components/TimelineSliderV2/TimelineRail.js +8 -11
  68. package/components/TimelineSliderV2/index.js +121 -103
  69. package/components/TimelineSliderV2/layout.js +124 -147
  70. package/components/TimelineSliderV2/types.js +0 -1
  71. package/components/Tooltip/Tooltip.js +47 -56
  72. package/components/ViewPhotosDialog/index.js +28 -35
  73. package/components/VirtualWalkthrough/Annotation.js +163 -207
  74. package/components/VirtualWalkthrough/AnnotationEditPane.js +198 -184
  75. package/components/VirtualWalkthrough/AnnotationPanel.js +187 -199
  76. package/components/VirtualWalkthrough/Application.js +31 -34
  77. package/components/VirtualWalkthrough/AutoRotator.js +85 -223
  78. package/components/VirtualWalkthrough/BlockingSpinner.js +26 -28
  79. package/components/VirtualWalkthrough/BoundaryRing.js +30 -34
  80. package/components/VirtualWalkthrough/BoundaryWall.js +32 -36
  81. package/components/VirtualWalkthrough/CameraInfo.js +100 -89
  82. package/components/VirtualWalkthrough/ControlsInfoPane.js +254 -195
  83. package/components/VirtualWalkthrough/GradientSky.js +72 -73
  84. package/components/VirtualWalkthrough/SplatControls.js +209 -221
  85. package/components/VirtualWalkthrough/SplatCrop.js +21 -20
  86. package/components/VirtualWalkthrough/SplatFadeCrop.js +21 -20
  87. package/components/VirtualWalkthrough/SplatModel.js +65 -85
  88. package/components/VirtualWalkthrough/SplatRevealRain.js +41 -46
  89. package/components/VirtualWalkthrough/TfAnnotationManager.js +197 -379
  90. package/components/VirtualWalkthrough/TfXrNavigation.js +73 -162
  91. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.js +438 -431
  92. package/components/VirtualWalkthrough/VrAnnotationPanel.js +18 -22
  93. package/components/VirtualWalkthrough/XrAnnotationInteraction.js +14 -17
  94. package/components/VirtualWalkthrough/XrExitButton.js +14 -17
  95. package/components/VirtualWalkthrough/XrGazeDwell.js +14 -17
  96. package/components/VirtualWalkthrough/XrPointerRay.js +14 -17
  97. package/components/VirtualWalkthrough/XrStartPose.js +67 -121
  98. package/components/VirtualWalkthrough/boundary-ring.js +87 -117
  99. package/components/VirtualWalkthrough/boundary-wall.js +175 -258
  100. package/components/VirtualWalkthrough/camera-adoption.js +18 -64
  101. package/components/VirtualWalkthrough/groundPlane.js +32 -47
  102. package/components/VirtualWalkthrough/gsplat-fade-crop-effect.js +35 -35
  103. package/components/VirtualWalkthrough/splatFormat.js +13 -47
  104. package/components/VirtualWalkthrough/useAdoptedCamera.js +23 -44
  105. package/components/VirtualWalkthrough/useRestartOnVr.js +26 -37
  106. package/components/VirtualWalkthrough/useXrRenderTuning.js +33 -54
  107. package/components/VirtualWalkthrough/vr-annotation-panel-layout.js +67 -99
  108. package/components/VirtualWalkthrough/vr-annotation-panel.js +403 -433
  109. package/components/VirtualWalkthrough/vr-annotation-scroll.js +10 -28
  110. package/components/VirtualWalkthrough/walkthrough-camera.js +204 -329
  111. package/components/VirtualWalkthrough/xr-annotation-candidate-buffer.js +39 -80
  112. package/components/VirtualWalkthrough/xr-annotation-candidates.js +6 -18
  113. package/components/VirtualWalkthrough/xr-annotation-interaction.js +31 -56
  114. package/components/VirtualWalkthrough/xr-annotation-targeting.js +22 -38
  115. package/components/VirtualWalkthrough/xr-button-arming.js +7 -17
  116. package/components/VirtualWalkthrough/xr-button-hold.js +22 -36
  117. package/components/VirtualWalkthrough/xr-exit-button-mask.js +22 -36
  118. package/components/VirtualWalkthrough/xr-exit-button.js +148 -207
  119. package/components/VirtualWalkthrough/xr-face-buttons.js +19 -29
  120. package/components/VirtualWalkthrough/xr-gaze-dwell-state.js +23 -34
  121. package/components/VirtualWalkthrough/xr-gaze-dwell.js +107 -144
  122. package/components/VirtualWalkthrough/xr-interactive-ui.js +12 -24
  123. package/components/VirtualWalkthrough/xr-pointer-ray.js +13 -20
  124. package/components/VirtualWalkthrough/xr-progress-pie-material.js +117 -88
  125. package/components/VirtualWalkthrough/xr-progress-pie.js +1 -10
  126. package/components/VirtualWalkthrough/xr-ray-quad.js +16 -30
  127. package/components/VirtualWalkthrough/xr-render-tuning.js +17 -48
  128. package/components/VirtualWalkthrough/xr-scene-bounds.js +21 -37
  129. package/components/VirtualWalkthrough/xr-start-pose.js +27 -73
  130. package/components/VirtualWalkthrough/xr-teleport-gesture.js +16 -42
  131. package/components/svg/BlobbyGrayIconImage.js +41 -39
  132. package/components/svg/BlobbyGrayIconImport.js +41 -39
  133. package/components/svg/BlobbyGrayIconUploadToTheCloud.js +41 -39
  134. package/components/svg/BlobbyIconCloudChecked.js +202 -164
  135. package/components/svg/BlobbyIconExportOrUploadPhoto.js +202 -164
  136. package/components/svg/BlobbyIconFolder.js +202 -164
  137. package/components/svg/BlobbyIconGraphReport.js +202 -164
  138. package/components/svg/BlobbyIconHappy.js +202 -164
  139. package/components/svg/BlobbyIconHeartMonitor.js +202 -164
  140. package/components/svg/BlobbyIconLeaf.js +202 -164
  141. package/components/svg/BlobbyIconLibrary.js +202 -164
  142. package/components/svg/BlobbyIconNursery.js +204 -166
  143. package/components/svg/BlobbyIconOrganization.js +202 -164
  144. package/components/svg/BlobbyIconParchment.js +202 -164
  145. package/components/svg/BlobbyIconPeople.js +202 -164
  146. package/components/svg/BlobbyIconSeedBank.js +202 -164
  147. package/components/svg/BlobbyIconSeedling.js +202 -164
  148. package/components/svg/BlobbyIconSeeds.js +202 -164
  149. package/components/svg/BlobbyIconSite.js +206 -167
  150. package/components/svg/BlobbyIconSparkles.js +202 -164
  151. package/components/svg/BlobbyIconWrench.js +202 -164
  152. package/components/svg/Bug.js +19 -21
  153. package/components/svg/Calendar.js +19 -21
  154. package/components/svg/CaretDown.js +19 -21
  155. package/components/svg/CaretLeft.js +19 -21
  156. package/components/svg/CaretRight.js +19 -21
  157. package/components/svg/CaretUp.js +19 -21
  158. package/components/svg/ChevronDown.js +19 -21
  159. package/components/svg/ChevronUp.js +19 -21
  160. package/components/svg/Close.js +19 -21
  161. package/components/svg/Critical.js +19 -21
  162. package/components/svg/Edit.js +202 -164
  163. package/components/svg/Error.js +19 -21
  164. package/components/svg/Filter.js +19 -21
  165. package/components/svg/Folder.js +19 -21
  166. package/components/svg/Help.js +19 -21
  167. package/components/svg/Home.js +19 -21
  168. package/components/svg/IconAdd.js +19 -21
  169. package/components/svg/IconArrowRight.js +21 -23
  170. package/components/svg/IconBusinessNetwork.js +19 -21
  171. package/components/svg/IconCalendar.js +19 -21
  172. package/components/svg/IconCancel.js +19 -21
  173. package/components/svg/IconChargingBattery.js +19 -21
  174. package/components/svg/IconChecklist.js +21 -23
  175. package/components/svg/IconCheckmark.js +19 -21
  176. package/components/svg/IconCoinInHand.js +19 -21
  177. package/components/svg/IconColumns.js +19 -21
  178. package/components/svg/IconComment.js +20 -22
  179. package/components/svg/IconDashboard.js +19 -21
  180. package/components/svg/IconDataMigration.js +19 -21
  181. package/components/svg/IconDocument.js +21 -23
  182. package/components/svg/IconDownloadFromTheCloud.js +21 -23
  183. package/components/svg/IconEdit.js +21 -23
  184. package/components/svg/IconExpand.js +21 -23
  185. package/components/svg/IconExport.js +19 -21
  186. package/components/svg/IconExternalLink.js +19 -21
  187. package/components/svg/IconEye.js +19 -21
  188. package/components/svg/IconEyeOff.js +19 -21
  189. package/components/svg/IconFile.js +19 -21
  190. package/components/svg/IconFolder.js +19 -21
  191. package/components/svg/IconFullScreen.js +20 -22
  192. package/components/svg/IconFutures.js +19 -21
  193. package/components/svg/IconGraphReport.js +19 -21
  194. package/components/svg/IconGrid.js +19 -21
  195. package/components/svg/IconHeartMonitor.js +19 -21
  196. package/components/svg/IconHelp.js +21 -23
  197. package/components/svg/IconHistory.js +19 -21
  198. package/components/svg/IconImport.js +19 -21
  199. package/components/svg/IconIndex.js +19 -21
  200. package/components/svg/IconLayers.js +19 -21
  201. package/components/svg/IconLibrary.js +20 -22
  202. package/components/svg/IconList.js +19 -21
  203. package/components/svg/IconLivePlant.js +19 -21
  204. package/components/svg/IconLocations.js +19 -21
  205. package/components/svg/IconMail.js +19 -21
  206. package/components/svg/IconManager.js +19 -21
  207. package/components/svg/IconMap.js +19 -21
  208. package/components/svg/IconMarker.js +19 -21
  209. package/components/svg/IconMenu.js +19 -21
  210. package/components/svg/IconMenuHorizontal.js +19 -21
  211. package/components/svg/IconModule.js +19 -21
  212. package/components/svg/IconMyLocation.js +19 -21
  213. package/components/svg/IconNote.js +21 -23
  214. package/components/svg/IconNursery.js +21 -23
  215. package/components/svg/IconOrg.js +19 -21
  216. package/components/svg/IconParchment.js +19 -21
  217. package/components/svg/IconPhoto.js +19 -21
  218. package/components/svg/IconPlantsFilled.js +19 -21
  219. package/components/svg/IconRedo.js +19 -21
  220. package/components/svg/IconRestorationSite.js +19 -21
  221. package/components/svg/IconSeedBank.js +19 -21
  222. package/components/svg/IconSeedling.js +19 -21
  223. package/components/svg/IconSettings.js +19 -21
  224. package/components/svg/IconSlice.js +19 -21
  225. package/components/svg/IconSubmit.js +19 -21
  226. package/components/svg/IconSubtract.js +21 -23
  227. package/components/svg/IconSynced.js +19 -21
  228. package/components/svg/IconTrashCan.js +19 -21
  229. package/components/svg/IconTreasureMap.js +19 -21
  230. package/components/svg/IconUnavailable.js +19 -21
  231. package/components/svg/IconUndo.js +19 -21
  232. package/components/svg/IconVariable.js +19 -21
  233. package/components/svg/IconVideo.js +30 -31
  234. package/components/svg/IconWifi.js +19 -21
  235. package/components/svg/Info.js +19 -21
  236. package/components/svg/Key.js +19 -21
  237. package/components/svg/Leaf.js +19 -21
  238. package/components/svg/Lock.js +19 -21
  239. package/components/svg/Logo.js +48 -43
  240. package/components/svg/MenuVertical.js +19 -21
  241. package/components/svg/Notification.js +19 -21
  242. package/components/svg/Person.js +19 -21
  243. package/components/svg/Plus.js +19 -21
  244. package/components/svg/RestorationSite.js +19 -21
  245. package/components/svg/Search.js +19 -21
  246. package/components/svg/Seeds.js +19 -21
  247. package/components/svg/Site.js +19 -21
  248. package/components/svg/Sparkles.js +19 -21
  249. package/components/svg/Species.js +19 -21
  250. package/components/svg/Species2.js +202 -164
  251. package/components/svg/Spinner.js +54 -48
  252. package/components/svg/Star.js +19 -21
  253. package/components/svg/Success.js +19 -21
  254. package/components/svg/SuccessFilled.js +19 -21
  255. package/components/svg/TerrawareLogoDesktop.js +55 -49
  256. package/components/svg/TerrawareLogoMobile.js +25 -26
  257. package/components/svg/Touchscreen.js +19 -21
  258. package/components/svg/UploadCloud.js +202 -164
  259. package/components/svg/Warning.js +19 -21
  260. package/components/svg/WelcomeClipboard.js +156 -133
  261. package/components/svg/index.js +129 -129
  262. package/components/table/EnhancedTableToolbar.js +68 -74
  263. package/components/table/EnhancedTableToolbarV2.js +31 -41
  264. package/components/table/TableCellRenderer.js +196 -231
  265. package/components/table/TableHeader.js +71 -73
  266. package/components/table/TableHeaderItem.js +97 -102
  267. package/components/table/density.js +18 -19
  268. package/components/table/index.js +350 -369
  269. package/components/table/sort.js +27 -52
  270. package/components/table/types.js +0 -1
  271. package/components/types/index.js +0 -1
  272. package/hooks/cameraEntityContext.js +2 -13
  273. package/hooks/useBoolean.js +17 -13
  274. package/hooks/useCameraPosition.js +56 -56
  275. package/hooks/useDevicePerformance.js +17 -17
  276. package/hooks/useXr.js +85 -87
  277. package/index.js +58 -58
  278. package/license-report.html +1 -1
  279. package/package.json +3 -3
  280. package/setupTests.js +0 -4
  281. package/strings/export.js +111 -170
  282. package/strings/index.js +25 -54
  283. package/strings/locales.js +21 -41
  284. package/strings/strings-en.js +49 -51
  285. package/strings/strings-es.js +49 -51
  286. package/strings/strings-fr.js +49 -51
  287. package/strings/strings-gx.js +49 -51
  288. package/style-dictionary-dist/TerrawareTheme.js +186 -186
  289. package/theme.js +74 -76
  290. package/utils/color.js +8 -15
  291. package/utils/date.js +42 -108
  292. package/utils/index.js +4 -4
  293. package/utils/preventDefaultEvent.js +3 -3
  294. package/utils/text.js +11 -11
  295. package/utils/useDeviceInfo.js +42 -79
  296. package/virtualWalkthrough.js +23 -23
@@ -1,66 +1,62 @@
1
- import { useMemo, useCallback } from 'react';
2
- import { useTheme, Box } from '@mui/material';
3
- import PopoverMenu from '../PopoverMenu/index.js';
4
- import { MapViewStyles } from './types.js';
5
- import { jsx } from 'react/jsx-runtime';
6
-
7
- const MapViewStyleControl = ({
8
- containerId,
9
- mapViewStyle,
10
- mapViewStyleNames,
11
- setMapViewStyle
12
- }) => {
13
- const theme = useTheme();
14
- const viewOptions = useMemo(() => {
15
- return MapViewStyles.map(style => ({
16
- label: mapViewStyleNames?.(style) ?? style,
17
- value: style
18
- }));
19
- }, [mapViewStyleNames]);
20
- const onSelectMapViewStyle = useCallback(item => {
21
- setMapViewStyle(item.value);
22
- }, []);
23
- const container = useMemo(() => {
24
- if (containerId) {
25
- return document.getElementById(containerId);
26
- }
27
- }, [containerId]);
28
- return /*#__PURE__*/jsx(Box, {
29
- sx: {
30
- position: 'absolute',
31
- top: '10px',
32
- left: '45px',
33
- zIndex: 10,
34
- height: 28,
35
- backgroundColor: `${theme.palette.TwClrBaseWhite}`,
36
- borderRadius: '4px',
37
- display: 'flex',
38
- alignItems: 'center',
39
- '& .MuiButtonBase-root': {
40
- padding: 0
41
- },
42
- '& .MuiButtonBase-root.MuiMenuItem-root': {
43
- fontSize: '12px'
44
- },
45
- '& svg': {
46
- marginLeft: 0
47
- }
48
- },
49
- children: /*#__PURE__*/jsx(PopoverMenu, {
50
- anchor: /*#__PURE__*/jsx(Box, {
51
- component: "span",
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useCallback, useMemo } from "react";
3
+ import { Box, useTheme } from "@mui/material";
4
+ import PopoverMenu from "../PopoverMenu/index.js";
5
+ import { MapViewStyles } from "./types.js";
6
+ const MapViewStyleControl = ({ containerId, mapViewStyle, mapViewStyleNames, setMapViewStyle })=>{
7
+ const theme = useTheme();
8
+ const viewOptions = useMemo(()=>MapViewStyles.map((style)=>({
9
+ label: mapViewStyleNames?.(style) ?? style,
10
+ value: style
11
+ })), [
12
+ mapViewStyleNames
13
+ ]);
14
+ const onSelectMapViewStyle = useCallback((item)=>{
15
+ setMapViewStyle(item.value);
16
+ }, []);
17
+ const container = useMemo(()=>{
18
+ if (containerId) return document.getElementById(containerId);
19
+ }, [
20
+ containerId
21
+ ]);
22
+ return /*#__PURE__*/ jsx(Box, {
52
23
  sx: {
53
- fontSize: '12px',
54
- paddingLeft: theme.spacing(0.5),
55
- color: theme.palette.TwClrTxt
24
+ position: 'absolute',
25
+ top: '10px',
26
+ left: '45px',
27
+ zIndex: 10,
28
+ height: 28,
29
+ backgroundColor: `${theme.palette.TwClrBaseWhite}`,
30
+ borderRadius: '4px',
31
+ display: 'flex',
32
+ alignItems: 'center',
33
+ '& .MuiButtonBase-root': {
34
+ padding: 0
35
+ },
36
+ '& .MuiButtonBase-root.MuiMenuItem-root': {
37
+ fontSize: '12px'
38
+ },
39
+ '& svg': {
40
+ marginLeft: 0
41
+ }
56
42
  },
57
- children: mapViewStyleNames?.(mapViewStyle) ?? mapViewStyle
58
- }),
59
- container: container,
60
- menuSections: [viewOptions],
61
- onClick: onSelectMapViewStyle
62
- })
63
- });
43
+ children: /*#__PURE__*/ jsx(PopoverMenu, {
44
+ anchor: /*#__PURE__*/ jsx(Box, {
45
+ component: "span",
46
+ sx: {
47
+ fontSize: '12px',
48
+ paddingLeft: theme.spacing(0.5),
49
+ color: theme.palette.TwClrTxt
50
+ },
51
+ children: mapViewStyleNames?.(mapViewStyle) ?? mapViewStyle
52
+ }),
53
+ container: container,
54
+ menuSections: [
55
+ viewOptions
56
+ ],
57
+ onClick: onSelectMapViewStyle
58
+ })
59
+ });
64
60
  };
65
-
66
- export { MapViewStyleControl as default };
61
+ const Map_MapViewStyleControl = MapViewStyleControl;
62
+ export default Map_MapViewStyleControl;
@@ -1,2 +1,3 @@
1
- import ReactMapbox from 'react-map-gl/mapbox';
2
- export { default } from 'react-map-gl/mapbox';
1
+ import mapbox from "react-map-gl/mapbox";
2
+ const ReactMapboxWrapper = mapbox;
3
+ export default ReactMapboxWrapper;
@@ -1,182 +1,163 @@
1
- import { useState, useCallback, useMemo } from 'react';
2
- import MapBox from './MapBox.js';
3
- import MapContainer from './MapContainer.js';
4
- import MapDrawer from './MapDrawer.js';
5
- import MapLegend from './MapLegend.js';
6
- import { jsx } from 'react/jsx-runtime';
7
-
8
- const MapComponent = props => {
9
- const {
10
- clusterRadius,
11
- controlBottomLeft,
12
- controlTopRight,
13
- cursorInteract,
14
- cursorMap,
15
- disableDoubleClickZoom,
16
- disableZoom,
17
- drawerChildren,
18
- drawerOpen,
19
- drawerSize,
20
- drawerTitle,
21
- features,
22
- hideFullScreenControl,
23
- hideLegend,
24
- hideMapViewStyleControl,
25
- hideZoomControl,
26
- initialSelectedLayerId,
27
- initialMapViewStyle,
28
- initialViewState,
29
- mapContainerId,
30
- mapId,
31
- onClickCanvas,
32
- setDrawerOpen,
33
- token
34
- } = props;
35
- const [mapViewStyle, setMapViewStyle] = useState(initialMapViewStyle ?? 'Streets');
36
- const [visibleHighlights, setVisibleHighlights] = useState([]);
37
- const setHighlightVisible = useCallback(highlightId => visible => {
38
- if (visible) {
39
- setVisibleHighlights(_visibleHighlights => [..._visibleHighlights, highlightId]);
40
- } else {
41
- setVisibleHighlights(_visibleHighlights => _visibleHighlights.filter(_highlightId => _highlightId !== highlightId));
42
- }
43
- }, []);
44
- const [visibleMarkers, setVisibleMarkers] = useState([]);
45
- const setMarkerVisible = useCallback(markerGroupId => visible => {
46
- if (visible) {
47
- setVisibleMarkers(_visibleMarkers => [..._visibleMarkers, markerGroupId]);
48
- } else {
49
- setVisibleMarkers(_visibleMarkers => _visibleMarkers.filter(_markerGroupId => _markerGroupId !== markerGroupId));
50
- }
51
- }, []);
52
- const [selectedLayer, setSelectedLayer] = useState(initialSelectedLayerId);
53
- const legends = useMemo(() => {
54
- return features?.map(feature => {
55
- const baseLegendGroup = {
56
- disabled: feature.sectionDisabled,
57
- title: feature.sectionTitle,
58
- tooltip: feature.sectionTooltip
59
- };
60
- switch (feature.type) {
61
- case 'highlight':
62
- return {
63
- ...baseLegendGroup,
64
- items: feature.legendItems,
65
- type: 'highlight',
66
- visible: visibleHighlights.findIndex(highlightId => highlightId === feature.highlight.highlightId) >= 0,
67
- setVisible: setHighlightVisible(feature.highlight.highlightId)
68
- };
69
- case 'layer':
70
- return {
71
- ...baseLegendGroup,
72
- items: feature.layers.map(layer => ({
73
- disabled: layer.disabled,
74
- id: layer.layerId,
75
- label: layer.label,
76
- style: layer.style
77
- })),
78
- selectedLayer,
79
- setSelectedLayer,
80
- type: 'layer'
81
- };
82
- case 'marker':
83
- return {
84
- ...baseLegendGroup,
85
- items: feature.groups.map(group => ({
86
- disabled: group.disabled,
87
- id: group.markerGroupId,
88
- label: group.label,
89
- style: group.style,
90
- setVisible: setMarkerVisible(group.markerGroupId),
91
- visible: visibleMarkers.findIndex(markerId => markerId === group.markerGroupId) >= 0
92
- })),
93
- type: 'marker'
94
- };
95
- }
96
- });
97
- }, [features, selectedLayer, visibleHighlights, visibleMarkers]);
98
- const layers = useMemo(() => {
99
- return features?.filter(feature => feature.type === 'layer')?.flatMap(feature => feature.layers)?.filter(layer => layer.layerId === selectedLayer);
100
- }, [features, selectedLayer]);
101
- const highlightGroups = useMemo(() => {
102
- return features?.filter(feature => feature.type === 'highlight')?.map(feature => feature.highlight)?.filter(highlight => visibleHighlights.findIndex(_highlightId => _highlightId === highlight.highlightId) >= 0);
103
- }, [features, visibleHighlights]);
104
- const markerGroups = useMemo(() => {
105
- return features?.filter(feature => feature.type === 'marker')?.flatMap(feature => feature.groups).filter(group => visibleMarkers.findIndex(_markerId => _markerId === group.markerGroupId) >= 0);
106
- }, [features, visibleMarkers]);
107
- const mapViewState = useMemo(() => {
108
- if (initialViewState) {
109
- return initialViewState;
110
- } else if (features) {
111
- const coordinates = features.filter(feature => feature.type === 'layer').flatMap(feature => feature.layers).flatMap(layer => layer.features).map(geoFeature => geoFeature.geometry.coordinates).flat().flat().flat();
112
- if (coordinates.length > 0) {
113
- let minLat = Infinity;
114
- let maxLat = -Infinity;
115
- let minLng = Infinity;
116
- let maxLng = -Infinity;
117
- for (const [lng, lat] of coordinates) {
118
- minLat = Math.min(minLat, lat);
119
- maxLat = Math.max(maxLat, lat);
120
- minLng = Math.min(minLng, lng);
121
- maxLng = Math.max(maxLng, lng);
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useCallback, useMemo, useState } from "react";
3
+ import MapBox from "./MapBox.js";
4
+ import MapContainer from "./MapContainer.js";
5
+ import MapDrawer from "./MapDrawer.js";
6
+ import MapLegend from "./MapLegend.js";
7
+ const MapComponent = (props)=>{
8
+ const { clusterRadius, controlBottomLeft, controlTopRight, cursorInteract, cursorMap, disableDoubleClickZoom, disableZoom, drawerChildren, drawerOpen, drawerSize, drawerTitle, features, hideFullScreenControl, hideLegend, hideMapViewStyleControl, hideZoomControl, initialSelectedLayerId, initialMapViewStyle, initialViewState, mapContainerId, mapId, onClickCanvas, setDrawerOpen, token } = props;
9
+ const [mapViewStyle, setMapViewStyle] = useState(initialMapViewStyle ?? 'Streets');
10
+ const [visibleHighlights, setVisibleHighlights] = useState([]);
11
+ const setHighlightVisible = useCallback((highlightId)=>(visible)=>{
12
+ visible ? setVisibleHighlights((_visibleHighlights)=>[
13
+ ..._visibleHighlights,
14
+ highlightId
15
+ ]) : setVisibleHighlights((_visibleHighlights)=>_visibleHighlights.filter((_highlightId)=>_highlightId !== highlightId));
16
+ }, []);
17
+ const [visibleMarkers, setVisibleMarkers] = useState([]);
18
+ const setMarkerVisible = useCallback((markerGroupId)=>(visible)=>{
19
+ visible ? setVisibleMarkers((_visibleMarkers)=>[
20
+ ..._visibleMarkers,
21
+ markerGroupId
22
+ ]) : setVisibleMarkers((_visibleMarkers)=>_visibleMarkers.filter((_markerGroupId)=>_markerGroupId !== markerGroupId));
23
+ }, []);
24
+ const [selectedLayer, setSelectedLayer] = useState(initialSelectedLayerId);
25
+ const legends = useMemo(()=>features?.map((feature)=>{
26
+ const baseLegendGroup = {
27
+ disabled: feature.sectionDisabled,
28
+ title: feature.sectionTitle,
29
+ tooltip: feature.sectionTooltip
30
+ };
31
+ switch(feature.type){
32
+ case 'highlight':
33
+ return {
34
+ ...baseLegendGroup,
35
+ items: feature.legendItems,
36
+ type: 'highlight',
37
+ visible: visibleHighlights.findIndex((highlightId)=>highlightId === feature.highlight.highlightId) >= 0,
38
+ setVisible: setHighlightVisible(feature.highlight.highlightId)
39
+ };
40
+ case 'layer':
41
+ return {
42
+ ...baseLegendGroup,
43
+ items: feature.layers.map((layer)=>({
44
+ disabled: layer.disabled,
45
+ id: layer.layerId,
46
+ label: layer.label,
47
+ style: layer.style
48
+ })),
49
+ selectedLayer,
50
+ setSelectedLayer,
51
+ type: 'layer'
52
+ };
53
+ case 'marker':
54
+ return {
55
+ ...baseLegendGroup,
56
+ items: feature.groups.map((group)=>({
57
+ disabled: group.disabled,
58
+ id: group.markerGroupId,
59
+ label: group.label,
60
+ style: group.style,
61
+ setVisible: setMarkerVisible(group.markerGroupId),
62
+ visible: visibleMarkers.findIndex((markerId)=>markerId === group.markerGroupId) >= 0
63
+ })),
64
+ type: 'marker'
65
+ };
66
+ }
67
+ }), [
68
+ features,
69
+ selectedLayer,
70
+ visibleHighlights,
71
+ visibleMarkers
72
+ ]);
73
+ const layers = useMemo(()=>features?.filter((feature)=>'layer' === feature.type)?.flatMap((feature)=>feature.layers)?.filter((layer)=>layer.layerId === selectedLayer), [
74
+ features,
75
+ selectedLayer
76
+ ]);
77
+ const highlightGroups = useMemo(()=>features?.filter((feature)=>'highlight' === feature.type)?.map((feature)=>feature.highlight)?.filter((highlight)=>visibleHighlights.findIndex((_highlightId)=>_highlightId === highlight.highlightId) >= 0), [
78
+ features,
79
+ visibleHighlights
80
+ ]);
81
+ const markerGroups = useMemo(()=>features?.filter((feature)=>'marker' === feature.type)?.flatMap((feature)=>feature.groups).filter((group)=>visibleMarkers.findIndex((_markerId)=>_markerId === group.markerGroupId) >= 0), [
82
+ features,
83
+ visibleMarkers
84
+ ]);
85
+ const mapViewState = useMemo(()=>{
86
+ if (initialViewState) return initialViewState;
87
+ else if (features) {
88
+ const coordinates = features.filter((feature)=>'layer' === feature.type).flatMap((feature)=>feature.layers).flatMap((layer)=>layer.features).map((geoFeature)=>geoFeature.geometry.coordinates).flat().flat().flat();
89
+ if (coordinates.length > 0) {
90
+ let minLat = 1 / 0;
91
+ let maxLat = -1 / 0;
92
+ let minLng = 1 / 0;
93
+ let maxLng = -1 / 0;
94
+ for (const [lng, lat] of coordinates){
95
+ minLat = Math.min(minLat, lat);
96
+ maxLat = Math.max(maxLat, lat);
97
+ minLng = Math.min(minLng, lng);
98
+ maxLng = Math.max(maxLng, lng);
99
+ }
100
+ const centerLng = (minLng + maxLng) / 2;
101
+ const centerLat = (minLat + maxLat) / 2;
102
+ return {
103
+ latitude: centerLat,
104
+ longitude: centerLng,
105
+ zoom: 12
106
+ };
107
+ }
122
108
  }
123
- const centerLng = (minLng + maxLng) / 2;
124
- const centerLat = (minLat + maxLat) / 2;
125
- return {
126
- latitude: centerLat,
127
- longitude: centerLng,
128
- zoom: 12
129
- };
130
- }
131
- }
132
- }, [initialViewState]);
133
- const mapImageUrls = useMemo(() => {
134
- const layerFeatures = features?.filter(feature => feature.type === 'layer') ?? [];
135
- const highlightFeatures = features?.filter(feature => feature.type === 'highlight') ?? [];
136
- const layerImageUrls = layerFeatures.flatMap(feature => feature.layers).map(layer => layer.style.fillPatternUrl).filter(url => url !== undefined);
137
- const highlightImageUrls = highlightFeatures.flatMap(feature => feature.highlight.highlights).map(highlight => highlight.style.fillPatternUrl).filter(url => url !== undefined);
138
- const imageUrls = new Set(layerImageUrls);
139
- highlightImageUrls.forEach(url => imageUrls.add(url));
140
- return Array.from(imageUrls);
141
- }, [features]);
142
- return /*#__PURE__*/jsx(MapContainer, {
143
- containerId: mapContainerId ?? 'map-container',
144
- map: /*#__PURE__*/jsx(MapBox, {
145
- clusterRadius: clusterRadius,
146
- containerId: mapContainerId ?? 'map-container',
147
- controlBottomLeft: controlBottomLeft,
148
- controlTopRight: controlTopRight,
149
- cursorInteract: cursorInteract,
150
- cursorMap: cursorMap,
151
- disableDoubleClickZoom: disableDoubleClickZoom,
152
- disableZoom: disableZoom,
153
- drawerOpen: drawerOpen,
154
- hideFullScreenControl: hideFullScreenControl,
155
- hideMapViewStyleControl: hideMapViewStyleControl,
156
- hideZoomControl: hideZoomControl,
157
- highlightGroups: highlightGroups,
158
- initialViewState: mapViewState,
159
- layers: layers,
160
- mapId: mapId ?? 'mapId',
161
- mapImageUrls: mapImageUrls,
162
- mapViewStyle: mapViewStyle,
163
- markerGroups: markerGroups,
164
- onClickCanvas: onClickCanvas,
165
- setMapViewStyle: setMapViewStyle,
166
- token: token
167
- }),
168
- drawer: /*#__PURE__*/jsx(MapDrawer, {
169
- open: drawerOpen ?? false,
170
- onClose: () => setDrawerOpen?.(false),
171
- size: drawerSize ?? 'small',
172
- title: drawerTitle ?? '',
173
- children: drawerChildren
174
- }),
175
- drawerOpen: drawerOpen,
176
- legend: !hideLegend && legends && /*#__PURE__*/jsx(MapLegend, {
177
- legends: legends
178
- })
179
- });
109
+ }, [
110
+ initialViewState
111
+ ]);
112
+ const mapImageUrls = useMemo(()=>{
113
+ const layerFeatures = features?.filter((feature)=>'layer' === feature.type) ?? [];
114
+ const highlightFeatures = features?.filter((feature)=>'highlight' === feature.type) ?? [];
115
+ const layerImageUrls = layerFeatures.flatMap((feature)=>feature.layers).map((layer)=>layer.style.fillPatternUrl).filter((url)=>void 0 !== url);
116
+ const highlightImageUrls = highlightFeatures.flatMap((feature)=>feature.highlight.highlights).map((highlight)=>highlight.style.fillPatternUrl).filter((url)=>void 0 !== url);
117
+ const imageUrls = new Set(layerImageUrls);
118
+ highlightImageUrls.forEach((url)=>imageUrls.add(url));
119
+ return Array.from(imageUrls);
120
+ }, [
121
+ features
122
+ ]);
123
+ return /*#__PURE__*/ jsx(MapContainer, {
124
+ containerId: mapContainerId ?? 'map-container',
125
+ map: /*#__PURE__*/ jsx(MapBox, {
126
+ clusterRadius: clusterRadius,
127
+ containerId: mapContainerId ?? 'map-container',
128
+ controlBottomLeft: controlBottomLeft,
129
+ controlTopRight: controlTopRight,
130
+ cursorInteract: cursorInteract,
131
+ cursorMap: cursorMap,
132
+ disableDoubleClickZoom: disableDoubleClickZoom,
133
+ disableZoom: disableZoom,
134
+ drawerOpen: drawerOpen,
135
+ hideFullScreenControl: hideFullScreenControl,
136
+ hideMapViewStyleControl: hideMapViewStyleControl,
137
+ hideZoomControl: hideZoomControl,
138
+ highlightGroups: highlightGroups,
139
+ initialViewState: mapViewState,
140
+ layers: layers,
141
+ mapId: mapId ?? 'mapId',
142
+ mapImageUrls: mapImageUrls,
143
+ mapViewStyle: mapViewStyle,
144
+ markerGroups: markerGroups,
145
+ onClickCanvas: onClickCanvas,
146
+ setMapViewStyle: setMapViewStyle,
147
+ token: token
148
+ }),
149
+ drawer: /*#__PURE__*/ jsx(MapDrawer, {
150
+ open: drawerOpen ?? false,
151
+ onClose: ()=>setDrawerOpen?.(false),
152
+ size: drawerSize ?? 'small',
153
+ title: drawerTitle ?? '',
154
+ children: drawerChildren
155
+ }),
156
+ drawerOpen: drawerOpen,
157
+ legend: !hideLegend && legends && /*#__PURE__*/ jsx(MapLegend, {
158
+ legends: legends
159
+ })
160
+ });
180
161
  };
181
-
182
- export { MapComponent as default };
162
+ const Map = MapComponent;
163
+ export default Map;
@@ -1,20 +1,15 @@
1
- /**
2
- * Properties class for GeoJson, with a few reserved object defined.
3
- */
4
-
5
- // Each layer item will become a feature, with a property of id.
6
-
7
- // Each layer will become a set of features that have the same type.
8
-
9
- // Additional shading/annotations for map entities
10
-
11
- const MapViewStyles = ['Outdoors', 'Satellite', 'Light', 'Dark', 'Streets'];
1
+ const MapViewStyles = [
2
+ 'Outdoors',
3
+ 'Satellite',
4
+ 'Light',
5
+ 'Dark',
6
+ 'Streets'
7
+ ];
12
8
  const stylesUrl = {
13
- Outdoors: 'mapbox://styles/mapbox/outdoors-v12?optimize=true',
14
- Satellite: 'mapbox://styles/mapbox/satellite-streets-v12?optimize=true',
15
- Streets: 'mapbox://styles/mapbox/streets-v12?optimize=true',
16
- Light: 'mapbox://styles/mapbox/light-v11?optimize=true',
17
- Dark: 'mapbox://styles/mapbox/dark-v11?optimize=true'
9
+ Outdoors: 'mapbox://styles/mapbox/outdoors-v12?optimize=true',
10
+ Satellite: 'mapbox://styles/mapbox/satellite-streets-v12?optimize=true',
11
+ Streets: 'mapbox://styles/mapbox/streets-v12?optimize=true',
12
+ Light: 'mapbox://styles/mapbox/light-v11?optimize=true',
13
+ Dark: 'mapbox://styles/mapbox/dark-v11?optimize=true'
18
14
  };
19
-
20
15
  export { MapViewStyles, stylesUrl };
@@ -1,28 +1,18 @@
1
- import { useEffect } from 'react';
2
-
3
- /**
4
- * Ensures that all given layers maintain strict order in the Mapbox layer stack.
5
- */
6
- const useMaintainLayerOrder = (mapRef, orderedLayerIds) => {
7
- useEffect(() => {
8
- const map = mapRef.current;
9
- if (!map) {
10
- return;
11
- }
12
-
13
- // Only move layers that exist
14
- const existingLayerIds = orderedLayerIds.filter(id => map.getLayer(id));
15
-
16
- // Reverse iterate so first in array ends up lowest
17
- for (let i = existingLayerIds.length - 1; i >= 0; i--) {
18
- const layerId = existingLayerIds[i];
19
- try {
20
- map.moveLayer(layerId, i < existingLayerIds.length - 1 ? existingLayerIds[i + 1] : undefined);
21
- } catch (e) {
22
- // moveLayer will throw if layer doesn't exist in current style
23
- }
24
- }
25
- }, [mapRef, orderedLayerIds]);
1
+ import { useEffect } from "react";
2
+ const useMaintainLayerOrder = (mapRef, orderedLayerIds)=>{
3
+ useEffect(()=>{
4
+ const map = mapRef.current;
5
+ if (!map) return;
6
+ const existingLayerIds = orderedLayerIds.filter((id)=>map.getLayer(id));
7
+ for(let i = existingLayerIds.length - 1; i >= 0; i--){
8
+ const layerId = existingLayerIds[i];
9
+ try {
10
+ map.moveLayer(layerId, i < existingLayerIds.length - 1 ? existingLayerIds[i + 1] : void 0);
11
+ } catch (e) {}
12
+ }
13
+ }, [
14
+ mapRef,
15
+ orderedLayerIds
16
+ ]);
26
17
  };
27
-
28
18
  export { useMaintainLayerOrder };
@@ -1,27 +1,26 @@
1
- import { useState, useCallback, useEffect } from 'react';
2
- import { marked } from 'marked';
3
- import './styles.scss';
4
- import { jsx } from 'react/jsx-runtime';
5
-
6
- const Markdown = ({
7
- value,
8
- style
9
- }) => {
10
- const [html, setHtml] = useState();
11
- const parseValue = useCallback(async _value => {
12
- const _html = await marked.parse(_value);
13
- setHtml(_html);
14
- }, []);
15
- useEffect(() => {
16
- void parseValue(value);
17
- }, [parseValue, value]);
18
- return /*#__PURE__*/jsx("div", {
19
- className: "markdown",
20
- style: style,
21
- dangerouslySetInnerHTML: {
22
- __html: html ?? ''
23
- }
24
- });
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { marked } from "marked";
4
+ import "./styles.scss";
5
+ const Markdown = ({ value, style })=>{
6
+ const [html, setHtml] = useState();
7
+ const parseValue = useCallback(async (_value)=>{
8
+ const _html = await marked.parse(_value);
9
+ setHtml(_html);
10
+ }, []);
11
+ useEffect(()=>{
12
+ parseValue(value);
13
+ }, [
14
+ parseValue,
15
+ value
16
+ ]);
17
+ return /*#__PURE__*/ jsx("div", {
18
+ className: "markdown",
19
+ style: style,
20
+ dangerouslySetInnerHTML: {
21
+ __html: html ?? ''
22
+ }
23
+ });
25
24
  };
26
-
27
- export { Markdown as default };
25
+ const components_Markdown = Markdown;
26
+ export default components_Markdown;