@clikvn/showroom-visualizer 0.1.29-dev → 1.1.28-dev
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/SkinLayer/PlayAll/index.d.ts +0 -8
- package/dist/components/SkinLayer/PlayAll/index.d.ts.map +0 -1
- package/dist/components/SkinLayer/PoiDetailSlideIn/GalleryProduct.d.ts +9 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/GalleryProduct.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/Tabs.d.ts +28 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/Tabs.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/TabsContent/GalleryProduct.d.ts +9 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/TabsContent/GalleryProduct.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/TabsContent/TabsContent.d.ts +9 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/TabsContent/TabsContent.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/TabsContent.d.ts +9 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/TabsContent.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/gallery.d.ts +9 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/gallery.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/group-action-button.d.ts +14 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/group-action-button.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/header.d.ts +12 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/header.d.ts.map +1 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/rating.d.ts +7 -0
- package/dist/components/SkinLayer/PoiDetailSlideIn/rating.d.ts.map +1 -0
- package/dist/components/SkinLayer/RightPanel/index.d.ts +2 -0
- package/dist/components/SkinLayer/RightPanel/index.d.ts.map +1 -0
- package/dist/constants/Visualizer/fallback-images.d.ts +27 -0
- package/dist/constants/Visualizer/fallback-images.d.ts.map +1 -0
- package/dist/index.html +67 -98
- package/dist/utils/Visualizer/asset.utils.d.ts +19 -0
- package/dist/utils/Visualizer/asset.utils.d.ts.map +1 -0
- package/dist/utils/Visualizer/cors-bypass.utils.d.ts +16 -0
- package/dist/utils/Visualizer/cors-bypass.utils.d.ts.map +1 -0
- package/dist/utils/Visualizer/cors-proxy.d.ts +8 -0
- package/dist/utils/Visualizer/cors-proxy.d.ts.map +1 -0
- package/dist/utils/Visualizer/cors-test.d.ts +12 -0
- package/dist/utils/Visualizer/cors-test.d.ts.map +1 -0
- package/dist/utils/Visualizer/global-cors-handler.d.ts +13 -0
- package/dist/utils/Visualizer/global-cors-handler.d.ts.map +1 -0
- package/dist/utils/Visualizer/no-cors-fetch.d.ts +20 -0
- package/dist/utils/Visualizer/no-cors-fetch.d.ts.map +1 -0
- package/dist/utils/Visualizer/simple-cors-handler.d.ts +9 -0
- package/dist/utils/Visualizer/simple-cors-handler.d.ts.map +1 -0
- package/dist/web.js +1 -1
- package/package.json +1 -1
- package/.idea/inspectionProfiles/Project_Default.xml +0 -36
- package/.idea/jsLinters/eslint.xml +0 -7
- package/.idea/misc.xml +0 -9
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -8
- package/.idea/showroom-visualizer.iml +0 -9
- package/.idea/vcs.xml +0 -6
- package/dist/components/SkinLayer/GalleryFullScreen/Content/ARViewer.d.ts +0 -30
- package/dist/components/SkinLayer/GalleryFullScreen/Content/ARViewer.d.ts.map +0 -1
- package/dist/components/SkinLayer/ModalItemInfo/Description.d.ts +0 -10
- package/dist/components/SkinLayer/ModalItemInfo/Description.d.ts.map +0 -1
- package/dist/components/SkinLayer/ModalItemInfo/Intro.d.ts +0 -9
- package/dist/components/SkinLayer/ModalItemInfo/Intro.d.ts.map +0 -1
- package/dist/components/SkinLayer/ModalItemInfo/Media.d.ts +0 -13
- package/dist/components/SkinLayer/ModalItemInfo/Media.d.ts.map +0 -1
- package/dist/components/SkinLayer/ModalItemInfo/index.d.ts +0 -10
- package/dist/components/SkinLayer/ModalItemInfo/index.d.ts.map +0 -1
- package/dist/components/SkinLayer/PoiTextureOptions/HorizontalMenu/index.d.ts +0 -13
- package/dist/components/SkinLayer/PoiTextureOptions/HorizontalMenu/index.d.ts.map +0 -1
- package/dist/components/SkinLayer/PoiTextureOptions/SemicircleMenu/index.d.ts +0 -13
- package/dist/components/SkinLayer/PoiTextureOptions/SemicircleMenu/index.d.ts.map +0 -1
- package/dist/components/SkinLayer/PoiTextureOptions/TextureMenuItem/index.d.ts +0 -15
- package/dist/components/SkinLayer/PoiTextureOptions/TextureMenuItem/index.d.ts.map +0 -1
- package/dist/components/SkinLayer/PoiTextureOptions/VerticalMenu/index.d.ts +0 -13
- package/dist/components/SkinLayer/PoiTextureOptions/VerticalMenu/index.d.ts.map +0 -1
- package/dist/context/StoreContext.d.ts +0 -5
- package/dist/context/StoreContext.d.ts.map +0 -1
- package/dist/features/ShowroomVisualizer/Scripts.d.ts +0 -4
- package/dist/features/ShowroomVisualizer/Scripts.d.ts.map +0 -1
- package/dist/features/ShowroomVisualizer/TourContainer.d.ts +0 -9
- package/dist/features/ShowroomVisualizer/TourContainer.d.ts.map +0 -1
- package/dist/features/ShowroomVisualizer/Tours.d.ts +0 -3
- package/dist/features/ShowroomVisualizer/Tours.d.ts.map +0 -1
- package/dist/hooks/Visualizer/reducer.d.ts +0 -116
- package/dist/hooks/Visualizer/reducer.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PlayAll/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAI3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAIF,QAAA,MAAM,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAoCjC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface GalleryProps {
|
|
3
|
+
items: any[];
|
|
4
|
+
className?: string;
|
|
5
|
+
onClick?: (index: number, type?: string) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const Gallery: React.FC<GalleryProps>;
|
|
8
|
+
export default Gallery;
|
|
9
|
+
//# sourceMappingURL=GalleryProduct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalleryProduct.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiDetailSlideIn/GalleryProduct.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,UAAU,YAAY;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqFnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const TabsList: {
|
|
2
|
+
info: {
|
|
3
|
+
label: string;
|
|
4
|
+
key: string;
|
|
5
|
+
title: import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
};
|
|
7
|
+
gallery: {
|
|
8
|
+
label: string;
|
|
9
|
+
key: string;
|
|
10
|
+
title: string;
|
|
11
|
+
};
|
|
12
|
+
webRotate: {
|
|
13
|
+
label: string;
|
|
14
|
+
key: string;
|
|
15
|
+
title: string;
|
|
16
|
+
};
|
|
17
|
+
ar: {
|
|
18
|
+
label: string;
|
|
19
|
+
key: string;
|
|
20
|
+
title: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
declare const Tabs: ({ activeTab, setActiveTab, }: {
|
|
24
|
+
activeTab: string;
|
|
25
|
+
setActiveTab: (key: string) => void;
|
|
26
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export default Tabs;
|
|
28
|
+
//# sourceMappingURL=Tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiDetailSlideIn/Tabs.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAqBpB,CAAC;AAEF,QAAA,MAAM,IAAI,GAAI,8BAGX;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC,4CA4BA,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface GalleryProps {
|
|
3
|
+
items: any[];
|
|
4
|
+
className?: string;
|
|
5
|
+
onClick?: (index: number, type: string) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const Gallery: React.FC<GalleryProps>;
|
|
8
|
+
export default Gallery;
|
|
9
|
+
//# sourceMappingURL=GalleryProduct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GalleryProduct.d.ts","sourceRoot":"","sources":["../../../../../src/components/SkinLayer/PoiDetailSlideIn/TabsContent/GalleryProduct.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,UAAU,YAAY;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqFnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsContent.d.ts","sourceRoot":"","sources":["../../../../../src/components/SkinLayer/PoiDetailSlideIn/TabsContent/TabsContent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAGhD,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,cAAc,EAAE,GAAG,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAiDjC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsContent.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiDetailSlideIn/TabsContent.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAGhD,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,cAAc,EAAE,GAAG,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAiDjC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallery.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiDetailSlideIn/gallery.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,UAAU,YAAY;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqFnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
interface GroupActionButtonProps {
|
|
3
|
+
actions: {
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
icon: React.ElementType;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
}[];
|
|
9
|
+
activeKey?: string;
|
|
10
|
+
onClick?: (key: string) => void;
|
|
11
|
+
}
|
|
12
|
+
declare const GroupActionButton: FC<GroupActionButtonProps>;
|
|
13
|
+
export default GroupActionButton;
|
|
14
|
+
//# sourceMappingURL=group-action-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-action-button.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiDetailSlideIn/group-action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAG3B,UAAU,sBAAsB;IAC9B,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;QACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAgDjD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
interface HeaderProps {
|
|
3
|
+
onBack: () => void;
|
|
4
|
+
title: string;
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
displayPrice?: string;
|
|
7
|
+
salePrice?: string;
|
|
8
|
+
rating?: number;
|
|
9
|
+
}
|
|
10
|
+
declare const Header: FC<HeaderProps>;
|
|
11
|
+
export default Header;
|
|
12
|
+
//# sourceMappingURL=header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiDetailSlideIn/header.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAmD3B,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/PoiDetailSlideIn/rating.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAgC3B,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SkinLayer/RightPanel/index.tsx"],"names":[],"mappings":"AA8QA,MAAM,CAAC,OAAO,UAAU,UAAU,4CAQjC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback images dạng base64 cho development khi CORS fail
|
|
3
|
+
*/
|
|
4
|
+
export declare const TRANSPARENT_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChAI9jU77yQAAAABJRU5ErkJggg==";
|
|
5
|
+
export declare const PLACEHOLDER_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiByeD0iNCIgZmlsbD0iIzMzMzMzMyIvPgo8Y2lyY2xlIGN4PSIxNiIgY3k9IjE2IiByPSI4IiBmaWxsPSIjNjY2NjY2Ii8+Cjwvc3ZnPgo=";
|
|
6
|
+
export declare const NAVIGATION_ARROW_PLACEHOLDER = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEyIDJMMjIgMTJMMTIgMjJMMTAgMjBMMTggMTJMMTAgNEwxMiAyWiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==";
|
|
7
|
+
export declare const FALLBACK_IMAGES: {
|
|
8
|
+
'vtourskin.png': string;
|
|
9
|
+
'hotspot_sound_icon.png': string;
|
|
10
|
+
'tag.png': string;
|
|
11
|
+
'gallery.png': string;
|
|
12
|
+
'hotspot_video_icon.png': string;
|
|
13
|
+
'play-solid.png': string;
|
|
14
|
+
'stop-solid.png': string;
|
|
15
|
+
'bgshadow.png': string;
|
|
16
|
+
'vtourskin_hotspot.png': string;
|
|
17
|
+
'promotion_lg.png': string;
|
|
18
|
+
'caret_up_icon.png': string;
|
|
19
|
+
'navigation_north.svg': string;
|
|
20
|
+
'navigation_east.svg': string;
|
|
21
|
+
'navigation_south.svg': string;
|
|
22
|
+
'navigation_west.svg': string;
|
|
23
|
+
'audio_shake.png': string;
|
|
24
|
+
'navigation.svg': string;
|
|
25
|
+
'navigation-highlight.svg': string;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=fallback-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback-images.d.ts","sourceRoot":"","sources":["../../../src/constants/Visualizer/fallback-images.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,eAAe,2HAC8F,CAAC;AAG3H,eAAO,MAAM,gBAAgB,+SACiR,CAAC;AAG/S,eAAO,MAAM,4BAA4B,mQACyN,CAAC;AAEnQ,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;CAmB3B,CAAC"}
|
package/dist/index.html
CHANGED
|
@@ -1,105 +1,74 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8"
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
5
|
<meta
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
name="viewport"
|
|
7
|
+
content="width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"
|
|
8
8
|
/>
|
|
9
9
|
<title>Title</title>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<div class="flex h-screen w-screen">
|
|
13
|
-
<!-- <div class="h-full" style="width: 72px"></div>-->
|
|
14
|
-
<div class="h-full" style="width: /*calc(100% - 462px);*/ 100%;">
|
|
15
|
-
<div class="h-full w-full relative">
|
|
16
|
-
<showroom-visualizer></showroom-visualizer>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
<!-- <div class="h-full" style="width: 390px"></div>-->
|
|
20
|
-
</div>
|
|
21
|
-
<script type="module">
|
|
22
|
-
// import ShowroomVisualizer from 'https://85f81d7dc992.ngrok-free.app/web.js';
|
|
23
|
-
import ShowroomVisualizer from 'http://localhost:3000/web.js';
|
|
24
|
-
|
|
25
|
-
ShowroomVisualizer.initVisualizer({
|
|
26
|
-
apiHost: 'https://ci-api.clik.vn/vt360',
|
|
27
|
-
webRotateApiHost: 'https://ci-api.clik.vn/cms',
|
|
28
|
-
webRotateClientHost: 'https://ci-webrotate360-client.clik.vn',
|
|
29
|
-
config: {
|
|
30
|
-
language: 'VI',
|
|
31
|
-
// tourCode: 'TOUR_FXYCEN7ZZVW6',
|
|
32
|
-
|
|
33
|
-
// startScene: 'scene_kr3rgeezzvw6',
|
|
34
|
-
// hLookAt: -254,
|
|
35
|
-
// vLookAt: 1
|
|
36
|
-
// tourCode: 'TOUR_GEVEXLWNPT74',
|
|
37
|
-
// tourCode: 'TOUR_7YUL2ALGFL94',
|
|
38
|
-
tourCode: 'TOUR_KUFGDEPDTJA4',
|
|
39
|
-
// startScene: 'SCENE_KNLRAKUHFL94',
|
|
40
|
-
// hLookAt: -54.11884505373274,
|
|
41
|
-
// vLookAt: -9.111287009391969
|
|
42
|
-
|
|
43
|
-
// tourCode: 'tour_7a6hchjljga4'.toUpperCase(),
|
|
10
|
+
<script type="module">
|
|
11
|
+
import ShowroomVisualizer from 'http://localhost:3000/web.js';
|
|
44
12
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
13
|
+
ShowroomVisualizer.initVisualizer({
|
|
14
|
+
apiHost: 'https://ci-api.clik.vn/vt360',
|
|
15
|
+
webRotateClientHost: 'https://ci-webrotate360-client.clik.vn',
|
|
16
|
+
config: {
|
|
17
|
+
tourCode: 'TOUR_KUFGDEPDTJA4',
|
|
18
|
+
language: 'VI',
|
|
19
|
+
},
|
|
20
|
+
listeners: {
|
|
21
|
+
onLoaded: (tool) => {
|
|
22
|
+
window.tool = tool;
|
|
23
|
+
},
|
|
24
|
+
onPinActionClicked: (key) => {
|
|
25
|
+
console.log('onPinActionClicked', key);
|
|
26
|
+
},
|
|
27
|
+
onAIProductClicked: (poi) => {
|
|
28
|
+
console.log('onPoiClicked', poi);
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
mobile: false,
|
|
32
|
+
});
|
|
33
|
+
</script>
|
|
34
|
+
<style>
|
|
35
|
+
.toggle-btn {
|
|
36
|
+
position: fixed;
|
|
37
|
+
top: 20px;
|
|
38
|
+
right: 20px;
|
|
39
|
+
z-index: 9999;
|
|
40
|
+
padding: 10px 15px;
|
|
41
|
+
background: #3585f7;
|
|
42
|
+
color: white;
|
|
43
|
+
border: none;
|
|
44
|
+
border-radius: 5px;
|
|
45
|
+
cursor: pointer;
|
|
46
|
+
font-family: 'Be Vietnam Pro', sans-serif;
|
|
47
|
+
font-size: 14px;
|
|
48
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
49
|
+
transition: background 0.3s ease;
|
|
50
|
+
}
|
|
51
|
+
.toggle-btn:hover {
|
|
52
|
+
background: #2574e6;
|
|
53
|
+
}
|
|
54
|
+
</style>
|
|
55
|
+
</head>
|
|
56
|
+
<body>
|
|
57
|
+
<button class="toggle-btn" onclick="toggleWidth()">Toggle Width</button>
|
|
58
|
+
<div id="container" style="width: 100vw; height: 100vh; overflow: hidden">
|
|
59
|
+
<showroom-visualizer></showroom-visualizer>
|
|
60
|
+
</div>
|
|
61
|
+
<script>
|
|
62
|
+
function toggleWidth() {
|
|
63
|
+
const container = document.getElementById('container');
|
|
64
|
+
const currentWidth = container.style.width;
|
|
49
65
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
},
|
|
56
|
-
listeners: {
|
|
57
|
-
onTourSwitchLoaded: (tool) => {
|
|
58
|
-
window.switchTour = tool.switchTour;
|
|
59
|
-
},
|
|
60
|
-
onSceneCompleted: (...args) => {
|
|
61
|
-
// console.log('onSceneCompleted', args);
|
|
62
|
-
},
|
|
63
|
-
onLoaded: tool => {
|
|
64
|
-
// console.log('TOOL_LOADED')
|
|
65
|
-
window.tool = tool;
|
|
66
|
-
},
|
|
67
|
-
onPoiClicked: (poi) => {
|
|
68
|
-
console.log('onPoiClicked', poi);
|
|
69
|
-
},
|
|
70
|
-
onPoiOut: () => {
|
|
71
|
-
// console.log('onPoiOut');
|
|
72
|
-
},
|
|
73
|
-
onPoiOver: (poi) => {
|
|
74
|
-
console.log('onPoiOver', poi);
|
|
75
|
-
},
|
|
76
|
-
onPoiInCenter: (poi) => {
|
|
77
|
-
// console.log('onPoiInCenter', poi);
|
|
78
|
-
},
|
|
79
|
-
onStartScenario: (code) => {
|
|
80
|
-
// console.log('onStartScenario', code);
|
|
81
|
-
},
|
|
82
|
-
onScenarioPaused: (code) => {
|
|
83
|
-
// console.log('onScenarioPaused', code);
|
|
84
|
-
},
|
|
85
|
-
onScenarioEnded: (code) => {
|
|
86
|
-
// console.log('onScenarioEnded', code);
|
|
87
|
-
},
|
|
88
|
-
onChanged: (args) => {
|
|
89
|
-
console.log('onChanged', args);
|
|
90
|
-
},
|
|
91
|
-
onStartLoadingTour: (code) => {
|
|
92
|
-
// console.log('onStartLoadingTour', code);
|
|
93
|
-
},
|
|
94
|
-
onFinishedLoadingTour: (code) => {
|
|
95
|
-
// console.log('onFinishedLoadingTour', code);
|
|
96
|
-
},
|
|
97
|
-
onStateChanged: (changes) => {
|
|
98
|
-
// console.log('changes', changes);
|
|
66
|
+
if (currentWidth === '80vw') {
|
|
67
|
+
container.style.width = '100vw';
|
|
68
|
+
} else {
|
|
69
|
+
container.style.width = '80vw';
|
|
70
|
+
}
|
|
99
71
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
</script>
|
|
104
|
-
</body>
|
|
105
|
-
</html>
|
|
72
|
+
</script>
|
|
73
|
+
</body>
|
|
74
|
+
</html>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get asset URL - đơn giản chỉ return URL gốc
|
|
3
|
+
* CORS sẽ được xử lý ở level component/image loading
|
|
4
|
+
*/
|
|
5
|
+
export declare const getAssetUrl: (originalUrl: string) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Load image với CORS handling
|
|
8
|
+
* Sử dụng crossOrigin = 'anonymous' để bypass CORS
|
|
9
|
+
*/
|
|
10
|
+
export declare const loadImageWithCORS: (url: string) => Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Preload image để kiểm tra CORS
|
|
13
|
+
*/
|
|
14
|
+
export declare const preloadImage: (url: string) => Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Tạo img element với CORS handling
|
|
17
|
+
*/
|
|
18
|
+
export declare const createImageWithCORS: (url: string) => HTMLImageElement;
|
|
19
|
+
//# sourceMappingURL=asset.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/Visualizer/asset.utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,aAAa,MAAM,KAAG,MAEjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,MAAM,CAiB7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAQzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,gBAKjD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CORS bypass utilities cho development
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Bypass CORS bằng cách sử dụng proxy service
|
|
6
|
+
*/
|
|
7
|
+
export declare const bypassCORS: (originalUrl: string, proxyIndex?: number) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Tạo img element với CORS bypass
|
|
10
|
+
*/
|
|
11
|
+
export declare const createCORSImage: (url: string) => Promise<HTMLImageElement>;
|
|
12
|
+
/**
|
|
13
|
+
* Set image src với CORS handling
|
|
14
|
+
*/
|
|
15
|
+
export declare const setImageSrcWithCORS: (imgElement: HTMLImageElement, url: string, onSuccess?: () => void, onError?: () => void) => void;
|
|
16
|
+
//# sourceMappingURL=cors-bypass.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cors-bypass.utils.d.ts","sourceRoot":"","sources":["../../../src/utils/Visualizer/cors-bypass.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,aAAa,MAAM,EAAE,mBAAc,KAAG,MAahE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAqBrE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,gBAAgB,EAC5B,KAAK,MAAM,EACX,YAAY,MAAM,IAAI,EACtB,UAAU,MAAM,IAAI,SAiBrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cors-proxy.d.ts","sourceRoot":"","sources":["../../../src/utils/Visualizer/cors-proxy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,MAAM,EACX,UAAS,WAAgB,KACxB,OAAO,CAAC,QAAQ,CA+ClB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test utilities để kiểm tra CORS handling
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Test global CORS handler
|
|
6
|
+
*/
|
|
7
|
+
export declare const testCORSHandler: () => void;
|
|
8
|
+
/**
|
|
9
|
+
* Test với proxy trực tiếp
|
|
10
|
+
*/
|
|
11
|
+
export declare const testProxyDirectly: () => void;
|
|
12
|
+
//# sourceMappingURL=cors-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cors-test.d.ts","sourceRoot":"","sources":["../../../src/utils/Visualizer/cors-test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,eAAO,MAAM,eAAe,YAuB3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,YAW7B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global CORS handler cho tất cả images
|
|
3
|
+
* Đơn giản và hiệu quả
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Initialize global CORS handling
|
|
7
|
+
*/
|
|
8
|
+
export declare const initGlobalCORSHandler: () => void;
|
|
9
|
+
/**
|
|
10
|
+
* Disable global CORS handling
|
|
11
|
+
*/
|
|
12
|
+
export declare const disableGlobalCORSHandler: () => void;
|
|
13
|
+
//# sourceMappingURL=global-cors-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-cors-handler.d.ts","sourceRoot":"","sources":["../../../src/utils/Visualizer/global-cors-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,eAAO,MAAM,qBAAqB,YAmUjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,YAOpC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Alternative fetch methods that work with no-cors
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Load JSON data bằng dynamic script tag (JSONP alternative)
|
|
6
|
+
*/
|
|
7
|
+
export declare const loadJSONWithScript: (url: string) => Promise<any>;
|
|
8
|
+
/**
|
|
9
|
+
* Load JSON bằng Image tag trick (for very small data)
|
|
10
|
+
*/
|
|
11
|
+
export declare const loadJSONWithImage: (url: string) => Promise<any>;
|
|
12
|
+
/**
|
|
13
|
+
* Load JSON bằng iframe trick
|
|
14
|
+
*/
|
|
15
|
+
export declare const loadJSONWithIframe: (url: string) => Promise<any>;
|
|
16
|
+
/**
|
|
17
|
+
* Fallback method - try multiple approaches
|
|
18
|
+
*/
|
|
19
|
+
export declare const loadJSONFallback: (url: string) => Promise<any>;
|
|
20
|
+
//# sourceMappingURL=no-cors-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-cors-fetch.d.ts","sourceRoot":"","sources":["../../../src/utils/Visualizer/no-cors-fetch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,GAAG,CA8B3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,GAAG,CAe1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,OAAO,CAAC,GAAG,CAqC3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,GAAG,CAmB/D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple CORS handler - chỉ thay thế URLs với proxy
|
|
3
|
+
* Approach đơn giản và đáng tin cậy hơn
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Thay thế tất cả CDN URLs với proxy URLs
|
|
7
|
+
*/
|
|
8
|
+
export declare const initSimpleCORSHandler: () => void;
|
|
9
|
+
//# sourceMappingURL=simple-cors-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-cors-handler.d.ts","sourceRoot":"","sources":["../../../src/utils/Visualizer/simple-cors-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,eAAO,MAAM,qBAAqB,YA+FjC,CAAC"}
|