@vizbl/react-room-viewer 0.0.14
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.
- package/dist/components/Footer.d.ts +1 -0
- package/dist/components/FrameWidthTabsField.d.ts +2 -0
- package/dist/components/Header.d.ts +1 -0
- package/dist/components/LogoSign.d.ts +1 -0
- package/dist/components/MaterialSelectField.d.ts +2 -0
- package/dist/components/MaterialSwiper.d.ts +1 -0
- package/dist/components/MattingField.d.ts +2 -0
- package/dist/components/RoomSwiper.d.ts +1 -0
- package/dist/components/SceneControlls.d.ts +0 -0
- package/dist/components/Swiper.d.ts +5 -0
- package/dist/components/scene/components/AR.d.ts +2 -0
- package/dist/components/scene/components/CanvasCaptureBridge.d.ts +8 -0
- package/dist/components/scene/components/CanvasWrapper.d.ts +7 -0
- package/dist/components/scene/components/Carpet.d.ts +9 -0
- package/dist/components/scene/components/Frame.d.ts +6 -0
- package/dist/components/scene/components/FramePart.d.ts +8 -0
- package/dist/components/scene/components/Matting.d.ts +8 -0
- package/dist/components/scene/components/Plane.d.ts +7 -0
- package/dist/components/scene/components/Poster.d.ts +7 -0
- package/dist/components/scene/components/Room.d.ts +1 -0
- package/dist/components/scene/components/RoomBackground.d.ts +1 -0
- package/dist/components/scene/hooks/useCarpetCanvases.d.ts +7 -0
- package/dist/components/scene/hooks/useCarpetInference.d.ts +9 -0
- package/dist/components/scene/hooks/useSceneHelpers.d.ts +4 -0
- package/dist/components/scene/hooks/useWallPose.d.ts +7 -0
- package/dist/components/scene/index.d.ts +1 -0
- package/dist/components/scene/lib/canvas.d.ts +1 -0
- package/dist/components/scene/lib/carpet-inference-export.d.ts +8 -0
- package/dist/components/scene/lib/carpet-inference.d.ts +12 -0
- package/dist/components/scene/lib/carpet-lighting.d.ts +9 -0
- package/dist/components/scene/lib/carpet-mask.d.ts +8 -0
- package/dist/components/scene/lib/carpet-pose.d.ts +3 -0
- package/dist/components/scene/lib/carpet-processing.d.ts +3 -0
- package/dist/components/scene/lib/carpet-rendering.d.ts +5 -0
- package/dist/components/scene/lib/room-image.d.ts +1 -0
- package/dist/config/index.d.ts +14 -0
- package/dist/container.d.ts +1 -0
- package/dist/context.d.ts +46 -0
- package/dist/dialog.d.ts +5 -0
- package/dist/hooks/useFrameWidthOptions.d.ts +5 -0
- package/dist/hooks/useMattingOptions.d.ts +5 -0
- package/dist/i18n.d.ts +90 -0
- package/dist/index.css +5085 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +4029 -0
- package/dist/locales/en/ns1.d.ts +42 -0
- package/dist/locales/ru/ns1.d.ts +42 -0
- package/dist/root.d.ts +12 -0
- package/dist/types/index.d.ts +45 -0
- package/dist/utils/core.d.ts +7 -0
- package/dist/utils/device.d.ts +3 -0
- package/dist/utils/id.d.ts +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/room-helpers.d.ts +5 -0
- package/dist/utils/scene-load.d.ts +10 -0
- package/dist/utils/segmentation.d.ts +8 -0
- package/package.json +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function Footer({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function Header({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function LogoSign({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function MaterialSwiper({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function RoomSwiper({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
File without changes
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Swiper as SwiperRoot } from 'swiper/react';
|
|
2
|
+
import 'swiper/css';
|
|
3
|
+
export declare function Swiper({ className, children, ...props }: React.ComponentProps<'div'> & {
|
|
4
|
+
swiperOptions?: React.ComponentProps<typeof SwiperRoot>;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface CanvasCaptureBridgeApi {
|
|
2
|
+
capture: () => Promise<Blob>;
|
|
3
|
+
}
|
|
4
|
+
interface CanvasCaptureBridgeProps {
|
|
5
|
+
ref?: React.RefObject<CanvasCaptureBridgeApi | null>;
|
|
6
|
+
}
|
|
7
|
+
export declare function CanvasCaptureBridge({ ref }: CanvasCaptureBridgeProps): null;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CanvasCaptureBridgeApi } from './CanvasCaptureBridge';
|
|
2
|
+
interface CanvasWrapperProps {
|
|
3
|
+
onSizeChange?: (width: number, height: number) => void;
|
|
4
|
+
captureRef?: React.RefObject<CanvasCaptureBridgeApi | null>;
|
|
5
|
+
}
|
|
6
|
+
export declare function CanvasWrapper({ className, ref, captureRef, onSizeChange, ...props }: CanvasWrapperProps & React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Quaternion, Vector3 } from '@react-three/fiber';
|
|
2
|
+
import type { SegmentationClassMap } from '../../../types';
|
|
3
|
+
export interface CarpetProps {
|
|
4
|
+
glbUrl: string;
|
|
5
|
+
position: Vector3;
|
|
6
|
+
quaternion: Quaternion;
|
|
7
|
+
segmentationClasses: SegmentationClassMap;
|
|
8
|
+
}
|
|
9
|
+
export declare function Carpet({ glbUrl, position, quaternion, segmentationClasses }: CarpetProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as THREE from 'three';
|
|
2
|
+
export interface FramePartProps {
|
|
3
|
+
node: THREE.Mesh;
|
|
4
|
+
position: [number, number, number];
|
|
5
|
+
scale?: [number, number, number];
|
|
6
|
+
uvScale?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function FramePart({ node, position, scale, uvScale }: FramePartProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Quaternion, Vector3 } from '@react-three/fiber';
|
|
2
|
+
export interface MattingProps {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
position?: Vector3;
|
|
6
|
+
quaternion?: Quaternion;
|
|
7
|
+
}
|
|
8
|
+
export declare function Matting({ width, height, position, quaternion }: MattingProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PlanePosition, PlaneUserData } from '../../../types';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export interface PlaneProps extends React.ComponentProps<'mesh'>, PlanePosition {
|
|
4
|
+
}
|
|
5
|
+
export declare function Plane({ ref, z, pitchDeg, rollDeg, userData, }: PlaneProps & {
|
|
6
|
+
userData?: PlaneUserData;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Quaternion, Vector3 } from '@react-three/fiber';
|
|
2
|
+
export interface PosterProps {
|
|
3
|
+
src: string;
|
|
4
|
+
position: Vector3;
|
|
5
|
+
quaternion: Quaternion;
|
|
6
|
+
}
|
|
7
|
+
export declare function Poster({ src, position, quaternion, }: PosterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function Room(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function RoomBackground(): null;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SegmentationClassMap } from '../../../types';
|
|
2
|
+
interface CarpetCanvasQueryData {
|
|
3
|
+
lightingCanvas: HTMLCanvasElement;
|
|
4
|
+
maskCanvas: HTMLCanvasElement;
|
|
5
|
+
}
|
|
6
|
+
export declare function useCarpetCanvases(segmentationClasses: SegmentationClassMap | null | undefined): import("@tanstack/react-query").UseQueryResult<CarpetCanvasQueryData, Error>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ResourcePose, SegmentationClassMap, SideConfig } from '../../../types';
|
|
2
|
+
interface CarpetInferenceQueryData {
|
|
3
|
+
initialPose: ResourcePose | null;
|
|
4
|
+
floor?: SideConfig;
|
|
5
|
+
maskUrl?: string;
|
|
6
|
+
segmentationClasses: SegmentationClassMap;
|
|
7
|
+
}
|
|
8
|
+
export declare function useCarpetInference(enabled: boolean): import("@tanstack/react-query").UseQueryResult<CarpetInferenceQueryData, Error>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PlanePosition } from '../../../types';
|
|
2
|
+
export interface UsePlaneOptions extends PlanePosition {
|
|
3
|
+
}
|
|
4
|
+
export declare function usePlanePose(options: UsePlaneOptions): {
|
|
5
|
+
position: import("three").Vector3Tuple;
|
|
6
|
+
quaternion: import("three").QuaternionTuple;
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function Scene({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function canvasToPngBlob(canvas: HTMLCanvasElement, errorMessage: string): Promise<Blob>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SegmentationClassMap } from '../../../types';
|
|
2
|
+
interface FloorPose {
|
|
3
|
+
z: number;
|
|
4
|
+
pitchDeg: number;
|
|
5
|
+
rollDeg: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function exportCarpetInferenceSnapshot(imageUrl: string, floor: FloorPose, segmentationClasses: SegmentationClassMap): Promise<void>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SegmentationClassMap } from '../../../types';
|
|
2
|
+
export interface FloorPose {
|
|
3
|
+
z: number;
|
|
4
|
+
pitchDeg: number;
|
|
5
|
+
rollDeg: number;
|
|
6
|
+
}
|
|
7
|
+
interface InferenceResult {
|
|
8
|
+
segmentationClasses: SegmentationClassMap;
|
|
9
|
+
floor: FloorPose;
|
|
10
|
+
}
|
|
11
|
+
export declare function inferCarpetFromRoomImage(imageUrl: string): Promise<InferenceResult>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SegmentationClassMap } from '../../../types';
|
|
2
|
+
interface LightingMapOptions {
|
|
3
|
+
scaleDiv?: number;
|
|
4
|
+
filterDiameter?: number;
|
|
5
|
+
sigmaColor?: number;
|
|
6
|
+
sigmaSpace?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function createLightingCanvas(imageUrl: string, segmentationClasses: SegmentationClassMap, options?: LightingMapOptions): Promise<HTMLCanvasElement>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SegmentationClassMap } from '../../../types';
|
|
2
|
+
export declare function loadImage(url: string): Promise<HTMLImageElement>;
|
|
3
|
+
export declare function buildSegmentationMaskCanvas(classes: Uint8Array, width: number, height: number): HTMLCanvasElement;
|
|
4
|
+
export declare function createRenderMaskCanvas(segmentationClasses: SegmentationClassMap, scaleFactor: number): HTMLCanvasElement;
|
|
5
|
+
export declare function loadCarpetSegmentationFromMask(maskUrl: string): Promise<{
|
|
6
|
+
segmentationClasses: SegmentationClassMap;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function createMaskUrl(segmentationClasses: SegmentationClassMap): Promise<string>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
export declare function collectCarpetMaterials(sourceScene: THREE.Object3D): THREE.Material[];
|
|
3
|
+
export declare function createCanvasTexture(canvas: HTMLCanvasElement, minFilter?: THREE.MinificationTextureFilter, magFilter?: THREE.MagnificationTextureFilter): THREE.CanvasTexture;
|
|
4
|
+
export declare function patchMaterialWithMask(material: THREE.Material, maskTexture: THREE.Texture, lightingTexture: THREE.Texture, resolution: THREE.Vector2, maskTextureSize: THREE.Vector2): () => void;
|
|
5
|
+
export declare function warmUpCarpetScene(renderer: THREE.WebGLRenderer, object: THREE.Object3D, camera: THREE.Camera, scene: THREE.Scene): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useRoomImageAspectRatio(src: string): number | null;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Room } from '../types';
|
|
2
|
+
export declare const HDR_URL = "https://vizbl.com/hdr/neutral.hdr";
|
|
3
|
+
export declare const CARPET_INFERENCE_EXPORT_ENABLED = false;
|
|
4
|
+
export declare const CARPET_INFERENCE_RAW_URL = "https://api.vizbl.com/inference/carpet/run-raw";
|
|
5
|
+
export declare const POSTER_VIEWER_URL: any;
|
|
6
|
+
export declare const ROOM_VIEWER_URL: any;
|
|
7
|
+
export declare const APP_CLIP_BUNDLE_ID: any;
|
|
8
|
+
export declare const ZSCALE = 0.01;
|
|
9
|
+
export declare const FLOOR_SURFACE_ID = "floor";
|
|
10
|
+
export declare const SURFACE_OFFSET = 0.05;
|
|
11
|
+
export declare const POSTER_ROOM_EXAMPLES: Room[];
|
|
12
|
+
export declare const CARPET_ROOM_EXAMPLES: Room[];
|
|
13
|
+
export declare const RAM_TINUUIDS: readonly ["RcSd3KphTyq_JQEjNCqKQA", "gu0109ftQmS-UQkwcW010Q", "nOfGLIZcRVeU93wOkHWSbg", "ozzH5I2kQMW20ao-33C86A", "DBA4wR-zT92vjtuOk9varg"];
|
|
14
|
+
export declare const CARPET_MATERIAL_OWNER_ID = "97f6e38a-d092-41b4-ba62-1a870b54e964";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function RoomViewerContainer(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ApiMatCollection } from '@vizbl/api/obj';
|
|
2
|
+
import type * as THREE from 'three';
|
|
3
|
+
import type { Room, RoomViewerResourceType } from './types';
|
|
4
|
+
import type { SceneLoadState } from './utils/scene-load';
|
|
5
|
+
export interface RoomViewerContextValue {
|
|
6
|
+
src: string | null;
|
|
7
|
+
glbUrl: string | null;
|
|
8
|
+
tinuuid: string | null;
|
|
9
|
+
type: RoomViewerResourceType;
|
|
10
|
+
name: string;
|
|
11
|
+
rooms: Room[];
|
|
12
|
+
setRooms: React.Dispatch<React.SetStateAction<Room[]>>;
|
|
13
|
+
room: Room;
|
|
14
|
+
setRoomId: React.Dispatch<React.SetStateAction<string>>;
|
|
15
|
+
material: ApiMatCollection | null;
|
|
16
|
+
setTinuuid: React.Dispatch<React.SetStateAction<string | null>>;
|
|
17
|
+
setMaterial: React.Dispatch<React.SetStateAction<ApiMatCollection | null>>;
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
frameWidth: number;
|
|
21
|
+
setFrameWidth: React.Dispatch<React.SetStateAction<number>>;
|
|
22
|
+
matting: number;
|
|
23
|
+
setMatting: React.Dispatch<React.SetStateAction<number>>;
|
|
24
|
+
angle: number;
|
|
25
|
+
setAngle: (angle: number) => void;
|
|
26
|
+
rotation: number;
|
|
27
|
+
setRotation: React.Dispatch<React.SetStateAction<number>>;
|
|
28
|
+
isDragging: boolean;
|
|
29
|
+
setIsDragging: React.Dispatch<React.SetStateAction<boolean>>;
|
|
30
|
+
containerRef: HTMLDivElement | null;
|
|
31
|
+
setContainerRef: React.Dispatch<React.SetStateAction<HTMLDivElement | null>>;
|
|
32
|
+
resourceRef: React.RefObject<THREE.Group | null>;
|
|
33
|
+
sceneLoad: SceneLoadState;
|
|
34
|
+
patchSceneLoad: (patch: Partial<SceneLoadState>) => void;
|
|
35
|
+
}
|
|
36
|
+
export interface RoomViewerProviderProps {
|
|
37
|
+
children: React.ReactNode;
|
|
38
|
+
src: string | null;
|
|
39
|
+
tinuuid: string | null;
|
|
40
|
+
type: RoomViewerResourceType;
|
|
41
|
+
name: string;
|
|
42
|
+
width: number;
|
|
43
|
+
height: number;
|
|
44
|
+
}
|
|
45
|
+
export declare function RoomViewerProvider({ children, src, tinuuid: initialTinuuid, type, width, height, name }: RoomViewerProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
export declare function useRoomViewer(): RoomViewerContextValue;
|
package/dist/dialog.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DialogProps } from '@vizbl/ui/components/dialog';
|
|
2
|
+
import type { RoomViewerRootProps } from './root';
|
|
3
|
+
export interface RoomViewerDialogProps extends RoomViewerRootProps, Omit<DialogProps, 'children'> {
|
|
4
|
+
}
|
|
5
|
+
export declare function RoomViewerDialog({ type, src, tinuuid, width, height, name, language, ...props }: RoomViewerDialogProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/i18n.d.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
declare const resources: {
|
|
2
|
+
en: {
|
|
3
|
+
translation: {
|
|
4
|
+
readonly matting: "Matting";
|
|
5
|
+
readonly material: "Material";
|
|
6
|
+
readonly chooseMaterial: "Choose material";
|
|
7
|
+
readonly frameWidth: "Frame width";
|
|
8
|
+
readonly close: "Close";
|
|
9
|
+
readonly uploadOwnPhoto: "Upload your photo";
|
|
10
|
+
readonly previousSlide: "Previous slide";
|
|
11
|
+
readonly nextSlide: "Next slide";
|
|
12
|
+
readonly mattingOptions: {
|
|
13
|
+
readonly none: "None";
|
|
14
|
+
};
|
|
15
|
+
readonly units: {
|
|
16
|
+
readonly cm: "cm";
|
|
17
|
+
};
|
|
18
|
+
readonly poweredBy: "Powered by Vizbl";
|
|
19
|
+
readonly ar: {
|
|
20
|
+
readonly viewInPlace: "View in place";
|
|
21
|
+
readonly scanQrCode: "Scan this QR code with your phone's camera to view the object in Augmented Reality";
|
|
22
|
+
};
|
|
23
|
+
readonly shareMessage: {
|
|
24
|
+
readonly poster: "Preview poster";
|
|
25
|
+
readonly carpet: "Preview carpet";
|
|
26
|
+
};
|
|
27
|
+
readonly rooms: {
|
|
28
|
+
readonly 'room-example-1': "Living room";
|
|
29
|
+
readonly 'room-example-2': "Bedroom";
|
|
30
|
+
readonly 'room-example-3': "Kitchen";
|
|
31
|
+
readonly 'room-example-4': "Hallway";
|
|
32
|
+
readonly 'room-example-5': "Dining room";
|
|
33
|
+
readonly 'room-example-6': "Office";
|
|
34
|
+
};
|
|
35
|
+
readonly scene: {
|
|
36
|
+
readonly tunePosition: "Tune position";
|
|
37
|
+
readonly position: "Position";
|
|
38
|
+
readonly share: "Share";
|
|
39
|
+
readonly angle: "Angle";
|
|
40
|
+
readonly rotation: "Rotation";
|
|
41
|
+
readonly reset: "Reset";
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
ru: {
|
|
46
|
+
translation: {
|
|
47
|
+
readonly matting: "Паспарту";
|
|
48
|
+
readonly material: "Материал";
|
|
49
|
+
readonly chooseMaterial: "Выберите материал";
|
|
50
|
+
readonly frameWidth: "Ширина рамки";
|
|
51
|
+
readonly close: "Закрыть";
|
|
52
|
+
readonly uploadOwnPhoto: "Загрузить свое фото";
|
|
53
|
+
readonly previousSlide: "Предыдущий слайд";
|
|
54
|
+
readonly nextSlide: "Следующий слайд";
|
|
55
|
+
readonly mattingOptions: {
|
|
56
|
+
readonly none: "Нет";
|
|
57
|
+
};
|
|
58
|
+
readonly units: {
|
|
59
|
+
readonly cm: "см";
|
|
60
|
+
};
|
|
61
|
+
readonly poweredBy: "Технологии Аризо";
|
|
62
|
+
readonly ar: {
|
|
63
|
+
readonly viewInPlace: "Просмотреть на месте";
|
|
64
|
+
readonly scanQrCode: "Отсканируйте этот QR-код камерой телефона, чтобы просмотреть объект в дополненной реальности";
|
|
65
|
+
};
|
|
66
|
+
readonly shareMessage: {
|
|
67
|
+
readonly poster: "Примерить постер";
|
|
68
|
+
readonly carpet: "Примерить ковер";
|
|
69
|
+
};
|
|
70
|
+
readonly rooms: {
|
|
71
|
+
readonly 'room-example-1': "Гостиная";
|
|
72
|
+
readonly 'room-example-2': "Спальня";
|
|
73
|
+
readonly 'room-example-3': "Кухня";
|
|
74
|
+
readonly 'room-example-4': "Прихожая";
|
|
75
|
+
readonly 'room-example-5': "Столовая";
|
|
76
|
+
readonly 'room-example-6': "Кабинет";
|
|
77
|
+
};
|
|
78
|
+
readonly scene: {
|
|
79
|
+
readonly tunePosition: "Настроить положение";
|
|
80
|
+
readonly position: "Положение";
|
|
81
|
+
readonly share: "Поделиться";
|
|
82
|
+
readonly angle: "Угол";
|
|
83
|
+
readonly rotation: "Поворот";
|
|
84
|
+
readonly reset: "Сбросить";
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
export type RoomViewerLanguage = keyof typeof resources;
|
|
90
|
+
export {};
|