@terraware/web-components 5.0.27 → 5.1.1-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 (311) 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/Stepper/index.d.ts +33 -0
  58. package/components/Stepper/index.d.ts.map +1 -0
  59. package/components/Stepper/index.js +66 -0
  60. package/components/SummaryBox.js +70 -72
  61. package/components/Tabs/index.js +133 -135
  62. package/components/TextTruncated/index.js +117 -130
  63. package/components/Textfield/Textfield.js +158 -190
  64. package/components/Textfield/TruncatedTextArea.js +70 -84
  65. package/components/TimelineSlider/TimelineMarker.js +25 -30
  66. package/components/TimelineSlider/TimelineRail.js +8 -11
  67. package/components/TimelineSlider/index.js +64 -66
  68. package/components/TimelineSliderV2/ClusterBadge.js +25 -29
  69. package/components/TimelineSliderV2/TimelineDot.js +31 -35
  70. package/components/TimelineSliderV2/TimelineRail.js +8 -11
  71. package/components/TimelineSliderV2/index.js +121 -103
  72. package/components/TimelineSliderV2/layout.js +124 -147
  73. package/components/TimelineSliderV2/types.js +0 -1
  74. package/components/Tooltip/Tooltip.js +47 -56
  75. package/components/ViewPhotosDialog/index.js +28 -35
  76. package/components/VirtualWalkthrough/Annotation.js +163 -207
  77. package/components/VirtualWalkthrough/AnnotationEditPane.js +198 -184
  78. package/components/VirtualWalkthrough/AnnotationPanel.js +187 -199
  79. package/components/VirtualWalkthrough/Application.js +31 -34
  80. package/components/VirtualWalkthrough/AutoRotator.js +85 -223
  81. package/components/VirtualWalkthrough/BlockingSpinner.js +26 -28
  82. package/components/VirtualWalkthrough/BoundaryRing.js +30 -34
  83. package/components/VirtualWalkthrough/BoundaryWall.js +32 -36
  84. package/components/VirtualWalkthrough/CameraInfo.js +100 -89
  85. package/components/VirtualWalkthrough/ControlsInfoPane.js +254 -195
  86. package/components/VirtualWalkthrough/GradientSky.js +72 -73
  87. package/components/VirtualWalkthrough/SplatControls.js +209 -221
  88. package/components/VirtualWalkthrough/SplatCrop.js +21 -20
  89. package/components/VirtualWalkthrough/SplatFadeCrop.js +21 -20
  90. package/components/VirtualWalkthrough/SplatModel.js +65 -85
  91. package/components/VirtualWalkthrough/SplatRevealRain.js +41 -46
  92. package/components/VirtualWalkthrough/TfAnnotationManager.js +197 -379
  93. package/components/VirtualWalkthrough/TfXrNavigation.js +73 -162
  94. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.js +438 -431
  95. package/components/VirtualWalkthrough/VrAnnotationPanel.js +18 -22
  96. package/components/VirtualWalkthrough/XrAnnotationInteraction.js +14 -17
  97. package/components/VirtualWalkthrough/XrExitButton.js +14 -17
  98. package/components/VirtualWalkthrough/XrGazeDwell.js +14 -17
  99. package/components/VirtualWalkthrough/XrPointerRay.js +14 -17
  100. package/components/VirtualWalkthrough/XrStartPose.js +67 -121
  101. package/components/VirtualWalkthrough/boundary-ring.js +87 -117
  102. package/components/VirtualWalkthrough/boundary-wall.js +175 -258
  103. package/components/VirtualWalkthrough/camera-adoption.js +18 -64
  104. package/components/VirtualWalkthrough/groundPlane.js +32 -47
  105. package/components/VirtualWalkthrough/gsplat-fade-crop-effect.js +35 -35
  106. package/components/VirtualWalkthrough/splatFormat.js +13 -47
  107. package/components/VirtualWalkthrough/useAdoptedCamera.js +23 -44
  108. package/components/VirtualWalkthrough/useRestartOnVr.js +26 -37
  109. package/components/VirtualWalkthrough/useXrRenderTuning.js +33 -54
  110. package/components/VirtualWalkthrough/vr-annotation-panel-layout.js +67 -99
  111. package/components/VirtualWalkthrough/vr-annotation-panel.js +403 -433
  112. package/components/VirtualWalkthrough/vr-annotation-scroll.js +10 -28
  113. package/components/VirtualWalkthrough/walkthrough-camera.js +204 -329
  114. package/components/VirtualWalkthrough/xr-annotation-candidate-buffer.js +39 -80
  115. package/components/VirtualWalkthrough/xr-annotation-candidates.js +6 -18
  116. package/components/VirtualWalkthrough/xr-annotation-interaction.js +31 -56
  117. package/components/VirtualWalkthrough/xr-annotation-targeting.js +22 -38
  118. package/components/VirtualWalkthrough/xr-button-arming.js +7 -17
  119. package/components/VirtualWalkthrough/xr-button-hold.js +22 -36
  120. package/components/VirtualWalkthrough/xr-exit-button-mask.js +22 -36
  121. package/components/VirtualWalkthrough/xr-exit-button.js +148 -207
  122. package/components/VirtualWalkthrough/xr-face-buttons.js +19 -29
  123. package/components/VirtualWalkthrough/xr-gaze-dwell-state.js +23 -34
  124. package/components/VirtualWalkthrough/xr-gaze-dwell.js +107 -144
  125. package/components/VirtualWalkthrough/xr-interactive-ui.js +12 -24
  126. package/components/VirtualWalkthrough/xr-pointer-ray.js +13 -20
  127. package/components/VirtualWalkthrough/xr-progress-pie-material.js +117 -88
  128. package/components/VirtualWalkthrough/xr-progress-pie.js +1 -10
  129. package/components/VirtualWalkthrough/xr-ray-quad.js +16 -30
  130. package/components/VirtualWalkthrough/xr-render-tuning.js +17 -48
  131. package/components/VirtualWalkthrough/xr-scene-bounds.js +21 -37
  132. package/components/VirtualWalkthrough/xr-start-pose.js +27 -73
  133. package/components/VirtualWalkthrough/xr-teleport-gesture.js +16 -42
  134. package/components/svg/BlobbyGrayIconImage.js +41 -39
  135. package/components/svg/BlobbyGrayIconImport.js +41 -39
  136. package/components/svg/BlobbyGrayIconUploadToTheCloud.js +41 -39
  137. package/components/svg/BlobbyIconCloudChecked.js +202 -164
  138. package/components/svg/BlobbyIconExportOrUploadPhoto.js +202 -164
  139. package/components/svg/BlobbyIconFolder.js +202 -164
  140. package/components/svg/BlobbyIconGraphReport.js +202 -164
  141. package/components/svg/BlobbyIconHappy.js +202 -164
  142. package/components/svg/BlobbyIconHeartMonitor.js +202 -164
  143. package/components/svg/BlobbyIconLeaf.js +202 -164
  144. package/components/svg/BlobbyIconLibrary.js +202 -164
  145. package/components/svg/BlobbyIconNursery.js +204 -166
  146. package/components/svg/BlobbyIconOrganization.js +202 -164
  147. package/components/svg/BlobbyIconParchment.js +202 -164
  148. package/components/svg/BlobbyIconPeople.js +202 -164
  149. package/components/svg/BlobbyIconSeedBank.js +202 -164
  150. package/components/svg/BlobbyIconSeedling.js +202 -164
  151. package/components/svg/BlobbyIconSeeds.js +202 -164
  152. package/components/svg/BlobbyIconSite.js +206 -167
  153. package/components/svg/BlobbyIconSparkles.js +202 -164
  154. package/components/svg/BlobbyIconWrench.js +202 -164
  155. package/components/svg/Bug.js +19 -21
  156. package/components/svg/Calendar.js +19 -21
  157. package/components/svg/CaretDown.js +19 -21
  158. package/components/svg/CaretLeft.js +19 -21
  159. package/components/svg/CaretRight.js +19 -21
  160. package/components/svg/CaretUp.js +19 -21
  161. package/components/svg/ChevronDown.js +19 -21
  162. package/components/svg/ChevronUp.js +19 -21
  163. package/components/svg/Close.js +19 -21
  164. package/components/svg/Critical.js +19 -21
  165. package/components/svg/Edit.js +202 -164
  166. package/components/svg/Error.js +19 -21
  167. package/components/svg/Filter.js +19 -21
  168. package/components/svg/Folder.js +19 -21
  169. package/components/svg/Help.js +19 -21
  170. package/components/svg/Home.js +19 -21
  171. package/components/svg/IconAdd.js +19 -21
  172. package/components/svg/IconArrowRight.js +21 -23
  173. package/components/svg/IconBusinessNetwork.js +19 -21
  174. package/components/svg/IconCalendar.js +19 -21
  175. package/components/svg/IconCancel.js +19 -21
  176. package/components/svg/IconChargingBattery.js +19 -21
  177. package/components/svg/IconChecklist.js +21 -23
  178. package/components/svg/IconCheckmark.js +19 -21
  179. package/components/svg/IconCoinInHand.js +19 -21
  180. package/components/svg/IconColumns.js +19 -21
  181. package/components/svg/IconComment.js +20 -22
  182. package/components/svg/IconDashboard.js +19 -21
  183. package/components/svg/IconDataMigration.js +19 -21
  184. package/components/svg/IconDocument.js +21 -23
  185. package/components/svg/IconDownloadFromTheCloud.js +21 -23
  186. package/components/svg/IconEdit.js +21 -23
  187. package/components/svg/IconExpand.js +21 -23
  188. package/components/svg/IconExport.js +19 -21
  189. package/components/svg/IconExternalLink.js +19 -21
  190. package/components/svg/IconEye.js +19 -21
  191. package/components/svg/IconEyeOff.js +19 -21
  192. package/components/svg/IconFile.js +19 -21
  193. package/components/svg/IconFolder.js +19 -21
  194. package/components/svg/IconFullScreen.js +20 -22
  195. package/components/svg/IconFutures.js +19 -21
  196. package/components/svg/IconGraphReport.js +19 -21
  197. package/components/svg/IconGrid.js +19 -21
  198. package/components/svg/IconHeartMonitor.js +19 -21
  199. package/components/svg/IconHelp.js +21 -23
  200. package/components/svg/IconHistory.js +19 -21
  201. package/components/svg/IconImport.js +19 -21
  202. package/components/svg/IconIndex.js +19 -21
  203. package/components/svg/IconLayers.js +19 -21
  204. package/components/svg/IconLibrary.js +20 -22
  205. package/components/svg/IconList.js +19 -21
  206. package/components/svg/IconLivePlant.js +19 -21
  207. package/components/svg/IconLocations.js +19 -21
  208. package/components/svg/IconMail.js +19 -21
  209. package/components/svg/IconManager.js +19 -21
  210. package/components/svg/IconMap.js +19 -21
  211. package/components/svg/IconMarker.js +19 -21
  212. package/components/svg/IconMenu.js +19 -21
  213. package/components/svg/IconMenuHorizontal.js +19 -21
  214. package/components/svg/IconModule.js +19 -21
  215. package/components/svg/IconMyLocation.js +19 -21
  216. package/components/svg/IconNote.js +21 -23
  217. package/components/svg/IconNursery.js +21 -23
  218. package/components/svg/IconOrg.js +19 -21
  219. package/components/svg/IconParchment.js +19 -21
  220. package/components/svg/IconPhoto.js +19 -21
  221. package/components/svg/IconPlantsFilled.js +19 -21
  222. package/components/svg/IconRedo.js +19 -21
  223. package/components/svg/IconRestorationSite.js +19 -21
  224. package/components/svg/IconSeedBank.js +19 -21
  225. package/components/svg/IconSeedling.js +19 -21
  226. package/components/svg/IconSettings.js +19 -21
  227. package/components/svg/IconSlice.js +19 -21
  228. package/components/svg/IconSubmit.js +19 -21
  229. package/components/svg/IconSubtract.js +21 -23
  230. package/components/svg/IconSynced.js +19 -21
  231. package/components/svg/IconTrashCan.js +19 -21
  232. package/components/svg/IconTreasureMap.js +19 -21
  233. package/components/svg/IconUnavailable.js +19 -21
  234. package/components/svg/IconUndo.js +19 -21
  235. package/components/svg/IconVariable.js +19 -21
  236. package/components/svg/IconVideo.js +30 -31
  237. package/components/svg/IconWifi.js +19 -21
  238. package/components/svg/Info.js +19 -21
  239. package/components/svg/Key.js +19 -21
  240. package/components/svg/Leaf.js +19 -21
  241. package/components/svg/Lock.js +19 -21
  242. package/components/svg/Logo.js +48 -43
  243. package/components/svg/MenuVertical.js +19 -21
  244. package/components/svg/Notification.js +19 -21
  245. package/components/svg/Person.js +19 -21
  246. package/components/svg/Plus.js +19 -21
  247. package/components/svg/RestorationSite.js +19 -21
  248. package/components/svg/Search.js +19 -21
  249. package/components/svg/Seeds.js +19 -21
  250. package/components/svg/Site.js +19 -21
  251. package/components/svg/Sparkles.js +19 -21
  252. package/components/svg/Species.js +19 -21
  253. package/components/svg/Species2.js +202 -164
  254. package/components/svg/Spinner.js +54 -48
  255. package/components/svg/Star.js +19 -21
  256. package/components/svg/Success.js +19 -21
  257. package/components/svg/SuccessFilled.js +19 -21
  258. package/components/svg/TerrawareLogoDesktop.js +55 -49
  259. package/components/svg/TerrawareLogoMobile.js +25 -26
  260. package/components/svg/Touchscreen.js +19 -21
  261. package/components/svg/UploadCloud.js +202 -164
  262. package/components/svg/Warning.js +19 -21
  263. package/components/svg/WelcomeClipboard.js +156 -133
  264. package/components/svg/index.js +129 -129
  265. package/components/table/EnhancedTableToolbar.js +68 -74
  266. package/components/table/EnhancedTableToolbarV2.js +31 -41
  267. package/components/table/TableCellRenderer.js +196 -231
  268. package/components/table/TableHeader.js +71 -73
  269. package/components/table/TableHeaderItem.js +97 -102
  270. package/components/table/density.js +18 -19
  271. package/components/table/index.js +350 -369
  272. package/components/table/sort.js +27 -52
  273. package/components/table/types.js +0 -1
  274. package/components/types/index.js +0 -1
  275. package/hooks/cameraEntityContext.js +2 -13
  276. package/hooks/useBoolean.js +17 -13
  277. package/hooks/useCameraPosition.js +56 -56
  278. package/hooks/useDevicePerformance.js +17 -17
  279. package/hooks/useXr.js +85 -87
  280. package/index.d.ts +3 -1
  281. package/index.d.ts.map +1 -1
  282. package/index.js +59 -58
  283. package/package.json +1 -1
  284. package/setupTests.js +0 -4
  285. package/strings/csv/en.csv +1 -0
  286. package/strings/csv/es.csv +1 -0
  287. package/strings/csv/fr.csv +1 -0
  288. package/strings/export.js +111 -170
  289. package/strings/index.js +25 -54
  290. package/strings/locales.js +21 -41
  291. package/strings/strings-en.d.ts +1 -0
  292. package/strings/strings-en.d.ts.map +1 -1
  293. package/strings/strings-en.js +50 -51
  294. package/strings/strings-es.d.ts +1 -0
  295. package/strings/strings-es.d.ts.map +1 -1
  296. package/strings/strings-es.js +50 -51
  297. package/strings/strings-fr.d.ts +1 -0
  298. package/strings/strings-fr.d.ts.map +1 -1
  299. package/strings/strings-fr.js +50 -51
  300. package/strings/strings-gx.d.ts +1 -0
  301. package/strings/strings-gx.d.ts.map +1 -1
  302. package/strings/strings-gx.js +50 -51
  303. package/style-dictionary-dist/TerrawareTheme.js +186 -186
  304. package/theme.js +74 -76
  305. package/utils/color.js +8 -15
  306. package/utils/date.js +42 -108
  307. package/utils/index.js +4 -4
  308. package/utils/preventDefaultEvent.js +3 -3
  309. package/utils/text.js +11 -11
  310. package/utils/useDeviceInfo.js +42 -79
  311. 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;