@terraware/web-components 4.3.3-rc.2 → 4.3.3

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 +21 -1
  2. package/components/VirtualWalkthrough/AnnotationEditPane.d.ts.map +1 -1
  3. package/components/VirtualWalkthrough/AnnotationEditPane.js +17 -18
  4. package/components/VirtualWalkthrough/CameraInfo.d.ts +7 -1
  5. package/components/VirtualWalkthrough/CameraInfo.d.ts.map +1 -1
  6. package/components/VirtualWalkthrough/CameraInfo.js +4 -5
  7. package/components/VirtualWalkthrough/ControlsInfoPane.d.ts +25 -1
  8. package/components/VirtualWalkthrough/ControlsInfoPane.d.ts.map +1 -1
  9. package/components/VirtualWalkthrough/ControlsInfoPane.js +22 -23
  10. package/components/VirtualWalkthrough/SplatControls.d.ts +20 -1
  11. package/components/VirtualWalkthrough/SplatControls.d.ts.map +1 -1
  12. package/components/VirtualWalkthrough/SplatControls.js +13 -11
  13. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.d.ts +3 -1
  14. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.d.ts.map +1 -1
  15. package/components/VirtualWalkthrough/VirtualWalkthroughViewer.js +3 -1
  16. package/index.d.ts +1 -5
  17. package/index.d.ts.map +1 -1
  18. package/index.js +0 -2
  19. package/license-report.html +1 -1
  20. package/package.json +1 -2
  21. package/virtualWalkthrough.d.ts +4 -2
  22. package/virtualWalkthrough.d.ts.map +1 -1
  23. package/strings/csv/en.csv +0 -50
  24. package/strings/csv/es.csv +0 -50
  25. package/strings/csv/fr.csv +0 -50
  26. package/strings/csv/instructions-es.txt +0 -14
  27. package/strings/csv/instructions-fr.txt +0 -14
  28. package/strings/csv/instructions.txt +0 -13
  29. package/strings/export.d.ts +0 -36
  30. package/strings/export.d.ts.map +0 -1
  31. package/strings/export.js +0 -116
  32. package/strings/index.d.ts +0 -22
  33. package/strings/index.d.ts.map +0 -1
  34. package/strings/index.js +0 -62
  35. package/strings/locales.d.ts +0 -38
  36. package/strings/locales.d.ts.map +0 -1
  37. package/strings/locales.js +0 -38
  38. package/strings/strings-en.d.ts +0 -52
  39. package/strings/strings-en.d.ts.map +0 -1
  40. package/strings/strings-en.js +0 -54
  41. package/strings/strings-es.d.ts +0 -52
  42. package/strings/strings-es.d.ts.map +0 -1
  43. package/strings/strings-es.js +0 -54
  44. package/strings/strings-fr.d.ts +0 -52
  45. package/strings/strings-fr.d.ts.map +0 -1
  46. package/strings/strings-fr.js +0 -54
  47. package/strings/strings-gx.d.ts +0 -52
  48. package/strings/strings-gx.d.ts.map +0 -1
  49. package/strings/strings-gx.js +0 -54
@@ -1,13 +1,33 @@
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
+ }
2
21
  interface AnnotationEditPaneProps {
3
22
  visible: boolean;
4
23
  annotation: AnnotationProps | null;
24
+ strings: AnnotationEditPaneStrings;
5
25
  onUpdate: (updates: Partial<AnnotationProps>) => void;
6
26
  onTextFieldFocus?: (isFocused: boolean) => void;
7
27
  maxImages?: number;
8
28
  /** Fires with the current selection on every add/remove, including an initial empty emission on mount. */
9
29
  onImagesChange?: (files: File[]) => void;
10
30
  }
11
- declare const AnnotationEditPane: ({ visible, annotation, onUpdate, onTextFieldFocus, maxImages, onImagesChange, }: AnnotationEditPaneProps) => import("react/jsx-runtime").JSX.Element | null;
31
+ declare const AnnotationEditPane: ({ visible, annotation, strings, onUpdate, onTextFieldFocus, maxImages, onImagesChange, }: AnnotationEditPaneProps) => import("react/jsx-runtime").JSX.Element | null;
12
32
  export default AnnotationEditPane;
13
33
  //# sourceMappingURL=AnnotationEditPane.d.ts.map
@@ -1 +1 @@
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
+ {"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,6 +1,5 @@
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';
4
3
  import PhotoChooser from '../PhotoChooser/index.js';
5
4
  import TextField from '../Textfield/Textfield.js';
6
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -8,13 +7,13 @@ import { jsx, jsxs } from 'react/jsx-runtime';
8
7
  const AnnotationEditPane = ({
9
8
  visible,
10
9
  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();
18
17
  const showImageUpload = !!onImagesChange && !!maxImages && maxImages > 0;
19
18
  const remainingImageSlots = Math.max(0, (maxImages ?? 0) - (annotation?.imageUrls?.length ?? 0));
20
19
 
@@ -107,14 +106,14 @@ const AnnotationEditPane = ({
107
106
  sx: {
108
107
  fontWeight: 600
109
108
  },
110
- children: strings.EDIT_ANNOTATION
109
+ children: strings.editAnnotation
111
110
  }), /*#__PURE__*/jsx(Tooltip, {
112
- title: strings.ANNOTATION_TITLE_TOOLTIP,
111
+ title: strings.titleTooltip,
113
112
  placement: "top",
114
113
  disableFocusListener: true,
115
114
  children: /*#__PURE__*/jsx(TextField, {
116
115
  id: "annotation-title",
117
- label: strings.TITLE,
116
+ label: strings.title,
118
117
  type: "text",
119
118
  value: annotation.title,
120
119
  onChange: handleTitleChange,
@@ -124,12 +123,12 @@ const AnnotationEditPane = ({
124
123
  required: true
125
124
  })
126
125
  }), /*#__PURE__*/jsx(Tooltip, {
127
- title: strings.ANNOTATION_DESCRIPTION_TOOLTIP,
126
+ title: strings.descriptionTooltip,
128
127
  placement: "top",
129
128
  disableFocusListener: true,
130
129
  children: /*#__PURE__*/jsx(TextField, {
131
130
  id: "annotation-body",
132
- label: strings.DESCRIPTION,
131
+ label: strings.description,
133
132
  type: "text",
134
133
  value: annotation.bodyText ?? '',
135
134
  onChange: handleBodyTextChange,
@@ -138,12 +137,12 @@ const AnnotationEditPane = ({
138
137
  sx: textFieldSx
139
138
  })
140
139
  }), /*#__PURE__*/jsx(Tooltip, {
141
- title: strings.ANNOTATION_LABEL_TOOLTIP,
140
+ title: strings.labelTooltip,
142
141
  placement: "top",
143
142
  disableFocusListener: true,
144
143
  children: /*#__PURE__*/jsx(TextField, {
145
144
  id: "annotation-label",
146
- label: strings.LABEL,
145
+ label: strings.label,
147
146
  type: "text",
148
147
  value: annotation.label ?? '',
149
148
  onChange: handleLabelChange,
@@ -152,7 +151,7 @@ const AnnotationEditPane = ({
152
151
  sx: textFieldSx
153
152
  })
154
153
  }), showImageUpload && /*#__PURE__*/jsxs(Box, {
155
- children: [/*#__PURE__*/jsx(Typography, {
154
+ children: [strings.images?.uploadTitle && /*#__PURE__*/jsx(Typography, {
156
155
  sx: {
157
156
  fontFamily: 'Inter',
158
157
  fontSize: '14px',
@@ -161,22 +160,22 @@ const AnnotationEditPane = ({
161
160
  color: theme.palette.grey[400],
162
161
  marginBottom: 0.5
163
162
  },
164
- children: strings.IMAGES
163
+ children: strings.images.uploadTitle
165
164
  }), /*#__PURE__*/jsx(ThemeProvider, {
166
165
  theme: photoChooserTheme,
167
166
  children: /*#__PURE__*/jsx(PhotoChooser, {
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,
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,
173
172
  multipleSelection: (maxImages ?? 0) > 1,
174
173
  maxPhotos: remainingImageSlots,
175
174
  onPhotosChanged: files => onImagesChange?.(files),
176
175
  existingPhotos: annotation.imageUrls,
177
176
  onExistingPhotoRemoved: handleRemoveExistingImage,
178
- existingImagesLabel: strings.EXISTING,
179
- newImagesLabel: strings.NEW
177
+ existingImagesLabel: strings.images?.existingImagesLabel,
178
+ newImagesLabel: strings.images?.newImagesLabel
180
179
  })
181
180
  })]
182
181
  })]
@@ -1,10 +1,16 @@
1
+ export interface CameraInfoStrings {
2
+ cameraInfo: string;
3
+ cameraPosition: string;
4
+ cameraFocusPoint: string;
5
+ }
1
6
  export interface CameraState {
2
7
  position: [number, number, number];
3
8
  focus: [number, number, number];
4
9
  }
5
10
  interface CameraInfoProps {
11
+ strings: CameraInfoStrings;
6
12
  getCameraState: () => CameraState | null;
7
13
  }
8
- declare const CameraInfo: ({ getCameraState }: CameraInfoProps) => import("react/jsx-runtime").JSX.Element | null;
14
+ declare const CameraInfo: ({ strings, getCameraState }: CameraInfoProps) => import("react/jsx-runtime").JSX.Element | null;
9
15
  export default CameraInfo;
10
16
  //# sourceMappingURL=CameraInfo.d.ts.map
@@ -1 +1 @@
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
+ {"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,6 +1,5 @@
1
1
  import { useState, useEffect } from 'react';
2
2
  import { useTheme, Box, Typography } from '@mui/material';
3
- import { useStrings } from '../../strings/index.js';
4
3
  import { getRgbaFromHex } from '../../utils/color.js';
5
4
  import { jsxs, jsx } from 'react/jsx-runtime';
6
5
 
@@ -30,10 +29,10 @@ const CoordinateDisplay = ({
30
29
  }, COORDINATE_LABELS[index]))]
31
30
  });
32
31
  const CameraInfo = ({
32
+ strings,
33
33
  getCameraState
34
34
  }) => {
35
35
  const theme = useTheme();
36
- const strings = useStrings();
37
36
  const [cameraState, setCameraState] = useState(null);
38
37
  useEffect(() => {
39
38
  const updateCameraState = () => {
@@ -68,7 +67,7 @@ const CameraInfo = ({
68
67
  fontWeight: 'bold',
69
68
  marginBottom: 1
70
69
  },
71
- children: strings.CAMERA_INFO
70
+ children: strings.cameraInfo
72
71
  }), /*#__PURE__*/jsxs(Box, {
73
72
  sx: {
74
73
  display: 'flex',
@@ -76,11 +75,11 @@ const CameraInfo = ({
76
75
  gap: 1
77
76
  },
78
77
  children: [/*#__PURE__*/jsx(CoordinateDisplay, {
79
- label: strings.CAMERA_POSITION,
78
+ label: strings.cameraPosition,
80
79
  coordinates: cameraState.position,
81
80
  textColor: textColor
82
81
  }), /*#__PURE__*/jsx(CoordinateDisplay, {
83
- label: strings.CAMERA_FOCUS_POINT,
82
+ label: strings.cameraFocusPoint,
84
83
  coordinates: cameraState.focus,
85
84
  textColor: textColor
86
85
  })]
@@ -1,13 +1,37 @@
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
+ }
2
25
  interface ControlsInfoPaneProps {
3
26
  visible: boolean;
4
27
  paneRef: React.RefObject<HTMLDivElement | null>;
28
+ strings: ControlsInfoPaneStrings;
5
29
  showAnnotations?: boolean;
6
30
  onToggleAnnotations?: (show: boolean) => void;
7
31
  autoRotate?: boolean;
8
32
  onToggleAutoRotate?: (enabled: boolean) => void;
9
33
  isFullScreen?: boolean;
10
34
  }
11
- declare const ControlsInfoPane: ({ visible, paneRef, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, isFullScreen, }: ControlsInfoPaneProps) => import("react/jsx-runtime").JSX.Element;
35
+ declare const ControlsInfoPane: ({ visible, paneRef, strings, showAnnotations, onToggleAnnotations, autoRotate, onToggleAutoRotate, isFullScreen, }: ControlsInfoPaneProps) => import("react/jsx-runtime").JSX.Element;
12
36
  export default ControlsInfoPane;
13
37
  //# 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;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
+ {"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,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';
4
3
  import { jsx, jsxs } from 'react/jsx-runtime';
5
4
 
6
5
  const ControlsInfoPane = ({
7
6
  visible,
8
7
  paneRef,
8
+ strings,
9
9
  showAnnotations,
10
10
  onToggleAnnotations,
11
11
  autoRotate,
@@ -13,7 +13,6 @@ const ControlsInfoPane = ({
13
13
  isFullScreen = false
14
14
  }) => {
15
15
  const theme = useTheme();
16
- const strings = useStrings();
17
16
  const handleAnnotationsChange = useCallback(e => {
18
17
  onToggleAnnotations?.(e.target.checked);
19
18
  }, [onToggleAnnotations]);
@@ -70,11 +69,11 @@ const ControlsInfoPane = ({
70
69
  sx: {
71
70
  fontWeight: 600
72
71
  },
73
- children: strings.CONTROLS
72
+ children: strings.controls
74
73
  }), /*#__PURE__*/jsxs(Box, {
75
74
  sx: controlRowSx,
76
75
  children: [/*#__PURE__*/jsx(Typography, {
77
- children: strings.ANNOTATIONS
76
+ children: strings.annotations
78
77
  }), /*#__PURE__*/jsx(Checkbox, {
79
78
  checked: showAnnotations ?? true,
80
79
  onChange: handleAnnotationsChange,
@@ -87,7 +86,7 @@ const ControlsInfoPane = ({
87
86
  }), /*#__PURE__*/jsxs(Box, {
88
87
  sx: controlRowSx,
89
88
  children: [/*#__PURE__*/jsx(Typography, {
90
- children: strings.AUTO_ROTATE
89
+ children: strings.autoRotate
91
90
  }), /*#__PURE__*/jsx(Checkbox, {
92
91
  checked: autoRotate ?? true,
93
92
  onChange: handleAutoRotateChange,
@@ -100,13 +99,13 @@ const ControlsInfoPane = ({
100
99
  }), /*#__PURE__*/jsxs(Box, {
101
100
  sx: controlRowSx,
102
101
  children: [/*#__PURE__*/jsx(Typography, {
103
- children: strings.ORBIT
102
+ children: strings.orbit
104
103
  }), /*#__PURE__*/jsxs(Box, {
105
104
  sx: rightAlignedTextSx,
106
105
  children: [/*#__PURE__*/jsx(Typography, {
107
- children: strings.LEFT_MOUSE
106
+ children: strings.leftMouse
108
107
  }), /*#__PURE__*/jsx(Typography, {
109
- children: strings.TOUCH_DRAG
108
+ children: strings.touchDrag
110
109
  })]
111
110
  })]
112
111
  }), /*#__PURE__*/jsx(Divider, {
@@ -114,13 +113,13 @@ const ControlsInfoPane = ({
114
113
  }), /*#__PURE__*/jsxs(Box, {
115
114
  sx: controlRowSx,
116
115
  children: [/*#__PURE__*/jsx(Typography, {
117
- children: strings.PAN
116
+ children: strings.pan
118
117
  }), /*#__PURE__*/jsxs(Box, {
119
118
  sx: rightAlignedTextSx,
120
119
  children: [/*#__PURE__*/jsx(Typography, {
121
- children: strings.MIDDLE_MOUSE
120
+ children: strings.middleMouse
122
121
  }), /*#__PURE__*/jsx(Typography, {
123
- children: strings.SWIPE
122
+ children: strings.swipe
124
123
  })]
125
124
  })]
126
125
  }), /*#__PURE__*/jsx(Divider, {
@@ -128,22 +127,22 @@ const ControlsInfoPane = ({
128
127
  }), /*#__PURE__*/jsxs(Box, {
129
128
  sx: controlRowSx,
130
129
  children: [/*#__PURE__*/jsx(Typography, {
131
- children: strings.LOOK
130
+ children: strings.look
132
131
  }), /*#__PURE__*/jsx(Typography, {
133
- children: strings.RIGHT_MOUSE
132
+ children: strings.rightMouse
134
133
  })]
135
134
  }), /*#__PURE__*/jsx(Divider, {
136
135
  sx: dividerSx
137
136
  }), /*#__PURE__*/jsxs(Box, {
138
137
  sx: controlRowSx,
139
138
  children: [/*#__PURE__*/jsx(Typography, {
140
- children: strings.ZOOM
139
+ children: strings.zoom
141
140
  }), /*#__PURE__*/jsxs(Box, {
142
141
  sx: rightAlignedTextSx,
143
142
  children: [/*#__PURE__*/jsx(Typography, {
144
- children: strings.MOUSE_WHEEL
143
+ children: strings.mouseWheel
145
144
  }), /*#__PURE__*/jsx(Typography, {
146
- children: strings.PINCH
145
+ children: strings.pinch
147
146
  })]
148
147
  })]
149
148
  }), /*#__PURE__*/jsx(Divider, {
@@ -151,13 +150,13 @@ const ControlsInfoPane = ({
151
150
  }), /*#__PURE__*/jsxs(Box, {
152
151
  sx: controlRowSx,
153
152
  children: [/*#__PURE__*/jsx(Typography, {
154
- children: strings.FLY
153
+ children: strings.fly
155
154
  }), /*#__PURE__*/jsxs(Box, {
156
155
  sx: rightAlignedTextSx,
157
156
  children: [/*#__PURE__*/jsx(Typography, {
158
157
  children: "WASD"
159
158
  }), /*#__PURE__*/jsx(Typography, {
160
- children: strings.ARROW_KEYS
159
+ children: strings.arrowKeys
161
160
  })]
162
161
  })]
163
162
  }), /*#__PURE__*/jsx(Divider, {
@@ -165,25 +164,25 @@ const ControlsInfoPane = ({
165
164
  }), /*#__PURE__*/jsxs(Box, {
166
165
  sx: controlRowSx,
167
166
  children: [/*#__PURE__*/jsx(Typography, {
168
- children: strings.FLY_FASTER
167
+ children: strings.flyFaster
169
168
  }), /*#__PURE__*/jsx(Typography, {
170
- children: strings.SHIFT
169
+ children: strings.shift
171
170
  })]
172
171
  }), /*#__PURE__*/jsx(Divider, {
173
172
  sx: dividerSx
174
173
  }), /*#__PURE__*/jsxs(Box, {
175
174
  sx: controlRowSx,
176
175
  children: [/*#__PURE__*/jsx(Typography, {
177
- children: strings.FLY_SLOWER
176
+ children: strings.flySlower
178
177
  }), /*#__PURE__*/jsx(Typography, {
179
- children: strings.CTRL
178
+ children: strings.ctrl
180
179
  })]
181
180
  }), /*#__PURE__*/jsx(Divider, {
182
181
  sx: dividerSx
183
182
  }), /*#__PURE__*/jsxs(Box, {
184
183
  sx: controlRowSx,
185
184
  children: [/*#__PURE__*/jsx(Typography, {
186
- children: strings.RESET_CAMERA
185
+ children: strings.resetCamera
187
186
  }), /*#__PURE__*/jsx(Typography, {
188
187
  children: "R"
189
188
  })]
@@ -1,5 +1,24 @@
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
+ }
2
20
  export interface SplatControlsProps {
21
+ strings: SplatControlsStrings;
3
22
  defaultCameraPosition?: [number, number, number];
4
23
  defaultCameraFocus?: [number, number, number];
5
24
  showAnnotations?: boolean;
@@ -29,6 +48,6 @@ export interface SplatControlsProps {
29
48
  showFreeFly?: boolean;
30
49
  onError?: (error: Error) => void;
31
50
  }
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;
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;
33
52
  export default SplatControls;
34
53
  //# sourceMappingURL=SplatControls.d.ts.map
@@ -1 +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;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"}
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"}
@@ -4,7 +4,6 @@ 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';
8
7
  import { getRgbaFromHex } from '../../utils/color.js';
9
8
  import useDeviceInfo from '../../utils/useDeviceInfo.js';
10
9
  import Button from '../Button/Button.js';
@@ -15,6 +14,7 @@ import ControlsInfoPane from './ControlsInfoPane.js';
15
14
  import { jsxs, jsx } from 'react/jsx-runtime';
16
15
 
17
16
  const SplatControls = ({
17
+ strings,
18
18
  defaultCameraPosition,
19
19
  defaultCameraFocus,
20
20
  showAnnotations,
@@ -45,7 +45,6 @@ const SplatControls = ({
45
45
  onError
46
46
  }) => {
47
47
  const theme = useTheme();
48
- const strings = useStrings();
49
48
  const {
50
49
  isDesktop
51
50
  } = useDeviceInfo();
@@ -121,13 +120,13 @@ const SplatControls = ({
121
120
  pointerEvents: 'auto'
122
121
  },
123
122
  children: [!hasSelectedAnnotation && onAddAnnotation && /*#__PURE__*/jsx(Button, {
124
- label: strings.ADD_ANNOTATION,
123
+ label: strings.addAnnotation,
125
124
  onClick: onAddAnnotation
126
125
  }), hasSelectedAnnotation && onDeselectAnnotation && /*#__PURE__*/jsx(Button, {
127
- label: strings.DESELECT_ANNOTATION,
126
+ label: strings.deselectAnnotation,
128
127
  onClick: onDeselectAnnotation
129
128
  }), hasSelectedAnnotation && onDeleteAnnotation && /*#__PURE__*/jsx(Button, {
130
- label: strings.DELETE_ANNOTATION,
129
+ label: strings.deleteAnnotation,
131
130
  onClick: onDeleteAnnotation
132
131
  })]
133
132
  }), /*#__PURE__*/jsxs(Box, {
@@ -141,22 +140,22 @@ const SplatControls = ({
141
140
  pointerEvents: 'auto'
142
141
  },
143
142
  children: [isXrAvailable('AR') && !isEdit && /*#__PURE__*/jsx(Button, {
144
- label: strings.AR,
143
+ label: strings.ar,
145
144
  onClick: () => startXr('AR')
146
145
  }), isXrAvailable('VR') && !isEdit && /*#__PURE__*/jsx(Button, {
147
- label: strings.VR,
146
+ label: strings.vr,
148
147
  onClick: () => startXr('VR')
149
148
  }), isDesktop && editable && !isEdit && onToggleEdit && /*#__PURE__*/jsx(Button, {
150
- label: strings.EDIT,
149
+ label: strings.edit,
151
150
  onClick: handleEdit
152
151
  }), isDesktop && showFreeFly && !isEdit && onToggleFreeFly && /*#__PURE__*/jsx(Button, {
153
- label: isFreeFly ? strings.BOUNDED_FLY : strings.FREE_FLY,
152
+ label: isFreeFly ? strings.boundedFly : strings.freeFly,
154
153
  onClick: onToggleFreeFly
155
154
  }), isEdit && onCancel && /*#__PURE__*/jsx(Button, {
156
- label: strings.CANCEL,
155
+ label: strings.cancel,
157
156
  onClick: onCancel
158
157
  }), isEdit && onSave && /*#__PURE__*/jsx(Button, {
159
- label: strings.SAVE,
158
+ label: strings.save,
160
159
  onClick: onSave,
161
160
  disabled: !canSave
162
161
  })]
@@ -203,6 +202,7 @@ const SplatControls = ({
203
202
  }), /*#__PURE__*/jsx(ControlsInfoPane, {
204
203
  visible: isInfoVisible,
205
204
  paneRef: paneRef,
205
+ strings: strings.controlsInfoPane,
206
206
  showAnnotations: showAnnotations,
207
207
  onToggleAnnotations: onToggleAnnotations,
208
208
  autoRotate: autoRotate,
@@ -211,11 +211,13 @@ const SplatControls = ({
211
211
  }), /*#__PURE__*/jsx(AnnotationEditPane, {
212
212
  visible: isEdit === true && hasSelectedAnnotation === true,
213
213
  annotation: selectedAnnotation ?? null,
214
+ strings: strings.annotationEditPane,
214
215
  onUpdate: onAnnotationUpdate,
215
216
  onTextFieldFocus: onTextFieldFocus,
216
217
  maxImages: maxImagesPerAnnotation,
217
218
  onImagesChange: onImagesChange
218
219
  }, selectedAnnotationIndex), isEdit && /*#__PURE__*/jsx(CameraInfo, {
220
+ strings: strings.cameraInfo,
219
221
  getCameraState: getCameraState
220
222
  })]
221
223
  });
@@ -1,4 +1,5 @@
1
1
  import { AnnotationProps } from './Annotation';
2
+ import { SplatControlsStrings } from './SplatControls';
2
3
  import { SplatFormat } from './splatFormat';
3
4
  export interface VirtualWalkthroughViewerProps {
4
5
  splatSrc: string;
@@ -18,12 +19,13 @@ export interface VirtualWalkthroughViewerProps {
18
19
  scaleFactor?: number;
19
20
  annotations: AnnotationProps[];
20
21
  onSaveAnnotations: (annotations: AnnotationProps[]) => void | Promise<void>;
22
+ strings: SplatControlsStrings;
21
23
  editable?: boolean;
22
24
  showFreeFly?: boolean;
23
25
  isFullScreen?: boolean;
24
26
  onToggleFullScreen?: () => void;
25
27
  maxImagesPerAnnotation?: number;
26
28
  }
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;
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;
28
30
  export default VirtualWalkthroughViewer;
29
31
  //# 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;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"}
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"}
@@ -48,6 +48,7 @@ const VirtualWalkthroughViewer = ({
48
48
  scaleFactor = 1,
49
49
  annotations,
50
50
  onSaveAnnotations,
51
+ strings,
51
52
  editable = false,
52
53
  showFreeFly = false,
53
54
  isFullScreen = false,
@@ -341,7 +342,8 @@ const VirtualWalkthroughViewer = ({
341
342
  onToggleFullScreen: onToggleFullScreen,
342
343
  isFreeFly: isFreeFly,
343
344
  onToggleFreeFly: handleToggleFreeFly,
344
- showFreeFly: showFreeFly
345
+ showFreeFly: showFreeFly,
346
+ strings: strings
345
347
  }), /*#__PURE__*/jsx(AnnotationPanel, {
346
348
  annotation: viewingAnnotation,
347
349
  hotspotPosition: viewedScreenPos,
package/index.d.ts CHANGED
@@ -52,8 +52,6 @@ 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';
57
55
  import theme from './theme';
58
56
  export type { PillListItem } from './components/PillList';
59
57
  export type { IconName } from './components/Icon/icons/';
@@ -71,7 +69,5 @@ export type { Tab, TabsProps } from './components/Tabs';
71
69
  export type { ConfirmProps } from './components/Confirm';
72
70
  export type { DatePickerDateType, Props as DatePickerProps } from './components/DatePicker/DatePicker';
73
71
  export type { DateType } from './utils/date';
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, };
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, };
77
73
  //# 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":"AAGA,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAClE,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,UAAU,MAAM,oCAAoC,CAAC;AAC5D,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,QAAQ,MAAM,gCAAgC,CAAC;AACtD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAC5C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,OAAO,MAAM,8BAA8B,CAAC;AACnD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,SAAS,MAAM,+BAA+B,CAAC;AACtD,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAClE,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,cAAc,MAAM,6BAA6B,CAAC;AACzD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,kBAAkB,MAAM,iCAAiC,CAAC;AACjE,OAAO,cAAc,MAAM,4CAA4C,CAAC;AACxE,OAAO,WAAW,MAAM,0BAA0B,CAAC;AACnD,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,SAAS,MAAM,kCAAkC,CAAC;AACzD,OAAO,cAAc,MAAM,6BAA6B,CAAC;AACzD,OAAO,OAAO,MAAM,8BAA8B,CAAC;AACnD,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,YAAY,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,YAAY,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACjG,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,KAAK,IAAI,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACvG,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,SAAS,EACT,YAAY,EACZ,KAAK,EACL,WAAW,EACX,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,oBAAoB,EACpB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,KAAK,EACL,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,OAAO,EACP,WAAW,EACX,SAAS,EACT,OAAO,EACP,UAAU,EACV,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,GAAG,EACH,KAAK,EACL,IAAI,EACJ,SAAS,EACT,aAAa,EACb,cAAc,EACd,KAAK,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}