@terraware/web-components 4.2.12 → 4.2.14-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 (304) hide show
  1. package/components/AntSwitch/index.js +8 -14
  2. package/components/Autocomplete/Autocomplete.js +67 -70
  3. package/components/Badge/index.js +16 -20
  4. package/components/BusySpinner/index.js +30 -35
  5. package/components/Button/Button.js +23 -27
  6. package/components/Button/button.test.js +8 -10
  7. package/components/Checkbox.js +10 -19
  8. package/components/Confirm/index.js +44 -51
  9. package/components/DatePicker/DatePicker.js +116 -117
  10. package/components/DialogBox/DialogBox.js +76 -66
  11. package/components/Divisor.js +15 -20
  12. package/components/Dropdown.js +54 -61
  13. package/components/EditableTable/index.js +129 -135
  14. package/components/ErrorBox/ErrorBox.js +37 -36
  15. package/components/FileChooser/index.js +73 -77
  16. package/components/FormBottomBar/index.js +63 -69
  17. package/components/Icon/Icon.js +14 -21
  18. package/components/Icon/icons/index.d.ts +1 -1
  19. package/components/Icon/icons/index.d.ts.map +1 -1
  20. package/components/Icon/icons/index.js +251 -255
  21. package/components/IconTooltip/index.js +29 -34
  22. package/components/Map/MapBox.js +199 -220
  23. package/components/Map/MapContainer.js +14 -18
  24. package/components/Map/MapDateSliderControl.js +44 -46
  25. package/components/Map/MapDrawer.js +32 -33
  26. package/components/Map/MapLegend.js +96 -95
  27. package/components/Map/MapViewStyleControl.js +38 -48
  28. package/components/Map/ReactMapboxWrapper.js +2 -9
  29. package/components/Map/index.js +47 -55
  30. package/components/Map/types.js +2 -8
  31. package/components/Map/useMaintainLayerOrder.js +4 -11
  32. package/components/Markdown/index.js +14 -21
  33. package/components/Message/Message.js +59 -51
  34. package/components/MultiSelect/MultiSelect.test.js +22 -24
  35. package/components/MultiSelect/index.js +73 -69
  36. package/components/Navbar/NavFooter.js +8 -13
  37. package/components/Navbar/NavItem.js +43 -37
  38. package/components/Navbar/NavSection.js +13 -17
  39. package/components/Navbar/Navbar.js +35 -38
  40. package/components/Navbar/SubNavbar.js +8 -13
  41. package/components/Note.js +14 -19
  42. package/components/OverlayModal/OverlayModal.js +36 -37
  43. package/components/PageForm/index.js +30 -35
  44. package/components/PhotoChooser/index.js +93 -98
  45. package/components/Pill/index.js +29 -31
  46. package/components/PillList/index.js +16 -22
  47. package/components/PlacementWrapper/index.js +20 -25
  48. package/components/PopoverMenu/Popover.js +33 -37
  49. package/components/PopoverMenu/index.js +41 -46
  50. package/components/PopoverMultiSelect/index.js +18 -21
  51. package/components/ProgressCircle/ProgressCircle.js +23 -26
  52. package/components/RadioButton.js +7 -14
  53. package/components/Select/Select.js +8 -13
  54. package/components/Select/SelectT.js +110 -108
  55. package/components/Separator/index.js +8 -14
  56. package/components/Size.js +1 -5
  57. package/components/Slider/index.js +7 -13
  58. package/components/SummaryBox.js +36 -39
  59. package/components/Tabs/index.js +75 -77
  60. package/components/TextTruncated/index.js +64 -65
  61. package/components/Textfield/Textfield.js +100 -95
  62. package/components/Textfield/TruncatedTextArea.js +44 -46
  63. package/components/TimelineSlider/TimelineMarker.js +24 -28
  64. package/components/TimelineSlider/TimelineRail.js +5 -11
  65. package/components/TimelineSlider/index.js +47 -51
  66. package/components/Tooltip/Tooltip.js +21 -26
  67. package/components/ViewPhotosDialog/index.js +58 -62
  68. package/components/VirtualWalkthrough/Annotation.d.ts +41 -0
  69. package/components/VirtualWalkthrough/Annotation.d.ts.map +1 -0
  70. package/components/VirtualWalkthrough/Annotation.js +197 -0
  71. package/components/VirtualWalkthrough/AnnotationEditPane.d.ts +20 -0
  72. package/components/VirtualWalkthrough/AnnotationEditPane.d.ts.map +1 -0
  73. package/components/VirtualWalkthrough/AnnotationEditPane.js +136 -0
  74. package/components/VirtualWalkthrough/AnnotationPanel.d.ts +13 -0
  75. package/components/VirtualWalkthrough/AnnotationPanel.d.ts.map +1 -0
  76. package/components/VirtualWalkthrough/AnnotationPanel.js +196 -0
  77. package/components/VirtualWalkthrough/Application.d.ts +9 -0
  78. package/components/VirtualWalkthrough/Application.d.ts.map +1 -0
  79. package/components/VirtualWalkthrough/Application.js +32 -0
  80. package/components/VirtualWalkthrough/AutoRotator.d.ts +109 -0
  81. package/components/VirtualWalkthrough/AutoRotator.d.ts.map +1 -0
  82. package/components/VirtualWalkthrough/AutoRotator.js +217 -0
  83. package/components/VirtualWalkthrough/BlockingSpinner.d.ts +3 -0
  84. package/components/VirtualWalkthrough/BlockingSpinner.d.ts.map +1 -0
  85. package/components/VirtualWalkthrough/BlockingSpinner.js +27 -0
  86. package/components/VirtualWalkthrough/BoundaryRing.d.ts +9 -0
  87. package/components/VirtualWalkthrough/BoundaryRing.d.ts.map +1 -0
  88. package/components/VirtualWalkthrough/BoundaryRing.js +33 -0
  89. package/components/VirtualWalkthrough/CameraInfo.d.ts +16 -0
  90. package/components/VirtualWalkthrough/CameraInfo.d.ts.map +1 -0
  91. package/components/VirtualWalkthrough/CameraInfo.js +88 -0
  92. package/components/VirtualWalkthrough/ControlsInfoPane.d.ts +37 -0
  93. package/components/VirtualWalkthrough/ControlsInfoPane.d.ts.map +1 -0
  94. package/components/VirtualWalkthrough/ControlsInfoPane.js +196 -0
  95. package/components/VirtualWalkthrough/GradientSky.d.ts +9 -0
  96. package/components/VirtualWalkthrough/GradientSky.d.ts.map +1 -0
  97. package/components/VirtualWalkthrough/GradientSky.js +73 -0
  98. package/components/VirtualWalkthrough/SplatControls.d.ts +50 -0
  99. package/components/VirtualWalkthrough/SplatControls.d.ts.map +1 -0
  100. package/components/VirtualWalkthrough/SplatControls.js +252 -0
  101. package/components/VirtualWalkthrough/SplatCrop.d.ts +8 -0
  102. package/components/VirtualWalkthrough/SplatCrop.d.ts.map +1 -0
  103. package/components/VirtualWalkthrough/SplatCrop.js +18 -0
  104. package/components/VirtualWalkthrough/SplatFadeCrop.d.ts +8 -0
  105. package/components/VirtualWalkthrough/SplatFadeCrop.d.ts.map +1 -0
  106. package/components/VirtualWalkthrough/SplatFadeCrop.js +18 -0
  107. package/components/VirtualWalkthrough/SplatModel.d.ts +15 -0
  108. package/components/VirtualWalkthrough/SplatModel.d.ts.map +1 -0
  109. package/components/VirtualWalkthrough/SplatModel.js +60 -0
  110. package/components/VirtualWalkthrough/SplatRevealRain.d.ts +18 -0
  111. package/components/VirtualWalkthrough/SplatRevealRain.d.ts.map +1 -0
  112. package/components/VirtualWalkthrough/SplatRevealRain.js +38 -0
  113. package/components/VirtualWalkthrough/TfAnnotationManager.d.ts +110 -0
  114. package/components/VirtualWalkthrough/TfAnnotationManager.d.ts.map +1 -0
  115. package/components/VirtualWalkthrough/TfAnnotationManager.js +368 -0
  116. package/components/VirtualWalkthrough/TfXrNavigation.d.ts +15 -0
  117. package/components/VirtualWalkthrough/TfXrNavigation.d.ts.map +1 -0
  118. package/components/VirtualWalkthrough/TfXrNavigation.js +24 -0
  119. package/components/VirtualWalkthrough/annotation-styles.css +5 -0
  120. package/components/VirtualWalkthrough/application-styles.css +4 -0
  121. package/components/VirtualWalkthrough/boundary-ring.d.ts +47 -0
  122. package/components/VirtualWalkthrough/boundary-ring.d.ts.map +1 -0
  123. package/components/VirtualWalkthrough/boundary-ring.js +125 -0
  124. package/components/VirtualWalkthrough/boundary-ring.test.js +109 -0
  125. package/components/VirtualWalkthrough/groundPlane.d.ts +14 -0
  126. package/components/VirtualWalkthrough/groundPlane.d.ts.map +1 -0
  127. package/components/VirtualWalkthrough/groundPlane.js +47 -0
  128. package/components/VirtualWalkthrough/groundPlane.test.js +45 -0
  129. package/components/VirtualWalkthrough/gsplat-fade-crop-effect.d.ts +19 -0
  130. package/components/VirtualWalkthrough/gsplat-fade-crop-effect.d.ts.map +1 -0
  131. package/components/VirtualWalkthrough/gsplat-fade-crop-effect.js +119 -0
  132. package/components/VirtualWalkthrough/walkthrough-camera.d.ts +77 -0
  133. package/components/VirtualWalkthrough/walkthrough-camera.d.ts.map +1 -0
  134. package/components/VirtualWalkthrough/walkthrough-camera.js +320 -0
  135. package/components/svg/BlobbyGrayIconImage.js +36 -41
  136. package/components/svg/BlobbyGrayIconImport.js +36 -41
  137. package/components/svg/BlobbyGrayIconUploadToTheCloud.js +36 -41
  138. package/components/svg/BlobbyIconCloudChecked.js +161 -158
  139. package/components/svg/BlobbyIconExportOrUploadPhoto.js +161 -158
  140. package/components/svg/BlobbyIconFolder.js +161 -158
  141. package/components/svg/BlobbyIconGraphReport.js +161 -158
  142. package/components/svg/BlobbyIconHappy.js +161 -158
  143. package/components/svg/BlobbyIconHeartMonitor.js +161 -158
  144. package/components/svg/BlobbyIconLeaf.js +161 -158
  145. package/components/svg/BlobbyIconLibrary.js +161 -158
  146. package/components/svg/BlobbyIconNursery.js +163 -160
  147. package/components/svg/BlobbyIconOrganization.js +161 -158
  148. package/components/svg/BlobbyIconParchment.js +161 -158
  149. package/components/svg/BlobbyIconPeople.js +161 -158
  150. package/components/svg/BlobbyIconSeedBank.js +161 -158
  151. package/components/svg/BlobbyIconSeedling.js +161 -158
  152. package/components/svg/BlobbyIconSeeds.js +161 -158
  153. package/components/svg/BlobbyIconSite.js +164 -161
  154. package/components/svg/BlobbyIconSparkles.js +161 -158
  155. package/components/svg/BlobbyIconWrench.js +161 -158
  156. package/components/svg/Bug.js +18 -27
  157. package/components/svg/Calendar.js +18 -27
  158. package/components/svg/CaretDown.js +18 -27
  159. package/components/svg/CaretLeft.js +18 -27
  160. package/components/svg/CaretRight.js +18 -27
  161. package/components/svg/CaretUp.js +18 -27
  162. package/components/svg/ChevronDown.js +18 -27
  163. package/components/svg/ChevronUp.js +18 -27
  164. package/components/svg/Close.js +18 -27
  165. package/components/svg/Critical.js +18 -27
  166. package/components/svg/Edit.js +161 -158
  167. package/components/svg/Error.js +18 -27
  168. package/components/svg/Filter.js +18 -27
  169. package/components/svg/Folder.js +18 -27
  170. package/components/svg/Help.js +18 -27
  171. package/components/svg/Home.js +18 -27
  172. package/components/svg/IconAdd.js +18 -27
  173. package/components/svg/IconArrowRight.js +19 -28
  174. package/components/svg/IconBusinessNetwork.js +18 -27
  175. package/components/svg/IconCalendar.d.ts +1 -1
  176. package/components/svg/IconCalendar.d.ts.map +1 -1
  177. package/components/svg/IconCalendar.js +18 -27
  178. package/components/svg/IconCancel.js +18 -27
  179. package/components/svg/IconChargingBattery.js +18 -27
  180. package/components/svg/IconChecklist.js +19 -28
  181. package/components/svg/IconCheckmark.js +18 -27
  182. package/components/svg/IconCoinInHand.js +18 -27
  183. package/components/svg/IconColumns.js +18 -27
  184. package/components/svg/IconComment.js +18 -27
  185. package/components/svg/IconDashboard.js +18 -27
  186. package/components/svg/IconDataMigration.js +18 -27
  187. package/components/svg/IconDocument.d.ts +8 -0
  188. package/components/svg/IconDocument.d.ts.map +1 -0
  189. package/components/svg/IconDocument.js +21 -0
  190. package/components/svg/IconDownloadFromTheCloud.js +19 -28
  191. package/components/svg/IconEdit.js +19 -28
  192. package/components/svg/IconExpand.js +19 -28
  193. package/components/svg/IconExport.js +18 -27
  194. package/components/svg/IconExternalLink.js +18 -27
  195. package/components/svg/IconEye.js +18 -27
  196. package/components/svg/IconEyeOff.js +18 -27
  197. package/components/svg/IconFile.js +18 -27
  198. package/components/svg/IconFolder.js +18 -27
  199. package/components/svg/IconFullScreen.js +18 -27
  200. package/components/svg/IconFutures.js +18 -27
  201. package/components/svg/IconGraphReport.js +18 -27
  202. package/components/svg/IconHeartMonitor.js +18 -27
  203. package/components/svg/IconHelp.js +19 -28
  204. package/components/svg/IconHistory.js +18 -27
  205. package/components/svg/IconImport.js +18 -27
  206. package/components/svg/IconIndex.js +18 -27
  207. package/components/svg/IconLayers.js +18 -27
  208. package/components/svg/IconLibrary.js +18 -27
  209. package/components/svg/IconList.js +18 -27
  210. package/components/svg/IconLivePlant.js +18 -27
  211. package/components/svg/IconLocations.js +18 -27
  212. package/components/svg/IconMail.js +18 -27
  213. package/components/svg/IconManager.js +18 -27
  214. package/components/svg/IconMarker.js +18 -27
  215. package/components/svg/IconMenu.js +18 -27
  216. package/components/svg/IconMenuHorizontal.js +18 -27
  217. package/components/svg/IconModule.js +18 -27
  218. package/components/svg/IconMyLocation.js +18 -27
  219. package/components/svg/IconNote.js +19 -28
  220. package/components/svg/IconNursery.js +18 -27
  221. package/components/svg/IconOrg.js +18 -27
  222. package/components/svg/IconParchment.js +18 -27
  223. package/components/svg/IconPhoto.js +18 -27
  224. package/components/svg/IconPlantsFilled.js +18 -27
  225. package/components/svg/IconRedo.js +18 -27
  226. package/components/svg/IconRestorationSite.js +18 -27
  227. package/components/svg/IconSeedBank.js +18 -27
  228. package/components/svg/IconSeedling.js +18 -27
  229. package/components/svg/IconSettings.js +18 -27
  230. package/components/svg/IconSlice.js +18 -27
  231. package/components/svg/IconSubmit.js +18 -27
  232. package/components/svg/IconSubtract.js +19 -28
  233. package/components/svg/IconSynced.js +18 -27
  234. package/components/svg/IconTrashCan.js +18 -27
  235. package/components/svg/IconTreasureMap.js +18 -27
  236. package/components/svg/IconUnavailable.js +18 -27
  237. package/components/svg/IconUndo.js +18 -27
  238. package/components/svg/IconVariable.js +18 -27
  239. package/components/svg/IconVideo.js +19 -28
  240. package/components/svg/IconWifi.js +18 -27
  241. package/components/svg/Info.js +18 -27
  242. package/components/svg/Key.js +18 -27
  243. package/components/svg/Leaf.js +18 -27
  244. package/components/svg/Lock.js +18 -27
  245. package/components/svg/Logo.js +40 -45
  246. package/components/svg/MenuVertical.js +18 -27
  247. package/components/svg/Notification.js +18 -27
  248. package/components/svg/Person.js +18 -27
  249. package/components/svg/Plus.js +18 -27
  250. package/components/svg/RestorationSite.js +18 -27
  251. package/components/svg/Search.js +18 -27
  252. package/components/svg/Seeds.js +18 -27
  253. package/components/svg/Site.js +18 -27
  254. package/components/svg/Sparkles.js +18 -27
  255. package/components/svg/Species.js +18 -27
  256. package/components/svg/Species2.js +161 -158
  257. package/components/svg/Spinner.js +27 -36
  258. package/components/svg/Star.js +18 -27
  259. package/components/svg/Success.js +18 -27
  260. package/components/svg/SuccessFilled.js +18 -27
  261. package/components/svg/TerrawareLogoDesktop.js +44 -49
  262. package/components/svg/TerrawareLogoMobile.js +20 -29
  263. package/components/svg/Touchscreen.js +18 -27
  264. package/components/svg/UploadCloud.js +161 -158
  265. package/components/svg/Warning.js +18 -27
  266. package/components/svg/WelcomeClipboard.js +130 -135
  267. package/components/svg/index.d.ts +1 -0
  268. package/components/svg/index.d.ts.map +1 -1
  269. package/components/svg/index.js +127 -888
  270. package/components/table/EnhancedTableToolbar.js +45 -47
  271. package/components/table/EnhancedTableToolbarV2.js +18 -26
  272. package/components/table/TableCellRenderer.js +137 -143
  273. package/components/table/TableHeader.js +45 -47
  274. package/components/table/TableHeaderItem.js +65 -64
  275. package/components/table/density.js +3 -11
  276. package/components/table/index.js +225 -218
  277. package/components/table/sort.js +8 -18
  278. package/components/table/sort.test.js +6 -8
  279. package/components/table/types.js +1 -5
  280. package/components/types/index.js +1 -5
  281. package/hooks/useBoolean.d.ts +4 -0
  282. package/hooks/useBoolean.d.ts.map +1 -0
  283. package/hooks/useBoolean.js +12 -0
  284. package/hooks/useCameraPosition.d.ts +8 -0
  285. package/hooks/useCameraPosition.d.ts.map +1 -0
  286. package/hooks/useCameraPosition.js +33 -0
  287. package/index.js +57 -398
  288. package/license-report.html +1 -1
  289. package/package.json +10 -3
  290. package/style-dictionary-dist/TerrawareTheme.js +1 -7
  291. package/theme.js +7 -14
  292. package/utils/color.d.ts +2 -0
  293. package/utils/color.d.ts.map +1 -0
  294. package/utils/color.js +14 -0
  295. package/utils/date.js +13 -24
  296. package/utils/date.test.js +40 -43
  297. package/utils/index.js +5 -53
  298. package/utils/preventDefaultEvent.js +1 -7
  299. package/utils/text.js +2 -9
  300. package/utils/text.test.js +9 -11
  301. package/utils/useDeviceInfo.js +10 -16
  302. package/virtualWalkthrough.d.ts +31 -0
  303. package/virtualWalkthrough.d.ts.map +1 -0
  304. package/virtualWalkthrough.js +28 -0
@@ -0,0 +1,88 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { Box, Typography, useTheme } from '@mui/material';
3
+ import { getRgbaFromHex } from '../../utils/color';
4
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
5
+ const UPDATE_FREQUENCY_MS = 200;
6
+ const COORDINATE_LABELS = ['X', 'Y', 'Z'];
7
+ const formatNumber = num => num.toFixed(6);
8
+ const CoordinateDisplay = ({
9
+ label,
10
+ coordinates,
11
+ textColor
12
+ }) => /*#__PURE__*/_jsxs(Box, {
13
+ children: [/*#__PURE__*/_jsxs(Typography, {
14
+ variant: "caption",
15
+ sx: {
16
+ color: textColor,
17
+ fontWeight: 'bold'
18
+ },
19
+ children: [label, ":"]
20
+ }), coordinates.map((value, index) => /*#__PURE__*/_jsxs(Typography, {
21
+ variant: "caption",
22
+ sx: {
23
+ color: textColor,
24
+ display: 'block',
25
+ fontFamily: 'monospace'
26
+ },
27
+ children: [COORDINATE_LABELS[index], ": ", formatNumber(value)]
28
+ }, COORDINATE_LABELS[index]))]
29
+ });
30
+ const CameraInfo = ({
31
+ strings,
32
+ getCameraState
33
+ }) => {
34
+ const theme = useTheme();
35
+ const [cameraState, setCameraState] = useState(null);
36
+ useEffect(() => {
37
+ const updateCameraState = () => {
38
+ const state = getCameraState();
39
+ if (state) {
40
+ setCameraState(state);
41
+ }
42
+ };
43
+ updateCameraState();
44
+ const intervalId = setInterval(updateCameraState, UPDATE_FREQUENCY_MS);
45
+ return () => clearInterval(intervalId);
46
+ }, [getCameraState]);
47
+ if (!cameraState) {
48
+ return null;
49
+ }
50
+ const textColor = theme.palette.TwClrIcnInfo;
51
+ return /*#__PURE__*/_jsxs(Box, {
52
+ sx: {
53
+ position: 'absolute',
54
+ bottom: 16,
55
+ left: 16,
56
+ backgroundColor: getRgbaFromHex(theme.palette.TwClrIcnOnBrand, 0.9),
57
+ padding: 2,
58
+ borderRadius: 1,
59
+ pointerEvents: 'auto',
60
+ minWidth: 220
61
+ },
62
+ children: [/*#__PURE__*/_jsx(Typography, {
63
+ variant: "body2",
64
+ sx: {
65
+ color: textColor,
66
+ fontWeight: 'bold',
67
+ marginBottom: 1
68
+ },
69
+ children: strings.cameraInfo
70
+ }), /*#__PURE__*/_jsxs(Box, {
71
+ sx: {
72
+ display: 'flex',
73
+ flexDirection: 'column',
74
+ gap: 1
75
+ },
76
+ children: [/*#__PURE__*/_jsx(CoordinateDisplay, {
77
+ label: strings.cameraPosition,
78
+ coordinates: cameraState.position,
79
+ textColor: textColor
80
+ }), /*#__PURE__*/_jsx(CoordinateDisplay, {
81
+ label: strings.cameraFocusPoint,
82
+ coordinates: cameraState.focus,
83
+ textColor: textColor
84
+ })]
85
+ })]
86
+ });
87
+ };
88
+ export default CameraInfo;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ export interface ControlsInfoPaneStrings {
3
+ controls: string;
4
+ annotations: string;
5
+ autoRotate: string;
6
+ orbit: string;
7
+ leftMouse: string;
8
+ touchDrag: string;
9
+ pan: string;
10
+ middleMouse: string;
11
+ swipe: string;
12
+ look: string;
13
+ rightMouse: string;
14
+ zoom: string;
15
+ mouseWheel: string;
16
+ pinch: string;
17
+ fly: string;
18
+ arrowKeys: string;
19
+ flyFaster: string;
20
+ shift: string;
21
+ flySlower: string;
22
+ ctrl: string;
23
+ resetCamera: string;
24
+ }
25
+ interface ControlsInfoPaneProps {
26
+ visible: boolean;
27
+ paneRef: React.RefObject<HTMLDivElement | null>;
28
+ strings: ControlsInfoPaneStrings;
29
+ showAnnotations?: boolean;
30
+ onToggleAnnotations?: (show: boolean) => void;
31
+ autoRotate?: boolean;
32
+ onToggleAutoRotate?: (enabled: boolean) => void;
33
+ isFullScreen?: boolean;
34
+ }
35
+ declare const ControlsInfoPane: ({ visible, paneRef, strings, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, isFullScreen, }: ControlsInfoPaneProps) => import("react/jsx-runtime").JSX.Element;
36
+ export default ControlsInfoPane;
37
+ //# sourceMappingURL=ControlsInfoPane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ControlsInfoPane.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/ControlsInfoPane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAChD,OAAO,EAAE,uBAAuB,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,QAAA,MAAM,gBAAgB,GAAI,oHASvB,qBAAqB,4CA8JvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,196 @@
1
+ import React, { useCallback } from 'react';
2
+ import { Box, Checkbox, Divider, Fade, Typography, useTheme } from '@mui/material';
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ const ControlsInfoPane = ({
5
+ visible,
6
+ paneRef,
7
+ strings,
8
+ showAnnotations,
9
+ onToggleAnnotations,
10
+ autoRotate,
11
+ onToggleAutoRotate,
12
+ isFullScreen = false
13
+ }) => {
14
+ const theme = useTheme();
15
+ const handleAnnotationsChange = useCallback(e => {
16
+ onToggleAnnotations?.(e.target.checked);
17
+ }, [onToggleAnnotations]);
18
+ const handleAutoRotateChange = useCallback(e => {
19
+ onToggleAutoRotate?.(e.target.checked);
20
+ }, [onToggleAutoRotate]);
21
+ const controlRowSx = {
22
+ display: 'flex',
23
+ justifyContent: 'space-between',
24
+ alignItems: 'center'
25
+ };
26
+ const rightAlignedTextSx = {
27
+ textAlign: 'right'
28
+ };
29
+ const dividerSx = {
30
+ backgroundColor: theme.palette.TwClrBrdrTertiary
31
+ };
32
+ return /*#__PURE__*/_jsx(Box, {
33
+ sx: {
34
+ position: 'absolute',
35
+ top: 0,
36
+ left: 0,
37
+ right: 0,
38
+ bottom: 0,
39
+ pointerEvents: 'none',
40
+ display: 'flex',
41
+ justifyContent: 'flex-end',
42
+ alignItems: 'flex-start',
43
+ paddingX: 2,
44
+ paddingTop: isFullScreen ? 8 : 2,
45
+ zIndex: 1001
46
+ },
47
+ children: /*#__PURE__*/_jsx(Fade, {
48
+ in: visible,
49
+ timeout: 500,
50
+ children: /*#__PURE__*/_jsx(Box, {
51
+ ref: paneRef,
52
+ sx: {
53
+ backgroundColor: theme.palette.grey[900],
54
+ color: theme.palette.common.white,
55
+ borderRadius: 2,
56
+ padding: 3,
57
+ minWidth: 320,
58
+ maxWidth: 400,
59
+ pointerEvents: 'auto'
60
+ },
61
+ children: /*#__PURE__*/_jsxs(Box, {
62
+ sx: {
63
+ display: 'flex',
64
+ flexDirection: 'column',
65
+ gap: 1
66
+ },
67
+ children: [/*#__PURE__*/_jsx(Typography, {
68
+ sx: {
69
+ fontWeight: 600
70
+ },
71
+ children: strings.controls
72
+ }), /*#__PURE__*/_jsxs(Box, {
73
+ sx: controlRowSx,
74
+ children: [/*#__PURE__*/_jsx(Typography, {
75
+ children: strings.annotations
76
+ }), /*#__PURE__*/_jsx(Checkbox, {
77
+ checked: showAnnotations ?? true,
78
+ onChange: handleAnnotationsChange,
79
+ sx: {
80
+ color: theme.palette.primary.main
81
+ }
82
+ })]
83
+ }), /*#__PURE__*/_jsx(Divider, {
84
+ sx: dividerSx
85
+ }), /*#__PURE__*/_jsxs(Box, {
86
+ sx: controlRowSx,
87
+ children: [/*#__PURE__*/_jsx(Typography, {
88
+ children: strings.autoRotate
89
+ }), /*#__PURE__*/_jsx(Checkbox, {
90
+ checked: autoRotate ?? true,
91
+ onChange: handleAutoRotateChange,
92
+ sx: {
93
+ color: theme.palette.primary.main
94
+ }
95
+ })]
96
+ }), /*#__PURE__*/_jsx(Divider, {
97
+ sx: dividerSx
98
+ }), /*#__PURE__*/_jsxs(Box, {
99
+ sx: controlRowSx,
100
+ children: [/*#__PURE__*/_jsx(Typography, {
101
+ children: strings.orbit
102
+ }), /*#__PURE__*/_jsxs(Box, {
103
+ sx: rightAlignedTextSx,
104
+ children: [/*#__PURE__*/_jsx(Typography, {
105
+ children: strings.leftMouse
106
+ }), /*#__PURE__*/_jsx(Typography, {
107
+ children: strings.touchDrag
108
+ })]
109
+ })]
110
+ }), /*#__PURE__*/_jsx(Divider, {
111
+ sx: dividerSx
112
+ }), /*#__PURE__*/_jsxs(Box, {
113
+ sx: controlRowSx,
114
+ children: [/*#__PURE__*/_jsx(Typography, {
115
+ children: strings.pan
116
+ }), /*#__PURE__*/_jsxs(Box, {
117
+ sx: rightAlignedTextSx,
118
+ children: [/*#__PURE__*/_jsx(Typography, {
119
+ children: strings.middleMouse
120
+ }), /*#__PURE__*/_jsx(Typography, {
121
+ children: strings.swipe
122
+ })]
123
+ })]
124
+ }), /*#__PURE__*/_jsx(Divider, {
125
+ sx: dividerSx
126
+ }), /*#__PURE__*/_jsxs(Box, {
127
+ sx: controlRowSx,
128
+ children: [/*#__PURE__*/_jsx(Typography, {
129
+ children: strings.look
130
+ }), /*#__PURE__*/_jsx(Typography, {
131
+ children: strings.rightMouse
132
+ })]
133
+ }), /*#__PURE__*/_jsx(Divider, {
134
+ sx: dividerSx
135
+ }), /*#__PURE__*/_jsxs(Box, {
136
+ sx: controlRowSx,
137
+ children: [/*#__PURE__*/_jsx(Typography, {
138
+ children: strings.zoom
139
+ }), /*#__PURE__*/_jsxs(Box, {
140
+ sx: rightAlignedTextSx,
141
+ children: [/*#__PURE__*/_jsx(Typography, {
142
+ children: strings.mouseWheel
143
+ }), /*#__PURE__*/_jsx(Typography, {
144
+ children: strings.pinch
145
+ })]
146
+ })]
147
+ }), /*#__PURE__*/_jsx(Divider, {
148
+ sx: dividerSx
149
+ }), /*#__PURE__*/_jsxs(Box, {
150
+ sx: controlRowSx,
151
+ children: [/*#__PURE__*/_jsx(Typography, {
152
+ children: strings.fly
153
+ }), /*#__PURE__*/_jsxs(Box, {
154
+ sx: rightAlignedTextSx,
155
+ children: [/*#__PURE__*/_jsx(Typography, {
156
+ children: "WASD"
157
+ }), /*#__PURE__*/_jsx(Typography, {
158
+ children: strings.arrowKeys
159
+ })]
160
+ })]
161
+ }), /*#__PURE__*/_jsx(Divider, {
162
+ sx: dividerSx
163
+ }), /*#__PURE__*/_jsxs(Box, {
164
+ sx: controlRowSx,
165
+ children: [/*#__PURE__*/_jsx(Typography, {
166
+ children: strings.flyFaster
167
+ }), /*#__PURE__*/_jsx(Typography, {
168
+ children: strings.shift
169
+ })]
170
+ }), /*#__PURE__*/_jsx(Divider, {
171
+ sx: dividerSx
172
+ }), /*#__PURE__*/_jsxs(Box, {
173
+ sx: controlRowSx,
174
+ children: [/*#__PURE__*/_jsx(Typography, {
175
+ children: strings.flySlower
176
+ }), /*#__PURE__*/_jsx(Typography, {
177
+ children: strings.ctrl
178
+ })]
179
+ }), /*#__PURE__*/_jsx(Divider, {
180
+ sx: dividerSx
181
+ }), /*#__PURE__*/_jsxs(Box, {
182
+ sx: controlRowSx,
183
+ children: [/*#__PURE__*/_jsx(Typography, {
184
+ children: strings.resetCamera
185
+ }), /*#__PURE__*/_jsx(Typography, {
186
+ children: "R"
187
+ })]
188
+ }), /*#__PURE__*/_jsx(Divider, {
189
+ sx: dividerSx
190
+ })]
191
+ })
192
+ })
193
+ })
194
+ });
195
+ };
196
+ export default ControlsInfoPane;
@@ -0,0 +1,9 @@
1
+ interface GradientSkyProps {
2
+ topColor?: string;
3
+ horizonColor?: string;
4
+ groundColor?: string;
5
+ resolution?: number;
6
+ }
7
+ declare const GradientSky: ({ topColor, horizonColor, groundColor, resolution, }: GradientSkyProps) => import("react/jsx-runtime").JSX.Element | null;
8
+ export default GradientSky;
9
+ //# sourceMappingURL=GradientSky.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientSky.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/GradientSky.tsx"],"names":[],"mappings":"AAOA,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,QAAA,MAAM,WAAW,GAAI,sDAKlB,gBAAgB,mDAkElB,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,73 @@
1
+ import React, { useEffect, useMemo } from 'react';
2
+ import { Entity } from '@playcanvas/react';
3
+ import { Render } from '@playcanvas/react/components';
4
+ import { useApp } from '@playcanvas/react/hooks';
5
+ import { Color, PIXELFORMAT_RGBA8, StandardMaterial, Texture } from 'playcanvas';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const GradientSky = ({
8
+ topColor = '#1e90ff',
9
+ horizonColor = '#87ceeb',
10
+ groundColor = '#8b7355',
11
+ resolution = 512
12
+ }) => {
13
+ const app = useApp();
14
+ const material = useMemo(() => {
15
+ if (!app) {
16
+ return null;
17
+ }
18
+ const canvas = document.createElement('canvas');
19
+ canvas.width = resolution;
20
+ canvas.height = resolution;
21
+ const ctx = canvas.getContext('2d');
22
+ if (!ctx) {
23
+ return null;
24
+ }
25
+ const gradient = ctx.createLinearGradient(0, 0, 0, resolution);
26
+ gradient.addColorStop(0, topColor);
27
+ gradient.addColorStop(0.5, horizonColor);
28
+ gradient.addColorStop(0.5, groundColor);
29
+ gradient.addColorStop(1, groundColor);
30
+ ctx.fillStyle = gradient;
31
+ ctx.fillRect(0, 0, resolution, resolution);
32
+ const texture = new Texture(app.graphicsDevice, {
33
+ width: resolution,
34
+ height: resolution,
35
+ format: PIXELFORMAT_RGBA8,
36
+ mipmaps: false
37
+ });
38
+ const pixels = ctx.getImageData(0, 0, resolution, resolution);
39
+ texture.lock().set(new Uint8Array(pixels.data));
40
+ texture.unlock();
41
+ const mat = new StandardMaterial();
42
+ mat.emissiveMap = texture;
43
+ mat.emissive = new Color(1, 1, 1);
44
+ mat.useLighting = false;
45
+ mat.cull = 0;
46
+ mat.depthWrite = false;
47
+ mat.update();
48
+ return mat;
49
+ }, [app, topColor, horizonColor, groundColor, resolution]);
50
+ useEffect(() => {
51
+ // remove material to avoid memory leak
52
+ return () => {
53
+ if (material) {
54
+ material.destroy();
55
+ }
56
+ };
57
+ }, [material]);
58
+ if (!material) {
59
+ return null;
60
+ }
61
+ return /*#__PURE__*/_jsx(Entity, {
62
+ name: "gradient-sky",
63
+ position: [0, 0, 0],
64
+ scale: [500, 500, 500],
65
+ children: /*#__PURE__*/_jsx(Render, {
66
+ type: "sphere",
67
+ material: material,
68
+ castShadows: false,
69
+ receiveShadows: false
70
+ })
71
+ });
72
+ };
73
+ export default GradientSky;
@@ -0,0 +1,50 @@
1
+ import { AnnotationProps } from './Annotation';
2
+ import { AnnotationEditPaneStrings } from './AnnotationEditPane';
3
+ import { CameraInfoStrings } from './CameraInfo';
4
+ import { ControlsInfoPaneStrings } from './ControlsInfoPane';
5
+ export interface SplatControlsStrings {
6
+ addAnnotation: string;
7
+ deselectAnnotation: string;
8
+ deleteAnnotation: string;
9
+ ar: string;
10
+ vr: string;
11
+ edit: string;
12
+ freeFly: string;
13
+ boundedFly: string;
14
+ cancel: string;
15
+ save: string;
16
+ controlsInfoPane: ControlsInfoPaneStrings;
17
+ cameraInfo: CameraInfoStrings;
18
+ annotationEditPane: AnnotationEditPaneStrings;
19
+ }
20
+ export interface SplatControlsProps {
21
+ strings: SplatControlsStrings;
22
+ defaultCameraPosition?: [number, number, number];
23
+ defaultCameraFocus?: [number, number, number];
24
+ showAnnotations?: boolean;
25
+ onToggleAnnotations?: (show: boolean) => void;
26
+ autoRotate?: boolean;
27
+ onToggleAutoRotate?: (enabled: boolean) => void;
28
+ editable?: boolean;
29
+ isEdit?: boolean;
30
+ onToggleEdit?: (isEdit: boolean) => void;
31
+ onSave?: () => void;
32
+ onCancel?: () => void;
33
+ onAddAnnotation?: () => void;
34
+ onDeleteAnnotation?: () => void;
35
+ onDeselectAnnotation?: () => void;
36
+ hasSelectedAnnotation?: boolean;
37
+ selectedAnnotation?: AnnotationProps | null;
38
+ onAnnotationUpdate: (updates: Partial<AnnotationProps>) => void;
39
+ onTextFieldFocus?: (isFocused: boolean) => void;
40
+ canSave?: boolean;
41
+ isFullScreen?: boolean;
42
+ onToggleFullScreen?: () => void;
43
+ isFreeFly?: boolean;
44
+ onToggleFreeFly?: () => void;
45
+ showFreeFly?: boolean;
46
+ onError?: (error: Error) => void;
47
+ }
48
+ declare const SplatControls: ({ strings, defaultCameraPosition, defaultCameraFocus, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, editable, isEdit, onToggleEdit, onSave, onCancel, onAddAnnotation, onDeleteAnnotation, onDeselectAnnotation, hasSelectedAnnotation, selectedAnnotation, onAnnotationUpdate, onTextFieldFocus, canSave, isFullScreen, onToggleFullScreen, isFreeFly, onToggleFreeFly, showFreeFly, onError, }: SplatControlsProps) => import("react/jsx-runtime").JSX.Element;
49
+ export default SplatControls;
50
+ //# sourceMappingURL=SplatControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplatControls.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/SplatControls.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAA2B,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAyB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE/E,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,kBAAkB,EAAE,yBAAyB,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kBAAkB,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5C,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAChE,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,QAAA,MAAM,aAAa,GAAI,0ZA2BpB,kBAAkB,4CA2NpB,CAAC;AAEF,eAAe,aAAa,CAAC"}