@terraware/web-components 4.3.3 → 5.0.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 (49) hide show
  1. package/components/VirtualWalkthrough/AnnotationEditPane.d.ts +1 -21
  2. package/components/VirtualWalkthrough/AnnotationEditPane.d.ts.map +1 -1
  3. package/components/VirtualWalkthrough/AnnotationEditPane.js +18 -17
  4. package/components/VirtualWalkthrough/CameraInfo.d.ts +1 -7
  5. package/components/VirtualWalkthrough/CameraInfo.d.ts.map +1 -1
  6. package/components/VirtualWalkthrough/CameraInfo.js +5 -4
  7. package/components/VirtualWalkthrough/ControlsInfoPane.d.ts +1 -25
  8. package/components/VirtualWalkthrough/ControlsInfoPane.d.ts.map +1 -1
  9. package/components/VirtualWalkthrough/ControlsInfoPane.js +23 -22
  10. package/components/VirtualWalkthrough/SplatControls.d.ts +1 -20
  11. package/components/VirtualWalkthrough/SplatControls.d.ts.map +1 -1
  12. package/components/VirtualWalkthrough/SplatControls.js +11 -13
  13. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.d.ts +1 -3
  14. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.d.ts.map +1 -1
  15. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.js +1 -3
  16. package/index.d.ts +5 -1
  17. package/index.d.ts.map +1 -1
  18. package/index.js +2 -0
  19. package/license-report.html +1 -1
  20. package/package.json +2 -1
  21. package/strings/csv/en.csv +50 -0
  22. package/strings/csv/es.csv +50 -0
  23. package/strings/csv/fr.csv +50 -0
  24. package/strings/csv/instructions-es.txt +14 -0
  25. package/strings/csv/instructions-fr.txt +14 -0
  26. package/strings/csv/instructions.txt +13 -0
  27. package/strings/export.d.ts +36 -0
  28. package/strings/export.d.ts.map +1 -0
  29. package/strings/export.js +116 -0
  30. package/strings/index.d.ts +22 -0
  31. package/strings/index.d.ts.map +1 -0
  32. package/strings/index.js +62 -0
  33. package/strings/locales.d.ts +38 -0
  34. package/strings/locales.d.ts.map +1 -0
  35. package/strings/locales.js +42 -0
  36. package/strings/strings-en.d.ts +52 -0
  37. package/strings/strings-en.d.ts.map +1 -0
  38. package/strings/strings-en.js +54 -0
  39. package/strings/strings-es.d.ts +52 -0
  40. package/strings/strings-es.d.ts.map +1 -0
  41. package/strings/strings-es.js +54 -0
  42. package/strings/strings-fr.d.ts +52 -0
  43. package/strings/strings-fr.d.ts.map +1 -0
  44. package/strings/strings-fr.js +54 -0
  45. package/strings/strings-gx.d.ts +52 -0
  46. package/strings/strings-gx.d.ts.map +1 -0
  47. package/strings/strings-gx.js +54 -0
  48. package/virtualWalkthrough.d.ts +2 -4
  49. package/virtualWalkthrough.d.ts.map +1 -1
@@ -1,33 +1,13 @@
1
1
  import { AnnotationProps } from './Annotation';
2
- export interface AnnotationEditPaneStrings {
3
- editAnnotation: string;
4
- title: string;
5
- titleTooltip: string;
6
- description: string;
7
- descriptionTooltip: string;
8
- label: string;
9
- labelTooltip: string;
10
- images?: {
11
- uploadTitle?: string;
12
- uploadText?: string;
13
- uploadDescription?: string;
14
- chooseFileText?: string;
15
- replaceFileText?: string;
16
- photoSelectedText?: string;
17
- existingImagesLabel?: string;
18
- newImagesLabel?: string;
19
- };
20
- }
21
2
  interface AnnotationEditPaneProps {
22
3
  visible: boolean;
23
4
  annotation: AnnotationProps | null;
24
- strings: AnnotationEditPaneStrings;
25
5
  onUpdate: (updates: Partial<AnnotationProps>) => void;
26
6
  onTextFieldFocus?: (isFocused: boolean) => void;
27
7
  maxImages?: number;
28
8
  /** Fires with the current selection on every add/remove, including an initial empty emission on mount. */
29
9
  onImagesChange?: (files: File[]) => void;
30
10
  }
31
- declare const AnnotationEditPane: ({ visible, annotation, strings, onUpdate, onTextFieldFocus, maxImages, onImagesChange, }: AnnotationEditPaneProps) => import("react/jsx-runtime").JSX.Element | null;
11
+ declare const AnnotationEditPane: ({ visible, annotation, onUpdate, onTextFieldFocus, maxImages, onImagesChange, }: AnnotationEditPaneProps) => import("react/jsx-runtime").JSX.Element | null;
32
12
  export default AnnotationEditPane;
33
13
  //# sourceMappingURL=AnnotationEditPane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnnotationEditPane.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/AnnotationEditPane.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,UAAU,uBAAuB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,yBAAyB,CAAC;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACtD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0GAA0G;IAC1G,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,kBAAkB,GAAI,0FAQzB,uBAAuB,mDA4LzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"AnnotationEditPane.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/AnnotationEditPane.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,UAAU,uBAAuB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACtD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0GAA0G;IAC1G,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,kBAAkB,GAAI,iFAOzB,uBAAuB,mDA2LzB,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { useMemo, useCallback } from 'react';
2
2
  import { useTheme, Box, Fade, Typography, Tooltip, ThemeProvider } from '@mui/material';
3
+ import { useStrings } from '../../strings/index.js';
3
4
  import PhotoChooser from '../PhotoChooser/index.js';
4
5
  import TextField from '../Textfield/Textfield.js';
5
6
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -7,13 +8,13 @@ import { jsx, jsxs } from 'react/jsx-runtime';
7
8
  const AnnotationEditPane = ({
8
9
  visible,
9
10
  annotation,
10
- strings,
11
11
  onUpdate,
12
12
  onTextFieldFocus,
13
13
  maxImages,
14
14
  onImagesChange
15
15
  }) => {
16
16
  const theme = useTheme();
17
+ const strings = useStrings();
17
18
  const showImageUpload = !!onImagesChange && !!maxImages && maxImages > 0;
18
19
  const remainingImageSlots = Math.max(0, (maxImages ?? 0) - (annotation?.imageUrls?.length ?? 0));
19
20
 
@@ -106,14 +107,14 @@ const AnnotationEditPane = ({
106
107
  sx: {
107
108
  fontWeight: 600
108
109
  },
109
- children: strings.editAnnotation
110
+ children: strings.EDIT_ANNOTATION
110
111
  }), /*#__PURE__*/jsx(Tooltip, {
111
- title: strings.titleTooltip,
112
+ title: strings.ANNOTATION_TITLE_TOOLTIP,
112
113
  placement: "top",
113
114
  disableFocusListener: true,
114
115
  children: /*#__PURE__*/jsx(TextField, {
115
116
  id: "annotation-title",
116
- label: strings.title,
117
+ label: strings.TITLE,
117
118
  type: "text",
118
119
  value: annotation.title,
119
120
  onChange: handleTitleChange,
@@ -123,12 +124,12 @@ const AnnotationEditPane = ({
123
124
  required: true
124
125
  })
125
126
  }), /*#__PURE__*/jsx(Tooltip, {
126
- title: strings.descriptionTooltip,
127
+ title: strings.ANNOTATION_DESCRIPTION_TOOLTIP,
127
128
  placement: "top",
128
129
  disableFocusListener: true,
129
130
  children: /*#__PURE__*/jsx(TextField, {
130
131
  id: "annotation-body",
131
- label: strings.description,
132
+ label: strings.DESCRIPTION,
132
133
  type: "text",
133
134
  value: annotation.bodyText ?? '',
134
135
  onChange: handleBodyTextChange,
@@ -137,12 +138,12 @@ const AnnotationEditPane = ({
137
138
  sx: textFieldSx
138
139
  })
139
140
  }), /*#__PURE__*/jsx(Tooltip, {
140
- title: strings.labelTooltip,
141
+ title: strings.ANNOTATION_LABEL_TOOLTIP,
141
142
  placement: "top",
142
143
  disableFocusListener: true,
143
144
  children: /*#__PURE__*/jsx(TextField, {
144
145
  id: "annotation-label",
145
- label: strings.label,
146
+ label: strings.LABEL,
146
147
  type: "text",
147
148
  value: annotation.label ?? '',
148
149
  onChange: handleLabelChange,
@@ -151,7 +152,7 @@ const AnnotationEditPane = ({
151
152
  sx: textFieldSx
152
153
  })
153
154
  }), showImageUpload && /*#__PURE__*/jsxs(Box, {
154
- children: [strings.images?.uploadTitle && /*#__PURE__*/jsx(Typography, {
155
+ children: [/*#__PURE__*/jsx(Typography, {
155
156
  sx: {
156
157
  fontFamily: 'Inter',
157
158
  fontSize: '14px',
@@ -160,22 +161,22 @@ const AnnotationEditPane = ({
160
161
  color: theme.palette.grey[400],
161
162
  marginBottom: 0.5
162
163
  },
163
- children: strings.images.uploadTitle
164
+ children: strings.IMAGES
164
165
  }), /*#__PURE__*/jsx(ThemeProvider, {
165
166
  theme: photoChooserTheme,
166
167
  children: /*#__PURE__*/jsx(PhotoChooser, {
167
- uploadText: strings.images?.uploadText,
168
- uploadDescription: strings.images?.uploadDescription,
169
- chooseFileText: strings.images?.chooseFileText,
170
- replaceFileText: strings.images?.replaceFileText,
171
- photoSelectedText: strings.images?.photoSelectedText,
168
+ uploadText: strings.UPLOAD_FILES,
169
+ uploadDescription: strings.UPLOAD_FILES_DESCRIPTION,
170
+ chooseFileText: strings.CHOOSE_FILE,
171
+ replaceFileText: strings.REPLACE_FILE,
172
+ photoSelectedText: strings.FILE_SELECTED,
172
173
  multipleSelection: (maxImages ?? 0) > 1,
173
174
  maxPhotos: remainingImageSlots,
174
175
  onPhotosChanged: files => onImagesChange?.(files),
175
176
  existingPhotos: annotation.imageUrls,
176
177
  onExistingPhotoRemoved: handleRemoveExistingImage,
177
- existingImagesLabel: strings.images?.existingImagesLabel,
178
- newImagesLabel: strings.images?.newImagesLabel
178
+ existingImagesLabel: strings.EXISTING,
179
+ newImagesLabel: strings.NEW
179
180
  })
180
181
  })]
181
182
  })]
@@ -1,16 +1,10 @@
1
- export interface CameraInfoStrings {
2
- cameraInfo: string;
3
- cameraPosition: string;
4
- cameraFocusPoint: string;
5
- }
6
1
  export interface CameraState {
7
2
  position: [number, number, number];
8
3
  focus: [number, number, number];
9
4
  }
10
5
  interface CameraInfoProps {
11
- strings: CameraInfoStrings;
12
6
  getCameraState: () => CameraState | null;
13
7
  }
14
- declare const CameraInfo: ({ strings, getCameraState }: CameraInfoProps) => import("react/jsx-runtime").JSX.Element | null;
8
+ declare const CameraInfo: ({ getCameraState }: CameraInfoProps) => import("react/jsx-runtime").JSX.Element | null;
15
9
  export default CameraInfo;
16
10
  //# sourceMappingURL=CameraInfo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CameraInfo.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/CameraInfo.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAyBD,UAAU,eAAe;IACvB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,cAAc,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,UAAU,GAAI,6BAA6B,eAAe,mDA8C/D,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"CameraInfo.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/CameraInfo.tsx"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAyBD,UAAU,eAAe;IACvB,cAAc,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,UAAU,GAAI,oBAAoB,eAAe,mDA+CtD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { useState, useEffect } from 'react';
2
2
  import { useTheme, Box, Typography } from '@mui/material';
3
+ import { useStrings } from '../../strings/index.js';
3
4
  import { getRgbaFromHex } from '../../utils/color.js';
4
5
  import { jsxs, jsx } from 'react/jsx-runtime';
5
6
 
@@ -29,10 +30,10 @@ const CoordinateDisplay = ({
29
30
  }, COORDINATE_LABELS[index]))]
30
31
  });
31
32
  const CameraInfo = ({
32
- strings,
33
33
  getCameraState
34
34
  }) => {
35
35
  const theme = useTheme();
36
+ const strings = useStrings();
36
37
  const [cameraState, setCameraState] = useState(null);
37
38
  useEffect(() => {
38
39
  const updateCameraState = () => {
@@ -67,7 +68,7 @@ const CameraInfo = ({
67
68
  fontWeight: 'bold',
68
69
  marginBottom: 1
69
70
  },
70
- children: strings.cameraInfo
71
+ children: strings.CAMERA_INFO
71
72
  }), /*#__PURE__*/jsxs(Box, {
72
73
  sx: {
73
74
  display: 'flex',
@@ -75,11 +76,11 @@ const CameraInfo = ({
75
76
  gap: 1
76
77
  },
77
78
  children: [/*#__PURE__*/jsx(CoordinateDisplay, {
78
- label: strings.cameraPosition,
79
+ label: strings.CAMERA_POSITION,
79
80
  coordinates: cameraState.position,
80
81
  textColor: textColor
81
82
  }), /*#__PURE__*/jsx(CoordinateDisplay, {
82
- label: strings.cameraFocusPoint,
83
+ label: strings.CAMERA_FOCUS_POINT,
83
84
  coordinates: cameraState.focus,
84
85
  textColor: textColor
85
86
  })]
@@ -1,37 +1,13 @@
1
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
2
  interface ControlsInfoPaneProps {
26
3
  visible: boolean;
27
4
  paneRef: React.RefObject<HTMLDivElement | null>;
28
- strings: ControlsInfoPaneStrings;
29
5
  showAnnotations?: boolean;
30
6
  onToggleAnnotations?: (show: boolean) => void;
31
7
  autoRotate?: boolean;
32
8
  onToggleAutoRotate?: (enabled: boolean) => void;
33
9
  isFullScreen?: boolean;
34
10
  }
35
- declare const ControlsInfoPane: ({ visible, paneRef, strings, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, isFullScreen, }: ControlsInfoPaneProps) => import("react/jsx-runtime").JSX.Element;
11
+ declare const ControlsInfoPane: ({ visible, paneRef, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, isFullScreen, }: ControlsInfoPaneProps) => import("react/jsx-runtime").JSX.Element;
36
12
  export default ControlsInfoPane;
37
13
  //# sourceMappingURL=ControlsInfoPane.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"ControlsInfoPane.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/ControlsInfoPane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAM3C,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAChD,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,2GAQvB,qBAAqB,4CA+JvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { useCallback } from 'react';
2
2
  import { useTheme, Box, Fade, Typography, Checkbox, Divider } from '@mui/material';
3
+ import { useStrings } from '../../strings/index.js';
3
4
  import { jsx, jsxs } from 'react/jsx-runtime';
4
5
 
5
6
  const ControlsInfoPane = ({
6
7
  visible,
7
8
  paneRef,
8
- strings,
9
9
  showAnnotations,
10
10
  onToggleAnnotations,
11
11
  autoRotate,
@@ -13,6 +13,7 @@ const ControlsInfoPane = ({
13
13
  isFullScreen = false
14
14
  }) => {
15
15
  const theme = useTheme();
16
+ const strings = useStrings();
16
17
  const handleAnnotationsChange = useCallback(e => {
17
18
  onToggleAnnotations?.(e.target.checked);
18
19
  }, [onToggleAnnotations]);
@@ -69,11 +70,11 @@ const ControlsInfoPane = ({
69
70
  sx: {
70
71
  fontWeight: 600
71
72
  },
72
- children: strings.controls
73
+ children: strings.CONTROLS
73
74
  }), /*#__PURE__*/jsxs(Box, {
74
75
  sx: controlRowSx,
75
76
  children: [/*#__PURE__*/jsx(Typography, {
76
- children: strings.annotations
77
+ children: strings.ANNOTATIONS
77
78
  }), /*#__PURE__*/jsx(Checkbox, {
78
79
  checked: showAnnotations ?? true,
79
80
  onChange: handleAnnotationsChange,
@@ -86,7 +87,7 @@ const ControlsInfoPane = ({
86
87
  }), /*#__PURE__*/jsxs(Box, {
87
88
  sx: controlRowSx,
88
89
  children: [/*#__PURE__*/jsx(Typography, {
89
- children: strings.autoRotate
90
+ children: strings.AUTO_ROTATE
90
91
  }), /*#__PURE__*/jsx(Checkbox, {
91
92
  checked: autoRotate ?? true,
92
93
  onChange: handleAutoRotateChange,
@@ -99,13 +100,13 @@ const ControlsInfoPane = ({
99
100
  }), /*#__PURE__*/jsxs(Box, {
100
101
  sx: controlRowSx,
101
102
  children: [/*#__PURE__*/jsx(Typography, {
102
- children: strings.orbit
103
+ children: strings.ORBIT
103
104
  }), /*#__PURE__*/jsxs(Box, {
104
105
  sx: rightAlignedTextSx,
105
106
  children: [/*#__PURE__*/jsx(Typography, {
106
- children: strings.leftMouse
107
+ children: strings.LEFT_MOUSE
107
108
  }), /*#__PURE__*/jsx(Typography, {
108
- children: strings.touchDrag
109
+ children: strings.TOUCH_DRAG
109
110
  })]
110
111
  })]
111
112
  }), /*#__PURE__*/jsx(Divider, {
@@ -113,13 +114,13 @@ const ControlsInfoPane = ({
113
114
  }), /*#__PURE__*/jsxs(Box, {
114
115
  sx: controlRowSx,
115
116
  children: [/*#__PURE__*/jsx(Typography, {
116
- children: strings.pan
117
+ children: strings.PAN
117
118
  }), /*#__PURE__*/jsxs(Box, {
118
119
  sx: rightAlignedTextSx,
119
120
  children: [/*#__PURE__*/jsx(Typography, {
120
- children: strings.middleMouse
121
+ children: strings.MIDDLE_MOUSE
121
122
  }), /*#__PURE__*/jsx(Typography, {
122
- children: strings.swipe
123
+ children: strings.SWIPE
123
124
  })]
124
125
  })]
125
126
  }), /*#__PURE__*/jsx(Divider, {
@@ -127,22 +128,22 @@ const ControlsInfoPane = ({
127
128
  }), /*#__PURE__*/jsxs(Box, {
128
129
  sx: controlRowSx,
129
130
  children: [/*#__PURE__*/jsx(Typography, {
130
- children: strings.look
131
+ children: strings.LOOK
131
132
  }), /*#__PURE__*/jsx(Typography, {
132
- children: strings.rightMouse
133
+ children: strings.RIGHT_MOUSE
133
134
  })]
134
135
  }), /*#__PURE__*/jsx(Divider, {
135
136
  sx: dividerSx
136
137
  }), /*#__PURE__*/jsxs(Box, {
137
138
  sx: controlRowSx,
138
139
  children: [/*#__PURE__*/jsx(Typography, {
139
- children: strings.zoom
140
+ children: strings.ZOOM
140
141
  }), /*#__PURE__*/jsxs(Box, {
141
142
  sx: rightAlignedTextSx,
142
143
  children: [/*#__PURE__*/jsx(Typography, {
143
- children: strings.mouseWheel
144
+ children: strings.MOUSE_WHEEL
144
145
  }), /*#__PURE__*/jsx(Typography, {
145
- children: strings.pinch
146
+ children: strings.PINCH
146
147
  })]
147
148
  })]
148
149
  }), /*#__PURE__*/jsx(Divider, {
@@ -150,13 +151,13 @@ const ControlsInfoPane = ({
150
151
  }), /*#__PURE__*/jsxs(Box, {
151
152
  sx: controlRowSx,
152
153
  children: [/*#__PURE__*/jsx(Typography, {
153
- children: strings.fly
154
+ children: strings.FLY
154
155
  }), /*#__PURE__*/jsxs(Box, {
155
156
  sx: rightAlignedTextSx,
156
157
  children: [/*#__PURE__*/jsx(Typography, {
157
158
  children: "WASD"
158
159
  }), /*#__PURE__*/jsx(Typography, {
159
- children: strings.arrowKeys
160
+ children: strings.ARROW_KEYS
160
161
  })]
161
162
  })]
162
163
  }), /*#__PURE__*/jsx(Divider, {
@@ -164,25 +165,25 @@ const ControlsInfoPane = ({
164
165
  }), /*#__PURE__*/jsxs(Box, {
165
166
  sx: controlRowSx,
166
167
  children: [/*#__PURE__*/jsx(Typography, {
167
- children: strings.flyFaster
168
+ children: strings.FLY_FASTER
168
169
  }), /*#__PURE__*/jsx(Typography, {
169
- children: strings.shift
170
+ children: strings.SHIFT
170
171
  })]
171
172
  }), /*#__PURE__*/jsx(Divider, {
172
173
  sx: dividerSx
173
174
  }), /*#__PURE__*/jsxs(Box, {
174
175
  sx: controlRowSx,
175
176
  children: [/*#__PURE__*/jsx(Typography, {
176
- children: strings.flySlower
177
+ children: strings.FLY_SLOWER
177
178
  }), /*#__PURE__*/jsx(Typography, {
178
- children: strings.ctrl
179
+ children: strings.CTRL
179
180
  })]
180
181
  }), /*#__PURE__*/jsx(Divider, {
181
182
  sx: dividerSx
182
183
  }), /*#__PURE__*/jsxs(Box, {
183
184
  sx: controlRowSx,
184
185
  children: [/*#__PURE__*/jsx(Typography, {
185
- children: strings.resetCamera
186
+ children: strings.RESET_CAMERA
186
187
  }), /*#__PURE__*/jsx(Typography, {
187
188
  children: "R"
188
189
  })]
@@ -1,24 +1,5 @@
1
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
2
  export interface SplatControlsProps {
21
- strings: SplatControlsStrings;
22
3
  defaultCameraPosition?: [number, number, number];
23
4
  defaultCameraFocus?: [number, number, number];
24
5
  showAnnotations?: boolean;
@@ -48,6 +29,6 @@ export interface SplatControlsProps {
48
29
  showFreeFly?: boolean;
49
30
  onError?: (error: Error) => void;
50
31
  }
51
- declare const SplatControls: ({ strings, defaultCameraPosition, defaultCameraFocus, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, editable, isEdit, onToggleEdit, onSave, onCancel, onAddAnnotation, onDeleteAnnotation, onDeselectAnnotation, hasSelectedAnnotation, selectedAnnotation, selectedAnnotationIndex, onAnnotationUpdate, onTextFieldFocus, maxImagesPerAnnotation, onImagesChange, canSave, isFullScreen, onToggleFullScreen, isFreeFly, onToggleFreeFly, showFreeFly, onError, }: SplatControlsProps) => import("react/jsx-runtime").JSX.Element;
32
+ declare const SplatControls: ({ defaultCameraPosition, defaultCameraFocus, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, editable, isEdit, onToggleEdit, onSave, onCancel, onAddAnnotation, onDeleteAnnotation, onDeselectAnnotation, hasSelectedAnnotation, selectedAnnotation, selectedAnnotationIndex, onAnnotationUpdate, onTextFieldFocus, maxImagesPerAnnotation, onImagesChange, canSave, isFullScreen, onToggleFullScreen, isFreeFly, onToggleFreeFly, showFreeFly, onError, }: SplatControlsProps) => import("react/jsx-runtime").JSX.Element;
52
33
  export default SplatControls;
53
34
  //# sourceMappingURL=SplatControls.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SplatControls.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/SplatControls.tsx"],"names":[],"mappings":"AAYA,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,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAChE,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACzC,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,2dA8BpB,kBAAkB,4CAwKpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"SplatControls.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/SplatControls.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IACjC,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,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAChE,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACzC,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,kdA6BpB,kBAAkB,4CAuKpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -4,6 +4,7 @@ import { useTheme, Box, IconButton } from '@mui/material';
4
4
  import useBoolean from '../../hooks/useBoolean.js';
5
5
  import { useCameraPosition } from '../../hooks/useCameraPosition.js';
6
6
  import useXr from '../../hooks/useXr.js';
7
+ import { useStrings } from '../../strings/index.js';
7
8
  import { getRgbaFromHex } from '../../utils/color.js';
8
9
  import useDeviceInfo from '../../utils/useDeviceInfo.js';
9
10
  import Button from '../Button/Button.js';
@@ -14,7 +15,6 @@ import ControlsInfoPane from './ControlsInfoPane.js';
14
15
  import { jsxs, jsx } from 'react/jsx-runtime';
15
16
 
16
17
  const SplatControls = ({
17
- strings,
18
18
  defaultCameraPosition,
19
19
  defaultCameraFocus,
20
20
  showAnnotations,
@@ -45,6 +45,7 @@ const SplatControls = ({
45
45
  onError
46
46
  }) => {
47
47
  const theme = useTheme();
48
+ const strings = useStrings();
48
49
  const {
49
50
  isDesktop
50
51
  } = useDeviceInfo();
@@ -120,13 +121,13 @@ const SplatControls = ({
120
121
  pointerEvents: 'auto'
121
122
  },
122
123
  children: [!hasSelectedAnnotation && onAddAnnotation && /*#__PURE__*/jsx(Button, {
123
- label: strings.addAnnotation,
124
+ label: strings.ADD_ANNOTATION,
124
125
  onClick: onAddAnnotation
125
126
  }), hasSelectedAnnotation && onDeselectAnnotation && /*#__PURE__*/jsx(Button, {
126
- label: strings.deselectAnnotation,
127
+ label: strings.DESELECT_ANNOTATION,
127
128
  onClick: onDeselectAnnotation
128
129
  }), hasSelectedAnnotation && onDeleteAnnotation && /*#__PURE__*/jsx(Button, {
129
- label: strings.deleteAnnotation,
130
+ label: strings.DELETE_ANNOTATION,
130
131
  onClick: onDeleteAnnotation
131
132
  })]
132
133
  }), /*#__PURE__*/jsxs(Box, {
@@ -140,22 +141,22 @@ const SplatControls = ({
140
141
  pointerEvents: 'auto'
141
142
  },
142
143
  children: [isXrAvailable('AR') && !isEdit && /*#__PURE__*/jsx(Button, {
143
- label: strings.ar,
144
+ label: strings.AR,
144
145
  onClick: () => startXr('AR')
145
146
  }), isXrAvailable('VR') && !isEdit && /*#__PURE__*/jsx(Button, {
146
- label: strings.vr,
147
+ label: strings.VR,
147
148
  onClick: () => startXr('VR')
148
149
  }), isDesktop && editable && !isEdit && onToggleEdit && /*#__PURE__*/jsx(Button, {
149
- label: strings.edit,
150
+ label: strings.EDIT,
150
151
  onClick: handleEdit
151
152
  }), isDesktop && showFreeFly && !isEdit && onToggleFreeFly && /*#__PURE__*/jsx(Button, {
152
- label: isFreeFly ? strings.boundedFly : strings.freeFly,
153
+ label: isFreeFly ? strings.BOUNDED_FLY : strings.FREE_FLY,
153
154
  onClick: onToggleFreeFly
154
155
  }), isEdit && onCancel && /*#__PURE__*/jsx(Button, {
155
- label: strings.cancel,
156
+ label: strings.CANCEL,
156
157
  onClick: onCancel
157
158
  }), isEdit && onSave && /*#__PURE__*/jsx(Button, {
158
- label: strings.save,
159
+ label: strings.SAVE,
159
160
  onClick: onSave,
160
161
  disabled: !canSave
161
162
  })]
@@ -202,7 +203,6 @@ const SplatControls = ({
202
203
  }), /*#__PURE__*/jsx(ControlsInfoPane, {
203
204
  visible: isInfoVisible,
204
205
  paneRef: paneRef,
205
- strings: strings.controlsInfoPane,
206
206
  showAnnotations: showAnnotations,
207
207
  onToggleAnnotations: onToggleAnnotations,
208
208
  autoRotate: autoRotate,
@@ -211,13 +211,11 @@ const SplatControls = ({
211
211
  }), /*#__PURE__*/jsx(AnnotationEditPane, {
212
212
  visible: isEdit === true && hasSelectedAnnotation === true,
213
213
  annotation: selectedAnnotation ?? null,
214
- strings: strings.annotationEditPane,
215
214
  onUpdate: onAnnotationUpdate,
216
215
  onTextFieldFocus: onTextFieldFocus,
217
216
  maxImages: maxImagesPerAnnotation,
218
217
  onImagesChange: onImagesChange
219
218
  }, selectedAnnotationIndex), isEdit && /*#__PURE__*/jsx(CameraInfo, {
220
- strings: strings.cameraInfo,
221
219
  getCameraState: getCameraState
222
220
  })]
223
221
  });
@@ -1,5 +1,4 @@
1
1
  import { AnnotationProps } from './Annotation';
2
- import { SplatControlsStrings } from './SplatControls';
3
2
  import { SplatFormat } from './splatFormat';
4
3
  export interface VirtualWalkthroughViewerProps {
5
4
  splatSrc: string;
@@ -19,13 +18,12 @@ export interface VirtualWalkthroughViewerProps {
19
18
  scaleFactor?: number;
20
19
  annotations: AnnotationProps[];
21
20
  onSaveAnnotations: (annotations: AnnotationProps[]) => void | Promise<void>;
22
- strings: SplatControlsStrings;
23
21
  editable?: boolean;
24
22
  showFreeFly?: boolean;
25
23
  isFullScreen?: boolean;
26
24
  onToggleFullScreen?: () => void;
27
25
  maxImagesPerAnnotation?: number;
28
26
  }
29
- declare const VirtualWalkthroughViewer: ({ splatSrc, splatFormat, origin, cameraPosition, sceneBounds, groundPlane: groundPlaneProp, skyColor, groundColor, averageCameraHeight, scaleFactor, annotations, onSaveAnnotations, strings, editable, showFreeFly, isFullScreen, onToggleFullScreen, maxImagesPerAnnotation, }: VirtualWalkthroughViewerProps) => import("react/jsx-runtime").JSX.Element;
27
+ declare const VirtualWalkthroughViewer: ({ splatSrc, splatFormat, origin, cameraPosition, sceneBounds, groundPlane: groundPlaneProp, skyColor, groundColor, averageCameraHeight, scaleFactor, annotations, onSaveAnnotations, editable, showFreeFly, isFullScreen, onToggleFullScreen, maxImagesPerAnnotation, }: VirtualWalkthroughViewerProps) => import("react/jsx-runtime").JSX.Element;
30
28
  export default VirtualWalkthroughViewer;
31
29
  //# sourceMappingURL=VirtualWalkthroughViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualWalkthroughViewer.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/VirtualWalkthroughViewer.tsx"],"names":[],"mappings":"AAYA,OAAmB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAM3D,OAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAStE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAa5C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,iBAAiB,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,QAAA,MAAM,wBAAwB,GAAI,kRAmB/B,6BAA6B,4CAuX/B,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"VirtualWalkthroughViewer.d.ts","sourceRoot":"","sources":["../../../src/components/VirtualWalkthrough/VirtualWalkthroughViewer.tsx"],"names":[],"mappings":"AAYA,OAAmB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAe3D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAa5C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,iBAAiB,EAAE,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,QAAA,MAAM,wBAAwB,GAAI,yQAkB/B,6BAA6B,4CAsX/B,CAAC;AAEF,eAAe,wBAAwB,CAAC"}
@@ -48,7 +48,6 @@ const VirtualWalkthroughViewer = ({
48
48
  scaleFactor = 1,
49
49
  annotations,
50
50
  onSaveAnnotations,
51
- strings,
52
51
  editable = false,
53
52
  showFreeFly = false,
54
53
  isFullScreen = false,
@@ -342,8 +341,7 @@ const VirtualWalkthroughViewer = ({
342
341
  onToggleFullScreen: onToggleFullScreen,
343
342
  isFreeFly: isFreeFly,
344
343
  onToggleFreeFly: handleToggleFreeFly,
345
- showFreeFly: showFreeFly,
346
- strings: strings
344
+ showFreeFly: showFreeFly
347
345
  }), /*#__PURE__*/jsx(AnnotationPanel, {
348
346
  annotation: viewingAnnotation,
349
347
  hotspotPosition: viewedScreenPos,
package/index.d.ts CHANGED
@@ -52,6 +52,8 @@ import Table from './components/table';
52
52
  import CellRenderer, { CellDateRenderer, TableRowType } from './components/table/TableCellRenderer';
53
53
  import { SortOrder, descendingComparator, getComparator, stableSort } from './components/table/sort';
54
54
  import { EnhancedTableDetailsRow, RendererProps, TableColumnType } from './components/table/types';
55
+ import { getLocale, getStrings, setLocale, useStrings } from './strings';
56
+ import { findLocaleDetails, getSupportedLocales, supportedLocales } from './strings/locales';
55
57
  import theme from './theme';
56
58
  export type { PillListItem } from './components/PillList';
57
59
  export type { IconName } from './components/Icon/icons/';
@@ -69,5 +71,7 @@ export type { Tab, TabsProps } from './components/Tabs';
69
71
  export type { ConfirmProps } from './components/Confirm';
70
72
  export type { DatePickerDateType, Props as DatePickerProps } from './components/DatePicker/DatePicker';
71
73
  export type { DateType } from './utils/date';
72
- export { AntSwitch, Autocomplete, Badge, BusySpinner, Button, CellRenderer, CellDateRenderer, Checkbox, Confirm, DatePicker, descendingComparator, DialogBox, Divisor, Dropdown, DropdownV1, EditableTable, ErrorBox, FileChooser, FormBottomBar, getComparator, icons, Icon, IconTooltip, MapComponent, Message, MultiSelect, NavFooter, NavItem, NavSection, Navbar, Note, OverlayModal, PageForm, Pill, PillList, PhotoChooser, PhotosCarousel, PlacementWrapper, Popover, PopoverMenu, PopoverMultiSelect, ProgressCircle, RadioButton, Select, SelectT, Separator, Slider, stableSort, SummaryBox, Svg, Table, Tabs, Textfield, TextTruncated, TimelineSlider, theme, Tooltip, ViewPhotosDialog, };
74
+ export type { ComponentStrings } from './strings';
75
+ export type { LocaleDetails } from './strings/locales';
76
+ export { AntSwitch, Autocomplete, Badge, BusySpinner, Button, CellRenderer, CellDateRenderer, Checkbox, Confirm, DatePicker, descendingComparator, DialogBox, Divisor, Dropdown, DropdownV1, EditableTable, ErrorBox, FileChooser, findLocaleDetails, FormBottomBar, getComparator, getLocale, getStrings, getSupportedLocales, icons, Icon, IconTooltip, MapComponent, Message, MultiSelect, NavFooter, NavItem, NavSection, Navbar, Note, OverlayModal, PageForm, Pill, PillList, PhotoChooser, PhotosCarousel, PlacementWrapper, Popover, PopoverMenu, PopoverMultiSelect, ProgressCircle, RadioButton, Select, SelectT, Separator, setLocale, Slider, stableSort, SummaryBox, supportedLocales, Svg, Table, Tabs, Textfield, TextTruncated, TimelineSlider, theme, Tooltip, useStrings, ViewPhotosDialog, };
73
77
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}